@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":"releaseRunbookHydration.d.ts","sourceRoot":"","sources":["../../../../src/server/application/releaseRunbookHydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAEvE,UAAU,yBAAyB;IACjC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAA;CAC1E;AAED,yFAAyF;AACzF,eAAO,MAAM,iCAAiC,KAAK,CAAA;AACnD,eAAO,MAAM,2CAA2C,UAAY,CAAA;AASpE,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,GAClC,YAAY,8BAA8B,KACzC,aAAa,CAAC,QAAQ,CAqBxB,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;q7CA+CvC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"releaseSynchronization.d.ts","sourceRoot":"","sources":["../../../../src/server/application/releaseSynchronization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAIjD,OAAO,EAAE,WAAW,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAE7F,OAAO,EAAE,KAAK,aAAa,EAAsD,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAEL,6BAA6B,EAG9B,MAAM,+BAA+B,CAAA;AAoFtC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAMD,MAAM,MAAM,6BAA6B,GACrC;IACA,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzC,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzC,CAAA;AAEH,MAAM,MAAM,6BAA6B,GACrC,6BAA6B,GAC7B,2BAA2B,GAC3B,aAAa,GACb,MAAM,CAAC,WAAW,CAAA;AAiRtB,yFAAyF;AACzF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;qMAazC,CAAA;AAEF,iGAAiG;AACjG,eAAO,MAAM,4BAA4B,qMA0BvC,CAAA;AAEF,0FAA0F;AAC1F,eAAO,MAAM,gCAAgC,2GAgB3C,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,sBAAsB,0LA6HjC,CAAA;AAEF,2GAA2G;AAC3G,eAAO,MAAM,6BAA6B,6LAkDxC,CAAA"}
1
+ {"version":3,"file":"releaseSynchronization.d.ts","sourceRoot":"","sources":["../../../../src/server/application/releaseSynchronization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAIjD,OAAO,EAAE,WAAW,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAE7F,OAAO,EAAE,KAAK,aAAa,EAAsD,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAEL,6BAA6B,EAG9B,MAAM,+BAA+B,CAAA;AAoFtC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAMD,MAAM,MAAM,6BAA6B,GACrC;IACA,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzC,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACzC,CAAA;AAEH,MAAM,MAAM,6BAA6B,GACrC,6BAA6B,GAC7B,2BAA2B,GAC3B,aAAa,GACb,MAAM,CAAC,WAAW,CAAA;AAyRtB,yFAAyF;AACzF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;qMAazC,CAAA;AAEF,iGAAiG;AACjG,eAAO,MAAM,4BAA4B,qMA0BvC,CAAA;AAEF,0FAA0F;AAC1F,eAAO,MAAM,gCAAgC,2GAgB3C,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,sBAAsB,0LA6HjC,CAAA;AAEF,2GAA2G;AAC3G,eAAO,MAAM,6BAA6B,6LAkDxC,CAAA"}
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { Mt as WorkspaceId, vt as PersonId } from "../assets/descriptor-CKtTnhef.js";
3
- import { a as AgentProvider, r as AgentModelId } from "../assets/agent-CyZ40zs1.js";
4
- import { Ht as AgentLeaseOwner, Kn as WorkspaceName, cr as DatabaseInitializationError, dr as PersistenceConfigError, er as validateExistingControlCenterDatabase } from "../assets/relationshipInferenceMaterialization-DYBcaWhQ.js";
5
- import { Cr as publishDataRootMarker, Fr as MINIMUM_PR_REVIEW_BUDGET_MILLIS, Lr as TerminalRecovery, Rr as terminalRecoveryLayer, Sr as inspectFreshDataRootClaim, Tr as syncDataRootPath, Xn as ControlCenterBootstrap, _r as DATA_ROOT_PENDING_MARKER_PREFIX, a as decodeBindConfig, br as decodeControlCenterDataPaths, gr as DATA_ROOT_MARKER_V2_PREFIX, ir as verifyBackup, l as makeControlCenterServer, mr as DATA_ROOT_MARKER_NAME, rr as restoreBackup, tr as createOfflineVerifiedBackup, wr as publishFreshDataRootClaim, xr as decodeOperationalDataPaths, yn as ServerLifecycle, yr as boundDataRootMarkerContent } from "../assets/BindConfig-DIsf2Rnh.js";
2
+ import { _t as PersonId, jt as WorkspaceId } from "../assets/descriptor-CCvNzSZL.js";
3
+ import { a as AgentProvider, r as AgentModelId } from "../assets/agent-xQhAQXly.js";
4
+ import { Cr as DatabaseInitializationError, Er as PersistenceConfigError, Ut as AgentLeaseOwner, hr as validateExistingControlCenterDatabase, sr as WorkspaceName } from "../assets/relationshipInferenceMaterialization-Dyix96px.js";
5
+ import { Br as terminalRecoveryLayer, Cr as decodeOperationalDataPaths, Dr as syncDataRootPath, Er as publishFreshDataRootClaim, Lr as MINIMUM_PR_REVIEW_BUDGET_MILLIS, Qn as ControlCenterBootstrap, Sr as decodeControlCenterDataPaths, Tr as publishDataRootMarker, a as decodeBindConfig, ar as restoreBackup, gr as DATA_ROOT_MARKER_NAME, l as makeControlCenterServer, or as verifyBackup, rr as createOfflineVerifiedBackup, vr as DATA_ROOT_MARKER_V2_PREFIX, wr as inspectFreshDataRootClaim, xn as ServerLifecycle, xr as boundDataRootMarkerContent, yr as DATA_ROOT_PENDING_MARKER_PREFIX, zr as TerminalRecovery } from "../assets/BindConfig-DAASchDn.js";
6
6
  import * as Effect from "effect/Effect";
7
7
  import * as Schema from "effect/Schema";
8
8
  import * as Encoding from "effect/Encoding";
@@ -705,19 +705,19 @@ var findDatabaseInitializationError = (value, remainingWrapperDepth = 2) => {
705
705
  };
706
706
  var reportProgramFailure = (cause) => {
707
707
  const error = Cause.findErrorOption(cause);
708
- if (Option.exists(error, (value) => Predicate.hasProperty(value, "_tag") && value._tag === "ControlCenterCliUsageError")) return Effect.failCause(cause);
708
+ if (Option.exists(error, (value) => Predicate.hasProperty(value, "_tag") && value._tag === "ControlCenterCliUsageError")) return Effect.void;
709
709
  const databaseInitializationError = Option.flatMap(error, (value) => Option.fromNullishOr(findDatabaseInitializationError(value)));
710
710
  if (Option.isSome(databaseInitializationError)) {
711
711
  const operation = databaseInitializationError.value.operation;
712
- return writeStderrLine(`Control Center command failed (DatabaseInitializationError: ${operation}).`).pipe(Effect.andThen(operation === "verify-schema" ? writeStderrLine("The database schema does not match this pre-stable build. Back up the data root if needed, then explicitly recreate local development data or choose a new CONTROL_CENTER_DATA_ROOT. Automatic migrations are disabled until schema stability.") : Effect.void), Effect.andThen(Effect.failCause(cause)));
712
+ return writeStderrLine(`Control Center command failed (DatabaseInitializationError: ${operation}).`).pipe(Effect.andThen(operation === "verify-schema" ? writeStderrLine("The database schema does not match this pre-stable build. Back up the data root if needed, then explicitly recreate local development data or choose a new CONTROL_CENTER_DATA_ROOT. Automatic migrations are disabled until schema stability.") : Effect.void));
713
713
  }
714
714
  const errorTag = Option.flatMap(error, (value) => Predicate.hasProperty(value, "_tag") && typeof value._tag === "string" ? Option.some(value._tag) : Option.none());
715
715
  return writeStderrLine(Option.match(errorTag, {
716
716
  onNone: () => "Control Center command failed unexpectedly.",
717
717
  onSome: (tag) => `Control Center command failed (${tag}).`
718
- })).pipe(Effect.andThen(Effect.failCause(cause)));
718
+ }));
719
719
  };
720
- NodeRuntime.runMain(program.pipe(Effect.catchCause(reportProgramFailure), Effect.provide(NodeServices.layer)), { disableErrorReporting: true });
720
+ NodeRuntime.runMain(program.pipe(Effect.tapCause(reportProgramFailure), Effect.provide(NodeServices.layer)), { disableErrorReporting: true });
721
721
  //#endregion
722
722
  export {};
