@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
@@ -0,0 +1,1430 @@
1
+ import { An as ReadinessVerdict, Br as RelationshipRepairProposalId, Cr as EntityId, Ct as ReleaseServiceName, D as DeliveryEntityStatusGroup, Dr as EvidenceId, E as DeliveryEntityService, Fr as PersonId, Gr as ShareId, Hr as ReleaseId, Ir as PluginConnectionId, Kr as WorkspaceId, Lr as ProviderAccountId, Lt as Actor, M as EvidenceItem, Nt as ReleaseRelayProjection, O as DeliveryNode, Or as FollowedResourceId, Pr as JobId, R as LedgerRevision, S as RelationshipRepairReviewDecision, St as ReleaseLifecycle, T as DeliveryEntityProjection, Tr as EventCursor, Vr as RelationshipRepairReviewId, Wr as SessionId, Wt as Role, _ as RelationshipRepairDisposition, _t as PluginConfigurationFieldV1, b as RelationshipRepairRationale, bt as SemanticVersion, cr as hasMaximumPluginJsonBytes, d as TimelineEventDetail, dr as PluginHealth, g as RelationshipRepairApplication, gr as SourceRevision, i as PortfolioInvalidatedEventV1, j as EvidenceClaim, k as DeliveryRelationship, kn as ReadinessStages, l as TimelineCursor, lr as Freshness, mr as ProviderId, p as TimelinePage, pt as NegotiatedPluginCapabilityV1, s as TimelineActorKind, u as TimelineEvent, ur as PluginFailureClass, v as RelationshipRepairProposal, w as DeliveryEntityKind, wr as EnvironmentId, wt as ReleaseVersion, yn as ReadinessFinding, yr as UtcTimestamp, yt as PluginId, zr as RelationshipId } from "./domainEvent-x7yeq-gU.js";
2
+ import { MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH } from "@knpkv/ai-runtime";
3
+ import * as Schema from "effect/Schema";
4
+ import { HttpApi, HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, HttpApiSecurity } from "effect/unstable/httpapi";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Result from "effect/Result";
7
+ import * as SchemaGetter from "effect/SchemaGetter";
8
+ import * as Context from "effect/Context";
9
+ //#region src/api/errors.ts
10
+ var SafeApiMessage = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500));
11
+ /** Correlation identifier shared by one HTTP response header and its typed error body. */
12
+ var CorrelationId = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(128), Schema.isPattern(/^[A-Za-z0-9._:-]+$/u, { expected: "an HTTP-safe correlation identifier" })).pipe(Schema.brand("CorrelationId"));
13
+ var commonErrorFields = {
14
+ correlationId: CorrelationId,
15
+ message: SafeApiMessage
16
+ };
17
+ /** A request failed schema, authority, origin, or CSRF-shape validation. */
18
+ var InvalidRequestApiError = class extends Schema.TaggedErrorClass()("InvalidRequestApiError", {
19
+ ...commonErrorFields,
20
+ code: Schema.Literal("invalid-request")
21
+ }, { httpApiStatus: 400 }) {};
22
+ /** The browser did not present a valid active session. */
23
+ var UnauthorizedApiError = class extends Schema.TaggedErrorClass()("UnauthorizedApiError", {
24
+ ...commonErrorFields,
25
+ code: Schema.Literal("unauthorized")
26
+ }, { httpApiStatus: 401 }) {};
27
+ /** The active session cannot perform the requested capability. */
28
+ var ForbiddenApiError = class extends Schema.TaggedErrorClass()("ForbiddenApiError", {
29
+ ...commonErrorFields,
30
+ code: Schema.Literal("forbidden")
31
+ }, { httpApiStatus: 403 }) {};
32
+ /** An authenticated lookup did not resolve to a visible resource. */
33
+ var NotFoundApiError = class extends Schema.TaggedErrorClass()("NotFoundApiError", {
34
+ ...commonErrorFields,
35
+ code: Schema.Literal("not-found")
36
+ }, { httpApiStatus: 404 }) {};
37
+ /** Current durable state conflicts with the requested transition. */
38
+ var ConflictApiError = class extends Schema.TaggedErrorClass()("ConflictApiError", {
39
+ ...commonErrorFields,
40
+ code: Schema.Literal("conflict")
41
+ }, { httpApiStatus: 409 }) {};
42
+ /** A bounded request exceeded the public API size limit. */
43
+ var PayloadTooLargeApiError = class extends Schema.TaggedErrorClass()("PayloadTooLargeApiError", {
44
+ ...commonErrorFields,
45
+ code: Schema.Literal("payload-too-large")
46
+ }, { httpApiStatus: 413 }) {};
47
+ /** The request did not complete within its bounded server deadline. */
48
+ var RequestTimedOutApiError = class extends Schema.TaggedErrorClass()("RequestTimedOutApiError", {
49
+ ...commonErrorFields,
50
+ code: Schema.Literal("request-timed-out")
51
+ }, { httpApiStatus: 408 }) {};
52
+ /** The caller must wait until the optional safe retry instant. */
53
+ var RateLimitedApiError = class extends Schema.TaggedErrorClass()("RateLimitedApiError", {
54
+ ...commonErrorFields,
55
+ code: Schema.Literal("rate-limited"),
56
+ retryAt: Schema.NullOr(UtcTimestamp)
57
+ }, { httpApiStatus: 429 }) {};
58
+ /** A required local or provider service is temporarily unavailable. */
59
+ var ServiceUnavailableApiError = class extends Schema.TaggedErrorClass()("ServiceUnavailableApiError", {
60
+ ...commonErrorFields,
61
+ code: Schema.Literal("service-unavailable"),
62
+ retryAt: Schema.NullOr(UtcTimestamp)
63
+ }, { httpApiStatus: 503 }) {};
64
+ /** Required response header attached to every successful and failed API response. */
65
+ var CorrelationResponseHeaders = Schema.Struct({ "x-correlation-id": CorrelationId }).annotate({ identifier: "CorrelationResponseHeaders" });
66
+ //#endregion
67
+ //#region src/api/session.ts
68
+ var LOWERCASE_SECRET_PATTERN = /^[0-9a-f]{64}$/u;
69
+ /** Single-use pairing credential accepted only by the public pairing endpoint. */
70
+ var PairingCode = Schema.String.check(Schema.isPattern(LOWERCASE_SECRET_PATTERN, { expected: "a lowercase 256-bit pairing credential" })).pipe(Schema.brand("PairingCode"));
71
+ /** Mutation proof issued separately from the opaque session cookie. */
72
+ var CsrfToken = Schema.String.check(Schema.isPattern(LOWERCASE_SECRET_PATTERN, { expected: "a lowercase 256-bit CSRF credential" })).pipe(Schema.brand("CsrfToken"));
73
+ /** Secret-free metadata describing an authenticated browser session. */
74
+ var SessionSummary = Schema.Struct({
75
+ sessionId: SessionId,
76
+ workspaceId: WorkspaceId,
77
+ actor: Actor,
78
+ permission: Role,
79
+ createdAt: UtcTimestamp,
80
+ lastSeenAt: UtcTimestamp,
81
+ idleExpiresAt: UtcTimestamp,
82
+ absoluteExpiresAt: UtcTimestamp,
83
+ revokedAt: Schema.NullOr(UtcTimestamp)
84
+ }).annotate({ identifier: "ApiSessionSummary" });
85
+ /** Pairing request whose credential is never represented in a URL. */
86
+ var PairSessionRequest = Schema.Struct({ pairingCode: PairingCode });
87
+ /** Pairing result; the opaque session token is delivered only through the response cookie. */
88
+ var PairSessionResponse = Schema.Struct({
89
+ csrfToken: CsrfToken,
90
+ session: SessionSummary
91
+ });
92
+ /** Authenticated session metadata with a recoverable, session-bound mutation proof. */
93
+ var CurrentSessionResponse = Schema.Struct({
94
+ csrfToken: CsrfToken,
95
+ session: SessionSummary
96
+ });
97
+ /** Bounded session-administration response. */
98
+ var SessionListResponse = Schema.Array(SessionSummary).check(Schema.makeFilter((sessions) => sessions.length <= 100, { expected: "at most 100 sessions" }));
99
+ /** Authenticated session attached to endpoint handlers by cookie middleware. */
100
+ var CurrentSession = class extends Context.Service()("@knpkv/control-center/api/CurrentSession") {};
101
+ /** Public middleware identity for the opaque `cc_session` cookie. */
102
+ var SessionCookieAuth = class extends HttpApiMiddleware.Service()("@knpkv/control-center/api/SessionCookieAuth", {
103
+ error: [
104
+ UnauthorizedApiError,
105
+ ForbiddenApiError,
106
+ ServiceUnavailableApiError
107
+ ],
108
+ security: { sessionCookie: HttpApiSecurity.apiKey({
109
+ in: "cookie",
110
+ key: "cc_session"
111
+ }) }
112
+ }) {};
113
+ /** Public middleware identity for the separate mutation CSRF header. */
114
+ var SessionMutationAuth = class extends HttpApiMiddleware.Service()("@knpkv/control-center/api/SessionMutationAuth", {
115
+ error: [
116
+ InvalidRequestApiError,
117
+ ForbiddenApiError,
118
+ ServiceUnavailableApiError
119
+ ],
120
+ security: { csrfToken: HttpApiSecurity.apiKey({
121
+ in: "header",
122
+ key: "x-csrf-token"
123
+ }) }
124
+ }) {};
125
+ /** Compatibility name emphasizing the CSRF mechanism used by mutation authorization. */
126
+ var MutationCsrf = SessionMutationAuth;
127
+ var authenticatedErrors$1 = [
128
+ UnauthorizedApiError,
129
+ ForbiddenApiError,
130
+ RequestTimedOutApiError,
131
+ ServiceUnavailableApiError
132
+ ];
133
+ var pair = HttpApiEndpoint.post("pair", "/pair", {
134
+ payload: PairSessionRequest,
135
+ success: PairSessionResponse,
136
+ error: [
137
+ InvalidRequestApiError,
138
+ UnauthorizedApiError,
139
+ ConflictApiError,
140
+ RequestTimedOutApiError,
141
+ ServiceUnavailableApiError
142
+ ]
143
+ });
144
+ var current = HttpApiEndpoint.get("current", "/current", {
145
+ success: CurrentSessionResponse,
146
+ error: authenticatedErrors$1
147
+ }).middleware(SessionCookieAuth);
148
+ var list$1 = HttpApiEndpoint.get("list", "/", {
149
+ success: SessionListResponse,
150
+ error: authenticatedErrors$1
151
+ }).middleware(SessionCookieAuth);
152
+ var revoke$1 = HttpApiEndpoint.delete("revoke", "/:sessionId", {
153
+ params: Schema.Struct({ sessionId: SessionId }),
154
+ success: HttpApiSchema.NoContent,
155
+ error: authenticatedErrors$1
156
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
157
+ var logout = HttpApiEndpoint.post("logout", "/logout", {
158
+ success: HttpApiSchema.NoContent,
159
+ error: authenticatedErrors$1
160
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
161
+ /** Session pairing, inspection, administration, and logout contract. */
162
+ var SessionApiGroup = class extends HttpApiGroup.make("session").add(pair, current, list$1, revoke$1, logout).prefix("/api/v1/session") {};
163
+ //#endregion
164
+ //#region src/api/plugins.ts
165
+ var MAXIMUM_PLUGIN_CONNECTIONS = 100;
166
+ var MAXIMUM_PROVIDER_ACCOUNTS = 100;
167
+ var MAXIMUM_FOLLOWED_RESOURCES = 100;
168
+ var MAXIMUM_DISCOVERED_AWS_PROFILES = 100;
169
+ var MAXIMUM_DISCOVERED_AWS_RESOURCES = 20;
170
+ var MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES = 100;
171
+ var MAXIMUM_ATLASSIAN_OAUTH_SITES = 100;
172
+ var MAXIMUM_CONFIGURATION_VALUES = 100;
173
+ var MAXIMUM_SECRET_VALUE_LENGTH = 16384;
174
+ var isProviderHttpUrl = Schema.makeFilter((value) => {
175
+ const decoded = Schema.decodeUnknownResult(Schema.URLFromString)(value);
176
+ if (Result.isFailure(decoded)) return false;
177
+ const url = decoded.success;
178
+ return (url.protocol === "https:" || url.protocol === "http:") && url.hostname.length > 0 && url.username.length === 0 && url.password.length === 0 && url.hash.length === 0;
179
+ }, { expected: "an HTTP(S) provider URL without credentials or a fragment" });
180
+ /** Stable field key shared by descriptor metadata and configuration values. */
181
+ var PluginConfigurationKey = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)).pipe(Schema.brand("PluginConfigurationKey"));
182
+ /** Opaque reference created through the separate secret-management boundary. */
183
+ var OpaqueSecretReference = Schema.String.check(Schema.isPattern(/^secret_[0-9a-f]{64}$/u, { expected: "an opaque secret reference" })).pipe(Schema.brand("OpaqueSecretReference"));
184
+ var configurationValueFields = { key: PluginConfigurationKey };
185
+ var BoundedConfigurationText = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4096));
186
+ var BoundedConfigurationUrl = BoundedConfigurationText.check(isProviderHttpUrl);
187
+ var AtlassianCloudSiteUrl = BoundedConfigurationUrl.check(Schema.makeFilter((value) => {
188
+ const decoded = Schema.decodeUnknownResult(Schema.URLFromString)(value);
189
+ if (Result.isFailure(decoded)) return false;
190
+ const url = decoded.success;
191
+ return url.protocol === "https:" && url.port.length === 0 && url.hostname.endsWith(".atlassian.net") && url.hostname.length > 14 && (url.pathname === "" || url.pathname === "/") && url.search.length === 0;
192
+ }, { expected: "an HTTPS Atlassian Cloud site root" }));
193
+ /** Explicit replacement semantics for a redacted secret in a full configuration update. */
194
+ var SecretReferencePatchOperation = Schema.Union([
195
+ Schema.TaggedStruct("keep", {}),
196
+ Schema.TaggedStruct("clear", {}),
197
+ Schema.TaggedStruct("replace", { reference: OpaqueSecretReference })
198
+ ]).pipe(Schema.toTaggedUnion("_tag"));
199
+ /** Secret-safe current value; secret fields reveal only whether a reference is configured. */
200
+ var RedactedPluginConfigurationValue = Schema.Union([
201
+ Schema.TaggedStruct("text", {
202
+ ...configurationValueFields,
203
+ value: BoundedConfigurationText
204
+ }),
205
+ Schema.TaggedStruct("url", {
206
+ ...configurationValueFields,
207
+ value: BoundedConfigurationUrl
208
+ }),
209
+ Schema.TaggedStruct("boolean", {
210
+ ...configurationValueFields,
211
+ value: Schema.Boolean
212
+ }),
213
+ Schema.TaggedStruct("integer", {
214
+ ...configurationValueFields,
215
+ value: Schema.Int
216
+ }),
217
+ Schema.TaggedStruct("select", {
218
+ ...configurationValueFields,
219
+ value: BoundedConfigurationText
220
+ }),
221
+ Schema.TaggedStruct("secret-reference", {
222
+ ...configurationValueFields,
223
+ state: Schema.Literals(["configured", "missing"])
224
+ })
225
+ ]).pipe(Schema.toTaggedUnion("_tag"));
226
+ /** Typed configuration update; secret bytes remain outside this endpoint. */
227
+ var PluginConfigurationPatchValue = Schema.Union([
228
+ Schema.TaggedStruct("text", {
229
+ ...configurationValueFields,
230
+ value: BoundedConfigurationText
231
+ }),
232
+ Schema.TaggedStruct("url", {
233
+ ...configurationValueFields,
234
+ value: BoundedConfigurationUrl
235
+ }),
236
+ Schema.TaggedStruct("boolean", {
237
+ ...configurationValueFields,
238
+ value: Schema.Boolean
239
+ }),
240
+ Schema.TaggedStruct("integer", {
241
+ ...configurationValueFields,
242
+ value: Schema.Int
243
+ }),
244
+ Schema.TaggedStruct("select", {
245
+ ...configurationValueFields,
246
+ value: BoundedConfigurationText
247
+ }),
248
+ Schema.TaggedStruct("secret-reference", {
249
+ ...configurationValueFields,
250
+ operation: SecretReferencePatchOperation
251
+ })
252
+ ]).pipe(Schema.toTaggedUnion("_tag"));
253
+ var boundedConfigurationValues = (value) => Schema.Array(value).check(Schema.makeFilter((values) => values.length <= MAXIMUM_CONFIGURATION_VALUES, { expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} plugin configuration values` }), Schema.makeFilter((values) => new Set(values.map(({ key }) => key)).size === values.length, { expected: "unique plugin configuration keys" }));
254
+ /** Redacted current configuration with its compare-and-swap revision. */
255
+ var PluginConfiguration = Schema.Struct({
256
+ pluginConnectionId: PluginConnectionId,
257
+ revision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
258
+ values: boundedConfigurationValues(RedactedPluginConfigurationValue),
259
+ updatedAt: Schema.NullOr(UtcTimestamp)
260
+ }).annotate({ identifier: "PluginConfiguration" });
261
+ /** Bounded compare-and-swap update request for one plugin connection. */
262
+ var PatchPluginConfigurationRequest = Schema.Struct({
263
+ expectedRevision: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
264
+ values: boundedConfigurationValues(PluginConfigurationPatchValue)
265
+ }).annotate({ identifier: "PatchPluginConfigurationRequest" });
266
+ /** Secret-free plugin connection row used by navigation and portfolio views. */
267
+ var NullableProviderAccountId = Schema.NullOr(ProviderAccountId);
268
+ var NullableFollowedResourceId = Schema.NullOr(FollowedResourceId);
269
+ var PluginConnectionSummary = Schema.Struct({
270
+ pluginConnectionId: PluginConnectionId,
271
+ providerAccountId: Schema.optional(NullableProviderAccountId).pipe(Schema.decodeTo(Schema.toType(NullableProviderAccountId), {
272
+ decode: SchemaGetter.withDefault(Effect.succeed(null)),
273
+ encode: SchemaGetter.required()
274
+ })),
275
+ followedResourceId: Schema.optional(NullableFollowedResourceId).pipe(Schema.decodeTo(Schema.toType(NullableFollowedResourceId), {
276
+ decode: SchemaGetter.withDefault(Effect.succeed(null)),
277
+ encode: SchemaGetter.required()
278
+ })),
279
+ providerId: ProviderId,
280
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
281
+ isEnabled: Schema.Boolean,
282
+ supportsSynchronization: Schema.optional(Schema.Boolean).pipe(Schema.decodeTo(Schema.Boolean, {
283
+ decode: SchemaGetter.withDefault(Effect.succeed(false)),
284
+ encode: SchemaGetter.required()
285
+ })),
286
+ health: Schema.NullOr(PluginHealth),
287
+ updatedAt: UtcTimestamp
288
+ }).annotate({ identifier: "PluginConnectionSummary" });
289
+ /** Secret-free provider resource shown inside its owning account. */
290
+ var FollowedResourceSummary = Schema.Struct({
291
+ followedResourceId: FollowedResourceId,
292
+ providerId: ProviderId,
293
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
294
+ providerImmutableId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512)),
295
+ isEnabled: Schema.Boolean
296
+ }).annotate({ identifier: "FollowedResourceSummary" });
297
+ /** One provider account and the resources this workspace follows within it. */
298
+ var ProviderAccountSummary = Schema.Struct({
299
+ providerAccountId: ProviderAccountId,
300
+ providerFamily: Schema.Literals([
301
+ "aws",
302
+ "atlassian",
303
+ "clockify"
304
+ ]),
305
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
306
+ providerImmutableId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512)),
307
+ resources: Schema.Array(FollowedResourceSummary).check(Schema.makeFilter((resources) => resources.length <= MAXIMUM_FOLLOWED_RESOURCES, { expected: `at most ${MAXIMUM_FOLLOWED_RESOURCES} followed resources per provider account` }))
308
+ }).annotate({ identifier: "ProviderAccountSummary" });
309
+ var CatalogFieldText = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500));
310
+ /** Secret-free setup field shown before a first-party provider has runtime state. */
311
+ var PluginServiceCatalogField = Schema.Struct({
312
+ key: PluginConfigurationKey,
313
+ label: CatalogFieldText,
314
+ description: CatalogFieldText,
315
+ kind: Schema.Literals([
316
+ "text",
317
+ "url",
318
+ "integer",
319
+ "secret"
320
+ ]),
321
+ scope: Schema.Literals(["adapter", "credential"]),
322
+ required: Schema.Boolean,
323
+ defaultValue: Schema.NullOr(Schema.String.check(Schema.isMaxLength(4096))),
324
+ isReadOnly: Schema.Boolean,
325
+ minimum: Schema.NullOr(Schema.Int),
326
+ maximum: Schema.NullOr(Schema.Int)
327
+ }).annotate({ identifier: "PluginServiceCatalogField" });
328
+ /** One fixed first-party service available whether or not it is configured. */
329
+ var PluginServiceCatalogEntry = Schema.Struct({
330
+ providerId: ProviderId,
331
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
332
+ description: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
333
+ configurationFields: Schema.Array(PluginServiceCatalogField).check(Schema.isNonEmpty(), Schema.makeFilter((fields) => fields.length <= MAXIMUM_CONFIGURATION_VALUES, { expected: `at most ${MAXIMUM_CONFIGURATION_VALUES} catalog configuration fields` }))
334
+ }).annotate({ identifier: "PluginServiceCatalogEntry" });
335
+ /** One local AWS CLI profile available to first-party AWS adapters. */
336
+ var DiscoveredAwsProfile = Schema.Struct({
337
+ profile: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
338
+ region: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)))
339
+ }).annotate({ identifier: "DiscoveredAwsProfile" });
340
+ /** Bounded local AWS profile discovery response. */
341
+ var AwsProfileDiscoveryResponse = Schema.Array(DiscoveredAwsProfile).check(Schema.makeFilter((profiles) => profiles.length <= MAXIMUM_DISCOVERED_AWS_PROFILES, { expected: `at most ${MAXIMUM_DISCOVERED_AWS_PROFILES} discovered AWS profiles` }));
342
+ /** Validated local AWS credential selector for one explicit discovery request. */
343
+ var AwsResourceDiscoveryRequest = Schema.Struct({
344
+ profile: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200), Schema.isPattern(/^[A-Za-z0-9_+=,.@ -]+$/u, { expected: "a valid AWS profile name" })),
345
+ region: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100), Schema.isPattern(/^[a-z]{2}(?:-[a-z0-9]+)+-[0-9]+$/u, { expected: "a valid AWS region" }))
346
+ }).annotate({ identifier: "AwsResourceDiscoveryRequest" });
347
+ var AwsResourceName = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100));
348
+ var AwsResourceNames = Schema.Array(AwsResourceName).check(Schema.makeFilter((names) => names.length <= MAXIMUM_DISCOVERED_AWS_RESOURCES, { expected: `at most ${MAXIMUM_DISCOVERED_AWS_RESOURCES} discovered AWS resources` }), Schema.makeFilter((names) => new Set(names).size === names.length, { expected: "unique AWS resource names" }));
349
+ /** Safe per-service AWS resource discovery result. */
350
+ var AwsServiceResourceDiscovery = Schema.Union([Schema.TaggedStruct("available", {
351
+ names: AwsResourceNames,
352
+ truncated: Schema.Boolean
353
+ }), Schema.TaggedStruct("failed", { failureClass: Schema.Literals([
354
+ "authorization",
355
+ "malformed-response",
356
+ "rate-limit",
357
+ "timeout",
358
+ "unavailable"
359
+ ]) })]).pipe(Schema.toTaggedUnion("_tag"), Schema.annotate({ identifier: "AwsServiceResourceDiscovery" }));
360
+ /** Identity-verified, secret-free AWS resource discovery response. */
361
+ var AwsResourceDiscoveryResponse = Schema.Struct({
362
+ accountId: Schema.String.check(Schema.isPattern(/^[0-9]{12}$/u, { expected: "a 12-digit AWS account id" })),
363
+ codeCommit: AwsServiceResourceDiscovery,
364
+ codePipeline: AwsServiceResourceDiscovery
365
+ }).annotate({ identifier: "AwsResourceDiscoveryResponse" });
366
+ /** One local OAuth profile available to first-party Atlassian adapters. */
367
+ var DiscoveredAtlassianProfile = Schema.Struct({
368
+ profileId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
369
+ name: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
370
+ siteUrl: BoundedConfigurationUrl,
371
+ cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
372
+ accountName: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),
373
+ accountEmail: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),
374
+ status: Schema.Literals(["valid", "expired"]),
375
+ providers: Schema.Array(Schema.Literals(["jira", "confluence"])).check(Schema.isNonEmpty())
376
+ }).annotate({ identifier: "DiscoveredAtlassianProfile" });
377
+ /** Bounded local Atlassian OAuth profile discovery response. */
378
+ var AtlassianProfileDiscoveryResponse = Schema.Array(DiscoveredAtlassianProfile).check(Schema.makeFilter((profiles) => profiles.length <= MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES, { expected: `at most ${MAXIMUM_DISCOVERED_ATLASSIAN_PROFILES} discovered Atlassian profiles` }));
379
+ /** Single-use browser OAuth grant identifier; it is also the provider state parameter. */
380
+ var AtlassianOAuthGrantId = Schema.String.check(Schema.isPattern(/^[A-Za-z0-9_-]{43}$/u, { expected: "a base64url-encoded 256-bit OAuth state" })).pipe(Schema.brand("AtlassianOAuthGrantId"));
381
+ /** Atlassian product requested by one browser OAuth grant. */
382
+ var AtlassianOAuthProvider = Schema.Literals(["jira", "confluence"]);
383
+ /** One or both distinct Atlassian products requested by an OAuth grant. */
384
+ var AtlassianOAuthProviderIntent = Schema.Array(AtlassianOAuthProvider).check(Schema.isNonEmpty(), Schema.makeFilter((providers) => providers.length <= 2, { expected: "at most two Atlassian OAuth providers" }), Schema.makeFilter((providers) => new Set(providers).size === providers.length, { expected: "distinct Atlassian OAuth providers" }));
385
+ /** OAuth app credentials entered once in Control Center and retained only by its server. */
386
+ var AtlassianOAuthClientConfiguration = Schema.Struct({
387
+ clientId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
388
+ clientSecret: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_SECRET_VALUE_LENGTH))
389
+ }).annotate({ identifier: "AtlassianOAuthClientConfiguration" });
390
+ /** Owner request to start OAuth for the products currently being configured. */
391
+ var CreateAtlassianOAuthGrantRequest = Schema.Struct({
392
+ providers: AtlassianOAuthProviderIntent,
393
+ configuration: Schema.optional(AtlassianOAuthClientConfiguration)
394
+ }).annotate({ identifier: "CreateAtlassianOAuthGrantRequest" });
395
+ /** Safe result of preparing the browser authorization redirect. */
396
+ var AtlassianOAuthGrantStartResponse = Schema.Union([Schema.TaggedStruct("ready", {
397
+ authorizationUrl: Schema.String.check(isProviderHttpUrl),
398
+ callbackUrl: BoundedConfigurationUrl
399
+ }), Schema.TaggedStruct("configuration-required", { callbackUrl: BoundedConfigurationUrl })]).pipe(Schema.toTaggedUnion("_tag"), Schema.annotate({ identifier: "AtlassianOAuthGrantStartResponse" }));
400
+ /** Authorization code returned by Atlassian to the same authenticated browser. */
401
+ var ExchangeAtlassianOAuthGrantRequest = Schema.Struct({ code: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4096)) }).annotate({ identifier: "ExchangeAtlassianOAuthGrantRequest" });
402
+ /** One accessible Atlassian site awaiting explicit selection. */
403
+ var AtlassianOAuthSite = Schema.Struct({
404
+ cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
405
+ name: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
406
+ siteUrl: AtlassianCloudSiteUrl
407
+ }).annotate({ identifier: "AtlassianOAuthSite" });
408
+ /** Secret-free account and site choices returned after code exchange. */
409
+ var AtlassianOAuthGrantExchangeResponse = Schema.Struct({
410
+ grantId: AtlassianOAuthGrantId,
411
+ accountName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),
412
+ accountEmail: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500))),
413
+ sites: Schema.Array(AtlassianOAuthSite).check(Schema.isNonEmpty(), Schema.makeFilter((sites) => sites.length <= MAXIMUM_ATLASSIAN_OAUTH_SITES, { expected: `at most ${MAXIMUM_ATLASSIAN_OAUTH_SITES} accessible Atlassian sites` }))
414
+ }).annotate({ identifier: "AtlassianOAuthGrantExchangeResponse" });
415
+ /** Explicit site choice that completes a pending browser OAuth grant. */
416
+ var CompleteAtlassianOAuthGrantRequest = Schema.Struct({ cloudId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)) }).annotate({ identifier: "CompleteAtlassianOAuthGrantRequest" });
417
+ /** Bounded plugin-navigation and portfolio response retained for v1 clients. */
418
+ var PluginListResponse = Schema.Array(PluginConnectionSummary).check(Schema.makeFilter((plugins) => plugins.length <= MAXIMUM_PLUGIN_CONNECTIONS, { expected: `at most ${MAXIMUM_PLUGIN_CONNECTIONS} plugin connections` }));
419
+ var ProviderAccountSummaries = Schema.Array(ProviderAccountSummary).check(Schema.makeFilter((accounts) => accounts.length <= MAXIMUM_PROVIDER_ACCOUNTS, { expected: `at most ${MAXIMUM_PROVIDER_ACCOUNTS} provider accounts` }));
420
+ /** Bounded Services overview with the fixed catalog and durable connections. */
421
+ var PluginOverviewResponse = Schema.Struct({
422
+ catalog: Schema.Array(PluginServiceCatalogEntry).check(Schema.makeFilter((entries) => entries.length === 5, { expected: "the five first-party services" })),
423
+ connections: Schema.Array(PluginConnectionSummary).check(Schema.makeFilter((plugins) => plugins.length <= MAXIMUM_PLUGIN_CONNECTIONS, { expected: `at most ${MAXIMUM_PLUGIN_CONNECTIONS} plugin connections` })),
424
+ accounts: Schema.optional(ProviderAccountSummaries).pipe(Schema.decodeTo(Schema.toType(ProviderAccountSummaries), {
425
+ decode: SchemaGetter.withDefault(Effect.succeed([])),
426
+ encode: SchemaGetter.required()
427
+ }))
428
+ }).annotate({ identifier: "PluginOverviewResponse" });
429
+ var createValueFields = { key: PluginConfigurationKey };
430
+ /** Typed setup input; only the secret variant carries transport-only secret text. */
431
+ var CreatePluginConnectionValue = Schema.Union([
432
+ Schema.TaggedStruct("text", {
433
+ ...createValueFields,
434
+ value: BoundedConfigurationText
435
+ }),
436
+ Schema.TaggedStruct("url", {
437
+ ...createValueFields,
438
+ value: BoundedConfigurationUrl
439
+ }),
440
+ Schema.TaggedStruct("integer", {
441
+ ...createValueFields,
442
+ value: Schema.Int
443
+ }),
444
+ Schema.TaggedStruct("secret", {
445
+ ...createValueFields,
446
+ value: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_SECRET_VALUE_LENGTH))
447
+ })
448
+ ]).pipe(Schema.toTaggedUnion("_tag"));
449
+ /** Bounded owner request to create, configure, enable, and immediately test a connection. */
450
+ var CreatePluginConnectionRequest = Schema.Struct({
451
+ pluginConnectionId: PluginConnectionId,
452
+ providerId: ProviderId,
453
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
454
+ values: boundedConfigurationValues(CreatePluginConnectionValue)
455
+ }).annotate({ identifier: "CreatePluginConnectionRequest" });
456
+ /** Current health for one authenticated plugin connection lookup. */
457
+ var PluginHealthResponse = Schema.Struct({
458
+ pluginConnectionId: PluginConnectionId,
459
+ health: PluginHealth
460
+ }).annotate({ identifier: "PluginHealthResponse" });
461
+ var ConnectionIdentityText = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(512));
462
+ /** Secret-free provider identity proven by a live connection test. */
463
+ var PluginConnectionIdentity = Schema.Struct({
464
+ kind: Schema.Literals([
465
+ "user",
466
+ "account",
467
+ "workspace"
468
+ ]),
469
+ label: ConnectionIdentityText,
470
+ displayName: ConnectionIdentityText,
471
+ providerImmutableId: ConnectionIdentityText
472
+ }).annotate({ identifier: "PluginConnectionIdentity" });
473
+ var connectionTestTiming = {
474
+ pluginConnectionId: PluginConnectionId,
475
+ providerId: ProviderId,
476
+ checkedAt: UtcTimestamp,
477
+ latencyMilliseconds: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))
478
+ };
479
+ /** Normalized result of live health and identity discovery against one connection. */
480
+ var PluginConnectionTestResult = Schema.Union([Schema.TaggedStruct("healthy", {
481
+ ...connectionTestTiming,
482
+ identity: PluginConnectionIdentity
483
+ }), Schema.TaggedStruct("failed", {
484
+ ...connectionTestTiming,
485
+ failureClass: PluginFailureClass,
486
+ retryAt: Schema.NullOr(UtcTimestamp),
487
+ safeMessage: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))
488
+ })]).pipe(Schema.toTaggedUnion("_tag"), Schema.annotate({ identifier: "PluginConnectionTestResult" }));
489
+ /** Durable result of the most recent bounded synchronization invocation. */
490
+ var PluginSynchronizationResult = Schema.Literals([
491
+ "never",
492
+ "running",
493
+ "synchronized",
494
+ "source-unavailable",
495
+ "interrupted"
496
+ ]);
497
+ /** Secret-free durable synchronization state for one negotiated connection stream. */
498
+ var PluginSynchronizationState = Schema.Struct({
499
+ pluginConnectionId: PluginConnectionId,
500
+ providerId: ProviderId,
501
+ streamKey: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(100)),
502
+ lastAttemptAt: Schema.NullOr(UtcTimestamp),
503
+ lastSuccessAt: Schema.NullOr(UtcTimestamp),
504
+ result: PluginSynchronizationResult,
505
+ pagesCommitted: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))
506
+ }).annotate({ identifier: "PluginSynchronizationState" });
507
+ /** Redacted result of durable setup and its immediate live identity check. */
508
+ var CreatePluginConnectionResponse = Schema.Struct({
509
+ connection: PluginConnectionSummary,
510
+ configuration: PluginConfiguration,
511
+ test: PluginConnectionTestResult
512
+ }).annotate({ identifier: "CreatePluginConnectionResponse" });
513
+ var MAXIMUM_BATCH_PLUGIN_CONNECTIONS = 40;
514
+ /** Bounded setup batch owned by one authenticated workspace. */
515
+ var CreatePluginConnectionsRequest = Schema.Struct({ connections: Schema.Array(CreatePluginConnectionRequest).check(Schema.makeFilter((connections) => connections.length >= 1 && connections.length <= MAXIMUM_BATCH_PLUGIN_CONNECTIONS, { expected: `between 1 and ${MAXIMUM_BATCH_PLUGIN_CONNECTIONS} plugin connections` }), Schema.makeFilter((connections) => new Set(connections.map(({ pluginConnectionId }) => pluginConnectionId)).size === connections.length, { expected: "unique plugin connection identifiers" })) }).annotate({ identifier: "CreatePluginConnectionsRequest" });
516
+ var PluginConnectionSetupFailureClass = Schema.Literals([
517
+ "conflict",
518
+ "invalid-request",
519
+ "not-found",
520
+ "rate-limited",
521
+ "service-unavailable"
522
+ ]);
523
+ /** One ordered result from a multi-connection setup request. */
524
+ var CreatePluginConnectionBatchResult = Schema.Union([Schema.TaggedStruct("succeeded", { response: CreatePluginConnectionResponse }), Schema.TaggedStruct("failed", {
525
+ pluginConnectionId: PluginConnectionId,
526
+ failureClass: PluginConnectionSetupFailureClass
527
+ })]).pipe(Schema.toTaggedUnion("_tag"));
528
+ /** Ordered redacted results for a bounded setup batch. */
529
+ var CreatePluginConnectionsResponse = Schema.Struct({ results: Schema.Array(CreatePluginConnectionBatchResult).check(Schema.makeFilter((results) => results.length >= 1 && results.length <= MAXIMUM_BATCH_PLUGIN_CONNECTIONS, { expected: `between 1 and ${MAXIMUM_BATCH_PLUGIN_CONNECTIONS} plugin connection results` })) }).annotate({ identifier: "CreatePluginConnectionsResponse" });
530
+ /** Owner-only transition for independently enabling or disabling one connection. */
531
+ var SetPluginConnectionEnabledRequest = Schema.Struct({ isEnabled: Schema.Boolean }).annotate({ identifier: "SetPluginConnectionEnabledRequest" });
532
+ /** Secret-free configuration contract exposed to settings views. */
533
+ var PluginConfigurationMetadata = Schema.Struct({
534
+ pluginConnectionId: PluginConnectionId,
535
+ pluginId: PluginId,
536
+ contractVersion: SemanticVersion,
537
+ adapterVersion: SemanticVersion,
538
+ configurationFields: Schema.Array(PluginConfigurationFieldV1).check(Schema.makeFilter((fields) => fields.length <= 100, { expected: "at most 100 configuration fields" })),
539
+ capabilities: Schema.Array(NegotiatedPluginCapabilityV1).check(Schema.makeFilter((capabilities) => capabilities.length <= 32, { expected: "at most 32 negotiated plugin capabilities" }))
540
+ }).annotate({ identifier: "PluginConfigurationMetadata" });
541
+ var pluginReadErrors = [
542
+ UnauthorizedApiError,
543
+ ForbiddenApiError,
544
+ RateLimitedApiError,
545
+ RequestTimedOutApiError,
546
+ ServiceUnavailableApiError
547
+ ];
548
+ var list = HttpApiEndpoint.get("list", "/", {
549
+ success: PluginListResponse,
550
+ error: pluginReadErrors
551
+ }).middleware(SessionCookieAuth);
552
+ var overview = HttpApiEndpoint.get("overview", "/overview", {
553
+ success: PluginOverviewResponse,
554
+ error: pluginReadErrors
555
+ }).middleware(SessionCookieAuth);
556
+ var discoverAwsProfiles = HttpApiEndpoint.get("discoverAwsProfiles", "/discovery/aws-profiles", {
557
+ success: AwsProfileDiscoveryResponse,
558
+ error: pluginReadErrors
559
+ }).middleware(SessionCookieAuth);
560
+ var discoverAwsResources = HttpApiEndpoint.post("discoverAwsResources", "/discovery/aws-resources", {
561
+ payload: AwsResourceDiscoveryRequest,
562
+ success: AwsResourceDiscoveryResponse,
563
+ error: [...pluginReadErrors, InvalidRequestApiError]
564
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
565
+ var discoverAtlassianProfiles = HttpApiEndpoint.get("discoverAtlassianProfiles", "/discovery/atlassian-profiles", {
566
+ success: AtlassianProfileDiscoveryResponse,
567
+ error: pluginReadErrors
568
+ }).middleware(SessionCookieAuth);
569
+ var createAtlassianOAuthGrant = HttpApiEndpoint.post("createAtlassianOAuthGrant", "/oauth/atlassian/grants", {
570
+ payload: CreateAtlassianOAuthGrantRequest,
571
+ success: AtlassianOAuthGrantStartResponse,
572
+ error: [
573
+ ...pluginReadErrors,
574
+ InvalidRequestApiError,
575
+ ConflictApiError
576
+ ]
577
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
578
+ var exchangeAtlassianOAuthGrant = HttpApiEndpoint.post("exchangeAtlassianOAuthGrant", "/oauth/atlassian/grants/:grantId/exchange", {
579
+ params: Schema.Struct({ grantId: AtlassianOAuthGrantId }),
580
+ payload: ExchangeAtlassianOAuthGrantRequest,
581
+ success: AtlassianOAuthGrantExchangeResponse,
582
+ error: [
583
+ ...pluginReadErrors,
584
+ InvalidRequestApiError,
585
+ NotFoundApiError,
586
+ ConflictApiError
587
+ ]
588
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
589
+ var completeAtlassianOAuthGrant = HttpApiEndpoint.post("completeAtlassianOAuthGrant", "/oauth/atlassian/grants/:grantId/complete", {
590
+ params: Schema.Struct({ grantId: AtlassianOAuthGrantId }),
591
+ payload: CompleteAtlassianOAuthGrantRequest,
592
+ success: DiscoveredAtlassianProfile,
593
+ error: [
594
+ ...pluginReadErrors,
595
+ InvalidRequestApiError,
596
+ NotFoundApiError,
597
+ ConflictApiError
598
+ ]
599
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
600
+ var createConnection = HttpApiEndpoint.post("createConnection", "/connections", {
601
+ payload: CreatePluginConnectionRequest,
602
+ success: CreatePluginConnectionResponse,
603
+ error: [
604
+ ...pluginReadErrors,
605
+ InvalidRequestApiError,
606
+ NotFoundApiError,
607
+ ConflictApiError,
608
+ PayloadTooLargeApiError
609
+ ]
610
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
611
+ var createConnections = HttpApiEndpoint.post("createConnections", "/connections/batch", {
612
+ payload: CreatePluginConnectionsRequest,
613
+ success: CreatePluginConnectionsResponse,
614
+ error: [
615
+ ...pluginReadErrors,
616
+ InvalidRequestApiError,
617
+ ConflictApiError,
618
+ PayloadTooLargeApiError
619
+ ]
620
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
621
+ var setConnectionEnabled = HttpApiEndpoint.patch("setConnectionEnabled", "/connections/:pluginConnectionId", {
622
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
623
+ payload: SetPluginConnectionEnabledRequest,
624
+ success: PluginConnectionSummary,
625
+ error: [
626
+ ...pluginReadErrors,
627
+ InvalidRequestApiError,
628
+ NotFoundApiError,
629
+ ConflictApiError,
630
+ PayloadTooLargeApiError
631
+ ]
632
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
633
+ var health = HttpApiEndpoint.get("health", "/:pluginConnectionId/health", {
634
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
635
+ success: PluginHealthResponse,
636
+ error: [...pluginReadErrors, NotFoundApiError]
637
+ }).middleware(SessionCookieAuth);
638
+ var testConnection = HttpApiEndpoint.post("testConnection", "/:pluginConnectionId/test", {
639
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
640
+ success: PluginConnectionTestResult,
641
+ error: [...pluginReadErrors, NotFoundApiError]
642
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
643
+ var synchronization = HttpApiEndpoint.get("synchronization", "/:pluginConnectionId/synchronization", {
644
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
645
+ success: PluginSynchronizationState,
646
+ error: [
647
+ ...pluginReadErrors,
648
+ InvalidRequestApiError,
649
+ NotFoundApiError
650
+ ]
651
+ }).middleware(SessionCookieAuth);
652
+ var synchronizeConnection = HttpApiEndpoint.post("synchronizeConnection", "/:pluginConnectionId/sync", {
653
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
654
+ success: PluginSynchronizationState,
655
+ error: [
656
+ ...pluginReadErrors,
657
+ InvalidRequestApiError,
658
+ NotFoundApiError
659
+ ]
660
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
661
+ var configurationMetadata = HttpApiEndpoint.get("configurationMetadata", "/:pluginConnectionId/configuration-metadata", {
662
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
663
+ success: PluginConfigurationMetadata,
664
+ error: [...pluginReadErrors, NotFoundApiError]
665
+ }).middleware(SessionCookieAuth);
666
+ var configuration = HttpApiEndpoint.get("configuration", "/:pluginConnectionId/configuration", {
667
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
668
+ success: PluginConfiguration,
669
+ error: [...pluginReadErrors, NotFoundApiError]
670
+ }).middleware(SessionCookieAuth);
671
+ var patchConfiguration = HttpApiEndpoint.patch("patchConfiguration", "/:pluginConnectionId/configuration", {
672
+ params: Schema.Struct({ pluginConnectionId: PluginConnectionId }),
673
+ payload: PatchPluginConfigurationRequest,
674
+ success: PluginConfiguration,
675
+ error: [
676
+ ...pluginReadErrors,
677
+ InvalidRequestApiError,
678
+ NotFoundApiError,
679
+ ConflictApiError,
680
+ PayloadTooLargeApiError
681
+ ]
682
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
683
+ /** Authenticated plugin list, health, and secret-free configuration contract. */
684
+ var PluginsApiGroup = class extends HttpApiGroup.make("plugins").add(list, overview, discoverAwsProfiles, discoverAwsResources, discoverAtlassianProfiles, createAtlassianOAuthGrant, exchangeAtlassianOAuthGrant, completeAtlassianOAuthGrant, createConnection, createConnections, setConnectionEnabled, health, testConnection, synchronization, synchronizeConnection, configurationMetadata, configuration, patchConfiguration).prefix("/api/v1/plugins") {};
685
+ //#endregion
686
+ //#region src/api/portfolio.ts
687
+ var MAXIMUM_PORTFOLIO_RELEASES = 200;
688
+ var MAXIMUM_TARGET_ENVIRONMENTS = 50;
689
+ var MAXIMUM_SNAPSHOT_JSON_BYTES = 1024 * 1024;
690
+ var MAXIMUM_COUNT = 1e6;
691
+ var MAXIMUM_RELEASE_COLLABORATORS = 50;
692
+ var BoundedCount = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(MAXIMUM_COUNT));
693
+ /** Compact relationship totals for one release delivery graph. */
694
+ var PortfolioRelationshipCounts = Schema.Struct({
695
+ issues: BoundedCount,
696
+ pullRequests: BoundedCount,
697
+ pipelineExecutions: BoundedCount,
698
+ truncated: Schema.Boolean
699
+ }).annotate({ identifier: "PortfolioRelationshipCounts" });
700
+ /** Current server-owned readiness facts required by the bird's-eye portfolio. */
701
+ var PortfolioReadinessSummary = Schema.Struct({
702
+ authority: Schema.Literals(["authoritative", "pending"]),
703
+ verdict: ReadinessVerdict,
704
+ stages: ReadinessStages,
705
+ blockerCount: BoundedCount,
706
+ warningCount: BoundedCount,
707
+ gapCount: BoundedCount,
708
+ primaryFinding: Schema.NullOr(ReadinessFinding),
709
+ evaluatedAt: UtcTimestamp
710
+ }).annotate({ identifier: "PortfolioReadinessSummary" });
711
+ /** Release-scoped human responsibility shown in the compact portfolio. */
712
+ var PortfolioReleaseRole = Schema.Literals(["release-owner", "release-approver"]);
713
+ /** Named human collaborator resolved from durable workspace identity. */
714
+ var PortfolioReleaseCollaborator = Schema.Struct({
715
+ personId: PersonId,
716
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
717
+ avatarFallback: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4)),
718
+ role: PortfolioReleaseRole
719
+ }).annotate({ identifier: "PortfolioReleaseCollaborator" });
720
+ var BoundedReleaseCollaborators = Schema.Array(PortfolioReleaseCollaborator).check(Schema.makeFilter((collaborators) => collaborators.length <= MAXIMUM_RELEASE_COLLABORATORS, { expected: `at most ${MAXIMUM_RELEASE_COLLABORATORS} release collaborators` }), Schema.makeFilter((collaborators) => new Set(collaborators.map(({ personId, role }) => `${personId}\u0000${role}`)).size === collaborators.length, { expected: "unique person and release-role pairs" }));
721
+ /** Compact release projection for the authenticated bird's-eye portfolio. */
722
+ var PortfolioReleaseSummary = Schema.Struct({
723
+ releaseId: ReleaseId,
724
+ serviceName: ReleaseServiceName,
725
+ version: ReleaseVersion,
726
+ lifecycle: ReleaseLifecycle,
727
+ relay: ReleaseRelayProjection,
728
+ freshness: Freshness,
729
+ targetEnvironmentIds: Schema.Array(EnvironmentId).check(Schema.isUnique(), Schema.makeFilter((environments) => environments.length <= MAXIMUM_TARGET_ENVIRONMENTS, { expected: `at most ${MAXIMUM_TARGET_ENVIRONMENTS} target environments` })),
730
+ collaborators: BoundedReleaseCollaborators,
731
+ collaboratorCount: BoundedCount,
732
+ readiness: Schema.NullOr(PortfolioReadinessSummary),
733
+ relationships: PortfolioRelationshipCounts,
734
+ sourceRevisionCount: BoundedCount,
735
+ updatedAt: UtcTimestamp
736
+ }).annotate({ identifier: "PortfolioReleaseSummary" });
737
+ /** Bounded, point-in-time portfolio projection for one authenticated workspace. */
738
+ var PortfolioSnapshot = Schema.Struct({
739
+ workspaceId: WorkspaceId,
740
+ eventCursor: EventCursor,
741
+ generatedAt: UtcTimestamp,
742
+ releases: Schema.Array(PortfolioReleaseSummary).check(Schema.makeFilter((releases) => releases.length <= MAXIMUM_PORTFOLIO_RELEASES, { expected: `at most ${MAXIMUM_PORTFOLIO_RELEASES} releases` }), Schema.makeFilter((releases) => new Set(releases.map(({ releaseId }) => releaseId)).size === releases.length, { expected: "unique release identifiers" })),
743
+ plugins: Schema.Array(PluginConnectionSummary).check(Schema.makeFilter((plugins) => plugins.length <= 100, { expected: "at most 100 plugin connections" }), Schema.makeFilter((plugins) => new Set(plugins.map(({ pluginConnectionId }) => pluginConnectionId)).size === plugins.length, { expected: "unique plugin connection identifiers" }))
744
+ }).check(hasMaximumPluginJsonBytes(MAXIMUM_SNAPSHOT_JSON_BYTES)).annotate({ identifier: "PortfolioSnapshot" });
745
+ var snapshot = HttpApiEndpoint.get("snapshot", "/snapshot", {
746
+ success: PortfolioSnapshot,
747
+ error: [
748
+ UnauthorizedApiError,
749
+ ForbiddenApiError,
750
+ RequestTimedOutApiError,
751
+ ServiceUnavailableApiError
752
+ ]
753
+ }).middleware(SessionCookieAuth);
754
+ /** Authenticated point-in-time portfolio contract. */
755
+ var PortfolioApiGroup = class extends HttpApiGroup.make("portfolio").add(snapshot).prefix("/api/v1/portfolio") {};
756
+ //#endregion
757
+ //#region src/api/wire.ts
758
+ var CANONICAL_NONNEGATIVE_INTEGER_PATTERN = /^(?:0|[1-9][0-9]*)$/u;
759
+ var MAXIMUM_SAFE_INTEGER_DIGITS = String(Number.MAX_SAFE_INTEGER).length;
760
+ var NonNegativeSafeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
761
+ /** Canonical unsigned-decimal HTTP representation of a nonnegative safe integer. */
762
+ var CanonicalNonNegativeIntegerFromString = Schema.String.check(Schema.isMaxLength(MAXIMUM_SAFE_INTEGER_DIGITS), Schema.isPattern(CANONICAL_NONNEGATIVE_INTEGER_PATTERN, { expected: "a canonical unsigned-decimal integer" })).pipe(Schema.decodeTo(NonNegativeSafeInteger, {
763
+ decode: SchemaGetter.transform((value) => Number(value)),
764
+ encode: SchemaGetter.transform((value) => String(value))
765
+ }));
766
+ //#endregion
767
+ //#region src/api/agent.ts
768
+ var MAXIMUM_PROMPT_LENGTH = 8e3;
769
+ var MAXIMUM_HISTORY_MESSAGES = 12;
770
+ var MAXIMUM_HISTORY_MESSAGE_LENGTH = 12e3;
771
+ var MAXIMUM_HISTORY_CONTENT_LENGTH = 64e3;
772
+ var MAXIMUM_REPLY_LENGTH = 32e3;
773
+ var MAXIMUM_DURABLE_PROMPT_LENGTH = 5e3;
774
+ var MAXIMUM_THREAD_EVENT_PAGE_SIZE = 128;
775
+ /** Bounded current instruction sent to the release-aware model. */
776
+ var AgentPrompt = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_PROMPT_LENGTH));
777
+ var BoundedHistoryContent = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_HISTORY_MESSAGE_LENGTH));
778
+ /** Supported local command-line model providers. */
779
+ var AgentProvider = Schema.Literals(["codex", "claude"]);
780
+ /** Provider-neutral configured runtime identity accepted by durable jobs. */
781
+ var DurableAgentProviderId = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)).pipe(Schema.brand("DurableAgentProviderId"));
782
+ /** Prompt guaranteed to fit the durable user-message event envelope. */
783
+ var DurableAgentPrompt = Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_DURABLE_PROMPT_LENGTH));
784
+ /** Release-agent provider alias retained for discoverability beside the turn schemas. */
785
+ var ReleaseAgentProvider = AgentProvider;
786
+ /** One bounded prior turn supplied to preserve release-thread context. */
787
+ var AgentHistoryMessage = Schema.Struct({
788
+ role: Schema.Literals(["user", "assistant"]),
789
+ content: BoundedHistoryContent
790
+ }).annotate({ identifier: "ReleaseAgentHistoryMessage" });
791
+ /** History-message alias retained for discoverability beside the turn schemas. */
792
+ var ReleaseAgentHistoryMessage = AgentHistoryMessage;
793
+ var ReleaseAgentHistory = Schema.Array(AgentHistoryMessage).check(Schema.makeFilter((history) => history.length <= MAXIMUM_HISTORY_MESSAGES, { expected: `at most ${MAXIMUM_HISTORY_MESSAGES} release-agent history messages` }), Schema.makeFilter((history) => history.reduce((length, message) => length + message.content.length, 0) <= MAXIMUM_HISTORY_CONTENT_LENGTH, { expected: `at most ${MAXIMUM_HISTORY_CONTENT_LENGTH} release-agent history characters` }));
794
+ /** Bounded browser request for one release-aware model turn. */
795
+ var ReleaseAgentTurnRequest = Schema.Struct({
796
+ provider: AgentProvider,
797
+ prompt: AgentPrompt,
798
+ history: ReleaseAgentHistory
799
+ }).annotate({ identifier: "ReleaseAgentTurnRequest" });
800
+ /** Model reply plus the authoritative release projection used for the turn. */
801
+ var ReleaseAgentTurnResponse = Schema.Struct({
802
+ releaseId: ReleaseId,
803
+ provider: AgentProvider,
804
+ reply: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_REPLY_LENGTH)),
805
+ release: PortfolioReleaseSummary,
806
+ eventCursor: EventCursor
807
+ }).check(Schema.makeFilter(({ release, releaseId }) => release.releaseId === releaseId, { expected: "release-agent response identity to match its release projection" })).annotate({ identifier: "ReleaseAgentTurnResponse" });
808
+ /** Cursor of the last durable release-thread event observed by a client. */
809
+ var ReleaseAgentThreadCursor = Schema.Int.check(Schema.isBetween({
810
+ minimum: 0,
811
+ maximum: Number.MAX_SAFE_INTEGER
812
+ })).pipe(Schema.brand("ReleaseAgentThreadCursor"));
813
+ /** Canonical query-string representation of a durable release-thread cursor. */
814
+ var ReleaseAgentThreadCursorFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(ReleaseAgentThreadCursor));
815
+ /** Bounded caller-selected page size for durable release-thread replay. */
816
+ var ReleaseAgentThreadEventLimitFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(MAXIMUM_THREAD_EVENT_PAGE_SIZE)));
817
+ var releaseAgentThreadEventFields = {
818
+ eventSequence: ReleaseAgentThreadCursor.check(Schema.isGreaterThan(0)),
819
+ jobId: JobId,
820
+ occurredAt: UtcTimestamp
821
+ };
822
+ var ReleaseAgentUserMessageEvent = Schema.TaggedStruct("user-message", {
823
+ ...releaseAgentThreadEventFields,
824
+ prompt: DurableAgentPrompt
825
+ });
826
+ var ReleaseAgentJobQueuedEvent = Schema.TaggedStruct("job-queued", {
827
+ ...releaseAgentThreadEventFields,
828
+ providerId: DurableAgentProviderId
829
+ });
830
+ var ReleaseAgentJobStartedEvent = Schema.TaggedStruct("job-started", releaseAgentThreadEventFields);
831
+ var ReleaseAgentAssistantOutputEvent = Schema.TaggedStruct("assistant-output", {
832
+ ...releaseAgentThreadEventFields,
833
+ text: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH))
834
+ });
835
+ var ReleaseAgentProgressEvent = Schema.TaggedStruct("progress", {
836
+ ...releaseAgentThreadEventFields,
837
+ text: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH))
838
+ });
839
+ var ReleaseAgentUsageEvent = Schema.TaggedStruct("usage", {
840
+ ...releaseAgentThreadEventFields,
841
+ inputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
842
+ outputTokens: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))
843
+ });
844
+ var ReleaseAgentJobCompletedEvent = Schema.TaggedStruct("job-completed", {
845
+ ...releaseAgentThreadEventFields,
846
+ outcome: Schema.Literals([
847
+ "success",
848
+ "cancelled",
849
+ "max-steps"
850
+ ])
851
+ });
852
+ var ReleaseAgentJobFailedEvent = Schema.TaggedStruct("job-failed", {
853
+ ...releaseAgentThreadEventFields,
854
+ retryable: Schema.Boolean
855
+ });
856
+ var ReleaseAgentCancellationRequestedEvent = Schema.TaggedStruct("cancel-requested", {
857
+ ...releaseAgentThreadEventFields,
858
+ requestedAt: UtcTimestamp
859
+ });
860
+ /** One browser-safe event from the durable release thread. */
861
+ var ReleaseAgentThreadEvent = Schema.Union([
862
+ ReleaseAgentUserMessageEvent,
863
+ ReleaseAgentJobQueuedEvent,
864
+ ReleaseAgentJobStartedEvent,
865
+ ReleaseAgentAssistantOutputEvent,
866
+ ReleaseAgentProgressEvent,
867
+ ReleaseAgentUsageEvent,
868
+ ReleaseAgentJobCompletedEvent,
869
+ ReleaseAgentJobFailedEvent,
870
+ ReleaseAgentCancellationRequestedEvent
871
+ ]).pipe(Schema.toTaggedUnion("_tag"));
872
+ /** Bounded request to enqueue one durable read-only release-agent job. */
873
+ var EnqueueReleaseAgentJobRequest = Schema.Struct({
874
+ providerId: DurableAgentProviderId,
875
+ prompt: DurableAgentPrompt
876
+ }).annotate({ identifier: "EnqueueReleaseAgentJobRequest" });
877
+ /** Durable identity returned after the job and its initial events commit. */
878
+ var EnqueueReleaseAgentJobResponse = Schema.Struct({
879
+ releaseId: ReleaseId,
880
+ jobId: JobId,
881
+ state: Schema.Literal("queued")
882
+ }).annotate({ identifier: "EnqueueReleaseAgentJobResponse" });
883
+ /** Ordered, bounded release-thread replay page. */
884
+ var ReleaseAgentThreadPage = Schema.Struct({
885
+ releaseId: ReleaseId,
886
+ events: Schema.Array(ReleaseAgentThreadEvent).check(Schema.makeFilter((events) => events.length <= MAXIMUM_THREAD_EVENT_PAGE_SIZE, { expected: `at most ${MAXIMUM_THREAD_EVENT_PAGE_SIZE} release-agent thread events` })),
887
+ nextCursor: ReleaseAgentThreadCursor
888
+ }).annotate({ identifier: "ReleaseAgentThreadPage" });
889
+ var turn = HttpApiEndpoint.post("turn", "/releases/:releaseId/turns", {
890
+ params: Schema.Struct({ releaseId: ReleaseId }),
891
+ payload: ReleaseAgentTurnRequest,
892
+ success: ReleaseAgentTurnResponse,
893
+ error: [
894
+ InvalidRequestApiError,
895
+ UnauthorizedApiError,
896
+ ForbiddenApiError,
897
+ NotFoundApiError,
898
+ RequestTimedOutApiError,
899
+ RateLimitedApiError,
900
+ PayloadTooLargeApiError,
901
+ ServiceUnavailableApiError
902
+ ]
903
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
904
+ var enqueueJob = HttpApiEndpoint.post("enqueueJob", "/releases/:releaseId/jobs", {
905
+ params: Schema.Struct({ releaseId: ReleaseId }),
906
+ payload: EnqueueReleaseAgentJobRequest,
907
+ success: EnqueueReleaseAgentJobResponse.pipe(HttpApiSchema.status(202)),
908
+ error: [
909
+ InvalidRequestApiError,
910
+ UnauthorizedApiError,
911
+ ForbiddenApiError,
912
+ NotFoundApiError,
913
+ RequestTimedOutApiError,
914
+ PayloadTooLargeApiError,
915
+ RateLimitedApiError,
916
+ ServiceUnavailableApiError
917
+ ]
918
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
919
+ var replayThread = HttpApiEndpoint.get("replayThread", "/releases/:releaseId/thread/events", {
920
+ params: Schema.Struct({ releaseId: ReleaseId }),
921
+ query: Schema.Struct({
922
+ after: Schema.optionalKey(ReleaseAgentThreadCursorFromString),
923
+ limit: Schema.optionalKey(ReleaseAgentThreadEventLimitFromString)
924
+ }),
925
+ success: ReleaseAgentThreadPage,
926
+ error: [
927
+ InvalidRequestApiError,
928
+ UnauthorizedApiError,
929
+ ForbiddenApiError,
930
+ NotFoundApiError,
931
+ RequestTimedOutApiError,
932
+ RateLimitedApiError,
933
+ ServiceUnavailableApiError
934
+ ]
935
+ }).middleware(SessionCookieAuth);
936
+ /** Authenticated release-aware synchronous and durable agent contract. */
937
+ var AgentApiGroup = class extends HttpApiGroup.make("agent").add(turn).add(enqueueJob).add(replayThread).prefix("/api/v1/agent") {};
938
+ var MAXIMUM_RELATIONSHIP_HISTORY = 200;
939
+ var MAXIMUM_EVIDENCE_CLAIMS = 200;
940
+ var boundedArray = (schema, maximum) => Schema.Array(schema).check(Schema.isMaxLength(maximum));
941
+ /** One persisted entity projection with its ledger observation time. */
942
+ var InspectedEntityProjection = Schema.Struct({
943
+ projection: DeliveryEntityProjection,
944
+ recordedAt: UtcTimestamp
945
+ }).annotate({ identifier: "InspectedEntityProjection" });
946
+ /** Bounded deterministic graph prefix; `truncated` explicitly reports incomplete material. */
947
+ var ReleaseDeliveryGraphInspection = Schema.Struct({
948
+ releaseId: ReleaseId,
949
+ environmentId: Schema.NullOr(EnvironmentId),
950
+ truncated: Schema.Boolean,
951
+ nodes: boundedArray(DeliveryNode, 500),
952
+ entityProjections: boundedArray(InspectedEntityProjection, 500),
953
+ relationships: boundedArray(DeliveryRelationship, 500),
954
+ evidenceClaims: boundedArray(EvidenceClaim, 500),
955
+ evidenceItems: boundedArray(EvidenceItem, 500)
956
+ }).annotate({ identifier: "ReleaseDeliveryGraphInspection" });
957
+ var WorkspaceEntityReleaseIds = Schema.Array(ReleaseId).check(Schema.isUnique(), Schema.isMaxLength(500), Schema.makeFilter((releaseIds) => releaseIds.every((releaseId, index) => {
958
+ const previous = releaseIds[index - 1];
959
+ return index === 0 || previous !== void 0 && previous < releaseId;
960
+ }), { expected: "sorted workspace entity release identifiers" }));
961
+ /** Compact canonical human identity assigned to one current workspace entity. */
962
+ var WorkspaceEntityOwner = Schema.Struct({
963
+ avatarFallback: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4)),
964
+ displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),
965
+ personId: PersonId,
966
+ roles: boundedArray(Role, 16).check(Schema.isMinLength(1))
967
+ }).annotate({ identifier: "WorkspaceEntityOwner" });
968
+ var WorkspaceEntityOwners = boundedArray(WorkspaceEntityOwner, 20);
969
+ var WorkspaceOwnerOptions = boundedArray(WorkspaceEntityOwner, 200);
970
+ /** One current workspace entity projection and every bounded current release membership. */
971
+ var WorkspaceEntityProjection = Schema.Struct({
972
+ canonicalReleaseId: Schema.NullOr(ReleaseId),
973
+ owners: WorkspaceEntityOwners,
974
+ ownersTruncated: Schema.Boolean,
975
+ releaseIds: WorkspaceEntityReleaseIds,
976
+ releaseMembershipsTruncated: Schema.Boolean,
977
+ projection: DeliveryEntityProjection,
978
+ recordedAt: UtcTimestamp
979
+ }).check(Schema.makeFilter(({ canonicalReleaseId, releaseIds }) => canonicalReleaseId === (releaseIds[0] ?? null), { expected: "canonical release identifier to be the first current release membership" }), Schema.makeFilter(({ releaseIds, releaseMembershipsTruncated }) => !releaseMembershipsTruncated || releaseIds.length === 500, { expected: "truncated workspace release memberships to contain the complete bounded prefix" }), Schema.makeFilter(({ owners, ownersTruncated }) => !ownersTruncated || owners.length === 20, { expected: "truncated workspace owners to contain the complete bounded prefix" })).annotate({ identifier: "WorkspaceEntityProjection" });
980
+ /** Bounded workspace-wide index of current present normalized entities. */
981
+ var WorkspaceEntityProjectionIndex = Schema.Struct({
982
+ matchedCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
983
+ ownerOptions: WorkspaceOwnerOptions,
984
+ ownerOptionsTruncated: Schema.Boolean,
985
+ totalCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
986
+ truncated: Schema.Boolean,
987
+ items: boundedArray(WorkspaceEntityProjection, 500)
988
+ }).check(Schema.makeFilter(({ ownerOptions, ownerOptionsTruncated }) => !ownerOptionsTruncated || ownerOptions.length === 200, { expected: "truncated workspace owner options to contain the complete bounded prefix" })).annotate({ identifier: "WorkspaceEntityProjectionIndex" });
989
+ /** Complete bounded graph closure surrounding one exact normalized entity. */
990
+ var WorkspaceEntityGraph = Schema.Struct({
991
+ truncated: Schema.Boolean,
992
+ nodes: boundedArray(DeliveryNode, 200),
993
+ relatedEntityProjections: boundedArray(InspectedEntityProjection, 100),
994
+ relationships: boundedArray(DeliveryRelationship, 100),
995
+ evidenceClaims: boundedArray(EvidenceClaim, 200),
996
+ evidenceItems: boundedArray(EvidenceItem, 200)
997
+ }).annotate({ identifier: "WorkspaceEntityGraph" });
998
+ /** Bounded attributable activity for one exact normalized entity. */
999
+ var WorkspaceEntityActivity = Schema.Struct({
1000
+ truncated: Schema.Boolean,
1001
+ events: boundedArray(TimelineEvent, 20)
1002
+ }).annotate({ identifier: "WorkspaceEntityActivity" });
1003
+ /** Canonical provider-neutral full-page read model for one workspace entity. */
1004
+ var WorkspaceEntityInspection = Schema.Struct({
1005
+ entity: WorkspaceEntityProjection,
1006
+ source: SourceRevision,
1007
+ isSourceCurrent: Schema.Boolean,
1008
+ freshness: Schema.NullOr(Freshness),
1009
+ graph: WorkspaceEntityGraph,
1010
+ activity: WorkspaceEntityActivity
1011
+ }).annotate({ identifier: "WorkspaceEntityInspection" });
1012
+ /** Bounded immutable lifecycle history for one relationship, newest first. */
1013
+ var RelationshipHistoryInspection = Schema.Struct({
1014
+ relationshipId: RelationshipId,
1015
+ revisions: boundedArray(DeliveryRelationship, MAXIMUM_RELATIONSHIP_HISTORY)
1016
+ }).annotate({ identifier: "RelationshipHistoryInspection" });
1017
+ /** One immutable evidence item and every bounded claim attributed to it. */
1018
+ var EvidenceInspection = Schema.Struct({
1019
+ evidence: EvidenceItem,
1020
+ claims: boundedArray(EvidenceClaim, MAXIMUM_EVIDENCE_CLAIMS)
1021
+ }).annotate({ identifier: "EvidenceInspection" });
1022
+ /** Read-only repair suggestion derived from one current incomplete relationship. */
1023
+ var RelationshipRepairCandidate = Schema.Struct({
1024
+ relationship: DeliveryRelationship,
1025
+ suggestedDisposition: Schema.Literals([
1026
+ "link",
1027
+ "verify",
1028
+ "reject"
1029
+ ]),
1030
+ explanation: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1e3)),
1031
+ impact: Schema.Struct({
1032
+ releaseId: ReleaseId,
1033
+ environmentId: Schema.NullOr(EnvironmentId)
1034
+ }),
1035
+ requiredPermission: Schema.Literal("workspace-owner")
1036
+ }).annotate({ identifier: "RelationshipRepairCandidate" });
1037
+ /** Bounded candidate discovery result; discovery never mutates the relationship ledger. */
1038
+ var RelationshipRepairCandidates = Schema.Struct({
1039
+ releaseId: ReleaseId,
1040
+ environmentId: Schema.NullOr(EnvironmentId),
1041
+ truncated: Schema.Boolean,
1042
+ candidates: boundedArray(RelationshipRepairCandidate, 500)
1043
+ }).annotate({ identifier: "RelationshipRepairCandidates" });
1044
+ /** Non-mutating proposal input with the optimistic precondition required by a future apply step. */
1045
+ var RelationshipRepairProposalDraft = Schema.Struct({
1046
+ candidate: RelationshipRepairCandidate,
1047
+ precondition: Schema.Struct({
1048
+ relationshipId: RelationshipId,
1049
+ expectedRevision: LedgerRevision
1050
+ }),
1051
+ proposal: Schema.Struct({
1052
+ disposition: Schema.Literals([
1053
+ "link",
1054
+ "verify",
1055
+ "reject"
1056
+ ]),
1057
+ rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1e3))
1058
+ })
1059
+ }).annotate({ identifier: "RelationshipRepairProposalDraft" });
1060
+ /** Idempotent intent for creating a durable proposal from one exact repair candidate. */
1061
+ var CreateRelationshipRepairProposalRequest = Schema.Struct({
1062
+ proposalId: RelationshipRepairProposal.fields.proposalId,
1063
+ environmentId: RelationshipRepairProposal.fields.environmentId,
1064
+ expectedRevision: RelationshipRepairProposal.fields.expectedRevision,
1065
+ disposition: RelationshipRepairDisposition,
1066
+ rationale: RelationshipRepairRationale
1067
+ }).annotate({ identifier: "CreateRelationshipRepairProposalRequest" });
1068
+ /** Bounded newest-first proposal page for one release/environment scope. */
1069
+ var RelationshipRepairProposalList = Schema.Struct({
1070
+ releaseId: ReleaseId,
1071
+ environmentId: Schema.NullOr(EnvironmentId),
1072
+ status: Schema.NullOr(RelationshipRepairProposal.fields.status),
1073
+ truncated: Schema.Boolean,
1074
+ proposals: boundedArray(RelationshipRepairProposal, 128),
1075
+ applications: boundedArray(RelationshipRepairApplication, 128)
1076
+ }).annotate({ identifier: "RelationshipRepairProposalList" });
1077
+ /** Idempotent immutable review command for one pending proposal. */
1078
+ var ReviewRelationshipRepairProposalRequest = Schema.Struct({
1079
+ reviewId: RelationshipRepairReviewId,
1080
+ decision: RelationshipRepairReviewDecision,
1081
+ rationale: RelationshipRepairRationale
1082
+ }).annotate({ identifier: "ReviewRelationshipRepairProposalRequest" });
1083
+ /** Applied proposal together with the immutable relationship revision it appended. */
1084
+ var ApplyRelationshipRepairProposalResponse = Schema.Struct({
1085
+ application: RelationshipRepairApplication,
1086
+ relationship: DeliveryRelationship
1087
+ }).annotate({ identifier: "ApplyRelationshipRepairProposalResponse" });
1088
+ var readErrors = [
1089
+ UnauthorizedApiError,
1090
+ ForbiddenApiError,
1091
+ NotFoundApiError,
1092
+ RequestTimedOutApiError,
1093
+ ServiceUnavailableApiError
1094
+ ];
1095
+ var releaseSlice = HttpApiEndpoint.get("releaseSlice", "/api/v1/relationships/releases/:releaseId", {
1096
+ params: { releaseId: ReleaseId },
1097
+ query: { environmentId: Schema.optionalKey(EnvironmentId) },
1098
+ success: ReleaseDeliveryGraphInspection,
1099
+ error: readErrors
1100
+ }).middleware(SessionCookieAuth);
1101
+ var workspaceEntityProjections = HttpApiEndpoint.get("workspaceEntityProjections", "/api/v1/items", {
1102
+ query: {
1103
+ q: Schema.optionalKey(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))),
1104
+ owner: Schema.optionalKey(PersonId),
1105
+ service: Schema.optionalKey(DeliveryEntityService),
1106
+ status: Schema.optionalKey(DeliveryEntityStatusGroup),
1107
+ type: Schema.optionalKey(DeliveryEntityKind)
1108
+ },
1109
+ success: WorkspaceEntityProjectionIndex,
1110
+ error: readErrors
1111
+ }).middleware(SessionCookieAuth);
1112
+ var workspaceEntity = HttpApiEndpoint.get("workspaceEntity", "/api/v1/items/:entityId", {
1113
+ params: { entityId: EntityId },
1114
+ success: WorkspaceEntityInspection,
1115
+ error: readErrors
1116
+ }).middleware(SessionCookieAuth);
1117
+ var relationship = HttpApiEndpoint.get("relationship", "/api/v1/relationships/:relationshipId", {
1118
+ params: { relationshipId: RelationshipId },
1119
+ query: { revision: Schema.optionalKey(CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision))) },
1120
+ success: DeliveryRelationship,
1121
+ error: readErrors
1122
+ }).middleware(SessionCookieAuth);
1123
+ var repairCandidates = HttpApiEndpoint.get("repairCandidates", "/api/v1/relationships/releases/:releaseId/repair-candidates", {
1124
+ params: { releaseId: ReleaseId },
1125
+ query: { environmentId: Schema.optionalKey(EnvironmentId) },
1126
+ success: RelationshipRepairCandidates,
1127
+ error: readErrors
1128
+ }).middleware(SessionCookieAuth);
1129
+ var repairProposalDraft = HttpApiEndpoint.get("repairProposalDraft", "/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposal-draft", {
1130
+ params: {
1131
+ releaseId: ReleaseId,
1132
+ relationshipId: RelationshipId
1133
+ },
1134
+ query: {
1135
+ environmentId: Schema.optionalKey(EnvironmentId),
1136
+ revision: CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision))
1137
+ },
1138
+ success: RelationshipRepairProposalDraft,
1139
+ error: readErrors
1140
+ }).middleware(SessionCookieAuth);
1141
+ var createRepairProposal = HttpApiEndpoint.post("createRepairProposal", "/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposals", {
1142
+ params: {
1143
+ releaseId: ReleaseId,
1144
+ relationshipId: RelationshipId
1145
+ },
1146
+ payload: CreateRelationshipRepairProposalRequest,
1147
+ success: RelationshipRepairProposal,
1148
+ error: [
1149
+ ...readErrors,
1150
+ InvalidRequestApiError,
1151
+ ConflictApiError,
1152
+ PayloadTooLargeApiError
1153
+ ]
1154
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
1155
+ var listRepairProposals = HttpApiEndpoint.get("listRepairProposals", "/api/v1/relationships/releases/:releaseId/repair-proposals", {
1156
+ params: { releaseId: ReleaseId },
1157
+ query: {
1158
+ environmentId: Schema.optionalKey(EnvironmentId),
1159
+ status: Schema.optionalKey(RelationshipRepairProposal.fields.status)
1160
+ },
1161
+ success: RelationshipRepairProposalList,
1162
+ error: readErrors
1163
+ }).middleware(SessionCookieAuth);
1164
+ var getRepairProposal = HttpApiEndpoint.get("getRepairProposal", "/api/v1/relationships/repair-proposals/:proposalId", {
1165
+ params: { proposalId: RelationshipRepairProposalId },
1166
+ success: RelationshipRepairProposal,
1167
+ error: readErrors
1168
+ }).middleware(SessionCookieAuth);
1169
+ var reviewRepairProposal = HttpApiEndpoint.post("reviewRepairProposal", "/api/v1/relationships/repair-proposals/:proposalId/reviews", {
1170
+ params: { proposalId: RelationshipRepairProposalId },
1171
+ payload: ReviewRelationshipRepairProposalRequest,
1172
+ success: RelationshipRepairProposal,
1173
+ error: [
1174
+ ...readErrors,
1175
+ InvalidRequestApiError,
1176
+ ConflictApiError,
1177
+ PayloadTooLargeApiError
1178
+ ]
1179
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
1180
+ var applyRepairProposal = HttpApiEndpoint.post("applyRepairProposal", "/api/v1/relationships/repair-proposals/:proposalId/applications", {
1181
+ params: { proposalId: RelationshipRepairProposalId },
1182
+ success: ApplyRelationshipRepairProposalResponse,
1183
+ error: [
1184
+ ...readErrors,
1185
+ InvalidRequestApiError,
1186
+ ConflictApiError
1187
+ ]
1188
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
1189
+ var relationshipHistory = HttpApiEndpoint.get("relationshipHistory", "/api/v1/relationships/:relationshipId/history", {
1190
+ params: { relationshipId: RelationshipId },
1191
+ success: RelationshipHistoryInspection,
1192
+ error: readErrors
1193
+ }).middleware(SessionCookieAuth);
1194
+ var evidence = HttpApiEndpoint.get("evidence", "/api/v1/evidence/:evidenceId", {
1195
+ params: { evidenceId: EvidenceId },
1196
+ success: EvidenceInspection,
1197
+ error: readErrors
1198
+ }).middleware(SessionCookieAuth);
1199
+ /** Authenticated, workspace-safe delivery relationship and evidence inspection. */
1200
+ var DeliveryGraphApiGroup = class extends HttpApiGroup.make("deliveryGraph").add(workspaceEntityProjections, workspaceEntity, releaseSlice, repairCandidates, repairProposalDraft, createRepairProposal, listRepairProposals, getRepairProposal, reviewRepairProposal, applyRepairProposal, relationship, relationshipHistory, evidence) {};
1201
+ //#endregion
1202
+ //#region src/api/liveEvents.ts
1203
+ /** URL/header representation of a nonnegative workspace event cursor. */
1204
+ var EventCursorFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(EventCursor));
1205
+ /** Replay boundary telling a client to replace local state with an authoritative snapshot. */
1206
+ var StreamResetRequired = Schema.Struct({
1207
+ reason: Schema.Literals([
1208
+ "retention",
1209
+ "cursor-ahead",
1210
+ "gap",
1211
+ "replay-budget"
1212
+ ]),
1213
+ requestedCursor: EventCursor,
1214
+ headCursor: EventCursor,
1215
+ prunedThroughCursor: EventCursor
1216
+ }).annotate({ identifier: "StreamResetRequired" });
1217
+ /** Keepalive payload that reports the latest durable cursor without advancing EventSource state. */
1218
+ var StreamHeartbeat = Schema.Struct({
1219
+ eventCursor: EventCursor,
1220
+ sentAt: UtcTimestamp
1221
+ }).annotate({ identifier: "StreamHeartbeat" });
1222
+ /** Authoritative portfolio replacement emitted first and after replay reset. */
1223
+ var PortfolioSnapshotLiveEvent = Schema.Struct({
1224
+ id: EventCursorFromString,
1225
+ event: Schema.Literal("portfolio.snapshot"),
1226
+ data: Schema.fromJsonString(PortfolioSnapshot)
1227
+ }).annotate({ identifier: "PortfolioSnapshotLiveEvent" });
1228
+ /** Durable notification that a browser should refresh its portfolio projection. */
1229
+ var PortfolioInvalidatedLiveEvent = Schema.Struct({
1230
+ id: EventCursorFromString,
1231
+ event: Schema.Literal("portfolio.invalidated"),
1232
+ data: Schema.fromJsonString(PortfolioInvalidatedEventV1)
1233
+ }).annotate({ identifier: "PortfolioInvalidatedLiveEvent" });
1234
+ /** Replay-gap instruction; it deliberately has no SSE ID so it cannot advance resume state. */
1235
+ var StreamResetRequiredLiveEvent = Schema.Struct({
1236
+ id: Schema.optionalKey(Schema.Undefined),
1237
+ event: Schema.Literal("stream.reset-required"),
1238
+ data: Schema.fromJsonString(StreamResetRequired)
1239
+ }).annotate({ identifier: "StreamResetRequiredLiveEvent" });
1240
+ /** Keepalive event; it deliberately has no SSE ID so it cannot advance resume state. */
1241
+ var StreamHeartbeatLiveEvent = Schema.Struct({
1242
+ id: Schema.optionalKey(Schema.Undefined),
1243
+ event: Schema.Literal("stream.heartbeat"),
1244
+ data: Schema.fromJsonString(StreamHeartbeat)
1245
+ }).annotate({ identifier: "StreamHeartbeatLiveEvent" });
1246
+ /** Closed browser-safe union emitted by the authenticated live event stream. */
1247
+ var ControlCenterLiveEvent = Schema.Union([
1248
+ PortfolioSnapshotLiveEvent,
1249
+ PortfolioInvalidatedLiveEvent,
1250
+ StreamResetRequiredLiveEvent,
1251
+ StreamHeartbeatLiveEvent
1252
+ ]).annotate({ identifier: "ControlCenterLiveEvent" });
1253
+ var stream = HttpApiEndpoint.get("stream", "/api/v1/events", {
1254
+ query: { after: Schema.optionalKey(EventCursorFromString) },
1255
+ headers: { "last-event-id": Schema.optionalKey(EventCursorFromString) },
1256
+ success: HttpApiSchema.StreamSse({ events: ControlCenterLiveEvent }),
1257
+ error: [
1258
+ InvalidRequestApiError,
1259
+ UnauthorizedApiError,
1260
+ ForbiddenApiError,
1261
+ RateLimitedApiError,
1262
+ RequestTimedOutApiError,
1263
+ ServiceUnavailableApiError
1264
+ ]
1265
+ }).middleware(SessionCookieAuth);
1266
+ /** Authenticated resumable stream of workspace-local Control Center events. */
1267
+ var LiveEventsApiGroup = class extends HttpApiGroup.make("liveEvents").add(stream) {};
1268
+ //#endregion
1269
+ //#region src/api/media.ts
1270
+ /** Workspace-scoped opaque media reference that reveals neither provider URLs nor local storage keys. */
1271
+ var OpaqueMediaId = Schema.String.check(Schema.isPattern(/^media_[0-9a-f]{64}$/u, { expected: "an opaque SHA-256 media identifier" })).pipe(Schema.brand("OpaqueMediaId"));
1272
+ /** Closed set of inert raster formats accepted at the authenticated media boundary. */
1273
+ var SafeMediaContentType = Schema.Literals([
1274
+ "image/avif",
1275
+ "image/jpeg",
1276
+ "image/png",
1277
+ "image/webp"
1278
+ ]);
1279
+ /** Security and metadata headers required on authenticated opaque media responses. */
1280
+ var MediaResponseHeaders = Schema.Struct({
1281
+ "x-correlation-id": CorrelationId,
1282
+ "content-type": SafeMediaContentType,
1283
+ "content-length": CanonicalNonNegativeIntegerFromString,
1284
+ "cache-control": Schema.Literal("private, no-store"),
1285
+ "x-content-type-options": Schema.Literal("nosniff")
1286
+ }).annotate({ identifier: "MediaResponseHeaders" });
1287
+ var read = HttpApiEndpoint.get("read", "/:mediaId", {
1288
+ params: Schema.Struct({ mediaId: OpaqueMediaId }),
1289
+ success: HttpApiSchema.StreamUint8Array({ contentType: "application/octet-stream" }),
1290
+ error: [
1291
+ UnauthorizedApiError,
1292
+ ForbiddenApiError,
1293
+ NotFoundApiError,
1294
+ RequestTimedOutApiError,
1295
+ ServiceUnavailableApiError
1296
+ ]
1297
+ }).middleware(SessionCookieAuth);
1298
+ /** Authenticated, workspace-resolved opaque media contract. */
1299
+ var MediaApiGroup = class extends HttpApiGroup.make("media").add(read).prefix("/api/v1/media") {};
1300
+ //#endregion
1301
+ //#region src/api/shares.ts
1302
+ /** Owner-authored intent for one exact entity share grant. */
1303
+ var CreateAuthorizedShareRequest = Schema.Struct({
1304
+ shareId: ShareId,
1305
+ entityId: EntityId,
1306
+ granteePersonId: PersonId,
1307
+ expiresAt: UtcTimestamp
1308
+ });
1309
+ /** Secret-free grant metadata returned to authenticated callers. */
1310
+ var AuthorizedShareSummary = Schema.Struct({
1311
+ shareId: ShareId,
1312
+ entityId: EntityId,
1313
+ granteePersonId: PersonId,
1314
+ createdAt: UtcTimestamp,
1315
+ expiresAt: UtcTimestamp,
1316
+ revokedAt: Schema.NullOr(UtcTimestamp)
1317
+ }).annotate({ identifier: "AuthorizedShareSummary" });
1318
+ /** Exact current entity projection resolved without relationships or release context. */
1319
+ var AuthorizedShareResolution = Schema.Struct({
1320
+ share: AuthorizedShareSummary,
1321
+ item: InspectedEntityProjection
1322
+ }).annotate({ identifier: "AuthorizedShareResolution" });
1323
+ var authenticatedErrors = [
1324
+ UnauthorizedApiError,
1325
+ ForbiddenApiError,
1326
+ RequestTimedOutApiError,
1327
+ ServiceUnavailableApiError
1328
+ ];
1329
+ var create = HttpApiEndpoint.post("create", "/", {
1330
+ payload: CreateAuthorizedShareRequest,
1331
+ success: AuthorizedShareSummary,
1332
+ error: [
1333
+ ...authenticatedErrors,
1334
+ InvalidRequestApiError,
1335
+ NotFoundApiError,
1336
+ ConflictApiError
1337
+ ]
1338
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
1339
+ var resolve = HttpApiEndpoint.get("resolve", "/:workspaceId/:shareId", {
1340
+ params: Schema.Struct({
1341
+ workspaceId: WorkspaceId,
1342
+ shareId: ShareId
1343
+ }),
1344
+ success: AuthorizedShareResolution,
1345
+ error: [...authenticatedErrors, NotFoundApiError]
1346
+ }).middleware(SessionCookieAuth);
1347
+ var revoke = HttpApiEndpoint.delete("revoke", "/:workspaceId/:shareId", {
1348
+ params: Schema.Struct({
1349
+ workspaceId: WorkspaceId,
1350
+ shareId: ShareId
1351
+ }),
1352
+ success: HttpApiSchema.NoContent,
1353
+ error: [...authenticatedErrors, NotFoundApiError]
1354
+ }).middleware(SessionCookieAuth).middleware(SessionMutationAuth);
1355
+ /** Exact-scope authenticated entity-share contract. */
1356
+ var SharesApiGroup = class extends HttpApiGroup.make("shares").add(create, resolve, revoke).prefix("/api/v1/shares") {};
1357
+ //#endregion
1358
+ //#region src/api/timeline.ts
1359
+ var TimelinePageSizeFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(100)));
1360
+ /** Hard caller-selected event bound for one Timeline download. */
1361
+ var TimelineExportLimitFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(1e3)));
1362
+ /** Content types emitted by the bounded Timeline download endpoints. */
1363
+ var TimelineExportContentType = Schema.Literals(["application/json; charset=utf-8", "text/csv; charset=utf-8"]);
1364
+ /** Security, download, and truncation headers on a Timeline export response. */
1365
+ var TimelineExportResponseHeaders = Schema.Struct({
1366
+ "cache-control": Schema.Literal("private, no-store"),
1367
+ "content-disposition": Schema.Literals(["attachment; filename=\"timeline-export.csv\"", "attachment; filename=\"timeline-export.json\""]),
1368
+ "content-type": TimelineExportContentType,
1369
+ "x-content-type-options": Schema.Literal("nosniff"),
1370
+ "x-timeline-export-count": CanonicalNonNegativeIntegerFromString,
1371
+ "x-timeline-export-limit": TimelineExportLimitFromString,
1372
+ "x-timeline-export-truncated": Schema.Literals(["false", "true"])
1373
+ }).annotate({ identifier: "TimelineExportResponseHeaders" });
1374
+ var exportQuery = {
1375
+ actor: Schema.optionalKey(TimelineActorKind),
1376
+ from: Schema.optionalKey(UtcTimestamp),
1377
+ limit: TimelineExportLimitFromString,
1378
+ to: Schema.optionalKey(UtcTimestamp)
1379
+ };
1380
+ var timelineErrors = [
1381
+ InvalidRequestApiError,
1382
+ UnauthorizedApiError,
1383
+ ForbiddenApiError,
1384
+ RequestTimedOutApiError,
1385
+ ServiceUnavailableApiError
1386
+ ];
1387
+ var page = HttpApiEndpoint.get("page", "/api/v1/timeline", {
1388
+ query: {
1389
+ actor: Schema.optionalKey(TimelineActorKind),
1390
+ beforeEventKey: Schema.optionalKey(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(1024))),
1391
+ beforeOccurredAt: Schema.optionalKey(UtcTimestamp),
1392
+ from: Schema.optionalKey(UtcTimestamp),
1393
+ limit: Schema.optionalKey(TimelinePageSizeFromString),
1394
+ to: Schema.optionalKey(UtcTimestamp)
1395
+ },
1396
+ success: TimelinePage,
1397
+ error: timelineErrors
1398
+ }).middleware(SessionCookieAuth);
1399
+ var detail = HttpApiEndpoint.get("detail", "/api/v1/timeline/events/:eventKey", {
1400
+ params: { eventKey: TimelineCursor.fields.eventKey },
1401
+ success: TimelineEventDetail,
1402
+ error: [
1403
+ InvalidRequestApiError,
1404
+ UnauthorizedApiError,
1405
+ ForbiddenApiError,
1406
+ NotFoundApiError,
1407
+ RequestTimedOutApiError,
1408
+ ServiceUnavailableApiError
1409
+ ]
1410
+ }).middleware(SessionCookieAuth);
1411
+ var exportCsv = HttpApiEndpoint.get("exportCsv", "/api/v1/timeline/export.csv", {
1412
+ query: exportQuery,
1413
+ success: HttpApiSchema.StreamUint8Array({ contentType: "text/csv; charset=utf-8" }),
1414
+ error: timelineErrors
1415
+ }).middleware(SessionCookieAuth);
1416
+ var exportJson = HttpApiEndpoint.get("exportJson", "/api/v1/timeline/export.json", {
1417
+ query: exportQuery,
1418
+ success: HttpApiSchema.StreamUint8Array({ contentType: "application/json; charset=utf-8" }),
1419
+ error: timelineErrors
1420
+ }).middleware(SessionCookieAuth);
1421
+ /** Authenticated, workspace-scoped durable activity Timeline. */
1422
+ var TimelineApiGroup = class extends HttpApiGroup.make("timeline").add(page).add(detail).add(exportCsv).add(exportJson) {};
1423
+ //#endregion
1424
+ //#region src/api/controlCenterApi.ts
1425
+ /** Browser-safe authenticated HTTP contract shared by the generated client and server implementation. */
1426
+ var ControlCenterApi = class extends HttpApi.make("ControlCenterApi").add(SessionApiGroup).add(SharesApiGroup).add(PluginsApiGroup).add(PortfolioApiGroup).add(DeliveryGraphApiGroup).add(MediaApiGroup).add(LiveEventsApiGroup).add(TimelineApiGroup).add(AgentApiGroup) {};
1427
+ //#endregion
1428
+ export { PortfolioReadinessSummary as $, PairSessionResponse as $t, RelationshipRepairProposalDraft as A, PluginConfiguration as At, DurableAgentProviderId as B, PluginOverviewResponse as Bt, CreateRelationshipRepairProposalRequest as C, CreatePluginConnectionsRequest as Ct, RelationshipHistoryInspection as D, ExchangeAtlassianOAuthGrantRequest as Dt, InspectedEntityProjection as E, DiscoveredAwsProfile as Et, AgentApiGroup as F, PluginConnectionSetupFailureClass as Ft, ReleaseAgentThreadCursor as G, PluginsApiGroup as Gt, EnqueueReleaseAgentJobResponse as H, PluginServiceCatalogField as Ht, AgentHistoryMessage as I, PluginConnectionSummary as It, ReleaseAgentThreadEventLimitFromString as J, CsrfToken as Jt, ReleaseAgentThreadCursorFromString as K, RedactedPluginConfigurationValue as Kt, AgentPrompt as L, PluginConnectionTestResult as Lt, WorkspaceEntityActivity as M, PluginConfigurationMetadata as Mt, WorkspaceEntityGraph as N, PluginConfigurationPatchValue as Nt, RelationshipRepairCandidate as O, OpaqueSecretReference as Ot, WorkspaceEntityInspection as P, PluginConnectionIdentity as Pt, PortfolioApiGroup as Q, PairSessionRequest as Qt, AgentProvider as R, PluginHealthResponse as Rt, StreamResetRequiredLiveEvent as S, CreatePluginConnectionValue as St, EvidenceInspection as T, DiscoveredAtlassianProfile as Tt, ReleaseAgentHistoryMessage as U, PluginSynchronizationResult as Ut, EnqueueReleaseAgentJobRequest as V, PluginServiceCatalogEntry as Vt, ReleaseAgentProvider as W, PluginSynchronizationState as Wt, ReleaseAgentTurnRequest as X, CurrentSessionResponse as Xt, ReleaseAgentThreadPage as Y, CurrentSession as Yt, ReleaseAgentTurnResponse as Z, MutationCsrf as Zt, PortfolioInvalidatedLiveEvent as _, CompleteAtlassianOAuthGrantRequest as _t, TimelineExportResponseHeaders as a, SessionSummary as an, AtlassianOAuthClientConfiguration as at, StreamHeartbeatLiveEvent as b, CreatePluginConnectionRequest as bt, CreateAuthorizedShareRequest as c, CorrelationResponseHeaders as cn, AtlassianOAuthGrantStartResponse as ct, MediaResponseHeaders as d, NotFoundApiError as dn, AtlassianOAuthSite as dt, PairingCode as en, PortfolioRelationshipCounts as et, OpaqueMediaId as f, PayloadTooLargeApiError as fn, AtlassianProfileDiscoveryResponse as ft, LiveEventsApiGroup as g, UnauthorizedApiError as gn, AwsServiceResourceDiscovery as gt, EventCursorFromString as h, ServiceUnavailableApiError as hn, AwsResourceDiscoveryResponse as ht, TimelineExportLimitFromString as i, SessionMutationAuth as in, PortfolioSnapshot as it, ReleaseDeliveryGraphInspection as j, PluginConfigurationKey as jt, RelationshipRepairCandidates as k, PatchPluginConfigurationRequest as kt, SharesApiGroup as l, ForbiddenApiError as ln, AtlassianOAuthProvider as lt, ControlCenterLiveEvent as m, RequestTimedOutApiError as mn, AwsResourceDiscoveryRequest as mt, TimelineApiGroup as n, SessionCookieAuth as nn, PortfolioReleaseRole as nt, AuthorizedShareResolution as o, ConflictApiError as on, AtlassianOAuthGrantExchangeResponse as ot, SafeMediaContentType as p, RateLimitedApiError as pn, AwsProfileDiscoveryResponse as pt, ReleaseAgentThreadEvent as q, SetPluginConnectionEnabledRequest as qt, TimelineExportContentType as r, SessionListResponse as rn, PortfolioReleaseSummary as rt, AuthorizedShareSummary as s, CorrelationId as sn, AtlassianOAuthGrantId as st, ControlCenterApi as t, SessionApiGroup as tn, PortfolioReleaseCollaborator as tt, MediaApiGroup as u, InvalidRequestApiError as un, AtlassianOAuthProviderIntent as ut, PortfolioSnapshotLiveEvent as v, CreateAtlassianOAuthGrantRequest as vt, DeliveryGraphApiGroup as w, CreatePluginConnectionsResponse as wt, StreamResetRequired as x, CreatePluginConnectionResponse as xt, StreamHeartbeat as y, CreatePluginConnectionBatchResult as yt, DurableAgentPrompt as z, PluginListResponse as zt };
1429
+
1430
+ //# sourceMappingURL=controlCenterApi-tZPvRPRH.js.map