@knpkv/control-center 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/README.md +70 -17
  2. package/dist/client/.vite/manifest.json +223 -178
  3. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
  5. package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
  6. package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
  7. package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
  8. package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
  9. package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
  10. package/dist/client/assets/AuthorizedSharePage-CVBJ1NTm.js +2 -0
  11. package/dist/client/assets/AuthorizedSharePage-CVBJ1NTm.js.map +1 -0
  12. package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
  13. package/dist/client/assets/{BrowserCrypto-DVWR7DFd.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
  14. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
  15. package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js.map +1 -0
  16. package/dist/client/assets/CommandSearch-DUeRRbV2.js +2 -0
  17. package/dist/client/assets/{CommandSearch-CP_QCbkm.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
  18. package/dist/client/assets/ItemsPage-BF2ZkSzh.js +2 -0
  19. package/dist/client/assets/{ItemsPage-BGFUkRL2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-DIgzx0K2.js → PairPage-CkaZltHd.js} +2 -2
  21. package/dist/client/assets/{PairPage-DIgzx0K2.js.map → PairPage-CkaZltHd.js.map} +1 -1
  22. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
  23. package/dist/client/assets/PortfolioOverview-CEUHJmGC.js.map +1 -0
  24. package/dist/client/assets/PullRequestReviewPanel-D1IpvHe2.js +6 -0
  25. package/dist/client/assets/PullRequestReviewPanel-D1IpvHe2.js.map +1 -0
  26. package/dist/client/assets/ReleaseRoute-BuQybrsg.js +2 -0
  27. package/dist/client/assets/{ReleaseRoute-DXJ8Jg60.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
  28. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
  29. package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
  30. package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
  31. package/dist/client/assets/ServicesPage-hw5Ee69-.js.map +1 -0
  32. package/dist/client/assets/TimelinePage-Cj3V98uI.js +2 -0
  33. package/dist/client/assets/TimelinePage-Cj3V98uI.js.map +1 -0
  34. package/dist/client/assets/WorkspaceEntityLink-C_rc8lxi.js +2 -0
  35. package/dist/client/assets/{WorkspaceEntityLink-AdZ_T-Wk.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
  36. package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
  37. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
  38. package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
  39. package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
  40. package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
  41. package/dist/client/assets/{WorkspacePullRequestDetails-BErJ5bk8.js → WorkspacePullRequestDetails-CizqydjN.js} +3 -3
  42. package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js.map +1 -0
  43. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
  44. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
  45. package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
  46. package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
  47. package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
  48. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
  49. package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
  50. package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
  51. package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
  52. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
  53. package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
  54. package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
  55. package/dist/client/assets/{authenticatedMutationClient-Ccwguc3i.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
  56. package/dist/client/assets/authorizedShareTransport-CnclcYai.js +2 -0
  57. package/dist/client/assets/{authorizedShareTransport-DZHgFEkh.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
  58. package/dist/client/assets/client-Dq_XQE_l.js +5 -0
  59. package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
  60. package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
  61. package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
  62. package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
  63. package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
  64. package/dist/client/assets/index-zVjlBm9l.js +11 -0
  65. package/dist/client/assets/index-zVjlBm9l.js.map +1 -0
  66. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
  67. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
  68. package/dist/client/assets/{presentPortfolio-D3ZIcnqt.js → presentPortfolio-DLEq-vEz.js} +2 -2
  69. package/dist/client/assets/presentPortfolio-DLEq-vEz.js.map +1 -0
  70. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
  71. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
  72. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
  73. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
  74. package/dist/client/assets/pullRequestReviewThreadReplay-CXHspFTr.js +2 -0
  75. package/dist/client/assets/pullRequestReviewThreadReplay-CXHspFTr.js.map +1 -0
  76. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
  77. package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
  78. package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
  79. package/dist/client/assets/{releaseRoutes-BCuIdZyA.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
  80. package/dist/client/assets/serviceOnboarding-D0FmodRi.js +2 -0
  81. package/dist/client/assets/{serviceOnboarding-Jg_0yNjf.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
  82. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
  83. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
  84. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
  85. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
  86. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
  87. package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
  88. package/dist/client/assets/workspaceScrollCapture-BYNfR2wo.js +2 -0
  89. package/dist/client/assets/workspaceScrollCapture-BYNfR2wo.js.map +1 -0
  90. package/dist/client/assets/workspaceSettingsTransport-Br4lBmvS.js +2 -0
  91. package/dist/client/assets/{workspaceSettingsTransport-CZWYL5T7.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
  92. package/dist/client/build-graph.json +115 -0
  93. package/dist/client/index.html +1 -1
  94. package/dist/server/api/agent.d.ts +575 -44
  95. package/dist/server/api/agent.d.ts.map +1 -1
  96. package/dist/server/api/deliveryGraph.d.ts +474 -454
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -1
  98. package/dist/server/api/index.d.ts +2 -2
  99. package/dist/server/api/index.d.ts.map +1 -1
  100. package/dist/server/api/index.js +4 -4
  101. package/dist/server/api/liveEvents.d.ts +20 -0
  102. package/dist/server/api/liveEvents.d.ts.map +1 -1
  103. package/dist/server/api/portfolio.d.ts +23 -0
  104. package/dist/server/api/portfolio.d.ts.map +1 -1
  105. package/dist/server/api/session.d.ts +23 -1
  106. package/dist/server/api/session.d.ts.map +1 -1
  107. package/dist/server/api/shares.d.ts +4 -2
  108. package/dist/server/api/shares.d.ts.map +1 -1
  109. package/dist/server/assets/{BindConfig-DIsf2Rnh.js → BindConfig-DAASchDn.js} +2405 -322
  110. package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
  111. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js → CodePipelineStateDecoder-CNiFRgSi.js} +2 -2
  112. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js.map → CodePipelineStateDecoder-CNiFRgSi.js.map} +1 -1
  113. package/dist/server/assets/{agent-CyZ40zs1.js → agent-xQhAQXly.js} +181 -11
  114. package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
  115. package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js → controlCenterApi-DNXK7MT1.js} +6 -5
  116. package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
  117. package/dist/server/assets/{descriptor-CKtTnhef.js → descriptor-CCvNzSZL.js} +10 -10
  118. package/dist/server/assets/{descriptor-CKtTnhef.js.map → descriptor-CCvNzSZL.js.map} +1 -1
  119. package/dist/server/assets/{failures-mgYDkUZy.js → failures-CesHLYbN.js} +2 -2
  120. package/dist/server/assets/{failures-mgYDkUZy.js.map → failures-CesHLYbN.js.map} +1 -1
  121. package/dist/server/assets/{firstPartyServices-D7b8BOek.js → firstPartyServices-Cdzjcs2H.js} +2 -2
  122. package/dist/server/assets/{firstPartyServices-D7b8BOek.js.map → firstPartyServices-Cdzjcs2H.js.map} +1 -1
  123. package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js → manualPluginSynchronization-DFIeUHP9.js} +6 -5
  124. package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
  125. package/dist/server/assets/{plugins-D__oMDpI.js → plugins-DiPrfzV8.js} +2 -2
  126. package/dist/server/assets/{plugins-D__oMDpI.js.map → plugins-DiPrfzV8.js.map} +1 -1
  127. package/dist/server/assets/{readiness-BhA-Nr9c.js → readiness-31Mqc-9H.js} +3 -3
  128. package/dist/server/assets/{readiness-BhA-Nr9c.js.map → readiness-31Mqc-9H.js.map} +1 -1
  129. package/dist/server/assets/{relationshipInferenceMaterialization-DYBcaWhQ.js → relationshipInferenceMaterialization-Dyix96px.js} +1158 -169
  130. package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
  131. package/dist/server/assets/{workspaceSettings-BE713Oe8.js → workspaceSettings-sv8h_h2P.js} +2787 -2700
  132. package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
  133. package/dist/server/build-graph.json +144 -4
  134. package/dist/server/domain/actors.d.ts +12 -12
  135. package/dist/server/domain/confluenceTasks.d.ts +27 -0
  136. package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
  137. package/dist/server/domain/deliveryGraph.d.ts +51 -49
  138. package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
  139. package/dist/server/domain/governedAction/bindings.d.ts +26 -12
  140. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  141. package/dist/server/domain/governedAction/lifecycle.d.ts +8 -8
  142. package/dist/server/domain/governedAction/model.d.ts +45 -18
  143. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  144. package/dist/server/domain/governedAction/stateMachine.d.ts +34 -34
  145. package/dist/server/domain/index.js +6 -6
  146. package/dist/server/domain/normalizedIssue.d.ts +1 -1
  147. package/dist/server/domain/normalizedPage.d.ts +1 -0
  148. package/dist/server/domain/normalizedPage.d.ts.map +1 -1
  149. package/dist/server/domain/prReview.d.ts +38 -0
  150. package/dist/server/domain/prReview.d.ts.map +1 -1
  151. package/dist/server/domain/prReviewReconciliation.d.ts +56 -0
  152. package/dist/server/domain/prReviewReconciliation.d.ts.map +1 -0
  153. package/dist/server/domain/prReviewRevision.d.ts +1 -0
  154. package/dist/server/domain/prReviewRevision.d.ts.map +1 -1
  155. package/dist/server/domain/readiness/model.d.ts +3 -3
  156. package/dist/server/domain/release.d.ts +3 -3
  157. package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
  158. package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
  159. package/dist/server/domain/releasePublication.d.ts +4 -0
  160. package/dist/server/domain/releasePublication.d.ts.map +1 -0
  161. package/dist/server/index.js +8 -8
  162. package/dist/server/server/agent/AgentJobWorker.d.ts +10 -1
  163. package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -1
  164. package/dist/server/server/agent/ReleaseAgentPrompt.d.ts.map +1 -1
  165. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts +4 -3
  166. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts.map +1 -1
  167. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts +17 -1
  168. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts.map +1 -1
  169. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts +76 -2
  170. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts.map +1 -1
  171. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts +27 -0
  172. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts.map +1 -0
  173. package/dist/server/server/api/ApplicationServices.d.ts +39 -5
  174. package/dist/server/server/api/ApplicationServices.d.ts.map +1 -1
  175. package/dist/server/server/api/Handlers.d.ts +1 -1
  176. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  177. package/dist/server/server/api/RequestBoundary.d.ts.map +1 -1
  178. package/dist/server/server/application/GovernedReviewSuggestionPublicationGateway.d.ts.map +1 -1
  179. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts +4 -0
  180. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts.map +1 -1
  181. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
  182. package/dist/server/server/application/index.d.ts +1 -0
  183. package/dist/server/server/application/index.d.ts.map +1 -1
  184. package/dist/server/server/application/liveEvents.d.ts.map +1 -1
  185. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
  186. package/dist/server/server/application/pipelineExecutionProjection.d.ts +7 -6
  187. package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
  188. package/dist/server/server/application/portfolioSnapshots.d.ts +2018 -4
  189. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  190. package/dist/server/server/application/pullRequestReviews.d.ts.map +1 -1
  191. package/dist/server/server/application/releaseAgent.d.ts +11 -3
  192. package/dist/server/server/application/releaseAgent.d.ts.map +1 -1
  193. package/dist/server/server/application/releasePublicationIntent.d.ts +7 -0
  194. package/dist/server/server/application/releasePublicationIntent.d.ts.map +1 -0
  195. package/dist/server/server/application/releasePublicationMetadata.d.ts +61 -0
  196. package/dist/server/server/application/releasePublicationMetadata.d.ts.map +1 -0
  197. package/dist/server/server/application/releasePublicationSubmissions.d.ts +3730 -0
  198. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -0
  199. package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
  200. package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
  201. package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -1
  202. package/dist/server/server/cli.js +8 -8
  203. package/dist/server/server/cli.js.map +1 -1
  204. package/dist/server/server/governance/governedActionDigests.d.ts +236 -218
  205. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  206. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +3 -4
  207. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -1
  208. package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -1
  209. package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +1 -1
  210. package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +8 -8
  211. package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +2 -2
  212. package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +1 -1
  213. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +37 -30
  214. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  215. package/dist/server/server/index.js +5 -5
  216. package/dist/server/server/internal/codepipeline-state-probe.js +1 -1
  217. package/dist/server/server/persistence/Database.d.ts +1 -1
  218. package/dist/server/server/persistence/Database.d.ts.map +1 -1
  219. package/dist/server/server/persistence/Persistence.d.ts +1549 -577
  220. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  221. package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -1
  222. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
  223. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
  224. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
  225. package/dist/server/server/persistence/repositories/agentJobModels.d.ts +345 -8
  226. package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -1
  227. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +654 -192
  228. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -1
  229. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +148 -138
  230. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
  231. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +27 -25
  232. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
  233. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +117 -111
  234. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
  235. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +28 -27
  236. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
  237. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +50 -48
  238. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
  239. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +117 -111
  240. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
  241. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +259 -234
  242. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  243. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +68 -46
  244. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  245. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +668 -190
  246. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  247. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +680 -206
  248. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  249. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +38 -31
  250. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  251. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +46 -32
  252. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  253. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +46 -32
  254. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  255. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +678 -205
  256. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  257. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts +85 -4
  258. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts.map +1 -1
  259. package/dist/server/server/persistence/repositories/models.d.ts +9 -9
  260. package/dist/server/server/persistence/repositories/peopleRepository.d.ts +36 -36
  261. package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +1 -1
  262. package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +6 -6
  263. package/dist/server/server/persistence/repositories/readiness/contract.d.ts +450 -450
  264. package/dist/server/server/persistence/repositories/readiness/queue.d.ts +14 -14
  265. package/dist/server/server/persistence/repositories/readinessRepository.d.ts +7 -7
  266. package/dist/server/server/persistence/repositories/releaseRepository.d.ts +18 -18
  267. package/dist/server/server/persistence/repositories/retentionRepository.d.ts.map +1 -1
  268. package/dist/server/server/persistence/repositories/timelineRepository.d.ts +4 -4
  269. package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -1
  270. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts +9 -0
  271. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts.map +1 -0
  272. package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -1
  273. package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -1
  274. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +2 -2
  275. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -1
  276. package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -1
  277. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts +8 -0
  278. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts.map +1 -0
  279. package/dist/server/server/plugins/jira/index.d.ts +1 -1
  280. package/dist/server/server/plugins/jira/index.d.ts.map +1 -1
  281. package/dist/server/server/runtime/Bootstrap.d.ts +1 -1
  282. package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -1
  283. package/dist/server/server/runtime/ControlCenterServer.d.ts +3 -3
  284. package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -1
  285. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts +11 -1
  286. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts.map +1 -1
  287. package/dist/server/server/runtime/RetentionStartup.d.ts.map +1 -1
  288. package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -1
  289. package/dist/server/server/secrets/SecretStore.d.ts.map +1 -1
  290. package/package.json +10 -9
  291. package/dist/client/assets/AgentPage-DGL93TJU.js +0 -3
  292. package/dist/client/assets/AgentPage-DGL93TJU.js.map +0 -1
  293. package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
  294. package/dist/client/assets/AtlassianOAuthCallbackPage-D1F1xE_2.js +0 -2
  295. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js +0 -2
  296. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js.map +0 -1
  297. package/dist/client/assets/BrowserCrypto-DVWR7DFd.js +0 -2
  298. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js +0 -2
  299. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js.map +0 -1
  300. package/dist/client/assets/CommandSearch-CP_QCbkm.js +0 -2
  301. package/dist/client/assets/ItemsPage-BGFUkRL2.js +0 -2
  302. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js +0 -2
  303. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js.map +0 -1
  304. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js +0 -6
  305. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js.map +0 -1
  306. package/dist/client/assets/ReleaseRoute-DXJ8Jg60.js +0 -2
  307. package/dist/client/assets/ReleaseWorkset-Dtzalmji.js +0 -2
  308. package/dist/client/assets/ReleaseWorkset-Dtzalmji.js.map +0 -1
  309. package/dist/client/assets/ServicesPage-DGcUjd2H.js +0 -2
  310. package/dist/client/assets/ServicesPage-DGcUjd2H.js.map +0 -1
  311. package/dist/client/assets/TimelinePage-Bq1RTQlP.js +0 -2
  312. package/dist/client/assets/TimelinePage-Bq1RTQlP.js.map +0 -1
  313. package/dist/client/assets/WorkspaceEntityLink-AdZ_T-Wk.js +0 -2
  314. package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
  315. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js +0 -3
  316. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js.map +0 -1
  317. package/dist/client/assets/WorkspaceHomeLink-XbKSPths.js +0 -2
  318. package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js.map +0 -1
  319. package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
  320. package/dist/client/assets/WorkspaceSettingsPage-Fy7Wx8Y2.js +0 -2
  321. package/dist/client/assets/WorkspaceSettingsPage-Fy7Wx8Y2.js.map +0 -1
  322. package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
  323. package/dist/client/assets/agent-api-QVqt4a0O.js +0 -19
  324. package/dist/client/assets/agent-api-QVqt4a0O.js.map +0 -1
  325. package/dist/client/assets/authenticatedMutationClient-Ccwguc3i.js +0 -2
  326. package/dist/client/assets/authorizedShareTransport-DZHgFEkh.js +0 -2
  327. package/dist/client/assets/client-D27unen8.js +0 -5
  328. package/dist/client/assets/client-D27unen8.js.map +0 -1
  329. package/dist/client/assets/connectionTestTransport-BQ55d6Me.js +0 -2
  330. package/dist/client/assets/connectionTestTransport-BQ55d6Me.js.map +0 -1
  331. package/dist/client/assets/index-j5ze816l.js +0 -11
  332. package/dist/client/assets/index-j5ze816l.js.map +0 -1
  333. package/dist/client/assets/presentPortfolio-D3ZIcnqt.js.map +0 -1
  334. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js +0 -2
  335. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js.map +0 -1
  336. package/dist/client/assets/releaseRoutes-BCuIdZyA.js +0 -2
  337. package/dist/client/assets/serviceOnboarding-Jg_0yNjf.js +0 -2
  338. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js +0 -2
  339. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js.map +0 -1
  340. package/dist/client/assets/workspaceSettingsTransport-CZWYL5T7.js +0 -2
  341. package/dist/server/assets/BindConfig-DIsf2Rnh.js.map +0 -1
  342. package/dist/server/assets/agent-CyZ40zs1.js.map +0 -1
  343. package/dist/server/assets/controlCenterApi-ZUX3Y-LE.js.map +0 -1
  344. package/dist/server/assets/manualPluginSynchronization-DFlhKvav.js.map +0 -1
  345. package/dist/server/assets/relationshipInferenceMaterialization-DYBcaWhQ.js.map +0 -1
  346. package/dist/server/assets/workspaceSettings-BE713Oe8.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-xQhAQXly.js","names":[],"sources":["../../../src/api/errors.ts","../../../src/api/session.ts","../../../src/api/plugins.ts","../../../src/api/portfolio.ts","../../../src/api/wire.ts","../../../src/api/agent.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\n\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\n\nconst SAFE_API_MESSAGE_MAXIMUM_LENGTH = 500\n\nconst SafeApiMessage = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(SAFE_API_MESSAGE_MAXIMUM_LENGTH)\n)\n\n/** Correlation identifier shared by one HTTP response header and its typed error body. */\nexport const CorrelationId = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(128),\n Schema.isPattern(/^[A-Za-z0-9._:-]+$/u, { expected: \"an HTTP-safe correlation identifier\" })\n).pipe(Schema.brand(\"CorrelationId\"))\n\n/** Decoded HTTP correlation identifier. */\nexport type CorrelationId = typeof CorrelationId.Type\n\nconst commonErrorFields = {\n correlationId: CorrelationId,\n message: SafeApiMessage\n}\n\n/** A request failed schema, authority, origin, or CSRF-shape validation. */\nexport class InvalidRequestApiError extends Schema.TaggedErrorClass<InvalidRequestApiError>()(\n \"InvalidRequestApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"invalid-request\")\n },\n { httpApiStatus: 400 }\n) {}\n\n/** The browser did not present a valid active session. */\nexport class UnauthorizedApiError extends Schema.TaggedErrorClass<UnauthorizedApiError>()(\n \"UnauthorizedApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"unauthorized\")\n },\n { httpApiStatus: 401 }\n) {}\n\n/** The active session cannot perform the requested capability. */\nexport class ForbiddenApiError extends Schema.TaggedErrorClass<ForbiddenApiError>()(\n \"ForbiddenApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"forbidden\")\n },\n { httpApiStatus: 403 }\n) {}\n\n/** An authenticated lookup did not resolve to a visible resource. */\nexport class NotFoundApiError extends Schema.TaggedErrorClass<NotFoundApiError>()(\n \"NotFoundApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"not-found\")\n },\n { httpApiStatus: 404 }\n) {}\n\n/** Current durable state conflicts with the requested transition. */\nexport class ConflictApiError extends Schema.TaggedErrorClass<ConflictApiError>()(\n \"ConflictApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"conflict\")\n },\n { httpApiStatus: 409 }\n) {}\n\n/** A bounded request exceeded the public API size limit. */\nexport class PayloadTooLargeApiError extends Schema.TaggedErrorClass<PayloadTooLargeApiError>()(\n \"PayloadTooLargeApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"payload-too-large\")\n },\n { httpApiStatus: 413 }\n) {}\n\n/** The request did not complete within its bounded server deadline. */\nexport class RequestTimedOutApiError extends Schema.TaggedErrorClass<RequestTimedOutApiError>()(\n \"RequestTimedOutApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"request-timed-out\")\n },\n { httpApiStatus: 408 }\n) {}\n\n/** The caller must wait until the optional safe retry instant. */\nexport class RateLimitedApiError extends Schema.TaggedErrorClass<RateLimitedApiError>()(\n \"RateLimitedApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"rate-limited\"),\n retryAt: Schema.NullOr(UtcTimestamp)\n },\n { httpApiStatus: 429 }\n) {}\n\n/** A required local or provider service is temporarily unavailable. */\nexport class ServiceUnavailableApiError extends Schema.TaggedErrorClass<ServiceUnavailableApiError>()(\n \"ServiceUnavailableApiError\",\n {\n ...commonErrorFields,\n code: Schema.Literal(\"service-unavailable\"),\n retryAt: Schema.NullOr(UtcTimestamp)\n },\n { httpApiStatus: 503 }\n) {}\n\n/** Required response header attached to every successful and failed API response. */\nexport const CorrelationResponseHeaders = Schema.Struct({\n \"x-correlation-id\": CorrelationId\n}).annotate({ identifier: \"CorrelationResponseHeaders\" })\n\n/** Decoded correlation response headers. */\nexport type CorrelationResponseHeaders = typeof CorrelationResponseHeaders.Type\n","import * as Context from \"effect/Context\"\nimport * as Schema from \"effect/Schema\"\nimport {\n HttpApiEndpoint,\n HttpApiGroup,\n HttpApiMiddleware,\n HttpApiSchema,\n HttpApiSecurity\n} from \"effect/unstable/httpapi\"\n\nimport { Actor, Role } from \"../domain/actors.js\"\nimport { SessionId, WorkspaceId } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\n\nconst LOWERCASE_SECRET_PATTERN = /^[0-9a-f]{64}$/u\n\nexport { SessionId } from \"../domain/identifiers.js\"\n\n/** Single-use pairing credential accepted only by the public pairing endpoint. */\nexport const PairingCode = Schema.String.check(\n Schema.isPattern(LOWERCASE_SECRET_PATTERN, { expected: \"a lowercase 256-bit pairing credential\" })\n).pipe(Schema.brand(\"PairingCode\"))\n\n/** Decoded single-use pairing credential. */\nexport type PairingCode = typeof PairingCode.Type\n\n/** Workspace-scoped access available to a newly paired browser. */\nexport const BrowserPairingPermission = Schema.Literals([\"workspace-owner\", \"workspace-approver\"])\n\n/** Decoded access available to a newly paired browser. */\nexport type BrowserPairingPermission = typeof BrowserPairingPermission.Type\n\n/** Mutation proof issued separately from the opaque session cookie. */\nexport const CsrfToken = Schema.String.check(\n Schema.isPattern(LOWERCASE_SECRET_PATTERN, { expected: \"a lowercase 256-bit CSRF credential\" })\n).pipe(Schema.brand(\"CsrfToken\"))\n\n/** Decoded CSRF credential. */\nexport type CsrfToken = typeof CsrfToken.Type\n\n/** Secret-free metadata describing an authenticated browser session. */\nexport const SessionSummary = Schema.Struct({\n sessionId: SessionId,\n workspaceId: WorkspaceId,\n actor: Actor,\n permission: Role,\n createdAt: UtcTimestamp,\n lastSeenAt: UtcTimestamp,\n idleExpiresAt: UtcTimestamp,\n absoluteExpiresAt: UtcTimestamp,\n revokedAt: Schema.NullOr(UtcTimestamp)\n}).annotate({ identifier: \"ApiSessionSummary\" })\n\n/** Decoded browser-session metadata. */\nexport type SessionSummary = typeof SessionSummary.Type\n\n/** Pairing request whose credential is never represented in a URL. */\nexport const PairSessionRequest = Schema.Struct({ pairingCode: PairingCode })\n\n/** Decoded session-pairing request. */\nexport type PairSessionRequest = typeof PairSessionRequest.Type\n\n/** Pairing result; the opaque session token is delivered only through the response cookie. */\nexport const PairSessionResponse = Schema.Struct({\n csrfToken: CsrfToken,\n session: SessionSummary\n})\n\n/** Decoded session-pairing response. */\nexport type PairSessionResponse = typeof PairSessionResponse.Type\n\n/** Owner-authorized request for a single-use code for another browser. */\nexport const IssueBrowserPairingCodeRequest = Schema.Struct({\n permission: BrowserPairingPermission\n})\n\n/** Decoded request for a single-use code for another browser. */\nexport type IssueBrowserPairingCodeRequest = typeof IssueBrowserPairingCodeRequest.Type\n\n/** One-time browser-pairing material. It must never be persisted by the client. */\nexport const IssueBrowserPairingCodeResponse = Schema.Struct({\n pairingCode: PairingCode,\n expiresAt: UtcTimestamp\n})\n\n/** Decoded one-time browser-pairing material. */\nexport type IssueBrowserPairingCodeResponse = typeof IssueBrowserPairingCodeResponse.Type\n\n/** Authenticated session metadata with a recoverable, session-bound mutation proof. */\nexport const CurrentSessionResponse = Schema.Struct({\n csrfToken: CsrfToken,\n session: SessionSummary\n})\n\n/** Decoded current-session response. */\nexport type CurrentSessionResponse = typeof CurrentSessionResponse.Type\n\n/** Bounded session-administration response. */\nexport const SessionListResponse = Schema.Array(SessionSummary).check(\n Schema.makeFilter((sessions) => sessions.length <= 100, { expected: \"at most 100 sessions\" })\n)\n\n/** Decoded bounded session list. */\nexport type SessionListResponse = typeof SessionListResponse.Type\n\n/** Authenticated session attached to endpoint handlers by cookie middleware. */\nexport class CurrentSession extends Context.Service<CurrentSession, SessionSummary>()(\n \"@knpkv/control-center/api/CurrentSession\"\n) {}\n\n/** Public middleware identity for the opaque `cc_session` cookie. */\nexport class SessionCookieAuth extends HttpApiMiddleware.Service<\n SessionCookieAuth,\n {\n provides: CurrentSession\n }\n>()(\"@knpkv/control-center/api/SessionCookieAuth\", {\n error: [UnauthorizedApiError, ForbiddenApiError, ServiceUnavailableApiError],\n security: {\n sessionCookie: HttpApiSecurity.apiKey({ in: \"cookie\", key: \"cc_session\" })\n }\n}) {}\n\n/** Public middleware identity for the separate mutation CSRF header. */\nexport class SessionMutationAuth extends HttpApiMiddleware.Service<SessionMutationAuth>()(\n \"@knpkv/control-center/api/SessionMutationAuth\",\n {\n error: [InvalidRequestApiError, ForbiddenApiError, ServiceUnavailableApiError],\n security: {\n csrfToken: HttpApiSecurity.apiKey({ in: \"header\", key: \"x-csrf-token\" })\n }\n }\n) {}\n\n/** Compatibility name emphasizing the CSRF mechanism used by mutation authorization. */\nexport const MutationCsrf = SessionMutationAuth\n\nconst authenticatedErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst pair = HttpApiEndpoint.post(\"pair\", \"/pair\", {\n payload: PairSessionRequest,\n success: PairSessionResponse,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ConflictApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n})\n\nconst current = HttpApiEndpoint.get(\"current\", \"/current\", {\n success: CurrentSessionResponse,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst list = HttpApiEndpoint.get(\"list\", \"/\", {\n success: SessionListResponse,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst issueBrowserPairingCode = HttpApiEndpoint.post(\"issueBrowserPairingCode\", \"/device-code\", {\n payload: IssueBrowserPairingCodeRequest,\n success: IssueBrowserPairingCodeResponse,\n error: authenticatedErrors\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst revoke = HttpApiEndpoint.delete(\"revoke\", \"/:sessionId\", {\n params: Schema.Struct({ sessionId: SessionId }),\n success: HttpApiSchema.NoContent,\n error: authenticatedErrors\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst logout = HttpApiEndpoint.post(\"logout\", \"/logout\", {\n success: HttpApiSchema.NoContent,\n error: authenticatedErrors\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Session pairing, inspection, administration, and logout contract. */\nexport class SessionApiGroup extends HttpApiGroup.make(\"session\")\n .add(pair, current, list, issueBrowserPairingCode, revoke, logout)\n .prefix(\"/api/v1/session\")\n{}\n","import * as Effect from \"effect/Effect\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport * as SchemaGetter from \"effect/SchemaGetter\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PluginFailureClass, PluginHealth } from \"../domain/freshness.js\"\nimport { FollowedResourceId, PluginConnectionId, ProviderAccountId } from \"../domain/identifiers.js\"\nimport {\n NegotiatedPluginCapabilityV1,\n PluginCapabilityId,\n PluginConfigurationFieldV1,\n PluginId,\n SemanticVersion\n} from \"../domain/plugins/descriptor.js\"\nimport { ProviderId } from \"../domain/sourceRevision.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\n\nconst MAXIMUM_PLUGIN_CONNECTIONS = 100\nconst MAXIMUM_PROVIDER_ACCOUNTS = 100\nconst MAXIMUM_FOLLOWED_RESOURCES = 100\nconst MAXIMUM_DISCOVERED_AWS_PROFILES = 100\nconst MAXIMUM_DISCOVERED_AWS_RESOURCES = 20\nconst MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES = 100\nconst MAXIMUM_ATLASSIAN_OAUTH_SITES = 100\nconst MAXIMUM_CONFIGURATION_VALUES = 100\nconst MAXIMUM_SECRET_VALUE_LENGTH = 16_384\n\nconst isProviderHttpUrl = Schema.makeFilter((value: string) => {\n const decoded = Schema.decodeUnknownResult(Schema.URLFromString)(value)\n if (Result.isFailure(decoded)) return false\n const url = decoded.success\n return (\n (url.protocol === \"https:\" || url.protocol === \"http:\") &&\n url.hostname.length > 0 &&\n url.username.length === 0 &&\n url.password.length === 0 &&\n url.hash.length === 0\n )\n}, { expected: \"an HTTP(S) provider URL without credentials or a fragment\" })\n\n/** Stable field key shared by descriptor metadata and configuration values. */\nexport const PluginConfigurationKey = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(100)\n).pipe(Schema.brand(\"PluginConfigurationKey\"))\n\n/** Decoded plugin configuration field key. */\nexport type PluginConfigurationKey = typeof PluginConfigurationKey.Type\n\n/** Opaque reference created through the separate secret-management boundary. */\nexport const OpaqueSecretReference = Schema.String.check(\n Schema.isPattern(/^secret_[0-9a-f]{64}$/u, { expected: \"an opaque secret reference\" })\n).pipe(Schema.brand(\"OpaqueSecretReference\"))\n\n/** Decoded opaque secret reference. */\nexport type OpaqueSecretReference = typeof OpaqueSecretReference.Type\n\nconst configurationValueFields = { key: PluginConfigurationKey }\nconst BoundedConfigurationText = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(4_096)\n)\nconst BoundedConfigurationUrl = BoundedConfigurationText.check(isProviderHttpUrl)\nconst AtlassianCloudSiteUrl = BoundedConfigurationUrl.check(\n Schema.makeFilter((value: string) => {\n const decoded = Schema.decodeUnknownResult(Schema.URLFromString)(value)\n if (Result.isFailure(decoded)) return false\n const url = decoded.success\n return (\n url.protocol === \"https:\" &&\n url.port.length === 0 &&\n url.hostname.endsWith(\".atlassian.net\") &&\n url.hostname.length > \".atlassian.net\".length &&\n (url.pathname === \"\" || url.pathname === \"/\") &&\n url.search.length === 0\n )\n }, { expected: \"an HTTPS Atlassian Cloud site root\" })\n)\n\n/** Explicit replacement semantics for a redacted secret in a full configuration update. */\nexport const SecretReferencePatchOperation = Schema.Union([\n Schema.TaggedStruct(\"keep\", {}),\n Schema.TaggedStruct(\"clear\", {}),\n Schema.TaggedStruct(\"replace\", { reference: OpaqueSecretReference })\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded secret update operation that never requires the current reference to leave the server. */\nexport type SecretReferencePatchOperation = typeof SecretReferencePatchOperation.Type\n\n/** Secret-safe current value; secret fields reveal only whether a reference is configured. */\nexport const RedactedPluginConfigurationValue = Schema.Union([\n Schema.TaggedStruct(\"text\", { ...configurationValueFields, value: BoundedConfigurationText }),\n Schema.TaggedStruct(\"url\", { ...configurationValueFields, value: BoundedConfigurationUrl }),\n Schema.TaggedStruct(\"boolean\", { ...configurationValueFields, value: Schema.Boolean }),\n Schema.TaggedStruct(\"integer\", { ...configurationValueFields, value: Schema.Int }),\n Schema.TaggedStruct(\"select\", { ...configurationValueFields, value: BoundedConfigurationText }),\n Schema.TaggedStruct(\"secret-reference\", {\n ...configurationValueFields,\n state: Schema.Literals([\"configured\", \"missing\"])\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded secret-safe current configuration value. */\nexport type RedactedPluginConfigurationValue = typeof RedactedPluginConfigurationValue.Type\n\n/** Typed configuration update; secret bytes remain outside this endpoint. */\nexport const PluginConfigurationPatchValue = Schema.Union([\n Schema.TaggedStruct(\"text\", { ...configurationValueFields, value: BoundedConfigurationText }),\n Schema.TaggedStruct(\"url\", { ...configurationValueFields, value: BoundedConfigurationUrl }),\n Schema.TaggedStruct(\"boolean\", { ...configurationValueFields, value: Schema.Boolean }),\n Schema.TaggedStruct(\"integer\", { ...configurationValueFields, value: Schema.Int }),\n Schema.TaggedStruct(\"select\", { ...configurationValueFields, value: BoundedConfigurationText }),\n Schema.TaggedStruct(\"secret-reference\", {\n ...configurationValueFields,\n operation: SecretReferencePatchOperation\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded typed plugin configuration update value. */\nexport type PluginConfigurationPatchValue = typeof PluginConfigurationPatchValue.Type\n\nconst boundedConfigurationValues = <T extends { readonly key: string }, E extends { readonly key: string }, RD, RE>(\n value: Schema.Codec<T, E, RD, RE>\n) =>\n Schema.Array(value).check(\n Schema.makeFilter((values) => values.length <= MAXIMUM_CONFIGURATION_VALUES, {\n expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} plugin configuration values`\n }),\n Schema.makeFilter((values) => new Set(values.map(({ key }) => key)).size === values.length, {\n expected: \"unique plugin configuration keys\"\n })\n )\n\n/** Redacted current configuration with its compare-and-swap revision. */\nexport const PluginConfiguration = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n revision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n values: boundedConfigurationValues(RedactedPluginConfigurationValue),\n updatedAt: Schema.NullOr(UtcTimestamp)\n}).annotate({ identifier: \"PluginConfiguration\" })\n\n/** Decoded redacted current plugin configuration. */\nexport type PluginConfiguration = typeof PluginConfiguration.Type\n\n/** Bounded compare-and-swap update request for one plugin connection. */\nexport const PatchPluginConfigurationRequest = Schema.Struct({\n expectedRevision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n values: boundedConfigurationValues(PluginConfigurationPatchValue)\n}).annotate({ identifier: \"PatchPluginConfigurationRequest\" })\n\n/** Decoded compare-and-swap plugin configuration update. */\nexport type PatchPluginConfigurationRequest = typeof PatchPluginConfigurationRequest.Type\n\n/** Secret-free plugin connection row used by navigation and portfolio views. */\nconst NullableProviderAccountId = Schema.NullOr(ProviderAccountId)\nconst NullableFollowedResourceId = Schema.NullOr(FollowedResourceId)\n\nexport const PluginConnectionSummary = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n providerAccountId: Schema.optional(NullableProviderAccountId).pipe(\n Schema.decodeTo(Schema.toType(NullableProviderAccountId), {\n decode: SchemaGetter.withDefault(Effect.succeed<typeof NullableProviderAccountId.Type>(null)),\n encode: SchemaGetter.required()\n })\n ),\n followedResourceId: Schema.optional(NullableFollowedResourceId).pipe(\n Schema.decodeTo(Schema.toType(NullableFollowedResourceId), {\n decode: SchemaGetter.withDefault(Effect.succeed<typeof NullableFollowedResourceId.Type>(null)),\n encode: SchemaGetter.required()\n })\n ),\n providerId: ProviderId,\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n isEnabled: Schema.Boolean,\n supportsSynchronization: Schema.optional(Schema.Boolean).pipe(\n Schema.decodeTo(Schema.Boolean, {\n decode: SchemaGetter.withDefault(Effect.succeed(false)),\n encode: SchemaGetter.required()\n })\n ),\n health: Schema.NullOr(PluginHealth),\n updatedAt: UtcTimestamp\n}).annotate({ identifier: \"PluginConnectionSummary\" })\n\n/** Decoded plugin connection summary. */\nexport type PluginConnectionSummary = typeof PluginConnectionSummary.Type\n\n/** Secret-free provider resource shown inside its owning account. */\nexport const FollowedResourceSummary = Schema.Struct({\n followedResourceId: FollowedResourceId,\n providerId: ProviderId,\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n providerImmutableId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512)),\n isEnabled: Schema.Boolean\n}).annotate({ identifier: \"FollowedResourceSummary\" })\n\n/** Decoded followed-resource overview. */\nexport type FollowedResourceSummary = typeof FollowedResourceSummary.Type\n\n/** One provider account and the resources this workspace follows within it. */\nexport const ProviderAccountSummary = Schema.Struct({\n providerAccountId: ProviderAccountId,\n providerFamily: Schema.Literals([\"aws\", \"atlassian\", \"clockify\"]),\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n providerImmutableId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512)),\n revision: Schema.optional(Schema.Int.check(Schema.isGreaterThan(0))).pipe(\n Schema.decodeTo(Schema.Int.check(Schema.isGreaterThan(0)), {\n decode: SchemaGetter.withDefault(Effect.succeed(1)),\n encode: SchemaGetter.required()\n })\n ),\n resources: Schema.Array(FollowedResourceSummary).check(\n Schema.makeFilter((resources) => resources.length <= MAXIMUM_FOLLOWED_RESOURCES, {\n expected: `at most ${MAXIMUM_FOLLOWED_RESOURCES} followed resources per provider account`\n })\n )\n}).annotate({ identifier: \"ProviderAccountSummary\" })\n\n/** Decoded provider-account overview. */\nexport type ProviderAccountSummary = typeof ProviderAccountSummary.Type\n\nconst CatalogFieldText = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))\n\n/** Secret-free setup field shown before a first-party provider has runtime state. */\nexport const PluginServiceCatalogField = Schema.Struct({\n key: PluginConfigurationKey,\n label: CatalogFieldText,\n description: CatalogFieldText,\n kind: Schema.Literals([\"text\", \"url\", \"integer\", \"secret\"]),\n scope: Schema.Literals([\"adapter\", \"credential\"]),\n required: Schema.Boolean,\n defaultValue: Schema.NullOr(Schema.String.check(Schema.isMaxLength(4_096))),\n isReadOnly: Schema.Boolean,\n minimum: Schema.NullOr(Schema.Int),\n maximum: Schema.NullOr(Schema.Int)\n}).annotate({ identifier: \"PluginServiceCatalogField\" })\n\n/** Decoded safe setup metadata for one catalog field. */\nexport type PluginServiceCatalogField = typeof PluginServiceCatalogField.Type\n\n/** One fixed first-party service available whether or not it is configured. */\nexport const PluginServiceCatalogEntry = Schema.Struct({\n providerId: ProviderId,\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n description: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n configurationFields: Schema.Array(PluginServiceCatalogField).check(\n Schema.isNonEmpty(),\n Schema.makeFilter((fields) => fields.length <= MAXIMUM_CONFIGURATION_VALUES, {\n expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} catalog configuration fields`\n })\n )\n}).annotate({ identifier: \"PluginServiceCatalogEntry\" })\n\n/** Decoded safe metadata for one fixed first-party service. */\nexport type PluginServiceCatalogEntry = typeof PluginServiceCatalogEntry.Type\n\n/** One local AWS CLI profile available to first-party AWS adapters. */\nexport const DiscoveredAwsProfile = Schema.Struct({\n profile: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n region: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)))\n}).annotate({ identifier: \"DiscoveredAwsProfile\" })\n\n/** Decoded local AWS profile metadata; credentials never cross this contract. */\nexport type DiscoveredAwsProfile = typeof DiscoveredAwsProfile.Type\n\n/** Bounded local AWS profile discovery response. */\nexport const AwsProfileDiscoveryResponse = Schema.Array(DiscoveredAwsProfile).check(\n Schema.makeFilter((profiles) => profiles.length <= MAXIMUM_DISCOVERED_AWS_PROFILES, {\n expected: `at most ${MAXIMUM_DISCOVERED_AWS_PROFILES} discovered AWS profiles`\n })\n)\n\n/** Decoded bounded AWS profile discovery response. */\nexport type AwsProfileDiscoveryResponse = typeof AwsProfileDiscoveryResponse.Type\n\n/** Validated local AWS credential selector for one explicit discovery request. */\nexport const AwsResourceDiscoveryRequest = Schema.Struct({\n profile: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200),\n Schema.isPattern(/^[A-Za-z0-9_+=,.@ -]+$/u, { expected: \"a valid AWS profile name\" })\n ),\n region: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(100),\n Schema.isPattern(/^[a-z]{2}(?:-[a-z0-9]+)+-[0-9]+$/u, { expected: \"a valid AWS region\" })\n )\n}).annotate({ identifier: \"AwsResourceDiscoveryRequest\" })\n\n/** Decoded profile and single-region discovery request. */\nexport type AwsResourceDiscoveryRequest = typeof AwsResourceDiscoveryRequest.Type\n\nconst AwsResourceName = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100))\nconst AwsResourceNames = Schema.Array(AwsResourceName).check(\n Schema.makeFilter((names) => names.length <= MAXIMUM_DISCOVERED_AWS_RESOURCES, {\n expected: `at most ${MAXIMUM_DISCOVERED_AWS_RESOURCES} discovered AWS resources`\n }),\n Schema.makeFilter((names) => new Set(names).size === names.length, { expected: \"unique AWS resource names\" })\n)\n\n/** Safe per-service AWS resource discovery result. */\nexport const AwsServiceResourceDiscovery = Schema.Union([\n Schema.TaggedStruct(\"available\", { names: AwsResourceNames, truncated: Schema.Boolean }),\n Schema.TaggedStruct(\"failed\", {\n failureClass: Schema.Literals([\"authorization\", \"malformed-response\", \"rate-limit\", \"timeout\", \"unavailable\"])\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"), Schema.annotate({ identifier: \"AwsServiceResourceDiscovery\" }))\n\n/** Decoded per-service AWS resource discovery result. */\nexport type AwsServiceResourceDiscovery = typeof AwsServiceResourceDiscovery.Type\n\n/** Identity-verified, secret-free AWS resource discovery response. */\nexport const AwsResourceDiscoveryResponse = Schema.Struct({\n accountId: Schema.String.check(Schema.isPattern(/^[0-9]{12}$/u, { expected: \"a 12-digit AWS account id\" })),\n codeCommit: AwsServiceResourceDiscovery,\n codePipeline: AwsServiceResourceDiscovery\n}).annotate({ identifier: \"AwsResourceDiscoveryResponse\" })\n\n/** Decoded identity and independent service discovery outcomes. */\nexport type AwsResourceDiscoveryResponse = typeof AwsResourceDiscoveryResponse.Type\n\n/** One local OAuth profile available to first-party Atlassian adapters. */\nexport const DiscoveredAtlassianProfile = Schema.Struct({\n profileId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n name: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n siteUrl: BoundedConfigurationUrl,\n cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n accountName: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),\n accountEmail: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),\n status: Schema.Literals([\"valid\", \"expired\"]),\n providers: Schema.Array(Schema.Literals([\"jira\", \"confluence\"])).check(Schema.isNonEmpty())\n}).annotate({ identifier: \"DiscoveredAtlassianProfile\" })\n\n/** Decoded secret-free metadata for one local Atlassian OAuth profile. */\nexport type DiscoveredAtlassianProfile = typeof DiscoveredAtlassianProfile.Type\n\n/** Bounded local Atlassian OAuth profile discovery response. */\nexport const AtlassianProfileDiscoveryResponse = Schema.Array(DiscoveredAtlassianProfile).check(\n Schema.makeFilter((profiles) => profiles.length <= MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES, {\n expected: `at most ${MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES} discovered Atlassian profiles`\n })\n)\n\n/** Decoded bounded local Atlassian profile discovery response. */\nexport type AtlassianProfileDiscoveryResponse = typeof AtlassianProfileDiscoveryResponse.Type\n\n/** Single-use browser OAuth grant identifier; it is also the provider state parameter. */\nexport const AtlassianOAuthGrantId = Schema.String.check(\n Schema.isPattern(/^[A-Za-z0-9_-]{43}$/u, { expected: \"a base64url-encoded 256-bit OAuth state\" })\n).pipe(Schema.brand(\"AtlassianOAuthGrantId\"))\n\n/** Decoded single-use Atlassian OAuth grant identifier. */\nexport type AtlassianOAuthGrantId = typeof AtlassianOAuthGrantId.Type\n\n/** Atlassian product requested by one browser OAuth grant. */\nexport const AtlassianOAuthProvider = Schema.Literals([\"jira\", \"confluence\"])\n\n/** Decoded Atlassian product requested by OAuth. */\nexport type AtlassianOAuthProvider = typeof AtlassianOAuthProvider.Type\n\n/** One or both distinct Atlassian products requested by an OAuth grant. */\nexport const AtlassianOAuthProviderIntent = Schema.Array(AtlassianOAuthProvider).check(\n Schema.isNonEmpty(),\n Schema.makeFilter((providers) => providers.length <= 2, { expected: \"at most two Atlassian OAuth providers\" }),\n Schema.makeFilter((providers) => new Set(providers).size === providers.length, {\n expected: \"distinct Atlassian OAuth providers\"\n })\n)\n\n/** Decoded one- or two-product Atlassian OAuth intent. */\nexport type AtlassianOAuthProviderIntent = typeof AtlassianOAuthProviderIntent.Type\n\n/** OAuth app credentials entered once in Control Center and retained only by its server. */\nexport const AtlassianOAuthClientConfiguration = Schema.Struct({\n clientId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n clientSecret: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_SECRET_VALUE_LENGTH))\n}).annotate({ identifier: \"AtlassianOAuthClientConfiguration\" })\n\n/** Decoded local Atlassian OAuth app configuration. */\nexport type AtlassianOAuthClientConfiguration = typeof AtlassianOAuthClientConfiguration.Type\n\n/** Owner request to start OAuth for the products currently being configured. */\nexport const CreateAtlassianOAuthGrantRequest = Schema.Struct({\n providers: AtlassianOAuthProviderIntent,\n configuration: Schema.optional(AtlassianOAuthClientConfiguration)\n}).annotate({ identifier: \"CreateAtlassianOAuthGrantRequest\" })\n\n/** Decoded owner request to start OAuth for the products currently being configured. */\nexport type CreateAtlassianOAuthGrantRequest = typeof CreateAtlassianOAuthGrantRequest.Type\n\n/** Safe result of preparing the browser authorization redirect. */\nexport const AtlassianOAuthGrantStartResponse = Schema.Union([\n Schema.TaggedStruct(\"ready\", {\n authorizationUrl: Schema.String.check(isProviderHttpUrl),\n callbackUrl: BoundedConfigurationUrl\n }),\n Schema.TaggedStruct(\"configuration-required\", { callbackUrl: BoundedConfigurationUrl })\n]).pipe(Schema.toTaggedUnion(\"_tag\"), Schema.annotate({ identifier: \"AtlassianOAuthGrantStartResponse\" }))\n\n/** Decoded browser authorization preparation result. */\nexport type AtlassianOAuthGrantStartResponse = typeof AtlassianOAuthGrantStartResponse.Type\n\n/** Authorization code returned by Atlassian to the same authenticated browser. */\nexport const ExchangeAtlassianOAuthGrantRequest = Schema.Struct({\n code: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4_096))\n}).annotate({ identifier: \"ExchangeAtlassianOAuthGrantRequest\" })\n\n/** One accessible Atlassian site awaiting explicit selection. */\nexport const AtlassianOAuthSite = Schema.Struct({\n cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n name: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n siteUrl: AtlassianCloudSiteUrl\n}).annotate({ identifier: \"AtlassianOAuthSite\" })\n\n/** Secret-free account and site choices returned after code exchange. */\nexport const AtlassianOAuthGrantExchangeResponse = Schema.Struct({\n grantId: AtlassianOAuthGrantId,\n accountName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n accountEmail: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),\n sites: Schema.Array(AtlassianOAuthSite).check(\n Schema.isNonEmpty(),\n Schema.makeFilter((sites) => sites.length <= MAXIMUM_ATLASSIAN_OAUTH_SITES, {\n expected: `at most ${MAXIMUM_ATLASSIAN_OAUTH_SITES} accessible Atlassian sites`\n })\n )\n}).annotate({ identifier: \"AtlassianOAuthGrantExchangeResponse\" })\n\n/** Decoded secret-free site-selection state. */\nexport type AtlassianOAuthGrantExchangeResponse = typeof AtlassianOAuthGrantExchangeResponse.Type\n\n/** Explicit site choice that completes a pending browser OAuth grant. */\nexport const CompleteAtlassianOAuthGrantRequest = Schema.Struct({\n cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))\n}).annotate({ identifier: \"CompleteAtlassianOAuthGrantRequest\" })\n\n/** Bounded plugin-navigation and portfolio response retained for v1 clients. */\nexport const PluginListResponse = Schema.Array(PluginConnectionSummary).check(\n Schema.makeFilter((plugins) => plugins.length <= MAXIMUM_PLUGIN_CONNECTIONS, {\n expected: `at most ${MAXIMUM_PLUGIN_CONNECTIONS} plugin connections`\n })\n)\n\n/** Decoded bounded plugin list. */\nexport type PluginListResponse = typeof PluginListResponse.Type\n\nconst ProviderAccountSummaries = Schema.Array(ProviderAccountSummary).check(\n Schema.makeFilter((accounts) => accounts.length <= MAXIMUM_PROVIDER_ACCOUNTS, {\n expected: `at most ${MAXIMUM_PROVIDER_ACCOUNTS} provider accounts`\n })\n)\n\n/** Bounded Services overview with the fixed catalog and durable connections. */\nexport const PluginOverviewResponse = Schema.Struct({\n catalog: Schema.Array(PluginServiceCatalogEntry).check(\n Schema.makeFilter((entries) => entries.length === 5, { expected: \"the five first-party services\" })\n ),\n connections: Schema.Array(PluginConnectionSummary).check(\n Schema.makeFilter((plugins) => plugins.length <= MAXIMUM_PLUGIN_CONNECTIONS, {\n expected: `at most ${MAXIMUM_PLUGIN_CONNECTIONS} plugin connections`\n })\n ),\n accounts: Schema.optional(ProviderAccountSummaries).pipe(\n Schema.decodeTo(Schema.toType(ProviderAccountSummaries), {\n decode: SchemaGetter.withDefault(Effect.succeed<typeof ProviderAccountSummaries.Type>([])),\n encode: SchemaGetter.required()\n })\n )\n}).annotate({ identifier: \"PluginOverviewResponse\" })\n\n/** Decoded bounded Services overview. */\nexport type PluginOverviewResponse = typeof PluginOverviewResponse.Type\n\nconst createValueFields = { key: PluginConfigurationKey }\n\n/** Typed setup input; only the secret variant carries transport-only secret text. */\nexport const CreatePluginConnectionValue = Schema.Union([\n Schema.TaggedStruct(\"text\", { ...createValueFields, value: BoundedConfigurationText }),\n Schema.TaggedStruct(\"url\", { ...createValueFields, value: BoundedConfigurationUrl }),\n Schema.TaggedStruct(\"integer\", { ...createValueFields, value: Schema.Int }),\n Schema.TaggedStruct(\"secret\", {\n ...createValueFields,\n value: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_SECRET_VALUE_LENGTH))\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded typed value for first-party connection setup. */\nexport type CreatePluginConnectionValue = typeof CreatePluginConnectionValue.Type\n\n/** Bounded owner request to create, configure, enable, and immediately test a connection. */\nexport const CreatePluginConnectionRequest = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n providerId: ProviderId,\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n values: boundedConfigurationValues(CreatePluginConnectionValue)\n}).annotate({ identifier: \"CreatePluginConnectionRequest\" })\n\n/** Decoded request for first-party connection setup. */\nexport type CreatePluginConnectionRequest = typeof CreatePluginConnectionRequest.Type\n\n/** Current health for one authenticated plugin connection lookup. */\nexport const PluginHealthResponse = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n health: PluginHealth\n}).annotate({ identifier: \"PluginHealthResponse\" })\n\n/** Decoded plugin health response. */\nexport type PluginHealthResponse = typeof PluginHealthResponse.Type\n\nconst ConnectionIdentityText = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(512)\n)\n\n/** Secret-free provider identity proven by a live connection test. */\nexport const PluginConnectionIdentity = Schema.Struct({\n kind: Schema.Literals([\"user\", \"account\", \"workspace\"]),\n label: ConnectionIdentityText,\n displayName: ConnectionIdentityText,\n providerImmutableId: ConnectionIdentityText\n}).annotate({ identifier: \"PluginConnectionIdentity\" })\n\n/** Decoded provider identity proven by a live connection test. */\nexport type PluginConnectionIdentity = typeof PluginConnectionIdentity.Type\n\nconst connectionTestTiming = {\n pluginConnectionId: PluginConnectionId,\n providerId: ProviderId,\n checkedAt: UtcTimestamp,\n latencyMilliseconds: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n}\n\n/** Normalized result of live health and identity discovery against one connection. */\nexport const PluginConnectionTestResult = Schema.Union([\n Schema.TaggedStruct(\"healthy\", {\n ...connectionTestTiming,\n identity: PluginConnectionIdentity\n }),\n Schema.TaggedStruct(\"failed\", {\n ...connectionTestTiming,\n failureClass: PluginFailureClass,\n retryAt: Schema.NullOr(UtcTimestamp),\n safeMessage: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"), Schema.annotate({ identifier: \"PluginConnectionTestResult\" }))\n\n/** Decoded live connection test result. */\nexport type PluginConnectionTestResult = typeof PluginConnectionTestResult.Type\n\n/** Durable result of the most recent bounded synchronization invocation. */\nexport const PluginSynchronizationResult = Schema.Literals([\n \"never\",\n \"running\",\n \"synchronized\",\n \"source-unavailable\",\n \"interrupted\"\n])\n\n/** Decoded synchronization result presented without provider diagnostics. */\nexport type PluginSynchronizationResult = typeof PluginSynchronizationResult.Type\n\n/** Secret-free durable synchronization state for one negotiated connection stream. */\nexport const PluginSynchronizationState = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n providerId: ProviderId,\n streamKey: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)),\n lastAttemptAt: Schema.NullOr(UtcTimestamp),\n lastSuccessAt: Schema.NullOr(UtcTimestamp),\n result: PluginSynchronizationResult,\n pagesCommitted: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n}).annotate({ identifier: \"PluginSynchronizationState\" })\n\n/** Decoded manual synchronization state. */\nexport type PluginSynchronizationState = typeof PluginSynchronizationState.Type\n\n/** Redacted result of durable setup and its immediate live identity check. */\nexport const CreatePluginConnectionResponse = Schema.Struct({\n connection: PluginConnectionSummary,\n configuration: PluginConfiguration,\n test: PluginConnectionTestResult\n}).annotate({ identifier: \"CreatePluginConnectionResponse\" })\n\n/** Decoded redacted first-party connection setup response. */\nexport type CreatePluginConnectionResponse = typeof CreatePluginConnectionResponse.Type\n\nconst MAXIMUM_BATCH_PLUGIN_CONNECTIONS = 40\n\n/** Bounded setup batch owned by one authenticated workspace. */\nexport const CreatePluginConnectionsRequest = Schema.Struct({\n connections: Schema.Array(CreatePluginConnectionRequest).check(\n Schema.makeFilter(\n (connections) => connections.length >= 1 && connections.length <= MAXIMUM_BATCH_PLUGIN_CONNECTIONS,\n { expected: `between 1 and ${MAXIMUM_BATCH_PLUGIN_CONNECTIONS} plugin connections` }\n ),\n Schema.makeFilter(\n (connections) =>\n new Set(connections.map(({ pluginConnectionId }) => pluginConnectionId)).size === connections.length,\n { expected: \"unique plugin connection identifiers\" }\n )\n )\n}).annotate({ identifier: \"CreatePluginConnectionsRequest\" })\n\n/** Decoded bounded multi-connection setup request. */\nexport type CreatePluginConnectionsRequest = typeof CreatePluginConnectionsRequest.Type\n\nexport const PluginConnectionSetupFailureClass = Schema.Literals([\n \"conflict\",\n \"invalid-request\",\n \"not-found\",\n \"rate-limited\",\n \"service-unavailable\"\n])\n\n/** Safe classification for one failed setup item. */\nexport type PluginConnectionSetupFailureClass = typeof PluginConnectionSetupFailureClass.Type\n\n/** One ordered result from a multi-connection setup request. */\nexport const CreatePluginConnectionBatchResult = Schema.Union([\n Schema.TaggedStruct(\"succeeded\", { response: CreatePluginConnectionResponse }),\n Schema.TaggedStruct(\"failed\", {\n pluginConnectionId: PluginConnectionId,\n failureClass: PluginConnectionSetupFailureClass\n })\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded result for one connection in a setup batch. */\nexport type CreatePluginConnectionBatchResult = typeof CreatePluginConnectionBatchResult.Type\n\n/** Ordered redacted results for a bounded setup batch. */\nexport const CreatePluginConnectionsResponse = Schema.Struct({\n results: Schema.Array(CreatePluginConnectionBatchResult).check(\n Schema.makeFilter(\n (results) => results.length >= 1 && results.length <= MAXIMUM_BATCH_PLUGIN_CONNECTIONS,\n { expected: `between 1 and ${MAXIMUM_BATCH_PLUGIN_CONNECTIONS} plugin connection results` }\n )\n )\n}).annotate({ identifier: \"CreatePluginConnectionsResponse\" })\n\n/** Decoded ordered multi-connection setup response. */\nexport type CreatePluginConnectionsResponse = typeof CreatePluginConnectionsResponse.Type\n\n/** Owner-only transition for independently enabling or disabling one connection. */\nexport const SetPluginConnectionEnabledRequest = Schema.Struct({\n isEnabled: Schema.Boolean\n}).annotate({ identifier: \"SetPluginConnectionEnabledRequest\" })\n\n/** Decoded connection enablement transition. */\nexport type SetPluginConnectionEnabledRequest = typeof SetPluginConnectionEnabledRequest.Type\n\n/** Secret-free configuration contract exposed to settings views. */\nexport const PluginConfigurationMetadata = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n pluginId: PluginId,\n contractVersion: SemanticVersion,\n adapterVersion: SemanticVersion,\n configurationFields: Schema.Array(PluginConfigurationFieldV1).check(\n Schema.makeFilter((fields) => fields.length <= 100, { expected: \"at most 100 configuration fields\" })\n ),\n capabilities: Schema.Array(NegotiatedPluginCapabilityV1).check(\n Schema.makeFilter((capabilities) => capabilities.length <= 32, {\n expected: \"at most 32 negotiated plugin capabilities\"\n })\n )\n}).annotate({ identifier: \"PluginConfigurationMetadata\" })\n\n/** Decoded secret-free plugin configuration metadata. */\nexport type PluginConfigurationMetadata = typeof PluginConfigurationMetadata.Type\n\n/** Safe operator-facing severity for one connection diagnostic. */\nexport const PluginAdministrationDiagnosticSeverity = Schema.Literals([\"information\", \"warning\", \"critical\"])\n\n/** One bounded diagnostic derived from redacted durable/runtime state. */\nexport const PluginAdministrationDiagnostic = Schema.Struct({\n code: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)),\n severity: PluginAdministrationDiagnosticSeverity,\n summary: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n observedAt: Schema.NullOr(UtcTimestamp)\n}).annotate({ identifier: \"PluginAdministrationDiagnostic\" })\n\n/** Decoded safe connection diagnostic. */\nexport type PluginAdministrationDiagnostic = typeof PluginAdministrationDiagnostic.Type\n\n/** Provider operation made available by the negotiated connection contract. */\nexport const PluginConnectionPermission = Schema.Struct({\n capabilityId: PluginCapabilityId,\n version: Schema.Int.check(Schema.isGreaterThan(0)),\n state: Schema.Literals([\"available\", \"disabled\"])\n}).annotate({ identifier: \"PluginConnectionPermission\" })\n\n/** Decoded connection permission. */\nexport type PluginConnectionPermission = typeof PluginConnectionPermission.Type\n\n/** Current scheduling contract for one connection. Workspace cadence remains a workspace setting. */\nexport const PluginSynchronizationSchedule = Schema.Struct({\n mode: Schema.Literals([\"manual\", \"unsupported\"]),\n nextRunAt: Schema.Null\n}).annotate({ identifier: \"PluginSynchronizationSchedule\" })\n\n/** Secret-free owner/read model for ongoing connection administration and recovery. */\nexport const PluginConnectionAdministration = Schema.Struct({\n connection: PluginConnectionSummary,\n configuration: PluginConfiguration,\n metadata: PluginConfigurationMetadata,\n credentialFields: Schema.Array(PluginServiceCatalogField).check(\n Schema.makeFilter((fields) => fields.length <= MAXIMUM_CONFIGURATION_VALUES, {\n expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} credential fields`\n })\n ),\n permissions: Schema.Array(PluginConnectionPermission).check(\n Schema.makeFilter((permissions) => permissions.length <= 32, {\n expected: \"at most 32 connection permissions\"\n })\n ),\n schedule: PluginSynchronizationSchedule,\n synchronization: Schema.NullOr(PluginSynchronizationState),\n diagnostics: Schema.Array(PluginAdministrationDiagnostic).check(\n Schema.makeFilter((diagnostics) => diagnostics.length <= 16, {\n expected: \"at most 16 connection diagnostics\"\n })\n )\n}).annotate({ identifier: \"PluginConnectionAdministration\" })\n\n/** Decoded secret-free connection administration read model. */\nexport type PluginConnectionAdministration = typeof PluginConnectionAdministration.Type\n\n/** Compare-and-swap account label edit; provider identity remains immutable. */\nexport const PatchProviderAccountRequest = Schema.Struct({\n expectedRevision: Schema.Int.check(Schema.isGreaterThan(0)),\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))\n}).annotate({ identifier: \"PatchProviderAccountRequest\" })\n\n/** Decoded provider-account metadata patch. */\nexport type PatchProviderAccountRequest = typeof PatchProviderAccountRequest.Type\n\n/** One replacement for a machine-local credential/profile field. */\nexport const PluginCredentialReplacement = Schema.Struct({\n key: PluginConfigurationKey,\n value: Schema.String.check(\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_SECRET_VALUE_LENGTH),\n Schema.makeFilter((value) => value.trim().length > 0, {\n expected: \"a non-whitespace credential value\"\n })\n )\n}).annotate({ identifier: \"PluginCredentialReplacement\" })\n\n/** A raw credential supplied only to the secret-store replacement boundary. */\nexport type PluginCredentialReplacement = typeof PluginCredentialReplacement.Type\n\n/** Replace selected credential/profile fields at an exact configuration revision. */\nexport const ReauthorizePluginConnectionRequest = Schema.Struct({\n expectedRevision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n credentials: Schema.Array(PluginCredentialReplacement).check(\n Schema.isNonEmpty(),\n Schema.makeFilter((credentials) => credentials.length <= MAXIMUM_CONFIGURATION_VALUES, {\n expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} credential replacements`\n }),\n Schema.makeFilter(\n (credentials) => new Set(credentials.map(({ key }) => key)).size === credentials.length,\n { expected: \"unique credential keys\" }\n )\n )\n}).annotate({ identifier: \"ReauthorizePluginConnectionRequest\" })\n\n/** Decoded credential/profile recovery request. */\nexport type ReauthorizePluginConnectionRequest = typeof ReauthorizePluginConnectionRequest.Type\n\n/** Revoke every credential/profile field and disable a connection at an exact revision. */\nexport const RevokePluginConnectionRequest = Schema.Struct({\n expectedRevision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n}).annotate({ identifier: \"RevokePluginConnectionRequest\" })\n\n/** Decoded connection credential revocation request. */\nexport type RevokePluginConnectionRequest = typeof RevokePluginConnectionRequest.Type\n\nconst pluginReadErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst list = HttpApiEndpoint.get(\"list\", \"/\", {\n success: PluginListResponse,\n error: pluginReadErrors\n}).middleware(SessionCookieAuth)\n\nconst overview = HttpApiEndpoint.get(\"overview\", \"/overview\", {\n success: PluginOverviewResponse,\n error: pluginReadErrors\n}).middleware(SessionCookieAuth)\n\nconst discoverAwsProfiles = HttpApiEndpoint.get(\"discoverAwsProfiles\", \"/discovery/aws-profiles\", {\n success: AwsProfileDiscoveryResponse,\n error: pluginReadErrors\n}).middleware(SessionCookieAuth)\n\nconst discoverAwsResources = HttpApiEndpoint.post(\"discoverAwsResources\", \"/discovery/aws-resources\", {\n payload: AwsResourceDiscoveryRequest,\n success: AwsResourceDiscoveryResponse,\n error: [...pluginReadErrors, InvalidRequestApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst discoverAtlassianProfiles = HttpApiEndpoint.get(\n \"discoverAtlassianProfiles\",\n \"/discovery/atlassian-profiles\",\n {\n success: AtlassianProfileDiscoveryResponse,\n error: pluginReadErrors\n }\n).middleware(SessionCookieAuth)\n\nconst createAtlassianOAuthGrant = HttpApiEndpoint.post(\n \"createAtlassianOAuthGrant\",\n \"/oauth/atlassian/grants\",\n {\n payload: CreateAtlassianOAuthGrantRequest,\n success: AtlassianOAuthGrantStartResponse,\n error: [...pluginReadErrors, InvalidRequestApiError, ConflictApiError]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst exchangeAtlassianOAuthGrant = HttpApiEndpoint.post(\n \"exchangeAtlassianOAuthGrant\",\n \"/oauth/atlassian/grants/:grantId/exchange\",\n {\n params: Schema.Struct({ grantId: AtlassianOAuthGrantId }),\n payload: ExchangeAtlassianOAuthGrantRequest,\n success: AtlassianOAuthGrantExchangeResponse,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst completeAtlassianOAuthGrant = HttpApiEndpoint.post(\n \"completeAtlassianOAuthGrant\",\n \"/oauth/atlassian/grants/:grantId/complete\",\n {\n params: Schema.Struct({ grantId: AtlassianOAuthGrantId }),\n payload: CompleteAtlassianOAuthGrantRequest,\n success: DiscoveredAtlassianProfile,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst createConnection = HttpApiEndpoint.post(\"createConnection\", \"/connections\", {\n payload: CreatePluginConnectionRequest,\n success: CreatePluginConnectionResponse,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst createConnections = HttpApiEndpoint.post(\"createConnections\", \"/connections/batch\", {\n payload: CreatePluginConnectionsRequest,\n success: CreatePluginConnectionsResponse,\n error: [...pluginReadErrors, InvalidRequestApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst setConnectionEnabled = HttpApiEndpoint.patch(\"setConnectionEnabled\", \"/connections/:pluginConnectionId\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n payload: SetPluginConnectionEnabledRequest,\n success: PluginConnectionSummary,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst patchProviderAccount = HttpApiEndpoint.patch(\"patchProviderAccount\", \"/accounts/:providerAccountId\", {\n params: Schema.Struct({ providerAccountId: ProviderAccountId }),\n payload: PatchProviderAccountRequest,\n success: ProviderAccountSummary,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst health = HttpApiEndpoint.get(\"health\", \"/:pluginConnectionId/health\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginHealthResponse,\n error: [...pluginReadErrors, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst testConnection = HttpApiEndpoint.post(\"testConnection\", \"/:pluginConnectionId/test\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginConnectionTestResult,\n error: [...pluginReadErrors, NotFoundApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst synchronization = HttpApiEndpoint.get(\"synchronization\", \"/:pluginConnectionId/synchronization\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginSynchronizationState,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst synchronizeConnection = HttpApiEndpoint.post(\"synchronizeConnection\", \"/:pluginConnectionId/sync\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginSynchronizationState,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst configurationMetadata = HttpApiEndpoint.get(\n \"configurationMetadata\",\n \"/:pluginConnectionId/configuration-metadata\",\n {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginConfigurationMetadata,\n error: [...pluginReadErrors, NotFoundApiError]\n }\n).middleware(SessionCookieAuth)\n\nconst configuration = HttpApiEndpoint.get(\"configuration\", \"/:pluginConnectionId/configuration\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginConfiguration,\n error: [...pluginReadErrors, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst administration = HttpApiEndpoint.get(\"administration\", \"/:pluginConnectionId/administration\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n success: PluginConnectionAdministration,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst patchConfiguration = HttpApiEndpoint.patch(\"patchConfiguration\", \"/:pluginConnectionId/configuration\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n payload: PatchPluginConfigurationRequest,\n success: PluginConfiguration,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst reauthorizeConnection = HttpApiEndpoint.post(\"reauthorizeConnection\", \"/:pluginConnectionId/reauthorize\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n payload: ReauthorizePluginConnectionRequest,\n success: CreatePluginConnectionResponse,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError, PayloadTooLargeApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst revokeConnection = HttpApiEndpoint.post(\"revokeConnection\", \"/:pluginConnectionId/revoke\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),\n payload: RevokePluginConnectionRequest,\n success: PluginConnectionSummary,\n error: [...pluginReadErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Authenticated plugin list, health, and secret-free configuration contract. */\nexport class PluginsApiGroup extends HttpApiGroup.make(\"plugins\")\n .add(\n list,\n overview,\n discoverAwsProfiles,\n discoverAwsResources,\n discoverAtlassianProfiles,\n createAtlassianOAuthGrant,\n exchangeAtlassianOAuthGrant,\n completeAtlassianOAuthGrant,\n createConnection,\n createConnections,\n setConnectionEnabled,\n patchProviderAccount,\n health,\n testConnection,\n synchronization,\n synchronizeConnection,\n configurationMetadata,\n configuration,\n administration,\n patchConfiguration,\n reauthorizeConnection,\n revokeConnection\n )\n .prefix(\"/api/v1/plugins\")\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { Freshness } from \"../domain/freshness.js\"\nimport {\n EnvironmentId,\n EventCursor,\n GovernedActionId,\n PersonId,\n ReleaseId,\n WorkspaceId\n} from \"../domain/identifiers.js\"\nimport { hasMaximumPluginJsonBytes } from \"../domain/plugins/bounds.js\"\nimport { ReadinessFinding, ReadinessStages, ReadinessVerdict } from \"../domain/readiness/model.js\"\nimport { ReleaseLifecycle, ReleaseServiceName, ReleaseVersion } from \"../domain/release.js\"\nimport { ReleaseRelayProjection } from \"../domain/releaseRelay.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { PluginConnectionSummary } from \"./plugins.js\"\nimport { SessionCookieAuth } from \"./session.js\"\n\nconst MAXIMUM_PORTFOLIO_RELEASES = 200\nconst MAXIMUM_TARGET_ENVIRONMENTS = 50\nconst MAXIMUM_SNAPSHOT_JSON_BYTES = 1024 * 1024\nconst MAXIMUM_COUNT = 1_000_000\nconst MAXIMUM_RELEASE_COLLABORATORS = 50\n\nconst BoundedCount = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(MAXIMUM_COUNT))\n\n/** Compact relationship totals for one release delivery graph. */\nexport const PortfolioRelationshipCounts = Schema.Struct({\n issues: BoundedCount,\n pullRequests: BoundedCount,\n pipelineExecutions: BoundedCount,\n truncated: Schema.Boolean\n}).annotate({ identifier: \"PortfolioRelationshipCounts\" })\n\n/** Decoded compact relationship totals. */\nexport type PortfolioRelationshipCounts = typeof PortfolioRelationshipCounts.Type\n\n/** Whether the current release projection is covered by its latest Confluence page publication. */\nexport const PortfolioReleasePageAwareness = Schema.Struct({\n state: Schema.Literals([\"current\", \"stale\", \"not-published\", \"unknown\"]),\n lastPublishedAt: Schema.NullOr(UtcTimestamp),\n publicationActionId: Schema.optionalKey(GovernedActionId)\n}).annotate({ identifier: \"PortfolioReleasePageAwareness\" })\n\n/** Decoded release-page freshness summary. */\nexport type PortfolioReleasePageAwareness = typeof PortfolioReleasePageAwareness.Type\n\n/** Current server-owned readiness facts required by the bird's-eye portfolio. */\nexport const PortfolioReadinessSummary = Schema.Struct({\n authority: Schema.Literals([\"authoritative\", \"pending\"]),\n verdict: ReadinessVerdict,\n stages: ReadinessStages,\n blockerCount: BoundedCount,\n warningCount: BoundedCount,\n gapCount: BoundedCount,\n primaryFinding: Schema.NullOr(ReadinessFinding),\n evaluatedAt: UtcTimestamp\n}).annotate({ identifier: \"PortfolioReadinessSummary\" })\n\n/** Decoded compact readiness projection. */\nexport type PortfolioReadinessSummary = typeof PortfolioReadinessSummary.Type\n\n/** Release-scoped human responsibility shown in the compact portfolio. */\nexport const PortfolioReleaseRole = Schema.Literals([\"release-owner\", \"release-approver\"])\n\n/** Decoded compact release responsibility. */\nexport type PortfolioReleaseRole = typeof PortfolioReleaseRole.Type\n\n/** Named human collaborator resolved from durable workspace identity. */\nexport const PortfolioReleaseCollaborator = Schema.Struct({\n personId: PersonId,\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n avatarFallback: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4)),\n role: PortfolioReleaseRole\n}).annotate({ identifier: \"PortfolioReleaseCollaborator\" })\n\n/** Decoded compact release collaborator. */\nexport type PortfolioReleaseCollaborator = typeof PortfolioReleaseCollaborator.Type\n\nconst BoundedReleaseCollaborators = Schema.Array(PortfolioReleaseCollaborator).check(\n Schema.makeFilter((collaborators) => collaborators.length <= MAXIMUM_RELEASE_COLLABORATORS, {\n expected: `at most ${MAXIMUM_RELEASE_COLLABORATORS} release collaborators`\n }),\n Schema.makeFilter(\n (collaborators) =>\n new Set(collaborators.map(({ personId, role }) => `${personId}\\u0000${role}`)).size === collaborators.length,\n { expected: \"unique person and release-role pairs\" }\n )\n)\n\n/** Compact release projection for the authenticated bird's-eye portfolio. */\nexport const PortfolioReleaseSummary = Schema.Struct({\n releaseId: ReleaseId,\n serviceName: ReleaseServiceName,\n version: ReleaseVersion,\n lifecycle: ReleaseLifecycle,\n relay: ReleaseRelayProjection,\n freshness: Freshness,\n targetEnvironmentIds: Schema.Array(EnvironmentId).check(\n Schema.isUnique(),\n Schema.makeFilter((environments) => environments.length <= MAXIMUM_TARGET_ENVIRONMENTS, {\n expected: `at most ${MAXIMUM_TARGET_ENVIRONMENTS} target environments`\n })\n ),\n collaborators: BoundedReleaseCollaborators,\n collaboratorCount: BoundedCount,\n readiness: Schema.NullOr(PortfolioReadinessSummary),\n relationships: PortfolioRelationshipCounts,\n sourceRevisionCount: BoundedCount,\n releasePageAwareness: Schema.optionalKey(PortfolioReleasePageAwareness),\n updatedAt: UtcTimestamp\n}).annotate({ identifier: \"PortfolioReleaseSummary\" })\n\n/** Decoded compact release summary. */\nexport type PortfolioReleaseSummary = typeof PortfolioReleaseSummary.Type\n\n/** Bounded, point-in-time portfolio projection for one authenticated workspace. */\nexport const PortfolioSnapshot = Schema.Struct({\n workspaceId: WorkspaceId,\n eventCursor: EventCursor,\n generatedAt: UtcTimestamp,\n releases: Schema.Array(PortfolioReleaseSummary).check(\n Schema.makeFilter((releases) => releases.length <= MAXIMUM_PORTFOLIO_RELEASES, {\n expected: `at most ${MAXIMUM_PORTFOLIO_RELEASES} releases`\n }),\n Schema.makeFilter((releases) => new Set(releases.map(({ releaseId }) => releaseId)).size === releases.length, {\n expected: \"unique release identifiers\"\n })\n ),\n plugins: Schema.Array(PluginConnectionSummary).check(\n Schema.makeFilter((plugins) => plugins.length <= 100, { expected: \"at most 100 plugin connections\" }),\n Schema.makeFilter(\n (plugins) => new Set(plugins.map(({ pluginConnectionId }) => pluginConnectionId)).size === plugins.length,\n { expected: \"unique plugin connection identifiers\" }\n )\n )\n})\n .check(hasMaximumPluginJsonBytes(MAXIMUM_SNAPSHOT_JSON_BYTES))\n .annotate({ identifier: \"PortfolioSnapshot\" })\n\n/** Decoded authenticated portfolio snapshot. */\nexport type PortfolioSnapshot = typeof PortfolioSnapshot.Type\n\nconst snapshot = HttpApiEndpoint.get(\"snapshot\", \"/snapshot\", {\n success: PortfolioSnapshot,\n error: [UnauthorizedApiError, ForbiddenApiError, RequestTimedOutApiError, ServiceUnavailableApiError]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated point-in-time portfolio contract. */\nexport class PortfolioApiGroup extends HttpApiGroup.make(\"portfolio\").add(snapshot).prefix(\"/api/v1/portfolio\") {}\n","import * as Schema from \"effect/Schema\"\nimport * as SchemaGetter from \"effect/SchemaGetter\"\n\nconst CANONICAL_NONNEGATIVE_INTEGER_PATTERN = /^(?:0|[1-9][0-9]*)$/u\nconst MAXIMUM_SAFE_INTEGER_DIGITS = String(Number.MAX_SAFE_INTEGER).length\n\nconst NonNegativeSafeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n\n/** Canonical unsigned-decimal HTTP representation of a nonnegative safe integer. */\nexport const CanonicalNonNegativeIntegerFromString = Schema.String.check(\n Schema.isMaxLength(MAXIMUM_SAFE_INTEGER_DIGITS),\n Schema.isPattern(CANONICAL_NONNEGATIVE_INTEGER_PATTERN, {\n expected: \"a canonical unsigned-decimal integer\"\n })\n).pipe(\n Schema.decodeTo(NonNegativeSafeInteger, {\n decode: SchemaGetter.transform((value) => Number(value)),\n encode: SchemaGetter.transform((value) => String(value))\n })\n)\n","import { AgentRuntimeMetadata, MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH } from \"@knpkv/ai-runtime\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { AgentProviderIdentifier } from \"../domain/agentProviderIdentifier.js\"\nimport { GovernedActionState } from \"../domain/governedAction/index.js\"\nimport {\n EntityId,\n EventCursor,\n GovernedActionId,\n JobId,\n PersonId,\n PrReviewSuggestionRevisionId,\n ReleaseId\n} from \"../domain/identifiers.js\"\nimport { PluginProviderReceiptV1 } from \"../domain/plugins/actions.js\"\nimport {\n PrReviewDismissalReason,\n PrReviewOutcome,\n PrReviewReport,\n PrReviewSubject,\n PrReviewSuggestion,\n PrReviewSuggestionId\n} from \"../domain/prReview.js\"\nimport {\n PrReviewSuggestionEdit,\n PrReviewSuggestionRevision,\n PrReviewSuggestionRevisionPage,\n PrReviewSuggestionRevisionPageSize,\n PrReviewSuggestionRevisionSequence\n} from \"../domain/prReviewRevision.js\"\nimport { Revision } from \"../domain/sourceRevision.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { PortfolioReleaseSummary } from \"./portfolio.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\nconst MAXIMUM_PROMPT_LENGTH = 8_000\nconst MAXIMUM_HISTORY_MESSAGES = 12\nconst MAXIMUM_HISTORY_MESSAGE_LENGTH = 12_000\nconst MAXIMUM_HISTORY_CONTENT_LENGTH = 64_000\nconst MAXIMUM_REPLY_LENGTH = 32_000\nconst MAXIMUM_ORIGIN_PATH_LENGTH = 2_048\nconst MAXIMUM_DURABLE_PROMPT_LENGTH = 5_000\n/** Maximum targeted request length retained in a pull-request review thread. */\nexport const MAXIMUM_REVIEW_THREAD_PROMPT_LENGTH = 2_500\nconst MAXIMUM_AGENT_PROVIDERS = 32\nconst MAXIMUM_THREAD_EVENT_PAGE_SIZE = 128\nconst MAXIMUM_AGENT_MODELS_PER_PROVIDER = 32\n\n/** Bounded current instruction sent to the release-aware model. */\nexport const AgentPrompt = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_PROMPT_LENGTH)\n)\n\n/** Decoded release-agent prompt. */\nexport type AgentPrompt = typeof AgentPrompt.Type\n\nconst BoundedHistoryContent = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_HISTORY_MESSAGE_LENGTH)\n)\n\n/** Supported local command-line model providers. */\nexport const AgentProvider = Schema.Literals([\"codex\", \"claude\"])\n\n/** Decoded local command-line model provider. */\nexport type AgentProvider = typeof AgentProvider.Type\n\n/** Provider-neutral configured runtime identity accepted by durable jobs. */\nexport const DurableAgentProviderId = AgentProviderIdentifier.pipe(\n Schema.brand(\"DurableAgentProviderId\")\n)\n\n/** Decoded provider-neutral durable runtime identity. */\nexport type DurableAgentProviderId = typeof DurableAgentProviderId.Type\n\n/** Bounded browser-safe model identifier accepted by the provider registry. */\nexport const AgentModelId = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200)\n).pipe(Schema.brand(\"AgentModelId\"))\n\n/** Decoded browser-safe agent model identifier. */\nexport type AgentModelId = typeof AgentModelId.Type\n\n/** Safe execution profile whose persisted representation is the existing read-only access mode. */\nexport const AgentSafeProfile = Schema.Literal(\"read-only\")\n\n/** Decoded safe execution profile. */\nexport type AgentSafeProfile = typeof AgentSafeProfile.Type\n\n/** Stable server-owned profile selected before an immutable review starts. */\nexport const ReviewAgentProfileId = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(500),\n Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/u)\n).pipe(Schema.brand(\"ReviewAgentProfileId\"))\n\n/** Decoded Review Agent Profile identity. */\nexport type ReviewAgentProfileId = typeof ReviewAgentProfileId.Type\n\n/** Browser-safe Review Agent Profile metadata. */\nexport const ReviewAgentProfile = Schema.Struct({\n profileId: ReviewAgentProfileId,\n label: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n budgetMillis: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 1_800_000 })),\n networkAccess: Schema.Literals([\"blocked\", \"provider-enabled\"]),\n sandbox: Schema.Literal(\"sbx\")\n})\n\n/** Decoded browser-safe Review Agent Profile metadata. */\nexport type ReviewAgentProfile = typeof ReviewAgentProfile.Type\n\n/** Redacted provider health; configuration and transport diagnostics remain server-only. */\nexport const AgentProviderHealth = Schema.Literals([\"available\", \"not-configured\"])\n\n/** Decoded redacted provider health. */\nexport type AgentProviderHealth = typeof AgentProviderHealth.Type\n\n/** Browser-safe task capabilities supported by one agent provider. */\nexport const AgentProviderCapability = Schema.Literals([\"release-chat\", \"pr-review\"])\n\n/** Decoded browser-safe agent task capability. */\nexport type AgentProviderCapability = typeof AgentProviderCapability.Type\n\n/** Browser-safe catalog entry for one server-owned agent provider. */\nexport const AgentProviderCatalogEntry = Schema.Struct({\n providerId: DurableAgentProviderId,\n displayName: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100))\n ),\n models: Schema.Array(AgentModelId).check(\n Schema.makeFilter((models) => models.length <= MAXIMUM_AGENT_MODELS_PER_PROVIDER, {\n expected: `at most ${MAXIMUM_AGENT_MODELS_PER_PROVIDER} agent models`\n }),\n Schema.isUnique()\n ),\n capabilities: Schema.Array(AgentProviderCapability).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(AgentProviderCapability.literals.length),\n Schema.isUnique()\n ),\n health: AgentProviderHealth,\n reviewProfile: Schema.optionalKey(ReviewAgentProfile)\n})\n\n/** Decoded browser-safe provider catalog entry. */\nexport type AgentProviderCatalogEntry = typeof AgentProviderCatalogEntry.Type\n\n/** Redacted catalog for the fixed server-side provider registry. */\nexport const AgentProviderCatalog = Schema.Struct({\n providers: Schema.Array(AgentProviderCatalogEntry).check(\n Schema.makeFilter((providers) => providers.length <= MAXIMUM_AGENT_PROVIDERS, {\n expected: `at most ${MAXIMUM_AGENT_PROVIDERS} agent providers`\n }),\n Schema.makeFilter(\n (providers) => new Set(providers.map(({ providerId }) => providerId)).size === providers.length,\n { expected: \"unique agent provider identifiers\" }\n )\n )\n})\n\n/** Decoded redacted provider catalog. */\nexport type AgentProviderCatalog = typeof AgentProviderCatalog.Type\n\n/** Prompt guaranteed to fit the durable user-message event envelope. */\nexport const DurableAgentPrompt = Schema.String.check(\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_DURABLE_PROMPT_LENGTH)\n)\n\n/** Decoded durable release-agent prompt. */\nexport type DurableAgentPrompt = typeof DurableAgentPrompt.Type\n\n/** Release-agent provider alias retained for discoverability beside the turn schemas. */\nexport const ReleaseAgentProvider = AgentProvider\n\n/** Decoded release-agent provider. */\nexport type ReleaseAgentProvider = AgentProvider\n\n/** Provider destination that Relay may create or update after human confirmation. */\nexport const ReleasePublicationProvider = Schema.Literals([\"jira\", \"confluence\"])\nexport type ReleasePublicationProvider = typeof ReleasePublicationProvider.Type\n\nexport const SubmitReleasePublicationRequest = Schema.Struct({\n provider: ReleasePublicationProvider,\n title: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n markdown: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200_000)),\n parentId: Schema.NullOr(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n ),\n publicationActionId: Schema.optionalKey(GovernedActionId),\n /** Exact synchronized Confluence page selected before its first governed release update. */\n targetEntityId: Schema.optionalKey(EntityId),\n /** Revision displayed to the owner before an exact-page update is submitted. */\n targetRevision: Schema.optionalKey(Revision),\n /** Existing synchronized Confluence page copied into a new release-owned page. */\n templateEntityId: Schema.optionalKey(EntityId)\n})\nexport type SubmitReleasePublicationRequest = typeof SubmitReleasePublicationRequest.Type\n\nexport const SubmitReleasePublicationResponse = Schema.Struct({\n actionId: GovernedActionId,\n state: GovernedActionState\n})\nexport type SubmitReleasePublicationResponse = typeof SubmitReleasePublicationResponse.Type\n\n/** One bounded prior turn supplied to preserve release-thread context. */\nexport const AgentHistoryMessage = Schema.Struct({\n role: Schema.Literals([\"user\", \"assistant\"]),\n content: BoundedHistoryContent\n}).annotate({ identifier: \"ReleaseAgentHistoryMessage\" })\n\n/** Decoded prior release-agent turn. */\nexport type AgentHistoryMessage = typeof AgentHistoryMessage.Type\n\n/** History-message alias retained for discoverability beside the turn schemas. */\nexport const ReleaseAgentHistoryMessage = AgentHistoryMessage\n\n/** Decoded prior release-agent turn. */\nexport type ReleaseAgentHistoryMessage = AgentHistoryMessage\n\nconst ReleaseAgentHistory = Schema.Array(AgentHistoryMessage).check(\n Schema.makeFilter((history) => history.length <= MAXIMUM_HISTORY_MESSAGES, {\n expected: `at most ${MAXIMUM_HISTORY_MESSAGES} release-agent history messages`\n }),\n Schema.makeFilter(\n (history) =>\n history.reduce((length, message) => length + message.content.length, 0) <= MAXIMUM_HISTORY_CONTENT_LENGTH,\n { expected: `at most ${MAXIMUM_HISTORY_CONTENT_LENGTH} release-agent history characters` }\n )\n)\n\n/** Bounded browser request for one release-aware model turn. */\nexport const ReleaseAgentTurnRequest = Schema.Struct({\n provider: AgentProvider,\n prompt: AgentPrompt,\n history: ReleaseAgentHistory,\n originPath: Schema.optionalKey(\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isPattern(/^\\/(?![\\\\/])[^\\\\]*$/u, { expected: \"a same-origin Control Center path\" }),\n Schema.isMaxLength(MAXIMUM_ORIGIN_PATH_LENGTH)\n )\n )\n}).annotate({ identifier: \"ReleaseAgentTurnRequest\" })\n\n/** Decoded release-aware model request. */\nexport type ReleaseAgentTurnRequest = typeof ReleaseAgentTurnRequest.Type\n\n/** Model reply plus the authoritative release projection used for the turn. */\nexport const ReleaseAgentTurnResponse = Schema.Struct({\n releaseId: ReleaseId,\n provider: AgentProvider,\n reply: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_REPLY_LENGTH)),\n release: PortfolioReleaseSummary,\n eventCursor: EventCursor\n}).check(\n Schema.makeFilter(({ release, releaseId }) => release.releaseId === releaseId, {\n expected: \"release-agent response identity to match its release projection\"\n })\n).annotate({ identifier: \"ReleaseAgentTurnResponse\" })\n\n/** Decoded release-aware model response. */\nexport type ReleaseAgentTurnResponse = typeof ReleaseAgentTurnResponse.Type\n\n/** Cursor of the last durable release-thread event observed by a client. */\nexport const ReleaseAgentThreadCursor = Schema.Int.check(\n Schema.isBetween({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER })\n).pipe(Schema.brand(\"ReleaseAgentThreadCursor\"))\n\n/** Decoded durable release-thread cursor. */\nexport type ReleaseAgentThreadCursor = typeof ReleaseAgentThreadCursor.Type\n\n/** Canonical query-string representation of a durable release-thread cursor. */\nexport const ReleaseAgentThreadCursorFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.decodeTo(ReleaseAgentThreadCursor)\n)\n\n/** Bounded caller-selected page size for durable release-thread replay. */\nexport const ReleaseAgentThreadEventLimitFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.check(\n Schema.isGreaterThanOrEqualTo(1),\n Schema.isLessThanOrEqualTo(MAXIMUM_THREAD_EVENT_PAGE_SIZE)\n )\n)\n\nconst releaseAgentThreadEventFields = {\n eventSequence: ReleaseAgentThreadCursor.check(Schema.isGreaterThan(0)),\n jobId: JobId,\n occurredAt: UtcTimestamp\n}\n\nconst ReleaseAgentUserMessageEvent = Schema.TaggedStruct(\"user-message\", {\n ...releaseAgentThreadEventFields,\n prompt: DurableAgentPrompt\n})\n\nconst ReleaseAgentJobQueuedEvent = Schema.TaggedStruct(\"job-queued\", {\n ...releaseAgentThreadEventFields,\n providerId: DurableAgentProviderId\n})\n\nconst ReleaseAgentJobStartedEvent = Schema.TaggedStruct(\"job-started\", {\n ...releaseAgentThreadEventFields,\n runtimeMetadata: Schema.optionalKey(AgentRuntimeMetadata)\n})\n\nconst ReleaseAgentAssistantOutputEvent = Schema.TaggedStruct(\"assistant-output\", {\n ...releaseAgentThreadEventFields,\n text: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH))\n})\n\nconst ReleaseAgentProgressEvent = Schema.TaggedStruct(\"progress\", {\n ...releaseAgentThreadEventFields,\n text: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH))\n})\n\nconst ReleaseAgentUsageEvent = Schema.TaggedStruct(\"usage\", {\n ...releaseAgentThreadEventFields,\n inputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n outputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n})\n\nconst ReleaseAgentJobCompletedEvent = Schema.TaggedStruct(\"job-completed\", {\n ...releaseAgentThreadEventFields,\n outcome: Schema.Literals([\"success\", \"cancelled\", \"max-steps\"])\n})\n\nconst ReleaseAgentJobFailedEvent = Schema.TaggedStruct(\"job-failed\", {\n ...releaseAgentThreadEventFields,\n retryable: Schema.Boolean\n})\n\nconst ReleaseAgentCancellationRequestedEvent = Schema.TaggedStruct(\"cancel-requested\", {\n ...releaseAgentThreadEventFields,\n requestedAt: UtcTimestamp\n})\n\n/** One browser-safe event from the durable release thread. */\nexport const ReleaseAgentThreadEvent = Schema.Union([\n ReleaseAgentUserMessageEvent,\n ReleaseAgentJobQueuedEvent,\n ReleaseAgentJobStartedEvent,\n ReleaseAgentAssistantOutputEvent,\n ReleaseAgentProgressEvent,\n ReleaseAgentUsageEvent,\n ReleaseAgentJobCompletedEvent,\n ReleaseAgentJobFailedEvent,\n ReleaseAgentCancellationRequestedEvent\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded browser-safe durable release-thread event. */\nexport type ReleaseAgentThreadEvent = typeof ReleaseAgentThreadEvent.Type\n\n/** Bounded request to enqueue one durable read-only release-agent job. */\nexport const EnqueueReleaseAgentJobRequest = Schema.Struct({\n providerId: DurableAgentProviderId,\n model: AgentModelId,\n profile: AgentSafeProfile,\n prompt: DurableAgentPrompt.check(Schema.isMaxLength(2_500))\n})\n\n/** Decoded durable release-agent enqueue request. */\nexport type EnqueueReleaseAgentJobRequest = typeof EnqueueReleaseAgentJobRequest.Type\n\n/** Durable identity returned after the job and its initial events commit. */\nexport const EnqueueReleaseAgentJobResponse = Schema.Struct({\n releaseId: ReleaseId,\n jobId: JobId,\n state: Schema.Literal(\"queued\")\n}).annotate({ identifier: \"EnqueueReleaseAgentJobResponse\" })\n\n/** Decoded durable release-agent enqueue response. */\nexport type EnqueueReleaseAgentJobResponse = typeof EnqueueReleaseAgentJobResponse.Type\n\n/** Bounded request to enqueue one immutable read-only pull-request review. */\nexport const EnqueuePullRequestReviewRequest = Schema.Struct({\n providerId: DurableAgentProviderId,\n model: AgentModelId,\n profile: AgentSafeProfile,\n reviewProfileId: ReviewAgentProfileId,\n prompt: Schema.optionalKey(\n DurableAgentPrompt.check(\n Schema.isTrimmed(),\n Schema.isMaxLength(MAXIMUM_REVIEW_THREAD_PROMPT_LENGTH)\n )\n )\n})\n\n/** Decoded immutable pull-request review enqueue request. */\nexport type EnqueuePullRequestReviewRequest = typeof EnqueuePullRequestReviewRequest.Type\n\nconst pullRequestReviewIdentity = {\n subject: PrReviewSubject\n}\n\nconst pullRequestReviewJob = {\n ...pullRequestReviewIdentity,\n jobId: JobId,\n providerId: DurableAgentProviderId,\n model: AgentModelId,\n reviewProfile: ReviewAgentProfile,\n activity: Schema.Struct({\n events: Schema.Array(\n Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH))\n ).check(Schema.isMaxLength(MAXIMUM_THREAD_EVENT_PAGE_SIZE)),\n truncated: Schema.Boolean\n }),\n budgetMillis: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 3_600_000 }))).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(1_200_000)),\n Schema.withConstructorDefault(Effect.succeed(1_200_000))\n ),\n budgetExtensionCount: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 1 }))).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(0)),\n Schema.withConstructorDefault(Effect.succeed(0))\n ),\n startedAt: Schema.optionalKey(Schema.NullOr(UtcTimestamp)).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(null)),\n Schema.withConstructorDefault(Effect.succeed(null))\n ),\n requestedAt: UtcTimestamp\n}\n\n/** Review cannot run for the canonical entity in its current state. */\nexport class PullRequestReviewUnavailable extends Schema.TaggedClass<PullRequestReviewUnavailable>()(\"unavailable\", {\n reason: Schema.Literals([\n \"not-codecommit\",\n \"not-pull-request\",\n \"source-stale\",\n \"release-unavailable\",\n \"base-revision-unavailable\"\n ])\n}) {}\n\n/** No durable review exists yet for this exact immutable subject. */\nexport class PullRequestReviewNotStarted\n extends Schema.TaggedClass<PullRequestReviewNotStarted>()(\"not-started\", pullRequestReviewIdentity)\n{}\n\n/** A prior completed review exists, but its evidence is bound to an older head. */\nexport class PullRequestReviewStale extends Schema.TaggedClass<PullRequestReviewStale>()(\"stale\", {\n ...pullRequestReviewIdentity,\n previousHead: PrReviewSubject.fields.headRevision,\n previousJobId: JobId\n}) {}\n\n/** One durable exact-head review is queued or running. */\nexport class PullRequestReviewPending extends Schema.TaggedClass<PullRequestReviewPending>()(\"pending\", {\n ...pullRequestReviewJob,\n state: Schema.Literals([\"queued\", \"running\", \"cancel-requested\"])\n}) {}\n\n/** Sanitized exact-head findings completed without changing human disposition. */\nexport class PullRequestReviewCompleted extends Schema.TaggedClass<PullRequestReviewCompleted>()(\"completed\", {\n ...pullRequestReviewJob,\n completedAt: UtcTimestamp,\n report: PrReviewReport,\n outcome: PrReviewOutcome\n}) {}\n\n/** Durable exact-head review stopped without publishing a recommendation. */\nexport class PullRequestReviewFailed extends Schema.TaggedClass<PullRequestReviewFailed>()(\"failed\", {\n ...pullRequestReviewJob,\n completedAt: UtcTimestamp,\n state: Schema.Literals([\"failed\", \"cancelled\"]),\n report: Schema.optionalKey(Schema.NullOr(PrReviewReport)).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(null)),\n Schema.withConstructorDefault(Effect.succeed(null))\n )\n}) {}\n\n/** Review interrupted by process restart; its partial evidence remains inspectable. */\nexport class PullRequestReviewInterrupted extends Schema.TaggedClass<PullRequestReviewInterrupted>()(\"interrupted\", {\n ...pullRequestReviewJob,\n completedAt: UtcTimestamp,\n report: PrReviewReport\n}) {}\n\n/** Browser-safe current review state for one canonical pull-request entity. */\nexport const PullRequestReviewState = Schema.Union([\n PullRequestReviewUnavailable,\n PullRequestReviewNotStarted,\n PullRequestReviewStale,\n PullRequestReviewPending,\n PullRequestReviewCompleted,\n PullRequestReviewFailed,\n PullRequestReviewInterrupted\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded current pull-request review state. */\nexport type PullRequestReviewState = typeof PullRequestReviewState.Type\n\nconst pullRequestReviewThreadEventFields = {\n eventSequence: ReleaseAgentThreadCursor.check(Schema.isGreaterThan(0)),\n jobId: JobId,\n occurredAt: UtcTimestamp\n}\n\nconst PullRequestReviewOperatorMessageEvent = Schema.TaggedStruct(\"operator-message\", {\n ...pullRequestReviewThreadEventFields,\n prompt: DurableAgentPrompt.check(\n Schema.isMaxLength(MAXIMUM_REVIEW_THREAD_PROMPT_LENGTH)\n )\n})\n\nconst PullRequestReviewRunQueuedEvent = Schema.TaggedStruct(\"run-queued\", {\n ...pullRequestReviewThreadEventFields,\n providerId: DurableAgentProviderId,\n model: Schema.NullOr(AgentModelId),\n reviewProfile: ReviewAgentProfile,\n subject: PrReviewSubject\n})\n\nconst PullRequestReviewRunStartedEvent = Schema.TaggedStruct(\n \"run-started\",\n {\n ...pullRequestReviewThreadEventFields,\n runtimeMetadata: Schema.optionalKey(AgentRuntimeMetadata)\n }\n)\n\nconst PullRequestReviewProgressEvent = Schema.TaggedStruct(\"progress\", {\n ...pullRequestReviewThreadEventFields,\n text: Schema.String.check(\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH)\n )\n})\n\nconst PullRequestReviewUsageEvent = Schema.TaggedStruct(\"usage\", {\n ...pullRequestReviewThreadEventFields,\n inputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n outputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n})\n\nconst PullRequestReviewReportEvent = Schema.TaggedStruct(\"review-report\", {\n ...pullRequestReviewThreadEventFields,\n report: PrReviewReport\n})\n\nconst PullRequestReviewSuggestionRevisedEvent = Schema.TaggedStruct(\n \"suggestion-revised\",\n {\n ...pullRequestReviewThreadEventFields,\n suggestionId: PrReviewSuggestionId,\n revisionId: PrReviewSuggestionRevisionId,\n sequence: PrReviewSuggestionRevisionSequence,\n authorKind: Schema.Literals([\"operator\", \"agent\"]),\n validationState: Schema.Literals([\"validated\", \"requires-revalidation\"]),\n suggestionState: Schema.optionalKey(PrReviewSuggestion.fields.state)\n }\n)\n\nconst PullRequestReviewSuggestionPublishedEvent = Schema.TaggedStruct(\n \"suggestion-published\",\n {\n ...pullRequestReviewThreadEventFields,\n suggestionId: PrReviewSuggestionId,\n revisionId: PrReviewSuggestionRevisionId\n }\n)\n\nconst PullRequestReviewRunCompletedEvent = Schema.TaggedStruct(\"run-completed\", {\n ...pullRequestReviewThreadEventFields,\n outcome: Schema.Literals([\"success\", \"cancelled\", \"max-steps\"])\n})\n\nconst PullRequestReviewRunFailedEvent = Schema.TaggedStruct(\"run-failed\", {\n ...pullRequestReviewThreadEventFields,\n retryable: Schema.Boolean\n})\n\nconst PullRequestReviewRunInterruptedEvent = Schema.TaggedStruct(\"run-interrupted\", {\n ...pullRequestReviewThreadEventFields\n})\n\nconst PullRequestReviewCancellationRequestedEvent = Schema.TaggedStruct(\n \"cancellation-requested\",\n {\n ...pullRequestReviewThreadEventFields,\n requestedAt: UtcTimestamp\n }\n)\n\n/** Browser-safe immutable activity in one stable pull-request review thread. */\nexport const PullRequestReviewThreadEvent = Schema.Union([\n PullRequestReviewOperatorMessageEvent,\n PullRequestReviewRunQueuedEvent,\n PullRequestReviewRunStartedEvent,\n PullRequestReviewProgressEvent,\n PullRequestReviewUsageEvent,\n PullRequestReviewReportEvent,\n PullRequestReviewSuggestionRevisedEvent,\n PullRequestReviewSuggestionPublishedEvent,\n PullRequestReviewRunCompletedEvent,\n PullRequestReviewRunFailedEvent,\n PullRequestReviewRunInterruptedEvent,\n PullRequestReviewCancellationRequestedEvent\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\nexport type PullRequestReviewThreadEvent = typeof PullRequestReviewThreadEvent.Type\n\n/**\n * One explicit cursor page from the stable pull-request review thread.\n * `hasMore` follows the requested cursor direction; `hasEarlier` reports a truncated tail.\n */\nexport const PullRequestReviewThreadPage = Schema.Struct({\n events: Schema.Array(PullRequestReviewThreadEvent).check(\n Schema.isMaxLength(MAXIMUM_THREAD_EVENT_PAGE_SIZE)\n ),\n hasEarlier: Schema.Boolean.pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(false)),\n Schema.withConstructorDefault(Effect.succeed(false))\n ),\n hasMore: Schema.Boolean,\n nextCursor: ReleaseAgentThreadCursor\n})\nexport type PullRequestReviewThreadPage = typeof PullRequestReviewThreadPage.Type\n\n/** Accepted durable review job, including idempotent recovery of active work. */\nexport const EnqueuePullRequestReviewResponse = PullRequestReviewPending\n\n/** Decoded accepted durable review job. */\nexport type EnqueuePullRequestReviewResponse = typeof EnqueuePullRequestReviewResponse.Type\n\n/** Complete compare-and-append payload for one manually edited suggestion. */\nexport const EditReviewSuggestionRequest = Schema.Struct({\n expectedRevisionId: PrReviewSuggestionRevisionId,\n expectedSequence: PrReviewSuggestionRevisionSequence,\n edit: PrReviewSuggestionEdit\n})\n\n/** Decoded manual suggestion edit. */\nexport type EditReviewSuggestionRequest = typeof EditReviewSuggestionRequest.Type\n\n/** Durable targeted agent operation over one optimistic suggestion revision. */\nexport const TargetReviewSuggestionRequest = Schema.Struct({\n providerId: DurableAgentProviderId,\n model: AgentModelId,\n profile: AgentSafeProfile,\n reviewProfileId: ReviewAgentProfileId,\n intent: Schema.Literals([\"suggestion-edit\", \"suggestion-revalidation\"]),\n expectedRevisionId: PrReviewSuggestionRevisionId,\n expectedSequence: PrReviewSuggestionRevisionSequence,\n prompt: Schema.optionalKey(\n DurableAgentPrompt.check(Schema.isTrimmed(), Schema.isMaxLength(MAXIMUM_REVIEW_THREAD_PROMPT_LENGTH))\n )\n})\n\n/** Decoded targeted agent operation request. */\nexport type TargetReviewSuggestionRequest = typeof TargetReviewSuggestionRequest.Type\n\n/** Accepted targeted review job. */\nexport const TargetReviewSuggestionResponse = PullRequestReviewPending\n\n/** Decoded targeted review job response. */\nexport type TargetReviewSuggestionResponse = typeof TargetReviewSuggestionResponse.Type\n\n/** Browser-safe immutable suggestion revision returned after an edit. */\nexport const EditReviewSuggestionResponse = PrReviewSuggestionRevision\n\n/** Decoded manual suggestion-edit result. */\nexport type EditReviewSuggestionResponse = typeof EditReviewSuggestionResponse.Type\n\n/** Optimistic concurrency boundary for one explicit human dismissal. */\nexport const DismissReviewSuggestionRequest = Schema.Struct({\n expectedRevisionId: PrReviewSuggestionRevisionId,\n expectedSequence: PrReviewSuggestionRevisionSequence,\n reason: PrReviewDismissalReason\n})\n\n/** Decoded human dismissal request. */\nexport type DismissReviewSuggestionRequest = typeof DismissReviewSuggestionRequest.Type\n\n/** Durable human-authored revision carrying the dismissed lifecycle state. */\nexport const DismissReviewSuggestionResponse = PrReviewSuggestionRevision\n\n/** Decoded durable dismissal result. */\nexport type DismissReviewSuggestionResponse = typeof DismissReviewSuggestionResponse.Type\n\n/** Canonical positive revision cursor decoded from an HTTP query string. */\nexport const ReviewSuggestionRevisionSequenceFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.decodeTo(PrReviewSuggestionRevisionSequence)\n)\n\n/** Canonical bounded revision page size decoded from an HTTP query string. */\nexport const ReviewSuggestionRevisionPageSizeFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.decodeTo(PrReviewSuggestionRevisionPageSize)\n)\n\n/** Browser-safe bounded revision history. */\nexport const ReviewSuggestionRevisionPage = PrReviewSuggestionRevisionPage\n\n/** Decoded bounded revision history. */\nexport type ReviewSuggestionRevisionPage = typeof ReviewSuggestionRevisionPage.Type\n\n/** Editable CodeCommit comment content bounded by the provider contract. */\nexport const MAXIMUM_REVIEW_SUGGESTION_PUBLICATION_CONTENT_LENGTH = 10_100\n\nexport const ReviewSuggestionPublicationContent = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(MAXIMUM_REVIEW_SUGGESTION_PUBLICATION_CONTENT_LENGTH)\n)\n\n/** Decoded final review-comment content. */\nexport type ReviewSuggestionPublicationContent = typeof ReviewSuggestionPublicationContent.Type\n\n/** Provider comment mutation selected by an explicit local publication preview. */\nexport const ReviewSuggestionPublicationOperation = Schema.Literals([\"create\", \"update\", \"reply\"])\n\n/** Decoded provider comment mutation. */\nexport type ReviewSuggestionPublicationOperation = typeof ReviewSuggestionPublicationOperation.Type\n\n/** Exact completed review suggestion selected for publication. */\nexport const ReviewSuggestionPublicationSelection = Schema.Struct({\n jobId: JobId,\n suggestionId: PrReviewSuggestionId,\n revisionId: PrReviewSuggestionRevisionId\n})\n\n/** Decoded review-suggestion publication selection. */\nexport type ReviewSuggestionPublicationSelection = typeof ReviewSuggestionPublicationSelection.Type\n\n/** Connected AWS principal that will author the CodeCommit comment. */\nexport const AwsReviewPublicationIdentity = Schema.Struct({\n accountId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(64)),\n arn: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(2_048))\n})\n\n/** Decoded browser-safe AWS publication identity. */\nexport type AwsReviewPublicationIdentity = typeof AwsReviewPublicationIdentity.Type\n\n/** Opaque digest binding operator confirmation to one exact provider runtime generation. */\nexport const ReviewSuggestionPublicationAuthorityBinding = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, {\n expected: \"a lowercase SHA-256 runtime authority digest\"\n })\n).pipe(Schema.brand(\"ReviewSuggestionPublicationAuthorityBinding\"))\n\n/** Decoded immutable provider-generation binding. */\nexport type ReviewSuggestionPublicationAuthorityBinding = typeof ReviewSuggestionPublicationAuthorityBinding.Type\n\n/** Read-only preview shown before the operator grants publication authority. */\nexport class ReviewSuggestionPublicationPreview\n extends Schema.Class<ReviewSuggestionPublicationPreview>(\"ReviewSuggestionPublicationPreview\")({\n ...ReviewSuggestionPublicationSelection.fields,\n operation: Schema.optionalKey(ReviewSuggestionPublicationOperation),\n commentId: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n ),\n subject: PrReviewSubject,\n suggestionRevision: Schema.Struct({\n jobId: JobId,\n suggestionId: PrReviewSuggestionId,\n revisionId: PrReviewSuggestionRevisionId,\n sequence: PrReviewSuggestionRevisionSequence,\n reviewedHead: PrReviewSubject.fields.headRevision\n }),\n anchor: PrReviewSuggestion.fields.anchor,\n editableContent: ReviewSuggestionPublicationContent,\n editableContentMaximumLength: Schema.Int.check(Schema.isGreaterThan(0)),\n finalContent: ReviewSuggestionPublicationContent,\n publicationFooter: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(4_096)\n ),\n replacement: Schema.NullOr(\n Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(16_000))\n ),\n connectedIdentity: AwsReviewPublicationIdentity,\n authorityBinding: ReviewSuggestionPublicationAuthorityBinding,\n proposingAgent: ReviewAgentProfile,\n publishingOperator: PersonId\n })\n{}\n\n/** Explicit operator confirmation containing the final editable snapshot. */\nexport const PublishReviewSuggestionRequest = Schema.Struct({\n ...ReviewSuggestionPublicationSelection.fields,\n operation: Schema.optionalKey(ReviewSuggestionPublicationOperation),\n commentId: Schema.optionalKey(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))),\n finalContent: ReviewSuggestionPublicationContent,\n authorityBinding: ReviewSuggestionPublicationAuthorityBinding\n})\n\n/** Decoded explicit review-suggestion publication confirmation. */\nexport type PublishReviewSuggestionRequest = typeof PublishReviewSuggestionRequest.Type\n\n/** Durable local snapshot of one successfully published CodeCommit comment. */\nexport class PublishedReviewComment extends Schema.Class<PublishedReviewComment>(\"PublishedReviewComment\")({\n publicationId: GovernedActionId,\n /** Provider comment targeted by a lifecycle operation, when available. */\n commentId: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n ),\n ...ReviewSuggestionPublicationSelection.fields,\n subject: PrReviewSubject,\n suggestionRevision: ReviewSuggestionPublicationPreview.fields.suggestionRevision,\n anchor: ReviewSuggestionPublicationPreview.fields.anchor,\n content: ReviewSuggestionPublicationContent,\n connectedIdentity: AwsReviewPublicationIdentity,\n proposingAgent: ReviewAgentProfile,\n publishingOperator: PersonId,\n receipt: PluginProviderReceiptV1,\n publishedAt: UtcTimestamp\n}) {}\n\n/** Ordered, bounded release-thread replay page. */\nexport const ReleaseAgentThreadPage = Schema.Struct({\n releaseId: ReleaseId,\n events: Schema.Array(ReleaseAgentThreadEvent).check(\n Schema.makeFilter((events) => events.length <= MAXIMUM_THREAD_EVENT_PAGE_SIZE, {\n expected: `at most ${MAXIMUM_THREAD_EVENT_PAGE_SIZE} release-agent thread events`\n })\n ),\n nextCursor: ReleaseAgentThreadCursor\n}).annotate({ identifier: \"ReleaseAgentThreadPage\" })\n\n/** Decoded ordered durable release-thread replay page. */\nexport type ReleaseAgentThreadPage = typeof ReleaseAgentThreadPage.Type\n\nconst turn = HttpApiEndpoint.post(\"turn\", \"/releases/:releaseId/turns\", {\n params: Schema.Struct({ releaseId: ReleaseId }),\n payload: ReleaseAgentTurnRequest,\n success: ReleaseAgentTurnResponse,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n ConflictApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n PayloadTooLargeApiError,\n ServiceUnavailableApiError\n ]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst enqueueJob = HttpApiEndpoint.post(\"enqueueJob\", \"/releases/:releaseId/jobs\", {\n params: Schema.Struct({ releaseId: ReleaseId }),\n payload: EnqueueReleaseAgentJobRequest,\n success: EnqueueReleaseAgentJobResponse.pipe(HttpApiSchema.status(202)),\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst replayThread = HttpApiEndpoint.get(\"replayThread\", \"/releases/:releaseId/thread/events\", {\n params: Schema.Struct({ releaseId: ReleaseId }),\n query: Schema.Struct({\n after: Schema.optionalKey(ReleaseAgentThreadCursorFromString),\n limit: Schema.optionalKey(ReleaseAgentThreadEventLimitFromString)\n }),\n success: ReleaseAgentThreadPage,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\nconst providers = HttpApiEndpoint.get(\"providers\", \"/providers\", {\n success: AgentProviderCatalog,\n error: [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\nconst pullRequestReview = HttpApiEndpoint.get(\n \"pullRequestReview\",\n \"/pull-requests/:entityId/review\",\n {\n params: Schema.Struct({ entityId: EntityId }),\n success: PullRequestReviewState,\n error: [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n).middleware(SessionCookieAuth)\n\nconst PullRequestReviewThreadQuery = Schema.Struct({\n after: Schema.optionalKey(ReleaseAgentThreadCursorFromString),\n before: Schema.optionalKey(ReleaseAgentThreadCursorFromString),\n limit: Schema.optionalKey(ReleaseAgentThreadEventLimitFromString)\n})\n\nconst pullRequestReviewThread = HttpApiEndpoint.get(\n \"pullRequestReviewThread\",\n \"/pull-requests/:entityId/review-thread/events\",\n {\n params: Schema.Struct({ entityId: EntityId }),\n query: PullRequestReviewThreadQuery,\n success: PullRequestReviewThreadPage,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n).middleware(SessionCookieAuth)\n\nconst enqueuePullRequestReview = HttpApiEndpoint.post(\n \"enqueuePullRequestReview\",\n \"/pull-requests/:entityId/reviews\",\n {\n params: Schema.Struct({ entityId: EntityId }),\n payload: EnqueuePullRequestReviewRequest,\n success: EnqueuePullRequestReviewResponse.pipe(HttpApiSchema.status(202)),\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst cancelPullRequestReview = HttpApiEndpoint.post(\n \"cancelPullRequestReview\",\n \"/pull-requests/:entityId/reviews/:jobId/cancellation\",\n {\n params: Schema.Struct({ entityId: EntityId, jobId: JobId }),\n payload: Schema.Struct({}),\n success: PullRequestReviewState,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst extendPullRequestReviewBudget = HttpApiEndpoint.post(\n \"extendPullRequestReviewBudget\",\n \"/pull-requests/:entityId/reviews/:jobId/budget-extension\",\n {\n params: Schema.Struct({ entityId: EntityId, jobId: JobId }),\n payload: Schema.Struct({}),\n success: PullRequestReviewState,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst reviewSuggestionRevisions = HttpApiEndpoint.get(\n \"reviewSuggestionRevisions\",\n \"/pull-requests/:entityId/reviews/:jobId/suggestions/:suggestionId/revisions\",\n {\n params: Schema.Struct({\n entityId: EntityId,\n jobId: JobId,\n suggestionId: PrReviewSuggestionId\n }),\n query: Schema.Struct({\n before: Schema.optionalKey(ReviewSuggestionRevisionSequenceFromString),\n limit: Schema.optionalKey(ReviewSuggestionRevisionPageSizeFromString)\n }),\n success: ReviewSuggestionRevisionPage,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n).middleware(SessionCookieAuth)\n\nconst editReviewSuggestion = HttpApiEndpoint.post(\n \"editReviewSuggestion\",\n \"/pull-requests/:entityId/reviews/:jobId/suggestions/:suggestionId/revisions\",\n {\n params: Schema.Struct({\n entityId: EntityId,\n jobId: JobId,\n suggestionId: PrReviewSuggestionId\n }),\n payload: EditReviewSuggestionRequest,\n success: EditReviewSuggestionResponse,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n ConflictApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst targetReviewSuggestion = HttpApiEndpoint.post(\n \"targetReviewSuggestion\",\n \"/pull-requests/:entityId/reviews/:jobId/suggestions/:suggestionId/agent\",\n {\n params: Schema.Struct({\n entityId: EntityId,\n jobId: JobId,\n suggestionId: PrReviewSuggestionId\n }),\n payload: TargetReviewSuggestionRequest,\n success: TargetReviewSuggestionResponse.pipe(HttpApiSchema.status(202)),\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n ConflictApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst dismissReviewSuggestion = HttpApiEndpoint.post(\n \"dismissReviewSuggestion\",\n \"/pull-requests/:entityId/reviews/:jobId/suggestions/:suggestionId/dismissal\",\n {\n params: Schema.Struct({\n entityId: EntityId,\n jobId: JobId,\n suggestionId: PrReviewSuggestionId\n }),\n payload: DismissReviewSuggestionRequest,\n success: DismissReviewSuggestionResponse,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n ConflictApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst previewReviewSuggestionPublication = HttpApiEndpoint.get(\n \"previewReviewSuggestionPublication\",\n \"/pull-requests/:entityId/reviews/:jobId/suggestions/:suggestionId/publication-preview\",\n {\n params: Schema.Struct({\n entityId: EntityId,\n jobId: JobId,\n suggestionId: PrReviewSuggestionId\n }),\n query: Schema.Struct({\n revisionId: PrReviewSuggestionRevisionId,\n operation: Schema.optionalKey(ReviewSuggestionPublicationOperation),\n commentId: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512))\n )\n }),\n success: ReviewSuggestionPublicationPreview,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n).middleware(SessionCookieAuth)\n\nconst publishReviewSuggestion = HttpApiEndpoint.post(\n \"publishReviewSuggestion\",\n \"/pull-requests/:entityId/review-comments\",\n {\n params: Schema.Struct({ entityId: EntityId }),\n payload: PublishReviewSuggestionRequest,\n success: PublishedReviewComment,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst submitReleasePublication = HttpApiEndpoint.post(\n \"submitReleasePublication\",\n \"/releases/:releaseId/publications\",\n {\n params: { releaseId: ReleaseId },\n payload: SubmitReleasePublicationRequest,\n success: SubmitReleasePublicationResponse,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n ConflictApiError,\n ServiceUnavailableApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Authenticated release-aware synchronous and durable agent contract. */\nexport class AgentApiGroup extends HttpApiGroup.make(\"agent\")\n .add(providers)\n .add(turn)\n .add(enqueueJob)\n .add(replayThread)\n .add(pullRequestReview)\n .add(pullRequestReviewThread)\n .add(enqueuePullRequestReview)\n .add(cancelPullRequestReview)\n .add(extendPullRequestReviewBudget)\n .add(reviewSuggestionRevisions)\n .add(editReviewSuggestion)\n .add(targetReviewSuggestion)\n .add(dismissReviewSuggestion)\n .add(previewReviewSuggestionPublication)\n .add(publishReviewSuggestion)\n .add(submitReleasePublication)\n .prefix(\"/api/v1/agent\")\n{}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Ct as DeliveryEntityService, Et as DeliveryRelationship, Ft as LedgerRevision, Ln as PersonSourceIdentity, M as GovernedActionState, Ot as EvidenceClaim, Qr as Freshness, Rn as Role, S as RelationshipRepairRationale, St as DeliveryEntityProjection, Tt as DeliveryNode, _t as PortfolioInvalidatedEventV1, b as RelationshipRepairProposal, d as TimelineCursor, f as TimelineEvent, h as TimelinePage, kt as EvidenceItem, l as TimelineActorKind, o as WorkspaceSettingsV1, p as TimelineEventDetail, r as GovernedWorkspaceSettingsSections, v as RelationshipRepairApplication, w as RelationshipRepairReviewDecision, wt as DeliveryEntityStatusGroup, xt as DeliveryEntityKind, y as RelationshipRepairDisposition } from "./workspaceSettings-BE713Oe8.js";
2
- import { $ as SourceRevision, Ct as RelationshipId, Et as ReleaseId, F as PluginDiffInventoryEntryV1, Mt as WorkspaceId, Nt as WorkspaceSettingsMutationId, Q as Revision, Tt as RelationshipRepairReviewId, ct as EventCursor, jt as ShareId, mt as GovernedActionId, nt as UtcTimestamp, ot as EntityId, st as EnvironmentId, tt as VendorImmutableId, ut as EvidenceId, vt as PersonId, wt as RelationshipRepairProposalId, yt as PluginConnectionId } from "./descriptor-CKtTnhef.js";
3
- import { Cn as ServiceUnavailableApiError, Sn as RequestTimedOutApiError, X as CanonicalNonNegativeIntegerFromString, Z as PortfolioApiGroup, Zt as PluginsApiGroup, _n as ForbiddenApiError, bn as PayloadTooLargeApiError, fn as SessionMutationAuth, hn as CorrelationId, ln as SessionApiGroup, mn as ConflictApiError, rt as PortfolioSnapshot, t as AgentApiGroup, un as SessionCookieAuth, vn as InvalidRequestApiError, wn as UnauthorizedApiError, xn as RateLimitedApiError, yn as NotFoundApiError } from "./agent-CyZ40zs1.js";
4
- import { a as PluginPipelineLogPageRequestV1, n as PluginPipelineArtifactRangeRequestV1, o as PluginPipelineLogPageV1 } from "./plugins-D__oMDpI.js";
1
+ import { A as DeliveryNode, B as LedgerRevision, D as DeliveryEntityProjection, E as DeliveryEntityKind, Kn as Freshness, N as EvidenceClaim, O as DeliveryEntityService, P as EvidenceItem, Ri as PersonSourceIdentity, S as RelationshipRepairRationale, Ur as GovernedActionState, b as RelationshipRepairProposal, d as TimelineCursor, f as TimelineEvent, h as TimelinePage, j as DeliveryRelationship, k as DeliveryEntityStatusGroup, ki as PortfolioInvalidatedEventV1, l as TimelineActorKind, o as WorkspaceSettingsV1, p as TimelineEventDetail, r as GovernedWorkspaceSettingsSections, v as RelationshipRepairApplication, w as RelationshipRepairReviewDecision, y as RelationshipRepairDisposition, zi as Role } from "./workspaceSettings-sv8h_h2P.js";
2
+ import { $ as SourceRevision, At as ShareId, Ct as RelationshipRepairProposalId, F as PluginDiffInventoryEntryV1, Mt as WorkspaceSettingsMutationId, Nt as UtcTimestamp, Q as Revision, St as RelationshipId, Tt as ReleaseId, _t as PersonId, at as EntityId, jt as WorkspaceId, lt as EvidenceId, ot as EnvironmentId, pt as GovernedActionId, st as EventCursor, tt as VendorImmutableId, vt as PluginConnectionId, wt as RelationshipRepairReviewId } from "./descriptor-CCvNzSZL.js";
3
+ import { $ as CanonicalNonNegativeIntegerFromString, An as UnauthorizedApiError, Cn as ForbiddenApiError, Dn as RateLimitedApiError, En as PayloadTooLargeApiError, On as RequestTimedOutApiError, Tn as NotFoundApiError, bn as ConflictApiError, en as PluginsApiGroup, et as PortfolioApiGroup, gn as SessionCookieAuth, hn as SessionApiGroup, kn as ServiceUnavailableApiError, ot as PortfolioSnapshot, t as AgentApiGroup, vn as SessionMutationAuth, wn as InvalidRequestApiError, xn as CorrelationId } from "./agent-xQhAQXly.js";
4
+ import { a as PluginPipelineLogPageRequestV1, n as PluginPipelineArtifactRangeRequestV1, o as PluginPipelineLogPageV1 } from "./plugins-DiPrfzV8.js";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Schema from "effect/Schema";
7
7
  import { HttpApi, HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
@@ -121,6 +121,7 @@ var WorkspaceEntityInspection = Schema.Struct({
121
121
  source: SourceRevision,
122
122
  isSourceCurrent: Schema.Boolean,
123
123
  sourceActionsAvailable: Schema.Boolean.pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed(false))),
124
+ sourceSynchronizationAvailable: Schema.Boolean.pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed(false))),
124
125
  freshness: Schema.NullOr(Freshness),
125
126
  clockifyApproval: Schema.NullOr(ClockifyApproval).pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed(null))),
126
127
  graph: WorkspaceEntityGraph,
@@ -700,4 +701,4 @@ var ControlCenterApi = class extends HttpApi.make("ControlCenterApi").add(Sessio
700
701
  //#endregion
701
702
  export { CompleteDiffContentRange as A, RelationshipHistoryInspection as B, LiveEventsApiGroup as C, StreamHeartbeatLiveEvent as D, StreamHeartbeat as E, DiffFileAnchor as F, WorkspaceEntityActivity as G, RelationshipRepairCandidates as H, CreateRelationshipRepairProposalRequest as I, CodePipelineApiGroup as J, WorkspaceEntityGraph as K, DeliveryGraphApiGroup as L, CompleteDiffInventory as M, CompleteDiffInventoryEntry as N, StreamResetRequired as O, DiffApiGroup as P, EvidenceInspection as R, EventCursorFromString as S, PortfolioSnapshotLiveEvent as T, RelationshipRepairProposalDraft as U, RelationshipRepairCandidate as V, ReleaseDeliveryGraphInspection as W, CodePipelineLogReadRequest as X, CodePipelineArtifactReadRequest as Y, MediaApiGroup as _, WorkspaceSettingsEtag as a, SafeMediaContentType as b, workspaceSettingsEtag as c, TimelineExportLimitFromString as d, TimelineExportResponseHeaders as f, SharesApiGroup as g, CreateAuthorizedShareRequest as h, WorkspaceSettingsApiGroup as i, CompleteDiffContentRequest as j, StreamResetRequiredLiveEvent as k, TimelineApiGroup as l, AuthorizedShareSummary as m, UpdateWorkspaceSettingsRequest as n, WorkspaceSettingsReadModel as o, AuthorizedShareResolution as p, WorkspaceEntityInspection as q, WorkspacePresentationReadModel as r, WorkspaceSettingsRevision as s, ControlCenterApi as t, TimelineExportContentType as u, MediaResponseHeaders as v, PortfolioInvalidatedLiveEvent as w, ControlCenterLiveEvent as x, OpaqueMediaId as y, InspectedEntityProjection as z };
702
703
 
703
- //# sourceMappingURL=controlCenterApi-ZUX3Y-LE.js.map
704
+ //# sourceMappingURL=controlCenterApi-DNXK7MT1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlCenterApi-DNXK7MT1.js","names":[],"sources":["../../../src/api/codepipeline.ts","../../../src/api/deliveryGraph.ts","../../../src/api/diff.ts","../../../src/api/liveEvents.ts","../../../src/api/media.ts","../../../src/api/shares.ts","../../../src/api/timeline.ts","../../../src/api/workspaceSettings.ts","../../../src/api/controlCenterApi.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { PluginConnectionId } from \"../domain/identifiers.js\"\nimport {\n PluginPipelineArtifactRangeRequestV1,\n PluginPipelineLogPageRequestV1,\n PluginPipelineLogPageV1\n} from \"../domain/plugins/index.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\n\n/** Workspace-scoped request for one bounded CodePipeline action log page. */\nexport const CodePipelineLogReadRequest = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n request: PluginPipelineLogPageRequestV1\n})\n\n/** Workspace-scoped request for one bounded CodePipeline action artifact range. */\nexport const CodePipelineArtifactReadRequest = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n request: PluginPipelineArtifactRangeRequestV1\n})\n\nconst readErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n ConflictApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst logs = HttpApiEndpoint.post(\"logs\", \"/logs\", {\n payload: CodePipelineLogReadRequest,\n success: PluginPipelineLogPageV1,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst artifactStream = HttpApiSchema.StreamUint8Array({ contentType: \"application/octet-stream\" })\nconst artifact = HttpApiEndpoint.post(\"artifact\", \"/artifact\", {\n payload: CodePipelineArtifactReadRequest,\n success: [\n artifactStream,\n artifactStream.pipe(HttpApiSchema.status(206)),\n artifactStream.pipe(HttpApiSchema.status(416))\n ],\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated workspace-scoped CodePipeline evidence proxy. */\nexport class CodePipelineApiGroup extends HttpApiGroup.make(\"codepipeline\")\n .add(logs)\n .add(artifact)\n .prefix(\"/api/v1/codepipeline\")\n{}\n","import * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PersonSourceIdentity, Role } from \"../domain/actors.js\"\nimport {\n DeliveryEntityKind,\n DeliveryEntityProjection,\n DeliveryEntityService,\n DeliveryEntityStatusGroup,\n DeliveryNode,\n DeliveryRelationship,\n EvidenceClaim,\n EvidenceItem,\n LedgerRevision\n} from \"../domain/deliveryGraph.js\"\nimport { Freshness } from \"../domain/freshness.js\"\nimport { GovernedActionState } from \"../domain/governedAction/index.js\"\nimport {\n EntityId,\n EnvironmentId,\n EvidenceId,\n GovernedActionId,\n PersonId,\n RelationshipId,\n RelationshipRepairProposalId,\n RelationshipRepairReviewId,\n ReleaseId\n} from \"../domain/identifiers.js\"\nimport {\n RelationshipRepairApplication,\n RelationshipRepairDisposition,\n RelationshipRepairProposal,\n RelationshipRepairRationale,\n RelationshipRepairReviewDecision\n} from \"../domain/relationshipRepair.js\"\nimport { Revision, SourceRevision } from \"../domain/sourceRevision.js\"\nimport { TimelineEvent } from \"../domain/timeline.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\nexport const MAXIMUM_RELEASE_SLICE_RECORDS = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_PROJECTIONS = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_RELEASES = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_OWNERS = 20\nexport const MAXIMUM_WORKSPACE_OWNER_OPTIONS = 200\nexport const MAXIMUM_WORKSPACE_OWNER_ROLES = 16\nexport const MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS = 100\nexport const MAXIMUM_WORKSPACE_ENTITY_ACTIVITY = 20\nconst MAXIMUM_RELATIONSHIP_HISTORY = 200\nconst MAXIMUM_EVIDENCE_CLAIMS = 200\nexport const MAXIMUM_REPAIR_PROPOSALS = 128\n\nconst boundedArray = <T, E, RD, RE>(schema: Schema.Codec<T, E, RD, RE>, maximum: number) =>\n Schema.Array(schema).check(Schema.isMaxLength(maximum))\n\n/** One persisted entity projection with its ledger observation time. */\nexport const InspectedEntityProjection = Schema.Struct({\n projection: DeliveryEntityProjection,\n recordedAt: UtcTimestamp\n}).annotate({ identifier: \"InspectedEntityProjection\" })\n\n/** Bounded deterministic graph prefix; `truncated` explicitly reports incomplete material. */\nexport const ReleaseDeliveryGraphInspection = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n truncated: Schema.Boolean,\n nodes: boundedArray(DeliveryNode, MAXIMUM_RELEASE_SLICE_RECORDS),\n entityProjections: boundedArray(InspectedEntityProjection, MAXIMUM_RELEASE_SLICE_RECORDS),\n relationships: boundedArray(DeliveryRelationship, MAXIMUM_RELEASE_SLICE_RECORDS),\n evidenceClaims: boundedArray(EvidenceClaim, MAXIMUM_RELEASE_SLICE_RECORDS),\n evidenceItems: boundedArray(EvidenceItem, MAXIMUM_RELEASE_SLICE_RECORDS)\n}).annotate({ identifier: \"ReleaseDeliveryGraphInspection\" })\n\n/** Decoded release delivery-graph inspection. */\nexport type ReleaseDeliveryGraphInspection = typeof ReleaseDeliveryGraphInspection.Type\n\nconst WorkspaceEntityReleaseIds = Schema.Array(ReleaseId).check(\n Schema.isUnique(),\n Schema.isMaxLength(MAXIMUM_WORKSPACE_ENTITY_RELEASES),\n Schema.makeFilter(\n (releaseIds) =>\n releaseIds.every((releaseId, index) => {\n const previous = releaseIds[index - 1]\n return index === 0 || (previous !== undefined && previous < releaseId)\n }),\n { expected: \"sorted workspace entity release identifiers\" }\n )\n)\n\n/** Compact canonical human identity assigned to one current workspace entity. */\nexport const WorkspaceEntityOwner = Schema.Struct({\n avatarFallback: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4)),\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n personId: PersonId,\n roles: boundedArray(Role, MAXIMUM_WORKSPACE_OWNER_ROLES).check(Schema.isMinLength(1)),\n sourceIdentities: Schema.optionalKey(boundedArray(PersonSourceIdentity, MAXIMUM_WORKSPACE_OWNER_ROLES))\n}).annotate({ identifier: \"WorkspaceEntityOwner\" })\n\n/** Decoded entity owner identity. */\nexport type WorkspaceEntityOwner = typeof WorkspaceEntityOwner.Type\n\nconst WorkspaceEntityOwners = boundedArray(WorkspaceEntityOwner, MAXIMUM_WORKSPACE_ENTITY_OWNERS)\nconst WorkspaceOwnerOptions = boundedArray(WorkspaceEntityOwner, MAXIMUM_WORKSPACE_OWNER_OPTIONS)\n\n/** One current workspace entity projection and every bounded current release membership. */\nexport const WorkspaceEntityProjection = Schema.Struct({\n canonicalReleaseId: Schema.NullOr(ReleaseId),\n owners: WorkspaceEntityOwners,\n ownersTruncated: Schema.Boolean,\n releaseIds: WorkspaceEntityReleaseIds,\n releaseMembershipsTruncated: Schema.Boolean,\n projection: DeliveryEntityProjection,\n recordedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ canonicalReleaseId, releaseIds }) => canonicalReleaseId === (releaseIds[0] ?? null),\n { expected: \"canonical release identifier to be the first current release membership\" }\n ),\n Schema.makeFilter(\n ({ releaseIds, releaseMembershipsTruncated }) =>\n !releaseMembershipsTruncated || releaseIds.length === MAXIMUM_WORKSPACE_ENTITY_RELEASES,\n { expected: \"truncated workspace release memberships to contain the complete bounded prefix\" }\n ),\n Schema.makeFilter(\n ({ owners, ownersTruncated }) => !ownersTruncated || owners.length === MAXIMUM_WORKSPACE_ENTITY_OWNERS,\n { expected: \"truncated workspace owners to contain the complete bounded prefix\" }\n )\n).annotate({ identifier: \"WorkspaceEntityProjection\" })\n\n/** Bounded workspace-wide index of current present normalized entities. */\nexport const WorkspaceEntityProjectionIndex = Schema.Struct({\n matchedCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n ownerOptions: WorkspaceOwnerOptions,\n ownerOptionsTruncated: Schema.Boolean,\n totalCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n truncated: Schema.Boolean,\n items: boundedArray(WorkspaceEntityProjection, MAXIMUM_WORKSPACE_ENTITY_PROJECTIONS)\n}).check(\n Schema.makeFilter(\n ({ ownerOptions, ownerOptionsTruncated }) =>\n !ownerOptionsTruncated || ownerOptions.length === MAXIMUM_WORKSPACE_OWNER_OPTIONS,\n { expected: \"truncated workspace owner options to contain the complete bounded prefix\" }\n )\n).annotate({ identifier: \"WorkspaceEntityProjectionIndex\" })\n\n/** Decoded workspace-wide current entity index. */\nexport type WorkspaceEntityProjectionIndex = typeof WorkspaceEntityProjectionIndex.Type\n\n/** Complete bounded graph closure surrounding one exact normalized entity. */\nexport const WorkspaceEntityGraph = Schema.Struct({\n truncated: Schema.Boolean,\n nodes: boundedArray(DeliveryNode, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2),\n relatedEntityProjections: boundedArray(\n InspectedEntityProjection,\n MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS\n ),\n relationships: boundedArray(DeliveryRelationship, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS),\n evidenceClaims: boundedArray(EvidenceClaim, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2),\n evidenceItems: boundedArray(EvidenceItem, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2)\n}).annotate({ identifier: \"WorkspaceEntityGraph\" })\n\n/** Decoded exact entity graph closure. */\nexport type WorkspaceEntityGraph = typeof WorkspaceEntityGraph.Type\n\n/** Bounded attributable activity for one exact normalized entity. */\nexport const WorkspaceEntityActivity = Schema.Struct({\n truncated: Schema.Boolean,\n events: boundedArray(TimelineEvent, MAXIMUM_WORKSPACE_ENTITY_ACTIVITY)\n}).annotate({ identifier: \"WorkspaceEntityActivity\" })\n\n/** Decoded exact entity activity. */\nexport type WorkspaceEntityActivity = typeof WorkspaceEntityActivity.Type\n\n/** Current revision-scoped Control Center approval for a Clockify entry. */\nexport const ClockifyApproval = Schema.Struct({\n actionId: GovernedActionId,\n decision: Schema.Literals([\"approved\", \"rejected\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000)),\n decidedAt: UtcTimestamp\n}).annotate({ identifier: \"ClockifyApproval\" })\n\n/** Decoded browser-safe Clockify approval projection. */\nexport type ClockifyApproval = typeof ClockifyApproval.Type\n\n/** Canonical provider-neutral full-page read model for one workspace entity. */\nexport const WorkspaceEntityInspection = Schema.Struct({\n entity: WorkspaceEntityProjection,\n source: SourceRevision,\n isSourceCurrent: Schema.Boolean,\n sourceActionsAvailable: Schema.Boolean.pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(false))\n ),\n sourceSynchronizationAvailable: Schema.Boolean.pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(false))\n ),\n freshness: Schema.NullOr(Freshness),\n clockifyApproval: Schema.NullOr(ClockifyApproval).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(null))\n ),\n graph: WorkspaceEntityGraph,\n activity: WorkspaceEntityActivity\n}).annotate({ identifier: \"WorkspaceEntityInspection\" })\n\n/** Decoded canonical workspace entity read model. */\nexport type WorkspaceEntityInspection = typeof WorkspaceEntityInspection.Type\n\n/** Bounded immutable lifecycle history for one relationship, newest first. */\nexport const RelationshipHistoryInspection = Schema.Struct({\n relationshipId: RelationshipId,\n revisions: boundedArray(DeliveryRelationship, MAXIMUM_RELATIONSHIP_HISTORY)\n}).annotate({ identifier: \"RelationshipHistoryInspection\" })\n\n/** Decoded relationship lifecycle history. */\nexport type RelationshipHistoryInspection = typeof RelationshipHistoryInspection.Type\n\n/** One immutable evidence item and every bounded claim attributed to it. */\nexport const EvidenceInspection = Schema.Struct({\n evidence: EvidenceItem,\n claims: boundedArray(EvidenceClaim, MAXIMUM_EVIDENCE_CLAIMS)\n}).annotate({ identifier: \"EvidenceInspection\" })\n\n/** Decoded evidence inspection. */\nexport type EvidenceInspection = typeof EvidenceInspection.Type\n\n/** Read-only repair suggestion derived from one current incomplete relationship. */\nexport const RelationshipRepairCandidate = Schema.Struct({\n relationship: DeliveryRelationship,\n suggestedDisposition: Schema.Literals([\"link\", \"verify\", \"reject\"]),\n explanation: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000)),\n impact: Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId)\n }),\n requiredPermission: Schema.Literal(\"workspace-owner\")\n}).annotate({ identifier: \"RelationshipRepairCandidate\" })\n\n/** Decoded read-only relationship repair suggestion. */\nexport type RelationshipRepairCandidate = typeof RelationshipRepairCandidate.Type\n\n/** Bounded candidate discovery result; discovery never mutates the relationship ledger. */\nexport const RelationshipRepairCandidates = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n truncated: Schema.Boolean,\n candidates: boundedArray(RelationshipRepairCandidate, MAXIMUM_RELEASE_SLICE_RECORDS)\n}).annotate({ identifier: \"RelationshipRepairCandidates\" })\n\n/** Decoded relationship repair candidate discovery result. */\nexport type RelationshipRepairCandidates = typeof RelationshipRepairCandidates.Type\n\n/** Non-mutating proposal input with the optimistic precondition required by a future apply step. */\nexport const RelationshipRepairProposalDraft = Schema.Struct({\n candidate: RelationshipRepairCandidate,\n precondition: Schema.Struct({\n relationshipId: RelationshipId,\n expectedRevision: LedgerRevision\n }),\n proposal: Schema.Struct({\n disposition: Schema.Literals([\"link\", \"verify\", \"reject\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\n })\n}).annotate({ identifier: \"RelationshipRepairProposalDraft\" })\n\n/** Decoded read-only relationship repair proposal draft. */\nexport type RelationshipRepairProposalDraft = typeof RelationshipRepairProposalDraft.Type\n\n/** Idempotent intent for creating a durable proposal from one exact repair candidate. */\nexport const CreateRelationshipRepairProposalRequest = Schema.Struct({\n proposalId: RelationshipRepairProposal.fields.proposalId,\n environmentId: RelationshipRepairProposal.fields.environmentId,\n expectedRevision: RelationshipRepairProposal.fields.expectedRevision,\n disposition: RelationshipRepairDisposition,\n rationale: RelationshipRepairRationale\n}).annotate({ identifier: \"CreateRelationshipRepairProposalRequest\" })\n\n/** Decoded relationship-repair proposal creation request. */\nexport type CreateRelationshipRepairProposalRequest = typeof CreateRelationshipRepairProposalRequest.Type\n\n/** Bounded newest-first proposal page for one release/environment scope. */\nexport const RelationshipRepairProposalList = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n status: Schema.NullOr(RelationshipRepairProposal.fields.status),\n truncated: Schema.Boolean,\n proposals: boundedArray(RelationshipRepairProposal, MAXIMUM_REPAIR_PROPOSALS),\n applications: boundedArray(RelationshipRepairApplication, MAXIMUM_REPAIR_PROPOSALS)\n}).annotate({ identifier: \"RelationshipRepairProposalList\" })\n\n/** Decoded bounded relationship-repair proposal page. */\nexport type RelationshipRepairProposalList = typeof RelationshipRepairProposalList.Type\n\n/** Idempotent immutable review command for one pending proposal. */\nexport const ReviewRelationshipRepairProposalRequest = Schema.Struct({\n reviewId: RelationshipRepairReviewId,\n decision: RelationshipRepairReviewDecision,\n rationale: RelationshipRepairRationale\n}).annotate({ identifier: \"ReviewRelationshipRepairProposalRequest\" })\n\n/** Decoded relationship-repair review request. */\nexport type ReviewRelationshipRepairProposalRequest = typeof ReviewRelationshipRepairProposalRequest.Type\n\n/** Applied proposal together with the immutable relationship revision it appended. */\nexport const ApplyRelationshipRepairProposalResponse = Schema.Struct({\n application: RelationshipRepairApplication,\n relationship: DeliveryRelationship\n}).annotate({ identifier: \"ApplyRelationshipRepairProposalResponse\" })\n\n/** Decoded approved-proposal application response. */\nexport type ApplyRelationshipRepairProposalResponse = typeof ApplyRelationshipRepairProposalResponse.Type\n\nconst readErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst releaseSlice = HttpApiEndpoint.get(\"releaseSlice\", \"/api/v1/relationships/releases/:releaseId\", {\n params: { releaseId: ReleaseId },\n query: { environmentId: Schema.optionalKey(EnvironmentId) },\n success: ReleaseDeliveryGraphInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst workspaceEntityProjections = HttpApiEndpoint.get(\n \"workspaceEntityProjections\",\n \"/api/v1/items\",\n {\n query: {\n q: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))\n ),\n owner: Schema.optionalKey(PersonId),\n service: Schema.optionalKey(DeliveryEntityService),\n status: Schema.optionalKey(DeliveryEntityStatusGroup),\n type: Schema.optionalKey(DeliveryEntityKind)\n },\n success: WorkspaceEntityProjectionIndex,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst workspaceEntity = HttpApiEndpoint.get(\"workspaceEntity\", \"/api/v1/items/:entityId\", {\n params: { entityId: EntityId },\n success: WorkspaceEntityInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Human-confirmed governed action against one exact Clockify source revision. */\nexport const SubmitClockifyActionRequest = Schema.TaggedUnion({\n \"correct-association\": {\n expectedRevision: Revision,\n jiraIssueKey: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isPattern(/^[A-Z][A-Z0-9]*-[1-9][0-9]*$/u),\n Schema.isMaxLength(100)\n )\n },\n \"record-approval\": {\n expectedRevision: Revision,\n decision: Schema.Literals([\"approved\", \"rejected\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\n }\n})\nexport type SubmitClockifyActionRequest = typeof SubmitClockifyActionRequest.Type\n\n/** Durable identity and resulting lifecycle state of a submitted Clockify action. */\nexport const SubmitClockifyActionResponse = Schema.Struct({\n actionId: GovernedActionId,\n state: GovernedActionState\n})\nexport type SubmitClockifyActionResponse = typeof SubmitClockifyActionResponse.Type\n\nconst submitClockifyAction = HttpApiEndpoint.post(\n \"submitClockifyAction\",\n \"/api/v1/items/:entityId/clockify-actions\",\n {\n params: { entityId: EntityId },\n payload: SubmitClockifyActionRequest,\n success: SubmitClockifyActionResponse,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst relationship = HttpApiEndpoint.get(\"relationship\", \"/api/v1/relationships/:relationshipId\", {\n params: { relationshipId: RelationshipId },\n query: {\n revision: Schema.optionalKey(CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision)))\n },\n success: DeliveryRelationship,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst repairCandidates = HttpApiEndpoint.get(\n \"repairCandidates\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates\",\n {\n params: { releaseId: ReleaseId },\n query: { environmentId: Schema.optionalKey(EnvironmentId) },\n success: RelationshipRepairCandidates,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst repairProposalDraft = HttpApiEndpoint.get(\n \"repairProposalDraft\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposal-draft\",\n {\n params: { releaseId: ReleaseId, relationshipId: RelationshipId },\n query: {\n environmentId: Schema.optionalKey(EnvironmentId),\n revision: CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision))\n },\n success: RelationshipRepairProposalDraft,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst createRepairProposal = HttpApiEndpoint.post(\n \"createRepairProposal\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposals\",\n {\n params: { releaseId: ReleaseId, relationshipId: RelationshipId },\n payload: CreateRelationshipRepairProposalRequest,\n success: RelationshipRepairProposal,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError,\n PayloadTooLargeApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst listRepairProposals = HttpApiEndpoint.get(\n \"listRepairProposals\",\n \"/api/v1/relationships/releases/:releaseId/repair-proposals\",\n {\n params: { releaseId: ReleaseId },\n query: {\n environmentId: Schema.optionalKey(EnvironmentId),\n status: Schema.optionalKey(RelationshipRepairProposal.fields.status)\n },\n success: RelationshipRepairProposalList,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst getRepairProposal = HttpApiEndpoint.get(\n \"getRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n success: RelationshipRepairProposal,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst reviewRepairProposal = HttpApiEndpoint.post(\n \"reviewRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId/reviews\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n payload: ReviewRelationshipRepairProposalRequest,\n success: RelationshipRepairProposal,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError,\n PayloadTooLargeApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst applyRepairProposal = HttpApiEndpoint.post(\n \"applyRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId/applications\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n success: ApplyRelationshipRepairProposalResponse,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst relationshipHistory = HttpApiEndpoint.get(\n \"relationshipHistory\",\n \"/api/v1/relationships/:relationshipId/history\",\n {\n params: { relationshipId: RelationshipId },\n success: RelationshipHistoryInspection,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst evidence = HttpApiEndpoint.get(\"evidence\", \"/api/v1/evidence/:evidenceId\", {\n params: { evidenceId: EvidenceId },\n success: EvidenceInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-safe delivery relationship and evidence inspection. */\nexport class DeliveryGraphApiGroup extends HttpApiGroup.make(\"deliveryGraph\")\n .add(\n workspaceEntityProjections,\n workspaceEntity,\n submitClockifyAction,\n releaseSlice,\n repairCandidates,\n repairProposalDraft,\n createRepairProposal,\n listRepairProposals,\n getRepairProposal,\n reviewRepairProposal,\n applyRepairProposal,\n relationship,\n relationshipHistory,\n evidence\n )\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PluginConnectionId } from \"../domain/identifiers.js\"\nimport { PluginDiffInventoryEntryV1 } from \"../domain/plugins/events.js\"\nimport { Revision, VendorImmutableId } from \"../domain/sourceRevision.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\n\nconst MaximumCompleteDiffFiles = 500\n\n/** Lowercase SHA-256 digest of canonical exact-revision diff-file identity. */\nexport const DiffFileAnchor = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, { expected: \"a lowercase SHA-256 diff-file anchor\" })\n).pipe(Schema.brand(\"DiffFileAnchor\"))\n\n/** Decoded stable diff-file anchor. */\nexport type DiffFileAnchor = typeof DiffFileAnchor.Type\n\n/** One file from a completely indexed immutable pull-request revision. */\nexport const CompleteDiffInventoryEntry = Schema.Struct({\n ...PluginDiffInventoryEntryV1.fields,\n anchor: DiffFileAnchor\n}).annotate({ identifier: \"CompleteDiffInventoryEntry\" })\n\n/** Decoded complete-inventory entry. */\nexport type CompleteDiffInventoryEntry = typeof CompleteDiffInventoryEntry.Type\n\n/** Complete bounded inventory; `ready` is emitted only after pagination ends. */\nexport const CompleteDiffInventory = Schema.Struct({\n entries: Schema.Array(CompleteDiffInventoryEntry).check(\n Schema.makeFilter((entries) => entries.length <= MaximumCompleteDiffFiles, {\n expected: `at most ${MaximumCompleteDiffFiles} changed files`\n })\n ),\n ready: Schema.Literal(true)\n}).annotate({ identifier: \"CompleteDiffInventory\" })\n\n/** Decoded complete immutable inventory. */\nexport type CompleteDiffInventory = typeof CompleteDiffInventory.Type\n\nconst BoundedOffset = Schema.Int.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(0)),\n Schema.check(Schema.isLessThanOrEqualTo(1_048_576))\n)\nconst BoundedLength = Schema.Int.pipe(\n Schema.check(Schema.isBetween({ minimum: 1, maximum: 1_048_576 }))\n)\nconst DiffPath = PluginDiffInventoryEntryV1.fields.path\n\n/** Browser-safe lazy content result for one immutable side and range. */\nexport const CompleteDiffContentRange = Schema.Struct({\n bytesBase64: Schema.NullOr(Schema.String.check(Schema.isMaxLength(1_398_104))),\n totalBytes: Schema.NullOr(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n unavailableReason: Schema.NullOr(\n Schema.Literals([\"binary\", \"generated\", \"oversized\", \"missing\", \"provider-unavailable\"])\n )\n})\n .check(\n Schema.makeFilter(\n ({ bytesBase64, totalBytes, unavailableReason }) =>\n unavailableReason === null ? bytesBase64 !== null && totalBytes !== null : bytesBase64 === null,\n { expected: \"available bounded content or an explicit unavailable reason\" }\n )\n )\n .annotate({ identifier: \"CompleteDiffContentRange\" })\n\n/** Decoded lazy content response. */\nexport type CompleteDiffContentRange = typeof CompleteDiffContentRange.Type\n\nconst diffReadErrors = [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n ConflictApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst inventory = HttpApiEndpoint.get(\"inventory\", \"/:pluginConnectionId/pull-requests/:vendorImmutableId/inventory\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId, vendorImmutableId: VendorImmutableId }),\n query: Schema.Struct({ revision: Revision }),\n success: CompleteDiffInventory,\n error: diffReadErrors\n}).middleware(SessionCookieAuth)\n\nexport const CompleteDiffContentRequest = Schema.Struct({\n revision: Revision,\n anchor: DiffFileAnchor,\n path: DiffPath,\n previousPath: Schema.NullOr(DiffPath),\n status: PluginDiffInventoryEntryV1.fields.status,\n side: Schema.Literals([\"before\", \"after\"]),\n offset: BoundedOffset,\n length: BoundedLength\n}).annotate({ identifier: \"CompleteDiffContentRequest\" })\n\n/** Decoded bounded content-read payload. */\nexport type CompleteDiffContentRequest = typeof CompleteDiffContentRequest.Type\n\nconst content = HttpApiEndpoint.post(\"content\", \"/:pluginConnectionId/pull-requests/:vendorImmutableId/content\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId, vendorImmutableId: VendorImmutableId }),\n payload: CompleteDiffContentRequest,\n success: CompleteDiffContentRange,\n error: [...diffReadErrors, PayloadTooLargeApiError]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-scoped, bounded complete-diff reads. */\nexport class DiffApiGroup extends HttpApiGroup.make(\"diff\").add(inventory).add(content).prefix(\"/api/v1/diffs\") {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { PortfolioInvalidatedEventV1 } from \"../domain/domainEvent.js\"\nimport { EventCursor } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ForbiddenApiError,\n InvalidRequestApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { PortfolioSnapshot } from \"./portfolio.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\n/** URL/header representation of a nonnegative workspace event cursor. */\nexport const EventCursorFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(EventCursor))\n\n/** Replay boundary telling a client to replace local state with an authoritative snapshot. */\nexport const StreamResetRequired = Schema.Struct({\n reason: Schema.Literals([\"retention\", \"cursor-ahead\", \"gap\", \"replay-budget\"]),\n requestedCursor: EventCursor,\n headCursor: EventCursor,\n prunedThroughCursor: EventCursor\n}).annotate({ identifier: \"StreamResetRequired\" })\n\n/** Decoded reset instruction carried by the live event stream. */\nexport type StreamResetRequired = typeof StreamResetRequired.Type\n\n/** Keepalive payload that reports the latest durable cursor without advancing EventSource state. */\nexport const StreamHeartbeat = Schema.Struct({\n eventCursor: EventCursor,\n sentAt: UtcTimestamp\n}).annotate({ identifier: \"StreamHeartbeat\" })\n\n/** Decoded keepalive payload carried by the live event stream. */\nexport type StreamHeartbeat = typeof StreamHeartbeat.Type\n\n/** Authoritative portfolio replacement emitted first and after replay reset. */\nexport const PortfolioSnapshotLiveEvent = Schema.Struct({\n id: EventCursorFromString,\n event: Schema.Literal(\"portfolio.snapshot\"),\n data: Schema.fromJsonString(PortfolioSnapshot)\n}).annotate({ identifier: \"PortfolioSnapshotLiveEvent\" })\n\n/** Decoded authoritative portfolio stream event. */\nexport type PortfolioSnapshotLiveEvent = typeof PortfolioSnapshotLiveEvent.Type\n\n/** Durable notification that a browser should refresh its portfolio projection. */\nexport const PortfolioInvalidatedLiveEvent = Schema.Struct({\n id: EventCursorFromString,\n event: Schema.Literal(\"portfolio.invalidated\"),\n data: Schema.fromJsonString(PortfolioInvalidatedEventV1)\n}).annotate({ identifier: \"PortfolioInvalidatedLiveEvent\" })\n\n/** Decoded portfolio invalidation stream event. */\nexport type PortfolioInvalidatedLiveEvent = typeof PortfolioInvalidatedLiveEvent.Type\n\n/** Replay-gap instruction; it deliberately has no SSE ID so it cannot advance resume state. */\nexport const StreamResetRequiredLiveEvent = Schema.Struct({\n id: Schema.optionalKey(Schema.Undefined),\n event: Schema.Literal(\"stream.reset-required\"),\n data: Schema.fromJsonString(StreamResetRequired)\n}).annotate({ identifier: \"StreamResetRequiredLiveEvent\" })\n\n/** Decoded replay-gap stream event. */\nexport type StreamResetRequiredLiveEvent = typeof StreamResetRequiredLiveEvent.Type\n\n/** Keepalive event; it deliberately has no SSE ID so it cannot advance resume state. */\nexport const StreamHeartbeatLiveEvent = Schema.Struct({\n id: Schema.optionalKey(Schema.Undefined),\n event: Schema.Literal(\"stream.heartbeat\"),\n data: Schema.fromJsonString(StreamHeartbeat)\n}).annotate({ identifier: \"StreamHeartbeatLiveEvent\" })\n\n/** Decoded keepalive stream event. */\nexport type StreamHeartbeatLiveEvent = typeof StreamHeartbeatLiveEvent.Type\n\n/** Closed browser-safe union emitted by the authenticated live event stream. */\nexport const ControlCenterLiveEvent = Schema.Union([\n PortfolioSnapshotLiveEvent,\n PortfolioInvalidatedLiveEvent,\n StreamResetRequiredLiveEvent,\n StreamHeartbeatLiveEvent\n]).annotate({ identifier: \"ControlCenterLiveEvent\" })\n\n/** Decoded browser-safe live event. */\nexport type ControlCenterLiveEvent = typeof ControlCenterLiveEvent.Type\n\nconst stream = HttpApiEndpoint.get(\"stream\", \"/api/v1/events\", {\n query: {\n after: Schema.optionalKey(EventCursorFromString)\n },\n headers: {\n \"last-event-id\": Schema.optionalKey(EventCursorFromString)\n },\n success: HttpApiSchema.StreamSse({ events: ControlCenterLiveEvent }),\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated resumable stream of workspace-local Control Center events. */\nexport class LiveEventsApiGroup extends HttpApiGroup.make(\"liveEvents\").add(stream) {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport {\n CorrelationId,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\n/** Workspace-scoped opaque media reference that reveals neither provider URLs nor local storage keys. */\nexport const OpaqueMediaId = Schema.String.check(\n Schema.isPattern(/^media_[0-9a-f]{64}$/u, { expected: \"an opaque SHA-256 media identifier\" })\n).pipe(Schema.brand(\"OpaqueMediaId\"))\n\n/** Decoded opaque media identifier. */\nexport type OpaqueMediaId = typeof OpaqueMediaId.Type\n\n/** Closed set of inert raster formats accepted at the authenticated media boundary. */\nexport const SafeMediaContentType = Schema.Literals([\n \"image/avif\",\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\"\n])\n\n/** Decoded safe raster media content type. */\nexport type SafeMediaContentType = typeof SafeMediaContentType.Type\n\n/** Security and metadata headers required on authenticated opaque media responses. */\nexport const MediaResponseHeaders = Schema.Struct({\n \"x-correlation-id\": CorrelationId,\n \"content-type\": SafeMediaContentType,\n \"content-length\": CanonicalNonNegativeIntegerFromString,\n \"cache-control\": Schema.Literal(\"private, no-store\"),\n \"x-content-type-options\": Schema.Literal(\"nosniff\")\n}).annotate({ identifier: \"MediaResponseHeaders\" })\n\n/** Decoded opaque media response headers. */\nexport type MediaResponseHeaders = typeof MediaResponseHeaders.Type\n\nconst read = HttpApiEndpoint.get(\"read\", \"/:mediaId\", {\n params: Schema.Struct({ mediaId: OpaqueMediaId }),\n success: HttpApiSchema.StreamUint8Array({ contentType: \"application/octet-stream\" }),\n error: [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-resolved opaque media contract. */\nexport class MediaApiGroup extends HttpApiGroup.make(\"media\").add(read).prefix(\"/api/v1/media\") {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { EntityId, PersonId, ShareId, WorkspaceId } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport { InspectedEntityProjection } from \"./deliveryGraph.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\n\n/** Owner-authored intent for one exact entity share grant. */\nexport const CreateAuthorizedShareRequest = Schema.Struct({\n shareId: ShareId,\n entityId: EntityId,\n granteePersonId: PersonId,\n expiresAt: UtcTimestamp\n})\n\n/** Decoded authorized-share creation request. */\nexport type CreateAuthorizedShareRequest = typeof CreateAuthorizedShareRequest.Type\n\n/** Secret-free grant metadata returned to authenticated callers. */\nexport const AuthorizedShareSummary = Schema.Struct({\n shareId: ShareId,\n entityId: EntityId,\n granteePersonId: PersonId,\n createdAt: UtcTimestamp,\n expiresAt: UtcTimestamp,\n revokedAt: Schema.NullOr(UtcTimestamp)\n}).annotate({ identifier: \"AuthorizedShareSummary\" })\n\n/** Decoded secret-free authorized-share metadata. */\nexport type AuthorizedShareSummary = typeof AuthorizedShareSummary.Type\n\n/** Exact current entity projection resolved without relationships or release context. */\nexport const AuthorizedShareResolution = Schema.Struct({\n share: AuthorizedShareSummary,\n item: InspectedEntityProjection\n}).annotate({ identifier: \"AuthorizedShareResolution\" })\n\n/** Decoded authorized-share resolution. */\nexport type AuthorizedShareResolution = typeof AuthorizedShareResolution.Type\n\nconst authenticatedErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst create = HttpApiEndpoint.post(\"create\", \"/\", {\n payload: CreateAuthorizedShareRequest,\n success: AuthorizedShareSummary,\n error: [...authenticatedErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst resolve = HttpApiEndpoint.get(\"resolve\", \"/:workspaceId/:shareId\", {\n params: Schema.Struct({ workspaceId: WorkspaceId, shareId: ShareId }),\n success: AuthorizedShareResolution,\n error: [...authenticatedErrors, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst revoke = HttpApiEndpoint.delete(\"revoke\", \"/:workspaceId/:shareId\", {\n params: Schema.Struct({ workspaceId: WorkspaceId, shareId: ShareId }),\n success: HttpApiSchema.NoContent,\n error: [...authenticatedErrors, NotFoundApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Exact-scope authenticated entity-share contract. */\nexport class SharesApiGroup extends HttpApiGroup.make(\"shares\")\n .add(create, resolve, revoke)\n .prefix(\"/api/v1/shares\")\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { TimelineActorKind, TimelineCursor, TimelineEventDetail, TimelinePage } from \"../domain/timeline.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\nconst TimelinePageSizeFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(100))\n)\n\n/** Hard caller-selected event bound for one Timeline download. */\nexport const TimelineExportLimitFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(1_000))\n)\n\n/** Content types emitted by the bounded Timeline download endpoints. */\nexport const TimelineExportContentType = Schema.Literals([\n \"application/json; charset=utf-8\",\n \"text/csv; charset=utf-8\"\n])\n\n/** Security, download, and truncation headers on a Timeline export response. */\nexport const TimelineExportResponseHeaders = Schema.Struct({\n \"cache-control\": Schema.Literal(\"private, no-store\"),\n \"content-disposition\": Schema.Literals([\n \"attachment; filename=\\\"timeline-export.csv\\\"\",\n \"attachment; filename=\\\"timeline-export.json\\\"\"\n ]),\n \"content-type\": TimelineExportContentType,\n \"x-content-type-options\": Schema.Literal(\"nosniff\"),\n \"x-timeline-export-count\": CanonicalNonNegativeIntegerFromString,\n \"x-timeline-export-limit\": TimelineExportLimitFromString,\n \"x-timeline-export-truncated\": Schema.Literals([\"false\", \"true\"])\n}).annotate({ identifier: \"TimelineExportResponseHeaders\" })\n\nconst exportQuery = {\n actor: Schema.optionalKey(TimelineActorKind),\n from: Schema.optionalKey(UtcTimestamp),\n limit: TimelineExportLimitFromString,\n to: Schema.optionalKey(UtcTimestamp)\n}\n\nconst timelineErrors: readonly [\n typeof InvalidRequestApiError,\n typeof UnauthorizedApiError,\n typeof ForbiddenApiError,\n typeof RequestTimedOutApiError,\n typeof ServiceUnavailableApiError\n] = [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst page = HttpApiEndpoint.get(\"page\", \"/api/v1/timeline\", {\n query: {\n actor: Schema.optionalKey(TimelineActorKind),\n beforeEventKey: Schema.optionalKey(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(1_024))),\n beforeOccurredAt: Schema.optionalKey(UtcTimestamp),\n from: Schema.optionalKey(UtcTimestamp),\n limit: Schema.optionalKey(TimelinePageSizeFromString),\n to: Schema.optionalKey(UtcTimestamp)\n },\n success: TimelinePage,\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\nconst detail = HttpApiEndpoint.get(\"detail\", \"/api/v1/timeline/events/:eventKey\", {\n params: { eventKey: TimelineCursor.fields.eventKey },\n success: TimelineEventDetail,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\nconst exportCsv = HttpApiEndpoint.get(\"exportCsv\", \"/api/v1/timeline/export.csv\", {\n query: exportQuery,\n success: HttpApiSchema.StreamUint8Array({ contentType: \"text/csv; charset=utf-8\" }),\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\nconst exportJson = HttpApiEndpoint.get(\"exportJson\", \"/api/v1/timeline/export.json\", {\n query: exportQuery,\n success: HttpApiSchema.StreamUint8Array({ contentType: \"application/json; charset=utf-8\" }),\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-scoped durable activity Timeline. */\nexport class TimelineApiGroup extends HttpApiGroup.make(\"timeline\")\n .add(page)\n .add(detail)\n .add(exportCsv)\n .add(exportJson)\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PersonId, WorkspaceId, WorkspaceSettingsMutationId } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport { GovernedWorkspaceSettingsSections, WorkspaceSettingsV1 } from \"../domain/workspaceSettings.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\n\n/** Positive optimistic-concurrency revision of the workspace settings aggregate. */\nexport const WorkspaceSettingsRevision = Schema.Int.check(\n Schema.isGreaterThan(0)\n).pipe(Schema.brand(\"WorkspaceSettingsRevision\"))\n\n/** Decoded workspace-settings revision. */\nexport type WorkspaceSettingsRevision = typeof WorkspaceSettingsRevision.Type\n\n/** Strong browser-visible validator for one exact settings revision. */\nexport const WorkspaceSettingsEtag = Schema.String.check(\n Schema.isPattern(/^\"workspace-settings-v1-[1-9][0-9]*\"$/u, {\n expected: \"a strong version-one workspace-settings ETag\"\n })\n).pipe(Schema.brand(\"WorkspaceSettingsEtag\"))\n\n/** Decoded workspace-settings ETag. */\nexport type WorkspaceSettingsEtag = typeof WorkspaceSettingsEtag.Type\n\n/** Construct the strong validator returned with one settings revision. */\nexport const workspaceSettingsEtag = (\n revision: WorkspaceSettingsRevision\n): WorkspaceSettingsEtag => WorkspaceSettingsEtag.make(`\"workspace-settings-v1-${String(revision)}\"`)\n\n/** Server-authoritative settings document returned to authenticated workspace sessions. */\nexport const WorkspaceSettingsReadModel = Schema.Struct({\n workspaceId: WorkspaceId,\n revision: WorkspaceSettingsRevision,\n etag: WorkspaceSettingsEtag,\n settings: WorkspaceSettingsV1,\n createdAt: UtcTimestamp,\n updatedAt: UtcTimestamp,\n updatedByPersonId: Schema.NullOr(PersonId)\n}).annotate({ identifier: \"WorkspaceSettingsReadModel\" })\n\n/** Decoded workspace-settings read model. */\nexport type WorkspaceSettingsReadModel = typeof WorkspaceSettingsReadModel.Type\n\n/** Safe workspace presentation defaults shared with every authenticated collaborator. */\nexport const WorkspacePresentationReadModel = Schema.Struct({\n workspaceId: WorkspaceId,\n revision: WorkspaceSettingsRevision,\n presentation: WorkspaceSettingsV1.fields.presentation\n}).annotate({ identifier: \"WorkspacePresentationReadModel\" })\n\n/** Decoded collaborator-safe workspace presentation projection. */\nexport type WorkspacePresentationReadModel = typeof WorkspacePresentationReadModel.Type\n\n/** Complete compare-and-swap replacement of one workspace settings document. */\nexport const UpdateWorkspaceSettingsRequest = Schema.Struct({\n mutationId: WorkspaceSettingsMutationId,\n expectedRevision: WorkspaceSettingsRevision,\n settings: WorkspaceSettingsV1,\n acknowledgedGovernedSections: GovernedWorkspaceSettingsSections\n}).annotate({ identifier: \"UpdateWorkspaceSettingsRequest\" })\n\n/** Decoded workspace-settings replacement request. */\nexport type UpdateWorkspaceSettingsRequest = typeof UpdateWorkspaceSettingsRequest.Type\n\nconst authenticatedErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst read = HttpApiEndpoint.get(\"read\", \"/\", {\n success: WorkspaceSettingsReadModel,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst readPresentation = HttpApiEndpoint.get(\"readPresentation\", \"/presentation\", {\n success: WorkspacePresentationReadModel,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst update = HttpApiEndpoint.put(\"update\", \"/\", {\n payload: UpdateWorkspaceSettingsRequest,\n success: WorkspaceSettingsReadModel,\n error: [...authenticatedErrors, InvalidRequestApiError, ConflictApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Authenticated workspace settings read and concurrency-safe mutation contract. */\nexport class WorkspaceSettingsApiGroup extends HttpApiGroup.make(\"workspaceSettings\")\n .add(read, readPresentation, update)\n .prefix(\"/api/v1/settings\")\n{}\n","import { HttpApi } from \"effect/unstable/httpapi\"\n\nimport { AgentApiGroup } from \"./agent.js\"\nimport { CodePipelineApiGroup } from \"./codepipeline.js\"\nimport { DeliveryGraphApiGroup } from \"./deliveryGraph.js\"\nimport { DiffApiGroup } from \"./diff.js\"\nimport { LiveEventsApiGroup } from \"./liveEvents.js\"\nimport { MediaApiGroup } from \"./media.js\"\nimport { PluginsApiGroup } from \"./plugins.js\"\nimport { PortfolioApiGroup } from \"./portfolio.js\"\nimport { SessionApiGroup } from \"./session.js\"\nimport { SharesApiGroup } from \"./shares.js\"\nimport { TimelineApiGroup } from \"./timeline.js\"\nimport { WorkspaceSettingsApiGroup } from \"./workspaceSettings.js\"\n\n/** Browser-safe authenticated HTTP contract shared by the generated client and server implementation. */\nexport class ControlCenterApi extends HttpApi.make(\"ControlCenterApi\")\n .add(SessionApiGroup)\n .add(SharesApiGroup)\n .add(PluginsApiGroup)\n .add(PortfolioApiGroup)\n .add(DeliveryGraphApiGroup)\n .add(DiffApiGroup)\n .add(CodePipelineApiGroup)\n .add(MediaApiGroup)\n .add(LiveEventsApiGroup)\n .add(TimelineApiGroup)\n .add(WorkspaceSettingsApiGroup)\n .add(AgentApiGroup)\n{}\n"],"mappings":"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"}