@knpkv/control-center 0.3.0 → 0.4.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 (298) hide show
  1. package/README.md +52 -9
  2. package/dist/client/.vite/manifest.json +183 -170
  3. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js → ActiveWorkPage-Dd1mxPrq.js} +2 -2
  4. package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js.map → ActiveWorkPage-Dd1mxPrq.js.map} +1 -1
  5. package/dist/client/assets/AgentPage-C3LThgPZ.js +3 -0
  6. package/dist/client/assets/AgentPage-C3LThgPZ.js.map +1 -0
  7. package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js → AtlassianOAuthCallbackPage-BPoF6oKf.js} +2 -2
  8. package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js.map → AtlassianOAuthCallbackPage-BPoF6oKf.js.map} +1 -1
  9. package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js +2 -0
  10. package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js.map +1 -0
  11. package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +2 -0
  12. package/dist/client/assets/{BrowserCrypto-DVWR7DFd.js.map → BrowserCrypto-BMbjhcvP.js.map} +1 -1
  13. package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +2 -0
  14. package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js.map +1 -0
  15. package/dist/client/assets/CommandSearch-WwAVDrD9.js +2 -0
  16. package/dist/client/assets/{CommandSearch-CP_QCbkm.js.map → CommandSearch-WwAVDrD9.js.map} +1 -1
  17. package/dist/client/assets/ItemsPage-CKK_KkJ2.js +2 -0
  18. package/dist/client/assets/{ItemsPage-BGFUkRL2.js.map → ItemsPage-CKK_KkJ2.js.map} +1 -1
  19. package/dist/client/assets/{PairPage-DIgzx0K2.js → PairPage-DA6cmyqF.js} +2 -2
  20. package/dist/client/assets/{PairPage-DIgzx0K2.js.map → PairPage-DA6cmyqF.js.map} +1 -1
  21. package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +2 -0
  22. package/dist/client/assets/PortfolioOverview-CEI4gpXi.js.map +1 -0
  23. package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js +6 -0
  24. package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js.map +1 -0
  25. package/dist/client/assets/ReleaseRoute-CbPW3qUT.js +2 -0
  26. package/dist/client/assets/{ReleaseRoute-DXJ8Jg60.js.map → ReleaseRoute-CbPW3qUT.js.map} +1 -1
  27. package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +2 -0
  28. package/dist/client/assets/{ReleaseWorkset-Dtzalmji.js.map → ReleaseWorkset-BluAe7Sq.js.map} +1 -1
  29. package/dist/client/assets/ServicesPage-_B89DAvG.js +2 -0
  30. package/dist/client/assets/ServicesPage-_B89DAvG.js.map +1 -0
  31. package/dist/client/assets/TimelinePage-DvpgD8AY.js +2 -0
  32. package/dist/client/assets/TimelinePage-DvpgD8AY.js.map +1 -0
  33. package/dist/client/assets/WorkspaceEntityLink-DPj6MKI2.js +2 -0
  34. package/dist/client/assets/{WorkspaceEntityLink-AdZ_T-Wk.js.map → WorkspaceEntityLink-DPj6MKI2.js.map} +1 -1
  35. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +3 -0
  36. package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +1 -0
  37. package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js → WorkspaceHomeLink-CkJfzO25.js} +2 -2
  38. package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js.map → WorkspaceHomeLink-CkJfzO25.js.map} +1 -1
  39. package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +3 -0
  40. package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js.map +1 -0
  41. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js → WorkspaceReleaseLayout-CGHi8eoo.js} +2 -2
  42. package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js.map → WorkspaceReleaseLayout-CGHi8eoo.js.map} +1 -1
  43. package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js → WorkspaceSettingsPage-DyoGiGJG.js} +2 -2
  44. package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js.map → WorkspaceSettingsPage-DyoGiGJG.js.map} +1 -1
  45. package/dist/client/assets/agent-api-CeONl_8w.js +19 -0
  46. package/dist/client/assets/agent-api-CeONl_8w.js.map +1 -0
  47. package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +2 -0
  48. package/dist/client/assets/{authenticatedMutationClient-Ccwguc3i.js.map → authenticatedMutationClient-DYaieXUe.js.map} +1 -1
  49. package/dist/client/assets/authorizedShareTransport-cxBoQzQ2.js +2 -0
  50. package/dist/client/assets/{authorizedShareTransport-DZHgFEkh.js.map → authorizedShareTransport-cxBoQzQ2.js.map} +1 -1
  51. package/dist/client/assets/client-DKS82kT_.js +5 -0
  52. package/dist/client/assets/client-DKS82kT_.js.map +1 -0
  53. package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +2 -0
  54. package/dist/client/assets/{connectionTestTransport-BQ55d6Me.js.map → connectionTestTransport-I_Ga9UNs.js.map} +1 -1
  55. package/dist/client/assets/index-C7_FDTU7.js +11 -0
  56. package/dist/client/assets/index-C7_FDTU7.js.map +1 -0
  57. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js → patterns-5N-j-AD2-B9qgekXA.js} +2 -2
  58. package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js.map → patterns-5N-j-AD2-B9qgekXA.js.map} +1 -1
  59. package/dist/client/assets/{presentPortfolio-D3ZIcnqt.js → presentPortfolio-C_JsoSWg.js} +2 -2
  60. package/dist/client/assets/presentPortfolio-C_JsoSWg.js.map +1 -0
  61. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js → presentWorkspaceItems-DboAfwGc.js} +2 -2
  62. package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js.map → presentWorkspaceItems-DboAfwGc.js.map} +1 -1
  63. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js → pullRequestReviewFailures-DHmYwffV.js} +2 -2
  64. package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js.map → pullRequestReviewFailures-DHmYwffV.js.map} +1 -1
  65. package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js +2 -0
  66. package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js.map +1 -0
  67. package/dist/client/assets/releaseRoutes-t9uCfs5T.js +2 -0
  68. package/dist/client/assets/{releaseRoutes-BCuIdZyA.js.map → releaseRoutes-t9uCfs5T.js.map} +1 -1
  69. package/dist/client/assets/serviceOnboarding-DLINCon7.js +2 -0
  70. package/dist/client/assets/{serviceOnboarding-Jg_0yNjf.js.map → serviceOnboarding-DLINCon7.js.map} +1 -1
  71. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js → useWorkspaceDefaultLanding-CC5ImHkL.js} +3 -3
  72. package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js.map → useWorkspaceDefaultLanding-CC5ImHkL.js.map} +1 -1
  73. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js → useWorkspaceItems-B1X-JNwq.js} +2 -2
  74. package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js.map → useWorkspaceItems-B1X-JNwq.js.map} +1 -1
  75. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +2 -0
  76. package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +1 -0
  77. package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js +2 -0
  78. package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js.map +1 -0
  79. package/dist/client/assets/workspaceSettingsTransport-Dw2hueXv.js +2 -0
  80. package/dist/client/assets/{workspaceSettingsTransport-CZWYL5T7.js.map → workspaceSettingsTransport-Dw2hueXv.js.map} +1 -1
  81. package/dist/client/build-graph.json +17 -0
  82. package/dist/client/index.html +1 -1
  83. package/dist/server/api/agent.d.ts +563 -44
  84. package/dist/server/api/agent.d.ts.map +1 -1
  85. package/dist/server/api/deliveryGraph.d.ts +454 -454
  86. package/dist/server/api/index.d.ts +1 -1
  87. package/dist/server/api/index.d.ts.map +1 -1
  88. package/dist/server/api/index.js +4 -4
  89. package/dist/server/api/liveEvents.d.ts +20 -0
  90. package/dist/server/api/liveEvents.d.ts.map +1 -1
  91. package/dist/server/api/portfolio.d.ts +23 -0
  92. package/dist/server/api/portfolio.d.ts.map +1 -1
  93. package/dist/server/api/shares.d.ts +2 -2
  94. package/dist/server/assets/{BindConfig-DIsf2Rnh.js → BindConfig-Bj282xDC.js} +2094 -290
  95. package/dist/server/assets/BindConfig-Bj282xDC.js.map +1 -0
  96. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js → CodePipelineStateDecoder-CNiFRgSi.js} +2 -2
  97. package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js.map → CodePipelineStateDecoder-CNiFRgSi.js.map} +1 -1
  98. package/dist/server/assets/{agent-CyZ40zs1.js → agent-ZvwskOQu.js} +160 -10
  99. package/dist/server/assets/agent-ZvwskOQu.js.map +1 -0
  100. package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js → controlCenterApi-5j3gOXgE.js} +5 -5
  101. package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js.map → controlCenterApi-5j3gOXgE.js.map} +1 -1
  102. package/dist/server/assets/{descriptor-CKtTnhef.js → descriptor-CCvNzSZL.js} +10 -10
  103. package/dist/server/assets/{descriptor-CKtTnhef.js.map → descriptor-CCvNzSZL.js.map} +1 -1
  104. package/dist/server/assets/{failures-mgYDkUZy.js → failures-CesHLYbN.js} +2 -2
  105. package/dist/server/assets/{failures-mgYDkUZy.js.map → failures-CesHLYbN.js.map} +1 -1
  106. package/dist/server/assets/{firstPartyServices-D7b8BOek.js → firstPartyServices-Cdzjcs2H.js} +2 -2
  107. package/dist/server/assets/{firstPartyServices-D7b8BOek.js.map → firstPartyServices-Cdzjcs2H.js.map} +1 -1
  108. package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js → manualPluginSynchronization-CzIhZ_Dw.js} +5 -5
  109. package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js.map → manualPluginSynchronization-CzIhZ_Dw.js.map} +1 -1
  110. package/dist/server/assets/{plugins-D__oMDpI.js → plugins-DiPrfzV8.js} +2 -2
  111. package/dist/server/assets/{plugins-D__oMDpI.js.map → plugins-DiPrfzV8.js.map} +1 -1
  112. package/dist/server/assets/{readiness-BhA-Nr9c.js → readiness-BtntBhDj.js} +3 -3
  113. package/dist/server/assets/{readiness-BhA-Nr9c.js.map → readiness-BtntBhDj.js.map} +1 -1
  114. package/dist/server/assets/{relationshipInferenceMaterialization-DYBcaWhQ.js → relationshipInferenceMaterialization-CR6xyMNL.js} +1121 -159
  115. package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +1 -0
  116. package/dist/server/assets/{workspaceSettings-BE713Oe8.js → workspaceSettings-C2Zsk6RI.js} +2784 -2700
  117. package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +1 -0
  118. package/dist/server/build-graph.json +117 -4
  119. package/dist/server/domain/actors.d.ts +12 -12
  120. package/dist/server/domain/deliveryGraph.d.ts +49 -49
  121. package/dist/server/domain/governedAction/bindings.d.ts +24 -12
  122. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
  123. package/dist/server/domain/governedAction/lifecycle.d.ts +8 -8
  124. package/dist/server/domain/governedAction/model.d.ts +39 -18
  125. package/dist/server/domain/governedAction/model.d.ts.map +1 -1
  126. package/dist/server/domain/governedAction/stateMachine.d.ts +34 -34
  127. package/dist/server/domain/index.js +6 -6
  128. package/dist/server/domain/normalizedIssue.d.ts +1 -1
  129. package/dist/server/domain/prReview.d.ts +38 -0
  130. package/dist/server/domain/prReview.d.ts.map +1 -1
  131. package/dist/server/domain/prReviewReconciliation.d.ts +56 -0
  132. package/dist/server/domain/prReviewReconciliation.d.ts.map +1 -0
  133. package/dist/server/domain/prReviewRevision.d.ts +1 -0
  134. package/dist/server/domain/prReviewRevision.d.ts.map +1 -1
  135. package/dist/server/domain/readiness/model.d.ts +3 -3
  136. package/dist/server/domain/release.d.ts +3 -3
  137. package/dist/server/domain/releasePublication.d.ts +4 -0
  138. package/dist/server/domain/releasePublication.d.ts.map +1 -0
  139. package/dist/server/index.js +8 -8
  140. package/dist/server/server/agent/AgentJobWorker.d.ts +10 -1
  141. package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -1
  142. package/dist/server/server/agent/ReleaseAgentPrompt.d.ts.map +1 -1
  143. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts +4 -3
  144. package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts.map +1 -1
  145. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts +17 -1
  146. package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts.map +1 -1
  147. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts +76 -2
  148. package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts.map +1 -1
  149. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts +27 -0
  150. package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts.map +1 -0
  151. package/dist/server/server/api/ApplicationServices.d.ts +39 -5
  152. package/dist/server/server/api/ApplicationServices.d.ts.map +1 -1
  153. package/dist/server/server/api/Handlers.d.ts.map +1 -1
  154. package/dist/server/server/api/RequestBoundary.d.ts.map +1 -1
  155. package/dist/server/server/application/GovernedReviewSuggestionPublicationGateway.d.ts.map +1 -1
  156. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts +4 -0
  157. package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts.map +1 -1
  158. package/dist/server/server/application/index.d.ts +1 -0
  159. package/dist/server/server/application/index.d.ts.map +1 -1
  160. package/dist/server/server/application/liveEvents.d.ts.map +1 -1
  161. package/dist/server/server/application/pipelineExecutionProjection.d.ts +6 -6
  162. package/dist/server/server/application/portfolioSnapshots.d.ts +2014 -4
  163. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
  164. package/dist/server/server/application/pullRequestReviews.d.ts.map +1 -1
  165. package/dist/server/server/application/releaseAgent.d.ts +11 -3
  166. package/dist/server/server/application/releaseAgent.d.ts.map +1 -1
  167. package/dist/server/server/application/releasePublicationIntent.d.ts +7 -0
  168. package/dist/server/server/application/releasePublicationIntent.d.ts.map +1 -0
  169. package/dist/server/server/application/releasePublicationMetadata.d.ts +61 -0
  170. package/dist/server/server/application/releasePublicationMetadata.d.ts.map +1 -0
  171. package/dist/server/server/application/releasePublicationSubmissions.d.ts +3699 -0
  172. package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -0
  173. package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -1
  174. package/dist/server/server/cli.js +8 -8
  175. package/dist/server/server/cli.js.map +1 -1
  176. package/dist/server/server/governance/governedActionDigests.d.ts +233 -218
  177. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
  178. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +3 -4
  179. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -1
  180. package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -1
  181. package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +1 -1
  182. package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +8 -8
  183. package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +2 -2
  184. package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +1 -1
  185. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +36 -30
  186. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
  187. package/dist/server/server/index.js +5 -5
  188. package/dist/server/server/internal/codepipeline-state-probe.js +1 -1
  189. package/dist/server/server/persistence/Database.d.ts +1 -1
  190. package/dist/server/server/persistence/Database.d.ts.map +1 -1
  191. package/dist/server/server/persistence/Persistence.d.ts +1539 -577
  192. package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
  193. package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -1
  194. package/dist/server/server/persistence/repositories/agentJobModels.d.ts +345 -8
  195. package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -1
  196. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +654 -192
  197. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -1
  198. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +138 -138
  199. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +25 -25
  200. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +111 -111
  201. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +27 -27
  202. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +48 -48
  203. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +111 -111
  204. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +255 -234
  205. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
  206. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +66 -46
  207. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
  208. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +664 -190
  209. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
  210. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +676 -206
  211. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
  212. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +37 -31
  213. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
  214. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +44 -32
  215. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
  216. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +44 -32
  217. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
  218. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +674 -205
  219. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
  220. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts +85 -4
  221. package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts.map +1 -1
  222. package/dist/server/server/persistence/repositories/models.d.ts +9 -9
  223. package/dist/server/server/persistence/repositories/peopleRepository.d.ts +36 -36
  224. package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +1 -1
  225. package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +6 -6
  226. package/dist/server/server/persistence/repositories/readiness/contract.d.ts +450 -450
  227. package/dist/server/server/persistence/repositories/readiness/queue.d.ts +14 -14
  228. package/dist/server/server/persistence/repositories/readinessRepository.d.ts +7 -7
  229. package/dist/server/server/persistence/repositories/releaseRepository.d.ts +18 -18
  230. package/dist/server/server/persistence/repositories/retentionRepository.d.ts.map +1 -1
  231. package/dist/server/server/persistence/repositories/timelineRepository.d.ts +4 -4
  232. package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -1
  233. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts +9 -0
  234. package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts.map +1 -0
  235. package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -1
  236. package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -1
  237. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +2 -2
  238. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -1
  239. package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -1
  240. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts +8 -0
  241. package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts.map +1 -0
  242. package/dist/server/server/plugins/jira/index.d.ts +1 -1
  243. package/dist/server/server/plugins/jira/index.d.ts.map +1 -1
  244. package/dist/server/server/runtime/Bootstrap.d.ts +1 -1
  245. package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -1
  246. package/dist/server/server/runtime/ControlCenterServer.d.ts +3 -3
  247. package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -1
  248. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts +11 -1
  249. package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts.map +1 -1
  250. package/dist/server/server/runtime/RetentionStartup.d.ts.map +1 -1
  251. package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -1
  252. package/dist/server/server/secrets/SecretStore.d.ts.map +1 -1
  253. package/package.json +9 -8
  254. package/dist/client/assets/AgentPage-DGL93TJU.js +0 -3
  255. package/dist/client/assets/AgentPage-DGL93TJU.js.map +0 -1
  256. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js +0 -2
  257. package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js.map +0 -1
  258. package/dist/client/assets/BrowserCrypto-DVWR7DFd.js +0 -2
  259. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js +0 -2
  260. package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js.map +0 -1
  261. package/dist/client/assets/CommandSearch-CP_QCbkm.js +0 -2
  262. package/dist/client/assets/ItemsPage-BGFUkRL2.js +0 -2
  263. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js +0 -2
  264. package/dist/client/assets/PortfolioOverview-D45rk8Hl.js.map +0 -1
  265. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js +0 -6
  266. package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js.map +0 -1
  267. package/dist/client/assets/ReleaseRoute-DXJ8Jg60.js +0 -2
  268. package/dist/client/assets/ReleaseWorkset-Dtzalmji.js +0 -2
  269. package/dist/client/assets/ServicesPage-DGcUjd2H.js +0 -2
  270. package/dist/client/assets/ServicesPage-DGcUjd2H.js.map +0 -1
  271. package/dist/client/assets/TimelinePage-Bq1RTQlP.js +0 -2
  272. package/dist/client/assets/TimelinePage-Bq1RTQlP.js.map +0 -1
  273. package/dist/client/assets/WorkspaceEntityLink-AdZ_T-Wk.js +0 -2
  274. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js +0 -3
  275. package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js.map +0 -1
  276. package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js +0 -3
  277. package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js.map +0 -1
  278. package/dist/client/assets/agent-api-QVqt4a0O.js +0 -19
  279. package/dist/client/assets/agent-api-QVqt4a0O.js.map +0 -1
  280. package/dist/client/assets/authenticatedMutationClient-Ccwguc3i.js +0 -2
  281. package/dist/client/assets/authorizedShareTransport-DZHgFEkh.js +0 -2
  282. package/dist/client/assets/client-D27unen8.js +0 -5
  283. package/dist/client/assets/client-D27unen8.js.map +0 -1
  284. package/dist/client/assets/connectionTestTransport-BQ55d6Me.js +0 -2
  285. package/dist/client/assets/index-j5ze816l.js +0 -11
  286. package/dist/client/assets/index-j5ze816l.js.map +0 -1
  287. package/dist/client/assets/presentPortfolio-D3ZIcnqt.js.map +0 -1
  288. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js +0 -2
  289. package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js.map +0 -1
  290. package/dist/client/assets/releaseRoutes-BCuIdZyA.js +0 -2
  291. package/dist/client/assets/serviceOnboarding-Jg_0yNjf.js +0 -2
  292. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js +0 -2
  293. package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js.map +0 -1
  294. package/dist/client/assets/workspaceSettingsTransport-CZWYL5T7.js +0 -2
  295. package/dist/server/assets/BindConfig-DIsf2Rnh.js.map +0 -1
  296. package/dist/server/assets/agent-CyZ40zs1.js.map +0 -1
  297. package/dist/server/assets/relationshipInferenceMaterialization-DYBcaWhQ.js.map +0 -1
  298. package/dist/server/assets/workspaceSettings-BE713Oe8.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { I as PluginEntityReferenceV1, Q as Revision, et as SourceUrl, nt as UtcTimestamp } from "./descriptor-CKtTnhef.js";
