@zhin.js/workroom 0.0.0 → 0.0.2

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 (815) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -4
  3. package/lib/data-governance/canonical-value.d.ts +7 -0
  4. package/lib/data-governance/canonical-value.d.ts.map +1 -0
  5. package/lib/data-governance/canonical-value.js +35 -0
  6. package/lib/data-governance/canonical-value.js.map +1 -0
  7. package/lib/data-governance/data-governance.d.ts +198 -0
  8. package/lib/data-governance/data-governance.d.ts.map +1 -0
  9. package/lib/data-governance/data-governance.js +660 -0
  10. package/lib/data-governance/data-governance.js.map +1 -0
  11. package/lib/data-governance/database-payload-lifecycle-repository.d.ts +68 -0
  12. package/lib/data-governance/database-payload-lifecycle-repository.d.ts.map +1 -0
  13. package/lib/data-governance/database-payload-lifecycle-repository.js +226 -0
  14. package/lib/data-governance/database-payload-lifecycle-repository.js.map +1 -0
  15. package/lib/data-governance/disclosure-authority.d.ts +38 -0
  16. package/lib/data-governance/disclosure-authority.d.ts.map +1 -0
  17. package/lib/data-governance/disclosure-authority.js +2 -0
  18. package/lib/data-governance/disclosure-authority.js.map +1 -0
  19. package/lib/data-governance/disclosure-manifest.d.ts +110 -0
  20. package/lib/data-governance/disclosure-manifest.d.ts.map +1 -0
  21. package/lib/data-governance/disclosure-manifest.js +264 -0
  22. package/lib/data-governance/disclosure-manifest.js.map +1 -0
  23. package/lib/data-governance/durable-file-store.d.ts +56 -0
  24. package/lib/data-governance/durable-file-store.d.ts.map +1 -0
  25. package/lib/data-governance/durable-file-store.js +125 -0
  26. package/lib/data-governance/durable-file-store.js.map +1 -0
  27. package/lib/data-governance/encrypted-database-payload-vault.d.ts +107 -0
  28. package/lib/data-governance/encrypted-database-payload-vault.d.ts.map +1 -0
  29. package/lib/data-governance/encrypted-database-payload-vault.js +236 -0
  30. package/lib/data-governance/encrypted-database-payload-vault.js.map +1 -0
  31. package/lib/data-governance/encrypted-file-payload-vault.d.ts +117 -0
  32. package/lib/data-governance/encrypted-file-payload-vault.d.ts.map +1 -0
  33. package/lib/data-governance/encrypted-file-payload-vault.js +507 -0
  34. package/lib/data-governance/encrypted-file-payload-vault.js.map +1 -0
  35. package/lib/data-governance/file-payload-lifecycle-repository.d.ts +19 -0
  36. package/lib/data-governance/file-payload-lifecycle-repository.d.ts.map +1 -0
  37. package/lib/data-governance/file-payload-lifecycle-repository.js +194 -0
  38. package/lib/data-governance/file-payload-lifecycle-repository.js.map +1 -0
  39. package/lib/data-governance/governance-authority-repository.d.ts +152 -0
  40. package/lib/data-governance/governance-authority-repository.d.ts.map +1 -0
  41. package/lib/data-governance/governance-authority-repository.js +455 -0
  42. package/lib/data-governance/governance-authority-repository.js.map +1 -0
  43. package/lib/data-governance/governed-payload-write-saga.d.ts +126 -0
  44. package/lib/data-governance/governed-payload-write-saga.d.ts.map +1 -0
  45. package/lib/data-governance/governed-payload-write-saga.js +471 -0
  46. package/lib/data-governance/governed-payload-write-saga.js.map +1 -0
  47. package/lib/data-governance/payload-hold-overdue-projection.d.ts +57 -0
  48. package/lib/data-governance/payload-hold-overdue-projection.d.ts.map +1 -0
  49. package/lib/data-governance/payload-hold-overdue-projection.js +80 -0
  50. package/lib/data-governance/payload-hold-overdue-projection.js.map +1 -0
  51. package/lib/data-governance/payload-lifecycle.d.ts +359 -0
  52. package/lib/data-governance/payload-lifecycle.d.ts.map +1 -0
  53. package/lib/data-governance/payload-lifecycle.js +930 -0
  54. package/lib/data-governance/payload-lifecycle.js.map +1 -0
  55. package/lib/data-governance/payload-vault-storage-handoff.d.ts +255 -0
  56. package/lib/data-governance/payload-vault-storage-handoff.d.ts.map +1 -0
  57. package/lib/data-governance/payload-vault-storage-handoff.js +471 -0
  58. package/lib/data-governance/payload-vault-storage-handoff.js.map +1 -0
  59. package/lib/data-governance.d.ts +26 -0
  60. package/lib/data-governance.d.ts.map +1 -0
  61. package/lib/data-governance.js +26 -0
  62. package/lib/data-governance.js.map +1 -0
  63. package/lib/index.d.ts +102 -0
  64. package/lib/index.d.ts.map +1 -0
  65. package/lib/index.js +105 -0
  66. package/lib/index.js.map +1 -0
  67. package/lib/portfolio/capacity-control-outbox.d.ts +174 -0
  68. package/lib/portfolio/capacity-control-outbox.d.ts.map +1 -0
  69. package/lib/portfolio/capacity-control-outbox.js +338 -0
  70. package/lib/portfolio/capacity-control-outbox.js.map +1 -0
  71. package/lib/portfolio/database-capacity-control-outbox.d.ts +62 -0
  72. package/lib/portfolio/database-capacity-control-outbox.d.ts.map +1 -0
  73. package/lib/portfolio/database-capacity-control-outbox.js +166 -0
  74. package/lib/portfolio/database-capacity-control-outbox.js.map +1 -0
  75. package/lib/portfolio/file-capacity-control-outbox.d.ts +10 -0
  76. package/lib/portfolio/file-capacity-control-outbox.d.ts.map +1 -0
  77. package/lib/portfolio/file-capacity-control-outbox.js +113 -0
  78. package/lib/portfolio/file-capacity-control-outbox.js.map +1 -0
  79. package/lib/portfolio/file-portfolio-journal.d.ts +11 -0
  80. package/lib/portfolio/file-portfolio-journal.d.ts.map +1 -0
  81. package/lib/portfolio/file-portfolio-journal.js +196 -0
  82. package/lib/portfolio/file-portfolio-journal.js.map +1 -0
  83. package/lib/portfolio/portfolio-admission.d.ts +95 -0
  84. package/lib/portfolio/portfolio-admission.d.ts.map +1 -0
  85. package/lib/portfolio/portfolio-admission.js +1080 -0
  86. package/lib/portfolio/portfolio-admission.js.map +1 -0
  87. package/lib/portfolio/portfolio-journal.d.ts +359 -0
  88. package/lib/portfolio/portfolio-journal.d.ts.map +1 -0
  89. package/lib/portfolio/portfolio-journal.js +844 -0
  90. package/lib/portfolio/portfolio-journal.js.map +1 -0
  91. package/lib/portfolio/resource-bundle.d.ts +136 -0
  92. package/lib/portfolio/resource-bundle.d.ts.map +1 -0
  93. package/lib/portfolio/resource-bundle.js +387 -0
  94. package/lib/portfolio/resource-bundle.js.map +1 -0
  95. package/lib/portfolio/sponsor-projection.d.ts +78 -0
  96. package/lib/portfolio/sponsor-projection.d.ts.map +1 -0
  97. package/lib/portfolio/sponsor-projection.js +135 -0
  98. package/lib/portfolio/sponsor-projection.js.map +1 -0
  99. package/lib/portfolio.d.ts +24 -0
  100. package/lib/portfolio.d.ts.map +1 -0
  101. package/lib/portfolio.js +24 -0
  102. package/lib/portfolio.js.map +1 -0
  103. package/lib/remote.d.ts +23 -0
  104. package/lib/remote.d.ts.map +1 -0
  105. package/lib/remote.js +23 -0
  106. package/lib/remote.js.map +1 -0
  107. package/lib/room/database-room-task-journal.d.ts +66 -0
  108. package/lib/room/database-room-task-journal.d.ts.map +1 -0
  109. package/lib/room/database-room-task-journal.js +154 -0
  110. package/lib/room/database-room-task-journal.js.map +1 -0
  111. package/lib/room/index.d.ts +15 -0
  112. package/lib/room/index.d.ts.map +1 -0
  113. package/lib/room/index.js +15 -0
  114. package/lib/room/index.js.map +1 -0
  115. package/lib/room/room-bus.d.ts +45 -0
  116. package/lib/room/room-bus.d.ts.map +1 -0
  117. package/lib/room/room-bus.js +71 -0
  118. package/lib/room/room-bus.js.map +1 -0
  119. package/lib/room/room-definition.d.ts +75 -0
  120. package/lib/room/room-definition.d.ts.map +1 -0
  121. package/lib/room/room-definition.js +22 -0
  122. package/lib/room/room-definition.js.map +1 -0
  123. package/lib/room/room-event-sequencer.d.ts +29 -0
  124. package/lib/room/room-event-sequencer.d.ts.map +1 -0
  125. package/lib/room/room-event-sequencer.js +57 -0
  126. package/lib/room/room-event-sequencer.js.map +1 -0
  127. package/lib/room/room-guards.d.ts +105 -0
  128. package/lib/room/room-guards.d.ts.map +1 -0
  129. package/lib/room/room-guards.js +222 -0
  130. package/lib/room/room-guards.js.map +1 -0
  131. package/lib/room/room-membership.d.ts +15 -0
  132. package/lib/room/room-membership.d.ts.map +1 -0
  133. package/lib/room/room-membership.js +34 -0
  134. package/lib/room/room-membership.js.map +1 -0
  135. package/lib/room/room-registry.d.ts +59 -0
  136. package/lib/room/room-registry.d.ts.map +1 -0
  137. package/lib/room/room-registry.js +64 -0
  138. package/lib/room/room-registry.js.map +1 -0
  139. package/lib/room/room-router.d.ts +31 -0
  140. package/lib/room/room-router.d.ts.map +1 -0
  141. package/lib/room/room-router.js +99 -0
  142. package/lib/room/room-router.js.map +1 -0
  143. package/lib/room/room-send-limiter.d.ts +91 -0
  144. package/lib/room/room-send-limiter.d.ts.map +1 -0
  145. package/lib/room/room-send-limiter.js +124 -0
  146. package/lib/room/room-send-limiter.js.map +1 -0
  147. package/lib/room/room-task-authorizer.d.ts +54 -0
  148. package/lib/room/room-task-authorizer.d.ts.map +1 -0
  149. package/lib/room/room-task-authorizer.js +139 -0
  150. package/lib/room/room-task-authorizer.js.map +1 -0
  151. package/lib/room/room-task-journal.d.ts +27 -0
  152. package/lib/room/room-task-journal.d.ts.map +1 -0
  153. package/lib/room/room-task-journal.js +49 -0
  154. package/lib/room/room-task-journal.js.map +1 -0
  155. package/lib/room/room-task-service.d.ts +54 -0
  156. package/lib/room/room-task-service.d.ts.map +1 -0
  157. package/lib/room/room-task-service.js +103 -0
  158. package/lib/room/room-task-service.js.map +1 -0
  159. package/lib/room/room-task.d.ts +143 -0
  160. package/lib/room/room-task.d.ts.map +1 -0
  161. package/lib/room/room-task.js +315 -0
  162. package/lib/room/room-task.js.map +1 -0
  163. package/lib/room/validate-room.d.ts +15 -0
  164. package/lib/room/validate-room.d.ts.map +1 -0
  165. package/lib/room/validate-room.js +314 -0
  166. package/lib/room/validate-room.js.map +1 -0
  167. package/lib/scheduler.d.ts +20 -0
  168. package/lib/scheduler.d.ts.map +1 -0
  169. package/lib/scheduler.js +20 -0
  170. package/lib/scheduler.js.map +1 -0
  171. package/lib/workroom/acceptance-control.d.ts +77 -0
  172. package/lib/workroom/acceptance-control.d.ts.map +1 -0
  173. package/lib/workroom/acceptance-control.js +345 -0
  174. package/lib/workroom/acceptance-control.js.map +1 -0
  175. package/lib/workroom/acceptance-policy.d.ts +152 -0
  176. package/lib/workroom/acceptance-policy.d.ts.map +1 -0
  177. package/lib/workroom/acceptance-policy.js +610 -0
  178. package/lib/workroom/acceptance-policy.js.map +1 -0
  179. package/lib/workroom/accepted-source-memory-application.d.ts +113 -0
  180. package/lib/workroom/accepted-source-memory-application.d.ts.map +1 -0
  181. package/lib/workroom/accepted-source-memory-application.js +327 -0
  182. package/lib/workroom/accepted-source-memory-application.js.map +1 -0
  183. package/lib/workroom/accepted-source-projector.d.ts +89 -0
  184. package/lib/workroom/accepted-source-projector.d.ts.map +1 -0
  185. package/lib/workroom/accepted-source-projector.js +281 -0
  186. package/lib/workroom/accepted-source-projector.js.map +1 -0
  187. package/lib/workroom/assignment-authority-grant-application.d.ts +125 -0
  188. package/lib/workroom/assignment-authority-grant-application.d.ts.map +1 -0
  189. package/lib/workroom/assignment-authority-grant-application.js +318 -0
  190. package/lib/workroom/assignment-authority-grant-application.js.map +1 -0
  191. package/lib/workroom/assignment-authority-grant-repository.d.ts +152 -0
  192. package/lib/workroom/assignment-authority-grant-repository.d.ts.map +1 -0
  193. package/lib/workroom/assignment-authority-grant-repository.js +389 -0
  194. package/lib/workroom/assignment-authority-grant-repository.js.map +1 -0
  195. package/lib/workroom/assignment-authority.d.ts +75 -0
  196. package/lib/workroom/assignment-authority.d.ts.map +1 -0
  197. package/lib/workroom/assignment-authority.js +179 -0
  198. package/lib/workroom/assignment-authority.js.map +1 -0
  199. package/lib/workroom/assignment-executor.d.ts +110 -0
  200. package/lib/workroom/assignment-executor.d.ts.map +1 -0
  201. package/lib/workroom/assignment-executor.js +371 -0
  202. package/lib/workroom/assignment-executor.js.map +1 -0
  203. package/lib/workroom/assignment-observation-ingress.d.ts +21 -0
  204. package/lib/workroom/assignment-observation-ingress.d.ts.map +1 -0
  205. package/lib/workroom/assignment-observation-ingress.js +24 -0
  206. package/lib/workroom/assignment-observation-ingress.js.map +1 -0
  207. package/lib/workroom/canonical-value.d.ts +2 -0
  208. package/lib/workroom/canonical-value.d.ts.map +1 -0
  209. package/lib/workroom/canonical-value.js +2 -0
  210. package/lib/workroom/canonical-value.js.map +1 -0
  211. package/lib/workroom/catalog-definition.d.ts +52 -0
  212. package/lib/workroom/catalog-definition.d.ts.map +1 -0
  213. package/lib/workroom/catalog-definition.js +6 -0
  214. package/lib/workroom/catalog-definition.js.map +1 -0
  215. package/lib/workroom/catalog.d.ts +80 -0
  216. package/lib/workroom/catalog.d.ts.map +1 -0
  217. package/lib/workroom/catalog.js +386 -0
  218. package/lib/workroom/catalog.js.map +1 -0
  219. package/lib/workroom/coding-assignment-executor.d.ts +90 -0
  220. package/lib/workroom/coding-assignment-executor.d.ts.map +1 -0
  221. package/lib/workroom/coding-assignment-executor.js +250 -0
  222. package/lib/workroom/coding-assignment-executor.js.map +1 -0
  223. package/lib/workroom/coding-git-objects.d.ts +17 -0
  224. package/lib/workroom/coding-git-objects.d.ts.map +1 -0
  225. package/lib/workroom/coding-git-objects.js +68 -0
  226. package/lib/workroom/coding-git-objects.js.map +1 -0
  227. package/lib/workroom/database-project-knowledge-journal.d.ts +62 -0
  228. package/lib/workroom/database-project-knowledge-journal.d.ts.map +1 -0
  229. package/lib/workroom/database-project-knowledge-journal.js +161 -0
  230. package/lib/workroom/database-project-knowledge-journal.js.map +1 -0
  231. package/lib/workroom/durable-file-store.d.ts +2 -0
  232. package/lib/workroom/durable-file-store.d.ts.map +1 -0
  233. package/lib/workroom/durable-file-store.js +2 -0
  234. package/lib/workroom/durable-file-store.js.map +1 -0
  235. package/lib/workroom/dynamic-workflow-planner.d.ts +86 -0
  236. package/lib/workroom/dynamic-workflow-planner.d.ts.map +1 -0
  237. package/lib/workroom/dynamic-workflow-planner.js +260 -0
  238. package/lib/workroom/dynamic-workflow-planner.js.map +1 -0
  239. package/lib/workroom/effect-blocker-repository.d.ts +51 -0
  240. package/lib/workroom/effect-blocker-repository.d.ts.map +1 -0
  241. package/lib/workroom/effect-blocker-repository.js +174 -0
  242. package/lib/workroom/effect-blocker-repository.js.map +1 -0
  243. package/lib/workroom/effect-ledger.d.ts +211 -0
  244. package/lib/workroom/effect-ledger.d.ts.map +1 -0
  245. package/lib/workroom/effect-ledger.js +484 -0
  246. package/lib/workroom/effect-ledger.js.map +1 -0
  247. package/lib/workroom/file-accepted-source-memory-repository.d.ts +15 -0
  248. package/lib/workroom/file-accepted-source-memory-repository.d.ts.map +1 -0
  249. package/lib/workroom/file-accepted-source-memory-repository.js +136 -0
  250. package/lib/workroom/file-accepted-source-memory-repository.js.map +1 -0
  251. package/lib/workroom/file-coding-execution-store.d.ts +25 -0
  252. package/lib/workroom/file-coding-execution-store.d.ts.map +1 -0
  253. package/lib/workroom/file-coding-execution-store.js +122 -0
  254. package/lib/workroom/file-coding-execution-store.js.map +1 -0
  255. package/lib/workroom/file-effect-ledger.d.ts +10 -0
  256. package/lib/workroom/file-effect-ledger.d.ts.map +1 -0
  257. package/lib/workroom/file-effect-ledger.js +121 -0
  258. package/lib/workroom/file-effect-ledger.js.map +1 -0
  259. package/lib/workroom/file-human-ingress-application.d.ts +10 -0
  260. package/lib/workroom/file-human-ingress-application.d.ts.map +1 -0
  261. package/lib/workroom/file-human-ingress-application.js +177 -0
  262. package/lib/workroom/file-human-ingress-application.js.map +1 -0
  263. package/lib/workroom/file-human-ingress.d.ts +24 -0
  264. package/lib/workroom/file-human-ingress.d.ts.map +1 -0
  265. package/lib/workroom/file-human-ingress.js +234 -0
  266. package/lib/workroom/file-human-ingress.js.map +1 -0
  267. package/lib/workroom/file-interaction-space-binding-repository.d.ts +24 -0
  268. package/lib/workroom/file-interaction-space-binding-repository.d.ts.map +1 -0
  269. package/lib/workroom/file-interaction-space-binding-repository.js +293 -0
  270. package/lib/workroom/file-interaction-space-binding-repository.js.map +1 -0
  271. package/lib/workroom/file-profile-journal.d.ts +33 -0
  272. package/lib/workroom/file-profile-journal.d.ts.map +1 -0
  273. package/lib/workroom/file-profile-journal.js +311 -0
  274. package/lib/workroom/file-profile-journal.js.map +1 -0
  275. package/lib/workroom/git-workspace-gateway.d.ts +152 -0
  276. package/lib/workroom/git-workspace-gateway.d.ts.map +1 -0
  277. package/lib/workroom/git-workspace-gateway.js +257 -0
  278. package/lib/workroom/git-workspace-gateway.js.map +1 -0
  279. package/lib/workroom/github-workspace-transport.d.ts +30 -0
  280. package/lib/workroom/github-workspace-transport.d.ts.map +1 -0
  281. package/lib/workroom/github-workspace-transport.js +224 -0
  282. package/lib/workroom/github-workspace-transport.js.map +1 -0
  283. package/lib/workroom/governed-dispatch-reasons.d.ts +10 -0
  284. package/lib/workroom/governed-dispatch-reasons.d.ts.map +1 -0
  285. package/lib/workroom/governed-dispatch-reasons.js +20 -0
  286. package/lib/workroom/governed-dispatch-reasons.js.map +1 -0
  287. package/lib/workroom/human-ingress-application.d.ts +128 -0
  288. package/lib/workroom/human-ingress-application.d.ts.map +1 -0
  289. package/lib/workroom/human-ingress-application.js +415 -0
  290. package/lib/workroom/human-ingress-application.js.map +1 -0
  291. package/lib/workroom/human-ingress-orchestrator.d.ts +99 -0
  292. package/lib/workroom/human-ingress-orchestrator.d.ts.map +1 -0
  293. package/lib/workroom/human-ingress-orchestrator.js +262 -0
  294. package/lib/workroom/human-ingress-orchestrator.js.map +1 -0
  295. package/lib/workroom/human-ingress-source-reader.d.ts +29 -0
  296. package/lib/workroom/human-ingress-source-reader.d.ts.map +1 -0
  297. package/lib/workroom/human-ingress-source-reader.js +126 -0
  298. package/lib/workroom/human-ingress-source-reader.js.map +1 -0
  299. package/lib/workroom/human-ingress.d.ts +182 -0
  300. package/lib/workroom/human-ingress.d.ts.map +1 -0
  301. package/lib/workroom/human-ingress.js +526 -0
  302. package/lib/workroom/human-ingress.js.map +1 -0
  303. package/lib/workroom/interaction-space-binding-service.d.ts +57 -0
  304. package/lib/workroom/interaction-space-binding-service.d.ts.map +1 -0
  305. package/lib/workroom/interaction-space-binding-service.js +197 -0
  306. package/lib/workroom/interaction-space-binding-service.js.map +1 -0
  307. package/lib/workroom/interaction-space-router.d.ts +75 -0
  308. package/lib/workroom/interaction-space-router.d.ts.map +1 -0
  309. package/lib/workroom/interaction-space-router.js +243 -0
  310. package/lib/workroom/interaction-space-router.js.map +1 -0
  311. package/lib/workroom/journal/activatable-journal.d.ts +15 -0
  312. package/lib/workroom/journal/activatable-journal.d.ts.map +1 -0
  313. package/lib/workroom/journal/activatable-journal.js +39 -0
  314. package/lib/workroom/journal/activatable-journal.js.map +1 -0
  315. package/lib/workroom/journal/contracts.d.ts +141 -0
  316. package/lib/workroom/journal/contracts.d.ts.map +1 -0
  317. package/lib/workroom/journal/contracts.js +19 -0
  318. package/lib/workroom/journal/contracts.js.map +1 -0
  319. package/lib/workroom/journal/database-journal.d.ts +31 -0
  320. package/lib/workroom/journal/database-journal.d.ts.map +1 -0
  321. package/lib/workroom/journal/database-journal.js +114 -0
  322. package/lib/workroom/journal/database-journal.js.map +1 -0
  323. package/lib/workroom/journal/event-codec.d.ts +26 -0
  324. package/lib/workroom/journal/event-codec.d.ts.map +1 -0
  325. package/lib/workroom/journal/event-codec.js +241 -0
  326. package/lib/workroom/journal/event-codec.js.map +1 -0
  327. package/lib/workroom/journal/event-validation.d.ts +10 -0
  328. package/lib/workroom/journal/event-validation.d.ts.map +1 -0
  329. package/lib/workroom/journal/event-validation.js +671 -0
  330. package/lib/workroom/journal/event-validation.js.map +1 -0
  331. package/lib/workroom/journal/file-journal.d.ts +15 -0
  332. package/lib/workroom/journal/file-journal.d.ts.map +1 -0
  333. package/lib/workroom/journal/file-journal.js +272 -0
  334. package/lib/workroom/journal/file-journal.js.map +1 -0
  335. package/lib/workroom/journal/index.d.ts +12 -0
  336. package/lib/workroom/journal/index.d.ts.map +1 -0
  337. package/lib/workroom/journal/index.js +10 -0
  338. package/lib/workroom/journal/index.js.map +1 -0
  339. package/lib/workroom/journal/legacy-payload-guard.d.ts +16 -0
  340. package/lib/workroom/journal/legacy-payload-guard.d.ts.map +1 -0
  341. package/lib/workroom/journal/legacy-payload-guard.js +172 -0
  342. package/lib/workroom/journal/legacy-payload-guard.js.map +1 -0
  343. package/lib/workroom/journal/memory-journal.d.ts +27 -0
  344. package/lib/workroom/journal/memory-journal.d.ts.map +1 -0
  345. package/lib/workroom/journal/memory-journal.js +103 -0
  346. package/lib/workroom/journal/memory-journal.js.map +1 -0
  347. package/lib/workroom/journal/payload-governance.d.ts +29 -0
  348. package/lib/workroom/journal/payload-governance.d.ts.map +1 -0
  349. package/lib/workroom/journal/payload-governance.js +282 -0
  350. package/lib/workroom/journal/payload-governance.js.map +1 -0
  351. package/lib/workroom/journal/payload-reference.d.ts +9 -0
  352. package/lib/workroom/journal/payload-reference.d.ts.map +1 -0
  353. package/lib/workroom/journal/payload-reference.js +60 -0
  354. package/lib/workroom/journal/payload-reference.js.map +1 -0
  355. package/lib/workroom/journal/stored-event-projection.d.ts +6 -0
  356. package/lib/workroom/journal/stored-event-projection.d.ts.map +1 -0
  357. package/lib/workroom/journal/stored-event-projection.js +280 -0
  358. package/lib/workroom/journal/stored-event-projection.js.map +1 -0
  359. package/lib/workroom/journal-model.d.ts +40 -0
  360. package/lib/workroom/journal-model.d.ts.map +1 -0
  361. package/lib/workroom/journal-model.js +12 -0
  362. package/lib/workroom/journal-model.js.map +1 -0
  363. package/lib/workroom/kernel-contracts.d.ts +168 -0
  364. package/lib/workroom/kernel-contracts.d.ts.map +1 -0
  365. package/lib/workroom/kernel-contracts.js +2 -0
  366. package/lib/workroom/kernel-contracts.js.map +1 -0
  367. package/lib/workroom/kernel-state.d.ts +5 -0
  368. package/lib/workroom/kernel-state.d.ts.map +1 -0
  369. package/lib/workroom/kernel-state.js +885 -0
  370. package/lib/workroom/kernel-state.js.map +1 -0
  371. package/lib/workroom/local-assignment-issuance.d.ts +68 -0
  372. package/lib/workroom/local-assignment-issuance.d.ts.map +1 -0
  373. package/lib/workroom/local-assignment-issuance.js +128 -0
  374. package/lib/workroom/local-assignment-issuance.js.map +1 -0
  375. package/lib/workroom/plan-approval-control.d.ts +52 -0
  376. package/lib/workroom/plan-approval-control.d.ts.map +1 -0
  377. package/lib/workroom/plan-approval-control.js +9 -0
  378. package/lib/workroom/plan-approval-control.js.map +1 -0
  379. package/lib/workroom/plan-revision.d.ts +44 -0
  380. package/lib/workroom/plan-revision.d.ts.map +1 -0
  381. package/lib/workroom/plan-revision.js +133 -0
  382. package/lib/workroom/plan-revision.js.map +1 -0
  383. package/lib/workroom/profile-compiler.d.ts +130 -0
  384. package/lib/workroom/profile-compiler.d.ts.map +1 -0
  385. package/lib/workroom/profile-compiler.js +357 -0
  386. package/lib/workroom/profile-compiler.js.map +1 -0
  387. package/lib/workroom/profile-registry.d.ts +191 -0
  388. package/lib/workroom/profile-registry.d.ts.map +1 -0
  389. package/lib/workroom/profile-registry.js +698 -0
  390. package/lib/workroom/profile-registry.js.map +1 -0
  391. package/lib/workroom/project-knowledge-registry.d.ts +136 -0
  392. package/lib/workroom/project-knowledge-registry.d.ts.map +1 -0
  393. package/lib/workroom/project-knowledge-registry.js +429 -0
  394. package/lib/workroom/project-knowledge-registry.js.map +1 -0
  395. package/lib/workroom/projection-outbox/contracts.d.ts +195 -0
  396. package/lib/workroom/projection-outbox/contracts.d.ts.map +1 -0
  397. package/lib/workroom/projection-outbox/contracts.js +11 -0
  398. package/lib/workroom/projection-outbox/contracts.js.map +1 -0
  399. package/lib/workroom/projection-outbox/delivery-worker.d.ts +22 -0
  400. package/lib/workroom/projection-outbox/delivery-worker.d.ts.map +1 -0
  401. package/lib/workroom/projection-outbox/delivery-worker.js +96 -0
  402. package/lib/workroom/projection-outbox/delivery-worker.js.map +1 -0
  403. package/lib/workroom/projection-outbox/file-repository.d.ts +11 -0
  404. package/lib/workroom/projection-outbox/file-repository.d.ts.map +1 -0
  405. package/lib/workroom/projection-outbox/file-repository.js +89 -0
  406. package/lib/workroom/projection-outbox/file-repository.js.map +1 -0
  407. package/lib/workroom/projection-outbox/index.d.ts +10 -0
  408. package/lib/workroom/projection-outbox/index.d.ts.map +1 -0
  409. package/lib/workroom/projection-outbox/index.js +8 -0
  410. package/lib/workroom/projection-outbox/index.js.map +1 -0
  411. package/lib/workroom/projection-outbox/memory-repository.d.ts +11 -0
  412. package/lib/workroom/projection-outbox/memory-repository.d.ts.map +1 -0
  413. package/lib/workroom/projection-outbox/memory-repository.js +40 -0
  414. package/lib/workroom/projection-outbox/memory-repository.js.map +1 -0
  415. package/lib/workroom/projection-outbox/projector.d.ts +36 -0
  416. package/lib/workroom/projection-outbox/projector.d.ts.map +1 -0
  417. package/lib/workroom/projection-outbox/projector.js +517 -0
  418. package/lib/workroom/projection-outbox/projector.js.map +1 -0
  419. package/lib/workroom/projection-outbox/repository-state.d.ts +17 -0
  420. package/lib/workroom/projection-outbox/repository-state.d.ts.map +1 -0
  421. package/lib/workroom/projection-outbox/repository-state.js +343 -0
  422. package/lib/workroom/projection-outbox/repository-state.js.map +1 -0
  423. package/lib/workroom/projection-outbox/tracer.d.ts +19 -0
  424. package/lib/workroom/projection-outbox/tracer.d.ts.map +1 -0
  425. package/lib/workroom/projection-outbox/tracer.js +201 -0
  426. package/lib/workroom/projection-outbox/tracer.js.map +1 -0
  427. package/lib/workroom/remote-assignment-dispatch-command.d.ts +31 -0
  428. package/lib/workroom/remote-assignment-dispatch-command.d.ts.map +1 -0
  429. package/lib/workroom/remote-assignment-dispatch-command.js +56 -0
  430. package/lib/workroom/remote-assignment-dispatch-command.js.map +1 -0
  431. package/lib/workroom/remote-assignment-issuance.d.ts +88 -0
  432. package/lib/workroom/remote-assignment-issuance.d.ts.map +1 -0
  433. package/lib/workroom/remote-assignment-issuance.js +201 -0
  434. package/lib/workroom/remote-assignment-issuance.js.map +1 -0
  435. package/lib/workroom/remote-callback-application.d.ts +115 -0
  436. package/lib/workroom/remote-callback-application.d.ts.map +1 -0
  437. package/lib/workroom/remote-callback-application.js +570 -0
  438. package/lib/workroom/remote-callback-application.js.map +1 -0
  439. package/lib/workroom/remote-callback-gateway.d.ts +60 -0
  440. package/lib/workroom/remote-callback-gateway.d.ts.map +1 -0
  441. package/lib/workroom/remote-callback-gateway.js +173 -0
  442. package/lib/workroom/remote-callback-gateway.js.map +1 -0
  443. package/lib/workroom/remote-callback-inbox.d.ts +278 -0
  444. package/lib/workroom/remote-callback-inbox.d.ts.map +1 -0
  445. package/lib/workroom/remote-callback-inbox.js +1088 -0
  446. package/lib/workroom/remote-callback-inbox.js.map +1 -0
  447. package/lib/workroom/remote-callback-reconciliation-worker.d.ts +60 -0
  448. package/lib/workroom/remote-callback-reconciliation-worker.d.ts.map +1 -0
  449. package/lib/workroom/remote-callback-reconciliation-worker.js +197 -0
  450. package/lib/workroom/remote-callback-reconciliation-worker.js.map +1 -0
  451. package/lib/workroom/remote-dispatch-admission.d.ts +45 -0
  452. package/lib/workroom/remote-dispatch-admission.d.ts.map +1 -0
  453. package/lib/workroom/remote-dispatch-admission.js +187 -0
  454. package/lib/workroom/remote-dispatch-admission.js.map +1 -0
  455. package/lib/workroom/remote-dispatch-outbox.d.ts +204 -0
  456. package/lib/workroom/remote-dispatch-outbox.d.ts.map +1 -0
  457. package/lib/workroom/remote-dispatch-outbox.js +768 -0
  458. package/lib/workroom/remote-dispatch-outbox.js.map +1 -0
  459. package/lib/workroom/remote-dispatch-scheduler.d.ts +36 -0
  460. package/lib/workroom/remote-dispatch-scheduler.d.ts.map +1 -0
  461. package/lib/workroom/remote-dispatch-scheduler.js +133 -0
  462. package/lib/workroom/remote-dispatch-scheduler.js.map +1 -0
  463. package/lib/workroom/remote-dispatch-worker.d.ts +22 -0
  464. package/lib/workroom/remote-dispatch-worker.d.ts.map +1 -0
  465. package/lib/workroom/remote-dispatch-worker.js +124 -0
  466. package/lib/workroom/remote-dispatch-worker.js.map +1 -0
  467. package/lib/workroom/remote-dispatch.d.ts +79 -0
  468. package/lib/workroom/remote-dispatch.d.ts.map +1 -0
  469. package/lib/workroom/remote-dispatch.js +220 -0
  470. package/lib/workroom/remote-dispatch.js.map +1 -0
  471. package/lib/workroom/remote-executor.d.ts +15 -0
  472. package/lib/workroom/remote-executor.d.ts.map +1 -0
  473. package/lib/workroom/remote-executor.js +21 -0
  474. package/lib/workroom/remote-executor.js.map +1 -0
  475. package/lib/workroom/role-capability-snapshot.d.ts +88 -0
  476. package/lib/workroom/role-capability-snapshot.d.ts.map +1 -0
  477. package/lib/workroom/role-capability-snapshot.js +456 -0
  478. package/lib/workroom/role-capability-snapshot.js.map +1 -0
  479. package/lib/workroom/runtime.d.ts +142 -0
  480. package/lib/workroom/runtime.d.ts.map +1 -0
  481. package/lib/workroom/runtime.js +543 -0
  482. package/lib/workroom/runtime.js.map +1 -0
  483. package/lib/workroom/scheduler-priority-control.d.ts +35 -0
  484. package/lib/workroom/scheduler-priority-control.d.ts.map +1 -0
  485. package/lib/workroom/scheduler-priority-control.js +9 -0
  486. package/lib/workroom/scheduler-priority-control.js.map +1 -0
  487. package/lib/workroom/software-delivery-plan.d.ts +32 -0
  488. package/lib/workroom/software-delivery-plan.d.ts.map +1 -0
  489. package/lib/workroom/software-delivery-plan.js +60 -0
  490. package/lib/workroom/software-delivery-plan.js.map +1 -0
  491. package/lib/workroom/validate-catalog.d.ts +2 -0
  492. package/lib/workroom/validate-catalog.d.ts.map +1 -0
  493. package/lib/workroom/validate-catalog.js +230 -0
  494. package/lib/workroom/validate-catalog.js.map +1 -0
  495. package/lib/workroom/workflow-plan-builder.d.ts +88 -0
  496. package/lib/workroom/workflow-plan-builder.d.ts.map +1 -0
  497. package/lib/workroom/workflow-plan-builder.js +232 -0
  498. package/lib/workroom/workflow-plan-builder.js.map +1 -0
  499. package/lib/workroom/workroom-assignment-knowledge-context.d.ts +102 -0
  500. package/lib/workroom/workroom-assignment-knowledge-context.d.ts.map +1 -0
  501. package/lib/workroom/workroom-assignment-knowledge-context.js +127 -0
  502. package/lib/workroom/workroom-assignment-knowledge-context.js.map +1 -0
  503. package/lib/workroom/workroom-kernel.d.ts +157 -0
  504. package/lib/workroom/workroom-kernel.d.ts.map +1 -0
  505. package/lib/workroom/workroom-kernel.js +1526 -0
  506. package/lib/workroom/workroom-kernel.js.map +1 -0
  507. package/lib/workroom/workroom-preemption.d.ts +65 -0
  508. package/lib/workroom/workroom-preemption.d.ts.map +1 -0
  509. package/lib/workroom/workroom-preemption.js +213 -0
  510. package/lib/workroom/workroom-preemption.js.map +1 -0
  511. package/lib/workroom/workroom-run-control.d.ts +69 -0
  512. package/lib/workroom/workroom-run-control.d.ts.map +1 -0
  513. package/lib/workroom/workroom-run-control.js +144 -0
  514. package/lib/workroom/workroom-run-control.js.map +1 -0
  515. package/lib/workroom/workroom-scheduler-application.d.ts +43 -0
  516. package/lib/workroom/workroom-scheduler-application.d.ts.map +1 -0
  517. package/lib/workroom/workroom-scheduler-application.js +71 -0
  518. package/lib/workroom/workroom-scheduler-application.js.map +1 -0
  519. package/lib/workroom/workroom-scheduler.d.ts +135 -0
  520. package/lib/workroom/workroom-scheduler.d.ts.map +1 -0
  521. package/lib/workroom/workroom-scheduler.js +660 -0
  522. package/lib/workroom/workroom-scheduler.js.map +1 -0
  523. package/lib/workroom/workroom-task-report-store.d.ts +131 -0
  524. package/lib/workroom/workroom-task-report-store.d.ts.map +1 -0
  525. package/lib/workroom/workroom-task-report-store.js +528 -0
  526. package/lib/workroom/workroom-task-report-store.js.map +1 -0
  527. package/lib/workroom-runtime/database-overlay-pack-promotion-repository.d.ts +70 -0
  528. package/lib/workroom-runtime/database-overlay-pack-promotion-repository.d.ts.map +1 -0
  529. package/lib/workroom-runtime/database-overlay-pack-promotion-repository.js +203 -0
  530. package/lib/workroom-runtime/database-overlay-pack-promotion-repository.js.map +1 -0
  531. package/lib/workroom-runtime/github-actions-delivery-provider.d.ts +44 -0
  532. package/lib/workroom-runtime/github-actions-delivery-provider.d.ts.map +1 -0
  533. package/lib/workroom-runtime/github-actions-delivery-provider.js +246 -0
  534. package/lib/workroom-runtime/github-actions-delivery-provider.js.map +1 -0
  535. package/lib/workroom-runtime/github-exact-merge-gateway.d.ts +62 -0
  536. package/lib/workroom-runtime/github-exact-merge-gateway.d.ts.map +1 -0
  537. package/lib/workroom-runtime/github-exact-merge-gateway.js +79 -0
  538. package/lib/workroom-runtime/github-exact-merge-gateway.js.map +1 -0
  539. package/lib/workroom-runtime/github-workroom-capability.d.ts +15 -0
  540. package/lib/workroom-runtime/github-workroom-capability.d.ts.map +1 -0
  541. package/lib/workroom-runtime/github-workroom-capability.js +79 -0
  542. package/lib/workroom-runtime/github-workroom-capability.js.map +1 -0
  543. package/lib/workroom-runtime/self-delivery-project-composition.d.ts +25 -0
  544. package/lib/workroom-runtime/self-delivery-project-composition.d.ts.map +1 -0
  545. package/lib/workroom-runtime/self-delivery-project-composition.js +85 -0
  546. package/lib/workroom-runtime/self-delivery-project-composition.js.map +1 -0
  547. package/lib/workroom-runtime/self-delivery-project.d.ts +65 -0
  548. package/lib/workroom-runtime/self-delivery-project.d.ts.map +1 -0
  549. package/lib/workroom-runtime/self-delivery-project.js +140 -0
  550. package/lib/workroom-runtime/self-delivery-project.js.map +1 -0
  551. package/lib/workroom-runtime/workroom-acceptance-authority.d.ts +5 -0
  552. package/lib/workroom-runtime/workroom-acceptance-authority.d.ts.map +1 -0
  553. package/lib/workroom-runtime/workroom-acceptance-authority.js +14 -0
  554. package/lib/workroom-runtime/workroom-acceptance-authority.js.map +1 -0
  555. package/lib/workroom-runtime/workroom-acceptance-fact-providers.d.ts +233 -0
  556. package/lib/workroom-runtime/workroom-acceptance-fact-providers.d.ts.map +1 -0
  557. package/lib/workroom-runtime/workroom-acceptance-fact-providers.js +517 -0
  558. package/lib/workroom-runtime/workroom-acceptance-fact-providers.js.map +1 -0
  559. package/lib/workroom-runtime/workroom-acceptance-internal-providers.d.ts +139 -0
  560. package/lib/workroom-runtime/workroom-acceptance-internal-providers.d.ts.map +1 -0
  561. package/lib/workroom-runtime/workroom-acceptance-internal-providers.js +435 -0
  562. package/lib/workroom-runtime/workroom-acceptance-internal-providers.js.map +1 -0
  563. package/lib/workroom-runtime/workroom-acceptance-policy.d.ts +4 -0
  564. package/lib/workroom-runtime/workroom-acceptance-policy.d.ts.map +1 -0
  565. package/lib/workroom-runtime/workroom-acceptance-policy.js +20 -0
  566. package/lib/workroom-runtime/workroom-acceptance-policy.js.map +1 -0
  567. package/lib/workroom-runtime/workroom-acceptance-production-composition.d.ts +177 -0
  568. package/lib/workroom-runtime/workroom-acceptance-production-composition.d.ts.map +1 -0
  569. package/lib/workroom-runtime/workroom-acceptance-production-composition.js +794 -0
  570. package/lib/workroom-runtime/workroom-acceptance-production-composition.js.map +1 -0
  571. package/lib/workroom-runtime/workroom-acceptance-provider-composition.d.ts +189 -0
  572. package/lib/workroom-runtime/workroom-acceptance-provider-composition.d.ts.map +1 -0
  573. package/lib/workroom-runtime/workroom-acceptance-provider-composition.js +590 -0
  574. package/lib/workroom-runtime/workroom-acceptance-provider-composition.js.map +1 -0
  575. package/lib/workroom-runtime/workroom-accepted-source-runtime.d.ts +75 -0
  576. package/lib/workroom-runtime/workroom-accepted-source-runtime.d.ts.map +1 -0
  577. package/lib/workroom-runtime/workroom-accepted-source-runtime.js +267 -0
  578. package/lib/workroom-runtime/workroom-accepted-source-runtime.js.map +1 -0
  579. package/lib/workroom-runtime/workroom-assignment-authority-grant-runtime.d.ts +42 -0
  580. package/lib/workroom-runtime/workroom-assignment-authority-grant-runtime.d.ts.map +1 -0
  581. package/lib/workroom-runtime/workroom-assignment-authority-grant-runtime.js +90 -0
  582. package/lib/workroom-runtime/workroom-assignment-authority-grant-runtime.js.map +1 -0
  583. package/lib/workroom-runtime/workroom-assignment-authority-provider.d.ts +84 -0
  584. package/lib/workroom-runtime/workroom-assignment-authority-provider.d.ts.map +1 -0
  585. package/lib/workroom-runtime/workroom-assignment-authority-provider.js +494 -0
  586. package/lib/workroom-runtime/workroom-assignment-authority-provider.js.map +1 -0
  587. package/lib/workroom-runtime/workroom-assignment-knowledge-composition.d.ts +58 -0
  588. package/lib/workroom-runtime/workroom-assignment-knowledge-composition.d.ts.map +1 -0
  589. package/lib/workroom-runtime/workroom-assignment-knowledge-composition.js +218 -0
  590. package/lib/workroom-runtime/workroom-assignment-knowledge-composition.js.map +1 -0
  591. package/lib/workroom-runtime/workroom-bot-identity.d.ts +22 -0
  592. package/lib/workroom-runtime/workroom-bot-identity.d.ts.map +1 -0
  593. package/lib/workroom-runtime/workroom-bot-identity.js +53 -0
  594. package/lib/workroom-runtime/workroom-bot-identity.js.map +1 -0
  595. package/lib/workroom-runtime/workroom-capability-realization.d.ts +23 -0
  596. package/lib/workroom-runtime/workroom-capability-realization.d.ts.map +1 -0
  597. package/lib/workroom-runtime/workroom-capability-realization.js +74 -0
  598. package/lib/workroom-runtime/workroom-capability-realization.js.map +1 -0
  599. package/lib/workroom-runtime/workroom-data-governance-authority-writer.d.ts +49 -0
  600. package/lib/workroom-runtime/workroom-data-governance-authority-writer.d.ts.map +1 -0
  601. package/lib/workroom-runtime/workroom-data-governance-authority-writer.js +140 -0
  602. package/lib/workroom-runtime/workroom-data-governance-authority-writer.js.map +1 -0
  603. package/lib/workroom-runtime/workroom-data-governance-bootstrap.d.ts +27 -0
  604. package/lib/workroom-runtime/workroom-data-governance-bootstrap.d.ts.map +1 -0
  605. package/lib/workroom-runtime/workroom-data-governance-bootstrap.js +324 -0
  606. package/lib/workroom-runtime/workroom-data-governance-bootstrap.js.map +1 -0
  607. package/lib/workroom-runtime/workroom-data-governance-composition.d.ts +28 -0
  608. package/lib/workroom-runtime/workroom-data-governance-composition.d.ts.map +1 -0
  609. package/lib/workroom-runtime/workroom-data-governance-composition.js +41 -0
  610. package/lib/workroom-runtime/workroom-data-governance-composition.js.map +1 -0
  611. package/lib/workroom-runtime/workroom-data-governance-root-provider.d.ts +51 -0
  612. package/lib/workroom-runtime/workroom-data-governance-root-provider.d.ts.map +1 -0
  613. package/lib/workroom-runtime/workroom-data-governance-root-provider.js +66 -0
  614. package/lib/workroom-runtime/workroom-data-governance-root-provider.js.map +1 -0
  615. package/lib/workroom-runtime/workroom-data-governance-runtime.d.ts +100 -0
  616. package/lib/workroom-runtime/workroom-data-governance-runtime.d.ts.map +1 -0
  617. package/lib/workroom-runtime/workroom-data-governance-runtime.js +1356 -0
  618. package/lib/workroom-runtime/workroom-data-governance-runtime.js.map +1 -0
  619. package/lib/workroom-runtime/workroom-data-governance-storage.d.ts +66 -0
  620. package/lib/workroom-runtime/workroom-data-governance-storage.d.ts.map +1 -0
  621. package/lib/workroom-runtime/workroom-data-governance-storage.js +159 -0
  622. package/lib/workroom-runtime/workroom-data-governance-storage.js.map +1 -0
  623. package/lib/workroom-runtime/workroom-data-lifecycle-composition.d.ts +37 -0
  624. package/lib/workroom-runtime/workroom-data-lifecycle-composition.d.ts.map +1 -0
  625. package/lib/workroom-runtime/workroom-data-lifecycle-composition.js +131 -0
  626. package/lib/workroom-runtime/workroom-data-lifecycle-composition.js.map +1 -0
  627. package/lib/workroom-runtime/workroom-data-lifecycle-console.d.ts +238 -0
  628. package/lib/workroom-runtime/workroom-data-lifecycle-console.d.ts.map +1 -0
  629. package/lib/workroom-runtime/workroom-data-lifecycle-console.js +495 -0
  630. package/lib/workroom-runtime/workroom-data-lifecycle-console.js.map +1 -0
  631. package/lib/workroom-runtime/workroom-data-lifecycle-human-ingress.d.ts +15 -0
  632. package/lib/workroom-runtime/workroom-data-lifecycle-human-ingress.d.ts.map +1 -0
  633. package/lib/workroom-runtime/workroom-data-lifecycle-human-ingress.js +119 -0
  634. package/lib/workroom-runtime/workroom-data-lifecycle-human-ingress.js.map +1 -0
  635. package/lib/workroom-runtime/workroom-database-models.d.ts +4 -0
  636. package/lib/workroom-runtime/workroom-database-models.d.ts.map +1 -0
  637. package/lib/workroom-runtime/workroom-database-models.js +34 -0
  638. package/lib/workroom-runtime/workroom-database-models.js.map +1 -0
  639. package/lib/workroom-runtime/workroom-database-storage.d.ts +14 -0
  640. package/lib/workroom-runtime/workroom-database-storage.d.ts.map +1 -0
  641. package/lib/workroom-runtime/workroom-database-storage.js +30 -0
  642. package/lib/workroom-runtime/workroom-database-storage.js.map +1 -0
  643. package/lib/workroom-runtime/workroom-delivery-gateway.d.ts +96 -0
  644. package/lib/workroom-runtime/workroom-delivery-gateway.d.ts.map +1 -0
  645. package/lib/workroom-runtime/workroom-delivery-gateway.js +129 -0
  646. package/lib/workroom-runtime/workroom-delivery-gateway.js.map +1 -0
  647. package/lib/workroom-runtime/workroom-dynamic-planning-provider.d.ts +142 -0
  648. package/lib/workroom-runtime/workroom-dynamic-planning-provider.d.ts.map +1 -0
  649. package/lib/workroom-runtime/workroom-dynamic-planning-provider.js +302 -0
  650. package/lib/workroom-runtime/workroom-dynamic-planning-provider.js.map +1 -0
  651. package/lib/workroom-runtime/workroom-dynamic-planning.d.ts +4 -0
  652. package/lib/workroom-runtime/workroom-dynamic-planning.d.ts.map +1 -0
  653. package/lib/workroom-runtime/workroom-dynamic-planning.js +13 -0
  654. package/lib/workroom-runtime/workroom-dynamic-planning.js.map +1 -0
  655. package/lib/workroom-runtime/workroom-effect-composition.d.ts +37 -0
  656. package/lib/workroom-runtime/workroom-effect-composition.d.ts.map +1 -0
  657. package/lib/workroom-runtime/workroom-effect-composition.js +80 -0
  658. package/lib/workroom-runtime/workroom-effect-composition.js.map +1 -0
  659. package/lib/workroom-runtime/workroom-effect-production.d.ts +138 -0
  660. package/lib/workroom-runtime/workroom-effect-production.d.ts.map +1 -0
  661. package/lib/workroom-runtime/workroom-effect-production.js +291 -0
  662. package/lib/workroom-runtime/workroom-effect-production.js.map +1 -0
  663. package/lib/workroom-runtime/workroom-effect-runtime.d.ts +56 -0
  664. package/lib/workroom-runtime/workroom-effect-runtime.d.ts.map +1 -0
  665. package/lib/workroom-runtime/workroom-effect-runtime.js +239 -0
  666. package/lib/workroom-runtime/workroom-effect-runtime.js.map +1 -0
  667. package/lib/workroom-runtime/workroom-governed-dispatch-composition.d.ts +32 -0
  668. package/lib/workroom-runtime/workroom-governed-dispatch-composition.d.ts.map +1 -0
  669. package/lib/workroom-runtime/workroom-governed-dispatch-composition.js +43 -0
  670. package/lib/workroom-runtime/workroom-governed-dispatch-composition.js.map +1 -0
  671. package/lib/workroom-runtime/workroom-host-port.d.ts +113 -0
  672. package/lib/workroom-runtime/workroom-host-port.d.ts.map +1 -0
  673. package/lib/workroom-runtime/workroom-host-port.js +3 -0
  674. package/lib/workroom-runtime/workroom-host-port.js.map +1 -0
  675. package/lib/workroom-runtime/workroom-journal-payload-composition.d.ts +16 -0
  676. package/lib/workroom-runtime/workroom-journal-payload-composition.d.ts.map +1 -0
  677. package/lib/workroom-runtime/workroom-journal-payload-composition.js +69 -0
  678. package/lib/workroom-runtime/workroom-journal-payload-composition.js.map +1 -0
  679. package/lib/workroom-runtime/workroom-local-agent-core-adapter.d.ts +16 -0
  680. package/lib/workroom-runtime/workroom-local-agent-core-adapter.d.ts.map +1 -0
  681. package/lib/workroom-runtime/workroom-local-agent-core-adapter.js +100 -0
  682. package/lib/workroom-runtime/workroom-local-agent-core-adapter.js.map +1 -0
  683. package/lib/workroom-runtime/workroom-local-agent-loop.d.ts +91 -0
  684. package/lib/workroom-runtime/workroom-local-agent-loop.d.ts.map +1 -0
  685. package/lib/workroom-runtime/workroom-local-agent-loop.js +313 -0
  686. package/lib/workroom-runtime/workroom-local-agent-loop.js.map +1 -0
  687. package/lib/workroom-runtime/workroom-local-assignment-authority.d.ts +5 -0
  688. package/lib/workroom-runtime/workroom-local-assignment-authority.d.ts.map +1 -0
  689. package/lib/workroom-runtime/workroom-local-assignment-authority.js +16 -0
  690. package/lib/workroom-runtime/workroom-local-assignment-authority.js.map +1 -0
  691. package/lib/workroom-runtime/workroom-local-assignment-executor.d.ts +60 -0
  692. package/lib/workroom-runtime/workroom-local-assignment-executor.d.ts.map +1 -0
  693. package/lib/workroom-runtime/workroom-local-assignment-executor.js +197 -0
  694. package/lib/workroom-runtime/workroom-local-assignment-executor.js.map +1 -0
  695. package/lib/workroom-runtime/workroom-local-assignment-runtime.d.ts +34 -0
  696. package/lib/workroom-runtime/workroom-local-assignment-runtime.d.ts.map +1 -0
  697. package/lib/workroom-runtime/workroom-local-assignment-runtime.js +235 -0
  698. package/lib/workroom-runtime/workroom-local-assignment-runtime.js.map +1 -0
  699. package/lib/workroom-runtime/workroom-local-assignment-supply.d.ts +39 -0
  700. package/lib/workroom-runtime/workroom-local-assignment-supply.d.ts.map +1 -0
  701. package/lib/workroom-runtime/workroom-local-assignment-supply.js +107 -0
  702. package/lib/workroom-runtime/workroom-local-assignment-supply.js.map +1 -0
  703. package/lib/workroom-runtime/workroom-overlay-pack-promotion.d.ts +145 -0
  704. package/lib/workroom-runtime/workroom-overlay-pack-promotion.d.ts.map +1 -0
  705. package/lib/workroom-runtime/workroom-overlay-pack-promotion.js +516 -0
  706. package/lib/workroom-runtime/workroom-overlay-pack-promotion.js.map +1 -0
  707. package/lib/workroom-runtime/workroom-payload-processor-recall.d.ts +91 -0
  708. package/lib/workroom-runtime/workroom-payload-processor-recall.d.ts.map +1 -0
  709. package/lib/workroom-runtime/workroom-payload-processor-recall.js +189 -0
  710. package/lib/workroom-runtime/workroom-payload-processor-recall.js.map +1 -0
  711. package/lib/workroom-runtime/workroom-plan-gate-authority.d.ts +7 -0
  712. package/lib/workroom-runtime/workroom-plan-gate-authority.d.ts.map +1 -0
  713. package/lib/workroom-runtime/workroom-plan-gate-authority.js +40 -0
  714. package/lib/workroom-runtime/workroom-plan-gate-authority.js.map +1 -0
  715. package/lib/workroom-runtime/workroom-portfolio-capacity.d.ts +132 -0
  716. package/lib/workroom-runtime/workroom-portfolio-capacity.d.ts.map +1 -0
  717. package/lib/workroom-runtime/workroom-portfolio-capacity.js +189 -0
  718. package/lib/workroom-runtime/workroom-portfolio-capacity.js.map +1 -0
  719. package/lib/workroom-runtime/workroom-portfolio-checkpoint-ack.d.ts +38 -0
  720. package/lib/workroom-runtime/workroom-portfolio-checkpoint-ack.d.ts.map +1 -0
  721. package/lib/workroom-runtime/workroom-portfolio-checkpoint-ack.js +103 -0
  722. package/lib/workroom-runtime/workroom-portfolio-checkpoint-ack.js.map +1 -0
  723. package/lib/workroom-runtime/workroom-portfolio-control-composition.d.ts +30 -0
  724. package/lib/workroom-runtime/workroom-portfolio-control-composition.d.ts.map +1 -0
  725. package/lib/workroom-runtime/workroom-portfolio-control-composition.js +103 -0
  726. package/lib/workroom-runtime/workroom-portfolio-control-composition.js.map +1 -0
  727. package/lib/workroom-runtime/workroom-portfolio-control-runtime.d.ts +42 -0
  728. package/lib/workroom-runtime/workroom-portfolio-control-runtime.d.ts.map +1 -0
  729. package/lib/workroom-runtime/workroom-portfolio-control-runtime.js +209 -0
  730. package/lib/workroom-runtime/workroom-portfolio-control-runtime.js.map +1 -0
  731. package/lib/workroom-runtime/workroom-portfolio-grant-assignment.d.ts +141 -0
  732. package/lib/workroom-runtime/workroom-portfolio-grant-assignment.d.ts.map +1 -0
  733. package/lib/workroom-runtime/workroom-portfolio-grant-assignment.js +334 -0
  734. package/lib/workroom-runtime/workroom-portfolio-grant-assignment.js.map +1 -0
  735. package/lib/workroom-runtime/workroom-portfolio-kernel-authority.d.ts +23 -0
  736. package/lib/workroom-runtime/workroom-portfolio-kernel-authority.d.ts.map +1 -0
  737. package/lib/workroom-runtime/workroom-portfolio-kernel-authority.js +88 -0
  738. package/lib/workroom-runtime/workroom-portfolio-kernel-authority.js.map +1 -0
  739. package/lib/workroom-runtime/workroom-portfolio-sponsor.d.ts +96 -0
  740. package/lib/workroom-runtime/workroom-portfolio-sponsor.d.ts.map +1 -0
  741. package/lib/workroom-runtime/workroom-portfolio-sponsor.js +313 -0
  742. package/lib/workroom-runtime/workroom-portfolio-sponsor.js.map +1 -0
  743. package/lib/workroom-runtime/workroom-preemption-runtime.d.ts +57 -0
  744. package/lib/workroom-runtime/workroom-preemption-runtime.d.ts.map +1 -0
  745. package/lib/workroom-runtime/workroom-preemption-runtime.js +163 -0
  746. package/lib/workroom-runtime/workroom-preemption-runtime.js.map +1 -0
  747. package/lib/workroom-runtime/workroom-priority-authority.d.ts +19 -0
  748. package/lib/workroom-runtime/workroom-priority-authority.d.ts.map +1 -0
  749. package/lib/workroom-runtime/workroom-priority-authority.js +76 -0
  750. package/lib/workroom-runtime/workroom-priority-authority.js.map +1 -0
  751. package/lib/workroom-runtime/workroom-profile-authority-composition.d.ts +61 -0
  752. package/lib/workroom-runtime/workroom-profile-authority-composition.d.ts.map +1 -0
  753. package/lib/workroom-runtime/workroom-profile-authority-composition.js +232 -0
  754. package/lib/workroom-runtime/workroom-profile-authority-composition.js.map +1 -0
  755. package/lib/workroom-runtime/workroom-profile-authority-runtime.d.ts +229 -0
  756. package/lib/workroom-runtime/workroom-profile-authority-runtime.d.ts.map +1 -0
  757. package/lib/workroom-runtime/workroom-profile-authority-runtime.js +1133 -0
  758. package/lib/workroom-runtime/workroom-profile-authority-runtime.js.map +1 -0
  759. package/lib/workroom-runtime/workroom-projection-outbound.d.ts +10 -0
  760. package/lib/workroom-runtime/workroom-projection-outbound.d.ts.map +1 -0
  761. package/lib/workroom-runtime/workroom-projection-outbound.js +35 -0
  762. package/lib/workroom-runtime/workroom-projection-outbound.js.map +1 -0
  763. package/lib/workroom-runtime/workroom-projection-runtime.d.ts +93 -0
  764. package/lib/workroom-runtime/workroom-projection-runtime.d.ts.map +1 -0
  765. package/lib/workroom-runtime/workroom-projection-runtime.js +476 -0
  766. package/lib/workroom-runtime/workroom-projection-runtime.js.map +1 -0
  767. package/lib/workroom-runtime/workroom-remote-assignment-authority.d.ts +9 -0
  768. package/lib/workroom-runtime/workroom-remote-assignment-authority.d.ts.map +1 -0
  769. package/lib/workroom-runtime/workroom-remote-assignment-authority.js +20 -0
  770. package/lib/workroom-runtime/workroom-remote-assignment-authority.js.map +1 -0
  771. package/lib/workroom-runtime/workroom-remote-callback-runtime.d.ts +38 -0
  772. package/lib/workroom-runtime/workroom-remote-callback-runtime.d.ts.map +1 -0
  773. package/lib/workroom-runtime/workroom-remote-callback-runtime.js +80 -0
  774. package/lib/workroom-runtime/workroom-remote-callback-runtime.js.map +1 -0
  775. package/lib/workroom-runtime/workroom-remote-executor.d.ts +9 -0
  776. package/lib/workroom-runtime/workroom-remote-executor.d.ts.map +1 -0
  777. package/lib/workroom-runtime/workroom-remote-executor.js +23 -0
  778. package/lib/workroom-runtime/workroom-remote-executor.js.map +1 -0
  779. package/lib/workroom-runtime/workroom-reviewer-authority-runtime.d.ts +72 -0
  780. package/lib/workroom-runtime/workroom-reviewer-authority-runtime.d.ts.map +1 -0
  781. package/lib/workroom-runtime/workroom-reviewer-authority-runtime.js +142 -0
  782. package/lib/workroom-runtime/workroom-reviewer-authority-runtime.js.map +1 -0
  783. package/lib/workroom-runtime/workroom-risk-acceptance-runtime.d.ts +112 -0
  784. package/lib/workroom-runtime/workroom-risk-acceptance-runtime.d.ts.map +1 -0
  785. package/lib/workroom-runtime/workroom-risk-acceptance-runtime.js +376 -0
  786. package/lib/workroom-runtime/workroom-risk-acceptance-runtime.js.map +1 -0
  787. package/lib/workroom-runtime/workroom-run-profile-pin-authority.d.ts +42 -0
  788. package/lib/workroom-runtime/workroom-run-profile-pin-authority.d.ts.map +1 -0
  789. package/lib/workroom-runtime/workroom-run-profile-pin-authority.js +125 -0
  790. package/lib/workroom-runtime/workroom-run-profile-pin-authority.js.map +1 -0
  791. package/lib/workroom-runtime/workroom-scheduler-portfolio-composition.d.ts +32 -0
  792. package/lib/workroom-runtime/workroom-scheduler-portfolio-composition.d.ts.map +1 -0
  793. package/lib/workroom-runtime/workroom-scheduler-portfolio-composition.js +83 -0
  794. package/lib/workroom-runtime/workroom-scheduler-portfolio-composition.js.map +1 -0
  795. package/lib/workroom-runtime/workroom-scheduler-portfolio-contract.d.ts +16 -0
  796. package/lib/workroom-runtime/workroom-scheduler-portfolio-contract.d.ts.map +1 -0
  797. package/lib/workroom-runtime/workroom-scheduler-portfolio-contract.js +49 -0
  798. package/lib/workroom-runtime/workroom-scheduler-portfolio-contract.js.map +1 -0
  799. package/lib/workroom-runtime/workroom-scheduler-portfolio-request-authority.d.ts +66 -0
  800. package/lib/workroom-runtime/workroom-scheduler-portfolio-request-authority.d.ts.map +1 -0
  801. package/lib/workroom-runtime/workroom-scheduler-portfolio-request-authority.js +250 -0
  802. package/lib/workroom-runtime/workroom-scheduler-portfolio-request-authority.js.map +1 -0
  803. package/lib/workroom-runtime/workroom-scheduler-portfolio-supply.d.ts +42 -0
  804. package/lib/workroom-runtime/workroom-scheduler-portfolio-supply.d.ts.map +1 -0
  805. package/lib/workroom-runtime/workroom-scheduler-portfolio-supply.js +141 -0
  806. package/lib/workroom-runtime/workroom-scheduler-portfolio-supply.js.map +1 -0
  807. package/lib/workroom-runtime/workroom-scheduler-route-registry.d.ts +27 -0
  808. package/lib/workroom-runtime/workroom-scheduler-route-registry.d.ts.map +1 -0
  809. package/lib/workroom-runtime/workroom-scheduler-route-registry.js +136 -0
  810. package/lib/workroom-runtime/workroom-scheduler-route-registry.js.map +1 -0
  811. package/lib/workroom-runtime/workroom-scheduler-runtime.d.ts +84 -0
  812. package/lib/workroom-runtime/workroom-scheduler-runtime.d.ts.map +1 -0
  813. package/lib/workroom-runtime/workroom-scheduler-runtime.js +236 -0
  814. package/lib/workroom-runtime/workroom-scheduler-runtime.js.map +1 -0
  815. package/package.json +55 -6