723
723
 
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","names":[],"sources":["../../../src/server/cliArguments.ts","../../../src/server/cliConfiguration.ts","../../../src/server/observability.ts","../../../src/server/cli.ts"],"sourcesContent":["/** Supported top-level CLI invocation after Node removes executable and script arguments. */\nexport type ControlCenterCliInvocation =\n | { readonly _tag: \"serve\" }\n | { readonly _tag: \"recover-owner\" }\n | { readonly _tag: \"backup\"; readonly archiveRoot: string }\n | { readonly _tag: \"verify-backup\"; readonly archiveRoot: string }\n | { readonly _tag: \"restore\"; readonly archiveRoot: string }\n | { readonly _tag: \"invalid\"; readonly command: string }\n\n/** Classify the exact supported CLI argument shapes without accepting trailing arguments. */\nexport const classifyControlCenterCliArguments = (\n arguments_: ReadonlyArray<string>\n): ControlCenterCliInvocation => {\n if (arguments_.length === 0) return { _tag: \"serve\" }\n if (arguments_.length === 1 && arguments_[0] === \"recover-owner\") {\n return { _tag: \"recover-owner\" }\n }\n const archiveRoot = arguments_[1]\n if (arguments_.length === 2 && archiveRoot !== undefined && archiveRoot !== \"\") {\n if (arguments_[0] === \"backup\") return { _tag: \"backup\", archiveRoot }\n if (arguments_[0] === \"verify-backup\") {\n return { _tag: \"verify-backup\", archiveRoot }\n }\n if (arguments_[0] === \"restore\") return { _tag: \"restore\", archiveRoot }\n }\n return { _tag: \"invalid\", command: arguments_.join(\" \") }\n}\n","import * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Encoding from \"effect/Encoding\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as Option from \"effect/Option\"\nimport * as Path from \"effect/Path\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { MINIMUM_PR_REVIEW_BUDGET_MILLIS } from \"./agent/PrReviewTiming.js\"\nimport {\n boundDataRootMarkerContent as boundMarkerContent,\n type ControlCenterDataPaths,\n DATA_ROOT_DIRECTORY_MODE,\n DATA_ROOT_MARKER_MAX_BYTES,\n DATA_ROOT_MARKER_MODE,\n DATA_ROOT_MARKER_NAME,\n DATA_ROOT_MARKER_V1_CONTENT,\n DATA_ROOT_MARKER_V2_PREFIX,\n DATA_ROOT_PENDING_MARKER_PREFIX,\n DATA_ROOT_STAGING_PREFIX,\n decodeControlCenterDataPaths,\n decodeOperationalDataPaths,\n type FreshDataRootClaimConflict,\n inspectFreshDataRootClaim,\n publishDataRootMarker,\n publishFreshDataRootClaim,\n type StagedDataRootWriter,\n syncDataRootPath\n} from \"./DataRootProtocol.js\"\nimport { validateExistingControlCenterDatabase } from \"./persistence/Database.js\"\nimport { PersistenceConfigError } from \"./persistence/errors.js\"\n\n/** Validated filesystem paths derived from the untrusted data-root environment value. */\nexport { decodeControlCenterDataPaths }\nexport type { ControlCenterDataPaths }\n\nconst PrReviewBudgetMillis = Schema.Int.check(\n Schema.isBetween({ minimum: MINIMUM_PR_REVIEW_BUDGET_MILLIS, maximum: 1_800_000 })\n)\n\nconst PrReviewSandboxDurationMillis = Schema.Int.check(\n Schema.isBetween({ minimum: 1, maximum: 1_800_000 })\n)\n\n/** Cross-field timing contract for one Review Agent Profile and its sbx lifetime. */\nexport const PrReviewTimingConfiguration = Schema.Struct({\n budgetMillis: PrReviewBudgetMillis,\n maximumSandboxDurationMillis: PrReviewSandboxDurationMillis\n}).check(\n Schema.makeFilter(\n ({ budgetMillis, maximumSandboxDurationMillis }) => budgetMillis <= maximumSandboxDurationMillis,\n { expected: \"a review budget no greater than the sbx session duration\" }\n )\n)\n\n/** Treat blank optional executable/template configuration as absent. */\nexport const optionalNonBlankConfigurationValue = (\n value: string\n): string | undefined => value.trim().length === 0 ? undefined : value\n\nconst DATA_ROOT_OWNER_PROBE_PREFIX = \".control-center-owner-\"\nconst SQLITE_HEADER = Uint8Array.from([\n 0x53,\n 0x51,\n 0x4c,\n 0x69,\n 0x74,\n 0x65,\n 0x20,\n 0x66,\n 0x6f,\n 0x72,\n 0x6d,\n 0x61,\n 0x74,\n 0x20,\n 0x33,\n 0x00\n])\n\nconst hasNoControlCharacters = (value: string): boolean =>\n Array.from(value).every((character) => {\n const codePoint = character.codePointAt(0)\n return (\n codePoint !== undefined && !((codePoint >= 0 && codePoint <= 0x1f) || (codePoint >= 0x7f && codePoint <= 0x9f))\n )\n })\n\nconst hasRandomHexSuffix = (entry: string, prefix: string): boolean => {\n if (!entry.startsWith(prefix)) return false\n const suffix = entry.slice(prefix.length)\n return suffix.length === 32 && Array.from(suffix).every((character) => /[0-9a-f]/u.test(character))\n}\n\nconst configurationError = (): PersistenceConfigError =>\n new PersistenceConfigError({\n message: \"Control Center data root must identify a private, dedicated application directory\"\n })\n\nconst mapConfigurationError = <Value, Failure, Requirements>(\n effect: Effect.Effect<Value, Failure, Requirements>\n): Effect.Effect<Value, PersistenceConfigError, Requirements> => effect.pipe(Effect.mapError(configurationError))\n\nconst sameOwner = (left: FileSystem.File.Info, right: FileSystem.File.Info): boolean =>\n Option.isSome(left.uid) && Option.isSome(right.uid) && left.uid.value === right.uid.value\n\nconst sameIdentity = (left: FileSystem.File.Info, right: FileSystem.File.Info): boolean =>\n left.dev === right.dev &&\n Option.isSome(left.ino) &&\n Option.isSome(right.ino) &&\n left.ino.value === right.ino.value &&\n sameOwner(left, right)\n\ninterface MarkerPublication {\n readonly claimBasename: string\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly markerPath: string\n readonly targetBasename: string\n}\n\ninterface LegacyDataRootValidation {\n readonly dataPaths: ControlCenterDataPaths\n readonly fileSystem: FileSystem.FileSystem\n readonly path: Path.Path\n readonly rootInfo: FileSystem.File.Info\n}\n\ninterface ProcessOwnershipVerification {\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly initialRootInfo: FileSystem.File.Info\n readonly path: Path.Path\n}\n\ninterface FreshDataRootPublication {\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly parent: string\n readonly path: Path.Path\n}\n\ninterface PendingMarkerCleanup {\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly path: Path.Path\n readonly rootInfo: FileSystem.File.Info\n}\n\ninterface LostClaimDetection {\n readonly fileSystem: FileSystem.FileSystem\n readonly parent: string\n readonly path: Path.Path\n readonly requestedClaimBasename: string\n}\n\ntype DataRootMarker =\n | { readonly _tag: \"Legacy\" }\n | { readonly _tag: \"Bound\"; readonly claimBasename: string; readonly targetBasename: string }\n\nconst decodeMarkerBasename = (\n path: Path.Path,\n encodedBasename: string\n): Result.Result<string, PersistenceConfigError> => {\n const decodedBasename = Encoding.decodeBase64UrlString(encodedBasename)\n if (\n Result.isFailure(decodedBasename) ||\n decodedBasename.success.length === 0 ||\n decodedBasename.success.length > 4_096 ||\n !hasNoControlCharacters(decodedBasename.success) ||\n decodedBasename.success === \".\" ||\n decodedBasename.success === \"..\" ||\n path.basename(decodedBasename.success) !== decodedBasename.success ||\n Encoding.encodeBase64Url(decodedBasename.success) !== encodedBasename\n ) {\n return Result.fail(configurationError())\n }\n return Result.succeed(decodedBasename.success)\n}\n\nconst decodeDataRootMarker = (\n path: Path.Path,\n content: string\n): Result.Result<DataRootMarker, PersistenceConfigError> => {\n if (content === DATA_ROOT_MARKER_V1_CONTENT) return Result.succeed({ _tag: \"Legacy\" })\n if (!content.startsWith(DATA_ROOT_MARKER_V2_PREFIX) || !content.endsWith(\"\\n\")) {\n return Result.fail(configurationError())\n }\n const encodedFields = content.slice(DATA_ROOT_MARKER_V2_PREFIX.length, -1).split(\"\\ntarget-basename:\")\n if (encodedFields.length !== 2) return Result.fail(configurationError())\n const encodedClaim = encodedFields[0]\n const encodedTarget = encodedFields[1]\n if (encodedClaim === undefined || encodedTarget === undefined) return Result.fail(configurationError())\n const claimBasename = decodeMarkerBasename(path, encodedClaim)\n if (Result.isFailure(claimBasename)) return Result.fail(claimBasename.failure)\n if (claimBasename.success.startsWith(DATA_ROOT_STAGING_PREFIX)) return Result.fail(configurationError())\n const targetBasename = decodeMarkerBasename(path, encodedTarget)\n if (Result.isFailure(targetBasename)) return Result.fail(targetBasename.failure)\n return Result.succeed({\n _tag: \"Bound\",\n claimBasename: claimBasename.success,\n targetBasename: targetBasename.success\n })\n}\n\nconst validatePrivateDirectory = Effect.fn(\"ControlCenterCli.validatePrivateDirectory\")(function*(\n fileSystem: FileSystem.FileSystem,\n dataRoot: string\n) {\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataRoot))\n const info = yield* mapConfigurationError(fileSystem.stat(dataRoot))\n if (\n canonicalRoot !== dataRoot ||\n info.type !== \"Directory\" ||\n (info.mode & 0o777) !== DATA_ROOT_DIRECTORY_MODE ||\n Option.isNone(info.uid) ||\n Option.isNone(info.ino)\n ) {\n return yield* configurationError()\n }\n return info\n})\n\nconst validateMarker = Effect.fn(\"ControlCenterCli.validateDataRootMarker\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n markerPath: string,\n rootInfo: FileSystem.File.Info\n) {\n const canonicalMarker = yield* mapConfigurationError(fileSystem.realPath(markerPath))\n const markerInfo = yield* mapConfigurationError(fileSystem.stat(markerPath))\n if (\n canonicalMarker !== markerPath ||\n markerInfo.type !== \"File\" ||\n (markerInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, markerInfo) ||\n Number(markerInfo.size) > DATA_ROOT_MARKER_MAX_BYTES\n ) {\n return yield* configurationError()\n }\n const content = yield* mapConfigurationError(fileSystem.readFileString(markerPath))\n return yield* Effect.fromResult(decodeDataRootMarker(path, content))\n})\n\nconst validateMarkerForClaim = Effect.fn(\"ControlCenterCli.validateDataRootMarkerForClaim\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n markerPath: string,\n rootInfo: FileSystem.File.Info,\n claimBasename: string,\n targetBasename: string\n) {\n const marker = yield* validateMarker(fileSystem, path, markerPath, rootInfo)\n if (\n marker._tag === \"Bound\" &&\n (marker.claimBasename !== claimBasename || marker.targetBasename !== targetBasename)\n ) {\n return yield* configurationError()\n }\n return marker\n})\n\nconst validateLegacyDataRoot = Effect.fn(\"ControlCenterCli.validateLegacyDataRoot\")(function*(\n request: LegacyDataRootValidation\n) {\n const { dataPaths, fileSystem, path, rootInfo } = request\n const databasePath = path.join(dataPaths.dataRoot, \"control-center.db\")\n const canonicalDatabase = yield* mapConfigurationError(fileSystem.realPath(databasePath))\n const databaseInfo = yield* mapConfigurationError(fileSystem.stat(databasePath))\n if (\n canonicalDatabase !== databasePath ||\n databaseInfo.type !== \"File\" ||\n !sameOwner(rootInfo, databaseInfo) ||\n Number(databaseInfo.size) < SQLITE_HEADER.length\n ) {\n return yield* configurationError()\n }\n\n const header = yield* Effect.scoped(\n mapConfigurationError(fileSystem.open(databasePath, { flag: \"r\" })).pipe(\n Effect.flatMap((file) => mapConfigurationError(file.readAlloc(SQLITE_HEADER.length)))\n )\n )\n if (\n Option.isNone(header) ||\n header.value.length !== SQLITE_HEADER.length ||\n !SQLITE_HEADER.every((byte, index) => header.value[index] === byte)\n ) return yield* configurationError()\n\n // The exact current schema is the durable identity shared by pre-marker\n // builds. Inspecting a scoped snapshot prevents SQLite journal\n // recovery or WAL bookkeeping from mutating a root before it is adopted.\n yield* Effect.scoped(\n Effect.gen(function*() {\n const snapshotRoot = yield* mapConfigurationError(\n fileSystem.makeTempDirectoryScoped({ prefix: \"control-center-legacy-snapshot-\" })\n )\n const snapshotDatabase = path.join(snapshotRoot, \"control-center.db\")\n yield* mapConfigurationError(fileSystem.copyFile(databasePath, snapshotDatabase))\n\n for (const suffix of [\"-wal\", \"-journal\"]) {\n const sidecar = `${databasePath}${suffix}`\n if (!(yield* mapConfigurationError(fileSystem.exists(sidecar)))) continue\n const canonicalSidecar = yield* mapConfigurationError(fileSystem.realPath(sidecar))\n const sidecarInfo = yield* mapConfigurationError(fileSystem.stat(sidecar))\n if (\n canonicalSidecar !== sidecar ||\n sidecarInfo.type !== \"File\" ||\n !sameOwner(rootInfo, sidecarInfo)\n ) return yield* configurationError()\n yield* mapConfigurationError(fileSystem.copyFile(sidecar, `${snapshotDatabase}${suffix}`))\n }\n\n yield* validateExistingControlCenterDatabase({\n blobRoot: path.join(snapshotRoot, \"blobs\"),\n busyTimeoutMilliseconds: dataPaths.persistenceConfig.busyTimeoutMilliseconds,\n databaseUrl: `file:${snapshotDatabase}`,\n maxConnections: dataPaths.persistenceConfig.maxConnections\n }).pipe(Effect.mapError(configurationError))\n })\n )\n})\n\nconst syncPath = Effect.fn(\"ControlCenterCli.syncDataRootPath\")(function*(\n _fileSystem: FileSystem.FileSystem,\n target: string\n) {\n yield* syncDataRootPath(target)\n})\n\nconst publishMarker = Effect.fn(\"ControlCenterCli.publishDataRootMarker\")(function*(\n request: MarkerPublication\n) {\n yield* publishDataRootMarker(request.dataRoot, request.claimBasename, request.targetBasename)\n})\n\nconst removeValidPendingMarkers = Effect.fn(\"ControlCenterCli.removeValidPendingMarkers\")(function*(\n request: PendingMarkerCleanup,\n claimBasename: string,\n targetBasename: string\n) {\n const { dataRoot, fileSystem, path, rootInfo } = request\n const entries = yield* mapConfigurationError(fileSystem.readDirectory(dataRoot))\n const pendingNames = entries.filter((entry) => hasRandomHexSuffix(entry, DATA_ROOT_PENDING_MARKER_PREFIX))\n const validPendingPaths: Array<string> = []\n\n for (const pendingName of pendingNames) {\n const pendingPath = path.join(dataRoot, pendingName)\n const canonicalPending = yield* mapConfigurationError(fileSystem.realPath(pendingPath))\n const pendingInfo = yield* mapConfigurationError(fileSystem.stat(pendingPath))\n if (\n canonicalPending !== pendingPath ||\n pendingInfo.type !== \"File\" ||\n (pendingInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, pendingInfo) ||\n Number(pendingInfo.size) > boundMarkerContent(claimBasename, targetBasename).length\n ) return yield* configurationError()\n\n const content = yield* mapConfigurationError(fileSystem.readFileString(pendingPath))\n if (\n !DATA_ROOT_MARKER_V1_CONTENT.startsWith(content) &&\n !boundMarkerContent(claimBasename, targetBasename).startsWith(content)\n ) return yield* configurationError()\n validPendingPaths.push(pendingPath)\n }\n\n for (const pendingPath of validPendingPaths) {\n const removed = yield* fileSystem.remove(pendingPath).pipe(Effect.result)\n if (Result.isFailure(removed) && removed.failure.reason._tag !== \"NotFound\") {\n return yield* configurationError()\n }\n }\n\n if (pendingNames.length > 0) yield* syncPath(fileSystem, dataRoot)\n})\n\nconst verifyProcessOwnership = Effect.fn(\"ControlCenterCli.verifyProcessOwnership\")(function*(\n request: ProcessOwnershipVerification\n) {\n const { cryptoService, dataRoot, fileSystem, initialRootInfo, path } = request\n const isExpectedRoot = (info: FileSystem.File.Info): boolean =>\n info.type === \"Directory\" &&\n (info.mode & 0o777) === DATA_ROOT_DIRECTORY_MODE &&\n sameIdentity(initialRootInfo, info)\n\n yield* Effect.scoped(\n Effect.uninterruptible(\n Effect.gen(function*() {\n const directory = yield* mapConfigurationError(fileSystem.open(dataRoot, { flag: \"r\" }))\n const directoryInfo = yield* mapConfigurationError(directory.stat)\n if (!isExpectedRoot(directoryInfo)) return yield* configurationError()\n\n const assertIdentity = Effect.gen(function*() {\n const current = yield* directory.stat.pipe(Effect.result)\n const named = yield* fileSystem.stat(dataRoot).pipe(Effect.result)\n const resolved = yield* fileSystem.realPath(dataRoot).pipe(Effect.result)\n if (\n Result.isFailure(current) ||\n Result.isFailure(named) ||\n Result.isFailure(resolved) ||\n resolved.success !== dataRoot ||\n !isExpectedRoot(current.success) ||\n !sameIdentity(current.success, named.success)\n ) return yield* configurationError()\n })\n\n yield* assertIdentity\n const random = yield* mapConfigurationError(cryptoService.randomBytes(16))\n const probePath = path.join(dataRoot, `${DATA_ROOT_OWNER_PROBE_PREFIX}${Encoding.encodeHex(random)}`)\n const probe = yield* mapConfigurationError(\n fileSystem.open(probePath, { flag: \"wx\", mode: DATA_ROOT_MARKER_MODE })\n )\n yield* Effect.addFinalizer(() =>\n fileSystem.remove(probePath, { force: true }).pipe(\n Effect.andThen(directory.sync),\n Effect.ignore\n )\n )\n yield* mapConfigurationError(fileSystem.chmod(probePath, DATA_ROOT_MARKER_MODE))\n const probeInfo = yield* mapConfigurationError(probe.stat)\n if (\n probeInfo.type !== \"File\" ||\n (probeInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(directoryInfo, probeInfo)\n ) return yield* configurationError()\n\n yield* assertIdentity\n yield* mapConfigurationError(fileSystem.remove(probePath))\n yield* mapConfigurationError(directory.sync)\n yield* assertIdentity\n })\n )\n )\n})\n\nconst resolveStagingRoot = (path: Path.Path, parent: string, target: string): Option.Option<string> => {\n const name = path.basename(target)\n return !path.isAbsolute(target) && target === name && name.startsWith(DATA_ROOT_STAGING_PREFIX)\n ? Option.some(path.join(parent, name))\n : Option.none()\n}\n\nconst isBase64UrlPrefix = (value: string): boolean =>\n Array.from(value).every((character) => /[0-9A-Za-z_-]/u.test(character))\n\nconst isPotentialBoundMarkerPrefix = (path: Path.Path, content: string): boolean => {\n if (DATA_ROOT_MARKER_V2_PREFIX.startsWith(content)) return true\n if (!content.startsWith(DATA_ROOT_MARKER_V2_PREFIX)) return false\n const remaining = content.slice(DATA_ROOT_MARKER_V2_PREFIX.length)\n const claimTerminator = remaining.indexOf(\"\\n\")\n if (claimTerminator === -1) return isBase64UrlPrefix(remaining)\n const encodedClaim = remaining.slice(0, claimTerminator)\n if (!isBase64UrlPrefix(encodedClaim)) return false\n\n const targetLabel = \"target-basename:\"\n const targetField = remaining.slice(claimTerminator + 1)\n if (targetLabel.startsWith(targetField)) return true\n if (!targetField.startsWith(targetLabel)) return false\n const encodedTargetWithTerminator = targetField.slice(targetLabel.length)\n if (!encodedTargetWithTerminator.endsWith(\"\\n\")) return isBase64UrlPrefix(encodedTargetWithTerminator)\n return Result.isSuccess(decodeDataRootMarker(path, content))\n}\n\nconst isPotentialMarkerPrefix = (path: Path.Path, content: string): boolean =>\n DATA_ROOT_MARKER_V1_CONTENT.startsWith(content) || isPotentialBoundMarkerPrefix(path, content)\n\nconst validateProtocolArtifact = Effect.fn(\"ControlCenterCli.validateDataRootProtocolArtifact\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n stagingRoot: string,\n rootInfo: FileSystem.File.Info,\n entry: string\n) {\n const isFinalMarker = entry === DATA_ROOT_MARKER_NAME\n const isOwnerProbe = hasRandomHexSuffix(entry, DATA_ROOT_OWNER_PROBE_PREFIX)\n const isPendingMarker = hasRandomHexSuffix(entry, DATA_ROOT_PENDING_MARKER_PREFIX)\n if (!isFinalMarker && !isOwnerProbe && !isPendingMarker) return false\n\n const artifactPath = path.join(stagingRoot, entry)\n const canonicalArtifact = yield* mapConfigurationError(fileSystem.realPath(artifactPath))\n const artifactInfo = yield* mapConfigurationError(fileSystem.stat(artifactPath))\n if (\n canonicalArtifact !== artifactPath ||\n artifactInfo.type !== \"File\" ||\n (artifactInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, artifactInfo)\n ) return yield* configurationError()\n\n if (isFinalMarker) {\n if (Number(artifactInfo.size) > DATA_ROOT_MARKER_MAX_BYTES) return yield* configurationError()\n const content = yield* mapConfigurationError(fileSystem.readFileString(artifactPath))\n const marker = decodeDataRootMarker(path, content)\n if (\n Result.isFailure(marker) ||\n (marker.success._tag === \"Bound\" && marker.success.targetBasename !== path.basename(stagingRoot))\n ) return yield* configurationError()\n return true\n }\n\n if (isOwnerProbe) {\n if (Number(artifactInfo.size) !== 0) return yield* configurationError()\n return true\n }\n\n if (Number(artifactInfo.size) > DATA_ROOT_MARKER_MAX_BYTES) return yield* configurationError()\n const content = yield* mapConfigurationError(fileSystem.readFileString(artifactPath))\n const completeMarker = decodeDataRootMarker(path, content)\n if (\n Result.isSuccess(completeMarker) &&\n completeMarker.success._tag === \"Bound\" &&\n completeMarker.success.targetBasename !== path.basename(stagingRoot)\n ) return yield* configurationError()\n if (!isPotentialMarkerPrefix(path, content)) return yield* configurationError()\n return true\n})\n\nconst inspectLostDataRootClaims = Effect.fn(\"ControlCenterCli.inspectLostDataRootClaims\")(function*(\n request: LostClaimDetection\n) {\n const { fileSystem, parent, path, requestedClaimBasename } = request\n const entries = yield* mapConfigurationError(fileSystem.readDirectory(parent))\n for (const entry of entries) {\n if (!entry.startsWith(DATA_ROOT_STAGING_PREFIX) || path.basename(entry) !== entry) continue\n const stagingRoot = path.join(parent, entry)\n const rootInfo = yield* validatePrivateDirectory(fileSystem, stagingRoot)\n const stagingEntries = yield* mapConfigurationError(fileSystem.readDirectory(stagingRoot))\n let hasDurableEntry = false\n for (const name of stagingEntries) {\n if (!(yield* validateProtocolArtifact(fileSystem, path, stagingRoot, rootInfo, name))) {\n hasDurableEntry = true\n }\n }\n if (!hasDurableEntry) continue\n\n const marker = yield* validateMarker(\n fileSystem,\n path,\n path.join(stagingRoot, DATA_ROOT_MARKER_NAME),\n rootInfo\n )\n if (marker._tag === \"Legacy\") return yield* configurationError()\n if (marker.targetBasename !== entry) return yield* configurationError()\n if (marker.claimBasename !== requestedClaimBasename) continue\n\n const boundClaim = path.join(parent, marker.claimBasename)\n const claimedTarget = yield* fileSystem.readLink(boundClaim).pipe(Effect.result)\n if (Result.isFailure(claimedTarget) || claimedTarget.success !== entry) {\n return yield* configurationError()\n }\n }\n})\n\nconst refuseLostDataRootClaim = Effect.fn(\"ControlCenterCli.refuseLostDataRootClaim\")(function*(\n request: LostClaimDetection\n) {\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const inspected = yield* inspectLostDataRootClaims(request).pipe(Effect.result)\n if (Result.isSuccess(inspected)) return\n if (attempt === 2) return yield* Effect.fail(inspected.failure)\n yield* Effect.yieldNow\n }\n})\n\nconst resolveClaimedDataRoot = Effect.fn(\"ControlCenterCli.resolveClaimedDataRoot\")(function*(\n request: FreshDataRootPublication\n) {\n const { cryptoService, dataRoot, fileSystem, parent, path } = request\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataRoot))\n if (canonicalRoot === dataRoot) return dataRoot\n\n const claimedTarget = yield* mapConfigurationError(fileSystem.readLink(dataRoot))\n const stagingRoot = resolveStagingRoot(path, parent, claimedTarget)\n if (Option.isNone(stagingRoot)) return yield* configurationError()\n\n const stagingInfo = yield* validatePrivateDirectory(fileSystem, stagingRoot.value)\n const marker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n path.join(stagingRoot.value, DATA_ROOT_MARKER_NAME),\n stagingInfo,\n path.basename(dataRoot),\n path.basename(stagingRoot.value)\n )\n if (marker._tag === \"Legacy\") return yield* configurationError()\n yield* verifyProcessOwnership({\n cryptoService,\n dataRoot: stagingRoot.value,\n fileSystem,\n initialRootInfo: stagingInfo,\n path\n })\n return stagingRoot.value\n})\n\nconst publishFreshDataRoot = Effect.fn(\"ControlCenterCli.publishFreshDataRoot\")(function*(\n request: FreshDataRootPublication\n) {\n const location = yield* inspectFreshDataRootClaim(request.dataRoot).pipe(Effect.mapError(configurationError))\n yield* publishFreshDataRootClaim(location, false, () => Effect.void).pipe(\n Effect.mapError((error) =>\n Predicate.isTagged(error, \"FreshDataRootClaimConflict\") || Predicate.isTagged(error, \"DataRootProtocolError\")\n ? configurationError()\n : error\n )\n )\n})\n\n/**\n * Populate and exclusively publish a genuinely fresh configured data root.\n * The initializer may be interrupted while its unclaimed staging root is cleaned;\n * the completed root is exposed only by the final relative-symlink claim.\n */\nexport const claimFreshControlCenterDataRoot = Effect.fn(\"claimFreshControlCenterDataRoot\")(function*<\n Failure,\n Requirements\n>(\n dataPaths: ControlCenterDataPaths,\n initialize: (\n writer: StagedDataRootWriter\n ) => Effect.Effect<void, Failure, Requirements>\n): Effect.fn.Return<\n ControlCenterDataPaths,\n Failure | FreshDataRootClaimConflict | PersistenceConfigError,\n Crypto.Crypto | FileSystem.FileSystem | Path.Path | Requirements\n> {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n if (yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot))) {\n return yield* configurationError()\n }\n yield* mapConfigurationError(fileSystem.makeDirectory(parent, { recursive: true }))\n yield* refuseLostDataRootClaim({\n fileSystem,\n parent,\n path,\n requestedClaimBasename: claimBasename\n })\n const location = yield* inspectFreshDataRootClaim(dataPaths.dataRoot).pipe(Effect.mapError(configurationError))\n return yield* publishFreshDataRootClaim(location, true, initialize).pipe(\n Effect.mapError((error) => Predicate.isTagged(error, \"DataRootProtocolError\") ? configurationError() : error)\n )\n})\n\n/** Resolve an already-prepared data root without creating, repairing, cleaning, or migrating it. */\nexport const resolvePreparedControlCenterDataRoot = Effect.fn(\n \"resolvePreparedControlCenterDataRoot\"\n)(function*(\n dataPaths: ControlCenterDataPaths\n): Effect.fn.Return<ControlCenterDataPaths, PersistenceConfigError, FileSystem.FileSystem | Path.Path> {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n if (!(yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot)))) {\n return yield* configurationError()\n }\n\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataPaths.dataRoot))\n let operationalPaths = dataPaths\n if (canonicalRoot !== dataPaths.dataRoot) {\n const claimedTarget = yield* mapConfigurationError(fileSystem.readLink(dataPaths.dataRoot))\n const stagingRoot = resolveStagingRoot(path, parent, claimedTarget)\n if (Option.isNone(stagingRoot) || stagingRoot.value !== canonicalRoot) {\n return yield* configurationError()\n }\n operationalPaths = yield* decodeOperationalDataPaths(stagingRoot.value)\n }\n\n const rootInfo = yield* validatePrivateDirectory(fileSystem, operationalPaths.dataRoot)\n const markerPath = path.join(operationalPaths.dataRoot, DATA_ROOT_MARKER_NAME)\n if (!(yield* mapConfigurationError(fileSystem.exists(markerPath)))) return yield* configurationError()\n const marker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n path.basename(operationalPaths.dataRoot)\n )\n if (marker._tag !== \"Bound\") return yield* configurationError()\n return operationalPaths\n})\n\n/** Create or verify a dedicated data root and return its canonical operational paths. */\nexport const prepareControlCenterDataRoot = Effect.fn(\"prepareControlCenterDataRoot\")(function*(\n dataPaths: ControlCenterDataPaths\n): Effect.fn.Return<ControlCenterDataPaths, PersistenceConfigError, Crypto.Crypto | FileSystem.FileSystem | Path.Path> {\n const cryptoService = yield* Crypto.Crypto\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n const existed = yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot))\n\n if (!existed) {\n yield* mapConfigurationError(fileSystem.makeDirectory(parent, { recursive: true }))\n yield* refuseLostDataRootClaim({\n fileSystem,\n parent,\n path,\n requestedClaimBasename: claimBasename\n })\n yield* publishFreshDataRoot({\n cryptoService,\n dataRoot: dataPaths.dataRoot,\n fileSystem,\n parent,\n path\n })\n }\n\n const operationalRoot = yield* resolveClaimedDataRoot({\n cryptoService,\n dataRoot: dataPaths.dataRoot,\n fileSystem,\n parent,\n path\n })\n const operationalPaths = operationalRoot === dataPaths.dataRoot\n ? dataPaths\n : yield* decodeOperationalDataPaths(operationalRoot)\n\n const rootInfo = yield* validatePrivateDirectory(fileSystem, operationalPaths.dataRoot)\n const targetBasename = path.basename(operationalPaths.dataRoot)\n const markerPath = path.join(operationalPaths.dataRoot, DATA_ROOT_MARKER_NAME)\n const hasMarker = yield* mapConfigurationError(fileSystem.exists(markerPath))\n const existingMarker = hasMarker\n ? Option.some(\n yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n targetBasename\n )\n )\n : Option.none<DataRootMarker>()\n yield* verifyProcessOwnership({\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n initialRootInfo: rootInfo,\n path\n })\n if (Option.isNone(existingMarker)) {\n yield* validateLegacyDataRoot({ dataPaths: operationalPaths, fileSystem, path, rootInfo })\n yield* removeValidPendingMarkers(\n {\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n path,\n rootInfo\n },\n claimBasename,\n targetBasename\n )\n yield* publishMarker({\n claimBasename,\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n markerPath,\n targetBasename\n })\n } else {\n yield* removeValidPendingMarkers(\n {\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n path,\n rootInfo\n },\n claimBasename,\n targetBasename\n )\n if (existingMarker.value._tag === \"Legacy\") {\n yield* publishMarker({\n claimBasename,\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n markerPath,\n targetBasename\n })\n }\n }\n const finalMarker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n targetBasename\n )\n if (finalMarker._tag !== \"Bound\") return yield* configurationError()\n return operationalPaths\n})\n","import * as Config from \"effect/Config\"\nimport * as ConfigProvider from \"effect/ConfigProvider\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport { FetchHttpClient } from \"effect/unstable/http\"\nimport { OtlpLogger, OtlpSerialization, OtlpTracer } from \"effect/unstable/observability\"\n\nconst resource = {\n serviceName: \"control-center\"\n}\n\nconst activation = Config.all({\n baseEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_ENDPOINT\").pipe(Config.withDefault(\"\")),\n disabled: Config.string(\"OTEL_SDK_DISABLED\").pipe(Config.withDefault(\"\")),\n logsEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT\").pipe(Config.withDefault(\"\")),\n logsExporters: Config.string(\"OTEL_LOGS_EXPORTER\").pipe(Config.withDefault(\"\")),\n logsProtocol: Config.string(\"OTEL_EXPORTER_OTLP_LOGS_PROTOCOL\").pipe(Config.withDefault(\"\")),\n protocol: Config.string(\"OTEL_EXPORTER_OTLP_PROTOCOL\").pipe(Config.withDefault(\"http/protobuf\")),\n tracesEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT\").pipe(Config.withDefault(\"\")),\n tracesExporters: Config.string(\"OTEL_TRACES_EXPORTER\").pipe(Config.withDefault(\"\")),\n tracesProtocol: Config.string(\"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL\").pipe(Config.withDefault(\"\"))\n})\n\nconst includesOtlp = (exporters: string): boolean =>\n exporters.split(\",\").some((exporter) => exporter.trim().toLowerCase() === \"otlp\")\n\nconst OtlpHttpProtocol = Schema.Literals([\"http/json\", \"http/protobuf\"])\ntype OtlpHttpProtocol = typeof OtlpHttpProtocol.Type\ntype OtlpSignal = \"logs\" | \"traces\"\n\nconst optionalIntegerConfigurationKeys = new Set([\n \"OTEL_BLRP_EXPORT_TIMEOUT\",\n \"OTEL_BLRP_MAX_EXPORT_BATCH_SIZE\",\n \"OTEL_BLRP_SCHEDULE_DELAY\",\n \"OTEL_BSP_EXPORT_TIMEOUT\",\n \"OTEL_BSP_MAX_EXPORT_BATCH_SIZE\",\n \"OTEL_BSP_SCHEDULE_DELAY\",\n \"OTEL_EXPORTER_OTLP_LOGS_TIMEOUT\",\n \"OTEL_EXPORTER_OTLP_TIMEOUT\",\n \"OTEL_EXPORTER_OTLP_TRACES_TIMEOUT\"\n])\n\nconst positiveScheduleDelayConfigurationKeys = new Set([\n \"OTEL_BLRP_SCHEDULE_DELAY\",\n \"OTEL_BSP_SCHEDULE_DELAY\"\n])\n\nclass ObservabilityConfigurationError extends Schema.TaggedErrorClass<ObservabilityConfigurationError>()(\n \"ObservabilityConfigurationError\",\n {\n reason: Schema.Literals([\"invalid-endpoint\", \"unsupported-protocol\"]),\n signal: Schema.Literals([\"logs\", \"traces\"])\n }\n) {}\n\nconst validateSignalEndpoint = Effect.fn(\"ControlCenterObservability.validateSignalEndpoint\")(function*(\n signal: OtlpSignal,\n endpoint: string\n) {\n if (endpoint === \"\") return\n const url = yield* Schema.decodeUnknownEffect(Schema.URLFromString)(endpoint).pipe(\n Effect.mapError(() => new ObservabilityConfigurationError({ reason: \"invalid-endpoint\", signal }))\n )\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return yield* new ObservabilityConfigurationError({ reason: \"invalid-endpoint\", signal })\n }\n})\n\nconst resolveProtocol = Effect.fn(\"ControlCenterObservability.resolveProtocol\")(function*(\n signal: OtlpSignal,\n signalProtocol: string,\n baseProtocol: string\n) {\n const protocol = (signalProtocol.trim() === \"\" ? baseProtocol : signalProtocol).trim().toLowerCase()\n return yield* Schema.decodeUnknownEffect(OtlpHttpProtocol)(protocol).pipe(\n Effect.mapError(() => new ObservabilityConfigurationError({ reason: \"unsupported-protocol\", signal }))\n )\n})\n\nconst defaultEndpointLayer = ConfigProvider.layerAdd(\n ConfigProvider.fromEnv({ env: { OTEL_EXPORTER_OTLP_ENDPOINT: \"http://localhost:4318\" } })\n)\n\nconst parseSdkDisabled = Effect.fn(\"ControlCenterObservability.parseSdkDisabled\")(function*(value: string) {\n const normalized = value.trim().toLowerCase()\n if (normalized === \"true\") return true\n if (normalized === \"\" || normalized === \"false\") return false\n yield* Effect.logWarning(\"Ignoring invalid OTEL_SDK_DISABLED value; expected true or false.\")\n return false\n})\n\nconst decodeIntegerConfigurationValue = Schema.decodeUnknownOption(Schema.toCodecStringTree(Schema.Int))\n\nconst sanitizedConfigProvider = (\n provider: ConfigProvider.ConfigProvider,\n sdkDisabled: boolean\n): ConfigProvider.ConfigProvider =>\n ConfigProvider.make((path) => {\n if (path.length === 1 && path[0] === \"OTEL_SDK_DISABLED\") {\n return Effect.succeed(ConfigProvider.makeValue(sdkDisabled ? \"true\" : \"false\"))\n }\n return provider.load(path).pipe(\n Effect.map((node) => {\n if (\n path.length !== 1 ||\n typeof path[0] !== \"string\" ||\n !optionalIntegerConfigurationKeys.has(path[0]) ||\n node === undefined\n ) {\n return node\n }\n const value = node.value\n if (value === undefined) return undefined\n const integer = decodeIntegerConfigurationValue(value)\n return Option.isNone(integer) ||\n (positiveScheduleDelayConfigurationKeys.has(path[0]) && integer.value <= 0)\n ? undefined\n : node\n })\n )\n })\n\nconst serializationLayer = (protocol: OtlpHttpProtocol) =>\n protocol === \"http/json\" ? OtlpSerialization.layerJson : OtlpSerialization.layerProtobuf\n\nconst loggerLayer = (protocol: OtlpHttpProtocol) =>\n OtlpLogger.layerFromConfig({ resource }).pipe(\n Layer.provide(serializationLayer(protocol)),\n Layer.provide(defaultEndpointLayer)\n )\n\nconst tracerLayer = (protocol: OtlpHttpProtocol) =>\n OtlpTracer.layerFromConfig({ resource }).pipe(\n Layer.provide(serializationLayer(protocol)),\n Layer.provide(defaultEndpointLayer)\n )\n\nexport const controlCenterTelemetryLayer = Effect.gen(function*() {\n const configured = yield* activation\n const sdkDisabled = yield* parseSdkDisabled(configured.disabled)\n if (sdkDisabled) return Layer.empty\n\n const provider = yield* ConfigProvider.ConfigProvider\n\n const logsEnabled = includesOtlp(configured.logsExporters)\n const tracesEnabled = includesOtlp(configured.tracesExporters)\n if (logsEnabled) {\n yield* validateSignalEndpoint(\n \"logs\",\n configured.logsEndpoint === \"\" ? configured.baseEndpoint : configured.logsEndpoint\n )\n }\n if (tracesEnabled) {\n yield* validateSignalEndpoint(\n \"traces\",\n configured.tracesEndpoint === \"\" ? configured.baseEndpoint : configured.tracesEndpoint\n )\n }\n const logsProtocol = logsEnabled\n ? yield* resolveProtocol(\"logs\", configured.logsProtocol, configured.protocol)\n : \"http/protobuf\"\n const tracesProtocol = tracesEnabled\n ? yield* resolveProtocol(\"traces\", configured.tracesProtocol, configured.protocol)\n : \"http/protobuf\"\n\n return Layer.merge(\n logsEnabled ? loggerLayer(logsProtocol) : Layer.empty,\n tracesEnabled ? tracerLayer(tracesProtocol) : Layer.empty\n ).pipe(Layer.provide(ConfigProvider.layer(sanitizedConfigProvider(provider, sdkDisabled))))\n}).pipe(Layer.unwrap)\n\nexport const ControlCenterObservabilityLive = controlCenterTelemetryLayer.pipe(Layer.provide(FetchHttpClient.layer))\n","#!/usr/bin/env node\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Config from \"effect/Config\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Exit from \"effect/Exit\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Path from \"effect/Path\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Redacted from \"effect/Redacted\"\nimport * as Schema from \"effect/Schema\"\nimport * as Scope from \"effect/Scope\"\nimport * as Stdio from \"effect/Stdio\"\nimport * as Stream from \"effect/Stream\"\n\nimport { AgentModelId, AgentProvider } from \"../api/agent.js\"\nimport { PersonId, WorkspaceId } from \"../domain/identifiers.js\"\nimport { TerminalRecovery, terminalRecoveryLayer } from \"./auth/TerminalRecovery.js\"\nimport { classifyControlCenterCliArguments } from \"./cliArguments.js\"\nimport {\n decodeControlCenterDataPaths,\n optionalNonBlankConfigurationValue,\n prepareControlCenterDataRoot,\n PrReviewTimingConfiguration,\n resolvePreparedControlCenterDataRoot\n} from \"./cliConfiguration.js\"\nimport { ControlCenterObservabilityLive } from \"./observability.js\"\nimport {\n type BackupVerification,\n createOfflineVerifiedBackup,\n restoreBackup,\n verifyBackup\n} from \"./persistence/backup/index.js\"\nimport { DatabaseInitializationError } from \"./persistence/errors.js\"\nimport { AgentLeaseOwner } from \"./persistence/repositories/agentJobModels.js\"\nimport { WorkspaceName } from \"./persistence/repositories/models.js\"\nimport { ControlCenterBootstrap } from \"./runtime/Bootstrap.js\"\nimport { makeControlCenterServer } from \"./runtime/ControlCenterServer.js\"\nimport { ServerLifecycle } from \"./runtime/ServerLifecycle.js\"\nimport { decodeBindConfig } from \"./security/BindConfig.js\"\n\nconst DEFAULT_WORKSPACE_ID = WorkspaceId.make(\"01890f6f-6d6a-7cc0-98d2-000000000001\")\nconst DEFAULT_OWNER_ID = PersonId.make(\"01890f6f-6d6a-7cc0-98d2-000000000002\")\n\nconst commaSeparated = (value: string): ReadonlyArray<string> =>\n value\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part.length > 0)\n\nconst dataRootConfiguration = Config.string(\"CONTROL_CENTER_DATA_ROOT\").pipe(Config.withDefault(\".control-center\"))\n\nconst serverConfiguration = Config.all({\n agentClaudeExecutable: Config.string(\"CONTROL_CENTER_AGENT_CLAUDE_EXECUTABLE\").pipe(Config.withDefault(\"\")),\n agentClaudeModel: Config.string(\"CONTROL_CENTER_AGENT_CLAUDE_MODEL\").pipe(Config.withDefault(\"\")),\n agentCodexExecutable: Config.string(\"CONTROL_CENTER_AGENT_CODEX_EXECUTABLE\").pipe(Config.withDefault(\"\")),\n agentCodexModel: Config.string(\"CONTROL_CENTER_AGENT_CODEX_MODEL\").pipe(Config.withDefault(\"\")),\n agentOpenAiApiKey: Config.redacted(\"CONTROL_CENTER_AGENT_OPENAI_API_KEY\").pipe(\n Config.withDefault(Redacted.make(\"\"))\n ),\n agentOpenAiApiUrl: Config.string(\"CONTROL_CENTER_AGENT_OPENAI_API_URL\").pipe(Config.withDefault(\"\")),\n agentOpenAiModel: Config.string(\"CONTROL_CENTER_AGENT_OPENAI_MODEL\").pipe(Config.withDefault(\"\")),\n agentCwd: Config.string(\"CONTROL_CENTER_AGENT_CWD\").pipe(Config.withDefault(\"\")),\n agentProviders: Config.string(\"CONTROL_CENTER_AGENT_PROVIDERS\").pipe(Config.withDefault(\"\")),\n prReviewSbxEnabled: Config.boolean(\"CONTROL_CENTER_PR_REVIEW_SBX_ENABLED\").pipe(Config.withDefault(false)),\n prReviewSbxExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_SBX_EXECUTABLE\").pipe(Config.withDefault(\"sbx\")),\n prReviewSbxTemplate: Config.string(\"CONTROL_CENTER_PR_REVIEW_SBX_TEMPLATE\").pipe(Config.withDefault(\"\")),\n prReviewCodexExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_CODEX_EXECUTABLE\").pipe(\n Config.withDefault(\"codex\")\n ),\n prReviewClaudeExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_CLAUDE_EXECUTABLE\").pipe(\n Config.withDefault(\"claude\")\n ),\n prReviewBudgetMillis: Config.int(\"CONTROL_CENTER_PR_REVIEW_BUDGET_MILLIS\").pipe(\n Config.withDefault(1_200_000)\n ),\n prReviewMaximumDurationMillis: Config.int(\"CONTROL_CENTER_PR_REVIEW_MAXIMUM_DURATION_MILLIS\").pipe(\n Config.withDefault(1_200_000)\n ),\n allowedHosts: Config.string(\"CONTROL_CENTER_ALLOWED_HOSTS\").pipe(Config.withDefault(\"\")),\n allowedOrigins: Config.string(\"CONTROL_CENTER_ALLOWED_ORIGINS\").pipe(Config.withDefault(\"\")),\n allowInsecureLan: Config.boolean(\"CONTROL_CENTER_ALLOW_INSECURE_LAN\").pipe(Config.withDefault(false)),\n directTlsCertificateRef: Config.string(\"CONTROL_CENTER_TLS_CERTIFICATE_REF\").pipe(Config.withDefault(\"\")),\n directTlsPrivateKeyRef: Config.string(\"CONTROL_CENTER_TLS_PRIVATE_KEY_REF\").pipe(Config.withDefault(\"\")),\n host: Config.string(\"CONTROL_CENTER_HOST\").pipe(Config.withDefault(\"127.0.0.1\")),\n port: Config.int(\"CONTROL_CENTER_PORT\").pipe(Config.withDefault(4173)),\n publicOrigin: Config.string(\"CONTROL_CENTER_PUBLIC_ORIGIN\").pipe(Config.withDefault(\"\")),\n trustedProxyAddresses: Config.string(\"CONTROL_CENTER_TRUSTED_PROXY_ADDRESSES\").pipe(Config.withDefault(\"\"))\n})\n\nconst writeStdoutLine = (value: string) =>\n Stdio.Stdio.use((stdio) => Stream.make(`${value}\\n`).pipe(Stream.run(stdio.stdout())))\n\nconst writeStderrLine = (value: string) =>\n Stdio.Stdio.use((stdio) => Stream.make(`${value}\\n`).pipe(Stream.run(stdio.stderr())))\n\nconst verificationLine = (complete: string, degraded: string, verification: BackupVerification): string =>\n verification._tag === \"Complete\"\n ? complete\n : `${degraded} ${verification.reproducibleBlobGaps.length} reproducible cache gaps.`\n\nclass ControlCenterCliUsageError extends Schema.TaggedErrorClass<ControlCenterCliUsageError>()(\n \"ControlCenterCliUsageError\",\n { command: Schema.String }\n) {}\n\nclass ControlCenterCliConfigurationError extends Schema.TaggedErrorClass<\n ControlCenterCliConfigurationError\n>()(\"ControlCenterCliConfigurationError\", {\n reason: Schema.Literal(\"pr-review-provider-unavailable\")\n}) {}\n\nconst program = Effect.scoped(\n Effect.gen(function*() {\n const path = yield* Path.Path\n const stdio = yield* Stdio.Stdio\n const invocation = classifyControlCenterCliArguments(yield* stdio.args)\n if (invocation._tag === \"invalid\") {\n yield* writeStderrLine(\n \"Usage: control-center [recover-owner | backup <archive> | verify-backup <archive> | restore <archive>]\"\n )\n return yield* new ControlCenterCliUsageError({ command: invocation.command })\n }\n\n if (invocation._tag === \"verify-backup\") {\n const verification = yield* verifyBackup(invocation.archiveRoot)\n yield* writeStdoutLine(verificationLine(\"Backup verified.\", \"Backup verified with\", verification))\n return\n }\n\n const configuredDataRoot = yield* dataRootConfiguration\n if (invocation._tag === \"restore\") {\n const restored = yield* restoreBackup({\n archiveRoot: invocation.archiveRoot,\n configuredDataRoot\n })\n yield* writeStdoutLine(verificationLine(\"Backup restored.\", \"Backup restored with\", restored.verification))\n return\n }\n\n const configuredDataPaths = yield* decodeControlCenterDataPaths(configuredDataRoot)\n if (invocation._tag === \"backup\") {\n const existingDataPaths = yield* resolvePreparedControlCenterDataRoot(configuredDataPaths)\n const published = yield* createOfflineVerifiedBackup({\n destination: invocation.archiveRoot,\n persistenceConfig: existingDataPaths.persistenceConfig\n })\n yield* writeStdoutLine(verificationLine(\"Backup created.\", \"Backup created with\", published.verification))\n return\n }\n\n const dataPaths = yield* prepareControlCenterDataRoot(configuredDataPaths)\n\n if (invocation._tag === \"recover-owner\") {\n const recoveryServices = yield* Layer.build(terminalRecoveryLayer(dataPaths.persistenceConfig))\n const recovery = Context.get(recoveryServices, TerminalRecovery)\n const issued = yield* recovery.issueOwnerRecovery({\n workspaceId: DEFAULT_WORKSPACE_ID,\n actor: { _tag: \"human\", personId: DEFAULT_OWNER_ID },\n revokeExistingOwnerSessions: true\n })\n yield* writeStdoutLine(`Recovery pairing code: ${Redacted.value(issued.pairingCode)}`)\n return\n }\n\n const programScope = yield* Effect.scope\n const observabilityScope = yield* Scope.fork(programScope)\n const observabilityServices = yield* Layer.buildWithScope(ControlCenterObservabilityLive, observabilityScope)\n return yield* Effect.gen(function*() {\n const configured = yield* serverConfiguration\n const agentProviders = yield* Schema.decodeUnknownEffect(Schema.Array(AgentProvider).check(Schema.isUnique()))(\n commaSeparated(configured.agentProviders)\n )\n const agentCwd = agentProviders.length === 0\n ? null\n : yield* Schema.decodeUnknownEffect(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()))(\n configured.agentCwd\n )\n const codexModel = configured.agentCodexModel.length === 0\n ? undefined\n : yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentCodexModel)\n const claudeModel = configured.agentClaudeModel.length === 0\n ? undefined\n : yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentClaudeModel)\n const openAiConfigured = configured.agentOpenAiApiUrl.length > 0 ||\n configured.agentOpenAiModel.length > 0 ||\n Redacted.value(configured.agentOpenAiApiKey).length > 0\n const openAiCompatible = openAiConfigured\n ? {\n apiUrl: yield* Schema.decodeUnknownEffect(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(2_000))\n )(configured.agentOpenAiApiUrl),\n model: yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentOpenAiModel),\n ...(Redacted.value(configured.agentOpenAiApiKey).length === 0\n ? {}\n : { apiKey: configured.agentOpenAiApiKey })\n }\n : undefined\n if (\n configured.prReviewSbxEnabled &&\n openAiCompatible === undefined &&\n !agentProviders.includes(\"codex\") &&\n !agentProviders.includes(\"claude\")\n ) {\n return yield* new ControlCenterCliConfigurationError({\n reason: \"pr-review-provider-unavailable\"\n })\n }\n const prReviewTiming = yield* Schema.decodeUnknownEffect(\n PrReviewTimingConfiguration\n )({\n budgetMillis: configured.prReviewBudgetMillis,\n maximumSandboxDurationMillis: configured.prReviewMaximumDurationMillis\n })\n const sbxExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewSbxExecutable\n )\n const sbxTemplate = optionalNonBlankConfigurationValue(\n configured.prReviewSbxTemplate\n )\n const prReviewCodexExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewCodexExecutable\n )\n const prReviewClaudeExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewClaudeExecutable\n )\n const allowedHosts = commaSeparated(configured.allowedHosts)\n const allowedOrigins = commaSeparated(configured.allowedOrigins)\n const trustedProxyAddresses = commaSeparated(configured.trustedProxyAddresses)\n const hasDirectTlsInput = configured.directTlsCertificateRef.length > 0 ||\n configured.directTlsPrivateKeyRef.length > 0\n const bindConfig = yield* decodeBindConfig({\n host: configured.host,\n port: configured.port,\n allowInsecureLan: configured.allowInsecureLan,\n ...(configured.publicOrigin.length > 0 ? { publicOrigin: configured.publicOrigin } : {}),\n ...(allowedHosts.length > 0 ? { allowedHosts } : {}),\n ...(allowedOrigins.length > 0 ? { allowedOrigins } : {}),\n ...(trustedProxyAddresses.length > 0 ? { trustedProxyAddresses } : {}),\n ...(hasDirectTlsInput\n ? {\n directTls: {\n certificateRef: configured.directTlsCertificateRef,\n privateKeyRef: configured.directTlsPrivateKeyRef\n }\n }\n : {})\n })\n const staticRoot = yield* path.fromFileUrl(new URL(\"../../client\", import.meta.url))\n const services = yield* Layer.build(\n makeControlCenterServer({\n bindConfig,\n firstPartyPluginRuntime: true,\n governedActionExecution: {\n workspaceId: DEFAULT_WORKSPACE_ID\n },\n bootstrap: {\n owner: { _tag: \"human\", personId: DEFAULT_OWNER_ID },\n workspaceId: DEFAULT_WORKSPACE_ID,\n workspaceName: WorkspaceName.make(\"Control Center\")\n },\n persistenceConfig: dataPaths.persistenceConfig,\n prReviewWorker: configured.prReviewSbxEnabled\n ? {\n workspaceId: DEFAULT_WORKSPACE_ID,\n workspaceRoot: path.join(dataPaths.dataRoot, \"pr-review-workspaces\"),\n ...(sbxExecutable === undefined ? {} : { sbxExecutable }),\n ...(sbxTemplate === undefined ? {} : { sbxTemplate }),\n ...(prReviewCodexExecutable === undefined ? {} : { codexExecutable: prReviewCodexExecutable }),\n ...(prReviewClaudeExecutable === undefined ? {} : { claudeExecutable: prReviewClaudeExecutable }),\n reviewBudgetMillis: prReviewTiming.budgetMillis,\n leaseOwner: AgentLeaseOwner.make(\"control-center-pr-review-worker\"),\n maximumSandboxDurationMillis: prReviewTiming.maximumSandboxDurationMillis\n }\n : null,\n releaseAgent: agentCwd === null && openAiCompatible === undefined\n ? null\n : {\n cwd: agentCwd ?? \".\",\n enabledProviders: agentProviders,\n ...(configured.agentCodexExecutable.length > 0\n ? { codexExecutable: configured.agentCodexExecutable }\n : {}),\n ...(codexModel === undefined ? {} : { codexModel }),\n ...(configured.agentClaudeExecutable.length > 0\n ? { claudeExecutable: configured.agentClaudeExecutable }\n : {}),\n ...(claudeModel === undefined ? {} : { claudeModel }),\n ...(openAiCompatible === undefined ? {} : { openAiCompatible })\n },\n secretRoot: dataPaths.secretRoot,\n staticAssets: { root: staticRoot }\n })\n )\n const bootstrap = Context.get(services, ControlCenterBootstrap)\n const lifecycle = Context.get(services, ServerLifecycle)\n yield* lifecycle.registerDrainHook({\n hookId: \"telemetry.otlp-export\",\n run: Scope.close(observabilityScope, Exit.void)\n })\n\n yield* writeStdoutLine(`Control Center listening at ${bindConfig.publicOrigin}`)\n if (bootstrap._tag === \"pairing-issued\") {\n yield* writeStdoutLine(`Pairing code: ${Redacted.value(bootstrap.pairingCode)}`)\n } else if (bootstrap._tag === \"already-initialized\") {\n yield* writeStdoutLine(\"Workspace ready. Use an existing paired browser.\")\n }\n return yield* Effect.never.pipe(\n Effect.onInterrupt(() =>\n writeStdoutLine(\"Control Center draining.\").pipe(\n Effect.andThen(lifecycle.drainWithin(\"10 seconds\")),\n Effect.flatMap((result) => {\n switch (result._tag) {\n case \"Drained\":\n return writeStdoutLine(\"Control Center drained.\")\n case \"DeadlineExceeded\":\n return writeStderrLine(\"Control Center drain deadline reached.\")\n case \"HooksFailed\":\n return writeStderrLine(`Control Center drain hooks failed: ${result.hookIds.join(\", \")}.`)\n }\n })\n )\n )\n )\n }).pipe(Effect.provide(observabilityServices))\n })\n)\n\nconst findDatabaseInitializationError = (\n value: unknown,\n remainingWrapperDepth = 2\n): DatabaseInitializationError | null => {\n if (Schema.is(DatabaseInitializationError)(value)) return value\n if (\n remainingWrapperDepth > 0 &&\n Predicate.hasProperty(value, \"_tag\") &&\n value._tag === \"ServeError\" &&\n Predicate.hasProperty(value, \"cause\")\n ) {\n return findDatabaseInitializationError(value.cause, remainingWrapperDepth - 1)\n }\n return null\n}\n\nconst reportProgramFailure = <E>(cause: Cause.Cause<E>) => {\n const error = Cause.findErrorOption(cause)\n const isUsageError = Option.exists(\n error,\n (value) => Predicate.hasProperty(value, \"_tag\") && value._tag === \"ControlCenterCliUsageError\"\n )\n if (isUsageError) return Effect.failCause(cause)\n const databaseInitializationError = Option.flatMap(\n error,\n (value) => Option.fromNullishOr(findDatabaseInitializationError(value))\n )\n if (Option.isSome(databaseInitializationError)) {\n const operation = databaseInitializationError.value.operation\n return writeStderrLine(`Control Center command failed (DatabaseInitializationError: ${operation}).`).pipe(\n Effect.andThen(\n operation === \"verify-schema\"\n ? writeStderrLine(\n \"The database schema does not match this pre-stable build. Back up the data root if needed, \" +\n \"then explicitly recreate local development data or choose a new CONTROL_CENTER_DATA_ROOT. \" +\n \"Automatic migrations are disabled until schema stability.\"\n )\n : Effect.void\n ),\n Effect.andThen(Effect.failCause(cause))\n )\n }\n const errorTag = Option.flatMap(\n error,\n (value) =>\n Predicate.hasProperty(value, \"_tag\") && typeof value._tag === \"string\"\n ? Option.some(value._tag)\n : Option.none<string>()\n )\n const message = Option.match(errorTag, {\n onNone: () => \"Control Center command failed unexpectedly.\",\n onSome: (tag) => `Control Center command failed (${tag}).`\n })\n return writeStderrLine(message).pipe(Effect.andThen(Effect.failCause(cause)))\n}\n\nNodeRuntime.runMain(\n program.pipe(\n Effect.catchCause(reportProgramFailure),\n Effect.provide(NodeServices.layer)\n ),\n { disableErrorReporting: true }\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../../../src/server/cliArguments.ts","../../../src/server/cliConfiguration.ts","../../../src/server/observability.ts","../../../src/server/cli.ts"],"sourcesContent":["/** Supported top-level CLI invocation after Node removes executable and script arguments. */\nexport type ControlCenterCliInvocation =\n | { readonly _tag: \"serve\" }\n | { readonly _tag: \"recover-owner\" }\n | { readonly _tag: \"backup\"; readonly archiveRoot: string }\n | { readonly _tag: \"verify-backup\"; readonly archiveRoot: string }\n | { readonly _tag: \"restore\"; readonly archiveRoot: string }\n | { readonly _tag: \"invalid\"; readonly command: string }\n\n/** Classify the exact supported CLI argument shapes without accepting trailing arguments. */\nexport const classifyControlCenterCliArguments = (\n arguments_: ReadonlyArray<string>\n): ControlCenterCliInvocation => {\n if (arguments_.length === 0) return { _tag: \"serve\" }\n if (arguments_.length === 1 && arguments_[0] === \"recover-owner\") {\n return { _tag: \"recover-owner\" }\n }\n const archiveRoot = arguments_[1]\n if (arguments_.length === 2 && archiveRoot !== undefined && archiveRoot !== \"\") {\n if (arguments_[0] === \"backup\") return { _tag: \"backup\", archiveRoot }\n if (arguments_[0] === \"verify-backup\") {\n return { _tag: \"verify-backup\", archiveRoot }\n }\n if (arguments_[0] === \"restore\") return { _tag: \"restore\", archiveRoot }\n }\n return { _tag: \"invalid\", command: arguments_.join(\" \") }\n}\n","import * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Encoding from \"effect/Encoding\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as Option from \"effect/Option\"\nimport * as Path from \"effect/Path\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { MINIMUM_PR_REVIEW_BUDGET_MILLIS } from \"./agent/PrReviewTiming.js\"\nimport {\n boundDataRootMarkerContent as boundMarkerContent,\n type ControlCenterDataPaths,\n DATA_ROOT_DIRECTORY_MODE,\n DATA_ROOT_MARKER_MAX_BYTES,\n DATA_ROOT_MARKER_MODE,\n DATA_ROOT_MARKER_NAME,\n DATA_ROOT_MARKER_V1_CONTENT,\n DATA_ROOT_MARKER_V2_PREFIX,\n DATA_ROOT_PENDING_MARKER_PREFIX,\n DATA_ROOT_STAGING_PREFIX,\n decodeControlCenterDataPaths,\n decodeOperationalDataPaths,\n type FreshDataRootClaimConflict,\n inspectFreshDataRootClaim,\n publishDataRootMarker,\n publishFreshDataRootClaim,\n type StagedDataRootWriter,\n syncDataRootPath\n} from \"./DataRootProtocol.js\"\nimport { validateExistingControlCenterDatabase } from \"./persistence/Database.js\"\nimport { PersistenceConfigError } from \"./persistence/errors.js\"\n\n/** Validated filesystem paths derived from the untrusted data-root environment value. */\nexport { decodeControlCenterDataPaths }\nexport type { ControlCenterDataPaths }\n\nconst PrReviewBudgetMillis = Schema.Int.check(\n Schema.isBetween({ minimum: MINIMUM_PR_REVIEW_BUDGET_MILLIS, maximum: 1_800_000 })\n)\n\nconst PrReviewSandboxDurationMillis = Schema.Int.check(\n Schema.isBetween({ minimum: 1, maximum: 1_800_000 })\n)\n\n/** Cross-field timing contract for one Review Agent Profile and its sbx lifetime. */\nexport const PrReviewTimingConfiguration = Schema.Struct({\n budgetMillis: PrReviewBudgetMillis,\n maximumSandboxDurationMillis: PrReviewSandboxDurationMillis\n}).check(\n Schema.makeFilter(\n ({ budgetMillis, maximumSandboxDurationMillis }) => budgetMillis <= maximumSandboxDurationMillis,\n { expected: \"a review budget no greater than the sbx session duration\" }\n )\n)\n\n/** Treat blank optional executable/template configuration as absent. */\nexport const optionalNonBlankConfigurationValue = (\n value: string\n): string | undefined => value.trim().length === 0 ? undefined : value\n\nconst DATA_ROOT_OWNER_PROBE_PREFIX = \".control-center-owner-\"\nconst SQLITE_HEADER = Uint8Array.from([\n 0x53,\n 0x51,\n 0x4c,\n 0x69,\n 0x74,\n 0x65,\n 0x20,\n 0x66,\n 0x6f,\n 0x72,\n 0x6d,\n 0x61,\n 0x74,\n 0x20,\n 0x33,\n 0x00\n])\n\nconst hasNoControlCharacters = (value: string): boolean =>\n Array.from(value).every((character) => {\n const codePoint = character.codePointAt(0)\n return (\n codePoint !== undefined && !((codePoint >= 0 && codePoint <= 0x1f) || (codePoint >= 0x7f && codePoint <= 0x9f))\n )\n })\n\nconst hasRandomHexSuffix = (entry: string, prefix: string): boolean => {\n if (!entry.startsWith(prefix)) return false\n const suffix = entry.slice(prefix.length)\n return suffix.length === 32 && Array.from(suffix).every((character) => /[0-9a-f]/u.test(character))\n}\n\nconst configurationError = (): PersistenceConfigError =>\n new PersistenceConfigError({\n message: \"Control Center data root must identify a private, dedicated application directory\"\n })\n\nconst mapConfigurationError = <Value, Failure, Requirements>(\n effect: Effect.Effect<Value, Failure, Requirements>\n): Effect.Effect<Value, PersistenceConfigError, Requirements> => effect.pipe(Effect.mapError(configurationError))\n\nconst sameOwner = (left: FileSystem.File.Info, right: FileSystem.File.Info): boolean =>\n Option.isSome(left.uid) && Option.isSome(right.uid) && left.uid.value === right.uid.value\n\nconst sameIdentity = (left: FileSystem.File.Info, right: FileSystem.File.Info): boolean =>\n left.dev === right.dev &&\n Option.isSome(left.ino) &&\n Option.isSome(right.ino) &&\n left.ino.value === right.ino.value &&\n sameOwner(left, right)\n\ninterface MarkerPublication {\n readonly claimBasename: string\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly markerPath: string\n readonly targetBasename: string\n}\n\ninterface LegacyDataRootValidation {\n readonly dataPaths: ControlCenterDataPaths\n readonly fileSystem: FileSystem.FileSystem\n readonly path: Path.Path\n readonly rootInfo: FileSystem.File.Info\n}\n\ninterface ProcessOwnershipVerification {\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly initialRootInfo: FileSystem.File.Info\n readonly path: Path.Path\n}\n\ninterface FreshDataRootPublication {\n readonly cryptoService: Crypto.Crypto\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly parent: string\n readonly path: Path.Path\n}\n\ninterface PendingMarkerCleanup {\n readonly dataRoot: string\n readonly fileSystem: FileSystem.FileSystem\n readonly path: Path.Path\n readonly rootInfo: FileSystem.File.Info\n}\n\ninterface LostClaimDetection {\n readonly fileSystem: FileSystem.FileSystem\n readonly parent: string\n readonly path: Path.Path\n readonly requestedClaimBasename: string\n}\n\ntype DataRootMarker =\n | { readonly _tag: \"Legacy\" }\n | { readonly _tag: \"Bound\"; readonly claimBasename: string; readonly targetBasename: string }\n\nconst decodeMarkerBasename = (\n path: Path.Path,\n encodedBasename: string\n): Result.Result<string, PersistenceConfigError> => {\n const decodedBasename = Encoding.decodeBase64UrlString(encodedBasename)\n if (\n Result.isFailure(decodedBasename) ||\n decodedBasename.success.length === 0 ||\n decodedBasename.success.length > 4_096 ||\n !hasNoControlCharacters(decodedBasename.success) ||\n decodedBasename.success === \".\" ||\n decodedBasename.success === \"..\" ||\n path.basename(decodedBasename.success) !== decodedBasename.success ||\n Encoding.encodeBase64Url(decodedBasename.success) !== encodedBasename\n ) {\n return Result.fail(configurationError())\n }\n return Result.succeed(decodedBasename.success)\n}\n\nconst decodeDataRootMarker = (\n path: Path.Path,\n content: string\n): Result.Result<DataRootMarker, PersistenceConfigError> => {\n if (content === DATA_ROOT_MARKER_V1_CONTENT) return Result.succeed({ _tag: \"Legacy\" })\n if (!content.startsWith(DATA_ROOT_MARKER_V2_PREFIX) || !content.endsWith(\"\\n\")) {\n return Result.fail(configurationError())\n }\n const encodedFields = content.slice(DATA_ROOT_MARKER_V2_PREFIX.length, -1).split(\"\\ntarget-basename:\")\n if (encodedFields.length !== 2) return Result.fail(configurationError())\n const encodedClaim = encodedFields[0]\n const encodedTarget = encodedFields[1]\n if (encodedClaim === undefined || encodedTarget === undefined) return Result.fail(configurationError())\n const claimBasename = decodeMarkerBasename(path, encodedClaim)\n if (Result.isFailure(claimBasename)) return Result.fail(claimBasename.failure)\n if (claimBasename.success.startsWith(DATA_ROOT_STAGING_PREFIX)) return Result.fail(configurationError())\n const targetBasename = decodeMarkerBasename(path, encodedTarget)\n if (Result.isFailure(targetBasename)) return Result.fail(targetBasename.failure)\n return Result.succeed({\n _tag: \"Bound\",\n claimBasename: claimBasename.success,\n targetBasename: targetBasename.success\n })\n}\n\nconst validatePrivateDirectory = Effect.fn(\"ControlCenterCli.validatePrivateDirectory\")(function*(\n fileSystem: FileSystem.FileSystem,\n dataRoot: string\n) {\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataRoot))\n const info = yield* mapConfigurationError(fileSystem.stat(dataRoot))\n if (\n canonicalRoot !== dataRoot ||\n info.type !== \"Directory\" ||\n (info.mode & 0o777) !== DATA_ROOT_DIRECTORY_MODE ||\n Option.isNone(info.uid) ||\n Option.isNone(info.ino)\n ) {\n return yield* configurationError()\n }\n return info\n})\n\nconst validateMarker = Effect.fn(\"ControlCenterCli.validateDataRootMarker\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n markerPath: string,\n rootInfo: FileSystem.File.Info\n) {\n const canonicalMarker = yield* mapConfigurationError(fileSystem.realPath(markerPath))\n const markerInfo = yield* mapConfigurationError(fileSystem.stat(markerPath))\n if (\n canonicalMarker !== markerPath ||\n markerInfo.type !== \"File\" ||\n (markerInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, markerInfo) ||\n Number(markerInfo.size) > DATA_ROOT_MARKER_MAX_BYTES\n ) {\n return yield* configurationError()\n }\n const content = yield* mapConfigurationError(fileSystem.readFileString(markerPath))\n return yield* Effect.fromResult(decodeDataRootMarker(path, content))\n})\n\nconst validateMarkerForClaim = Effect.fn(\"ControlCenterCli.validateDataRootMarkerForClaim\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n markerPath: string,\n rootInfo: FileSystem.File.Info,\n claimBasename: string,\n targetBasename: string\n) {\n const marker = yield* validateMarker(fileSystem, path, markerPath, rootInfo)\n if (\n marker._tag === \"Bound\" &&\n (marker.claimBasename !== claimBasename || marker.targetBasename !== targetBasename)\n ) {\n return yield* configurationError()\n }\n return marker\n})\n\nconst validateLegacyDataRoot = Effect.fn(\"ControlCenterCli.validateLegacyDataRoot\")(function*(\n request: LegacyDataRootValidation\n) {\n const { dataPaths, fileSystem, path, rootInfo } = request\n const databasePath = path.join(dataPaths.dataRoot, \"control-center.db\")\n const canonicalDatabase = yield* mapConfigurationError(fileSystem.realPath(databasePath))\n const databaseInfo = yield* mapConfigurationError(fileSystem.stat(databasePath))\n if (\n canonicalDatabase !== databasePath ||\n databaseInfo.type !== \"File\" ||\n !sameOwner(rootInfo, databaseInfo) ||\n Number(databaseInfo.size) < SQLITE_HEADER.length\n ) {\n return yield* configurationError()\n }\n\n const header = yield* Effect.scoped(\n mapConfigurationError(fileSystem.open(databasePath, { flag: \"r\" })).pipe(\n Effect.flatMap((file) => mapConfigurationError(file.readAlloc(SQLITE_HEADER.length)))\n )\n )\n if (\n Option.isNone(header) ||\n header.value.length !== SQLITE_HEADER.length ||\n !SQLITE_HEADER.every((byte, index) => header.value[index] === byte)\n ) return yield* configurationError()\n\n // The exact current schema is the durable identity shared by pre-marker\n // builds. Inspecting a scoped snapshot prevents SQLite journal\n // recovery or WAL bookkeeping from mutating a root before it is adopted.\n yield* Effect.scoped(\n Effect.gen(function*() {\n const snapshotRoot = yield* mapConfigurationError(\n fileSystem.makeTempDirectoryScoped({ prefix: \"control-center-legacy-snapshot-\" })\n )\n const snapshotDatabase = path.join(snapshotRoot, \"control-center.db\")\n yield* mapConfigurationError(fileSystem.copyFile(databasePath, snapshotDatabase))\n\n for (const suffix of [\"-wal\", \"-journal\"]) {\n const sidecar = `${databasePath}${suffix}`\n if (!(yield* mapConfigurationError(fileSystem.exists(sidecar)))) continue\n const canonicalSidecar = yield* mapConfigurationError(fileSystem.realPath(sidecar))\n const sidecarInfo = yield* mapConfigurationError(fileSystem.stat(sidecar))\n if (\n canonicalSidecar !== sidecar ||\n sidecarInfo.type !== \"File\" ||\n !sameOwner(rootInfo, sidecarInfo)\n ) return yield* configurationError()\n yield* mapConfigurationError(fileSystem.copyFile(sidecar, `${snapshotDatabase}${suffix}`))\n }\n\n yield* validateExistingControlCenterDatabase({\n blobRoot: path.join(snapshotRoot, \"blobs\"),\n busyTimeoutMilliseconds: dataPaths.persistenceConfig.busyTimeoutMilliseconds,\n databaseUrl: `file:${snapshotDatabase}`,\n maxConnections: dataPaths.persistenceConfig.maxConnections\n }).pipe(Effect.mapError(configurationError))\n })\n )\n})\n\nconst syncPath = Effect.fn(\"ControlCenterCli.syncDataRootPath\")(function*(\n _fileSystem: FileSystem.FileSystem,\n target: string\n) {\n yield* syncDataRootPath(target)\n})\n\nconst publishMarker = Effect.fn(\"ControlCenterCli.publishDataRootMarker\")(function*(\n request: MarkerPublication\n) {\n yield* publishDataRootMarker(request.dataRoot, request.claimBasename, request.targetBasename)\n})\n\nconst removeValidPendingMarkers = Effect.fn(\"ControlCenterCli.removeValidPendingMarkers\")(function*(\n request: PendingMarkerCleanup,\n claimBasename: string,\n targetBasename: string\n) {\n const { dataRoot, fileSystem, path, rootInfo } = request\n const entries = yield* mapConfigurationError(fileSystem.readDirectory(dataRoot))\n const pendingNames = entries.filter((entry) => hasRandomHexSuffix(entry, DATA_ROOT_PENDING_MARKER_PREFIX))\n const validPendingPaths: Array<string> = []\n\n for (const pendingName of pendingNames) {\n const pendingPath = path.join(dataRoot, pendingName)\n const canonicalPending = yield* mapConfigurationError(fileSystem.realPath(pendingPath))\n const pendingInfo = yield* mapConfigurationError(fileSystem.stat(pendingPath))\n if (\n canonicalPending !== pendingPath ||\n pendingInfo.type !== \"File\" ||\n (pendingInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, pendingInfo) ||\n Number(pendingInfo.size) > boundMarkerContent(claimBasename, targetBasename).length\n ) return yield* configurationError()\n\n const content = yield* mapConfigurationError(fileSystem.readFileString(pendingPath))\n if (\n !DATA_ROOT_MARKER_V1_CONTENT.startsWith(content) &&\n !boundMarkerContent(claimBasename, targetBasename).startsWith(content)\n ) return yield* configurationError()\n validPendingPaths.push(pendingPath)\n }\n\n for (const pendingPath of validPendingPaths) {\n const removed = yield* fileSystem.remove(pendingPath).pipe(Effect.result)\n if (Result.isFailure(removed) && removed.failure.reason._tag !== \"NotFound\") {\n return yield* configurationError()\n }\n }\n\n if (pendingNames.length > 0) yield* syncPath(fileSystem, dataRoot)\n})\n\nconst verifyProcessOwnership = Effect.fn(\"ControlCenterCli.verifyProcessOwnership\")(function*(\n request: ProcessOwnershipVerification\n) {\n const { cryptoService, dataRoot, fileSystem, initialRootInfo, path } = request\n const isExpectedRoot = (info: FileSystem.File.Info): boolean =>\n info.type === \"Directory\" &&\n (info.mode & 0o777) === DATA_ROOT_DIRECTORY_MODE &&\n sameIdentity(initialRootInfo, info)\n\n yield* Effect.scoped(\n Effect.uninterruptible(\n Effect.gen(function*() {\n const directory = yield* mapConfigurationError(fileSystem.open(dataRoot, { flag: \"r\" }))\n const directoryInfo = yield* mapConfigurationError(directory.stat)\n if (!isExpectedRoot(directoryInfo)) return yield* configurationError()\n\n const assertIdentity = Effect.gen(function*() {\n const current = yield* directory.stat.pipe(Effect.result)\n const named = yield* fileSystem.stat(dataRoot).pipe(Effect.result)\n const resolved = yield* fileSystem.realPath(dataRoot).pipe(Effect.result)\n if (\n Result.isFailure(current) ||\n Result.isFailure(named) ||\n Result.isFailure(resolved) ||\n resolved.success !== dataRoot ||\n !isExpectedRoot(current.success) ||\n !sameIdentity(current.success, named.success)\n ) return yield* configurationError()\n })\n\n yield* assertIdentity\n const random = yield* mapConfigurationError(cryptoService.randomBytes(16))\n const probePath = path.join(dataRoot, `${DATA_ROOT_OWNER_PROBE_PREFIX}${Encoding.encodeHex(random)}`)\n const probe = yield* mapConfigurationError(\n fileSystem.open(probePath, { flag: \"wx\", mode: DATA_ROOT_MARKER_MODE })\n )\n yield* Effect.addFinalizer(() =>\n fileSystem.remove(probePath, { force: true }).pipe(\n Effect.andThen(directory.sync),\n Effect.ignore\n )\n )\n yield* mapConfigurationError(fileSystem.chmod(probePath, DATA_ROOT_MARKER_MODE))\n const probeInfo = yield* mapConfigurationError(probe.stat)\n if (\n probeInfo.type !== \"File\" ||\n (probeInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(directoryInfo, probeInfo)\n ) return yield* configurationError()\n\n yield* assertIdentity\n yield* mapConfigurationError(fileSystem.remove(probePath))\n yield* mapConfigurationError(directory.sync)\n yield* assertIdentity\n })\n )\n )\n})\n\nconst resolveStagingRoot = (path: Path.Path, parent: string, target: string): Option.Option<string> => {\n const name = path.basename(target)\n return !path.isAbsolute(target) && target === name && name.startsWith(DATA_ROOT_STAGING_PREFIX)\n ? Option.some(path.join(parent, name))\n : Option.none()\n}\n\nconst isBase64UrlPrefix = (value: string): boolean =>\n Array.from(value).every((character) => /[0-9A-Za-z_-]/u.test(character))\n\nconst isPotentialBoundMarkerPrefix = (path: Path.Path, content: string): boolean => {\n if (DATA_ROOT_MARKER_V2_PREFIX.startsWith(content)) return true\n if (!content.startsWith(DATA_ROOT_MARKER_V2_PREFIX)) return false\n const remaining = content.slice(DATA_ROOT_MARKER_V2_PREFIX.length)\n const claimTerminator = remaining.indexOf(\"\\n\")\n if (claimTerminator === -1) return isBase64UrlPrefix(remaining)\n const encodedClaim = remaining.slice(0, claimTerminator)\n if (!isBase64UrlPrefix(encodedClaim)) return false\n\n const targetLabel = \"target-basename:\"\n const targetField = remaining.slice(claimTerminator + 1)\n if (targetLabel.startsWith(targetField)) return true\n if (!targetField.startsWith(targetLabel)) return false\n const encodedTargetWithTerminator = targetField.slice(targetLabel.length)\n if (!encodedTargetWithTerminator.endsWith(\"\\n\")) return isBase64UrlPrefix(encodedTargetWithTerminator)\n return Result.isSuccess(decodeDataRootMarker(path, content))\n}\n\nconst isPotentialMarkerPrefix = (path: Path.Path, content: string): boolean =>\n DATA_ROOT_MARKER_V1_CONTENT.startsWith(content) || isPotentialBoundMarkerPrefix(path, content)\n\nconst validateProtocolArtifact = Effect.fn(\"ControlCenterCli.validateDataRootProtocolArtifact\")(function*(\n fileSystem: FileSystem.FileSystem,\n path: Path.Path,\n stagingRoot: string,\n rootInfo: FileSystem.File.Info,\n entry: string\n) {\n const isFinalMarker = entry === DATA_ROOT_MARKER_NAME\n const isOwnerProbe = hasRandomHexSuffix(entry, DATA_ROOT_OWNER_PROBE_PREFIX)\n const isPendingMarker = hasRandomHexSuffix(entry, DATA_ROOT_PENDING_MARKER_PREFIX)\n if (!isFinalMarker && !isOwnerProbe && !isPendingMarker) return false\n\n const artifactPath = path.join(stagingRoot, entry)\n const canonicalArtifact = yield* mapConfigurationError(fileSystem.realPath(artifactPath))\n const artifactInfo = yield* mapConfigurationError(fileSystem.stat(artifactPath))\n if (\n canonicalArtifact !== artifactPath ||\n artifactInfo.type !== \"File\" ||\n (artifactInfo.mode & 0o777) !== DATA_ROOT_MARKER_MODE ||\n !sameOwner(rootInfo, artifactInfo)\n ) return yield* configurationError()\n\n if (isFinalMarker) {\n if (Number(artifactInfo.size) > DATA_ROOT_MARKER_MAX_BYTES) return yield* configurationError()\n const content = yield* mapConfigurationError(fileSystem.readFileString(artifactPath))\n const marker = decodeDataRootMarker(path, content)\n if (\n Result.isFailure(marker) ||\n (marker.success._tag === \"Bound\" && marker.success.targetBasename !== path.basename(stagingRoot))\n ) return yield* configurationError()\n return true\n }\n\n if (isOwnerProbe) {\n if (Number(artifactInfo.size) !== 0) return yield* configurationError()\n return true\n }\n\n if (Number(artifactInfo.size) > DATA_ROOT_MARKER_MAX_BYTES) return yield* configurationError()\n const content = yield* mapConfigurationError(fileSystem.readFileString(artifactPath))\n const completeMarker = decodeDataRootMarker(path, content)\n if (\n Result.isSuccess(completeMarker) &&\n completeMarker.success._tag === \"Bound\" &&\n completeMarker.success.targetBasename !== path.basename(stagingRoot)\n ) return yield* configurationError()\n if (!isPotentialMarkerPrefix(path, content)) return yield* configurationError()\n return true\n})\n\nconst inspectLostDataRootClaims = Effect.fn(\"ControlCenterCli.inspectLostDataRootClaims\")(function*(\n request: LostClaimDetection\n) {\n const { fileSystem, parent, path, requestedClaimBasename } = request\n const entries = yield* mapConfigurationError(fileSystem.readDirectory(parent))\n for (const entry of entries) {\n if (!entry.startsWith(DATA_ROOT_STAGING_PREFIX) || path.basename(entry) !== entry) continue\n const stagingRoot = path.join(parent, entry)\n const rootInfo = yield* validatePrivateDirectory(fileSystem, stagingRoot)\n const stagingEntries = yield* mapConfigurationError(fileSystem.readDirectory(stagingRoot))\n let hasDurableEntry = false\n for (const name of stagingEntries) {\n if (!(yield* validateProtocolArtifact(fileSystem, path, stagingRoot, rootInfo, name))) {\n hasDurableEntry = true\n }\n }\n if (!hasDurableEntry) continue\n\n const marker = yield* validateMarker(\n fileSystem,\n path,\n path.join(stagingRoot, DATA_ROOT_MARKER_NAME),\n rootInfo\n )\n if (marker._tag === \"Legacy\") return yield* configurationError()\n if (marker.targetBasename !== entry) return yield* configurationError()\n if (marker.claimBasename !== requestedClaimBasename) continue\n\n const boundClaim = path.join(parent, marker.claimBasename)\n const claimedTarget = yield* fileSystem.readLink(boundClaim).pipe(Effect.result)\n if (Result.isFailure(claimedTarget) || claimedTarget.success !== entry) {\n return yield* configurationError()\n }\n }\n})\n\nconst refuseLostDataRootClaim = Effect.fn(\"ControlCenterCli.refuseLostDataRootClaim\")(function*(\n request: LostClaimDetection\n) {\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const inspected = yield* inspectLostDataRootClaims(request).pipe(Effect.result)\n if (Result.isSuccess(inspected)) return\n if (attempt === 2) return yield* Effect.fail(inspected.failure)\n yield* Effect.yieldNow\n }\n})\n\nconst resolveClaimedDataRoot = Effect.fn(\"ControlCenterCli.resolveClaimedDataRoot\")(function*(\n request: FreshDataRootPublication\n) {\n const { cryptoService, dataRoot, fileSystem, parent, path } = request\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataRoot))\n if (canonicalRoot === dataRoot) return dataRoot\n\n const claimedTarget = yield* mapConfigurationError(fileSystem.readLink(dataRoot))\n const stagingRoot = resolveStagingRoot(path, parent, claimedTarget)\n if (Option.isNone(stagingRoot)) return yield* configurationError()\n\n const stagingInfo = yield* validatePrivateDirectory(fileSystem, stagingRoot.value)\n const marker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n path.join(stagingRoot.value, DATA_ROOT_MARKER_NAME),\n stagingInfo,\n path.basename(dataRoot),\n path.basename(stagingRoot.value)\n )\n if (marker._tag === \"Legacy\") return yield* configurationError()\n yield* verifyProcessOwnership({\n cryptoService,\n dataRoot: stagingRoot.value,\n fileSystem,\n initialRootInfo: stagingInfo,\n path\n })\n return stagingRoot.value\n})\n\nconst publishFreshDataRoot = Effect.fn(\"ControlCenterCli.publishFreshDataRoot\")(function*(\n request: FreshDataRootPublication\n) {\n const location = yield* inspectFreshDataRootClaim(request.dataRoot).pipe(Effect.mapError(configurationError))\n yield* publishFreshDataRootClaim(location, false, () => Effect.void).pipe(\n Effect.mapError((error) =>\n Predicate.isTagged(error, \"FreshDataRootClaimConflict\") || Predicate.isTagged(error, \"DataRootProtocolError\")\n ? configurationError()\n : error\n )\n )\n})\n\n/**\n * Populate and exclusively publish a genuinely fresh configured data root.\n * The initializer may be interrupted while its unclaimed staging root is cleaned;\n * the completed root is exposed only by the final relative-symlink claim.\n */\nexport const claimFreshControlCenterDataRoot = Effect.fn(\"claimFreshControlCenterDataRoot\")(function*<\n Failure,\n Requirements\n>(\n dataPaths: ControlCenterDataPaths,\n initialize: (\n writer: StagedDataRootWriter\n ) => Effect.Effect<void, Failure, Requirements>\n): Effect.fn.Return<\n ControlCenterDataPaths,\n Failure | FreshDataRootClaimConflict | PersistenceConfigError,\n Crypto.Crypto | FileSystem.FileSystem | Path.Path | Requirements\n> {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n if (yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot))) {\n return yield* configurationError()\n }\n yield* mapConfigurationError(fileSystem.makeDirectory(parent, { recursive: true }))\n yield* refuseLostDataRootClaim({\n fileSystem,\n parent,\n path,\n requestedClaimBasename: claimBasename\n })\n const location = yield* inspectFreshDataRootClaim(dataPaths.dataRoot).pipe(Effect.mapError(configurationError))\n return yield* publishFreshDataRootClaim(location, true, initialize).pipe(\n Effect.mapError((error) => Predicate.isTagged(error, \"DataRootProtocolError\") ? configurationError() : error)\n )\n})\n\n/** Resolve an already-prepared data root without creating, repairing, cleaning, or migrating it. */\nexport const resolvePreparedControlCenterDataRoot = Effect.fn(\n \"resolvePreparedControlCenterDataRoot\"\n)(function*(\n dataPaths: ControlCenterDataPaths\n): Effect.fn.Return<ControlCenterDataPaths, PersistenceConfigError, FileSystem.FileSystem | Path.Path> {\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n if (!(yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot)))) {\n return yield* configurationError()\n }\n\n const canonicalRoot = yield* mapConfigurationError(fileSystem.realPath(dataPaths.dataRoot))\n let operationalPaths = dataPaths\n if (canonicalRoot !== dataPaths.dataRoot) {\n const claimedTarget = yield* mapConfigurationError(fileSystem.readLink(dataPaths.dataRoot))\n const stagingRoot = resolveStagingRoot(path, parent, claimedTarget)\n if (Option.isNone(stagingRoot) || stagingRoot.value !== canonicalRoot) {\n return yield* configurationError()\n }\n operationalPaths = yield* decodeOperationalDataPaths(stagingRoot.value)\n }\n\n const rootInfo = yield* validatePrivateDirectory(fileSystem, operationalPaths.dataRoot)\n const markerPath = path.join(operationalPaths.dataRoot, DATA_ROOT_MARKER_NAME)\n if (!(yield* mapConfigurationError(fileSystem.exists(markerPath)))) return yield* configurationError()\n const marker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n path.basename(operationalPaths.dataRoot)\n )\n if (marker._tag !== \"Bound\") return yield* configurationError()\n return operationalPaths\n})\n\n/** Create or verify a dedicated data root and return its canonical operational paths. */\nexport const prepareControlCenterDataRoot = Effect.fn(\"prepareControlCenterDataRoot\")(function*(\n dataPaths: ControlCenterDataPaths\n): Effect.fn.Return<ControlCenterDataPaths, PersistenceConfigError, Crypto.Crypto | FileSystem.FileSystem | Path.Path> {\n const cryptoService = yield* Crypto.Crypto\n const fileSystem = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const parent = path.dirname(dataPaths.dataRoot)\n const claimBasename = path.basename(dataPaths.dataRoot)\n if (claimBasename.startsWith(DATA_ROOT_STAGING_PREFIX)) return yield* configurationError()\n const existed = yield* mapConfigurationError(fileSystem.exists(dataPaths.dataRoot))\n\n if (!existed) {\n yield* mapConfigurationError(fileSystem.makeDirectory(parent, { recursive: true }))\n yield* refuseLostDataRootClaim({\n fileSystem,\n parent,\n path,\n requestedClaimBasename: claimBasename\n })\n yield* publishFreshDataRoot({\n cryptoService,\n dataRoot: dataPaths.dataRoot,\n fileSystem,\n parent,\n path\n })\n }\n\n const operationalRoot = yield* resolveClaimedDataRoot({\n cryptoService,\n dataRoot: dataPaths.dataRoot,\n fileSystem,\n parent,\n path\n })\n const operationalPaths = operationalRoot === dataPaths.dataRoot\n ? dataPaths\n : yield* decodeOperationalDataPaths(operationalRoot)\n\n const rootInfo = yield* validatePrivateDirectory(fileSystem, operationalPaths.dataRoot)\n const targetBasename = path.basename(operationalPaths.dataRoot)\n const markerPath = path.join(operationalPaths.dataRoot, DATA_ROOT_MARKER_NAME)\n const hasMarker = yield* mapConfigurationError(fileSystem.exists(markerPath))\n const existingMarker = hasMarker\n ? Option.some(\n yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n targetBasename\n )\n )\n : Option.none<DataRootMarker>()\n yield* verifyProcessOwnership({\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n initialRootInfo: rootInfo,\n path\n })\n if (Option.isNone(existingMarker)) {\n yield* validateLegacyDataRoot({ dataPaths: operationalPaths, fileSystem, path, rootInfo })\n yield* removeValidPendingMarkers(\n {\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n path,\n rootInfo\n },\n claimBasename,\n targetBasename\n )\n yield* publishMarker({\n claimBasename,\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n markerPath,\n targetBasename\n })\n } else {\n yield* removeValidPendingMarkers(\n {\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n path,\n rootInfo\n },\n claimBasename,\n targetBasename\n )\n if (existingMarker.value._tag === \"Legacy\") {\n yield* publishMarker({\n claimBasename,\n cryptoService,\n dataRoot: operationalPaths.dataRoot,\n fileSystem,\n markerPath,\n targetBasename\n })\n }\n }\n const finalMarker = yield* validateMarkerForClaim(\n fileSystem,\n path,\n markerPath,\n rootInfo,\n claimBasename,\n targetBasename\n )\n if (finalMarker._tag !== \"Bound\") return yield* configurationError()\n return operationalPaths\n})\n","import * as Config from \"effect/Config\"\nimport * as ConfigProvider from \"effect/ConfigProvider\"\nimport * as Effect from \"effect/Effect\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport { FetchHttpClient } from \"effect/unstable/http\"\nimport { OtlpLogger, OtlpSerialization, OtlpTracer } from \"effect/unstable/observability\"\n\nconst resource = {\n serviceName: \"control-center\"\n}\n\nconst activation = Config.all({\n baseEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_ENDPOINT\").pipe(Config.withDefault(\"\")),\n disabled: Config.string(\"OTEL_SDK_DISABLED\").pipe(Config.withDefault(\"\")),\n logsEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT\").pipe(Config.withDefault(\"\")),\n logsExporters: Config.string(\"OTEL_LOGS_EXPORTER\").pipe(Config.withDefault(\"\")),\n logsProtocol: Config.string(\"OTEL_EXPORTER_OTLP_LOGS_PROTOCOL\").pipe(Config.withDefault(\"\")),\n protocol: Config.string(\"OTEL_EXPORTER_OTLP_PROTOCOL\").pipe(Config.withDefault(\"http/protobuf\")),\n tracesEndpoint: Config.string(\"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT\").pipe(Config.withDefault(\"\")),\n tracesExporters: Config.string(\"OTEL_TRACES_EXPORTER\").pipe(Config.withDefault(\"\")),\n tracesProtocol: Config.string(\"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL\").pipe(Config.withDefault(\"\"))\n})\n\nconst includesOtlp = (exporters: string): boolean =>\n exporters.split(\",\").some((exporter) => exporter.trim().toLowerCase() === \"otlp\")\n\nconst OtlpHttpProtocol = Schema.Literals([\"http/json\", \"http/protobuf\"])\ntype OtlpHttpProtocol = typeof OtlpHttpProtocol.Type\ntype OtlpSignal = \"logs\" | \"traces\"\n\nconst optionalIntegerConfigurationKeys = new Set([\n \"OTEL_BLRP_EXPORT_TIMEOUT\",\n \"OTEL_BLRP_MAX_EXPORT_BATCH_SIZE\",\n \"OTEL_BLRP_SCHEDULE_DELAY\",\n \"OTEL_BSP_EXPORT_TIMEOUT\",\n \"OTEL_BSP_MAX_EXPORT_BATCH_SIZE\",\n \"OTEL_BSP_SCHEDULE_DELAY\",\n \"OTEL_EXPORTER_OTLP_LOGS_TIMEOUT\",\n \"OTEL_EXPORTER_OTLP_TIMEOUT\",\n \"OTEL_EXPORTER_OTLP_TRACES_TIMEOUT\"\n])\n\nconst positiveScheduleDelayConfigurationKeys = new Set([\n \"OTEL_BLRP_SCHEDULE_DELAY\",\n \"OTEL_BSP_SCHEDULE_DELAY\"\n])\n\nclass ObservabilityConfigurationError extends Schema.TaggedErrorClass<ObservabilityConfigurationError>()(\n \"ObservabilityConfigurationError\",\n {\n reason: Schema.Literals([\"invalid-endpoint\", \"unsupported-protocol\"]),\n signal: Schema.Literals([\"logs\", \"traces\"])\n }\n) {}\n\nconst validateSignalEndpoint = Effect.fn(\"ControlCenterObservability.validateSignalEndpoint\")(function*(\n signal: OtlpSignal,\n endpoint: string\n) {\n if (endpoint === \"\") return\n const url = yield* Schema.decodeUnknownEffect(Schema.URLFromString)(endpoint).pipe(\n Effect.mapError(() => new ObservabilityConfigurationError({ reason: \"invalid-endpoint\", signal }))\n )\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return yield* new ObservabilityConfigurationError({ reason: \"invalid-endpoint\", signal })\n }\n})\n\nconst resolveProtocol = Effect.fn(\"ControlCenterObservability.resolveProtocol\")(function*(\n signal: OtlpSignal,\n signalProtocol: string,\n baseProtocol: string\n) {\n const protocol = (signalProtocol.trim() === \"\" ? baseProtocol : signalProtocol).trim().toLowerCase()\n return yield* Schema.decodeUnknownEffect(OtlpHttpProtocol)(protocol).pipe(\n Effect.mapError(() => new ObservabilityConfigurationError({ reason: \"unsupported-protocol\", signal }))\n )\n})\n\nconst defaultEndpointLayer = ConfigProvider.layerAdd(\n ConfigProvider.fromEnv({ env: { OTEL_EXPORTER_OTLP_ENDPOINT: \"http://localhost:4318\" } })\n)\n\nconst parseSdkDisabled = Effect.fn(\"ControlCenterObservability.parseSdkDisabled\")(function*(value: string) {\n const normalized = value.trim().toLowerCase()\n if (normalized === \"true\") return true\n if (normalized === \"\" || normalized === \"false\") return false\n yield* Effect.logWarning(\"Ignoring invalid OTEL_SDK_DISABLED value; expected true or false.\")\n return false\n})\n\nconst decodeIntegerConfigurationValue = Schema.decodeUnknownOption(Schema.toCodecStringTree(Schema.Int))\n\nconst sanitizedConfigProvider = (\n provider: ConfigProvider.ConfigProvider,\n sdkDisabled: boolean\n): ConfigProvider.ConfigProvider =>\n ConfigProvider.make((path) => {\n if (path.length === 1 && path[0] === \"OTEL_SDK_DISABLED\") {\n return Effect.succeed(ConfigProvider.makeValue(sdkDisabled ? \"true\" : \"false\"))\n }\n return provider.load(path).pipe(\n Effect.map((node) => {\n if (\n path.length !== 1 ||\n typeof path[0] !== \"string\" ||\n !optionalIntegerConfigurationKeys.has(path[0]) ||\n node === undefined\n ) {\n return node\n }\n const value = node.value\n if (value === undefined) return undefined\n const integer = decodeIntegerConfigurationValue(value)\n return Option.isNone(integer) ||\n (positiveScheduleDelayConfigurationKeys.has(path[0]) && integer.value <= 0)\n ? undefined\n : node\n })\n )\n })\n\nconst serializationLayer = (protocol: OtlpHttpProtocol) =>\n protocol === \"http/json\" ? OtlpSerialization.layerJson : OtlpSerialization.layerProtobuf\n\nconst loggerLayer = (protocol: OtlpHttpProtocol) =>\n OtlpLogger.layerFromConfig({ resource }).pipe(\n Layer.provide(serializationLayer(protocol)),\n Layer.provide(defaultEndpointLayer)\n )\n\nconst tracerLayer = (protocol: OtlpHttpProtocol) =>\n OtlpTracer.layerFromConfig({ resource }).pipe(\n Layer.provide(serializationLayer(protocol)),\n Layer.provide(defaultEndpointLayer)\n )\n\nexport const controlCenterTelemetryLayer = Effect.gen(function*() {\n const configured = yield* activation\n const sdkDisabled = yield* parseSdkDisabled(configured.disabled)\n if (sdkDisabled) return Layer.empty\n\n const provider = yield* ConfigProvider.ConfigProvider\n\n const logsEnabled = includesOtlp(configured.logsExporters)\n const tracesEnabled = includesOtlp(configured.tracesExporters)\n if (logsEnabled) {\n yield* validateSignalEndpoint(\n \"logs\",\n configured.logsEndpoint === \"\" ? configured.baseEndpoint : configured.logsEndpoint\n )\n }\n if (tracesEnabled) {\n yield* validateSignalEndpoint(\n \"traces\",\n configured.tracesEndpoint === \"\" ? configured.baseEndpoint : configured.tracesEndpoint\n )\n }\n const logsProtocol = logsEnabled\n ? yield* resolveProtocol(\"logs\", configured.logsProtocol, configured.protocol)\n : \"http/protobuf\"\n const tracesProtocol = tracesEnabled\n ? yield* resolveProtocol(\"traces\", configured.tracesProtocol, configured.protocol)\n : \"http/protobuf\"\n\n return Layer.merge(\n logsEnabled ? loggerLayer(logsProtocol) : Layer.empty,\n tracesEnabled ? tracerLayer(tracesProtocol) : Layer.empty\n ).pipe(Layer.provide(ConfigProvider.layer(sanitizedConfigProvider(provider, sdkDisabled))))\n}).pipe(Layer.unwrap)\n\nexport const ControlCenterObservabilityLive = controlCenterTelemetryLayer.pipe(Layer.provide(FetchHttpClient.layer))\n","#!/usr/bin/env node\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\"\nimport * as Cause from \"effect/Cause\"\nimport * as Config from \"effect/Config\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Exit from \"effect/Exit\"\nimport * as Layer from \"effect/Layer\"\nimport * as Option from \"effect/Option\"\nimport * as Path from \"effect/Path\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Redacted from \"effect/Redacted\"\nimport * as Schema from \"effect/Schema\"\nimport * as Scope from \"effect/Scope\"\nimport * as Stdio from \"effect/Stdio\"\nimport * as Stream from \"effect/Stream\"\n\nimport { AgentModelId, AgentProvider } from \"../api/agent.js\"\nimport { PersonId, WorkspaceId } from \"../domain/identifiers.js\"\nimport { TerminalRecovery, terminalRecoveryLayer } from \"./auth/TerminalRecovery.js\"\nimport { classifyControlCenterCliArguments } from \"./cliArguments.js\"\nimport {\n decodeControlCenterDataPaths,\n optionalNonBlankConfigurationValue,\n prepareControlCenterDataRoot,\n PrReviewTimingConfiguration,\n resolvePreparedControlCenterDataRoot\n} from \"./cliConfiguration.js\"\nimport { ControlCenterObservabilityLive } from \"./observability.js\"\nimport {\n type BackupVerification,\n createOfflineVerifiedBackup,\n restoreBackup,\n verifyBackup\n} from \"./persistence/backup/index.js\"\nimport { DatabaseInitializationError } from \"./persistence/errors.js\"\nimport { AgentLeaseOwner } from \"./persistence/repositories/agentJobModels.js\"\nimport { WorkspaceName } from \"./persistence/repositories/models.js\"\nimport { ControlCenterBootstrap } from \"./runtime/Bootstrap.js\"\nimport { makeControlCenterServer } from \"./runtime/ControlCenterServer.js\"\nimport { ServerLifecycle } from \"./runtime/ServerLifecycle.js\"\nimport { decodeBindConfig } from \"./security/BindConfig.js\"\n\nconst DEFAULT_WORKSPACE_ID = WorkspaceId.make(\"01890f6f-6d6a-7cc0-98d2-000000000001\")\nconst DEFAULT_OWNER_ID = PersonId.make(\"01890f6f-6d6a-7cc0-98d2-000000000002\")\n\nconst commaSeparated = (value: string): ReadonlyArray<string> =>\n value\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part.length > 0)\n\nconst dataRootConfiguration = Config.string(\"CONTROL_CENTER_DATA_ROOT\").pipe(Config.withDefault(\".control-center\"))\n\nconst serverConfiguration = Config.all({\n agentClaudeExecutable: Config.string(\"CONTROL_CENTER_AGENT_CLAUDE_EXECUTABLE\").pipe(Config.withDefault(\"\")),\n agentClaudeModel: Config.string(\"CONTROL_CENTER_AGENT_CLAUDE_MODEL\").pipe(Config.withDefault(\"\")),\n agentCodexExecutable: Config.string(\"CONTROL_CENTER_AGENT_CODEX_EXECUTABLE\").pipe(Config.withDefault(\"\")),\n agentCodexModel: Config.string(\"CONTROL_CENTER_AGENT_CODEX_MODEL\").pipe(Config.withDefault(\"\")),\n agentOpenAiApiKey: Config.redacted(\"CONTROL_CENTER_AGENT_OPENAI_API_KEY\").pipe(\n Config.withDefault(Redacted.make(\"\"))\n ),\n agentOpenAiApiUrl: Config.string(\"CONTROL_CENTER_AGENT_OPENAI_API_URL\").pipe(Config.withDefault(\"\")),\n agentOpenAiModel: Config.string(\"CONTROL_CENTER_AGENT_OPENAI_MODEL\").pipe(Config.withDefault(\"\")),\n agentCwd: Config.string(\"CONTROL_CENTER_AGENT_CWD\").pipe(Config.withDefault(\"\")),\n agentProviders: Config.string(\"CONTROL_CENTER_AGENT_PROVIDERS\").pipe(Config.withDefault(\"\")),\n prReviewSbxEnabled: Config.boolean(\"CONTROL_CENTER_PR_REVIEW_SBX_ENABLED\").pipe(Config.withDefault(false)),\n prReviewSbxExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_SBX_EXECUTABLE\").pipe(Config.withDefault(\"sbx\")),\n prReviewSbxTemplate: Config.string(\"CONTROL_CENTER_PR_REVIEW_SBX_TEMPLATE\").pipe(Config.withDefault(\"\")),\n prReviewCodexExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_CODEX_EXECUTABLE\").pipe(\n Config.withDefault(\"codex\")\n ),\n prReviewClaudeExecutable: Config.string(\"CONTROL_CENTER_PR_REVIEW_CLAUDE_EXECUTABLE\").pipe(\n Config.withDefault(\"claude\")\n ),\n prReviewBudgetMillis: Config.int(\"CONTROL_CENTER_PR_REVIEW_BUDGET_MILLIS\").pipe(\n Config.withDefault(1_200_000)\n ),\n prReviewMaximumDurationMillis: Config.int(\"CONTROL_CENTER_PR_REVIEW_MAXIMUM_DURATION_MILLIS\").pipe(\n Config.withDefault(1_200_000)\n ),\n allowedHosts: Config.string(\"CONTROL_CENTER_ALLOWED_HOSTS\").pipe(Config.withDefault(\"\")),\n allowedOrigins: Config.string(\"CONTROL_CENTER_ALLOWED_ORIGINS\").pipe(Config.withDefault(\"\")),\n allowInsecureLan: Config.boolean(\"CONTROL_CENTER_ALLOW_INSECURE_LAN\").pipe(Config.withDefault(false)),\n directTlsCertificateRef: Config.string(\"CONTROL_CENTER_TLS_CERTIFICATE_REF\").pipe(Config.withDefault(\"\")),\n directTlsPrivateKeyRef: Config.string(\"CONTROL_CENTER_TLS_PRIVATE_KEY_REF\").pipe(Config.withDefault(\"\")),\n host: Config.string(\"CONTROL_CENTER_HOST\").pipe(Config.withDefault(\"127.0.0.1\")),\n port: Config.int(\"CONTROL_CENTER_PORT\").pipe(Config.withDefault(4173)),\n publicOrigin: Config.string(\"CONTROL_CENTER_PUBLIC_ORIGIN\").pipe(Config.withDefault(\"\")),\n trustedProxyAddresses: Config.string(\"CONTROL_CENTER_TRUSTED_PROXY_ADDRESSES\").pipe(Config.withDefault(\"\"))\n})\n\nconst writeStdoutLine = (value: string) =>\n Stdio.Stdio.use((stdio) => Stream.make(`${value}\\n`).pipe(Stream.run(stdio.stdout())))\n\nconst writeStderrLine = (value: string) =>\n Stdio.Stdio.use((stdio) => Stream.make(`${value}\\n`).pipe(Stream.run(stdio.stderr())))\n\nconst verificationLine = (complete: string, degraded: string, verification: BackupVerification): string =>\n verification._tag === \"Complete\"\n ? complete\n : `${degraded} ${verification.reproducibleBlobGaps.length} reproducible cache gaps.`\n\nclass ControlCenterCliUsageError extends Schema.TaggedErrorClass<ControlCenterCliUsageError>()(\n \"ControlCenterCliUsageError\",\n { command: Schema.String }\n) {}\n\nclass ControlCenterCliConfigurationError extends Schema.TaggedErrorClass<\n ControlCenterCliConfigurationError\n>()(\"ControlCenterCliConfigurationError\", {\n reason: Schema.Literal(\"pr-review-provider-unavailable\")\n}) {}\n\nconst program = Effect.scoped(\n Effect.gen(function*() {\n const path = yield* Path.Path\n const stdio = yield* Stdio.Stdio\n const invocation = classifyControlCenterCliArguments(yield* stdio.args)\n if (invocation._tag === \"invalid\") {\n yield* writeStderrLine(\n \"Usage: control-center [recover-owner | backup <archive> | verify-backup <archive> | restore <archive>]\"\n )\n return yield* new ControlCenterCliUsageError({ command: invocation.command })\n }\n\n if (invocation._tag === \"verify-backup\") {\n const verification = yield* verifyBackup(invocation.archiveRoot)\n yield* writeStdoutLine(verificationLine(\"Backup verified.\", \"Backup verified with\", verification))\n return\n }\n\n const configuredDataRoot = yield* dataRootConfiguration\n if (invocation._tag === \"restore\") {\n const restored = yield* restoreBackup({\n archiveRoot: invocation.archiveRoot,\n configuredDataRoot\n })\n yield* writeStdoutLine(verificationLine(\"Backup restored.\", \"Backup restored with\", restored.verification))\n return\n }\n\n const configuredDataPaths = yield* decodeControlCenterDataPaths(configuredDataRoot)\n if (invocation._tag === \"backup\") {\n const existingDataPaths = yield* resolvePreparedControlCenterDataRoot(configuredDataPaths)\n const published = yield* createOfflineVerifiedBackup({\n destination: invocation.archiveRoot,\n persistenceConfig: existingDataPaths.persistenceConfig\n })\n yield* writeStdoutLine(verificationLine(\"Backup created.\", \"Backup created with\", published.verification))\n return\n }\n\n const dataPaths = yield* prepareControlCenterDataRoot(configuredDataPaths)\n\n if (invocation._tag === \"recover-owner\") {\n const recoveryServices = yield* Layer.build(terminalRecoveryLayer(dataPaths.persistenceConfig))\n const recovery = Context.get(recoveryServices, TerminalRecovery)\n const issued = yield* recovery.issueOwnerRecovery({\n workspaceId: DEFAULT_WORKSPACE_ID,\n actor: { _tag: \"human\", personId: DEFAULT_OWNER_ID },\n revokeExistingOwnerSessions: true\n })\n yield* writeStdoutLine(`Recovery pairing code: ${Redacted.value(issued.pairingCode)}`)\n return\n }\n\n const programScope = yield* Effect.scope\n const observabilityScope = yield* Scope.fork(programScope)\n const observabilityServices = yield* Layer.buildWithScope(ControlCenterObservabilityLive, observabilityScope)\n return yield* Effect.gen(function*() {\n const configured = yield* serverConfiguration\n const agentProviders = yield* Schema.decodeUnknownEffect(Schema.Array(AgentProvider).check(Schema.isUnique()))(\n commaSeparated(configured.agentProviders)\n )\n const agentCwd = agentProviders.length === 0\n ? null\n : yield* Schema.decodeUnknownEffect(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()))(\n configured.agentCwd\n )\n const codexModel = configured.agentCodexModel.length === 0\n ? undefined\n : yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentCodexModel)\n const claudeModel = configured.agentClaudeModel.length === 0\n ? undefined\n : yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentClaudeModel)\n const openAiConfigured = configured.agentOpenAiApiUrl.length > 0 ||\n configured.agentOpenAiModel.length > 0 ||\n Redacted.value(configured.agentOpenAiApiKey).length > 0\n const openAiCompatible = openAiConfigured\n ? {\n apiUrl: yield* Schema.decodeUnknownEffect(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(2_000))\n )(configured.agentOpenAiApiUrl),\n model: yield* Schema.decodeUnknownEffect(AgentModelId)(configured.agentOpenAiModel),\n ...(Redacted.value(configured.agentOpenAiApiKey).length === 0\n ? {}\n : { apiKey: configured.agentOpenAiApiKey })\n }\n : undefined\n if (\n configured.prReviewSbxEnabled &&\n openAiCompatible === undefined &&\n !agentProviders.includes(\"codex\") &&\n !agentProviders.includes(\"claude\")\n ) {\n return yield* new ControlCenterCliConfigurationError({\n reason: \"pr-review-provider-unavailable\"\n })\n }\n const prReviewTiming = yield* Schema.decodeUnknownEffect(\n PrReviewTimingConfiguration\n )({\n budgetMillis: configured.prReviewBudgetMillis,\n maximumSandboxDurationMillis: configured.prReviewMaximumDurationMillis\n })\n const sbxExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewSbxExecutable\n )\n const sbxTemplate = optionalNonBlankConfigurationValue(\n configured.prReviewSbxTemplate\n )\n const prReviewCodexExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewCodexExecutable\n )\n const prReviewClaudeExecutable = optionalNonBlankConfigurationValue(\n configured.prReviewClaudeExecutable\n )\n const allowedHosts = commaSeparated(configured.allowedHosts)\n const allowedOrigins = commaSeparated(configured.allowedOrigins)\n const trustedProxyAddresses = commaSeparated(configured.trustedProxyAddresses)\n const hasDirectTlsInput = configured.directTlsCertificateRef.length > 0 ||\n configured.directTlsPrivateKeyRef.length > 0\n const bindConfig = yield* decodeBindConfig({\n host: configured.host,\n port: configured.port,\n allowInsecureLan: configured.allowInsecureLan,\n ...(configured.publicOrigin.length > 0 ? { publicOrigin: configured.publicOrigin } : {}),\n ...(allowedHosts.length > 0 ? { allowedHosts } : {}),\n ...(allowedOrigins.length > 0 ? { allowedOrigins } : {}),\n ...(trustedProxyAddresses.length > 0 ? { trustedProxyAddresses } : {}),\n ...(hasDirectTlsInput\n ? {\n directTls: {\n certificateRef: configured.directTlsCertificateRef,\n privateKeyRef: configured.directTlsPrivateKeyRef\n }\n }\n : {})\n })\n const staticRoot = yield* path.fromFileUrl(new URL(\"../../client\", import.meta.url))\n const services = yield* Layer.build(\n makeControlCenterServer({\n bindConfig,\n firstPartyPluginRuntime: true,\n governedActionExecution: {\n workspaceId: DEFAULT_WORKSPACE_ID\n },\n bootstrap: {\n owner: { _tag: \"human\", personId: DEFAULT_OWNER_ID },\n workspaceId: DEFAULT_WORKSPACE_ID,\n workspaceName: WorkspaceName.make(\"Control Center\")\n },\n persistenceConfig: dataPaths.persistenceConfig,\n prReviewWorker: configured.prReviewSbxEnabled\n ? {\n workspaceId: DEFAULT_WORKSPACE_ID,\n workspaceRoot: path.join(dataPaths.dataRoot, \"pr-review-workspaces\"),\n ...(sbxExecutable === undefined ? {} : { sbxExecutable }),\n ...(sbxTemplate === undefined ? {} : { sbxTemplate }),\n ...(prReviewCodexExecutable === undefined ? {} : { codexExecutable: prReviewCodexExecutable }),\n ...(prReviewClaudeExecutable === undefined ? {} : { claudeExecutable: prReviewClaudeExecutable }),\n reviewBudgetMillis: prReviewTiming.budgetMillis,\n leaseOwner: AgentLeaseOwner.make(\"control-center-pr-review-worker\"),\n maximumSandboxDurationMillis: prReviewTiming.maximumSandboxDurationMillis\n }\n : null,\n releaseAgent: agentCwd === null && openAiCompatible === undefined\n ? null\n : {\n cwd: agentCwd ?? \".\",\n enabledProviders: agentProviders,\n ...(configured.agentCodexExecutable.length > 0\n ? { codexExecutable: configured.agentCodexExecutable }\n : {}),\n ...(codexModel === undefined ? {} : { codexModel }),\n ...(configured.agentClaudeExecutable.length > 0\n ? { claudeExecutable: configured.agentClaudeExecutable }\n : {}),\n ...(claudeModel === undefined ? {} : { claudeModel }),\n ...(openAiCompatible === undefined ? {} : { openAiCompatible })\n },\n secretRoot: dataPaths.secretRoot,\n staticAssets: { root: staticRoot }\n })\n )\n const bootstrap = Context.get(services, ControlCenterBootstrap)\n const lifecycle = Context.get(services, ServerLifecycle)\n yield* lifecycle.registerDrainHook({\n hookId: \"telemetry.otlp-export\",\n run: Scope.close(observabilityScope, Exit.void)\n })\n\n yield* writeStdoutLine(`Control Center listening at ${bindConfig.publicOrigin}`)\n if (bootstrap._tag === \"pairing-issued\") {\n yield* writeStdoutLine(`Pairing code: ${Redacted.value(bootstrap.pairingCode)}`)\n } else if (bootstrap._tag === \"already-initialized\") {\n yield* writeStdoutLine(\"Workspace ready. Use an existing paired browser.\")\n }\n return yield* Effect.never.pipe(\n Effect.onInterrupt(() =>\n writeStdoutLine(\"Control Center draining.\").pipe(\n Effect.andThen(lifecycle.drainWithin(\"10 seconds\")),\n Effect.flatMap((result) => {\n switch (result._tag) {\n case \"Drained\":\n return writeStdoutLine(\"Control Center drained.\")\n case \"DeadlineExceeded\":\n return writeStderrLine(\"Control Center drain deadline reached.\")\n case \"HooksFailed\":\n return writeStderrLine(`Control Center drain hooks failed: ${result.hookIds.join(\", \")}.`)\n }\n })\n )\n )\n )\n }).pipe(Effect.provide(observabilityServices))\n })\n)\n\nconst findDatabaseInitializationError = (\n value: unknown,\n remainingWrapperDepth = 2\n): DatabaseInitializationError | null => {\n if (Schema.is(DatabaseInitializationError)(value)) return value\n if (\n remainingWrapperDepth > 0 &&\n Predicate.hasProperty(value, \"_tag\") &&\n value._tag === \"ServeError\" &&\n Predicate.hasProperty(value, \"cause\")\n ) {\n return findDatabaseInitializationError(value.cause, remainingWrapperDepth - 1)\n }\n return null\n}\n\nconst reportProgramFailure = <E>(cause: Cause.Cause<E>) => {\n const error = Cause.findErrorOption(cause)\n const isUsageError = Option.exists(\n error,\n (value) => Predicate.hasProperty(value, \"_tag\") && value._tag === \"ControlCenterCliUsageError\"\n )\n if (isUsageError) return Effect.void\n const databaseInitializationError = Option.flatMap(\n error,\n (value) => Option.fromNullishOr(findDatabaseInitializationError(value))\n )\n if (Option.isSome(databaseInitializationError)) {\n const operation = databaseInitializationError.value.operation\n return writeStderrLine(`Control Center command failed (DatabaseInitializationError: ${operation}).`).pipe(\n Effect.andThen(\n operation === \"verify-schema\"\n ? writeStderrLine(\n \"The database schema does not match this pre-stable build. Back up the data root if needed, \" +\n \"then explicitly recreate local development data or choose a new CONTROL_CENTER_DATA_ROOT. \" +\n \"Automatic migrations are disabled until schema stability.\"\n )\n : Effect.void\n )\n )\n }\n const errorTag = Option.flatMap(\n error,\n (value) =>\n Predicate.hasProperty(value, \"_tag\") && typeof value._tag === \"string\"\n ? Option.some(value._tag)\n : Option.none<string>()\n )\n const message = Option.match(errorTag, {\n onNone: () => \"Control Center command failed unexpectedly.\",\n onSome: (tag) => `Control Center command failed (${tag}).`\n })\n return writeStderrLine(message)\n}\n\nNodeRuntime.runMain(\n program.pipe(\n Effect.tapCause(reportProgramFailure),\n Effect.provide(NodeServices.layer)\n ),\n { disableErrorReporting: true }\n)\n"],"mappings":"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"}