1
+ import { I as PluginEntityReferenceV1, Nt as UtcTimestamp, Q as Revision, et as SourceUrl } from "./descriptor-CCvNzSZL.js";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Schema from "effect/Schema";
4
4
  import * as Encoding from "effect/Encoding";
@@ -93,4 +93,4 @@ var PluginPipelineArtifactRangeV1 = Schema.Struct({
93
93
  //#endregion
94
94
  export { PluginPipelineLogPageRequestV1 as a, PluginDiscoveryV1 as c, PluginPipelineLogEventV1 as i, PluginPipelineArtifactRangeRequestV1 as n, PluginPipelineLogPageV1 as o, PluginPipelineArtifactRangeV1 as r, PluginDiscoveryEndpointV1 as s, PluginPipelineActionReferenceV1 as t };
95
95
 
96
- //# sourceMappingURL=plugins-D__oMDpI.js.map
96
+ //# sourceMappingURL=plugins-DiPrfzV8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins-D__oMDpI.js","names":[],"sources":["../../../src/domain/plugins/discovery.ts","../../../src/domain/plugins/pipeline.ts"],"sourcesContent":["import * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as SchemaGetter from \"effect/SchemaGetter\"\n\nimport { SourceUrl } from \"../sourceRevision.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\n\nconst SafeProviderIdentifier = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(512)\n)\nconst SafeProviderLabel = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200)\n)\nconst SafeDiscoveryEndpointUrl = SourceUrl.pipe(\n Schema.check(\n Schema.makeFilter(\n ({ hash, search }) => hash.length === 0 && search.length === 0,\n { expected: \"a provider endpoint URL without query parameters or fragments\" }\n )\n )\n)\n\nconst ProviderContainer = Schema.Struct({\n providerImmutableId: SafeProviderIdentifier,\n displayName: SafeProviderLabel\n})\nconst NullableProviderContainer = Schema.NullOr(ProviderContainer)\n\n/** Secret-free provider endpoint advertised during connection discovery. */\nexport const PluginDiscoveryEndpointV1 = Schema.Struct({\n kind: Schema.Literals([\"api\", \"web\", \"graphql\", \"webhook\"]),\n url: SafeDiscoveryEndpointUrl,\n label: Schema.NullOr(SafeProviderLabel)\n})\n\n/** Decoded safe provider endpoint metadata. */\nexport type PluginDiscoveryEndpointV1 = typeof PluginDiscoveryEndpointV1.Type\n\n/**\n * Safe connection metadata discovered from the provider.\n * Credentials, raw headers, and provider response bodies are deliberately absent.\n */\nexport const PluginDiscoveryV1 = Schema.Struct({\n account: NullableProviderContainer,\n workspace: NullableProviderContainer,\n resource: Schema.optional(NullableProviderContainer).pipe(\n Schema.decodeTo(Schema.toType(NullableProviderContainer), {\n decode: SchemaGetter.withDefault(Effect.succeed<typeof NullableProviderContainer.Type>(null)),\n encode: SchemaGetter.required()\n })\n ),\n endpoints: Schema.Array(PluginDiscoveryEndpointV1).check(\n Schema.makeFilter(\n (endpoints) => endpoints.length <= 20,\n { expected: \"at most 20 safe provider endpoints\" }\n )\n ),\n discoveredAt: UtcTimestamp\n}).annotate({ identifier: \"PluginDiscoveryV1\" })\n\n/** Decoded secret-free connection discovery metadata. */\nexport type PluginDiscoveryV1 = typeof PluginDiscoveryV1.Type\n","import * as Encoding from \"effect/Encoding\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { Revision } from \"../sourceRevision.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\nimport { PluginEntityReferenceV1 } from \"./events.js\"\n\nconst boundedOpaque = (name: string, maximum: number) =>\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(maximum)).pipe(Schema.brand(name))\n\nconst NonNegativeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\nconst PositiveInteger = Schema.Int.check(Schema.isGreaterThan(0))\nconst MaximumArtifactRangeBytes = 1024 * 1024\nconst MaximumArtifactRangeBase64Characters = 4 * Math.ceil(MaximumArtifactRangeBytes / 3)\nconst MaximumLogPageBytes = 1024 * 1024\nconst utf8Encoder = new TextEncoder()\nconst Utf8BoundedLogMessage = Schema.String.check(\n Schema.makeFilter(\n (message) => utf8Encoder.encode(message).byteLength <= MaximumLogPageBytes,\n { expected: `at most ${MaximumLogPageBytes} UTF-8 log message bytes` }\n )\n)\n\n/** Exact provider action selected for a bounded pipeline evidence read. */\nexport const PluginPipelineActionReferenceV1 = Schema.Struct({\n entity: PluginEntityReferenceV1,\n executionId: boundedOpaque(\"PluginPipelineExecutionId\", 256),\n actionExecutionId: boundedOpaque(\"PluginPipelineActionExecutionId\", 256),\n expectedRevision: Revision\n})\n\n/** Decoded exact pipeline action identity. */\nexport type PluginPipelineActionReferenceV1 = typeof PluginPipelineActionReferenceV1.Type\n\n/** Bounded request for one page of pipeline action log events. */\nexport const PluginPipelineLogPageRequestV1 = Schema.Struct({\n action: PluginPipelineActionReferenceV1,\n cursor: Schema.NullOr(boundedOpaque(\"PluginPipelineLogCursor\", 4_096)),\n limit: PositiveInteger.check(Schema.isLessThanOrEqualTo(100))\n})\n\n/** One browser-safe provider log event. */\nexport const PluginPipelineLogEventV1 = Schema.Struct({\n timestamp: UtcTimestamp,\n ingestionTimestamp: Schema.NullOr(UtcTimestamp),\n message: Utf8BoundedLogMessage\n})\n\n/** Bounded pipeline action log page with an opaque continuation cursor. */\nexport const PluginPipelineLogPageV1 = Schema.Struct({\n events: Schema.Array(PluginPipelineLogEventV1).check(\n Schema.makeFilter((events) => events.length <= 100, { expected: \"at most 100 pipeline log events\" }),\n Schema.makeFilter(\n (events) =>\n events.reduce((total, event) => total + utf8Encoder.encode(event.message).byteLength, 0) <=\n MaximumLogPageBytes,\n { expected: `at most ${MaximumLogPageBytes} UTF-8 log message bytes` }\n )\n ),\n nextCursor: Schema.NullOr(boundedOpaque(\"PluginPipelineLogCursor\", 4_096))\n})\n\n/** Bounded request for one action artifact byte range. */\nexport const PluginPipelineArtifactRangeRequestV1 = Schema.Struct({\n action: PluginPipelineActionReferenceV1,\n direction: Schema.Literals([\"input\", \"output\"]),\n artifactName: boundedOpaque(\"PluginPipelineArtifactName\", 256),\n offset: NonNegativeInteger,\n length: PositiveInteger.check(Schema.isLessThanOrEqualTo(MaximumArtifactRangeBytes))\n})\n\n/** Browser-safe artifact bytes; provider storage coordinates are deliberately absent. */\nexport const PluginPipelineArtifactRangeV1 = Schema.Struct({\n bytesBase64: Schema.String.check(\n Schema.isMaxLength(MaximumArtifactRangeBase64Characters),\n Schema.isBase64(),\n Schema.makeFilter((value) => {\n const decoded = Encoding.decodeBase64(value)\n return Result.isSuccess(decoded) && decoded.success.byteLength <= MaximumArtifactRangeBytes\n }, { expected: `at most ${MaximumArtifactRangeBytes} base64-decoded bytes` })\n ),\n totalBytes: NonNegativeInteger,\n contentType: Schema.Literal(\"application/octet-stream\"),\n filename: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(255),\n Schema.isPattern(/^[^\"\\\\/\\r\\n]+$/u, { expected: \"a safe attachment filename\" })\n )\n})\n\nexport type PluginPipelineLogPageRequestV1 = typeof PluginPipelineLogPageRequestV1.Type\nexport type PluginPipelineLogPageV1 = typeof PluginPipelineLogPageV1.Type\nexport type PluginPipelineArtifactRangeRequestV1 = typeof PluginPipelineArtifactRangeRequestV1.Type\nexport type PluginPipelineArtifactRangeV1 = typeof PluginPipelineArtifactRangeV1.Type\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugins-DiPrfzV8.js","names":[],"sources":["../../../src/domain/plugins/discovery.ts","../../../src/domain/plugins/pipeline.ts"],"sourcesContent":["import * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport * as SchemaGetter from \"effect/SchemaGetter\"\n\nimport { SourceUrl } from \"../sourceRevision.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\n\nconst SafeProviderIdentifier = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(512)\n)\nconst SafeProviderLabel = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200)\n)\nconst SafeDiscoveryEndpointUrl = SourceUrl.pipe(\n Schema.check(\n Schema.makeFilter(\n ({ hash, search }) => hash.length === 0 && search.length === 0,\n { expected: \"a provider endpoint URL without query parameters or fragments\" }\n )\n )\n)\n\nconst ProviderContainer = Schema.Struct({\n providerImmutableId: SafeProviderIdentifier,\n displayName: SafeProviderLabel\n})\nconst NullableProviderContainer = Schema.NullOr(ProviderContainer)\n\n/** Secret-free provider endpoint advertised during connection discovery. */\nexport const PluginDiscoveryEndpointV1 = Schema.Struct({\n kind: Schema.Literals([\"api\", \"web\", \"graphql\", \"webhook\"]),\n url: SafeDiscoveryEndpointUrl,\n label: Schema.NullOr(SafeProviderLabel)\n})\n\n/** Decoded safe provider endpoint metadata. */\nexport type PluginDiscoveryEndpointV1 = typeof PluginDiscoveryEndpointV1.Type\n\n/**\n * Safe connection metadata discovered from the provider.\n * Credentials, raw headers, and provider response bodies are deliberately absent.\n */\nexport const PluginDiscoveryV1 = Schema.Struct({\n account: NullableProviderContainer,\n workspace: NullableProviderContainer,\n resource: Schema.optional(NullableProviderContainer).pipe(\n Schema.decodeTo(Schema.toType(NullableProviderContainer), {\n decode: SchemaGetter.withDefault(Effect.succeed<typeof NullableProviderContainer.Type>(null)),\n encode: SchemaGetter.required()\n })\n ),\n endpoints: Schema.Array(PluginDiscoveryEndpointV1).check(\n Schema.makeFilter(\n (endpoints) => endpoints.length <= 20,\n { expected: \"at most 20 safe provider endpoints\" }\n )\n ),\n discoveredAt: UtcTimestamp\n}).annotate({ identifier: \"PluginDiscoveryV1\" })\n\n/** Decoded secret-free connection discovery metadata. */\nexport type PluginDiscoveryV1 = typeof PluginDiscoveryV1.Type\n","import * as Encoding from \"effect/Encoding\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { Revision } from \"../sourceRevision.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\nimport { PluginEntityReferenceV1 } from \"./events.js\"\n\nconst boundedOpaque = (name: string, maximum: number) =>\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(maximum)).pipe(Schema.brand(name))\n\nconst NonNegativeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\nconst PositiveInteger = Schema.Int.check(Schema.isGreaterThan(0))\nconst MaximumArtifactRangeBytes = 1024 * 1024\nconst MaximumArtifactRangeBase64Characters = 4 * Math.ceil(MaximumArtifactRangeBytes / 3)\nconst MaximumLogPageBytes = 1024 * 1024\nconst utf8Encoder = new TextEncoder()\nconst Utf8BoundedLogMessage = Schema.String.check(\n Schema.makeFilter(\n (message) => utf8Encoder.encode(message).byteLength <= MaximumLogPageBytes,\n { expected: `at most ${MaximumLogPageBytes} UTF-8 log message bytes` }\n )\n)\n\n/** Exact provider action selected for a bounded pipeline evidence read. */\nexport const PluginPipelineActionReferenceV1 = Schema.Struct({\n entity: PluginEntityReferenceV1,\n executionId: boundedOpaque(\"PluginPipelineExecutionId\", 256),\n actionExecutionId: boundedOpaque(\"PluginPipelineActionExecutionId\", 256),\n expectedRevision: Revision\n})\n\n/** Decoded exact pipeline action identity. */\nexport type PluginPipelineActionReferenceV1 = typeof PluginPipelineActionReferenceV1.Type\n\n/** Bounded request for one page of pipeline action log events. */\nexport const PluginPipelineLogPageRequestV1 = Schema.Struct({\n action: PluginPipelineActionReferenceV1,\n cursor: Schema.NullOr(boundedOpaque(\"PluginPipelineLogCursor\", 4_096)),\n limit: PositiveInteger.check(Schema.isLessThanOrEqualTo(100))\n})\n\n/** One browser-safe provider log event. */\nexport const PluginPipelineLogEventV1 = Schema.Struct({\n timestamp: UtcTimestamp,\n ingestionTimestamp: Schema.NullOr(UtcTimestamp),\n message: Utf8BoundedLogMessage\n})\n\n/** Bounded pipeline action log page with an opaque continuation cursor. */\nexport const PluginPipelineLogPageV1 = Schema.Struct({\n events: Schema.Array(PluginPipelineLogEventV1).check(\n Schema.makeFilter((events) => events.length <= 100, { expected: \"at most 100 pipeline log events\" }),\n Schema.makeFilter(\n (events) =>\n events.reduce((total, event) => total + utf8Encoder.encode(event.message).byteLength, 0) <=\n MaximumLogPageBytes,\n { expected: `at most ${MaximumLogPageBytes} UTF-8 log message bytes` }\n )\n ),\n nextCursor: Schema.NullOr(boundedOpaque(\"PluginPipelineLogCursor\", 4_096))\n})\n\n/** Bounded request for one action artifact byte range. */\nexport const PluginPipelineArtifactRangeRequestV1 = Schema.Struct({\n action: PluginPipelineActionReferenceV1,\n direction: Schema.Literals([\"input\", \"output\"]),\n artifactName: boundedOpaque(\"PluginPipelineArtifactName\", 256),\n offset: NonNegativeInteger,\n length: PositiveInteger.check(Schema.isLessThanOrEqualTo(MaximumArtifactRangeBytes))\n})\n\n/** Browser-safe artifact bytes; provider storage coordinates are deliberately absent. */\nexport const PluginPipelineArtifactRangeV1 = Schema.Struct({\n bytesBase64: Schema.String.check(\n Schema.isMaxLength(MaximumArtifactRangeBase64Characters),\n Schema.isBase64(),\n Schema.makeFilter((value) => {\n const decoded = Encoding.decodeBase64(value)\n return Result.isSuccess(decoded) && decoded.success.byteLength <= MaximumArtifactRangeBytes\n }, { expected: `at most ${MaximumArtifactRangeBytes} base64-decoded bytes` })\n ),\n totalBytes: NonNegativeInteger,\n contentType: Schema.Literal(\"application/octet-stream\"),\n filename: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(255),\n Schema.isPattern(/^[^\"\\\\/\\r\\n]+$/u, { expected: \"a safe attachment filename\" })\n )\n})\n\nexport type PluginPipelineLogPageRequestV1 = typeof PluginPipelineLogPageRequestV1.Type\nexport type PluginPipelineLogPageV1 = typeof PluginPipelineLogPageV1.Type\nexport type PluginPipelineArtifactRangeRequestV1 = typeof PluginPipelineArtifactRangeRequestV1.Type\nexport type PluginPipelineArtifactRangeV1 = typeof PluginPipelineArtifactRangeV1.Type\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Br as readinessDefinitionsShapeIsV1, Fr as deriveReleaseReadinessFindings, Ir as deriveReleaseReadinessNextEvaluationAt, Lr as deriveReleaseReadinessSourceSummaries, Qn as ReadinessArtifactRevision, Rr as deriveReleaseReadinessStages, Yr as readinessPolicyShapeIsV1, Zr as sortedReadinessUnique, _r as ReadinessReleaseRevision, ar as ReadinessFactDefinition, br as ReadinessRuleVersion, er as ReadinessCandidateDigest, kr as compareReadinessText, lr as ReadinessFactObservation, vr as ReadinessRuleId, zr as deriveReleaseReadinessVerdict } from "./workspaceSettings-BE713Oe8.js";
2
- import { At as SessionId, Et as ReleaseId, Mt as WorkspaceId, St as ReadinessAssessmentId, jt as ShareId, nt as UtcTimestamp, ot as EntityId, st as EnvironmentId, vt as PersonId } from "./descriptor-CKtTnhef.js";
1
+ import { $t as ReadinessFactDefinition, An as deriveReleaseReadinessNextEvaluationAt, Cn as compareReadinessText, Gn as sortedReadinessUnique, Jt as ReadinessCandidateDigest, Kt as ReadinessArtifactRevision, Mn as deriveReleaseReadinessStages, Nn as deriveReleaseReadinessVerdict, Pn as readinessDefinitionsShapeIsV1, Un as readinessPolicyShapeIsV1, dn as ReadinessReleaseRevision, fn as ReadinessRuleId, jn as deriveReleaseReadinessSourceSummaries, kn as deriveReleaseReadinessFindings, mn as ReadinessRuleVersion, rn as ReadinessFactObservation } from "./workspaceSettings-C2Zsk6RI.js";
2
+ import { At as ShareId, Nt as UtcTimestamp, Tt as ReleaseId, _t as PersonId, at as EntityId, jt as WorkspaceId, kt as SessionId, ot as EnvironmentId, xt as ReadinessAssessmentId } from "./descriptor-CCvNzSZL.js";
3
3
  import * as Schema from "effect/Schema";
4
4
  import * as DateTime from "effect/DateTime";
5
5
  //#region src/domain/authorizedShare.ts
@@ -132,4 +132,4 @@ var rollUpReleaseReadiness = (input) => {
132
132
  //#endregion
133
133
  export { ReleaseReadinessCandidateMaterial as a, normalizeReadinessRuleMaterial as c, AuthorizedShareTarget as d, ReadinessRuleMaterial as i, normalizeReleaseReadinessCandidateMaterial as l, summarizeEnvironmentReadiness as n, ReleaseReadinessChildMaterial as o, EnvironmentReadinessCandidateMaterial as r, normalizeEnvironmentReadinessCandidateMaterial as s, rollUpReleaseReadiness as t, AuthorizedShareGrant as u };
134
134
 
135
- //# sourceMappingURL=readiness-BhA-Nr9c.js.map
135
+ //# sourceMappingURL=readiness-BtntBhDj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readiness-BhA-Nr9c.js","names":[],"sources":["../../../src/domain/authorizedShare.ts","../../../src/domain/readiness/material.ts","../../../src/domain/readiness/rollup.ts"],"sourcesContent":["import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport { EntityId, PersonId, SessionId, ShareId, WorkspaceId } from \"./identifiers.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Exact normalized entity scope granted to one authenticated person. */\nexport const AuthorizedShareTarget = Schema.TaggedStruct(\"entity\", {\n entityId: EntityId\n})\n\n/** Decoded exact authorized-share target. */\nexport type AuthorizedShareTarget = typeof AuthorizedShareTarget.Type\n\n/** Durable authenticated grant with immutable creation and optional revocation evidence. */\nexport const AuthorizedShareGrant = Schema.Struct({\n workspaceId: WorkspaceId,\n shareId: ShareId,\n target: AuthorizedShareTarget,\n granteePersonId: PersonId,\n createdByPersonId: PersonId,\n createdBySessionId: SessionId,\n createdAt: UtcTimestamp,\n expiresAt: UtcTimestamp,\n revokedAt: Schema.NullOr(UtcTimestamp)\n}).check(\n Schema.makeFilter(\n ({ createdAt, expiresAt }) => DateTime.Order(createdAt, expiresAt) < 0,\n { expected: \"authorized share expiry after creation\" }\n ),\n Schema.makeFilter(\n ({ createdAt, revokedAt }) => revokedAt === null || DateTime.Order(createdAt, revokedAt) <= 0,\n { expected: \"authorized share revocation at or after creation\" }\n )\n)\n\n/** Decoded durable authorized-share grant. */\nexport type AuthorizedShareGrant = typeof AuthorizedShareGrant.Type\n","import * as Schema from \"effect/Schema\"\n\nimport { EnvironmentId, ReadinessAssessmentId, ReleaseId, WorkspaceId } from \"../identifiers.js\"\nimport {\n MAX_READINESS_EVIDENCE_REFERENCES,\n ReadinessArtifactRevision,\n ReadinessCandidateDigest,\n ReadinessFactDefinition,\n type ReadinessFactDefinition as ReadinessFactDefinitionType,\n ReadinessFactObservation,\n type ReadinessFactObservation as ReadinessFactObservationType,\n ReadinessReleaseRevision,\n ReadinessRuleId,\n ReadinessRuleVersion\n} from \"./model.js\"\nimport { compareReadinessText, readinessDefinitionsShapeIsV1, readinessPolicyShapeIsV1 } from \"./policy.js\"\n\nconst unique = <Value>(values: ReadonlyArray<Value>): boolean => new Set(values).size === values.length\n\nconst CandidateMaterialBase = {\n workspaceId: WorkspaceId,\n releaseRevision: ReadinessReleaseRevision,\n artifactRevision: ReadinessArtifactRevision\n}\n\nconst readinessFactsAreValid = (input: {\n readonly definitions: ReadonlyArray<ReadinessFactDefinitionType>\n readonly observations: ReadonlyArray<ReadinessFactObservationType>\n}): boolean => {\n const definitionsById = new Map(input.definitions.map((definition) => [definition.factId, definition]))\n return unique(input.definitions.map(({ factId }) => factId)) &&\n unique(input.observations.map(({ factId }) => factId)) &&\n input.observations.every((observation) =>\n definitionsById.get(observation.factId)?.kind === observation.state._tag\n ) &&\n readinessPolicyShapeIsV1(input.definitions, input.observations) &&\n input.observations.reduce((total, observation) => total + observation.evidence.length, 0) <=\n MAX_READINESS_EVIDENCE_REFERENCES\n}\n\n/** Digest-free, complete material for one target-environment candidate. */\nexport const EnvironmentReadinessCandidateMaterial = Schema.Struct({\n ...CandidateMaterialBase,\n scope: Schema.TaggedStruct(\"environment\", {\n releaseId: ReleaseId,\n environmentId: EnvironmentId\n }),\n complete: Schema.Boolean,\n definitions: Schema.Array(ReadinessFactDefinition).check(Schema.isMaxLength(512)),\n observations: Schema.Array(ReadinessFactObservation).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(readinessFactsAreValid, {\n expected: \"complete, unique, evidence-bounded V1 readiness candidate material\"\n })\n)\n\n/** Decoded environment candidate material before deterministic normalization. */\nexport type EnvironmentReadinessCandidateMaterial = typeof EnvironmentReadinessCandidateMaterial.Type\n\n/** Exact child assessment bound into a release-scope candidate. */\nexport const ReleaseReadinessChildMaterial = Schema.Struct({\n assessmentId: ReadinessAssessmentId,\n environmentId: EnvironmentId,\n candidateDigest: ReadinessCandidateDigest\n})\n\n/** Decoded release child material. */\nexport type ReleaseReadinessChildMaterial = typeof ReleaseReadinessChildMaterial.Type\n\n/** Digest-free material for one release candidate and its exact environment assessments. */\nexport const ReleaseReadinessCandidateMaterial = Schema.Struct({\n ...CandidateMaterialBase,\n scope: Schema.TaggedStruct(\"release\", { releaseId: ReleaseId }),\n environments: Schema.NonEmptyArray(ReleaseReadinessChildMaterial).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(({ environments }) => unique(environments.map(({ environmentId }) => environmentId)), {\n expected: \"release candidate environment identities to be unique\"\n }),\n Schema.makeFilter(({ environments }) => unique(environments.map(({ assessmentId }) => assessmentId)), {\n expected: \"release candidate assessment identities to be unique\"\n })\n)\n\n/** Decoded release candidate material before deterministic normalization. */\nexport type ReleaseReadinessCandidateMaterial = typeof ReleaseReadinessCandidateMaterial.Type\n\n/** Digest-free immutable readiness-rule snapshot. */\nexport const ReadinessRuleMaterial = Schema.Struct({\n ruleId: ReadinessRuleId,\n version: ReadinessRuleVersion,\n definitions: Schema.Array(ReadinessFactDefinition).check(Schema.isNonEmpty(), Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(({ definitions }) => unique(definitions.map(({ factId }) => factId)), {\n expected: \"readiness rule fact identities to be unique\"\n }),\n Schema.makeFilter(({ definitions }) => readinessDefinitionsShapeIsV1(definitions), {\n expected: \"readiness rule material to contain the complete V1 policy shape\"\n })\n)\n\n/** Decoded rule material before deterministic normalization. */\nexport type ReadinessRuleMaterial = typeof ReadinessRuleMaterial.Type\n\nconst normalizeDefinitions = (\n definitions: ReadonlyArray<ReadinessFactDefinitionType>\n): Array<ReadinessFactDefinitionType> =>\n [...definitions].sort((left, right) => compareReadinessText(left.factId, right.factId))\n\nconst normalizeObservations = (\n observations: ReadonlyArray<ReadinessFactObservationType>\n): Array<ReadinessFactObservationType> =>\n observations\n .map((observation) => ({\n ...observation,\n evidence: [...observation.evidence].sort((left, right) => compareReadinessText(left.evidenceId, right.evidenceId))\n }))\n .sort((left, right) => compareReadinessText(left.factId, right.factId))\n\n/** Return the only JSON ordering accepted for environment-candidate hashing. */\nexport const normalizeEnvironmentReadinessCandidateMaterial = (\n material: EnvironmentReadinessCandidateMaterial\n): EnvironmentReadinessCandidateMaterial => ({\n ...material,\n definitions: normalizeDefinitions(material.definitions),\n observations: normalizeObservations(material.observations)\n})\n\n/** Return the only JSON ordering accepted for release-candidate hashing. */\nexport const normalizeReleaseReadinessCandidateMaterial = (\n material: ReleaseReadinessCandidateMaterial\n): ReleaseReadinessCandidateMaterial => {\n const [first, ...remaining] = material.environments\n const environments: [ReleaseReadinessChildMaterial, ...Array<ReleaseReadinessChildMaterial>] = [\n first,\n ...remaining\n ]\n environments.sort((left, right) => compareReadinessText(left.environmentId, right.environmentId))\n return { ...material, environments }\n}\n\n/** Return the only JSON ordering accepted for rule hashing. */\nexport const normalizeReadinessRuleMaterial = (\n material: ReadinessRuleMaterial\n): ReadinessRuleMaterial => ({\n ...material,\n definitions: normalizeDefinitions(material.definitions)\n})\n","import type {\n EnvironmentReadinessAssessment,\n ReleaseReadinessAssessment,\n ReleaseReadinessRollupInput\n} from \"./model.js\"\nimport {\n compareReadinessText,\n deriveReleaseReadinessFindings,\n deriveReleaseReadinessNextEvaluationAt,\n deriveReleaseReadinessSourceSummaries,\n deriveReleaseReadinessStages,\n deriveReleaseReadinessVerdict,\n sortedReadinessUnique\n} from \"./policy.js\"\n\n/** Exact compact projection retained when an environment is rolled into a release. */\nexport const summarizeEnvironmentReadiness = (\n assessment: EnvironmentReadinessAssessment\n): ReleaseReadinessAssessment[\"environments\"][number] => ({\n assessmentId: assessment.assessmentId,\n environmentId: assessment.candidate.scope.environmentId,\n candidateDigest: assessment.candidate.digest,\n inputComplete: assessment.inputComplete,\n facts: assessment.facts,\n nextEvaluationAt: assessment.nextEvaluationAt,\n verdict: assessment.verdict,\n stages: assessment.stages,\n blockers: assessment.blockers,\n warnings: assessment.warnings,\n gaps: assessment.gaps,\n sourceFreshness: assessment.sourceFreshness,\n evidenceIds: assessment.evidenceIds\n})\n\n/** Pure deterministic roll-up of current target-environment assessments. */\nexport const rollUpReleaseReadiness = (\n input: ReleaseReadinessRollupInput\n): ReleaseReadinessAssessment => {\n const environments = input.environments\n .slice()\n .sort((left, right) => {\n return compareReadinessText(\n left.candidate.scope.environmentId,\n right.candidate.scope.environmentId\n )\n })\n const first = environments.reduce((earliest, assessment) =>\n compareReadinessText(\n assessment.candidate.scope.environmentId,\n earliest.candidate.scope.environmentId\n ) < 0\n ? assessment\n : earliest, input.environments[0])\n const environmentSummaries: ReleaseReadinessAssessment[\"environments\"] = [\n summarizeEnvironmentReadiness(first),\n ...environments.filter((assessment) => assessment !== first).map(summarizeEnvironmentReadiness)\n ]\n const findings = deriveReleaseReadinessFindings(environmentSummaries)\n\n return {\n _tag: \"release\",\n assessmentId: input.assessmentId,\n previousAssessmentId: input.previousAssessmentId,\n candidate: input.candidate,\n rule: first.rule,\n derivationVersion: first.derivationVersion,\n evaluatedAt: input.evaluatedAt,\n nextEvaluationAt: deriveReleaseReadinessNextEvaluationAt(environmentSummaries),\n verdict: deriveReleaseReadinessVerdict(environmentSummaries),\n stages: deriveReleaseReadinessStages(environmentSummaries),\n environments: environmentSummaries,\n blockers: findings.blockers,\n warnings: findings.warnings,\n gaps: findings.gaps,\n sourceFreshness: deriveReleaseReadinessSourceSummaries(environmentSummaries),\n evidenceIds: sortedReadinessUnique(environments.flatMap(({ evidenceIds }) => evidenceIds))\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"readiness-BtntBhDj.js","names":[],"sources":["../../../src/domain/authorizedShare.ts","../../../src/domain/readiness/material.ts","../../../src/domain/readiness/rollup.ts"],"sourcesContent":["import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport { EntityId, PersonId, SessionId, ShareId, WorkspaceId } from \"./identifiers.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Exact normalized entity scope granted to one authenticated person. */\nexport const AuthorizedShareTarget = Schema.TaggedStruct(\"entity\", {\n entityId: EntityId\n})\n\n/** Decoded exact authorized-share target. */\nexport type AuthorizedShareTarget = typeof AuthorizedShareTarget.Type\n\n/** Durable authenticated grant with immutable creation and optional revocation evidence. */\nexport const AuthorizedShareGrant = Schema.Struct({\n workspaceId: WorkspaceId,\n shareId: ShareId,\n target: AuthorizedShareTarget,\n granteePersonId: PersonId,\n createdByPersonId: PersonId,\n createdBySessionId: SessionId,\n createdAt: UtcTimestamp,\n expiresAt: UtcTimestamp,\n revokedAt: Schema.NullOr(UtcTimestamp)\n}).check(\n Schema.makeFilter(\n ({ createdAt, expiresAt }) => DateTime.Order(createdAt, expiresAt) < 0,\n { expected: \"authorized share expiry after creation\" }\n ),\n Schema.makeFilter(\n ({ createdAt, revokedAt }) => revokedAt === null || DateTime.Order(createdAt, revokedAt) <= 0,\n { expected: \"authorized share revocation at or after creation\" }\n )\n)\n\n/** Decoded durable authorized-share grant. */\nexport type AuthorizedShareGrant = typeof AuthorizedShareGrant.Type\n","import * as Schema from \"effect/Schema\"\n\nimport { EnvironmentId, ReadinessAssessmentId, ReleaseId, WorkspaceId } from \"../identifiers.js\"\nimport {\n MAX_READINESS_EVIDENCE_REFERENCES,\n ReadinessArtifactRevision,\n ReadinessCandidateDigest,\n ReadinessFactDefinition,\n type ReadinessFactDefinition as ReadinessFactDefinitionType,\n ReadinessFactObservation,\n type ReadinessFactObservation as ReadinessFactObservationType,\n ReadinessReleaseRevision,\n ReadinessRuleId,\n ReadinessRuleVersion\n} from \"./model.js\"\nimport { compareReadinessText, readinessDefinitionsShapeIsV1, readinessPolicyShapeIsV1 } from \"./policy.js\"\n\nconst unique = <Value>(values: ReadonlyArray<Value>): boolean => new Set(values).size === values.length\n\nconst CandidateMaterialBase = {\n workspaceId: WorkspaceId,\n releaseRevision: ReadinessReleaseRevision,\n artifactRevision: ReadinessArtifactRevision\n}\n\nconst readinessFactsAreValid = (input: {\n readonly definitions: ReadonlyArray<ReadinessFactDefinitionType>\n readonly observations: ReadonlyArray<ReadinessFactObservationType>\n}): boolean => {\n const definitionsById = new Map(input.definitions.map((definition) => [definition.factId, definition]))\n return unique(input.definitions.map(({ factId }) => factId)) &&\n unique(input.observations.map(({ factId }) => factId)) &&\n input.observations.every((observation) =>\n definitionsById.get(observation.factId)?.kind === observation.state._tag\n ) &&\n readinessPolicyShapeIsV1(input.definitions, input.observations) &&\n input.observations.reduce((total, observation) => total + observation.evidence.length, 0) <=\n MAX_READINESS_EVIDENCE_REFERENCES\n}\n\n/** Digest-free, complete material for one target-environment candidate. */\nexport const EnvironmentReadinessCandidateMaterial = Schema.Struct({\n ...CandidateMaterialBase,\n scope: Schema.TaggedStruct(\"environment\", {\n releaseId: ReleaseId,\n environmentId: EnvironmentId\n }),\n complete: Schema.Boolean,\n definitions: Schema.Array(ReadinessFactDefinition).check(Schema.isMaxLength(512)),\n observations: Schema.Array(ReadinessFactObservation).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(readinessFactsAreValid, {\n expected: \"complete, unique, evidence-bounded V1 readiness candidate material\"\n })\n)\n\n/** Decoded environment candidate material before deterministic normalization. */\nexport type EnvironmentReadinessCandidateMaterial = typeof EnvironmentReadinessCandidateMaterial.Type\n\n/** Exact child assessment bound into a release-scope candidate. */\nexport const ReleaseReadinessChildMaterial = Schema.Struct({\n assessmentId: ReadinessAssessmentId,\n environmentId: EnvironmentId,\n candidateDigest: ReadinessCandidateDigest\n})\n\n/** Decoded release child material. */\nexport type ReleaseReadinessChildMaterial = typeof ReleaseReadinessChildMaterial.Type\n\n/** Digest-free material for one release candidate and its exact environment assessments. */\nexport const ReleaseReadinessCandidateMaterial = Schema.Struct({\n ...CandidateMaterialBase,\n scope: Schema.TaggedStruct(\"release\", { releaseId: ReleaseId }),\n environments: Schema.NonEmptyArray(ReleaseReadinessChildMaterial).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(({ environments }) => unique(environments.map(({ environmentId }) => environmentId)), {\n expected: \"release candidate environment identities to be unique\"\n }),\n Schema.makeFilter(({ environments }) => unique(environments.map(({ assessmentId }) => assessmentId)), {\n expected: \"release candidate assessment identities to be unique\"\n })\n)\n\n/** Decoded release candidate material before deterministic normalization. */\nexport type ReleaseReadinessCandidateMaterial = typeof ReleaseReadinessCandidateMaterial.Type\n\n/** Digest-free immutable readiness-rule snapshot. */\nexport const ReadinessRuleMaterial = Schema.Struct({\n ruleId: ReadinessRuleId,\n version: ReadinessRuleVersion,\n definitions: Schema.Array(ReadinessFactDefinition).check(Schema.isNonEmpty(), Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(({ definitions }) => unique(definitions.map(({ factId }) => factId)), {\n expected: \"readiness rule fact identities to be unique\"\n }),\n Schema.makeFilter(({ definitions }) => readinessDefinitionsShapeIsV1(definitions), {\n expected: \"readiness rule material to contain the complete V1 policy shape\"\n })\n)\n\n/** Decoded rule material before deterministic normalization. */\nexport type ReadinessRuleMaterial = typeof ReadinessRuleMaterial.Type\n\nconst normalizeDefinitions = (\n definitions: ReadonlyArray<ReadinessFactDefinitionType>\n): Array<ReadinessFactDefinitionType> =>\n [...definitions].sort((left, right) => compareReadinessText(left.factId, right.factId))\n\nconst normalizeObservations = (\n observations: ReadonlyArray<ReadinessFactObservationType>\n): Array<ReadinessFactObservationType> =>\n observations\n .map((observation) => ({\n ...observation,\n evidence: [...observation.evidence].sort((left, right) => compareReadinessText(left.evidenceId, right.evidenceId))\n }))\n .sort((left, right) => compareReadinessText(left.factId, right.factId))\n\n/** Return the only JSON ordering accepted for environment-candidate hashing. */\nexport const normalizeEnvironmentReadinessCandidateMaterial = (\n material: EnvironmentReadinessCandidateMaterial\n): EnvironmentReadinessCandidateMaterial => ({\n ...material,\n definitions: normalizeDefinitions(material.definitions),\n observations: normalizeObservations(material.observations)\n})\n\n/** Return the only JSON ordering accepted for release-candidate hashing. */\nexport const normalizeReleaseReadinessCandidateMaterial = (\n material: ReleaseReadinessCandidateMaterial\n): ReleaseReadinessCandidateMaterial => {\n const [first, ...remaining] = material.environments\n const environments: [ReleaseReadinessChildMaterial, ...Array<ReleaseReadinessChildMaterial>] = [\n first,\n ...remaining\n ]\n environments.sort((left, right) => compareReadinessText(left.environmentId, right.environmentId))\n return { ...material, environments }\n}\n\n/** Return the only JSON ordering accepted for rule hashing. */\nexport const normalizeReadinessRuleMaterial = (\n material: ReadinessRuleMaterial\n): ReadinessRuleMaterial => ({\n ...material,\n definitions: normalizeDefinitions(material.definitions)\n})\n","import type {\n EnvironmentReadinessAssessment,\n ReleaseReadinessAssessment,\n ReleaseReadinessRollupInput\n} from \"./model.js\"\nimport {\n compareReadinessText,\n deriveReleaseReadinessFindings,\n deriveReleaseReadinessNextEvaluationAt,\n deriveReleaseReadinessSourceSummaries,\n deriveReleaseReadinessStages,\n deriveReleaseReadinessVerdict,\n sortedReadinessUnique\n} from \"./policy.js\"\n\n/** Exact compact projection retained when an environment is rolled into a release. */\nexport const summarizeEnvironmentReadiness = (\n assessment: EnvironmentReadinessAssessment\n): ReleaseReadinessAssessment[\"environments\"][number] => ({\n assessmentId: assessment.assessmentId,\n environmentId: assessment.candidate.scope.environmentId,\n candidateDigest: assessment.candidate.digest,\n inputComplete: assessment.inputComplete,\n facts: assessment.facts,\n nextEvaluationAt: assessment.nextEvaluationAt,\n verdict: assessment.verdict,\n stages: assessment.stages,\n blockers: assessment.blockers,\n warnings: assessment.warnings,\n gaps: assessment.gaps,\n sourceFreshness: assessment.sourceFreshness,\n evidenceIds: assessment.evidenceIds\n})\n\n/** Pure deterministic roll-up of current target-environment assessments. */\nexport const rollUpReleaseReadiness = (\n input: ReleaseReadinessRollupInput\n): ReleaseReadinessAssessment => {\n const environments = input.environments\n .slice()\n .sort((left, right) => {\n return compareReadinessText(\n left.candidate.scope.environmentId,\n right.candidate.scope.environmentId\n )\n })\n const first = environments.reduce((earliest, assessment) =>\n compareReadinessText(\n assessment.candidate.scope.environmentId,\n earliest.candidate.scope.environmentId\n ) < 0\n ? assessment\n : earliest, input.environments[0])\n const environmentSummaries: ReleaseReadinessAssessment[\"environments\"] = [\n summarizeEnvironmentReadiness(first),\n ...environments.filter((assessment) => assessment !== first).map(summarizeEnvironmentReadiness)\n ]\n const findings = deriveReleaseReadinessFindings(environmentSummaries)\n\n return {\n _tag: \"release\",\n assessmentId: input.assessmentId,\n previousAssessmentId: input.previousAssessmentId,\n candidate: input.candidate,\n rule: first.rule,\n derivationVersion: first.derivationVersion,\n evaluatedAt: input.evaluatedAt,\n nextEvaluationAt: deriveReleaseReadinessNextEvaluationAt(environmentSummaries),\n verdict: deriveReleaseReadinessVerdict(environmentSummaries),\n stages: deriveReleaseReadinessStages(environmentSummaries),\n environments: environmentSummaries,\n blockers: findings.blockers,\n warnings: findings.warnings,\n gaps: findings.gaps,\n sourceFreshness: deriveReleaseReadinessSourceSummaries(environmentSummaries),\n evidenceIds: sortedReadinessUnique(environments.flatMap(({ evidenceIds }) => evidenceIds))\n }\n}\n"],"mappings":"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"}