@@ -0,0 +1,794 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { canonicalWorkroomJson, deepFreezeWorkroomValue as deepFreeze, digestCanonicalWorkroomValue as digest, } from '../workroom/canonical-value.js';
4
+ import { DurableFileStore } from '../workroom/durable-file-store.js';
5
+ import { replayWorkroomEffectLedger, } from '../workroom/effect-ledger.js';
6
+ import { workroomAcceptanceAuthorityToken } from './workroom-acceptance-authority.js';
7
+ import { workroomAcceptancePolicyDecisionToken } from './workroom-acceptance-policy.js';
8
+ import { DurableWorkroomContextReleaseConsumer, EffectLedgerWorkroomAcceptanceState, KernelHeaderWorkroomRiskFacts, ProfileOwnedWorkroomAcceptanceProvider, TypedWorkroomAcceptanceCheckRunner, CatalogWorkroomAcceptancePrincipalRegistry, } from './workroom-acceptance-provider-composition.js';
9
+ import { workroomExecutionContextReleaseToken, workroomProjectMemorySchemaAuthorityToken, } from './workroom-accepted-source-runtime.js';
10
+ import { workroomAcceptancePrincipalRegistryToken, workroomReviewerViewReaderToken, ProfileWorkroomAcceptanceAuthority, WorkroomReviewerViewReader, } from './workroom-reviewer-authority-runtime.js';
11
+ import { workroomAcceptanceCheckRunnerToken, workroomAcceptancePolicyFactsToken, workroomTrustedRiskFactsToken, PinnedWorkroomAcceptancePolicy, } from './workroom-risk-acceptance-runtime.js';
12
+ import { workroomPersistedEffectAuthorizationFactsToken, } from './workroom-effect-production.js';
13
+ /**
14
+ * Dedicated Effect approval plane. It never reads discussion or Acceptance
15
+ * Sponsor Gate events and it has no Task/Assignment writer.
16
+ */
17
+ export class SponsorDecisionWorkroomEffectAuthorizationProjector {
18
+ options;
19
+ #store;
20
+ control;
21
+ constructor(options) {
22
+ this.options = options;
23
+ this.#store = new DurableFileStore(options.directory);
24
+ this.control = Object.freeze({
25
+ decide: async (command) => await this.#decide(command),
26
+ });
27
+ }
28
+ async drainProject(projectId) {
29
+ const states = replayWorkroomEffectLedger(projectId, await this.options.effectJournal.read(projectId));
30
+ let projected = 0;
31
+ for (const state of Object.values(states)) {
32
+ if (state.status !== 'pending_authorization')
33
+ continue;
34
+ const decision = await this.#readDecision(state.intent.id);
35
+ if (!decision || decision.decision !== 'approve')
36
+ continue;
37
+ const existing = await this.#readFact(state.intent.id);
38
+ if (existing)
39
+ continue;
40
+ assertDecisionIntentBinding(decision, state.intent);
41
+ const policy = await this.options.policy.authorize({
42
+ projectId,
43
+ intent: state.intent,
44
+ candidateHash: state.intent.candidateHash,
45
+ acceptancePolicy: decision.binding.policy,
46
+ sponsorDecision: decision,
47
+ });
48
+ if (!policy)
49
+ continue;
50
+ if (canonicalWorkroomJson(policy.policy) !== canonicalWorkroomJson(decision.binding.policy)
51
+ || policy.expiresAt > decision.binding.deadline
52
+ || policy.expiresAt <= decision.decidedAt) {
53
+ throw new Error('P8 Effect Authorization policy returned a stale decision');
54
+ }
55
+ required(policy.policyDecisionRef, 'Effect policy decision ref');
56
+ requiredDigest(policy.policyDecisionDigest, 'Effect policy decision digest');
57
+ const fact = deepFreeze({
58
+ version: 1,
59
+ projectId,
60
+ runId: state.intent.runId,
61
+ intentId: state.intent.id,
62
+ intentDigest: state.intent.digest,
63
+ candidateHash: state.intent.candidateHash,
64
+ risk: {
65
+ assessmentRef: state.intent.risk.assessmentRef,
66
+ assessmentDigest: state.intent.risk.assessmentDigest,
67
+ },
68
+ policy: policy.policy,
69
+ policyDecision: {
70
+ ref: policy.policyDecisionRef,
71
+ digest: policy.policyDecisionDigest,
72
+ },
73
+ scope: {
74
+ assignmentAttempt: decision.binding.assignmentAttempt,
75
+ workspaceFence: decision.binding.workspaceFence,
76
+ workspaceRef: decision.binding.workspaceRef,
77
+ workspaceDigest: decision.binding.workspaceDigest,
78
+ preconditionsDigest: decision.binding.preconditionsDigest,
79
+ deadline: decision.binding.deadline,
80
+ },
81
+ sponsor: {
82
+ decision: 'approved',
83
+ decisionRef: `effect-sponsor-decision:${decision.digest}`,
84
+ decisionDigest: decision.digest,
85
+ principalId: decision.principalId,
86
+ },
87
+ authorizationId: `effect-authorization:${digest({
88
+ intentDigest: state.intent.digest,
89
+ sponsorDecisionDigest: decision.digest,
90
+ policyDecisionDigest: policy.policyDecisionDigest,
91
+ })}`,
92
+ issuedAt: decision.decidedAt,
93
+ expiresAt: policy.expiresAt,
94
+ });
95
+ await this.#publishFact(fact);
96
+ projected += 1;
97
+ }
98
+ return projected;
99
+ }
100
+ async resolve(input) {
101
+ const events = await this.options.effectJournal.read(input.projectId);
102
+ if (events.length - 1 !== input.expectedSequence) {
103
+ throw new Error('Effect Authorization facts target a stale Effect Ledger sequence');
104
+ }
105
+ const state = replayWorkroomEffectLedger(input.projectId, events)[input.intentId];
106
+ if (!state || state.intent.digest !== input.intentDigest || state.status !== 'pending_authorization')
107
+ return null;
108
+ const fact = await this.#readFact(input.intentId);
109
+ if (!fact || fact.intentDigest !== input.intentDigest || fact.projectId !== input.projectId)
110
+ return null;
111
+ return fact;
112
+ }
113
+ async #decide(command) {
114
+ const request = createDecisionRequest(command);
115
+ const states = replayWorkroomEffectLedger(request.projectId, await this.options.effectJournal.read(request.projectId));
116
+ const state = states[request.effectIntentId];
117
+ if (!state || state.status !== 'pending_authorization'
118
+ || state.intent.runId !== request.runId
119
+ || state.intent.digest !== request.effectIntentDigest) {
120
+ throw new Error('Effect Sponsor decision targets a stale or started Effect Intent');
121
+ }
122
+ const authority = await this.options.sponsorAuthority.authorize(request);
123
+ if (!authority.authorized)
124
+ throw new Error(`Effect Sponsor decision unauthorized: ${authority.reason}`);
125
+ assertSponsorAuthority(authority, request, state.intent);
126
+ const { digest: requestDigest, ...requestBody } = request;
127
+ const body = deepFreeze({
128
+ ...requestBody,
129
+ binding: authority.binding,
130
+ authorizedBy: authority.authorizedBy,
131
+ catalogRevision: authority.catalogRevision,
132
+ projectDigest: authority.projectDigest,
133
+ profileRef: authority.profileRef,
134
+ profileDigest: authority.profileDigest,
135
+ profileRevision: authority.profileRevision,
136
+ requestDigest,
137
+ });
138
+ const record = deepFreeze({ ...body, digest: digest(body) });
139
+ await this.#store.ensureDurableLeaf('Workroom Effect Sponsor decision repository');
140
+ const existingV2 = await this.#readV2Decision(record.effectIntentId);
141
+ if (existingV2) {
142
+ const verified = await this.#readDecision(record.effectIntentId);
143
+ if (!verified || canonicalWorkroomJson(verified) !== canonicalWorkroomJson(record)) {
144
+ throw new Error('Workroom Effect Sponsor decision CAS conflict');
145
+ }
146
+ return verified;
147
+ }
148
+ const legacy = await this.#readLegacyDecisionSlot(record.effectIntentId);
149
+ const existingReceipt = await this.#readLegacyQuarantineReceipt(record.effectIntentId);
150
+ if (legacy.kind === 'v2') {
151
+ if (existingReceipt || canonicalWorkroomJson(legacy.decision) !== canonicalWorkroomJson(record)) {
152
+ throw new Error('Workroom Effect Sponsor decision CAS conflict');
153
+ }
154
+ return legacy.decision;
155
+ }
156
+ if (legacy.kind === 'v1') {
157
+ const receipt = createLegacyDecisionQuarantineReceipt(record.effectIntentId, legacy.digest, record.digest);
158
+ await this.#publishLegacyQuarantineReceipt(record.effectIntentId, receipt);
159
+ await this.#assertLegacyDecisionSupersession(record.effectIntentId, record, receipt);
160
+ await this.#store.removeIfExists(this.#legacyDecisionTarget(record.effectIntentId), true);
161
+ await this.#store.publishCreateOnly({
162
+ target: this.#legacyDecisionTarget(record.effectIntentId),
163
+ content: canonicalWorkroomJson(receipt),
164
+ createdValue: receipt,
165
+ onConflict: async () => {
166
+ const slot = await this.#readLegacyDecisionSlot(record.effectIntentId);
167
+ if (slot.kind !== 'quarantined'
168
+ || canonicalWorkroomJson(slot.receipt) !== canonicalWorkroomJson(receipt)) {
169
+ throw new Error('Workroom Effect Sponsor legacy plaintext tombstone conflict');
170
+ }
171
+ return slot.receipt;
172
+ },
173
+ });
174
+ if ((await this.#readLegacyDecisionSlot(record.effectIntentId)).kind !== 'quarantined') {
175
+ throw new Error('Workroom Effect Sponsor legacy plaintext decision purge failed');
176
+ }
177
+ }
178
+ else if (legacy.kind === 'quarantined') {
179
+ if (!existingReceipt
180
+ || canonicalWorkroomJson(legacy.receipt) !== canonicalWorkroomJson(existingReceipt)
181
+ || existingReceipt.successorDecisionDigest !== record.digest) {
182
+ throw new Error('Workroom Effect Sponsor legacy decision quarantine receipt is orphaned');
183
+ }
184
+ }
185
+ else if (existingReceipt) {
186
+ if (existingReceipt.successorDecisionDigest !== record.digest) {
187
+ throw new Error('Workroom Effect Sponsor legacy decision quarantine receipt is orphaned');
188
+ }
189
+ await this.#store.publishCreateOnly({
190
+ target: this.#legacyDecisionTarget(record.effectIntentId),
191
+ content: canonicalWorkroomJson(existingReceipt),
192
+ createdValue: existingReceipt,
193
+ onConflict: async () => {
194
+ const slot = await this.#readLegacyDecisionSlot(record.effectIntentId);
195
+ if (slot.kind !== 'quarantined'
196
+ || canonicalWorkroomJson(slot.receipt) !== canonicalWorkroomJson(existingReceipt)) {
197
+ throw new Error('Workroom Effect Sponsor legacy plaintext tombstone conflict');
198
+ }
199
+ return slot.receipt;
200
+ },
201
+ });
202
+ }
203
+ const target = this.#v2DecisionTarget(record.effectIntentId);
204
+ const publication = await this.#store.publishCreateOnly({
205
+ target,
206
+ content: canonicalWorkroomJson(record),
207
+ createdValue: record,
208
+ onConflict: async () => {
209
+ const existing = await this.#readV2Decision(record.effectIntentId);
210
+ if (!existing || canonicalWorkroomJson(existing) !== canonicalWorkroomJson(record)) {
211
+ throw new Error('Workroom Effect Sponsor decision CAS conflict');
212
+ }
213
+ return existing;
214
+ },
215
+ });
216
+ const verified = await this.#readDecision(record.effectIntentId);
217
+ if (!verified || canonicalWorkroomJson(verified) !== canonicalWorkroomJson(publication.value)) {
218
+ throw new Error('Workroom Effect Sponsor decision publication is incomplete');
219
+ }
220
+ return verified;
221
+ }
222
+ async #publishFact(fact) {
223
+ await this.#store.ensureDurableLeaf('Workroom Effect Authorization fact repository');
224
+ const target = this.#factTarget(fact.intentId);
225
+ await this.#store.publishCreateOnly({
226
+ target,
227
+ content: canonicalWorkroomJson(fact),
228
+ createdValue: fact,
229
+ onConflict: async () => {
230
+ const existing = await this.#readFact(fact.intentId);
231
+ if (!existing || canonicalWorkroomJson(existing) !== canonicalWorkroomJson(fact)) {
232
+ throw new Error('Workroom Effect Authorization fact CAS conflict');
233
+ }
234
+ return existing;
235
+ },
236
+ });
237
+ }
238
+ async #readDecision(effectIntentId) {
239
+ const v2 = await this.#readV2Decision(effectIntentId);
240
+ const legacy = await this.#readLegacyDecisionSlot(effectIntentId);
241
+ const receipt = await this.#readLegacyQuarantineReceipt(effectIntentId);
242
+ if (!v2) {
243
+ if (receipt) {
244
+ throw new Error('Workroom Effect Sponsor legacy decision migration is incomplete');
245
+ }
246
+ if (legacy.kind === 'v2')
247
+ return legacy.decision;
248
+ if (legacy.kind === 'v1')
249
+ throw legacyDecisionQuarantineError();
250
+ return undefined;
251
+ }
252
+ if (legacy.kind === 'absent') {
253
+ if (receipt && receipt.successorDecisionDigest !== v2.digest) {
254
+ throw new Error('Workroom Effect Sponsor legacy decision quarantine receipt is orphaned');
255
+ }
256
+ return v2;
257
+ }
258
+ if (legacy.kind === 'v2') {
259
+ if (receipt || canonicalWorkroomJson(legacy.decision) !== canonicalWorkroomJson(v2)) {
260
+ throw new Error('Workroom Effect Sponsor v2 decision slots conflict');
261
+ }
262
+ return v2;
263
+ }
264
+ if (legacy.kind === 'quarantined') {
265
+ if (!receipt || canonicalWorkroomJson(legacy.receipt) !== canonicalWorkroomJson(receipt)
266
+ || receipt.successorDecisionDigest !== v2.digest) {
267
+ throw new Error('Workroom Effect Sponsor legacy decision supersession receipt is missing');
268
+ }
269
+ return v2;
270
+ }
271
+ if (!receipt) {
272
+ throw new Error('Workroom Effect Sponsor legacy decision supersession receipt is missing');
273
+ }
274
+ await this.#assertLegacyDecisionSupersession(effectIntentId, v2, receipt);
275
+ return v2;
276
+ }
277
+ async #readV2Decision(effectIntentId) {
278
+ return await readOptional(this.#v2DecisionTarget(effectIntentId), parseDecision);
279
+ }
280
+ async #readLegacyDecisionSlot(effectIntentId) {
281
+ const value = await readOptional(this.#legacyDecisionTarget(effectIntentId), candidate => candidate);
282
+ if (value === undefined)
283
+ return Object.freeze({ kind: 'absent' });
284
+ if (value.kind === 'workroom_effect_sponsor_legacy_decision_quarantine') {
285
+ return Object.freeze({
286
+ kind: 'quarantined',
287
+ receipt: parseLegacyDecisionQuarantineReceipt(value, effectIntentId),
288
+ });
289
+ }
290
+ if (isLegacyDecisionV1(value)) {
291
+ return Object.freeze({ kind: 'v1', digest: digest(value) });
292
+ }
293
+ return Object.freeze({ kind: 'v2', decision: parseDecision(value) });
294
+ }
295
+ async #readLegacyQuarantineReceipt(effectIntentId) {
296
+ return await readOptional(this.#legacyQuarantineReceiptTarget(effectIntentId), value => parseLegacyDecisionQuarantineReceipt(value, effectIntentId));
297
+ }
298
+ async #publishLegacyQuarantineReceipt(effectIntentId, receipt) {
299
+ await this.#store.publishCreateOnly({
300
+ target: this.#legacyQuarantineReceiptTarget(effectIntentId),
301
+ content: canonicalWorkroomJson(receipt),
302
+ createdValue: receipt,
303
+ onConflict: async () => {
304
+ const existing = await this.#readLegacyQuarantineReceipt(effectIntentId);
305
+ if (!existing || canonicalWorkroomJson(existing) !== canonicalWorkroomJson(receipt)) {
306
+ throw new Error('Workroom Effect Sponsor legacy decision quarantine receipt CAS conflict');
307
+ }
308
+ return existing;
309
+ },
310
+ });
311
+ }
312
+ async #assertLegacyDecisionSupersession(effectIntentId, successor, receipt) {
313
+ const legacy = await this.#readLegacyDecisionSlot(effectIntentId);
314
+ if ((legacy.kind !== 'v1' && legacy.kind !== 'quarantined')
315
+ || receipt.effectIntentRef !== legacyEffectIntentRef(effectIntentId)
316
+ || (legacy.kind === 'v1' && receipt.legacyDecisionDigest !== legacy.digest)
317
+ || (legacy.kind === 'quarantined'
318
+ && canonicalWorkroomJson(legacy.receipt) !== canonicalWorkroomJson(receipt))
319
+ || receipt.successorDecisionDigest !== successor.digest) {
320
+ throw new Error('Workroom Effect Sponsor legacy decision supersession drift');
321
+ }
322
+ }
323
+ async #readFact(effectIntentId) {
324
+ return await readOptional(this.#factTarget(effectIntentId), value => {
325
+ const fact = value;
326
+ if (fact.version !== 1 || fact.intentId !== effectIntentId) {
327
+ throw new Error('Workroom Effect Authorization fact is malformed');
328
+ }
329
+ return deepFreeze(fact);
330
+ });
331
+ }
332
+ #legacyDecisionTarget(effectIntentId) {
333
+ return join(this.options.directory, `${key(effectIntentId)}.decision.json`);
334
+ }
335
+ #v2DecisionTarget(effectIntentId) {
336
+ return join(this.options.directory, `${key(effectIntentId)}.decision.v2.json`);
337
+ }
338
+ #legacyQuarantineReceiptTarget(effectIntentId) {
339
+ return join(this.options.directory, `${key(effectIntentId)}.decision-v1-quarantine.json`);
340
+ }
341
+ #factTarget(effectIntentId) {
342
+ return join(this.options.directory, `${key(effectIntentId)}.fact.json`);
343
+ }
344
+ }
345
+ /** Generation lifecycle for the durable Sponsor decision -> P8 authorization fact projector. */
346
+ export class WorkroomEffectAuthorizationProjectionRuntime {
347
+ options;
348
+ #intervalMs;
349
+ #timer;
350
+ #draining;
351
+ constructor(options) {
352
+ this.options = options;
353
+ this.#intervalMs = positive(options.intervalMs ?? 1_000, 'Effect Authorization projector interval');
354
+ }
355
+ start() {
356
+ this.options.signal.throwIfAborted();
357
+ if (this.#timer)
358
+ return;
359
+ void this.#scheduledDrain();
360
+ this.#timer = setInterval(() => void this.#scheduledDrain(), this.#intervalMs);
361
+ }
362
+ async drain() {
363
+ this.options.signal.throwIfAborted();
364
+ if (this.#draining)
365
+ return await this.#draining;
366
+ const operation = this.#drainProjects();
367
+ this.#draining = operation;
368
+ try {
369
+ return await operation;
370
+ }
371
+ finally {
372
+ if (this.#draining === operation)
373
+ this.#draining = undefined;
374
+ }
375
+ }
376
+ async dispose() {
377
+ if (this.#timer)
378
+ clearInterval(this.#timer);
379
+ this.#timer = undefined;
380
+ try {
381
+ await this.#draining;
382
+ }
383
+ catch {
384
+ // The scheduled drain owns error reporting. Disposal is a lifecycle
385
+ // barrier and must still settle when generation retirement aborts it.
386
+ }
387
+ }
388
+ async #drainProjects() {
389
+ if (!this.options.projects)
390
+ return 0;
391
+ const projectIds = [...new Set(await this.options.projects.listProjectIds())]
392
+ .map(projectId => required(projectId, 'Effect Authorization projector Project id'))
393
+ .sort();
394
+ let projected = 0;
395
+ for (const projectId of projectIds) {
396
+ this.options.signal.throwIfAborted();
397
+ projected += await this.options.projector.drainProject(projectId);
398
+ }
399
+ return projected;
400
+ }
401
+ async #scheduledDrain() {
402
+ try {
403
+ await this.drain();
404
+ }
405
+ catch (error) {
406
+ if (!this.options.signal.aborted)
407
+ this.options.onError?.(error);
408
+ }
409
+ }
410
+ }
411
+ /** Standard resource graph. Every published port is generation-abort guarded. */
412
+ export function installWorkroomAcceptanceResources(options) {
413
+ if (!Number.isSafeInteger(options.generation) || options.generation < 1) {
414
+ throw new Error('Workroom Acceptance generation is invalid');
415
+ }
416
+ options.signal.throwIfAborted();
417
+ const stateRoot = join(options.projectRoot, '.zhin');
418
+ const blockers = new FileWorkroomAcceptanceProviderBlockerRepository(join(stateRoot, 'workroom-acceptance-provider-blockers'));
419
+ const projectionProvider = options.projections;
420
+ const projections = Object.freeze({
421
+ resolve: async (input) => {
422
+ const projection = await projectionProvider?.resolve(input) ?? null;
423
+ if (projection)
424
+ return projection;
425
+ await blockers.block('acceptance_projection', `${input.projectId}:${input.profileRevisionId}:${input.profileDigest}`, 'Governed Acceptance projection provider is unavailable');
426
+ return null;
427
+ },
428
+ });
429
+ const riskHeaderProvider = options.riskHeaders;
430
+ const riskHeaders = Object.freeze({
431
+ resolve: async (input) => {
432
+ const headers = await riskHeaderProvider?.resolve(input) ?? Object.freeze([]);
433
+ if (headers.length > 0)
434
+ return headers;
435
+ await blockers.block('risk_headers', `${input.projectId}:${input.runId}:${input.taskKey}:${input.taskRevision}:${input.candidateHash}`, 'Trusted Kernel Risk header provider is unavailable');
436
+ return Object.freeze([]);
437
+ },
438
+ });
439
+ const profile = new ProfileOwnedWorkroomAcceptanceProvider({
440
+ profiles: options.profiles,
441
+ catalog: options.catalog,
442
+ projections,
443
+ ...(options.journal ? { journal: options.journal } : {}),
444
+ });
445
+ const principals = new CatalogWorkroomAcceptancePrincipalRegistry({
446
+ profiles: options.profiles,
447
+ catalog: options.catalog,
448
+ });
449
+ const checks = options.checks && options.checks.length > 0
450
+ ? new TypedWorkroomAcceptanceCheckRunner({ checks: options.checks })
451
+ : undefined;
452
+ const checkPort = Object.freeze({
453
+ run: async (input) => {
454
+ options.signal.throwIfAborted();
455
+ if (checks)
456
+ return await checks.run(input);
457
+ await blockers.block('acceptance_check', `${input.projectId}:${input.runId}:${input.taskKey}:${input.criterion.id}`, 'Typed Acceptance Check provider is unavailable');
458
+ return deepFreeze({
459
+ id: `acceptance-check-blocker:${digest(input)}`,
460
+ criterionId: input.criterion.id,
461
+ status: 'error',
462
+ candidateHash: input.candidateHash,
463
+ runner: 'provider-blocker',
464
+ runnerVersion: '1',
465
+ evidenceRefs: Object.freeze([]),
466
+ });
467
+ },
468
+ });
469
+ const contextRelease = options.contextConsumer
470
+ ? new DurableWorkroomContextReleaseConsumer({
471
+ directory: join(stateRoot, 'workroom-context-release-consumer'),
472
+ consumer: options.contextConsumer,
473
+ })
474
+ : Object.freeze({
475
+ release: async (input) => {
476
+ options.signal.throwIfAborted();
477
+ await blockers.block('context_release', input.operationId, 'Execution Context disposer is unavailable');
478
+ const body = deepFreeze({
479
+ status: 'outcome_unknown',
480
+ operationId: input.operationId,
481
+ receiptRef: `context-release-provider-blocker:${digest(input)}`,
482
+ });
483
+ return deepFreeze({ ...body, digest: digest(body) });
484
+ },
485
+ });
486
+ const effects = new EffectLedgerWorkroomAcceptanceState({ journal: options.effectJournal });
487
+ const risk = new KernelHeaderWorkroomRiskFacts({ headers: riskHeaders });
488
+ const policy = new PinnedWorkroomAcceptancePolicy({
489
+ policies: profile,
490
+ reports: options.reports,
491
+ risk,
492
+ checks: checkPort,
493
+ effects,
494
+ });
495
+ const authority = new ProfileWorkroomAcceptanceAuthority({ principals, runState: options.runState });
496
+ const reviewer = new WorkroomReviewerViewReader({ runState: options.runState, reports: options.reports });
497
+ const sponsorAuthority = new CatalogProfileWorkroomEffectSponsorAuthority({
498
+ principals,
499
+ effects: options.effectJournal,
500
+ scopes: options.effectSponsorDecisionScopes,
501
+ });
502
+ const effectAuthorizations = new SponsorDecisionWorkroomEffectAuthorizationProjector({
503
+ directory: join(stateRoot, 'workroom-effect-authorization-facts'),
504
+ effectJournal: options.effectJournal,
505
+ sponsorAuthority,
506
+ policy: options.effectAuthorizationPolicy ?? Object.freeze({ authorize: async () => null }),
507
+ });
508
+ const projectorRuntime = new WorkroomEffectAuthorizationProjectionRuntime({
509
+ signal: options.signal,
510
+ projector: effectAuthorizations,
511
+ ...(options.projects ? { projects: options.projects } : {}),
512
+ ...(options.projectorIntervalMs === undefined ? {} : { intervalMs: options.projectorIntervalMs }),
513
+ ...(options.onProjectorError ? { onError: options.onProjectorError } : {}),
514
+ });
515
+ provideIfAbsent(options.resources, workroomAcceptancePolicyFactsToken, profile);
516
+ provideIfAbsent(options.resources, workroomTrustedRiskFactsToken, risk);
517
+ provideIfAbsent(options.resources, workroomAcceptanceCheckRunnerToken, checkPort);
518
+ provideIfAbsent(options.resources, workroomAcceptancePrincipalRegistryToken, principals);
519
+ provideIfAbsent(options.resources, workroomProjectMemorySchemaAuthorityToken, profile.memorySchemas);
520
+ provideIfAbsent(options.resources, workroomExecutionContextReleaseToken, contextRelease);
521
+ provideIfAbsent(options.resources, workroomAcceptancePolicyDecisionToken, policy);
522
+ provideIfAbsent(options.resources, workroomAcceptanceAuthorityToken, authority);
523
+ provideIfAbsent(options.resources, workroomReviewerViewReaderToken, reviewer);
524
+ provideIfAbsent(options.resources, workroomPersistedEffectAuthorizationFactsToken, effectAuthorizations);
525
+ return Object.freeze({
526
+ policy,
527
+ effectAuthorizations,
528
+ projectorRuntime,
529
+ effectSponsorControl: effectAuthorizations.control,
530
+ });
531
+ }
532
+ class CatalogProfileWorkroomEffectSponsorAuthority {
533
+ options;
534
+ constructor(options) {
535
+ this.options = options;
536
+ }
537
+ async authorize(request) {
538
+ const reject = (reason) => deepFreeze({ authorized: false, requestDigest: request.digest, reason });
539
+ const principal = await this.options.principals.resolve({
540
+ projectId: request.projectId,
541
+ runId: request.runId,
542
+ principalId: request.principalId,
543
+ });
544
+ if (!principal?.roles.includes('sponsor'))
545
+ return reject('principal_is_not_exact_project_sponsor');
546
+ const state = replayWorkroomEffectLedger(request.projectId, await this.options.effects.read(request.projectId))[request.effectIntentId];
547
+ if (!state || state.status !== 'pending_authorization'
548
+ || state.intent.runId !== request.runId
549
+ || state.intent.digest !== request.effectIntentDigest) {
550
+ return reject('effect_intent_is_stale');
551
+ }
552
+ const binding = await this.options.scopes?.resolve({ request, intent: state.intent }) ?? null;
553
+ if (!binding)
554
+ return reject('trusted_effect_decision_scope_is_unavailable');
555
+ return deepFreeze({
556
+ authorized: true,
557
+ authorizedBy: principal.issuer,
558
+ catalogRevision: principal.catalogRevision,
559
+ projectDigest: principal.projectDigest,
560
+ profileRef: principal.profileRef,
561
+ profileDigest: principal.profileDigest,
562
+ profileRevision: principal.revision,
563
+ binding,
564
+ requestDigest: request.digest,
565
+ });
566
+ }
567
+ }
568
+ class FileWorkroomAcceptanceProviderBlockerRepository {
569
+ directory;
570
+ #store;
571
+ constructor(directory) {
572
+ this.directory = directory;
573
+ this.#store = new DurableFileStore(directory);
574
+ }
575
+ async block(kind, blockerKey, reason) {
576
+ const body = deepFreeze({
577
+ version: 1,
578
+ kind,
579
+ blockerKey: required(blockerKey, 'Provider blocker key'),
580
+ reason: required(reason, 'Provider blocker reason'),
581
+ allowedActions: ['provide_capability', 'replan', 'cancel'],
582
+ });
583
+ const record = deepFreeze({ ...body, digest: digest(body) });
584
+ await this.#store.ensureDurableLeaf('Workroom Acceptance provider blocker repository');
585
+ const target = join(this.directory, `${key(`${kind}:${blockerKey}:${record.digest}`)}.json`);
586
+ await this.#store.publishCreateOnly({
587
+ target,
588
+ content: canonicalWorkroomJson(record),
589
+ createdValue: record,
590
+ onConflict: async () => {
591
+ const existing = JSON.parse(await readFile(target, 'utf8'));
592
+ if (canonicalWorkroomJson(existing) !== canonicalWorkroomJson(record)) {
593
+ throw new Error('Workroom Acceptance provider blocker identity drift');
594
+ }
595
+ return record;
596
+ },
597
+ });
598
+ }
599
+ }
600
+ function createDecisionRequest(command) {
601
+ if (!command || typeof command !== 'object' || Array.isArray(command)) {
602
+ throw new Error('Effect Sponsor decision shape is invalid');
603
+ }
604
+ if (command.version === 1) {
605
+ throw new Error('Legacy Effect Sponsor decision v1 is quarantined; submit a v2 closed reason code');
606
+ }
607
+ assertExactKeys(command, [
608
+ 'version', 'operationId', 'projectId', 'runId', 'effectIntentId', 'effectIntentDigest',
609
+ 'principalId', 'decision', 'reasonCode', 'decidedAt',
610
+ ], 'Effect Sponsor decision');
611
+ if (command.version !== 2)
612
+ throw new Error('Effect Sponsor decision version is invalid');
613
+ const decision = enumValue(command.decision, ['approve', 'reject'], 'Effect Sponsor decision');
614
+ const reasonCode = enumValue(command.reasonCode, [
615
+ 'approved_as_requested', 'rejected_policy', 'rejected_scope', 'rejected_risk',
616
+ 'rejected_by_sponsor',
617
+ ], 'Effect Sponsor reason code');
618
+ if ((decision === 'approve') !== (reasonCode === 'approved_as_requested')) {
619
+ throw new Error('Effect Sponsor reason code does not match the decision');
620
+ }
621
+ const body = deepFreeze({
622
+ version: 2,
623
+ operationId: required(command.operationId, 'Effect Sponsor operation id'),
624
+ projectId: required(command.projectId, 'Effect Sponsor Project id'),
625
+ runId: required(command.runId, 'Effect Sponsor Run id'),
626
+ effectIntentId: required(command.effectIntentId, 'Effect Sponsor Intent id'),
627
+ effectIntentDigest: requiredDigest(command.effectIntentDigest, 'Effect Sponsor Intent digest'),
628
+ principalId: required(command.principalId, 'Effect Sponsor principal'),
629
+ decision,
630
+ reasonCode,
631
+ decidedAt: positive(command.decidedAt, 'Effect Sponsor decidedAt'),
632
+ });
633
+ return deepFreeze({ ...body, digest: digest(body) });
634
+ }
635
+ function assertSponsorAuthority(authority, request, intent) {
636
+ if (authority.requestDigest !== request.digest)
637
+ throw new Error('Effect Sponsor authority request echo drift');
638
+ required(authority.authorizedBy, 'Effect Sponsor authorizedBy');
639
+ required(authority.catalogRevision, 'Effect Sponsor Catalog revision');
640
+ requiredDigest(authority.projectDigest, 'Effect Sponsor Project digest');
641
+ required(authority.profileRef, 'Effect Sponsor Profile ref');
642
+ requiredDigest(authority.profileDigest, 'Effect Sponsor Profile digest');
643
+ positive(authority.profileRevision, 'Effect Sponsor Profile revision');
644
+ assertDecisionBinding(authority.binding, intent, request.decidedAt);
645
+ }
646
+ function assertDecisionBinding(binding, intent, decidedAt) {
647
+ if (binding.effectIntentId !== intent.id
648
+ || binding.effectIntentDigest !== intent.digest
649
+ || binding.candidateHash !== intent.candidateHash
650
+ || binding.workspaceRef !== intent.target.ref
651
+ || binding.workspaceDigest !== intent.target.digest
652
+ || binding.preconditionsDigest !== digest(intent.preconditions)
653
+ || canonicalWorkroomJson(binding.risk) !== canonicalWorkroomJson(intent.risk)
654
+ || binding.deadline <= decidedAt) {
655
+ throw new Error('Effect Sponsor authority binding drift');
656
+ }
657
+ positive(binding.assignmentAttempt, 'Effect Sponsor Assignment attempt');
658
+ positive(binding.workspaceFence, 'Effect Sponsor Workspace fence');
659
+ required(binding.policy.id, 'Effect Sponsor policy id');
660
+ positive(binding.policy.revision, 'Effect Sponsor policy revision');
661
+ requiredDigest(binding.policy.digest, 'Effect Sponsor policy digest');
662
+ }
663
+ function assertDecisionIntentBinding(decision, intent) {
664
+ assertDecisionBinding(decision.binding, intent, decision.decidedAt);
665
+ if (decision.effectIntentId !== intent.id || decision.effectIntentDigest !== intent.digest) {
666
+ throw new Error('Persisted Effect Sponsor decision Intent drift');
667
+ }
668
+ }
669
+ function createLegacyDecisionQuarantineReceipt(effectIntentId, legacyDecisionDigest, successorDecisionDigest) {
670
+ const body = deepFreeze({
671
+ version: 1,
672
+ kind: 'workroom_effect_sponsor_legacy_decision_quarantine',
673
+ effectIntentRef: legacyEffectIntentRef(effectIntentId),
674
+ status: 'quarantined',
675
+ disposition: 'superseded_by_v2',
676
+ legacyDecisionDigest: requiredDigest(legacyDecisionDigest, 'Legacy Effect Sponsor decision digest'),
677
+ successorDecisionDigest: requiredDigest(successorDecisionDigest, 'Successor Effect Sponsor decision digest'),
678
+ });
679
+ return deepFreeze({ ...body, digest: digest(body) });
680
+ }
681
+ function parseLegacyDecisionQuarantineReceipt(value, effectIntentId) {
682
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
683
+ throw new Error('Persisted Effect Sponsor legacy decision quarantine receipt is malformed');
684
+ }
685
+ const receipt = value;
686
+ assertExactKeys(receipt, [
687
+ 'version', 'kind', 'effectIntentRef', 'status', 'disposition', 'legacyDecisionDigest',
688
+ 'successorDecisionDigest', 'digest',
689
+ ], 'Persisted Effect Sponsor legacy decision quarantine receipt');
690
+ if (receipt.version !== 1
691
+ || receipt.kind !== 'workroom_effect_sponsor_legacy_decision_quarantine'
692
+ || receipt.effectIntentRef !== legacyEffectIntentRef(effectIntentId)
693
+ || receipt.status !== 'quarantined'
694
+ || receipt.disposition !== 'superseded_by_v2') {
695
+ throw new Error('Persisted Effect Sponsor legacy decision quarantine receipt is malformed');
696
+ }
697
+ requiredDigest(receipt.legacyDecisionDigest, 'Legacy Effect Sponsor decision digest');
698
+ requiredDigest(receipt.successorDecisionDigest, 'Successor Effect Sponsor decision digest');
699
+ const { digest: supplied, ...body } = receipt;
700
+ if (supplied !== digest(body)) {
701
+ throw new Error('Persisted Effect Sponsor legacy decision quarantine receipt digest drift');
702
+ }
703
+ return deepFreeze(receipt);
704
+ }
705
+ function legacyEffectIntentRef(effectIntentId) {
706
+ return `effect-intent:${key(effectIntentId)}`;
707
+ }
708
+ function isLegacyDecisionV1(value) {
709
+ return Boolean(value && typeof value === 'object' && !Array.isArray(value)
710
+ && value.version === 1);
711
+ }
712
+ function legacyDecisionQuarantineError() {
713
+ return new Error('Legacy Effect Sponsor decision v1 is quarantined; submit a v2 closed reason code');
714
+ }
715
+ function parseDecision(value) {
716
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
717
+ throw new Error('Persisted Effect Sponsor decision is malformed');
718
+ }
719
+ if (value.version === 1) {
720
+ throw legacyDecisionQuarantineError();
721
+ }
722
+ const record = value;
723
+ assertExactKeys(record, [
724
+ 'version', 'operationId', 'projectId', 'runId', 'effectIntentId', 'effectIntentDigest',
725
+ 'principalId', 'decision', 'reasonCode', 'decidedAt', 'binding', 'authorizedBy',
726
+ 'catalogRevision', 'projectDigest', 'profileRef', 'profileDigest', 'profileRevision',
727
+ 'requestDigest', 'digest',
728
+ ], 'Persisted Effect Sponsor decision');
729
+ const request = createDecisionRequest({
730
+ version: record.version,
731
+ operationId: record.operationId,
732
+ projectId: record.projectId,
733
+ runId: record.runId,
734
+ effectIntentId: record.effectIntentId,
735
+ effectIntentDigest: record.effectIntentDigest,
736
+ principalId: record.principalId,
737
+ decision: record.decision,
738
+ reasonCode: record.reasonCode,
739
+ decidedAt: record.decidedAt,
740
+ });
741
+ const { digest: supplied, ...body } = record;
742
+ if (record.requestDigest !== request.digest || supplied !== digest(body)) {
743
+ throw new Error('Persisted Effect Sponsor decision digest drift');
744
+ }
745
+ return deepFreeze(record);
746
+ }
747
+ function assertExactKeys(value, expected, label) {
748
+ const actual = Object.keys(value).sort();
749
+ const canonical = [...expected].sort();
750
+ if (actual.length !== canonical.length || actual.some((key, index) => key !== canonical[index])) {
751
+ throw new Error(`${label} keys are invalid`);
752
+ }
753
+ }
754
+ async function readOptional(target, parse) {
755
+ try {
756
+ return parse(JSON.parse(await readFile(target, 'utf8')));
757
+ }
758
+ catch (error) {
759
+ if (isNodeError(error, 'ENOENT'))
760
+ return undefined;
761
+ throw error;
762
+ }
763
+ }
764
+ function provideIfAbsent(resources, token, value) {
765
+ if (!resources.has(token))
766
+ resources.provide(token, value);
767
+ }
768
+ function key(value) {
769
+ return digest(value).slice('sha256:'.length);
770
+ }
771
+ function required(value, label) {
772
+ if (typeof value !== 'string' || !value.trim() || value !== value.trim())
773
+ throw new Error(`${label} is invalid`);
774
+ return value;
775
+ }
776
+ function requiredDigest(value, label) {
777
+ if (typeof value !== 'string' || !/^sha256:[a-f0-9]{64}$/u.test(value))
778
+ throw new Error(`${label} is invalid`);
779
+ return value;
780
+ }
781
+ function positive(value, label) {
782
+ if (!Number.isSafeInteger(value) || Number(value) < 1)
783
+ throw new Error(`${label} is invalid`);
784
+ return Number(value);
785
+ }
786
+ function enumValue(value, allowed, label) {
787
+ if (!allowed.includes(value))
788
+ throw new Error(`${label} is invalid`);
789
+ return value;
790
+ }
791
+ function isNodeError(error, code) {
792
+ return error instanceof Error && 'code' in error && error.code === code;
793
+ }
794
+ //# sourceMappingURL=workroom-acceptance-production-composition.js.map