@knpkv/control-center 0.1.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 (664) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -0
  3. package/dist/client/.vite/manifest.json +452 -0
  4. package/dist/client/assets/ActiveWorkPage-Bvji6Tys.js +2 -0
  5. package/dist/client/assets/ActiveWorkPage-Bvji6Tys.js.map +1 -0
  6. package/dist/client/assets/ActiveWorkPage-CxNa23uW.css +1 -0
  7. package/dist/client/assets/AgentPage-Bom41la2.js +3 -0
  8. package/dist/client/assets/AgentPage-Bom41la2.js.map +1 -0
  9. package/dist/client/assets/AgentPage-f6WXQA21.css +1 -0
  10. package/dist/client/assets/AtlassianOAuthCallbackPage-Cqqgj2o3.css +1 -0
  11. package/dist/client/assets/AtlassianOAuthCallbackPage-dr-B9-DD.js +2 -0
  12. package/dist/client/assets/AtlassianOAuthCallbackPage-dr-B9-DD.js.map +1 -0
  13. package/dist/client/assets/AuthorizedSharePage-C-P-PNfm.js +2 -0
  14. package/dist/client/assets/AuthorizedSharePage-C-P-PNfm.js.map +1 -0
  15. package/dist/client/assets/AuthorizedSharePage-DzE_yvHI.css +1 -0
  16. package/dist/client/assets/BrowserCrypto-BPiuCuW-.js +2 -0
  17. package/dist/client/assets/BrowserCrypto-BPiuCuW-.js.map +1 -0
  18. package/dist/client/assets/BrowserSessionHydrator-C8F_LGhg.js +2 -0
  19. package/dist/client/assets/BrowserSessionHydrator-C8F_LGhg.js.map +1 -0
  20. package/dist/client/assets/CommandSearch-D6iFcdvj.js +2 -0
  21. package/dist/client/assets/CommandSearch-D6iFcdvj.js.map +1 -0
  22. package/dist/client/assets/CommandSearch-Df36xGJc.css +1 -0
  23. package/dist/client/assets/Dialog-DwSIPb-B-DVn37afM.js +42 -0
  24. package/dist/client/assets/Dialog-DwSIPb-B-DVn37afM.js.map +1 -0
  25. package/dist/client/assets/ItemsPage-DsQCbQ11.css +1 -0
  26. package/dist/client/assets/ItemsPage-x39U11an.js +2 -0
  27. package/dist/client/assets/ItemsPage-x39U11an.js.map +1 -0
  28. package/dist/client/assets/PairPage-D5vlz4OG.js +2 -0
  29. package/dist/client/assets/PairPage-D5vlz4OG.js.map +1 -0
  30. package/dist/client/assets/PortfolioOverview-DSUabOmm.js +2 -0
  31. package/dist/client/assets/PortfolioOverview-DSUabOmm.js.map +1 -0
  32. package/dist/client/assets/PortfolioOverview-nrb6Ebbh.css +1 -0
  33. package/dist/client/assets/ReleaseRoute-DyDm5s85.js +2 -0
  34. package/dist/client/assets/ReleaseRoute-DyDm5s85.js.map +1 -0
  35. package/dist/client/assets/ReleaseRoute-R3GdFaGc.css +1 -0
  36. package/dist/client/assets/ReleaseWorkset-6gGnZPS8.css +1 -0
  37. package/dist/client/assets/ReleaseWorkset-BhGacsgb.js +2 -0
  38. package/dist/client/assets/ReleaseWorkset-BhGacsgb.js.map +1 -0
  39. package/dist/client/assets/ServicesPage-CoMVH2Si.js +2 -0
  40. package/dist/client/assets/ServicesPage-CoMVH2Si.js.map +1 -0
  41. package/dist/client/assets/ServicesPage-D76DN13E.css +1 -0
  42. package/dist/client/assets/TimelinePage-38jhMz_L.css +1 -0
  43. package/dist/client/assets/TimelinePage-D8Fj_351.js +2 -0
  44. package/dist/client/assets/TimelinePage-D8Fj_351.js.map +1 -0
  45. package/dist/client/assets/WorkspaceEntityLink-BRifdJHn.js +2 -0
  46. package/dist/client/assets/WorkspaceEntityLink-BRifdJHn.js.map +1 -0
  47. package/dist/client/assets/WorkspaceEntityRoute-BwpujSqk.css +1 -0
  48. package/dist/client/assets/WorkspaceEntityRoute-DPci8Q8I.js +30 -0
  49. package/dist/client/assets/WorkspaceEntityRoute-DPci8Q8I.js.map +1 -0
  50. package/dist/client/assets/WorkspaceReleaseLayout-CMg2-6IQ.css +1 -0
  51. package/dist/client/assets/WorkspaceReleaseLayout-DDLdY0rU.js +2 -0
  52. package/dist/client/assets/WorkspaceReleaseLayout-DDLdY0rU.js.map +1 -0
  53. package/dist/client/assets/authenticatedMutationClient-D5yD0rch.js +2 -0
  54. package/dist/client/assets/authenticatedMutationClient-D5yD0rch.js.map +1 -0
  55. package/dist/client/assets/authorizedShareTransport-Dyj53kJf.js +2 -0
  56. package/dist/client/assets/authorizedShareTransport-Dyj53kJf.js.map +1 -0
  57. package/dist/client/assets/client-OmvShYdC.js +12 -0
  58. package/dist/client/assets/client-OmvShYdC.js.map +1 -0
  59. package/dist/client/assets/connectionTestTransport-c25QXx7A.js +2 -0
  60. package/dist/client/assets/connectionTestTransport-c25QXx7A.js.map +1 -0
  61. package/dist/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  62. package/dist/client/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
  63. package/dist/client/assets/index-CkslINEH.css +1 -0
  64. package/dist/client/assets/index-DLoOV6Hp.js +11 -0
  65. package/dist/client/assets/index-DLoOV6Hp.js.map +1 -0
  66. package/dist/client/assets/jsx-runtime-n5LQ9ujS.js +2 -0
  67. package/dist/client/assets/jsx-runtime-n5LQ9ujS.js.map +1 -0
  68. package/dist/client/assets/patterns-DEbg7R-A-Cw0A2uKS.js +2 -0
  69. package/dist/client/assets/patterns-DEbg7R-A-Cw0A2uKS.js.map +1 -0
  70. package/dist/client/assets/presentPortfolio-CkRqd_zz.js +2 -0
  71. package/dist/client/assets/presentPortfolio-CkRqd_zz.js.map +1 -0
  72. package/dist/client/assets/presentWorkspaceItems-BU__8LcC.js +2 -0
  73. package/dist/client/assets/presentWorkspaceItems-BU__8LcC.js.map +1 -0
  74. package/dist/client/assets/releasePaths-s-fSbIM-.js +2 -0
  75. package/dist/client/assets/releasePaths-s-fSbIM-.js.map +1 -0
  76. package/dist/client/assets/releaseRoutes-DSWkTh-E.js +2 -0
  77. package/dist/client/assets/releaseRoutes-DSWkTh-E.js.map +1 -0
  78. package/dist/client/assets/serviceOnboarding-B9pvdyWf.js +2 -0
  79. package/dist/client/assets/serviceOnboarding-B9pvdyWf.js.map +1 -0
  80. package/dist/client/assets/useCompactReleasePreview-Ch3XxgJU.js +2 -0
  81. package/dist/client/assets/useCompactReleasePreview-Ch3XxgJU.js.map +1 -0
  82. package/dist/client/assets/useWorkspaceItems-D0FuHGto.js +2 -0
  83. package/dist/client/assets/useWorkspaceItems-D0FuHGto.js.map +1 -0
  84. package/dist/client/assets/workspaceEntityPaths-xAl2jRFm.js +2 -0
  85. package/dist/client/assets/workspaceEntityPaths-xAl2jRFm.js.map +1 -0
  86. package/dist/client/assets/workspaceEntityRoutes-CRcfSq7c.js +2 -0
  87. package/dist/client/assets/workspaceEntityRoutes-CRcfSq7c.js.map +1 -0
  88. package/dist/client/build-graph.json +1465 -0
  89. package/dist/client/index.html +17 -0
  90. package/dist/server/api/agent.d.ts +652 -0
  91. package/dist/server/api/agent.d.ts.map +1 -0
  92. package/dist/server/api/client.d.ts +17 -0
  93. package/dist/server/api/client.d.ts.map +1 -0
  94. package/dist/server/api/controlCenterApi.d.ts +16 -0
  95. package/dist/server/api/controlCenterApi.d.ts.map +1 -0
  96. package/dist/server/api/deliveryGraph.d.ts +8714 -0
  97. package/dist/server/api/deliveryGraph.d.ts.map +1 -0
  98. package/dist/server/api/errors.d.ts +87 -0
  99. package/dist/server/api/errors.d.ts.map +1 -0
  100. package/dist/server/api/index.d.ts +14 -0
  101. package/dist/server/api/index.d.ts.map +1 -0
  102. package/dist/server/api/index.js +12 -0
  103. package/dist/server/api/index.js.map +1 -0
  104. package/dist/server/api/liveEvents.d.ts +1120 -0
  105. package/dist/server/api/liveEvents.d.ts.map +1 -0
  106. package/dist/server/api/media.d.ts +30 -0
  107. package/dist/server/api/media.d.ts.map +1 -0
  108. package/dist/server/api/plugins.d.ts +1853 -0
  109. package/dist/server/api/plugins.d.ts.map +1 -0
  110. package/dist/server/api/portfolio.d.ts +742 -0
  111. package/dist/server/api/portfolio.d.ts.map +1 -0
  112. package/dist/server/api/session.d.ts +204 -0
  113. package/dist/server/api/session.d.ts.map +1 -0
  114. package/dist/server/api/shares.d.ts +422 -0
  115. package/dist/server/api/shares.d.ts.map +1 -0
  116. package/dist/server/api/timeline.d.ts +86 -0
  117. package/dist/server/api/timeline.d.ts.map +1 -0
  118. package/dist/server/api/wire.d.ts +4 -0
  119. package/dist/server/api/wire.d.ts.map +1 -0
  120. package/dist/server/assets/BindConfig-BjK10BEb.js +15440 -0
  121. package/dist/server/assets/BindConfig-BjK10BEb.js.map +1 -0
  122. package/dist/server/assets/controlCenterApi-tZPvRPRH.js +1430 -0
  123. package/dist/server/assets/controlCenterApi-tZPvRPRH.js.map +1 -0
  124. package/dist/server/assets/domainEvent-x7yeq-gU.js +2130 -0
  125. package/dist/server/assets/domainEvent-x7yeq-gU.js.map +1 -0
  126. package/dist/server/assets/firstPartyServices-Y41P8uke.js +49 -0
  127. package/dist/server/assets/firstPartyServices-Y41P8uke.js.map +1 -0
  128. package/dist/server/assets/manualPluginSynchronization-C0aHB4UM.js +1805 -0
  129. package/dist/server/assets/manualPluginSynchronization-C0aHB4UM.js.map +1 -0
  130. package/dist/server/assets/portfolioInvalidation-Ds9Xm4_P.js +15463 -0
  131. package/dist/server/assets/portfolioInvalidation-Ds9Xm4_P.js.map +1 -0
  132. package/dist/server/assets/readiness-CzU3vjYQ.js +1012 -0
  133. package/dist/server/assets/readiness-CzU3vjYQ.js.map +1 -0
  134. package/dist/server/build-graph.json +3948 -0
  135. package/dist/server/domain/actors.d.ts +147 -0
  136. package/dist/server/domain/actors.d.ts.map +1 -0
  137. package/dist/server/domain/authorizedShare.d.ts +24 -0
  138. package/dist/server/domain/authorizedShare.d.ts.map +1 -0
  139. package/dist/server/domain/deliveryGraph.d.ts +848 -0
  140. package/dist/server/domain/deliveryGraph.d.ts.map +1 -0
  141. package/dist/server/domain/domainEvent.d.ts +50 -0
  142. package/dist/server/domain/domainEvent.d.ts.map +1 -0
  143. package/dist/server/domain/firstPartyServices.d.ts +60 -0
  144. package/dist/server/domain/firstPartyServices.d.ts.map +1 -0
  145. package/dist/server/domain/freshness.d.ts +367 -0
  146. package/dist/server/domain/freshness.d.ts.map +1 -0
  147. package/dist/server/domain/governedAction/bindings.d.ts +264 -0
  148. package/dist/server/domain/governedAction/bindings.d.ts.map +1 -0
  149. package/dist/server/domain/governedAction/index.d.ts +6 -0
  150. package/dist/server/domain/governedAction/index.d.ts.map +1 -0
  151. package/dist/server/domain/governedAction/lifecycle.d.ts +71 -0
  152. package/dist/server/domain/governedAction/lifecycle.d.ts.map +1 -0
  153. package/dist/server/domain/governedAction/model.d.ts +357 -0
  154. package/dist/server/domain/governedAction/model.d.ts.map +1 -0
  155. package/dist/server/domain/governedAction/stateMachine.d.ts +450 -0
  156. package/dist/server/domain/governedAction/stateMachine.d.ts.map +1 -0
  157. package/dist/server/domain/identifiers.d.ts +110 -0
  158. package/dist/server/domain/identifiers.d.ts.map +1 -0
  159. package/dist/server/domain/index.d.ts +26 -0
  160. package/dist/server/domain/index.d.ts.map +1 -0
  161. package/dist/server/domain/index.js +52 -0
  162. package/dist/server/domain/index.js.map +1 -0
  163. package/dist/server/domain/normalizedIssue.d.ts +223 -0
  164. package/dist/server/domain/normalizedIssue.d.ts.map +1 -0
  165. package/dist/server/domain/plugins/actions.d.ts +246 -0
  166. package/dist/server/domain/plugins/actions.d.ts.map +1 -0
  167. package/dist/server/domain/plugins/bounds.d.ts +12 -0
  168. package/dist/server/domain/plugins/bounds.d.ts.map +1 -0
  169. package/dist/server/domain/plugins/descriptor.d.ts +205 -0
  170. package/dist/server/domain/plugins/descriptor.d.ts.map +1 -0
  171. package/dist/server/domain/plugins/discovery.d.ts +39 -0
  172. package/dist/server/domain/plugins/discovery.d.ts.map +1 -0
  173. package/dist/server/domain/plugins/events.d.ts +232 -0
  174. package/dist/server/domain/plugins/events.d.ts.map +1 -0
  175. package/dist/server/domain/plugins/index.d.ts +11 -0
  176. package/dist/server/domain/plugins/index.d.ts.map +1 -0
  177. package/dist/server/domain/readiness/evaluate.d.ts +4 -0
  178. package/dist/server/domain/readiness/evaluate.d.ts.map +1 -0
  179. package/dist/server/domain/readiness/index.d.ts +7 -0
  180. package/dist/server/domain/readiness/index.d.ts.map +1 -0
  181. package/dist/server/domain/readiness/material.d.ts +114 -0
  182. package/dist/server/domain/readiness/material.d.ts.map +1 -0
  183. package/dist/server/domain/readiness/model.d.ts +1736 -0
  184. package/dist/server/domain/readiness/model.d.ts.map +1 -0
  185. package/dist/server/domain/readiness/policy.d.ts +73 -0
  186. package/dist/server/domain/readiness/policy.d.ts.map +1 -0
  187. package/dist/server/domain/readiness/rollup.d.ts +6 -0
  188. package/dist/server/domain/readiness/rollup.d.ts.map +1 -0
  189. package/dist/server/domain/relationshipRepair.d.ts +97 -0
  190. package/dist/server/domain/relationshipRepair.d.ts.map +1 -0
  191. package/dist/server/domain/release.d.ts +191 -0
  192. package/dist/server/domain/release.d.ts.map +1 -0
  193. package/dist/server/domain/releaseRelay.d.ts +44 -0
  194. package/dist/server/domain/releaseRelay.d.ts.map +1 -0
  195. package/dist/server/domain/sourceRevision.d.ts +39 -0
  196. package/dist/server/domain/sourceRevision.d.ts.map +1 -0
  197. package/dist/server/domain/timeline.d.ts +105 -0
  198. package/dist/server/domain/timeline.d.ts.map +1 -0
  199. package/dist/server/domain/utcTimestamp.d.ts +9 -0
  200. package/dist/server/domain/utcTimestamp.d.ts.map +1 -0
  201. package/dist/server/index.d.ts +8 -0
  202. package/dist/server/index.d.ts.map +1 -0
  203. package/dist/server/index.js +7 -0
  204. package/dist/server/server/DataRootProtocol.d.ts +80 -0
  205. package/dist/server/server/DataRootProtocol.d.ts.map +1 -0
  206. package/dist/server/server/agent/AgentJobWorker.d.ts +48 -0
  207. package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -0
  208. package/dist/server/server/agent/AgentRuntimeRegistry.d.ts +17 -0
  209. package/dist/server/server/agent/AgentRuntimeRegistry.d.ts.map +1 -0
  210. package/dist/server/server/agent/index.d.ts +4 -0
  211. package/dist/server/server/agent/index.d.ts.map +1 -0
  212. package/dist/server/server/api/ApiConfiguration.d.ts +24 -0
  213. package/dist/server/server/api/ApiConfiguration.d.ts.map +1 -0
  214. package/dist/server/server/api/ApiMiddleware.d.ts +14 -0
  215. package/dist/server/server/api/ApiMiddleware.d.ts.map +1 -0
  216. package/dist/server/server/api/ApplicationServices.d.ts +320 -0
  217. package/dist/server/server/api/ApplicationServices.d.ts.map +1 -0
  218. package/dist/server/server/api/ControlCenterApiServer.d.ts +11 -0
  219. package/dist/server/server/api/ControlCenterApiServer.d.ts.map +1 -0
  220. package/dist/server/server/api/ErrorMapping.d.ts +29 -0
  221. package/dist/server/server/api/ErrorMapping.d.ts.map +1 -0
  222. package/dist/server/server/api/Handlers.d.ts +24 -0
  223. package/dist/server/server/api/Handlers.d.ts.map +1 -0
  224. package/dist/server/server/api/LiveStreamAdmission.d.ts +34 -0
  225. package/dist/server/server/api/LiveStreamAdmission.d.ts.map +1 -0
  226. package/dist/server/server/api/RequestBoundary.d.ts +17 -0
  227. package/dist/server/server/api/RequestBoundary.d.ts.map +1 -0
  228. package/dist/server/server/api/RequestContext.d.ts +38 -0
  229. package/dist/server/server/api/RequestContext.d.ts.map +1 -0
  230. package/dist/server/server/api/RequestLimits.d.ts +79 -0
  231. package/dist/server/server/api/RequestLimits.d.ts.map +1 -0
  232. package/dist/server/server/api/index.d.ts +9 -0
  233. package/dist/server/server/api/index.d.ts.map +1 -0
  234. package/dist/server/server/application/authorizedShares.d.ts +29 -0
  235. package/dist/server/server/application/authorizedShares.d.ts.map +1 -0
  236. package/dist/server/server/application/awsResourceDiscovery.d.ts +18 -0
  237. package/dist/server/server/application/awsResourceDiscovery.d.ts.map +1 -0
  238. package/dist/server/server/application/connectionOwnership.d.ts +50 -0
  239. package/dist/server/server/application/connectionOwnership.d.ts.map +1 -0
  240. package/dist/server/server/application/deliveryGraphInspection.d.ts +59 -0
  241. package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -0
  242. package/dist/server/server/application/errors.d.ts +10 -0
  243. package/dist/server/server/application/errors.d.ts.map +1 -0
  244. package/dist/server/server/application/fakeReleaseNormalization.d.ts +152 -0
  245. package/dist/server/server/application/fakeReleaseNormalization.d.ts.map +1 -0
  246. package/dist/server/server/application/index.d.ts +17 -0
  247. package/dist/server/server/application/index.d.ts.map +1 -0
  248. package/dist/server/server/application/liveEvents.d.ts +22 -0
  249. package/dist/server/server/application/liveEvents.d.ts.map +1 -0
  250. package/dist/server/server/application/manualPluginSynchronization.d.ts +41 -0
  251. package/dist/server/server/application/manualPluginSynchronization.d.ts.map +1 -0
  252. package/dist/server/server/application/mediaReads.d.ts +14 -0
  253. package/dist/server/server/application/mediaReads.d.ts.map +1 -0
  254. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts +109 -0
  255. package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -0
  256. package/dist/server/server/application/pluginAdministration.d.ts +1318 -0
  257. package/dist/server/server/application/pluginAdministration.d.ts.map +1 -0
  258. package/dist/server/server/application/pluginSynchronizationAuthority.d.ts +22 -0
  259. package/dist/server/server/application/pluginSynchronizationAuthority.d.ts.map +1 -0
  260. package/dist/server/server/application/portfolioInvalidation.d.ts +35 -0
  261. package/dist/server/server/application/portfolioInvalidation.d.ts.map +1 -0
  262. package/dist/server/server/application/portfolioSnapshots.d.ts +12 -0
  263. package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -0
  264. package/dist/server/server/application/readinessDigests.d.ts +3 -0
  265. package/dist/server/server/application/readinessDigests.d.ts.map +1 -0
  266. package/dist/server/server/application/relationshipInference.d.ts +57 -0
  267. package/dist/server/server/application/relationshipInference.d.ts.map +1 -0
  268. package/dist/server/server/application/relationshipInferenceMaterialization.d.ts +26 -0
  269. package/dist/server/server/application/relationshipInferenceMaterialization.d.ts.map +1 -0
  270. package/dist/server/server/application/relationshipRepairProposals.d.ts +41 -0
  271. package/dist/server/server/application/relationshipRepairProposals.d.ts.map +1 -0
  272. package/dist/server/server/application/releaseAgent.d.ts +30 -0
  273. package/dist/server/server/application/releaseAgent.d.ts.map +1 -0
  274. package/dist/server/server/application/releaseAgentJobs.d.ts +26 -0
  275. package/dist/server/server/application/releaseAgentJobs.d.ts.map +1 -0
  276. package/dist/server/server/application/releaseSynchronization.d.ts +55 -0
  277. package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -0
  278. package/dist/server/server/application/timelineExportAudits.d.ts +22 -0
  279. package/dist/server/server/application/timelineExportAudits.d.ts.map +1 -0
  280. package/dist/server/server/application/timelineExports.d.ts +46 -0
  281. package/dist/server/server/application/timelineExports.d.ts.map +1 -0
  282. package/dist/server/server/application/timelineReads.d.ts +29 -0
  283. package/dist/server/server/application/timelineReads.d.ts.map +1 -0
  284. package/dist/server/server/auth/Auth.d.ts +169 -0
  285. package/dist/server/server/auth/Auth.d.ts.map +1 -0
  286. package/dist/server/server/auth/AuthRepository.d.ts +160 -0
  287. package/dist/server/server/auth/AuthRepository.d.ts.map +1 -0
  288. package/dist/server/server/auth/TerminalRecovery.d.ts +35 -0
  289. package/dist/server/server/auth/TerminalRecovery.d.ts.map +1 -0
  290. package/dist/server/server/auth/errors.d.ts +31 -0
  291. package/dist/server/server/auth/errors.d.ts.map +1 -0
  292. package/dist/server/server/auth/index.d.ts +5 -0
  293. package/dist/server/server/auth/index.d.ts.map +1 -0
  294. package/dist/server/server/auth/models.d.ts +63 -0
  295. package/dist/server/server/auth/models.d.ts.map +1 -0
  296. package/dist/server/server/cli.d.ts +3 -0
  297. package/dist/server/server/cli.d.ts.map +1 -0
  298. package/dist/server/server/cli.js +669 -0
  299. package/dist/server/server/cli.js.map +1 -0
  300. package/dist/server/server/cliArguments.d.ts +21 -0
  301. package/dist/server/server/cliArguments.d.ts.map +1 -0
  302. package/dist/server/server/cliConfiguration.d.ts +20 -0
  303. package/dist/server/server/cliConfiguration.d.ts.map +1 -0
  304. package/dist/server/server/governance/governedActionAuthority.d.ts +54 -0
  305. package/dist/server/server/governance/governedActionAuthority.d.ts.map +1 -0
  306. package/dist/server/server/governance/governedActionDigests.d.ts +1348 -0
  307. package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -0
  308. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +55 -0
  309. package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -0
  310. package/dist/server/server/governance/internal/GovernedActionExecutionStore.d.ts +116 -0
  311. package/dist/server/server/governance/internal/GovernedActionExecutionStore.d.ts.map +1 -0
  312. package/dist/server/server/governance/internal/GovernedActionPolicyEvaluator.d.ts +120 -0
  313. package/dist/server/server/governance/internal/GovernedActionPolicyEvaluator.d.ts.map +1 -0
  314. package/dist/server/server/governance/internal/execution-store/begin.d.ts +17 -0
  315. package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -0
  316. package/dist/server/server/governance/internal/execution-store/current-evidence.d.ts +33 -0
  317. package/dist/server/server/governance/internal/execution-store/current-evidence.d.ts.map +1 -0
  318. package/dist/server/server/governance/internal/execution-store/current-session.d.ts +29 -0
  319. package/dist/server/server/governance/internal/execution-store/current-session.d.ts.map +1 -0
  320. package/dist/server/server/governance/internal/execution-store/current-target.d.ts +28 -0
  321. package/dist/server/server/governance/internal/execution-store/current-target.d.ts.map +1 -0
  322. package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +20 -0
  323. package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts.map +1 -0
  324. package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +78 -0
  325. package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts.map +1 -0
  326. package/dist/server/server/governance/internal/execution-store/inspect.d.ts +17 -0
  327. package/dist/server/server/governance/internal/execution-store/inspect.d.ts.map +1 -0
  328. package/dist/server/server/governance/internal/execution-store/live.d.ts +6 -0
  329. package/dist/server/server/governance/internal/execution-store/live.d.ts.map +1 -0
  330. package/dist/server/server/governance/internal/execution-store/preparation.d.ts +42 -0
  331. package/dist/server/server/governance/internal/execution-store/preparation.d.ts.map +1 -0
  332. package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +33 -0
  333. package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts.map +1 -0
  334. package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +20 -0
  335. package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts.map +1 -0
  336. package/dist/server/server/governance/internal/execution-store/reconciliation-locator.d.ts +5 -0
  337. package/dist/server/server/governance/internal/execution-store/reconciliation-locator.d.ts.map +1 -0
  338. package/dist/server/server/governance/internal/execution-store/reconciliation-outcome.d.ts +123 -0
  339. package/dist/server/server/governance/internal/execution-store/reconciliation-outcome.d.ts.map +1 -0
  340. package/dist/server/server/governance/internal/execution-store/record-blocked.d.ts +13 -0
  341. package/dist/server/server/governance/internal/execution-store/record-blocked.d.ts.map +1 -0
  342. package/dist/server/server/governance/internal/execution-store/record-dispatch.d.ts +12 -0
  343. package/dist/server/server/governance/internal/execution-store/record-dispatch.d.ts.map +1 -0
  344. package/dist/server/server/governance/internal/execution-store/record-reconciliation.d.ts +12 -0
  345. package/dist/server/server/governance/internal/execution-store/record-reconciliation.d.ts.map +1 -0
  346. package/dist/server/server/governance/internal/execution-store/record-recovery-unavailable.d.ts +11 -0
  347. package/dist/server/server/governance/internal/execution-store/record-recovery-unavailable.d.ts.map +1 -0
  348. package/dist/server/server/governance/internal/execution-store/record-unknown.d.ts +11 -0
  349. package/dist/server/server/governance/internal/execution-store/record-unknown.d.ts.map +1 -0
  350. package/dist/server/server/governance/internal/execution-store/recovery-candidates.d.ts +12 -0
  351. package/dist/server/server/governance/internal/execution-store/recovery-candidates.d.ts.map +1 -0
  352. package/dist/server/server/governance/internal/execution-store/recovery-claim-expiry.d.ts +9 -0
  353. package/dist/server/server/governance/internal/execution-store/recovery-claim-expiry.d.ts.map +1 -0
  354. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +465 -0
  355. package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -0
  356. package/dist/server/server/governance/internal/execution-store/tokens.d.ts +52 -0
  357. package/dist/server/server/governance/internal/execution-store/tokens.d.ts.map +1 -0
  358. package/dist/server/server/http/StaticApplication.d.ts +8 -0
  359. package/dist/server/server/http/StaticApplication.d.ts.map +1 -0
  360. package/dist/server/server/http/index.d.ts +4 -0
  361. package/dist/server/server/http/index.d.ts.map +1 -0
  362. package/dist/server/server/http/security/HttpLimits.d.ts +22 -0
  363. package/dist/server/server/http/security/HttpLimits.d.ts.map +1 -0
  364. package/dist/server/server/http/security/RequestPolicy.d.ts +26 -0
  365. package/dist/server/server/http/security/RequestPolicy.d.ts.map +1 -0
  366. package/dist/server/server/http/security/RichDocument.d.ts +154 -0
  367. package/dist/server/server/http/security/RichDocument.d.ts.map +1 -0
  368. package/dist/server/server/http/security/SecurityHeaders.d.ts +7 -0
  369. package/dist/server/server/http/security/SecurityHeaders.d.ts.map +1 -0
  370. package/dist/server/server/http/security/StaticAssetStore.d.ts +43 -0
  371. package/dist/server/server/http/security/StaticAssetStore.d.ts.map +1 -0
  372. package/dist/server/server/http/security/UrlPolicy.d.ts +30 -0
  373. package/dist/server/server/http/security/UrlPolicy.d.ts.map +1 -0
  374. package/dist/server/server/http/security/index.d.ts +8 -0
  375. package/dist/server/server/http/security/index.d.ts.map +1 -0
  376. package/dist/server/server/index.d.ts +18 -0
  377. package/dist/server/server/index.d.ts.map +1 -0
  378. package/dist/server/server/index.js +583 -0
  379. package/dist/server/server/index.js.map +1 -0
  380. package/dist/server/server/observability.d.ts +13 -0
  381. package/dist/server/server/observability.d.ts.map +1 -0
  382. package/dist/server/server/persistence/ContentStore.d.ts +86 -0
  383. package/dist/server/server/persistence/ContentStore.d.ts.map +1 -0
  384. package/dist/server/server/persistence/Database.d.ts +26 -0
  385. package/dist/server/server/persistence/Database.d.ts.map +1 -0
  386. package/dist/server/server/persistence/Persistence.d.ts +7042 -0
  387. package/dist/server/server/persistence/Persistence.d.ts.map +1 -0
  388. package/dist/server/server/persistence/PersistenceConfig.d.ts +27 -0
  389. package/dist/server/server/persistence/PersistenceConfig.d.ts.map +1 -0
  390. package/dist/server/server/persistence/backup/BackupArchive.d.ts +32 -0
  391. package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -0
  392. package/dist/server/server/persistence/backup/BackupArchiveCore.d.ts +23 -0
  393. package/dist/server/server/persistence/backup/BackupArchiveCore.d.ts.map +1 -0
  394. package/dist/server/server/persistence/backup/BackupManifest.d.ts +136 -0
  395. package/dist/server/server/persistence/backup/BackupManifest.d.ts.map +1 -0
  396. package/dist/server/server/persistence/backup/DatabaseSnapshot.d.ts +53 -0
  397. package/dist/server/server/persistence/backup/DatabaseSnapshot.d.ts.map +1 -0
  398. package/dist/server/server/persistence/backup/errors.d.ts +53 -0
  399. package/dist/server/server/persistence/backup/errors.d.ts.map +1 -0
  400. package/dist/server/server/persistence/backup/index.d.ts +4 -0
  401. package/dist/server/server/persistence/backup/index.d.ts.map +1 -0
  402. package/dist/server/server/persistence/errors.d.ts +99 -0
  403. package/dist/server/server/persistence/errors.d.ts.map +1 -0
  404. package/dist/server/server/persistence/governedActionReconciliationLocator.d.ts +14 -0
  405. package/dist/server/server/persistence/governedActionReconciliationLocator.d.ts.map +1 -0
  406. package/dist/server/server/persistence/index.d.ts +11 -0
  407. package/dist/server/server/persistence/index.d.ts.map +1 -0
  408. package/dist/server/server/persistence/object-store/BlobDigest.d.ts +6 -0
  409. package/dist/server/server/persistence/object-store/BlobDigest.d.ts.map +1 -0
  410. package/dist/server/server/persistence/object-store/BlobPath.d.ts +12 -0
  411. package/dist/server/server/persistence/object-store/BlobPath.d.ts.map +1 -0
  412. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts +8 -0
  413. package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -0
  414. package/dist/server/server/persistence/object-store/BlobRef.d.ts +16 -0
  415. package/dist/server/server/persistence/object-store/BlobRef.d.ts.map +1 -0
  416. package/dist/server/server/persistence/object-store/BlobStore.d.ts +37 -0
  417. package/dist/server/server/persistence/object-store/BlobStore.d.ts.map +1 -0
  418. package/dist/server/server/persistence/object-store/BlobStoreError.d.ts +57 -0
  419. package/dist/server/server/persistence/object-store/BlobStoreError.d.ts.map +1 -0
  420. package/dist/server/server/persistence/object-store/BlobStoreTypes.d.ts +28 -0
  421. package/dist/server/server/persistence/object-store/BlobStoreTypes.d.ts.map +1 -0
  422. package/dist/server/server/persistence/object-store/OpenedBlob.d.ts +21 -0
  423. package/dist/server/server/persistence/object-store/OpenedBlob.d.ts.map +1 -0
  424. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +21 -0
  425. package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -0
  426. package/dist/server/server/persistence/repositories/agentJobModels.d.ts +142 -0
  427. package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -0
  428. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +134 -0
  429. package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -0
  430. package/dist/server/server/persistence/repositories/authorizedShareRepository.d.ts +92 -0
  431. package/dist/server/server/persistence/repositories/authorizedShareRepository.d.ts.map +1 -0
  432. package/dist/server/server/persistence/repositories/contentBlobMetadataRepository.d.ts +67 -0
  433. package/dist/server/server/persistence/repositories/contentBlobMetadataRepository.d.ts.map +1 -0
  434. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +2989 -0
  435. package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -0
  436. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +566 -0
  437. package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -0
  438. package/dist/server/server/persistence/repositories/delivery-graph/integrity.d.ts +16 -0
  439. package/dist/server/server/persistence/repositories/delivery-graph/integrity.d.ts.map +1 -0
  440. package/dist/server/server/persistence/repositories/delivery-graph/quarantine.d.ts +22 -0
  441. package/dist/server/server/persistence/repositories/delivery-graph/quarantine.d.ts.map +1 -0
  442. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +2147 -0
  443. package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -0
  444. package/dist/server/server/persistence/repositories/delivery-graph/release-slice.d.ts +16 -0
  445. package/dist/server/server/persistence/repositories/delivery-graph/release-slice.d.ts.map +1 -0
  446. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +683 -0
  447. package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -0
  448. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +946 -0
  449. package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -0
  450. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +2121 -0
  451. package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -0
  452. package/dist/server/server/persistence/repositories/domainEventModels.d.ts +89 -0
  453. package/dist/server/server/persistence/repositories/domainEventModels.d.ts.map +1 -0
  454. package/dist/server/server/persistence/repositories/domainEventRepository.d.ts +85 -0
  455. package/dist/server/server/persistence/repositories/domainEventRepository.d.ts.map +1 -0
  456. package/dist/server/server/persistence/repositories/entityRepository.d.ts +134 -0
  457. package/dist/server/server/persistence/repositories/entityRepository.d.ts.map +1 -0
  458. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +1478 -0
  459. package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -0
  460. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +858 -0
  461. package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -0
  462. package/dist/server/server/persistence/repositories/governed-action/quarantine.d.ts +22 -0
  463. package/dist/server/server/persistence/repositories/governed-action/quarantine.d.ts.map +1 -0
  464. package/dist/server/server/persistence/repositories/governed-action/read.d.ts +452 -0
  465. package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -0
  466. package/dist/server/server/persistence/repositories/governed-action/rows.d.ts +115 -0
  467. package/dist/server/server/persistence/repositories/governed-action/rows.d.ts.map +1 -0
  468. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +457 -0
  469. package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -0
  470. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +518 -0
  471. package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -0
  472. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +702 -0
  473. package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -0
  474. package/dist/server/server/persistence/repositories/governed-action/write.d.ts +618 -0
  475. package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -0
  476. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +467 -0
  477. package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -0
  478. package/dist/server/server/persistence/repositories/index.d.ts +26 -0
  479. package/dist/server/server/persistence/repositories/index.d.ts.map +1 -0
  480. package/dist/server/server/persistence/repositories/internal.d.ts +38 -0
  481. package/dist/server/server/persistence/repositories/internal.d.ts.map +1 -0
  482. package/dist/server/server/persistence/repositories/models.d.ts +420 -0
  483. package/dist/server/server/persistence/repositories/models.d.ts.map +1 -0
  484. package/dist/server/server/persistence/repositories/peopleRepository.d.ts +407 -0
  485. package/dist/server/server/persistence/repositories/peopleRepository.d.ts.map +1 -0
  486. package/dist/server/server/persistence/repositories/persistedRowQuarantine.d.ts +20 -0
  487. package/dist/server/server/persistence/repositories/persistedRowQuarantine.d.ts.map +1 -0
  488. package/dist/server/server/persistence/repositories/pluginConfigurationModels.d.ts +76 -0
  489. package/dist/server/server/persistence/repositories/pluginConfigurationModels.d.ts.map +1 -0
  490. package/dist/server/server/persistence/repositories/pluginConfigurationRepository.d.ts +179 -0
  491. package/dist/server/server/persistence/repositories/pluginConfigurationRepository.d.ts.map +1 -0
  492. package/dist/server/server/persistence/repositories/pluginConnectionRepository.d.ts +123 -0
  493. package/dist/server/server/persistence/repositories/pluginConnectionRepository.d.ts.map +1 -0
  494. package/dist/server/server/persistence/repositories/pluginRuntimeModels.d.ts +195 -0
  495. package/dist/server/server/persistence/repositories/pluginRuntimeModels.d.ts.map +1 -0
  496. package/dist/server/server/persistence/repositories/pluginRuntimeRepository.d.ts +431 -0
  497. package/dist/server/server/persistence/repositories/pluginRuntimeRepository.d.ts.map +1 -0
  498. package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +150 -0
  499. package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts.map +1 -0
  500. package/dist/server/server/persistence/repositories/quarantineRepository.d.ts +42 -0
  501. package/dist/server/server/persistence/repositories/quarantineRepository.d.ts.map +1 -0
  502. package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +2679 -0
  503. package/dist/server/server/persistence/repositories/readiness/assessments.d.ts.map +1 -0
  504. package/dist/server/server/persistence/repositories/readiness/codec.d.ts +1368 -0
  505. package/dist/server/server/persistence/repositories/readiness/codec.d.ts.map +1 -0
  506. package/dist/server/server/persistence/repositories/readiness/contract.d.ts +3315 -0
  507. package/dist/server/server/persistence/repositories/readiness/contract.d.ts.map +1 -0
  508. package/dist/server/server/persistence/repositories/readiness/materialization.d.ts +459 -0
  509. package/dist/server/server/persistence/repositories/readiness/materialization.d.ts.map +1 -0
  510. package/dist/server/server/persistence/repositories/readiness/quarantine.d.ts +22 -0
  511. package/dist/server/server/persistence/repositories/readiness/quarantine.d.ts.map +1 -0
  512. package/dist/server/server/persistence/repositories/readiness/queue.d.ts +112 -0
  513. package/dist/server/server/persistence/repositories/readiness/queue.d.ts.map +1 -0
  514. package/dist/server/server/persistence/repositories/readiness/rows.d.ts +169 -0
  515. package/dist/server/server/persistence/repositories/readiness/rows.d.ts.map +1 -0
  516. package/dist/server/server/persistence/repositories/readiness/rules.d.ts +85 -0
  517. package/dist/server/server/persistence/repositories/readiness/rules.d.ts.map +1 -0
  518. package/dist/server/server/persistence/repositories/readinessRepository.d.ts +1722 -0
  519. package/dist/server/server/persistence/repositories/readinessRepository.d.ts.map +1 -0
  520. package/dist/server/server/persistence/repositories/relationshipRepairProposalRepository.d.ts +294 -0
  521. package/dist/server/server/persistence/repositories/relationshipRepairProposalRepository.d.ts.map +1 -0
  522. package/dist/server/server/persistence/repositories/releaseRepository.d.ts +1062 -0
  523. package/dist/server/server/persistence/repositories/releaseRepository.d.ts.map +1 -0
  524. package/dist/server/server/persistence/repositories/timelineExportAuditRepository.d.ts +39 -0
  525. package/dist/server/server/persistence/repositories/timelineExportAuditRepository.d.ts.map +1 -0
  526. package/dist/server/server/persistence/repositories/timelineRepository.d.ts +84 -0
  527. package/dist/server/server/persistence/repositories/timelineRepository.d.ts.map +1 -0
  528. package/dist/server/server/persistence/repositories/workspaceRepository.d.ts +52 -0
  529. package/dist/server/server/persistence/repositories/workspaceRepository.d.ts.map +1 -0
  530. package/dist/server/server/persistence/schema.d.ts +17 -0
  531. package/dist/server/server/persistence/schema.d.ts.map +1 -0
  532. package/dist/server/server/persistence/schemas.d.ts +14 -0
  533. package/dist/server/server/persistence/schemas.d.ts.map +1 -0
  534. package/dist/server/server/plugins/AtlassianBasicAuth.d.ts +2 -0
  535. package/dist/server/server/plugins/AtlassianBasicAuth.d.ts.map +1 -0
  536. package/dist/server/server/plugins/PluginCapabilityCodecs.d.ts +357 -0
  537. package/dist/server/server/plugins/PluginCapabilityCodecs.d.ts.map +1 -0
  538. package/dist/server/server/plugins/PluginConnection.d.ts +28 -0
  539. package/dist/server/server/plugins/PluginConnection.d.ts.map +1 -0
  540. package/dist/server/server/plugins/PluginConnectionMap.d.ts +22 -0
  541. package/dist/server/server/plugins/PluginConnectionMap.d.ts.map +1 -0
  542. package/dist/server/server/plugins/PluginDefinition.d.ts +9 -0
  543. package/dist/server/server/plugins/PluginDefinition.d.ts.map +1 -0
  544. package/dist/server/server/plugins/PluginDefinitionV1.d.ts +11 -0
  545. package/dist/server/server/plugins/PluginDefinitionV1.d.ts.map +1 -0
  546. package/dist/server/server/plugins/PluginExecutor.d.ts +14 -0
  547. package/dist/server/server/plugins/PluginExecutor.d.ts.map +1 -0
  548. package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts +35 -0
  549. package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -0
  550. package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts +39 -0
  551. package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -0
  552. package/dist/server/server/plugins/catalog/firstPartyServiceCatalog.d.ts +13 -0
  553. package/dist/server/server/plugins/catalog/firstPartyServiceCatalog.d.ts.map +1 -0
  554. package/dist/server/server/plugins/clockify/ClockifyReadPlugin.d.ts +78 -0
  555. package/dist/server/server/plugins/clockify/ClockifyReadPlugin.d.ts.map +1 -0
  556. package/dist/server/server/plugins/clockify/ClockifyReadProvider.d.ts +2 -0
  557. package/dist/server/server/plugins/clockify/ClockifyReadProvider.d.ts.map +1 -0
  558. package/dist/server/server/plugins/clockify/ClockifyTimeEntryNormalization.d.ts +2 -0
  559. package/dist/server/server/plugins/clockify/ClockifyTimeEntryNormalization.d.ts.map +1 -0
  560. package/dist/server/server/plugins/clockify/index.d.ts +3 -0
  561. package/dist/server/server/plugins/clockify/index.d.ts.map +1 -0
  562. package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts +4 -0
  563. package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -0
  564. package/dist/server/server/plugins/codecommit/index.d.ts +3 -0
  565. package/dist/server/server/plugins/codecommit/index.d.ts.map +1 -0
  566. package/dist/server/server/plugins/codepipeline/CodePipelinePluginDefinition.d.ts +4 -0
  567. package/dist/server/server/plugins/codepipeline/CodePipelinePluginDefinition.d.ts.map +1 -0
  568. package/dist/server/server/plugins/codepipeline/CodePipelineReadClient.d.ts +2 -0
  569. package/dist/server/server/plugins/codepipeline/CodePipelineReadClient.d.ts.map +1 -0
  570. package/dist/server/server/plugins/codepipeline/CodePipelineReadProvider.d.ts +2 -0
  571. package/dist/server/server/plugins/codepipeline/CodePipelineReadProvider.d.ts.map +1 -0
  572. package/dist/server/server/plugins/codepipeline/index.d.ts +3 -0
  573. package/dist/server/server/plugins/codepipeline/index.d.ts.map +1 -0
  574. package/dist/server/server/plugins/confluence/ConfluencePageAdapter.d.ts +2 -0
  575. package/dist/server/server/plugins/confluence/ConfluencePageAdapter.d.ts.map +1 -0
  576. package/dist/server/server/plugins/confluence/ConfluencePageClient.d.ts +2 -0
  577. package/dist/server/server/plugins/confluence/ConfluencePageClient.d.ts.map +1 -0
  578. package/dist/server/server/plugins/confluence/ConfluencePagePluginDefinition.d.ts +44 -0
  579. package/dist/server/server/plugins/confluence/ConfluencePagePluginDefinition.d.ts.map +1 -0
  580. package/dist/server/server/plugins/confluence/ConfluencePageSchemas.d.ts +2 -0
  581. package/dist/server/server/plugins/confluence/ConfluencePageSchemas.d.ts.map +1 -0
  582. package/dist/server/server/plugins/confluence/SafeConfluenceMarkdown.d.ts +2 -0
  583. package/dist/server/server/plugins/confluence/SafeConfluenceMarkdown.d.ts.map +1 -0
  584. package/dist/server/server/plugins/failures.d.ts +79 -0
  585. package/dist/server/server/plugins/failures.d.ts.map +1 -0
  586. package/dist/server/server/plugins/fake/FakePluginDefinition.d.ts +17 -0
  587. package/dist/server/server/plugins/fake/FakePluginDefinition.d.ts.map +1 -0
  588. package/dist/server/server/plugins/fake/FakePluginProbe.d.ts +40 -0
  589. package/dist/server/server/plugins/fake/FakePluginProbe.d.ts.map +1 -0
  590. package/dist/server/server/plugins/fake/FakePluginScenario.d.ts +46 -0
  591. package/dist/server/server/plugins/fake/FakePluginScenario.d.ts.map +1 -0
  592. package/dist/server/server/plugins/firstPartySynchronization.d.ts +7 -0
  593. package/dist/server/server/plugins/firstPartySynchronization.d.ts.map +1 -0
  594. package/dist/server/server/plugins/index.d.ts +21 -0
  595. package/dist/server/server/plugins/index.d.ts.map +1 -0
  596. package/dist/server/server/plugins/internal/AuthorizedPluginExecutor.d.ts +8 -0
  597. package/dist/server/server/plugins/internal/AuthorizedPluginExecutor.d.ts.map +1 -0
  598. package/dist/server/server/plugins/internal/AuthorizedPluginExecutorMap.d.ts +27 -0
  599. package/dist/server/server/plugins/internal/AuthorizedPluginExecutorMap.d.ts.map +1 -0
  600. package/dist/server/server/plugins/internal/FirstPartyPluginRuntimeRegistry.d.ts +2 -0
  601. package/dist/server/server/plugins/internal/FirstPartyPluginRuntimeRegistry.d.ts.map +1 -0
  602. package/dist/server/server/plugins/internal/PluginRuntime.d.ts +13 -0
  603. package/dist/server/server/plugins/internal/PluginRuntime.d.ts.map +1 -0
  604. package/dist/server/server/plugins/internal/PluginRuntimeAuthority.d.ts +154 -0
  605. package/dist/server/server/plugins/internal/PluginRuntimeAuthority.d.ts.map +1 -0
  606. package/dist/server/server/plugins/internal/PluginRuntimeAuthorityRepository.d.ts +131 -0
  607. package/dist/server/server/plugins/internal/PluginRuntimeAuthorityRepository.d.ts.map +1 -0
  608. package/dist/server/server/plugins/internal/PluginRuntimeAuthoritySource.d.ts +23 -0
  609. package/dist/server/server/plugins/internal/PluginRuntimeAuthoritySource.d.ts.map +1 -0
  610. package/dist/server/server/plugins/internal/PluginRuntimeMap.d.ts +23 -0
  611. package/dist/server/server/plugins/internal/PluginRuntimeMap.d.ts.map +1 -0
  612. package/dist/server/server/plugins/internal/PluginRuntimeRegistry.d.ts +21 -0
  613. package/dist/server/server/plugins/internal/PluginRuntimeRegistry.d.ts.map +1 -0
  614. package/dist/server/server/plugins/jira/JiraIssueNormalization.d.ts +2 -0
  615. package/dist/server/server/plugins/jira/JiraIssueNormalization.d.ts.map +1 -0
  616. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +74 -0
  617. package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -0
  618. package/dist/server/server/plugins/jira/JiraReadProvider.d.ts +7 -0
  619. package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -0
  620. package/dist/server/server/plugins/jira/index.d.ts +3 -0
  621. package/dist/server/server/plugins/jira/index.d.ts.map +1 -0
  622. package/dist/server/server/plugins/negotiation.d.ts +75 -0
  623. package/dist/server/server/plugins/negotiation.d.ts.map +1 -0
  624. package/dist/server/server/plugins/retryPolicy.d.ts +28 -0
  625. package/dist/server/server/plugins/retryPolicy.d.ts.map +1 -0
  626. package/dist/server/server/readinessDigests.d.ts +103 -0
  627. package/dist/server/server/readinessDigests.d.ts.map +1 -0
  628. package/dist/server/server/runtime/Bootstrap.d.ts +39 -0
  629. package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -0
  630. package/dist/server/server/runtime/ControlCenterServer.d.ts +57 -0
  631. package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -0
  632. package/dist/server/server/runtime/DatabaseDrain.d.ts +6 -0
  633. package/dist/server/server/runtime/DatabaseDrain.d.ts.map +1 -0
  634. package/dist/server/server/runtime/DomainEventWakeups.d.ts +22 -0
  635. package/dist/server/server/runtime/DomainEventWakeups.d.ts.map +1 -0
  636. package/dist/server/server/runtime/FirstPartyPluginRuntime.d.ts +2 -0
  637. package/dist/server/server/runtime/FirstPartyPluginRuntime.d.ts.map +1 -0
  638. package/dist/server/server/runtime/GovernedActionExecutionStartup.d.ts +35 -0
  639. package/dist/server/server/runtime/GovernedActionExecutionStartup.d.ts.map +1 -0
  640. package/dist/server/server/runtime/NodeTransport.d.ts +57 -0
  641. package/dist/server/server/runtime/NodeTransport.d.ts.map +1 -0
  642. package/dist/server/server/runtime/ReleaseSynchronizationStartup.d.ts +44 -0
  643. package/dist/server/server/runtime/ReleaseSynchronizationStartup.d.ts.map +1 -0
  644. package/dist/server/server/runtime/RequestUrlBoundary.d.ts +4 -0
  645. package/dist/server/server/runtime/RequestUrlBoundary.d.ts.map +1 -0
  646. package/dist/server/server/runtime/ServerLifecycle.d.ts +74 -0
  647. package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -0
  648. package/dist/server/server/runtime/index.d.ts +9 -0
  649. package/dist/server/server/runtime/index.d.ts.map +1 -0
  650. package/dist/server/server/secrets/SecretRef.d.ts +6 -0
  651. package/dist/server/server/secrets/SecretRef.d.ts.map +1 -0
  652. package/dist/server/server/secrets/SecretStore.d.ts +39 -0
  653. package/dist/server/server/secrets/SecretStore.d.ts.map +1 -0
  654. package/dist/server/server/secrets/SecretStoreError.d.ts +41 -0
  655. package/dist/server/server/secrets/SecretStoreError.d.ts.map +1 -0
  656. package/dist/server/server/secrets/index.d.ts +5 -0
  657. package/dist/server/server/secrets/index.d.ts.map +1 -0
  658. package/dist/server/server/security/BindConfig.d.ts +51 -0
  659. package/dist/server/server/security/BindConfig.d.ts.map +1 -0
  660. package/dist/server/server/security/RequestSecurity.d.ts +84 -0
  661. package/dist/server/server/security/RequestSecurity.d.ts.map +1 -0
  662. package/dist/server/server/security/index.d.ts +3 -0
  663. package/dist/server/server/security/index.d.ts.map +1 -0
  664. package/package.json +101 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 knpkv
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,309 @@
1
+ # `@knpkv/control-center`
2
+
3
+ Control Center is a local, human- and agent-oriented delivery application. It connects release work across CodeCommit, CodePipeline, Jira, Confluence, and Clockify without allowing vendor models or server capabilities to leak into the browser.
4
+
5
+ This package is under active development, and its public API remains subject to change before `1.0.0`.
6
+
7
+ ## Development
8
+
9
+ Node.js 24 or newer and the repository-pinned pnpm version are required.
10
+
11
+ ```sh
12
+ pnpm --filter @knpkv/control-center dev
13
+ pnpm --filter @knpkv/control-center check
14
+ pnpm --filter @knpkv/control-center test
15
+ pnpm --filter @knpkv/control-center test:e2e
16
+ ```
17
+
18
+ Development binds to `127.0.0.1:5173` by default. A LAN bind must opt into the security policy described below; a wildcard host alone is rejected.
19
+
20
+ ### Distribution JavaScript budgets
21
+
22
+ `validate:dist` checks every emitted client and server `.js` file independently using its raw byte length and deterministic level-9 gzip byte length. Source maps, the Vite manifest, and `build-graph.json` are build metadata and are not runtime JavaScript artifacts.
23
+
24
+ | Target | Largest measured artifact | Measured raw / gzip | Per-artifact raw / gzip budget |
25
+ | ------ | --------------------------- | ------------------------: | -----------------------------: |
26
+ | Client | generated API client chunk | 221,593 / 66,543 bytes | 235,000 / 70,000 bytes |
27
+ | Server | shared `BindConfig-*` chunk | 1,583,001 / 273,567 bytes | 1,650,000 / 290,000 bytes |
28
+
29
+ These initial ceilings were measured from a production build on 2026-07-19 and leave roughly four to six percent headroom, enough for build variance while rejecting meaningful per-file growth. The server chunk was about 6.87 MB raw and 1.09 MB gzip before the server build externalized declared runtime dependencies. Vite had followed linked workspace packages into their transitive graphs, including `confluence-to-markdown`'s Atlaskit schema/transformer, AJV, Markdown, and ProseMirror dependencies, `control-center-sql`'s query parser, and the broad `codecommit-core` root barrel. The server now keeps dependencies as runtime imports and uses narrow CodeCommit subpaths.
30
+
31
+ The remaining 1.58 MB raw shared server chunk is bounded technical debt: it is primarily Control Center's own shared application, persistence, plugin, API, and schema-snapshot graph. `BindConfig` is only Vite's generated chunk name, not the size owner. Future work should split that internal graph at deliberate runtime boundaries; raising the budget requires recording a new measurement and cause here.
32
+
33
+ ## Run the application
34
+
35
+ Build once, then start the authenticated application server:
36
+
37
+ ```sh
38
+ pnpm --filter @knpkv/control-center build
39
+ pnpm --filter @knpkv/control-center start
40
+ ```
41
+
42
+ The first run prints a single-use pairing code and listens at `http://127.0.0.1:4173`. Durable data, content, and owner-only secrets live under `.control-center` by default; set `CONTROL_CENTER_DATA_ROOT` to choose another owner-controlled directory.
43
+
44
+ ### Local OpenTelemetry
45
+
46
+ Control Center can export Effect traces and structured logs to an OTLP/HTTP collector. Export is opt-in and disabled unless the corresponding OpenTelemetry exporters are enabled. Metrics are not exported in this initial slice.
47
+
48
+ For example, start [motel](https://github.com/kitlangton/motel), then run Control Center against its default local listener:
49
+
50
+ ```sh
51
+ OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:27686 \
52
+ OTEL_EXPORTER_OTLP_PROTOCOL=http/json \
53
+ OTEL_LOGS_EXPORTER=otlp \
54
+ OTEL_TRACES_EXPORTER=otlp \
55
+ pnpm --filter @knpkv/control-center start
56
+ ```
57
+
58
+ To use [Lensflare](https://lensflare.dev/), create or select a dataset in its local UI and substitute that dataset's slug below. Lensflare listens on port `43110` by default and uses dataset-specific ingest routes:
59
+
60
+ ```sh
61
+ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://127.0.0.1:43110/ingest/otlp/v1/logs/<dataset-slug> \
62
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://127.0.0.1:43110/ingest/otlp/v1/traces/<dataset-slug> \
63
+ OTEL_EXPORTER_OTLP_PROTOCOL=http/json \
64
+ OTEL_LOGS_EXPORTER=otlp \
65
+ OTEL_TRACES_EXPORTER=otlp \
66
+ pnpm --filter @knpkv/control-center start
67
+ ```
68
+
69
+ Lensflare's optional MCP endpoint for querying the captured telemetry is `http://127.0.0.1:43110/mcp`; it is separate from the ingest endpoints above.
70
+
71
+ When an exporter is enabled without an endpoint, Control Center uses the OpenTelemetry defaults: `http://localhost:4318`, `/v1/logs` and `/v1/traces`, with `http/protobuf`. Set `OTEL_EXPORTER_OTLP_PROTOCOL=http/json` for JSON-only collectors, or use the standard signal-specific protocol variables when the two signals differ. `OTEL_SERVICE_NAME` may override the default `control-center` service name, while the standard signal-specific endpoint and header variables can target another compatible collector. Exporters flush their bounded batches when the scoped Control Center runtime shuts down; collector outages do not fail application work.
72
+
73
+ `SIGINT` and `SIGTERM` begin graceful drain before scoped runtime resources close. The server rejects new authenticated mutations and live-event streams with a retryable `503`, closes existing live-event streams, and gives already-admitted mutations or startup background jobs up to ten seconds to finish. After that work and existing streams clear, one stable snapshot of named subsystem hooks runs sequentially. The governed worker appends immutable shutdown expirations for its still-live recovery claims so another process can reclaim them immediately; then the local SQLite hook checkpoints and truncates the WAL. Hook defects are reported by secret-free hook identity, and the hard deadline still bounds the complete work-and-flush sequence. Mutation-only callers retain a separate barrier that does not wait for startup background jobs or flush hooks. Startup release synchronization and governed-action recovery share the full-work admission barrier.
74
+
75
+ Fake release synchronization records an immutable attempt before acquiring its provider and appends a completion only after the synchronized page boundary is durable. Startup first reconciles every still-open attempt for the configured fake-provider stream as `interrupted`, using the stream's current durable revision and exact committed-page delta, then admits the next attempt. A provider outage completes as `source-unavailable`; cancellation, defects, and persistence failures never become successful synchronization records.
76
+
77
+ When the private governed worker is enabled, startup selects at most 64 actions from the configured bootstrap workspace whose recovery safety interval has elapsed. The `effect-qb` query uses stable lease/workspace/action order and excludes unexpired, un-released recovery claims. Each candidate enters the existing inspect-and-reconcile path sequentially, so startup never redispatches an ambiguous provider mutation. A candidate-list failure prevents the worker from becoming ready; individual typed failures and defects are counted in the secret-free startup summary while the remaining bounded batch continues. Runtime interruption still stops the sweep, and an explicitly expired claim rejects late provider outcomes while allowing immediate deterministic takeover.
78
+
79
+ ### Local release agent
80
+
81
+ Every canonical release page has a release-owned Relay thread. An owner browser sends its bounded prompt and recent thread history through the typed API; the server resolves the current workspace-scoped release projection before each turn and runs the selected local CLI with read-only filesystem access. Provider configuration, credentials, filesystem paths, and raw provider failures remain server-only. Threads are isolated by browser session and currently remain in that tab; provider session identifiers are not treated as durable product state.
82
+
83
+ Local providers are disabled by default. Enabling one grants that CLI read access to the configured working directory, so use an owner-controlled, least-privilege checkout and trusted HTTPS:
84
+
85
+ ```sh
86
+ CONTROL_CENTER_AGENT_PROVIDERS=codex,claude \
87
+ CONTROL_CENTER_AGENT_CWD=/srv/workspaces/payments \
88
+ pnpm --filter @knpkv/control-center start
89
+
90
+ # Keep local agents disabled while leaving the release UI available.
91
+ pnpm --filter @knpkv/control-center start
92
+ ```
93
+
94
+ `CONTROL_CENTER_AGENT_CWD` is required whenever a provider is enabled; Control Center does not silently grant access to its launch directory.
95
+
96
+ `CONTROL_CENTER_AGENT_CODEX_EXECUTABLE`, `CONTROL_CENTER_AGENT_CODEX_MODEL`, `CONTROL_CENTER_AGENT_CLAUDE_EXECUTABLE`, and `CONTROL_CENTER_AGENT_CLAUDE_MODEL` provide server-only overrides. The respective CLI must already be installed and authenticated for the operating-system user running Control Center. Agent turns have a separate low-rate budget and a 130-second request deadline; each adapter applies a two-minute subprocess deadline and bounded output capture inside that request.
97
+
98
+ If the first code was lost after the workspace initialized, or no owner session remains, stop the server and run terminal recovery against the same data root:
99
+
100
+ ```sh
101
+ pnpm --filter @knpkv/control-center start recover-owner
102
+ ```
103
+
104
+ Recovery verifies the owner and mode of the canonical data directory, then requires the exact terminal phrase `ISSUE OWNER RECOVERY CODE`. A successful recovery revokes existing owner sessions and every outstanding pairing code before it prints a replacement single-use code. It is deliberately unavailable over HTTP.
105
+
106
+ ### Offline backup and restore
107
+
108
+ Stop Control Center and every other process that can write its data root before creating or restoring a backup. The workspace commands below pass the same arguments as the installed `control-center` binary:
109
+
110
+ ```sh
111
+ CONTROL_CENTER_DATA_ROOT=/srv/control-center \
112
+ pnpm --filter @knpkv/control-center start backup /srv/control-center-backups/2026-07-14
113
+
114
+ pnpm --filter @knpkv/control-center start verify-backup /srv/control-center-backups/2026-07-14
115
+
116
+ CONTROL_CENTER_DATA_ROOT=/srv/control-center-restored \
117
+ pnpm --filter @knpkv/control-center start restore /srv/control-center-backups/2026-07-14
118
+ ```
119
+
120
+ `backup <archive>` treats `CONTROL_CENTER_DATA_ROOT` as its source. That source must already be a prepared Control Center data root, and its writers must remain stopped for the whole command. Backup does not create, adopt, repair, or migrate the source. The archive pathname must not already exist and must not contain or be contained by the source; publication fails rather than replacing caller-owned data.
121
+
122
+ `verify-backup <archive>` reads and verifies only the archive. It does not read `CONTROL_CENTER_DATA_ROOT`, even when that variable is set, and it does not modify the archive.
123
+
124
+ `restore <archive>` treats `CONTROL_CENTER_DATA_ROOT` as its destination. The configured destination must not exist, including as a dangling symlink, and it must not contain or be contained by the archive. Restore verifies the archive before creating the destination and publishes the restored data root without overwriting an existing or concurrently created target. A later normal `control-center` start requires the restored database to match the current unstable schema exactly.
125
+
126
+ Each successful offline command writes exactly one summary line to standard output and nothing to standard error: `Backup created.`, `Backup verified.`, or `Backup restored.` A valid archive with unavailable reproducible cache content remains usable and instead reports `Backup created with N reproducible cache gaps.`, `Backup verified with N reproducible cache gaps.`, or `Backup restored with N reproducible cache gaps.` Usage and command failures write only to standard error and exit nonzero; command failures use the stable `Control Center command failed (<ErrorTag>).` form without exposing storage paths or secret values.
127
+
128
+ The Vite development server stays loopback-only and is not the production application server. A new remote browser must pair over trusted HTTPS. The simplest supported setup keeps Control Center on loopback and puts a TLS reverse proxy on the same machine. Configure the proxy to serve a hostname and certificate trusted by the second machine, forward to `http://127.0.0.1:4173`, and overwrite `X-Forwarded-Host`, `X-Forwarded-Proto`, and `X-Forwarded-For`. `X-Forwarded-For` must contain exactly the browser's IP literal: do not append a chain or forward the incoming header. Then start Control Center with the proxy's exact address:
129
+
130
+ ```nginx
131
+ proxy_set_header X-Forwarded-Host $host;
132
+ proxy_set_header X-Forwarded-Proto https;
133
+ proxy_set_header X-Forwarded-For $remote_addr;
134
+ ```
135
+
136
+ ```sh
137
+ CONTROL_CENTER_HOST=127.0.0.1 \
138
+ CONTROL_CENTER_PORT=4173 \
139
+ CONTROL_CENTER_PUBLIC_ORIGIN=https://control.home.arpa \
140
+ CONTROL_CENTER_ALLOWED_HOSTS=control.home.arpa \
141
+ CONTROL_CENTER_ALLOWED_ORIGINS=https://control.home.arpa \
142
+ CONTROL_CENTER_TRUSTED_PROXY_ADDRESSES=127.0.0.1 \
143
+ pnpm --filter @knpkv/control-center start
144
+ ```
145
+
146
+ Open `https://control.home.arpa` from the second machine and enter the one-time code printed by the server. Replace the example hostname with one that resolves to the server on both machines. If the local proxy connects over IPv6, trust its exact `::1` address instead of `127.0.0.1`. Never add client addresses or a subnet: forwarded headers are accepted only from the exact immediate proxy. Malformed, chained, or spoofed client-address headers fall back to the immediate peer for rate limiting.
147
+
148
+ Direct TLS is also available when certificate and private-key material has already been provisioned into this instance's `SecretStore`; pass the resulting opaque references as `CONTROL_CENTER_TLS_CERTIFICATE_REF` and `CONTROL_CENTER_TLS_PRIVATE_KEY_REF`. The application never accepts certificate paths or key bytes through environment variables.
149
+
150
+ `CONTROL_CENTER_ALLOW_INSECURE_LAN=true` is a deliberately restricted viewing mode, not remote onboarding. It blocks pairing, session administration, local agent execution, provider configuration, policy changes, and secret inspection. A new browser therefore cannot establish its required `HttpOnly` session in that mode; use trusted HTTPS for normal remote access.
151
+
152
+ ## Public entries
153
+
154
+ - `@knpkv/control-center` — browser-safe API and domain contracts
155
+ - `@knpkv/control-center/api` — shared typed API contracts
156
+ - `@knpkv/control-center/domain` — Schema-backed vendor-neutral domain contracts, including canonical IDs, people and agent roles, source freshness, and deterministic release identity
157
+ - `@knpkv/control-center/server` — server composition
158
+
159
+ The browser application is intentionally private. It consumes `@knpkv/rly`, while the root, API, domain, and server boundaries are mechanically prevented from importing the design system. Server composition is available only from the explicit `/server` entry. Production code is also forbidden from importing the approved prototype at runtime.
160
+
161
+ Release Relay projections are domain data, not presentation state. Each release persists its `relay/v1` codename and three-symbol projection; readers validate that projection against the canonical release ID so a future relay algorithm can be introduced without silently changing existing release identity.
162
+
163
+ ## Plugin contract
164
+
165
+ The version-one plugin contract is vendor-neutral and capability-negotiated. Descriptors use structured semantic versions and secret-free configuration metadata; each read, sync, diff, proposal, execution, cancellation, and reconciliation capability negotiates its own integer version. Unsupported contract majors, malformed descriptors, and unsupported required capabilities are rejected before an adapter factory runs.
166
+
167
+ Adapters emit bounded pages of Schema-decoded `UpsertEntity`, `TombstoneEntity`, `AppendEvidence`, `UpsertPerson`, and `ProposeRelationship` events. They cannot choose workspace or connection scope. Canonical descriptor JSON is capped at 60 KiB, normalized attributes, evidence, and governed-action payloads at 256 KiB, and each complete encoded sync page at 1 MiB; adapter transports enforce limits before buffering provider responses. Diff paths are normalized provider-relative paths, and decoded content ranges are valid base64 capped at 1 MiB and at the requested range. A decoded page and its next checkpoint commit in one transaction; replay uses stable event and page identities, malformed pages enter redacted quarantine, and failures never replace the last valid cache.
168
+
169
+ The exported `PluginConnection` service contains reads, health, sync, complete-diff access, and governed-action proposals only. Every proposal carries its canonical payload digest, and authorization must preserve that digest. Adapters implement a tag-free executor shape; plugin composition seals it behind a non-exported live service that only the governed-action engine may obtain. Source-boundary validation prevents adapters, browser code, and agent code from importing that authority. Safe reads and explicitly idempotent writes use at most three attempts with capped full jitter and decoded `Retry-After`; a stream is retried only before its first emitted page, and excessive `Retry-After` values fail instead of retaining a fiber. Unsafe or ambiguous mutations are reconciled rather than replayed.
170
+
171
+ ### CodeCommit read adapter
172
+
173
+ The first production CodeCommit slice exports an opaque `CodeCommitPluginDefinition` from `@knpkv/control-center/server`. One connection configures an AWS profile, region, and repository name. It negotiates `entity.read@1`, `sync.incremental@1`, and `diff.inventory@1`, then normalizes open pull requests with immutable PR/base/head revisions and complete cursor-based changed-file pages. Provider output is decoded by `@knpkv/codecommit-core` before it enters the vendor-neutral plugin contract; raw AWS types and causes do not cross the adapter.
174
+
175
+ This milestone is deliberately read-only. It does not negotiate diff content, comments, commits/history, checks, review state changes, approval, merge, or any governed mutation capability. CodeCommit's changed-file API does not report binary, generated, or oversized classification, so this slice leaves those inventory flags false until the owning package gains bounded blob/content inspection.
176
+
177
+ ### AWS CodePipeline read adapter
178
+
179
+ The server entry exports an opaque production CodePipeline plugin definition for one configured AWS profile, region, and pipeline. It negotiates `entity.read` and `sync.incremental` only. Direct `@distilled.cloud/aws` CodePipeline and STS calls remain behind an injectable provider service; repository-owned Schemas decode every returned account, pipeline, execution, and action shape before it can become plugin data. Credential, authorization, throttling, timeout, malformed-response, outage, and not-found outcomes remain typed and redacted.
180
+
181
+ Each execution provider page contains at most one execution, allowing its pipeline, execution, stage, and action events to fit one atomic plugin page and checkpoint. One synchronization invocation reads at most 20 execution pages. Action history requests at most 100 records per page, five pages, and 200 actions per execution; a truncated read is labeled instead of pretending to be complete. Discovery and execution snapshots use at most two concurrent provider calls. Provider cursors are opaque, replayable checkpoints, and repeated action cursors or mismatched identities fail closed.
182
+
183
+ Normalized events carry the pipeline ARN, region, provider update/sample time, immutable execution/action identities, status, operator provenance, source revisions, and bounded stage/action summaries. Artifact metadata contains only names and S3 bucket/key coordinates marked `proxy-required`; resolved action configuration, provider artifact URLs, revision URLs, and external execution URLs are never exposed. Start, stop, manual approval, retry, log-content, and artifact-content operations remain unnegotiated until their governed authorization, receipt, proxy, and reconciliation paths are implemented.
184
+
185
+ ### Jira issue reader
186
+
187
+ `makeJiraReadPluginRuntime` from `@knpkv/control-center/server` builds the first production Jira adapter around the shared Schema-validated `JiraApiClient`. Its negotiated surface is deliberately limited to `entity.read` for `jira.issue`; provider mutations and workspace-wide JQL synchronization are not implied by this adapter.
188
+
189
+ The secret-free runtime configuration requires an HTTPS Jira Cloud tenant root `webBaseUrl` under `atlassian.net`, its stable Atlassian cloud `siteId`, the immutable `projectId` followed by this connection, an activity `pageSize` from 1 to 50, a `maximumPages` limit from 1 to 5, and a per-request `operationTimeoutMillis` from 1,000 to 120,000. Discovery verifies the project through Jira before it can become a followed resource, and entity reads fail closed when an issue belongs to another project. Authentication remains in the externally supplied `JiraApiClient` layer, so tokens never enter plugin configuration.
190
+
191
+ OAuth profiles provide the verified cloud ID used to share one Atlassian site across Jira and Confluence. Jira API-token connections remain usable but standalone because the scoped Jira REST surface does not prove that cloud ID; adding a Jira project from an existing site card therefore requires a matching OAuth profile. Confluence trusts the already-validated OAuth profile identity and verifies API-token setup through its system-information response. Pre-stability Jira descriptor generations without both `siteId` and `projectId` enter an explicit `plugin-configuration-migration-required` state; recreate those local connections while migrations are intentionally disabled.
192
+
193
+ An issue read fetches the issue, comments, and changelog through interruptible Effect operations. Pagination stops at the configured bound and records explicit comment/history truncation flags. The normalized issue attributes include description and environment text, workflow metadata, release versions, parent and subtasks, comments, history, and deduplicated collaborators with roles and avatar URLs. If fixed issue fields would cross the payload cap, optional arrays and presentation fields are omitted deterministically and named in `truncatedFields`. OpenAPI, HTTP, timeout, authentication, authorization, rate-limit, outage, and adapter-schema failures are translated to the closed plugin failure taxonomy without retaining raw provider causes.
194
+
195
+ ### Confluence space reader
196
+
197
+ The production Confluence adapter negotiates `entity.read@1` and bounded `sync.incremental@1` for the `pages` stream. Each connection is pinned to one immutable space ID under its verified Atlassian site. Space iteration always sends that exact ID to Confluence and rejects any returned page belonging to another space before attachment or person reads, so followed spaces sharing one OAuth site remain isolated.
198
+
199
+ Synchronization retains current page and bounded revision metadata, owner/author/contributor/watcher roles, and at most two pages each of watcher and attachment metadata without loading attachment bytes. Page bodies remain `contentState: "lazy"`; `entity.read` loads and safely converts ADF only when the page is opened. Titles containing operational runbook terms emit explicit `confluence.runbook-candidate` evidence rather than silently classifying a page as authoritative documentation.
200
+
201
+ One invocation reads at most five provider pages and persists a resumable `bounded:<cursor>` checkpoint when more work exists. Large provider pages are deterministically divided into contract-sized atomic pages. Intermediate chunks use a restart checkpoint for the current provider page so interruption replays stable event identities instead of skipping uncommitted entities.
202
+
203
+ This MVP remains read-only. Unbounded watcher/activity history, authoritative deletion evidence, scheduled or webhook synchronization, content search, and governed update/publish are deferred to later Confluence milestones.
204
+
205
+ ### Clockify time-entry reader
206
+
207
+ `makeClockifyReadPluginRuntime` from `@knpkv/control-center/server` builds the first production Clockify adapter around the shared Schema-validated `ClockifyApiClient`. It negotiates only `entity.read` for `clockify.time-entry` and bounded `sync.incremental` snapshots on the `time-entries` stream. Credentials remain in the externally supplied client layer.
208
+
209
+ The secret-free configuration names the root Clockify web URL, immutable workspace ID, comma-separated user IDs, page size, maximum pages, maximum concurrency, and per-request timeout. At most ten users are accepted, and user count multiplied by page size may not exceed 100 normalized entries in one aggregated provider page. Sync reads one page per configured user with bounded concurrency, stops at the configured provider-page limit, and deterministically splits normalized output so every emitted `PluginSyncPageV1` remains within its 1 MiB UTF-8 envelope. A full final provider page uses a scope-bound `bounded:<page>:<digest>` checkpoint rather than claiming provider exhaustion.
210
+
211
+ Clockify's time-entry endpoint exposes offset pages but no stable snapshot cursor or window. Therefore resumable pages use an explicit `restart:<digest>` checkpoint: after an interrupted sync, the adapter restarts at provider page one and relies on stable event identities for idempotent replay instead of resuming at a mutable offset that could skip entries. Every checkpoint carries the SHA-256 digest of its workspace, ordered configured user set, and page bounds; changed sync scope and completed or bounded checkpoint replay also restart at page one.
212
+
213
+ Every provider response is decoded again at the adapter boundary before it becomes a normalized event. Time-entry facts preserve the configured workspace, provider user, project/task/tag IDs, billable and lock state, interval timestamps, provider duration, and explicit running/completed state. Provider interval timestamps supply source freshness; authentication, authorization, rate-limit, timeout, malformed-response, and outage failures remain in the closed plugin taxonomy.
214
+
215
+ This MVP is intentionally read-only. Workspace people, Jira-key association evidence, duration rollups, approval state, corrections, governed execution, cancellation, and ambiguous-outcome reconciliation remain deferred to I08/I09 rather than being represented as supported capabilities.
216
+
217
+ ## Persistence boundary
218
+
219
+ The server entry owns one scoped libSQL client and an owner-only content-addressed object directory. The MVP schema is intentionally unstable: a fresh database is created from one checked-in schema snapshot, and an existing database must match it exactly. Schema changes are breaking and require recreating local development data. Versioned migrations start only after the persistence model is declared stable and a released database file must remain readable by a newer build.
220
+
221
+ Workspace-scoped repositories, optimistic revisions, and malformed-record quarantine keep durable state outside the browser. Large content bytes never live in normal SQL rows. Typed query plans live behind `@knpkv/control-center-sql`; raw SQL, query-builder types, filesystem handles, and resolved storage paths never cross the runtime service boundary. Local database and blob-root paths remain explicit, validated server configuration inputs.
222
+
223
+ The delivery graph is exposed to server workflows as one deep `read`/`write` module. Its atomic batches persist exact normalized entity revisions, explicit resolved or missing nodes, directional many-to-many relationships, and separately attributable evidence items and claims. Relationship and evidence revisions are append-only; confidence, provenance, lifecycle, release/environment scope, freshness, and retention remain domain data rather than UI inference. The SQL topology, digests, joins, and legacy pipeline-kind mapping stay private to the module.
224
+
225
+ A newly created configured data-root pathname is an atomic, relative symlink claim to a private sibling `.control-center-incoming-*` directory. The claim is deliberately retained: replacing it with a directory would reopen the no-clobber race that the claim closes. A move-preserving marker binds both the configured claim basename and the private target basename; startup validates that binding, ownership, and descriptor-pinned identity before using canonical operational paths internally. Existing real-directory data roots remain supported unchanged, except that `.control-center-incoming-*` is reserved for private publication targets and is rejected as a configured data-root basename.
226
+
227
+ Treat the configured symlink and its sibling target as one data-root unit for its whole lifecycle. Stop Control Center and every process that can write the data root before moving, copying, backing up, restoring, or deleting it. Use the [offline backup and restore commands](#offline-backup-and-restore) for portable backups; copying live SQLite files is not a safe backup procedure. While all writers remain stopped, operate on the containing parent tree rather than only the configured pathname; the relative claim remains valid after a parent-tree move. Do not dereference the symlink into a standalone copy or delete and recreate it while retaining its target. If the claim is lost and a marked sibling contains durable state, startup fails closed instead of silently creating a fresh database. Recovery is an explicit operator action: inspect the private sibling and verify the recovered unit before restarting. For a bound v2 marker, restore the configured pathname as a relative symlink to the marker's exact target basename. Marker-only siblings from an interrupted first publication carry no application state and do not block a fresh claim.
228
+
229
+ Version-one markers do not identify their configured claim. A direct real-directory v1 root can upgrade automatically, but no symlink-backed v1 root can: even a protocol-only target could be selected concurrently through another alias. For offline recovery, stop every writer, take and verify a backup, inspect the sibling target, remove the configured symlink, and move the complete sibling target into the configured pathname as a real directory before restarting. Never select a v1 sibling through a newly created alias. Because a staged v1 root cannot be attributed safely, every existing v1 root beneath a parent must be upgraded as a direct root or recovered offline before creating another data root beneath that parent.
230
+
231
+ Secure blob reads and publication require the host to expose opened files and directories through descriptor aliases at `/proc/self/fd` or `/dev/fd`. Operations fail with a typed containment error when neither alias can be verified; the store never falls back to trusting a replaced blob or shard pathname. The data-directory owner and same-UID processes are inside the local trust boundary: descriptor pinning rejects pathname substitution, but it cannot prevent an owner-authorized process from moving, reading, replacing, or deleting the already-open `0700` storage directory.
232
+
233
+ ## Local authentication
234
+
235
+ `Auth` uses ten-minute, single-use pairing codes to create browser sessions. The first code for a workspace is unique and creates its owner; further device codes, session listing, and targeted revocation require an active owner session. Sessions have a twelve-hour sliding idle limit, a thirty-day absolute limit, and a separate CSRF credential for mutations. SQLite contains only SHA-256 credential digests. Invalid, expired, replayed, revoked, and malformed stored credentials share the same public rejection shape.
236
+
237
+ Use `authLayer(persistenceConfig)` from `@knpkv/control-center/server` for standalone composition. `TerminalRecovery` is a separate, terminal-only service: it derives the exact canonical `0700` directory from the configured database, requires an exact confirmation phrase, and proves that the running process owns the descriptor-pinned directory before it can issue an owner recovery code. Each successful recovery creates a durable audit event. Recovery is deliberately absent from the HTTP-facing `Auth` service.
238
+
239
+ Provider credentials belong in `SecretStore`, never normal SQL rows. The store returns opaque references and resolves bytes only inside a scoped zeroizing lease. New owner-only generations are opened exclusively, rebound to their canonical pathname by handle identity, written and synced through that stable handle, and returned only after the containing directory is synced. Failed generations are removed only while the same binding remains provable; ambiguous cleanup fails closed and may retain an unreturned opaque file. Rotation is copy-on-write: it returns a new reference while retaining the old generation until its consumers drain and remove it. Unlike blob storage, secret publication does not require `/proc/self/fd` or `/dev/fd`; it uses portable `dev`/`ino`/`uid` identity checks available on Linux and macOS. Same-UID processes remain inside the local trust boundary.
240
+
241
+ ## HTTP API
242
+
243
+ The shared `@knpkv/control-center/api` entry exports the versioned `HttpApi` contract, generated client constructor, and URL builder. It covers browser pairing and session management, plugin metadata/health/configuration, the persisted portfolio snapshot, release-aware agent turns, and authenticated media reads. The browser uses this generated client rather than handwritten paths or response types. Agent turns are authenticated CSRF-protected mutations; the server derives workspace identity from the session and returns the exact bounded release projection and event cursor used for the answer.
244
+
245
+ An owner can run a live connection test from the Services page. The CSRF-protected endpoint acquires the workspace-scoped provider runtime, calls its health and discovery operations, and returns only a normalized provider identity, checked time, latency, and safe failure classification. Credentials, headers, provider response bodies, and executor authority never enter the response. The ordinary `start` command installs the first-party runtime map; embedded server compositions may still inject `pluginConnections` for tests or specialized hosting.
246
+
247
+ Fresh workspaces also see the fixed CodeCommit, CodePipeline, Jira, Confluence, and Clockify catalog. The safe provider identities are visible before pairing; choosing one carries that selection through pairing and opens its setup form immediately. `GET /api/v1/plugins` retains its original connection-summary array for existing v1 clients; after pairing, the Services page reads the additive `{ catalog, connections }` response from `GET /api/v1/plugins/overview`. A workspace owner can submit one bounded CSRF-protected setup request whose browser-generated connection ID, typed adapter settings, and transport-only credential strings are validated before writes. Secret strings are converted to opaque `SecretStore` references; the canonical SQL configuration contains references only. The application creates disabled metadata, inserts configuration with expected revision zero, accepts the catalog descriptor, enables with metadata CAS, invalidates the scoped connection map, and then runs the live identity test. Provider authentication or health failure is returned as the usable test result and does not roll back the enabled connection. Failure before configuration removes newly created secrets; later setup failure retains a visible disabled draft.
248
+
249
+ Configured connections can be enabled or disabled directly from Services through an owner-only, CSRF-protected transition. A changed connection invalidates only its scoped provider runtime; an idempotent transition performs no invalidation. Re-enabling immediately runs the same redacted live identity test. An empty Overview renders the complete branded first-party service launcher; choosing a service opens its setup form immediately.
250
+
251
+ Catalog field metadata marks adapter settings separately from credential fields. Jira and Confluence prefer one shared local Atlassian OAuth profile. An owner can start PKCE-protected Atlassian sign-in for the intended provider set from Services, return to the session-bound callback route, and explicitly choose one accessible site. Control Center requests only the intended providers' scope union and writes the selected token once to its canonical machine-local `control-center` profile store; both Jira and Confluence runtimes resolve that same credential record when its granted scopes support them. Before writing, it rechecks the canonical store's OAuth client configuration. A populated canonical store with a missing or different client configuration rejects completion without changing the store, while an empty canonical store receives the shared configuration and token. The first-run client secret crosses one bounded CSRF-protected request and is never returned, persisted in browser storage, or written to SQL; provider tokens never enter the browser or SQL. Existing `jira-cli` and `confluence-to-markdown` profiles remain discoverable as provider-specific legacy profiles rather than being merged into a shared credential, and an explicit API-token fallback retains the `email` and `apiToken` secret-store path. OAuth fills the stable Atlassian cloud ID automatically; API-token setup requires the same site ID explicitly.
252
+
253
+ Create one shared Atlassian OAuth app for Control Center on the server machine. Add `<public-origin>/services/oauth/atlassian/callback` as its callback URL and enable the complete scope union requested by the Jira and Confluence integrations: `read:jira-work`, `write:jira-work`, `read:jira-user`, `manage:jira-project`, `manage:jira-configuration`, `read:page:confluence`, `write:page:confluence`, `delete:page:confluence`, `read:attachment:confluence`, `write:attachment:confluence`, `read:me`, and `offline_access`.
254
+
255
+ Choose **Sign in with Atlassian** in Services. When no OAuth app has been configured, Control Center shows its exact callback URL and accepts the client ID and secret inline. The CSRF-protected server stores them directly in the machine-local `control-center` auth store before continuing sign-in; neither the Jira nor Confluence CLI needs to be installed or configured. Credentials can be corrected after a failed first exchange while the canonical store has no profiles. Once a profile is saved, the existing configuration is reused and cannot be silently replaced. Matching legacy CLI configurations remain a compatibility fallback only. Non-loopback callbacks use the trusted HTTPS proxy or direct-TLS setup described above; insecure LAN mode cannot configure providers. A grant expires after ten minutes, is bound to the initiating workspace and browser session, and is consumed once at code exchange and once at site selection. Token expiry remains anchored to the provider exchange response even when site selection or a safe completion retry occurs later.
256
+
257
+ Clockify similarly keeps `apiKey` in the secret store, and its API origin remains a fixed server-owned runtime constant. Local AWS and Atlassian profiles are machine-local credential selectors, never persisted cloud identity. After a successful live test, the server transactionally reuses the discovered AWS account or provider-verified Atlassian site, follows the discovered service resource, and binds the executable connection. One AWS account can therefore own many CodeCommit repositories and CodePipeline pipelines; one Atlassian site can own multiple Jira projects and independently followed Confluence spaces. Account-card Add actions keep that site pinned while the global catalog remains site-selectable. Bound Atlassian site, project, and space identity fields are immutable; adapter-only settings such as a Confluence health page can still be changed. The authenticated human remains redacted connection-test evidence rather than becoming the provider account identity. The Services form sends all selected resources through one bounded server request and receives ordered, redacted per-resource outcomes, so a retry skips resources that already succeeded. The batch is not yet atomic: one later resource may fail after earlier resources have committed. Services presents each identity as one verified account or site card with compact resource rows. The server discovers the shared AWS CLI profile catalogue from its standard AWS files and returns only profile names and configured regions; credentials never cross the API or enter the browser. Manual profile entry remains available when discovery is unavailable.
258
+
259
+ An owner can explicitly test one AWS profile and region before setup. Control Center verifies the STS account identity, then independently lists CodeCommit repositories and CodePipeline pipelines through their Schema-decoded read boundaries. Each service reads at most five provider pages, returns at most 20 deduplicated and sorted names, and reports safe service-specific authorization, rate-limit, timeout, malformed-response, or availability failures. Identity failure is terminal, while one resource service may remain usable when the other fails. Refresh preserves current selections, and manual repository or pipeline names remain available as a fallback. No credentials, raw provider causes, or resource ARNs cross the API.
260
+
261
+ Configured CodeCommit, CodePipeline, and Clockify resources expose their durable synchronization state in Services. The card distinguishes never attempted, running, synchronized, and source-unavailable outcomes and shows the last attempt, last success, and committed-page count. Owners can invoke the existing CSRF-protected synchronization endpoint with **Sync now** and refresh the result; other members retain read-only state. The ordinary `start` command installs the production runtime registry; specialized embedded compositions without a `PluginConnectionMap` retain a visible disabled draft and report service unavailable.
262
+
263
+ The authenticated Timeline merges bounded pages from governed-action audit events,
264
+ plugin sync commits, relationship revisions, and domain events. Each source query
265
+ is workspace-scoped, parameterized, newest-first, and capped before the server
266
+ performs one deterministic merge. The browser receives default-redacted actor
267
+ labels, provider provenance when available, safe internal links, and a stable
268
+ timestamp-plus-event-key cursor. Actor and UTC date filters execute at the source;
269
+ watchers cannot read the Timeline. CSV and JSON download endpoints reuse that
270
+ default-redacted projection and stable cursor, require an explicit event limit,
271
+ and cap every export at 1,000 events with explicit truncation metadata. Every
272
+ successful download records immutable human/session attribution, filters,
273
+ format, counts, truncation, and timestamp before streaming begins. Owners
274
+ can deliberately expand one exact event to inspect its durable identifiers and
275
+ agent-job reference in a focused browser sheet with a Timeline-aware Relay
276
+ entry; approvers retain the ordinary redacted page and receive no inspect
277
+ control. Persisted artifacts and retention mutations remain deferred.
278
+
279
+ Plugin configuration updates are full replacements guarded by the current optimistic revision. Secret values never enter the configuration document: callers submit scoped opaque secret references, and reads return redacted reference state only. Media URLs contain an opaque `media_` identifier derived from the persisted content digest; the server does not fetch arbitrary URLs or expose storage paths.
280
+
281
+ ### Production first-party runtime
282
+
283
+ The server owns one scoped runtime cache shared by connection administration. A lookup first loads the exact workspace-scoped connection, configuration, and negotiated descriptor records. Disabled, absent, malformed, cross-provider, or stale-descriptor records fail before a provider client is acquired. Invalidation closes the cached layer and its secret leases; the runtime authority digest changes with connection and configuration revisions, runtime revision and descriptor generation, descriptor digest, and credential reference generation.
284
+
285
+ Provisioning must persist the descriptor-advertised keys with the exact value kinds below. AWS uses the local profile chain and stores no credential secret. The Clockify API origin is fixed by the server as `https://api.clockify.me/api` and is not configurable.
286
+
287
+ | Provider | Required persisted keys |
288
+ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
289
+ | CodeCommit | `profile` (text), `region` (text), `repositoryName` (text) |
290
+ | CodePipeline | `profile`, `region`, `pipelineName` (text); `maximumExecutionPages`, `actionPageSize`, `maximumActionPages`, `maximumActionsPerExecution`, `operationTimeoutMillis` (integer) |
291
+ | Jira | `webBaseUrl` (url), `siteId`, `projectId`, `email` (text), `apiToken` (secret reference), `pageSize`, `maximumPages`, `operationTimeoutMillis` (integer) |
292
+ | Confluence | `siteBaseUrl` (url), `email` (text), `apiToken` (secret reference), `siteId`, `spaceId`, `probePageId` (text) |
293
+ | Clockify | `apiKey` (secret reference), `webBaseUrl` (url), `workspaceId`, `userIds` (text), `pageSize`, `maximumPages`, `maximumConcurrency`, `operationTimeoutMillis` (integer) |
294
+
295
+ The runtime catalog remains read-oriented. It is not installed as the governed action executor registry; existing governed fake-registry coverage remains the only write-execution composition in this slice.
296
+
297
+ The request boundary applies exact Host and Origin policy, session/CSRF/capability checks, correlation and security headers, bounded URL/header/body sizes, timeouts, and rate limits before API work. Static assets are captured into an immutable allowlisted map at startup and never resolved from request-controlled filesystem paths.
298
+
299
+ ## Network exposure
300
+
301
+ `decodeBindConfig({})` resolves to `http://127.0.0.1:4173`. Non-loopback binds require an explicit public origin, exact Host and Origin allowlists, and exactly one transport policy:
302
+
303
+ - direct TLS with opaque `SecretStore` references for both certificate and private key;
304
+ - TLS terminated by an exact allowlist of trusted proxy IPs; or
305
+ - explicitly insecure LAN HTTP.
306
+
307
+ Insecure LAN mode is for a trusted private network only. It permits release viewing and ordinary release actions, but blocks local agent execution, provider configuration, policy changes, pairing/session administration, and secret inspection. TLS modes set the session cookie `Secure`; every mode uses an opaque `HttpOnly`, `SameSite=Strict` cookie. The authenticated mutation guard composes exact Origin, session CSRF digest, and capability checks so transport middleware cannot accept an unverified token. Forwarded headers are ignored unless the immediate peer is an exact trusted proxy.
308
+
309
+ Wildcard addresses are bind targets, not browser URLs. Use `effectiveReachableUrls` to print the configured public origin and validated private-network addresses without ever presenting `0.0.0.0` or `::` as a destination.