@zhin.js/agent 1.1.31 → 1.1.33

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 (1095) hide show
  1. package/README.md +11 -23
  2. package/lib/config/deprecated-agent-binding-keys.d.ts +21 -0
  3. package/lib/config/deprecated-agent-binding-keys.d.ts.map +1 -0
  4. package/lib/config/deprecated-agent-binding-keys.js +37 -0
  5. package/lib/config/deprecated-agent-binding-keys.js.map +1 -0
  6. package/lib/config/deprecated-agent-keys.d.ts +16 -0
  7. package/lib/config/deprecated-agent-keys.d.ts.map +1 -0
  8. package/lib/config/deprecated-agent-keys.js +23 -0
  9. package/lib/config/deprecated-agent-keys.js.map +1 -0
  10. package/lib/config/fix-ai-config.d.ts.map +1 -1
  11. package/lib/config/fix-ai-config.js +16 -20
  12. package/lib/config/fix-ai-config.js.map +1 -1
  13. package/lib/config/index.d.ts +4 -1
  14. package/lib/config/index.d.ts.map +1 -1
  15. package/lib/config/index.js +3 -1
  16. package/lib/config/index.js.map +1 -1
  17. package/lib/config/model-harness-runtime.d.ts.map +1 -1
  18. package/lib/config/model-harness-runtime.js +47 -5
  19. package/lib/config/model-harness-runtime.js.map +1 -1
  20. package/lib/config/model-harness.d.ts +30 -0
  21. package/lib/config/model-harness.d.ts.map +1 -1
  22. package/lib/config/normalize-ai-config.d.ts.map +1 -1
  23. package/lib/config/normalize-ai-config.js +10 -2
  24. package/lib/config/normalize-ai-config.js.map +1 -1
  25. package/lib/config/perception-config.d.ts +36 -0
  26. package/lib/config/perception-config.d.ts.map +1 -0
  27. package/lib/config/perception-config.js +55 -0
  28. package/lib/config/perception-config.js.map +1 -0
  29. package/lib/config/types.d.ts +13 -1
  30. package/lib/config/types.d.ts.map +1 -1
  31. package/lib/config/types.js.map +1 -1
  32. package/lib/config/validate-ai-config.d.ts.map +1 -1
  33. package/lib/config/validate-ai-config.js +0 -19
  34. package/lib/config/validate-ai-config.js.map +1 -1
  35. package/lib/config/zhin-agent-config.d.ts +41 -1
  36. package/lib/config/zhin-agent-config.d.ts.map +1 -1
  37. package/lib/config/zhin-agent-defaults.d.ts.map +1 -1
  38. package/lib/config/zhin-agent-defaults.js +7 -4
  39. package/lib/config/zhin-agent-defaults.js.map +1 -1
  40. package/lib/config/zhin-agent-dependencies.d.ts +5 -0
  41. package/lib/config/zhin-agent-dependencies.d.ts.map +1 -1
  42. package/lib/context/context-system.d.ts +4 -0
  43. package/lib/context/context-system.d.ts.map +1 -1
  44. package/lib/context/context-system.js +2 -0
  45. package/lib/context/context-system.js.map +1 -1
  46. package/lib/context/model-resolver.d.ts +1 -0
  47. package/lib/context/model-resolver.d.ts.map +1 -1
  48. package/lib/context/model-resolver.js +4 -1
  49. package/lib/context/model-resolver.js.map +1 -1
  50. package/lib/context/turn-envelope.d.ts +4 -0
  51. package/lib/context/turn-envelope.d.ts.map +1 -1
  52. package/lib/context/turn-envelope.js +4 -0
  53. package/lib/context/turn-envelope.js.map +1 -1
  54. package/lib/core/agent-core-run.d.ts +22 -1
  55. package/lib/core/agent-core-run.d.ts.map +1 -1
  56. package/lib/core/agent-core-run.js +369 -51
  57. package/lib/core/agent-core-run.js.map +1 -1
  58. package/lib/core/agent-core.d.ts +5 -0
  59. package/lib/core/agent-core.d.ts.map +1 -1
  60. package/lib/core/agent-core.js +5 -0
  61. package/lib/core/agent-core.js.map +1 -1
  62. package/lib/core/agent-loop-standalone.d.ts +6 -0
  63. package/lib/core/agent-loop-standalone.d.ts.map +1 -1
  64. package/lib/core/agent-loop-standalone.js +7 -2
  65. package/lib/core/agent-loop-standalone.js.map +1 -1
  66. package/lib/core/agent-loop-turn.d.ts +5 -0
  67. package/lib/core/agent-loop-turn.d.ts.map +1 -1
  68. package/lib/core/agent-loop-turn.js +5 -0
  69. package/lib/core/agent-loop-turn.js.map +1 -1
  70. package/lib/core/contracts.d.ts +1 -1
  71. package/lib/core/contracts.js +1 -1
  72. package/lib/core/exhausted-turn-reply.d.ts +33 -0
  73. package/lib/core/exhausted-turn-reply.d.ts.map +1 -0
  74. package/lib/core/exhausted-turn-reply.js +54 -0
  75. package/lib/core/exhausted-turn-reply.js.map +1 -0
  76. package/lib/core/exploration-budget.d.ts +17 -0
  77. package/lib/core/exploration-budget.d.ts.map +1 -0
  78. package/lib/core/exploration-budget.js +41 -0
  79. package/lib/core/exploration-budget.js.map +1 -0
  80. package/lib/core/index.d.ts +3 -0
  81. package/lib/core/index.d.ts.map +1 -1
  82. package/lib/core/index.js +2 -0
  83. package/lib/core/index.js.map +1 -1
  84. package/lib/core/missing-tool-resolver.d.ts +17 -0
  85. package/lib/core/missing-tool-resolver.d.ts.map +1 -0
  86. package/lib/core/missing-tool-resolver.js +21 -0
  87. package/lib/core/missing-tool-resolver.js.map +1 -0
  88. package/lib/core/progress-reporter.d.ts +46 -0
  89. package/lib/core/progress-reporter.d.ts.map +1 -0
  90. package/lib/core/progress-reporter.js +100 -0
  91. package/lib/core/progress-reporter.js.map +1 -0
  92. package/lib/core/tool-calls-user-format.d.ts +5 -0
  93. package/lib/core/tool-calls-user-format.d.ts.map +1 -1
  94. package/lib/core/tool-calls-user-format.js +23 -3
  95. package/lib/core/tool-calls-user-format.js.map +1 -1
  96. package/lib/core/turn-event-mapper.d.ts.map +1 -1
  97. package/lib/core/turn-event-mapper.js +2 -0
  98. package/lib/core/turn-event-mapper.js.map +1 -1
  99. package/lib/core/turn-progress.d.ts +75 -0
  100. package/lib/core/turn-progress.d.ts.map +1 -0
  101. package/lib/core/turn-progress.js +152 -0
  102. package/lib/core/turn-progress.js.map +1 -0
  103. package/lib/deferred-worker-runner.d.ts +6 -0
  104. package/lib/deferred-worker-runner.d.ts.map +1 -1
  105. package/lib/deferred-worker-runner.js +4 -0
  106. package/lib/deferred-worker-runner.js.map +1 -1
  107. package/lib/detached-task/index.d.ts +6 -0
  108. package/lib/detached-task/index.d.ts.map +1 -0
  109. package/lib/detached-task/index.js +6 -0
  110. package/lib/detached-task/index.js.map +1 -0
  111. package/lib/detached-task/interjection.d.ts +28 -0
  112. package/lib/detached-task/interjection.d.ts.map +1 -0
  113. package/lib/detached-task/interjection.js +128 -0
  114. package/lib/detached-task/interjection.js.map +1 -0
  115. package/lib/detached-task/runner.d.ts +89 -0
  116. package/lib/detached-task/runner.d.ts.map +1 -0
  117. package/lib/detached-task/runner.js +334 -0
  118. package/lib/detached-task/runner.js.map +1 -0
  119. package/lib/detached-task/store.d.ts +21 -0
  120. package/lib/detached-task/store.d.ts.map +1 -0
  121. package/lib/detached-task/store.js +63 -0
  122. package/lib/detached-task/store.js.map +1 -0
  123. package/lib/detached-task/token.d.ts +8 -0
  124. package/lib/detached-task/token.d.ts.map +1 -0
  125. package/lib/detached-task/token.js +8 -0
  126. package/lib/detached-task/token.js.map +1 -0
  127. package/lib/detached-task/types.d.ts +104 -0
  128. package/lib/detached-task/types.d.ts.map +1 -0
  129. package/lib/detached-task/types.js +43 -0
  130. package/lib/detached-task/types.js.map +1 -0
  131. package/lib/event/turn-event.d.ts +11 -0
  132. package/lib/event/turn-event.d.ts.map +1 -1
  133. package/lib/event/turn-event.js.map +1 -1
  134. package/lib/index.d.ts +7 -87
  135. package/lib/index.d.ts.map +1 -1
  136. package/lib/index.js +6 -85
  137. package/lib/index.js.map +1 -1
  138. package/lib/init/activate-ai-database-storage.d.ts +1 -3
  139. package/lib/init/activate-ai-database-storage.d.ts.map +1 -1
  140. package/lib/init/activate-ai-database-storage.js +13 -18
  141. package/lib/init/activate-ai-database-storage.js.map +1 -1
  142. package/lib/init/configure-zhin-agent.d.ts +1 -1
  143. package/lib/init/configure-zhin-agent.d.ts.map +1 -1
  144. package/lib/init/configure-zhin-agent.js +4 -0
  145. package/lib/init/configure-zhin-agent.js.map +1 -1
  146. package/lib/init/define-ai-database-models.d.ts +1 -1
  147. package/lib/init/define-ai-database-models.d.ts.map +1 -1
  148. package/lib/init/define-ai-database-models.js +1 -21
  149. package/lib/init/define-ai-database-models.js.map +1 -1
  150. package/lib/init/runtime-management-commands.d.ts +8 -0
  151. package/lib/init/runtime-management-commands.d.ts.map +1 -1
  152. package/lib/init/runtime-management-commands.js +38 -0
  153. package/lib/init/runtime-management-commands.js.map +1 -1
  154. package/lib/internal/agent-host.d.ts +11 -0
  155. package/lib/internal/agent-host.d.ts.map +1 -1
  156. package/lib/media/index.d.ts +1 -0
  157. package/lib/media/index.d.ts.map +1 -1
  158. package/lib/media/index.js +1 -0
  159. package/lib/media/index.js.map +1 -1
  160. package/lib/media/perception.d.ts +47 -0
  161. package/lib/media/perception.d.ts.map +1 -0
  162. package/lib/media/perception.js +136 -0
  163. package/lib/media/perception.js.map +1 -0
  164. package/lib/memory/compaction-runtime.d.ts +13 -0
  165. package/lib/memory/compaction-runtime.d.ts.map +1 -1
  166. package/lib/memory/compaction-runtime.js +25 -3
  167. package/lib/memory/compaction-runtime.js.map +1 -1
  168. package/lib/memory/index.d.ts +2 -0
  169. package/lib/memory/index.d.ts.map +1 -1
  170. package/lib/memory/index.js +1 -0
  171. package/lib/memory/index.js.map +1 -1
  172. package/lib/memory/memory-write-policy.d.ts +39 -0
  173. package/lib/memory/memory-write-policy.d.ts.map +1 -0
  174. package/lib/memory/memory-write-policy.js +44 -0
  175. package/lib/memory/memory-write-policy.js.map +1 -0
  176. package/lib/memory/semantic-recall.d.ts +44 -0
  177. package/lib/memory/semantic-recall.d.ts.map +1 -0
  178. package/lib/memory/semantic-recall.js +69 -0
  179. package/lib/memory/semantic-recall.js.map +1 -0
  180. package/lib/memory/told-ledger.d.ts +54 -0
  181. package/lib/memory/told-ledger.d.ts.map +1 -0
  182. package/lib/memory/told-ledger.js +119 -0
  183. package/lib/memory/told-ledger.js.map +1 -0
  184. package/lib/plugin-runtime/agent-host-port.d.ts +0 -102
  185. package/lib/plugin-runtime/agent-host-port.d.ts.map +1 -1
  186. package/lib/plugin-runtime/agent-host-port.js.map +1 -1
  187. package/lib/plugin-runtime/agent-runtime.d.ts +3 -0
  188. package/lib/plugin-runtime/agent-runtime.d.ts.map +1 -1
  189. package/lib/plugin-runtime/agent-runtime.js +42 -10
  190. package/lib/plugin-runtime/agent-runtime.js.map +1 -1
  191. package/lib/plugin-runtime/agent-trace-runtime.d.ts +5 -0
  192. package/lib/plugin-runtime/agent-trace-runtime.d.ts.map +1 -1
  193. package/lib/plugin-runtime/agent-trace-runtime.js +7 -0
  194. package/lib/plugin-runtime/agent-trace-runtime.js.map +1 -1
  195. package/lib/plugin-runtime/ai-completion.d.ts +54 -0
  196. package/lib/plugin-runtime/ai-completion.d.ts.map +1 -0
  197. package/lib/plugin-runtime/ai-completion.js +120 -0
  198. package/lib/plugin-runtime/ai-completion.js.map +1 -0
  199. package/lib/plugin-runtime/deferred-capability-plan.d.ts +27 -24
  200. package/lib/plugin-runtime/deferred-capability-plan.d.ts.map +1 -1
  201. package/lib/plugin-runtime/deferred-capability-plan.js +52 -82
  202. package/lib/plugin-runtime/deferred-capability-plan.js.map +1 -1
  203. package/lib/plugin-runtime/file-search-scope.d.ts +22 -0
  204. package/lib/plugin-runtime/file-search-scope.d.ts.map +1 -0
  205. package/lib/plugin-runtime/file-search-scope.js +129 -0
  206. package/lib/plugin-runtime/file-search-scope.js.map +1 -0
  207. package/lib/plugin-runtime/full-agent-turn-engine.d.ts.map +1 -1
  208. package/lib/plugin-runtime/full-agent-turn-engine.js +177 -21
  209. package/lib/plugin-runtime/full-agent-turn-engine.js.map +1 -1
  210. package/lib/plugin-runtime/index.d.ts +1 -78
  211. package/lib/plugin-runtime/index.d.ts.map +1 -1
  212. package/lib/plugin-runtime/index.js +1 -77
  213. package/lib/plugin-runtime/index.js.map +1 -1
  214. package/lib/plugin-runtime/native-bash-tool.d.ts +12 -0
  215. package/lib/plugin-runtime/native-bash-tool.d.ts.map +1 -1
  216. package/lib/plugin-runtime/native-bash-tool.js +32 -8
  217. package/lib/plugin-runtime/native-bash-tool.js.map +1 -1
  218. package/lib/plugin-runtime/native-file-tools.d.ts.map +1 -1
  219. package/lib/plugin-runtime/native-file-tools.js +120 -51
  220. package/lib/plugin-runtime/native-file-tools.js.map +1 -1
  221. package/lib/plugin-runtime/native-semantic-memory-tools.d.ts +27 -1
  222. package/lib/plugin-runtime/native-semantic-memory-tools.d.ts.map +1 -1
  223. package/lib/plugin-runtime/native-semantic-memory-tools.js +87 -9
  224. package/lib/plugin-runtime/native-semantic-memory-tools.js.map +1 -1
  225. package/lib/plugin-runtime/subagent-turn-capability.d.ts +32 -0
  226. package/lib/plugin-runtime/subagent-turn-capability.d.ts.map +1 -0
  227. package/lib/plugin-runtime/subagent-turn-capability.js +168 -0
  228. package/lib/plugin-runtime/subagent-turn-capability.js.map +1 -0
  229. package/lib/prompt/estimate-tokens.d.ts +7 -0
  230. package/lib/prompt/estimate-tokens.d.ts.map +1 -0
  231. package/lib/prompt/estimate-tokens.js +12 -0
  232. package/lib/prompt/estimate-tokens.js.map +1 -0
  233. package/lib/prompt/system-prompt.d.ts +2 -0
  234. package/lib/prompt/system-prompt.d.ts.map +1 -1
  235. package/lib/prompt/system-prompt.js +13 -2
  236. package/lib/prompt/system-prompt.js.map +1 -1
  237. package/lib/routing/subagent-summarize.d.ts +1 -1
  238. package/lib/routing/subagent-summarize.d.ts.map +1 -1
  239. package/lib/routing/subagent-summarize.js +2 -2
  240. package/lib/routing/subagent-summarize.js.map +1 -1
  241. package/lib/security/file-role-policy.d.ts +4 -2
  242. package/lib/security/file-role-policy.d.ts.map +1 -1
  243. package/lib/security/file-role-policy.js +21 -9
  244. package/lib/security/file-role-policy.js.map +1 -1
  245. package/lib/security/network-authority.d.ts +24 -0
  246. package/lib/security/network-authority.d.ts.map +1 -0
  247. package/lib/security/network-authority.js +28 -0
  248. package/lib/security/network-authority.js.map +1 -0
  249. package/lib/security/outbound-leak-guard.d.ts +61 -0
  250. package/lib/security/outbound-leak-guard.d.ts.map +1 -0
  251. package/lib/security/outbound-leak-guard.js +145 -0
  252. package/lib/security/outbound-leak-guard.js.map +1 -0
  253. package/lib/security/policy-facade.d.ts.map +1 -1
  254. package/lib/security/policy-facade.js +12 -2
  255. package/lib/security/policy-facade.js.map +1 -1
  256. package/lib/security/policy-narrowing.d.ts +12 -0
  257. package/lib/security/policy-narrowing.d.ts.map +1 -0
  258. package/lib/security/policy-narrowing.js +38 -0
  259. package/lib/security/policy-narrowing.js.map +1 -0
  260. package/lib/security/provenance.d.ts +65 -0
  261. package/lib/security/provenance.d.ts.map +1 -0
  262. package/lib/security/provenance.js +112 -0
  263. package/lib/security/provenance.js.map +1 -0
  264. package/lib/security/trust-level.d.ts +76 -0
  265. package/lib/security/trust-level.d.ts.map +1 -0
  266. package/lib/security/trust-level.js +87 -0
  267. package/lib/security/trust-level.js.map +1 -0
  268. package/lib/security/turn-network-client.d.ts.map +1 -1
  269. package/lib/security/turn-network-client.js +2 -1
  270. package/lib/security/turn-network-client.js.map +1 -1
  271. package/lib/security/usage-quota.d.ts +73 -0
  272. package/lib/security/usage-quota.d.ts.map +1 -0
  273. package/lib/security/usage-quota.js +123 -0
  274. package/lib/security/usage-quota.js.map +1 -0
  275. package/lib/service.d.ts +9 -1
  276. package/lib/service.d.ts.map +1 -1
  277. package/lib/service.js +17 -2
  278. package/lib/service.js.map +1 -1
  279. package/lib/session/approval-port.d.ts +26 -0
  280. package/lib/session/approval-port.d.ts.map +1 -1
  281. package/lib/session/approval-port.js +36 -0
  282. package/lib/session/approval-port.js.map +1 -1
  283. package/lib/session/approval-review-agent.d.ts +2 -2
  284. package/lib/session/approval-review-agent.d.ts.map +1 -1
  285. package/lib/session/approval-review-agent.js +57 -39
  286. package/lib/session/approval-review-agent.js.map +1 -1
  287. package/lib/session/session-io.d.ts.map +1 -1
  288. package/lib/session/session-io.js +1 -0
  289. package/lib/session/session-io.js.map +1 -1
  290. package/lib/session/turn-ingress-session.d.ts.map +1 -1
  291. package/lib/session/turn-ingress-session.js +1 -0
  292. package/lib/session/turn-ingress-session.js.map +1 -1
  293. package/lib/skill/capability-catalog.d.ts +27 -0
  294. package/lib/skill/capability-catalog.d.ts.map +1 -0
  295. package/lib/skill/capability-catalog.js +70 -0
  296. package/lib/skill/capability-catalog.js.map +1 -0
  297. package/lib/tool/deferred-resolution.d.ts.map +1 -1
  298. package/lib/tool/deferred-resolution.js +2 -1
  299. package/lib/tool/deferred-resolution.js.map +1 -1
  300. package/lib/tool/turn-tool-runtime.d.ts +13 -1
  301. package/lib/tool/turn-tool-runtime.d.ts.map +1 -1
  302. package/lib/tool/turn-tool-runtime.js +81 -7
  303. package/lib/tool/turn-tool-runtime.js.map +1 -1
  304. package/lib/tool-catalog/deferred-turn-controller.d.ts +4 -0
  305. package/lib/tool-catalog/deferred-turn-controller.d.ts.map +1 -1
  306. package/lib/tool-catalog/deferred-turn-controller.js +13 -3
  307. package/lib/tool-catalog/deferred-turn-controller.js.map +1 -1
  308. package/lib/tool-catalog/resolve-config.d.ts.map +1 -1
  309. package/lib/tool-catalog/resolve-config.js +5 -1
  310. package/lib/tool-catalog/resolve-config.js.map +1 -1
  311. package/lib/tool-catalog/types.d.ts +14 -1
  312. package/lib/tool-catalog/types.d.ts.map +1 -1
  313. package/lib/tool-catalog/types.js +15 -0
  314. package/lib/tool-catalog/types.js.map +1 -1
  315. package/lib/trace/context-budget.d.ts +56 -0
  316. package/lib/trace/context-budget.d.ts.map +1 -0
  317. package/lib/trace/context-budget.js +102 -0
  318. package/lib/trace/context-budget.js.map +1 -0
  319. package/lib/trace/index.d.ts +12 -0
  320. package/lib/trace/index.d.ts.map +1 -0
  321. package/lib/trace/index.js +7 -0
  322. package/lib/trace/index.js.map +1 -0
  323. package/lib/trace/turn-trace-archive.d.ts +49 -0
  324. package/lib/trace/turn-trace-archive.d.ts.map +1 -0
  325. package/lib/trace/turn-trace-archive.js +208 -0
  326. package/lib/trace/turn-trace-archive.js.map +1 -0
  327. package/lib/trace/turn-trace-format.d.ts +10 -0
  328. package/lib/trace/turn-trace-format.d.ts.map +1 -0
  329. package/lib/trace/turn-trace-format.js +132 -0
  330. package/lib/trace/turn-trace-format.js.map +1 -0
  331. package/lib/trace/turn-trace-registry.d.ts +30 -0
  332. package/lib/trace/turn-trace-registry.d.ts.map +1 -0
  333. package/lib/trace/turn-trace-registry.js +62 -0
  334. package/lib/trace/turn-trace-registry.js.map +1 -0
  335. package/lib/trace/turn-trace-store.d.ts +15 -0
  336. package/lib/trace/turn-trace-store.d.ts.map +1 -0
  337. package/lib/trace/turn-trace-store.js +67 -0
  338. package/lib/trace/turn-trace-store.js.map +1 -0
  339. package/lib/trace/turn-trace.d.ts +147 -0
  340. package/lib/trace/turn-trace.d.ts.map +1 -0
  341. package/lib/trace/turn-trace.js +341 -0
  342. package/lib/trace/turn-trace.js.map +1 -0
  343. package/lib/turn/execute-agent-turn.d.ts.map +1 -1
  344. package/lib/turn/execute-agent-turn.js +21 -10
  345. package/lib/turn/execute-agent-turn.js.map +1 -1
  346. package/lib/turn/inbound-media.d.ts +15 -0
  347. package/lib/turn/inbound-media.d.ts.map +1 -1
  348. package/lib/turn/inbound-media.js +41 -1
  349. package/lib/turn/inbound-media.js.map +1 -1
  350. package/lib/turn/inbound-queue-config.d.ts +1 -0
  351. package/lib/turn/inbound-queue-config.d.ts.map +1 -1
  352. package/lib/turn/inbound-queue-config.js +9 -1
  353. package/lib/turn/inbound-queue-config.js.map +1 -1
  354. package/lib/turn/index.d.ts +5 -0
  355. package/lib/turn/index.d.ts.map +1 -1
  356. package/lib/turn/index.js +4 -0
  357. package/lib/turn/index.js.map +1 -1
  358. package/lib/turn/journal-feed.d.ts +31 -0
  359. package/lib/turn/journal-feed.d.ts.map +1 -0
  360. package/lib/turn/journal-feed.js +43 -0
  361. package/lib/turn/journal-feed.js.map +1 -0
  362. package/lib/turn/turn-admission-gate.d.ts +62 -0
  363. package/lib/turn/turn-admission-gate.d.ts.map +1 -0
  364. package/lib/turn/turn-admission-gate.js +194 -0
  365. package/lib/turn/turn-admission-gate.js.map +1 -0
  366. package/lib/turn/turn-ingress.d.ts +4 -0
  367. package/lib/turn/turn-ingress.d.ts.map +1 -1
  368. package/lib/turn/turn-ingress.js.map +1 -1
  369. package/lib/turn/turn-pipeline.js +1 -0
  370. package/lib/turn/turn-pipeline.js.map +1 -1
  371. package/lib/zhin-agent/index.d.ts +9 -0
  372. package/lib/zhin-agent/index.d.ts.map +1 -1
  373. package/lib/zhin-agent/index.js +13 -0
  374. package/lib/zhin-agent/index.js.map +1 -1
  375. package/package.json +21 -33
  376. package/lib/data-governance/data-governance.d.ts +0 -198
  377. package/lib/data-governance/data-governance.d.ts.map +0 -1
  378. package/lib/data-governance/data-governance.js +0 -660
  379. package/lib/data-governance/data-governance.js.map +0 -1
  380. package/lib/data-governance/database-payload-lifecycle-repository.d.ts +0 -68
  381. package/lib/data-governance/database-payload-lifecycle-repository.d.ts.map +0 -1
  382. package/lib/data-governance/database-payload-lifecycle-repository.js +0 -226
  383. package/lib/data-governance/database-payload-lifecycle-repository.js.map +0 -1
  384. package/lib/data-governance/disclosure-authority.d.ts +0 -38
  385. package/lib/data-governance/disclosure-authority.d.ts.map +0 -1
  386. package/lib/data-governance/disclosure-authority.js +0 -2
  387. package/lib/data-governance/disclosure-authority.js.map +0 -1
  388. package/lib/data-governance/disclosure-manifest.d.ts +0 -110
  389. package/lib/data-governance/disclosure-manifest.d.ts.map +0 -1
  390. package/lib/data-governance/disclosure-manifest.js +0 -264
  391. package/lib/data-governance/disclosure-manifest.js.map +0 -1
  392. package/lib/data-governance/encrypted-database-payload-vault.d.ts +0 -107
  393. package/lib/data-governance/encrypted-database-payload-vault.d.ts.map +0 -1
  394. package/lib/data-governance/encrypted-database-payload-vault.js +0 -236
  395. package/lib/data-governance/encrypted-database-payload-vault.js.map +0 -1
  396. package/lib/data-governance/encrypted-file-payload-vault.d.ts +0 -117
  397. package/lib/data-governance/encrypted-file-payload-vault.d.ts.map +0 -1
  398. package/lib/data-governance/encrypted-file-payload-vault.js +0 -507
  399. package/lib/data-governance/encrypted-file-payload-vault.js.map +0 -1
  400. package/lib/data-governance/file-payload-lifecycle-repository.d.ts +0 -19
  401. package/lib/data-governance/file-payload-lifecycle-repository.d.ts.map +0 -1
  402. package/lib/data-governance/file-payload-lifecycle-repository.js +0 -194
  403. package/lib/data-governance/file-payload-lifecycle-repository.js.map +0 -1
  404. package/lib/data-governance/governance-authority-repository.d.ts +0 -152
  405. package/lib/data-governance/governance-authority-repository.d.ts.map +0 -1
  406. package/lib/data-governance/governance-authority-repository.js +0 -455
  407. package/lib/data-governance/governance-authority-repository.js.map +0 -1
  408. package/lib/data-governance/governed-payload-write-saga.d.ts +0 -126
  409. package/lib/data-governance/governed-payload-write-saga.d.ts.map +0 -1
  410. package/lib/data-governance/governed-payload-write-saga.js +0 -471
  411. package/lib/data-governance/governed-payload-write-saga.js.map +0 -1
  412. package/lib/data-governance/payload-hold-overdue-projection.d.ts +0 -57
  413. package/lib/data-governance/payload-hold-overdue-projection.d.ts.map +0 -1
  414. package/lib/data-governance/payload-hold-overdue-projection.js +0 -80
  415. package/lib/data-governance/payload-hold-overdue-projection.js.map +0 -1
  416. package/lib/data-governance/payload-lifecycle.d.ts +0 -359
  417. package/lib/data-governance/payload-lifecycle.d.ts.map +0 -1
  418. package/lib/data-governance/payload-lifecycle.js +0 -930
  419. package/lib/data-governance/payload-lifecycle.js.map +0 -1
  420. package/lib/data-governance/payload-vault-storage-handoff.d.ts +0 -255
  421. package/lib/data-governance/payload-vault-storage-handoff.d.ts.map +0 -1
  422. package/lib/data-governance/payload-vault-storage-handoff.js +0 -471
  423. package/lib/data-governance/payload-vault-storage-handoff.js.map +0 -1
  424. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.d.ts +0 -70
  425. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.d.ts.map +0 -1
  426. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.js +0 -203
  427. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.js.map +0 -1
  428. package/lib/plugin-runtime/github-actions-delivery-provider.d.ts +0 -44
  429. package/lib/plugin-runtime/github-actions-delivery-provider.d.ts.map +0 -1
  430. package/lib/plugin-runtime/github-actions-delivery-provider.js +0 -246
  431. package/lib/plugin-runtime/github-actions-delivery-provider.js.map +0 -1
  432. package/lib/plugin-runtime/github-exact-merge-gateway.d.ts +0 -62
  433. package/lib/plugin-runtime/github-exact-merge-gateway.d.ts.map +0 -1
  434. package/lib/plugin-runtime/github-exact-merge-gateway.js +0 -79
  435. package/lib/plugin-runtime/github-exact-merge-gateway.js.map +0 -1
  436. package/lib/plugin-runtime/github-workroom-capability.d.ts +0 -15
  437. package/lib/plugin-runtime/github-workroom-capability.d.ts.map +0 -1
  438. package/lib/plugin-runtime/github-workroom-capability.js +0 -79
  439. package/lib/plugin-runtime/github-workroom-capability.js.map +0 -1
  440. package/lib/plugin-runtime/self-delivery-project-composition.d.ts +0 -25
  441. package/lib/plugin-runtime/self-delivery-project-composition.d.ts.map +0 -1
  442. package/lib/plugin-runtime/self-delivery-project-composition.js +0 -85
  443. package/lib/plugin-runtime/self-delivery-project-composition.js.map +0 -1
  444. package/lib/plugin-runtime/self-delivery-project.d.ts +0 -65
  445. package/lib/plugin-runtime/self-delivery-project.d.ts.map +0 -1
  446. package/lib/plugin-runtime/self-delivery-project.js +0 -140
  447. package/lib/plugin-runtime/self-delivery-project.js.map +0 -1
  448. package/lib/plugin-runtime/workroom-acceptance-authority.d.ts +0 -5
  449. package/lib/plugin-runtime/workroom-acceptance-authority.d.ts.map +0 -1
  450. package/lib/plugin-runtime/workroom-acceptance-authority.js +0 -14
  451. package/lib/plugin-runtime/workroom-acceptance-authority.js.map +0 -1
  452. package/lib/plugin-runtime/workroom-acceptance-fact-providers.d.ts +0 -233
  453. package/lib/plugin-runtime/workroom-acceptance-fact-providers.d.ts.map +0 -1
  454. package/lib/plugin-runtime/workroom-acceptance-fact-providers.js +0 -517
  455. package/lib/plugin-runtime/workroom-acceptance-fact-providers.js.map +0 -1
  456. package/lib/plugin-runtime/workroom-acceptance-internal-providers.d.ts +0 -139
  457. package/lib/plugin-runtime/workroom-acceptance-internal-providers.d.ts.map +0 -1
  458. package/lib/plugin-runtime/workroom-acceptance-internal-providers.js +0 -435
  459. package/lib/plugin-runtime/workroom-acceptance-internal-providers.js.map +0 -1
  460. package/lib/plugin-runtime/workroom-acceptance-policy.d.ts +0 -4
  461. package/lib/plugin-runtime/workroom-acceptance-policy.d.ts.map +0 -1
  462. package/lib/plugin-runtime/workroom-acceptance-policy.js +0 -20
  463. package/lib/plugin-runtime/workroom-acceptance-policy.js.map +0 -1
  464. package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts +0 -177
  465. package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts.map +0 -1
  466. package/lib/plugin-runtime/workroom-acceptance-production-composition.js +0 -794
  467. package/lib/plugin-runtime/workroom-acceptance-production-composition.js.map +0 -1
  468. package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts +0 -189
  469. package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts.map +0 -1
  470. package/lib/plugin-runtime/workroom-acceptance-provider-composition.js +0 -590
  471. package/lib/plugin-runtime/workroom-acceptance-provider-composition.js.map +0 -1
  472. package/lib/plugin-runtime/workroom-accepted-source-runtime.d.ts +0 -75
  473. package/lib/plugin-runtime/workroom-accepted-source-runtime.d.ts.map +0 -1
  474. package/lib/plugin-runtime/workroom-accepted-source-runtime.js +0 -267
  475. package/lib/plugin-runtime/workroom-accepted-source-runtime.js.map +0 -1
  476. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.d.ts +0 -42
  477. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.d.ts.map +0 -1
  478. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.js +0 -90
  479. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.js.map +0 -1
  480. package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts +0 -84
  481. package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts.map +0 -1
  482. package/lib/plugin-runtime/workroom-assignment-authority-provider.js +0 -494
  483. package/lib/plugin-runtime/workroom-assignment-authority-provider.js.map +0 -1
  484. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.d.ts +0 -58
  485. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.d.ts.map +0 -1
  486. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.js +0 -218
  487. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.js.map +0 -1
  488. package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts +0 -49
  489. package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts.map +0 -1
  490. package/lib/plugin-runtime/workroom-data-governance-authority-writer.js +0 -140
  491. package/lib/plugin-runtime/workroom-data-governance-authority-writer.js.map +0 -1
  492. package/lib/plugin-runtime/workroom-data-governance-bootstrap.d.ts +0 -27
  493. package/lib/plugin-runtime/workroom-data-governance-bootstrap.d.ts.map +0 -1
  494. package/lib/plugin-runtime/workroom-data-governance-bootstrap.js +0 -324
  495. package/lib/plugin-runtime/workroom-data-governance-bootstrap.js.map +0 -1
  496. package/lib/plugin-runtime/workroom-data-governance-composition.d.ts +0 -28
  497. package/lib/plugin-runtime/workroom-data-governance-composition.d.ts.map +0 -1
  498. package/lib/plugin-runtime/workroom-data-governance-composition.js +0 -41
  499. package/lib/plugin-runtime/workroom-data-governance-composition.js.map +0 -1
  500. package/lib/plugin-runtime/workroom-data-governance-root-provider.d.ts +0 -51
  501. package/lib/plugin-runtime/workroom-data-governance-root-provider.d.ts.map +0 -1
  502. package/lib/plugin-runtime/workroom-data-governance-root-provider.js +0 -66
  503. package/lib/plugin-runtime/workroom-data-governance-root-provider.js.map +0 -1
  504. package/lib/plugin-runtime/workroom-data-governance-runtime.d.ts +0 -100
  505. package/lib/plugin-runtime/workroom-data-governance-runtime.d.ts.map +0 -1
  506. package/lib/plugin-runtime/workroom-data-governance-runtime.js +0 -1356
  507. package/lib/plugin-runtime/workroom-data-governance-runtime.js.map +0 -1
  508. package/lib/plugin-runtime/workroom-data-governance-storage.d.ts +0 -66
  509. package/lib/plugin-runtime/workroom-data-governance-storage.d.ts.map +0 -1
  510. package/lib/plugin-runtime/workroom-data-governance-storage.js +0 -159
  511. package/lib/plugin-runtime/workroom-data-governance-storage.js.map +0 -1
  512. package/lib/plugin-runtime/workroom-data-lifecycle-composition.d.ts +0 -37
  513. package/lib/plugin-runtime/workroom-data-lifecycle-composition.d.ts.map +0 -1
  514. package/lib/plugin-runtime/workroom-data-lifecycle-composition.js +0 -131
  515. package/lib/plugin-runtime/workroom-data-lifecycle-composition.js.map +0 -1
  516. package/lib/plugin-runtime/workroom-data-lifecycle-console.d.ts +0 -238
  517. package/lib/plugin-runtime/workroom-data-lifecycle-console.d.ts.map +0 -1
  518. package/lib/plugin-runtime/workroom-data-lifecycle-console.js +0 -495
  519. package/lib/plugin-runtime/workroom-data-lifecycle-console.js.map +0 -1
  520. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.d.ts +0 -15
  521. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.d.ts.map +0 -1
  522. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.js +0 -119
  523. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.js.map +0 -1
  524. package/lib/plugin-runtime/workroom-delivery-gateway.d.ts +0 -96
  525. package/lib/plugin-runtime/workroom-delivery-gateway.d.ts.map +0 -1
  526. package/lib/plugin-runtime/workroom-delivery-gateway.js +0 -129
  527. package/lib/plugin-runtime/workroom-delivery-gateway.js.map +0 -1
  528. package/lib/plugin-runtime/workroom-dynamic-planning-provider.d.ts +0 -142
  529. package/lib/plugin-runtime/workroom-dynamic-planning-provider.d.ts.map +0 -1
  530. package/lib/plugin-runtime/workroom-dynamic-planning-provider.js +0 -302
  531. package/lib/plugin-runtime/workroom-dynamic-planning-provider.js.map +0 -1
  532. package/lib/plugin-runtime/workroom-dynamic-planning.d.ts +0 -4
  533. package/lib/plugin-runtime/workroom-dynamic-planning.d.ts.map +0 -1
  534. package/lib/plugin-runtime/workroom-dynamic-planning.js +0 -13
  535. package/lib/plugin-runtime/workroom-dynamic-planning.js.map +0 -1
  536. package/lib/plugin-runtime/workroom-effect-composition.d.ts +0 -37
  537. package/lib/plugin-runtime/workroom-effect-composition.d.ts.map +0 -1
  538. package/lib/plugin-runtime/workroom-effect-composition.js +0 -80
  539. package/lib/plugin-runtime/workroom-effect-composition.js.map +0 -1
  540. package/lib/plugin-runtime/workroom-effect-production.d.ts +0 -138
  541. package/lib/plugin-runtime/workroom-effect-production.d.ts.map +0 -1
  542. package/lib/plugin-runtime/workroom-effect-production.js +0 -291
  543. package/lib/plugin-runtime/workroom-effect-production.js.map +0 -1
  544. package/lib/plugin-runtime/workroom-effect-runtime.d.ts +0 -56
  545. package/lib/plugin-runtime/workroom-effect-runtime.d.ts.map +0 -1
  546. package/lib/plugin-runtime/workroom-effect-runtime.js +0 -239
  547. package/lib/plugin-runtime/workroom-effect-runtime.js.map +0 -1
  548. package/lib/plugin-runtime/workroom-governed-dispatch-composition.d.ts +0 -32
  549. package/lib/plugin-runtime/workroom-governed-dispatch-composition.d.ts.map +0 -1
  550. package/lib/plugin-runtime/workroom-governed-dispatch-composition.js +0 -43
  551. package/lib/plugin-runtime/workroom-governed-dispatch-composition.js.map +0 -1
  552. package/lib/plugin-runtime/workroom-journal-payload-composition.d.ts +0 -16
  553. package/lib/plugin-runtime/workroom-journal-payload-composition.d.ts.map +0 -1
  554. package/lib/plugin-runtime/workroom-journal-payload-composition.js +0 -69
  555. package/lib/plugin-runtime/workroom-journal-payload-composition.js.map +0 -1
  556. package/lib/plugin-runtime/workroom-local-agent-core-adapter.d.ts +0 -17
  557. package/lib/plugin-runtime/workroom-local-agent-core-adapter.d.ts.map +0 -1
  558. package/lib/plugin-runtime/workroom-local-agent-core-adapter.js +0 -101
  559. package/lib/plugin-runtime/workroom-local-agent-core-adapter.js.map +0 -1
  560. package/lib/plugin-runtime/workroom-local-agent-loop.d.ts +0 -91
  561. package/lib/plugin-runtime/workroom-local-agent-loop.d.ts.map +0 -1
  562. package/lib/plugin-runtime/workroom-local-agent-loop.js +0 -313
  563. package/lib/plugin-runtime/workroom-local-agent-loop.js.map +0 -1
  564. package/lib/plugin-runtime/workroom-local-assignment-authority.d.ts +0 -5
  565. package/lib/plugin-runtime/workroom-local-assignment-authority.d.ts.map +0 -1
  566. package/lib/plugin-runtime/workroom-local-assignment-authority.js +0 -16
  567. package/lib/plugin-runtime/workroom-local-assignment-authority.js.map +0 -1
  568. package/lib/plugin-runtime/workroom-local-assignment-executor.d.ts +0 -59
  569. package/lib/plugin-runtime/workroom-local-assignment-executor.d.ts.map +0 -1
  570. package/lib/plugin-runtime/workroom-local-assignment-executor.js +0 -197
  571. package/lib/plugin-runtime/workroom-local-assignment-executor.js.map +0 -1
  572. package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts +0 -34
  573. package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts.map +0 -1
  574. package/lib/plugin-runtime/workroom-local-assignment-runtime.js +0 -235
  575. package/lib/plugin-runtime/workroom-local-assignment-runtime.js.map +0 -1
  576. package/lib/plugin-runtime/workroom-local-assignment-supply.d.ts +0 -39
  577. package/lib/plugin-runtime/workroom-local-assignment-supply.d.ts.map +0 -1
  578. package/lib/plugin-runtime/workroom-local-assignment-supply.js +0 -107
  579. package/lib/plugin-runtime/workroom-local-assignment-supply.js.map +0 -1
  580. package/lib/plugin-runtime/workroom-overlay-pack-promotion.d.ts +0 -145
  581. package/lib/plugin-runtime/workroom-overlay-pack-promotion.d.ts.map +0 -1
  582. package/lib/plugin-runtime/workroom-overlay-pack-promotion.js +0 -516
  583. package/lib/plugin-runtime/workroom-overlay-pack-promotion.js.map +0 -1
  584. package/lib/plugin-runtime/workroom-payload-processor-recall.d.ts +0 -91
  585. package/lib/plugin-runtime/workroom-payload-processor-recall.d.ts.map +0 -1
  586. package/lib/plugin-runtime/workroom-payload-processor-recall.js +0 -189
  587. package/lib/plugin-runtime/workroom-payload-processor-recall.js.map +0 -1
  588. package/lib/plugin-runtime/workroom-plan-gate-authority.d.ts +0 -7
  589. package/lib/plugin-runtime/workroom-plan-gate-authority.d.ts.map +0 -1
  590. package/lib/plugin-runtime/workroom-plan-gate-authority.js +0 -40
  591. package/lib/plugin-runtime/workroom-plan-gate-authority.js.map +0 -1
  592. package/lib/plugin-runtime/workroom-portfolio-capacity.d.ts +0 -132
  593. package/lib/plugin-runtime/workroom-portfolio-capacity.d.ts.map +0 -1
  594. package/lib/plugin-runtime/workroom-portfolio-capacity.js +0 -189
  595. package/lib/plugin-runtime/workroom-portfolio-capacity.js.map +0 -1
  596. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.d.ts +0 -38
  597. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.d.ts.map +0 -1
  598. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.js +0 -103
  599. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.js.map +0 -1
  600. package/lib/plugin-runtime/workroom-portfolio-control-composition.d.ts +0 -30
  601. package/lib/plugin-runtime/workroom-portfolio-control-composition.d.ts.map +0 -1
  602. package/lib/plugin-runtime/workroom-portfolio-control-composition.js +0 -103
  603. package/lib/plugin-runtime/workroom-portfolio-control-composition.js.map +0 -1
  604. package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts +0 -42
  605. package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts.map +0 -1
  606. package/lib/plugin-runtime/workroom-portfolio-control-runtime.js +0 -209
  607. package/lib/plugin-runtime/workroom-portfolio-control-runtime.js.map +0 -1
  608. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.d.ts +0 -141
  609. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.d.ts.map +0 -1
  610. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js +0 -334
  611. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js.map +0 -1
  612. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.d.ts +0 -23
  613. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.d.ts.map +0 -1
  614. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js +0 -88
  615. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js.map +0 -1
  616. package/lib/plugin-runtime/workroom-portfolio-sponsor.d.ts +0 -96
  617. package/lib/plugin-runtime/workroom-portfolio-sponsor.d.ts.map +0 -1
  618. package/lib/plugin-runtime/workroom-portfolio-sponsor.js +0 -313
  619. package/lib/plugin-runtime/workroom-portfolio-sponsor.js.map +0 -1
  620. package/lib/plugin-runtime/workroom-preemption-runtime.d.ts +0 -57
  621. package/lib/plugin-runtime/workroom-preemption-runtime.d.ts.map +0 -1
  622. package/lib/plugin-runtime/workroom-preemption-runtime.js +0 -163
  623. package/lib/plugin-runtime/workroom-preemption-runtime.js.map +0 -1
  624. package/lib/plugin-runtime/workroom-priority-authority.d.ts +0 -19
  625. package/lib/plugin-runtime/workroom-priority-authority.d.ts.map +0 -1
  626. package/lib/plugin-runtime/workroom-priority-authority.js +0 -76
  627. package/lib/plugin-runtime/workroom-priority-authority.js.map +0 -1
  628. package/lib/plugin-runtime/workroom-profile-authority-composition.d.ts +0 -61
  629. package/lib/plugin-runtime/workroom-profile-authority-composition.d.ts.map +0 -1
  630. package/lib/plugin-runtime/workroom-profile-authority-composition.js +0 -232
  631. package/lib/plugin-runtime/workroom-profile-authority-composition.js.map +0 -1
  632. package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts +0 -229
  633. package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts.map +0 -1
  634. package/lib/plugin-runtime/workroom-profile-authority-runtime.js +0 -1133
  635. package/lib/plugin-runtime/workroom-profile-authority-runtime.js.map +0 -1
  636. package/lib/plugin-runtime/workroom-projection-outbound.d.ts +0 -10
  637. package/lib/plugin-runtime/workroom-projection-outbound.d.ts.map +0 -1
  638. package/lib/plugin-runtime/workroom-projection-outbound.js +0 -35
  639. package/lib/plugin-runtime/workroom-projection-outbound.js.map +0 -1
  640. package/lib/plugin-runtime/workroom-projection-runtime.d.ts +0 -93
  641. package/lib/plugin-runtime/workroom-projection-runtime.d.ts.map +0 -1
  642. package/lib/plugin-runtime/workroom-projection-runtime.js +0 -476
  643. package/lib/plugin-runtime/workroom-projection-runtime.js.map +0 -1
  644. package/lib/plugin-runtime/workroom-remote-assignment-authority.d.ts +0 -9
  645. package/lib/plugin-runtime/workroom-remote-assignment-authority.d.ts.map +0 -1
  646. package/lib/plugin-runtime/workroom-remote-assignment-authority.js +0 -20
  647. package/lib/plugin-runtime/workroom-remote-assignment-authority.js.map +0 -1
  648. package/lib/plugin-runtime/workroom-remote-callback-runtime.d.ts +0 -38
  649. package/lib/plugin-runtime/workroom-remote-callback-runtime.d.ts.map +0 -1
  650. package/lib/plugin-runtime/workroom-remote-callback-runtime.js +0 -80
  651. package/lib/plugin-runtime/workroom-remote-callback-runtime.js.map +0 -1
  652. package/lib/plugin-runtime/workroom-remote-executor.d.ts +0 -9
  653. package/lib/plugin-runtime/workroom-remote-executor.d.ts.map +0 -1
  654. package/lib/plugin-runtime/workroom-remote-executor.js +0 -23
  655. package/lib/plugin-runtime/workroom-remote-executor.js.map +0 -1
  656. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.d.ts +0 -72
  657. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.d.ts.map +0 -1
  658. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.js +0 -142
  659. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.js.map +0 -1
  660. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.d.ts +0 -112
  661. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.d.ts.map +0 -1
  662. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.js +0 -376
  663. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.js.map +0 -1
  664. package/lib/plugin-runtime/workroom-run-profile-pin-authority.d.ts +0 -42
  665. package/lib/plugin-runtime/workroom-run-profile-pin-authority.d.ts.map +0 -1
  666. package/lib/plugin-runtime/workroom-run-profile-pin-authority.js +0 -125
  667. package/lib/plugin-runtime/workroom-run-profile-pin-authority.js.map +0 -1
  668. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts +0 -32
  669. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts.map +0 -1
  670. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js +0 -83
  671. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js.map +0 -1
  672. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.d.ts +0 -16
  673. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.d.ts.map +0 -1
  674. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.js +0 -49
  675. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.js.map +0 -1
  676. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts +0 -66
  677. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts.map +0 -1
  678. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js +0 -250
  679. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js.map +0 -1
  680. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts +0 -42
  681. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts.map +0 -1
  682. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js +0 -141
  683. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js.map +0 -1
  684. package/lib/plugin-runtime/workroom-scheduler-route-registry.d.ts +0 -27
  685. package/lib/plugin-runtime/workroom-scheduler-route-registry.d.ts.map +0 -1
  686. package/lib/plugin-runtime/workroom-scheduler-route-registry.js +0 -136
  687. package/lib/plugin-runtime/workroom-scheduler-route-registry.js.map +0 -1
  688. package/lib/plugin-runtime/workroom-scheduler-runtime.d.ts +0 -84
  689. package/lib/plugin-runtime/workroom-scheduler-runtime.d.ts.map +0 -1
  690. package/lib/plugin-runtime/workroom-scheduler-runtime.js +0 -236
  691. package/lib/plugin-runtime/workroom-scheduler-runtime.js.map +0 -1
  692. package/lib/portfolio/capacity-control-outbox.d.ts +0 -174
  693. package/lib/portfolio/capacity-control-outbox.d.ts.map +0 -1
  694. package/lib/portfolio/capacity-control-outbox.js +0 -338
  695. package/lib/portfolio/capacity-control-outbox.js.map +0 -1
  696. package/lib/portfolio/database-capacity-control-outbox.d.ts +0 -62
  697. package/lib/portfolio/database-capacity-control-outbox.d.ts.map +0 -1
  698. package/lib/portfolio/database-capacity-control-outbox.js +0 -166
  699. package/lib/portfolio/database-capacity-control-outbox.js.map +0 -1
  700. package/lib/portfolio/file-capacity-control-outbox.d.ts +0 -10
  701. package/lib/portfolio/file-capacity-control-outbox.d.ts.map +0 -1
  702. package/lib/portfolio/file-capacity-control-outbox.js +0 -113
  703. package/lib/portfolio/file-capacity-control-outbox.js.map +0 -1
  704. package/lib/portfolio/file-portfolio-journal.d.ts +0 -11
  705. package/lib/portfolio/file-portfolio-journal.d.ts.map +0 -1
  706. package/lib/portfolio/file-portfolio-journal.js +0 -196
  707. package/lib/portfolio/file-portfolio-journal.js.map +0 -1
  708. package/lib/portfolio/portfolio-admission.d.ts +0 -95
  709. package/lib/portfolio/portfolio-admission.d.ts.map +0 -1
  710. package/lib/portfolio/portfolio-admission.js +0 -1080
  711. package/lib/portfolio/portfolio-admission.js.map +0 -1
  712. package/lib/portfolio/portfolio-journal.d.ts +0 -359
  713. package/lib/portfolio/portfolio-journal.d.ts.map +0 -1
  714. package/lib/portfolio/portfolio-journal.js +0 -844
  715. package/lib/portfolio/portfolio-journal.js.map +0 -1
  716. package/lib/portfolio/resource-bundle.d.ts +0 -136
  717. package/lib/portfolio/resource-bundle.d.ts.map +0 -1
  718. package/lib/portfolio/resource-bundle.js +0 -387
  719. package/lib/portfolio/resource-bundle.js.map +0 -1
  720. package/lib/portfolio/sponsor-projection.d.ts +0 -78
  721. package/lib/portfolio/sponsor-projection.d.ts.map +0 -1
  722. package/lib/portfolio/sponsor-projection.js +0 -135
  723. package/lib/portfolio/sponsor-projection.js.map +0 -1
  724. package/lib/routing/match-rules.d.ts +0 -4
  725. package/lib/routing/match-rules.d.ts.map +0 -1
  726. package/lib/routing/match-rules.js +0 -29
  727. package/lib/routing/match-rules.js.map +0 -1
  728. package/lib/routing/route-matcher.d.ts +0 -16
  729. package/lib/routing/route-matcher.d.ts.map +0 -1
  730. package/lib/routing/route-matcher.js +0 -62
  731. package/lib/routing/route-matcher.js.map +0 -1
  732. package/lib/routing/workroom-bot-identity.d.ts +0 -22
  733. package/lib/routing/workroom-bot-identity.d.ts.map +0 -1
  734. package/lib/routing/workroom-bot-identity.js +0 -53
  735. package/lib/routing/workroom-bot-identity.js.map +0 -1
  736. package/lib/workroom/acceptance-control.d.ts +0 -77
  737. package/lib/workroom/acceptance-control.d.ts.map +0 -1
  738. package/lib/workroom/acceptance-control.js +0 -345
  739. package/lib/workroom/acceptance-control.js.map +0 -1
  740. package/lib/workroom/acceptance-policy.d.ts +0 -152
  741. package/lib/workroom/acceptance-policy.d.ts.map +0 -1
  742. package/lib/workroom/acceptance-policy.js +0 -610
  743. package/lib/workroom/acceptance-policy.js.map +0 -1
  744. package/lib/workroom/accepted-source-memory-application.d.ts +0 -113
  745. package/lib/workroom/accepted-source-memory-application.d.ts.map +0 -1
  746. package/lib/workroom/accepted-source-memory-application.js +0 -327
  747. package/lib/workroom/accepted-source-memory-application.js.map +0 -1
  748. package/lib/workroom/accepted-source-projector.d.ts +0 -89
  749. package/lib/workroom/accepted-source-projector.d.ts.map +0 -1
  750. package/lib/workroom/accepted-source-projector.js +0 -281
  751. package/lib/workroom/accepted-source-projector.js.map +0 -1
  752. package/lib/workroom/assignment-authority-grant-application.d.ts +0 -125
  753. package/lib/workroom/assignment-authority-grant-application.d.ts.map +0 -1
  754. package/lib/workroom/assignment-authority-grant-application.js +0 -318
  755. package/lib/workroom/assignment-authority-grant-application.js.map +0 -1
  756. package/lib/workroom/assignment-authority-grant-repository.d.ts +0 -152
  757. package/lib/workroom/assignment-authority-grant-repository.d.ts.map +0 -1
  758. package/lib/workroom/assignment-authority-grant-repository.js +0 -389
  759. package/lib/workroom/assignment-authority-grant-repository.js.map +0 -1
  760. package/lib/workroom/assignment-authority.d.ts +0 -75
  761. package/lib/workroom/assignment-authority.d.ts.map +0 -1
  762. package/lib/workroom/assignment-authority.js +0 -179
  763. package/lib/workroom/assignment-authority.js.map +0 -1
  764. package/lib/workroom/assignment-executor.d.ts +0 -110
  765. package/lib/workroom/assignment-executor.d.ts.map +0 -1
  766. package/lib/workroom/assignment-executor.js +0 -371
  767. package/lib/workroom/assignment-executor.js.map +0 -1
  768. package/lib/workroom/assignment-observation-ingress.d.ts +0 -21
  769. package/lib/workroom/assignment-observation-ingress.d.ts.map +0 -1
  770. package/lib/workroom/assignment-observation-ingress.js +0 -24
  771. package/lib/workroom/assignment-observation-ingress.js.map +0 -1
  772. package/lib/workroom/canonical-value.d.ts +0 -7
  773. package/lib/workroom/canonical-value.d.ts.map +0 -1
  774. package/lib/workroom/canonical-value.js +0 -32
  775. package/lib/workroom/canonical-value.js.map +0 -1
  776. package/lib/workroom/catalog-definition.d.ts +0 -52
  777. package/lib/workroom/catalog-definition.d.ts.map +0 -1
  778. package/lib/workroom/catalog-definition.js +0 -6
  779. package/lib/workroom/catalog-definition.js.map +0 -1
  780. package/lib/workroom/catalog.d.ts +0 -80
  781. package/lib/workroom/catalog.d.ts.map +0 -1
  782. package/lib/workroom/catalog.js +0 -386
  783. package/lib/workroom/catalog.js.map +0 -1
  784. package/lib/workroom/coding-assignment-executor.d.ts +0 -90
  785. package/lib/workroom/coding-assignment-executor.d.ts.map +0 -1
  786. package/lib/workroom/coding-assignment-executor.js +0 -250
  787. package/lib/workroom/coding-assignment-executor.js.map +0 -1
  788. package/lib/workroom/coding-git-objects.d.ts +0 -17
  789. package/lib/workroom/coding-git-objects.d.ts.map +0 -1
  790. package/lib/workroom/coding-git-objects.js +0 -68
  791. package/lib/workroom/coding-git-objects.js.map +0 -1
  792. package/lib/workroom/database-project-knowledge-journal.d.ts +0 -62
  793. package/lib/workroom/database-project-knowledge-journal.d.ts.map +0 -1
  794. package/lib/workroom/database-project-knowledge-journal.js +0 -161
  795. package/lib/workroom/database-project-knowledge-journal.js.map +0 -1
  796. package/lib/workroom/durable-file-store.d.ts +0 -56
  797. package/lib/workroom/durable-file-store.d.ts.map +0 -1
  798. package/lib/workroom/durable-file-store.js +0 -125
  799. package/lib/workroom/durable-file-store.js.map +0 -1
  800. package/lib/workroom/dynamic-workflow-planner.d.ts +0 -86
  801. package/lib/workroom/dynamic-workflow-planner.d.ts.map +0 -1
  802. package/lib/workroom/dynamic-workflow-planner.js +0 -260
  803. package/lib/workroom/dynamic-workflow-planner.js.map +0 -1
  804. package/lib/workroom/effect-blocker-repository.d.ts +0 -51
  805. package/lib/workroom/effect-blocker-repository.d.ts.map +0 -1
  806. package/lib/workroom/effect-blocker-repository.js +0 -174
  807. package/lib/workroom/effect-blocker-repository.js.map +0 -1
  808. package/lib/workroom/effect-ledger.d.ts +0 -211
  809. package/lib/workroom/effect-ledger.d.ts.map +0 -1
  810. package/lib/workroom/effect-ledger.js +0 -484
  811. package/lib/workroom/effect-ledger.js.map +0 -1
  812. package/lib/workroom/file-accepted-source-memory-repository.d.ts +0 -15
  813. package/lib/workroom/file-accepted-source-memory-repository.d.ts.map +0 -1
  814. package/lib/workroom/file-accepted-source-memory-repository.js +0 -136
  815. package/lib/workroom/file-accepted-source-memory-repository.js.map +0 -1
  816. package/lib/workroom/file-coding-execution-store.d.ts +0 -25
  817. package/lib/workroom/file-coding-execution-store.d.ts.map +0 -1
  818. package/lib/workroom/file-coding-execution-store.js +0 -122
  819. package/lib/workroom/file-coding-execution-store.js.map +0 -1
  820. package/lib/workroom/file-effect-ledger.d.ts +0 -10
  821. package/lib/workroom/file-effect-ledger.d.ts.map +0 -1
  822. package/lib/workroom/file-effect-ledger.js +0 -121
  823. package/lib/workroom/file-effect-ledger.js.map +0 -1
  824. package/lib/workroom/file-human-ingress-application.d.ts +0 -10
  825. package/lib/workroom/file-human-ingress-application.d.ts.map +0 -1
  826. package/lib/workroom/file-human-ingress-application.js +0 -177
  827. package/lib/workroom/file-human-ingress-application.js.map +0 -1
  828. package/lib/workroom/file-human-ingress.d.ts +0 -24
  829. package/lib/workroom/file-human-ingress.d.ts.map +0 -1
  830. package/lib/workroom/file-human-ingress.js +0 -234
  831. package/lib/workroom/file-human-ingress.js.map +0 -1
  832. package/lib/workroom/file-interaction-space-binding-repository.d.ts +0 -24
  833. package/lib/workroom/file-interaction-space-binding-repository.d.ts.map +0 -1
  834. package/lib/workroom/file-interaction-space-binding-repository.js +0 -293
  835. package/lib/workroom/file-interaction-space-binding-repository.js.map +0 -1
  836. package/lib/workroom/file-profile-journal.d.ts +0 -33
  837. package/lib/workroom/file-profile-journal.d.ts.map +0 -1
  838. package/lib/workroom/file-profile-journal.js +0 -311
  839. package/lib/workroom/file-profile-journal.js.map +0 -1
  840. package/lib/workroom/git-workspace-gateway.d.ts +0 -152
  841. package/lib/workroom/git-workspace-gateway.d.ts.map +0 -1
  842. package/lib/workroom/git-workspace-gateway.js +0 -257
  843. package/lib/workroom/git-workspace-gateway.js.map +0 -1
  844. package/lib/workroom/github-workspace-transport.d.ts +0 -30
  845. package/lib/workroom/github-workspace-transport.d.ts.map +0 -1
  846. package/lib/workroom/github-workspace-transport.js +0 -224
  847. package/lib/workroom/github-workspace-transport.js.map +0 -1
  848. package/lib/workroom/governed-dispatch-reasons.d.ts +0 -10
  849. package/lib/workroom/governed-dispatch-reasons.d.ts.map +0 -1
  850. package/lib/workroom/governed-dispatch-reasons.js +0 -20
  851. package/lib/workroom/governed-dispatch-reasons.js.map +0 -1
  852. package/lib/workroom/human-ingress-application.d.ts +0 -128
  853. package/lib/workroom/human-ingress-application.d.ts.map +0 -1
  854. package/lib/workroom/human-ingress-application.js +0 -415
  855. package/lib/workroom/human-ingress-application.js.map +0 -1
  856. package/lib/workroom/human-ingress-orchestrator.d.ts +0 -99
  857. package/lib/workroom/human-ingress-orchestrator.d.ts.map +0 -1
  858. package/lib/workroom/human-ingress-orchestrator.js +0 -262
  859. package/lib/workroom/human-ingress-orchestrator.js.map +0 -1
  860. package/lib/workroom/human-ingress-source-reader.d.ts +0 -29
  861. package/lib/workroom/human-ingress-source-reader.d.ts.map +0 -1
  862. package/lib/workroom/human-ingress-source-reader.js +0 -126
  863. package/lib/workroom/human-ingress-source-reader.js.map +0 -1
  864. package/lib/workroom/human-ingress.d.ts +0 -182
  865. package/lib/workroom/human-ingress.d.ts.map +0 -1
  866. package/lib/workroom/human-ingress.js +0 -526
  867. package/lib/workroom/human-ingress.js.map +0 -1
  868. package/lib/workroom/interaction-space-binding-service.d.ts +0 -57
  869. package/lib/workroom/interaction-space-binding-service.d.ts.map +0 -1
  870. package/lib/workroom/interaction-space-binding-service.js +0 -197
  871. package/lib/workroom/interaction-space-binding-service.js.map +0 -1
  872. package/lib/workroom/interaction-space-router.d.ts +0 -75
  873. package/lib/workroom/interaction-space-router.d.ts.map +0 -1
  874. package/lib/workroom/interaction-space-router.js +0 -243
  875. package/lib/workroom/interaction-space-router.js.map +0 -1
  876. package/lib/workroom/journal/activatable-journal.d.ts +0 -15
  877. package/lib/workroom/journal/activatable-journal.d.ts.map +0 -1
  878. package/lib/workroom/journal/activatable-journal.js +0 -39
  879. package/lib/workroom/journal/activatable-journal.js.map +0 -1
  880. package/lib/workroom/journal/contracts.d.ts +0 -141
  881. package/lib/workroom/journal/contracts.d.ts.map +0 -1
  882. package/lib/workroom/journal/contracts.js +0 -19
  883. package/lib/workroom/journal/contracts.js.map +0 -1
  884. package/lib/workroom/journal/database-journal.d.ts +0 -31
  885. package/lib/workroom/journal/database-journal.d.ts.map +0 -1
  886. package/lib/workroom/journal/database-journal.js +0 -118
  887. package/lib/workroom/journal/database-journal.js.map +0 -1
  888. package/lib/workroom/journal/event-codec.d.ts +0 -26
  889. package/lib/workroom/journal/event-codec.d.ts.map +0 -1
  890. package/lib/workroom/journal/event-codec.js +0 -243
  891. package/lib/workroom/journal/event-codec.js.map +0 -1
  892. package/lib/workroom/journal/event-validation.d.ts +0 -10
  893. package/lib/workroom/journal/event-validation.d.ts.map +0 -1
  894. package/lib/workroom/journal/event-validation.js +0 -671
  895. package/lib/workroom/journal/event-validation.js.map +0 -1
  896. package/lib/workroom/journal/file-journal.d.ts +0 -15
  897. package/lib/workroom/journal/file-journal.d.ts.map +0 -1
  898. package/lib/workroom/journal/file-journal.js +0 -272
  899. package/lib/workroom/journal/file-journal.js.map +0 -1
  900. package/lib/workroom/journal/index.d.ts +0 -9
  901. package/lib/workroom/journal/index.d.ts.map +0 -1
  902. package/lib/workroom/journal/index.js +0 -8
  903. package/lib/workroom/journal/index.js.map +0 -1
  904. package/lib/workroom/journal/memory-journal.d.ts +0 -27
  905. package/lib/workroom/journal/memory-journal.d.ts.map +0 -1
  906. package/lib/workroom/journal/memory-journal.js +0 -103
  907. package/lib/workroom/journal/memory-journal.js.map +0 -1
  908. package/lib/workroom/journal/payload-governance.d.ts +0 -29
  909. package/lib/workroom/journal/payload-governance.d.ts.map +0 -1
  910. package/lib/workroom/journal/payload-governance.js +0 -282
  911. package/lib/workroom/journal/payload-governance.js.map +0 -1
  912. package/lib/workroom/journal/payload-reference.d.ts +0 -9
  913. package/lib/workroom/journal/payload-reference.d.ts.map +0 -1
  914. package/lib/workroom/journal/payload-reference.js +0 -60
  915. package/lib/workroom/journal/payload-reference.js.map +0 -1
  916. package/lib/workroom/journal/stored-event-projection.d.ts +0 -6
  917. package/lib/workroom/journal/stored-event-projection.d.ts.map +0 -1
  918. package/lib/workroom/journal/stored-event-projection.js +0 -280
  919. package/lib/workroom/journal/stored-event-projection.js.map +0 -1
  920. package/lib/workroom/journal-model.d.ts +0 -40
  921. package/lib/workroom/journal-model.d.ts.map +0 -1
  922. package/lib/workroom/journal-model.js +0 -12
  923. package/lib/workroom/journal-model.js.map +0 -1
  924. package/lib/workroom/kernel-contracts.d.ts +0 -168
  925. package/lib/workroom/kernel-contracts.d.ts.map +0 -1
  926. package/lib/workroom/kernel-contracts.js +0 -2
  927. package/lib/workroom/kernel-contracts.js.map +0 -1
  928. package/lib/workroom/kernel-state.d.ts +0 -5
  929. package/lib/workroom/kernel-state.d.ts.map +0 -1
  930. package/lib/workroom/kernel-state.js +0 -885
  931. package/lib/workroom/kernel-state.js.map +0 -1
  932. package/lib/workroom/legacy-embedded-payload-migration.d.ts +0 -89
  933. package/lib/workroom/legacy-embedded-payload-migration.d.ts.map +0 -1
  934. package/lib/workroom/legacy-embedded-payload-migration.js +0 -312
  935. package/lib/workroom/legacy-embedded-payload-migration.js.map +0 -1
  936. package/lib/workroom/legacy-run-offline-migration.d.ts +0 -84
  937. package/lib/workroom/legacy-run-offline-migration.d.ts.map +0 -1
  938. package/lib/workroom/legacy-run-offline-migration.js +0 -470
  939. package/lib/workroom/legacy-run-offline-migration.js.map +0 -1
  940. package/lib/workroom/local-assignment-issuance.d.ts +0 -68
  941. package/lib/workroom/local-assignment-issuance.d.ts.map +0 -1
  942. package/lib/workroom/local-assignment-issuance.js +0 -128
  943. package/lib/workroom/local-assignment-issuance.js.map +0 -1
  944. package/lib/workroom/plan-approval-control.d.ts +0 -52
  945. package/lib/workroom/plan-approval-control.d.ts.map +0 -1
  946. package/lib/workroom/plan-approval-control.js +0 -9
  947. package/lib/workroom/plan-approval-control.js.map +0 -1
  948. package/lib/workroom/plan-revision.d.ts +0 -44
  949. package/lib/workroom/plan-revision.d.ts.map +0 -1
  950. package/lib/workroom/plan-revision.js +0 -133
  951. package/lib/workroom/plan-revision.js.map +0 -1
  952. package/lib/workroom/profile-compiler.d.ts +0 -130
  953. package/lib/workroom/profile-compiler.d.ts.map +0 -1
  954. package/lib/workroom/profile-compiler.js +0 -357
  955. package/lib/workroom/profile-compiler.js.map +0 -1
  956. package/lib/workroom/profile-registry.d.ts +0 -191
  957. package/lib/workroom/profile-registry.d.ts.map +0 -1
  958. package/lib/workroom/profile-registry.js +0 -698
  959. package/lib/workroom/profile-registry.js.map +0 -1
  960. package/lib/workroom/project-knowledge-registry.d.ts +0 -136
  961. package/lib/workroom/project-knowledge-registry.d.ts.map +0 -1
  962. package/lib/workroom/project-knowledge-registry.js +0 -429
  963. package/lib/workroom/project-knowledge-registry.js.map +0 -1
  964. package/lib/workroom/projection-outbox/contracts.d.ts +0 -195
  965. package/lib/workroom/projection-outbox/contracts.d.ts.map +0 -1
  966. package/lib/workroom/projection-outbox/contracts.js +0 -11
  967. package/lib/workroom/projection-outbox/contracts.js.map +0 -1
  968. package/lib/workroom/projection-outbox/delivery-worker.d.ts +0 -22
  969. package/lib/workroom/projection-outbox/delivery-worker.d.ts.map +0 -1
  970. package/lib/workroom/projection-outbox/delivery-worker.js +0 -96
  971. package/lib/workroom/projection-outbox/delivery-worker.js.map +0 -1
  972. package/lib/workroom/projection-outbox/file-repository.d.ts +0 -11
  973. package/lib/workroom/projection-outbox/file-repository.d.ts.map +0 -1
  974. package/lib/workroom/projection-outbox/file-repository.js +0 -89
  975. package/lib/workroom/projection-outbox/file-repository.js.map +0 -1
  976. package/lib/workroom/projection-outbox/index.d.ts +0 -10
  977. package/lib/workroom/projection-outbox/index.d.ts.map +0 -1
  978. package/lib/workroom/projection-outbox/index.js +0 -8
  979. package/lib/workroom/projection-outbox/index.js.map +0 -1
  980. package/lib/workroom/projection-outbox/memory-repository.d.ts +0 -11
  981. package/lib/workroom/projection-outbox/memory-repository.d.ts.map +0 -1
  982. package/lib/workroom/projection-outbox/memory-repository.js +0 -40
  983. package/lib/workroom/projection-outbox/memory-repository.js.map +0 -1
  984. package/lib/workroom/projection-outbox/projector.d.ts +0 -36
  985. package/lib/workroom/projection-outbox/projector.d.ts.map +0 -1
  986. package/lib/workroom/projection-outbox/projector.js +0 -517
  987. package/lib/workroom/projection-outbox/projector.js.map +0 -1
  988. package/lib/workroom/projection-outbox/repository-state.d.ts +0 -17
  989. package/lib/workroom/projection-outbox/repository-state.d.ts.map +0 -1
  990. package/lib/workroom/projection-outbox/repository-state.js +0 -343
  991. package/lib/workroom/projection-outbox/repository-state.js.map +0 -1
  992. package/lib/workroom/projection-outbox/tracer.d.ts +0 -19
  993. package/lib/workroom/projection-outbox/tracer.d.ts.map +0 -1
  994. package/lib/workroom/projection-outbox/tracer.js +0 -201
  995. package/lib/workroom/projection-outbox/tracer.js.map +0 -1
  996. package/lib/workroom/remote-assignment-dispatch-command.d.ts +0 -31
  997. package/lib/workroom/remote-assignment-dispatch-command.d.ts.map +0 -1
  998. package/lib/workroom/remote-assignment-dispatch-command.js +0 -56
  999. package/lib/workroom/remote-assignment-dispatch-command.js.map +0 -1
  1000. package/lib/workroom/remote-assignment-issuance.d.ts +0 -88
  1001. package/lib/workroom/remote-assignment-issuance.d.ts.map +0 -1
  1002. package/lib/workroom/remote-assignment-issuance.js +0 -201
  1003. package/lib/workroom/remote-assignment-issuance.js.map +0 -1
  1004. package/lib/workroom/remote-callback-application.d.ts +0 -115
  1005. package/lib/workroom/remote-callback-application.d.ts.map +0 -1
  1006. package/lib/workroom/remote-callback-application.js +0 -570
  1007. package/lib/workroom/remote-callback-application.js.map +0 -1
  1008. package/lib/workroom/remote-callback-gateway.d.ts +0 -60
  1009. package/lib/workroom/remote-callback-gateway.d.ts.map +0 -1
  1010. package/lib/workroom/remote-callback-gateway.js +0 -173
  1011. package/lib/workroom/remote-callback-gateway.js.map +0 -1
  1012. package/lib/workroom/remote-callback-inbox.d.ts +0 -278
  1013. package/lib/workroom/remote-callback-inbox.d.ts.map +0 -1
  1014. package/lib/workroom/remote-callback-inbox.js +0 -1088
  1015. package/lib/workroom/remote-callback-inbox.js.map +0 -1
  1016. package/lib/workroom/remote-callback-reconciliation-worker.d.ts +0 -60
  1017. package/lib/workroom/remote-callback-reconciliation-worker.d.ts.map +0 -1
  1018. package/lib/workroom/remote-callback-reconciliation-worker.js +0 -197
  1019. package/lib/workroom/remote-callback-reconciliation-worker.js.map +0 -1
  1020. package/lib/workroom/remote-dispatch-admission.d.ts +0 -45
  1021. package/lib/workroom/remote-dispatch-admission.d.ts.map +0 -1
  1022. package/lib/workroom/remote-dispatch-admission.js +0 -187
  1023. package/lib/workroom/remote-dispatch-admission.js.map +0 -1
  1024. package/lib/workroom/remote-dispatch-outbox.d.ts +0 -204
  1025. package/lib/workroom/remote-dispatch-outbox.d.ts.map +0 -1
  1026. package/lib/workroom/remote-dispatch-outbox.js +0 -768
  1027. package/lib/workroom/remote-dispatch-outbox.js.map +0 -1
  1028. package/lib/workroom/remote-dispatch-scheduler.d.ts +0 -36
  1029. package/lib/workroom/remote-dispatch-scheduler.d.ts.map +0 -1
  1030. package/lib/workroom/remote-dispatch-scheduler.js +0 -133
  1031. package/lib/workroom/remote-dispatch-scheduler.js.map +0 -1
  1032. package/lib/workroom/remote-dispatch-worker.d.ts +0 -22
  1033. package/lib/workroom/remote-dispatch-worker.d.ts.map +0 -1
  1034. package/lib/workroom/remote-dispatch-worker.js +0 -124
  1035. package/lib/workroom/remote-dispatch-worker.js.map +0 -1
  1036. package/lib/workroom/remote-dispatch.d.ts +0 -79
  1037. package/lib/workroom/remote-dispatch.d.ts.map +0 -1
  1038. package/lib/workroom/remote-dispatch.js +0 -220
  1039. package/lib/workroom/remote-dispatch.js.map +0 -1
  1040. package/lib/workroom/remote-executor.d.ts +0 -15
  1041. package/lib/workroom/remote-executor.d.ts.map +0 -1
  1042. package/lib/workroom/remote-executor.js +0 -21
  1043. package/lib/workroom/remote-executor.js.map +0 -1
  1044. package/lib/workroom/role-capability-snapshot.d.ts +0 -88
  1045. package/lib/workroom/role-capability-snapshot.d.ts.map +0 -1
  1046. package/lib/workroom/role-capability-snapshot.js +0 -456
  1047. package/lib/workroom/role-capability-snapshot.js.map +0 -1
  1048. package/lib/workroom/runtime.d.ts +0 -142
  1049. package/lib/workroom/runtime.d.ts.map +0 -1
  1050. package/lib/workroom/runtime.js +0 -543
  1051. package/lib/workroom/runtime.js.map +0 -1
  1052. package/lib/workroom/scheduler-priority-control.d.ts +0 -35
  1053. package/lib/workroom/scheduler-priority-control.d.ts.map +0 -1
  1054. package/lib/workroom/scheduler-priority-control.js +0 -9
  1055. package/lib/workroom/scheduler-priority-control.js.map +0 -1
  1056. package/lib/workroom/software-delivery-plan.d.ts +0 -32
  1057. package/lib/workroom/software-delivery-plan.d.ts.map +0 -1
  1058. package/lib/workroom/software-delivery-plan.js +0 -60
  1059. package/lib/workroom/software-delivery-plan.js.map +0 -1
  1060. package/lib/workroom/validate-catalog.d.ts +0 -2
  1061. package/lib/workroom/validate-catalog.d.ts.map +0 -1
  1062. package/lib/workroom/validate-catalog.js +0 -230
  1063. package/lib/workroom/validate-catalog.js.map +0 -1
  1064. package/lib/workroom/workflow-plan-builder.d.ts +0 -88
  1065. package/lib/workroom/workflow-plan-builder.d.ts.map +0 -1
  1066. package/lib/workroom/workflow-plan-builder.js +0 -232
  1067. package/lib/workroom/workflow-plan-builder.js.map +0 -1
  1068. package/lib/workroom/workroom-assignment-knowledge-context.d.ts +0 -102
  1069. package/lib/workroom/workroom-assignment-knowledge-context.d.ts.map +0 -1
  1070. package/lib/workroom/workroom-assignment-knowledge-context.js +0 -127
  1071. package/lib/workroom/workroom-assignment-knowledge-context.js.map +0 -1
  1072. package/lib/workroom/workroom-kernel.d.ts +0 -157
  1073. package/lib/workroom/workroom-kernel.d.ts.map +0 -1
  1074. package/lib/workroom/workroom-kernel.js +0 -1526
  1075. package/lib/workroom/workroom-kernel.js.map +0 -1
  1076. package/lib/workroom/workroom-preemption.d.ts +0 -65
  1077. package/lib/workroom/workroom-preemption.d.ts.map +0 -1
  1078. package/lib/workroom/workroom-preemption.js +0 -213
  1079. package/lib/workroom/workroom-preemption.js.map +0 -1
  1080. package/lib/workroom/workroom-run-control.d.ts +0 -69
  1081. package/lib/workroom/workroom-run-control.d.ts.map +0 -1
  1082. package/lib/workroom/workroom-run-control.js +0 -144
  1083. package/lib/workroom/workroom-run-control.js.map +0 -1
  1084. package/lib/workroom/workroom-scheduler-application.d.ts +0 -43
  1085. package/lib/workroom/workroom-scheduler-application.d.ts.map +0 -1
  1086. package/lib/workroom/workroom-scheduler-application.js +0 -71
  1087. package/lib/workroom/workroom-scheduler-application.js.map +0 -1
  1088. package/lib/workroom/workroom-scheduler.d.ts +0 -135
  1089. package/lib/workroom/workroom-scheduler.d.ts.map +0 -1
  1090. package/lib/workroom/workroom-scheduler.js +0 -660
  1091. package/lib/workroom/workroom-scheduler.js.map +0 -1
  1092. package/lib/workroom/workroom-task-report-store.d.ts +0 -131
  1093. package/lib/workroom/workroom-task-report-store.d.ts.map +0 -1
  1094. package/lib/workroom/workroom-task-report-store.js +0 -528
  1095. package/lib/workroom/workroom-task-report-store.js.map +0 -1
@@ -1,1526 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { WorkroomSequenceConflictError } from './journal/index.js';
3
- import { assertAssignmentExecutionEnvelope, validateAssignmentExecutionObservation, } from './assignment-executor.js';
4
- import { compareCanonicalWorkroomText, canonicalWorkroomJson, digestCanonicalWorkroomValue, } from './canonical-value.js';
5
- import { assertWorkflowPlanProposal, } from './workflow-plan-builder.js';
6
- import { assertWorkflowPlanRevisionCandidate, computeWorkflowPlanRevisionDiff, } from './plan-revision.js';
7
- import { createAcceptanceDecisionInput, createAcceptanceContractPinInput, assertAcceptanceContract, freezeAcceptanceContract, decideTaskAcceptance, } from './acceptance-policy.js';
8
- import { decideWorkroom, replayWorkroom } from './kernel-state.js';
9
- import { decideReviewerClaim, decideReviewerVerdict, decideSponsorGate, } from './acceptance-control.js';
10
- import { materializeWorkroomRemoteAssignment, normalizeWorkroomRemoteAssignmentClaimRequest, parseWorkroomRemoteAssignmentIssuance, workroomRemoteAssignmentId, workroomRemoteAssignmentRequestDigest, } from './remote-assignment-issuance.js';
11
- import { materializeWorkroomLocalAssignment, normalizeWorkroomLocalAssignmentClaimRequest, parseWorkroomLocalAssignmentIssuance, workroomLocalAssignmentId, workroomLocalAssignmentRequestDigest, } from './local-assignment-issuance.js';
12
- import { decideWorkroomSchedule, getWorkroomScheduledTaskSnapshot, parseWorkroomPriorityChangeProposal, } from './workroom-scheduler.js';
13
- import { decideWorkroomPreemptionTimeout, replayWorkroomPreemptions, } from './workroom-preemption.js';
14
- import { WorkroomPriorityUnauthorizedError, } from './scheduler-priority-control.js';
15
- import { WorkroomPlanGateUnauthorizedError, } from './plan-approval-control.js';
16
- import { WorkroomRunControlUnauthorizedError, assertWorkroomRunControlCommand, workroomRunControlRequestDigest, } from './workroom-run-control.js';
17
- /** The sole command and state-transition authority for Workroom Run facts. */
18
- export class WorkroomKernel {
19
- #journal;
20
- #now;
21
- #createId;
22
- #acceptancePolicy;
23
- #acceptanceAuthority;
24
- #assignmentHeartbeatLeaseMs;
25
- #remoteAssignmentAuthority;
26
- #localAssignmentAuthority;
27
- #planGateAuthority;
28
- #priorityAuthority;
29
- #runControlAuthority;
30
- constructor(options) {
31
- this.#journal = options.journal;
32
- this.#now = options.now ?? Date.now;
33
- this.#createId = options.createId ?? (() => randomUUID());
34
- this.#acceptancePolicy = options.acceptancePolicy;
35
- this.#acceptanceAuthority = options.acceptanceAuthority;
36
- this.#assignmentHeartbeatLeaseMs = options.assignmentHeartbeatLeaseMs ?? 30_000;
37
- this.#remoteAssignmentAuthority = options.remoteAssignmentAuthority;
38
- this.#localAssignmentAuthority = options.localAssignmentAuthority;
39
- this.#planGateAuthority = options.planGateAuthority;
40
- this.#priorityAuthority = options.priorityAuthority;
41
- this.#runControlAuthority = options.runControlAuthority;
42
- if (!Number.isSafeInteger(this.#assignmentHeartbeatLeaseMs)
43
- || this.#assignmentHeartbeatLeaseMs < 1) {
44
- throw new Error('Assignment heartbeat lease must be a positive safe integer');
45
- }
46
- }
47
- async createRun(input) {
48
- if (!input.projectId.trim())
49
- throw new Error('Workroom projectId is required');
50
- if (!input.title.trim())
51
- throw new Error('Workroom title is required');
52
- const projectId = input.projectId.trim();
53
- const title = input.title.trim();
54
- const runId = input.runId ?? this.#createId();
55
- assertRunId(runId);
56
- const existing = await this.#journal.read(runId);
57
- if (existing.length > 0)
58
- throw new Error(`Workroom run ${runId} already exists`);
59
- await this.#journal.append(runId, -1, [this.#event('run.created', {
60
- projectId,
61
- title,
62
- })]);
63
- return this.read(projectId, runId);
64
- }
65
- /**
66
- * Atomic, exact-replay admission of an Orchestrator proposal. The model can
67
- * only provide a validated WorkflowPlanProposal; this Kernel method is the
68
- * sole writer that materializes Run and Task facts.
69
- */
70
- async admitWorkflowPlan(input) {
71
- const normalized = normalizePlanAdmission(input);
72
- const runId = planAdmissionRunId(normalized.operationId);
73
- const admittedPayload = Object.freeze({
74
- operationId: normalized.operationId,
75
- sourceEventRef: normalized.sourceEventRef,
76
- sourceEventDigest: normalized.sourceEventDigest,
77
- orchestratorAgentDefinitionId: normalized.orchestratorAgentDefinitionId,
78
- plan: normalized.plan,
79
- schedulerPolicy: normalized.plan.schedulerPolicy,
80
- });
81
- const taskDrafts = normalized.plan.tasks.flatMap(task => {
82
- const draft = this.#event('task.planned', {
83
- taskKey: task.key,
84
- title: task.title,
85
- required: task.required,
86
- maxAttempts: task.maxAttempts,
87
- role: task.role,
88
- dependsOn: task.dependsOn,
89
- requires: task.requires,
90
- sponsorLane: task.scheduler.sponsorLane,
91
- localRank: task.scheduler.localRank,
92
- deadline: task.scheduler.deadline,
93
- enqueuedAt: task.scheduler.enqueuedAt,
94
- preemptibility: task.scheduler.preemptibility,
95
- ...(task.approvalGate ? { approvalGate: task.approvalGate } : {}),
96
- });
97
- return [
98
- draft,
99
- ...(task.approvalGate
100
- ? [this.#event('task.blocked', {
101
- taskKey: task.key,
102
- blockerId: task.approvalGate.id,
103
- kind: 'approval',
104
- owner: task.approvalGate.owner,
105
- reason: `Workflow Plan Sponsor Gate ${task.approvalGate.id}`,
106
- deadline: task.approvalGate.deadline,
107
- })]
108
- : []),
109
- ];
110
- });
111
- const drafts = Object.freeze([
112
- this.#event('run.created', {
113
- projectId: normalized.projectId,
114
- title: normalized.title,
115
- }),
116
- this.#event('plan.admitted', admittedPayload),
117
- ...taskDrafts,
118
- ]);
119
- let existing = await this.#journal.read(runId);
120
- if (existing.length === 0) {
121
- try {
122
- await this.#journal.append(runId, -1, drafts);
123
- }
124
- catch (error) {
125
- if (!(error instanceof WorkroomSequenceConflictError))
126
- throw error;
127
- }
128
- existing = await this.#journal.read(runId);
129
- }
130
- assertExactPlanAdmission(existing, normalized, admittedPayload);
131
- const state = replayWorkroom(existing);
132
- return planAdmissionReceipt(runId, normalized.operationId, normalized.sourceEventDigest, normalized.plan, state);
133
- }
134
- /** Exact persisted admission lookup used to finish a crash-interrupted application replay. */
135
- async readWorkflowPlanAdmission(operationId) {
136
- requireCanonicalText(operationId, 'operationId');
137
- const runId = planAdmissionRunId(operationId);
138
- const events = await this.#journal.read(runId);
139
- if (events.length === 0)
140
- return undefined;
141
- const created = events[0];
142
- const admitted = events[1];
143
- if (created?.type !== 'run.created' || admitted?.type !== 'plan.admitted') {
144
- throw new Error('Workflow Plan persisted admission header is invalid');
145
- }
146
- const projectId = created.payload.projectId;
147
- const title = created.payload.title;
148
- const sourceEventRef = admitted.payload.sourceEventRef;
149
- const sourceEventDigest = admitted.payload.sourceEventDigest;
150
- const orchestratorAgentDefinitionId = admitted.payload.orchestratorAgentDefinitionId;
151
- const persistedOperationId = admitted.payload.operationId;
152
- const plan = admitted.payload.plan;
153
- requireCanonicalText(projectId, 'projectId');
154
- requireCanonicalText(title, 'title');
155
- requireCanonicalText(sourceEventRef, 'sourceEventRef');
156
- requireDigest(sourceEventDigest, 'sourceEventDigest');
157
- requireCanonicalText(orchestratorAgentDefinitionId, 'orchestratorAgentDefinitionId');
158
- requireCanonicalText(persistedOperationId, 'persisted operationId');
159
- assertWorkflowPlanProposal(plan);
160
- if (persistedOperationId !== operationId) {
161
- throw new Error('Workflow Plan persisted admission operation drift');
162
- }
163
- const admission = {
164
- operationId,
165
- projectId,
166
- title,
167
- sourceEventRef,
168
- sourceEventDigest,
169
- orchestratorAgentDefinitionId,
170
- plan: plan,
171
- };
172
- assertExactPlanAdmission(events, admission, admitted.payload);
173
- const state = replayWorkroom(events);
174
- return Object.freeze({
175
- operationId,
176
- sourceEventRef,
177
- sourceEventDigest,
178
- orchestratorAgentDefinitionId,
179
- plan: admission.plan,
180
- receipt: planAdmissionReceipt(runId, operationId, sourceEventDigest, admission.plan, state),
181
- });
182
- }
183
- /** Kernel CAS admission for a non-authoritative, complete Plan Revision proposal. */
184
- async admitPlanRevision(candidate) {
185
- assertWorkflowPlanRevisionCandidate(candidate);
186
- const events = await this.#journal.read(candidate.runId);
187
- if (events.length === 0)
188
- throw new Error(`Workroom run ${candidate.runId} not found`);
189
- const state = replayWorkroom(events);
190
- assertProject(state, candidate.projectId);
191
- const current = currentWorkflowPlan(events);
192
- const replay = events.find(event => event.type === 'plan.revision_applied'
193
- && event.payload.candidate?.proposalId === candidate.proposalId);
194
- if (replay) {
195
- const persisted = replay.payload.candidate;
196
- if (canonicalWorkroomJson(persisted) !== canonicalWorkroomJson(candidate)) {
197
- throw new Error(`Plan Revision proposal replay payload drift: ${candidate.proposalId}`);
198
- }
199
- return Object.freeze({
200
- status: 'applied', planRevision: Number(replay.payload.planRevision), duplicate: true, state,
201
- });
202
- }
203
- if (candidate.expectedSequence !== state.sequence
204
- || candidate.basePlanRevision !== current.revision
205
- || candidate.basePlanDigest !== current.plan.digest) {
206
- return Object.freeze({
207
- status: 'stale', planRevision: current.revision, actualSequence: state.sequence,
208
- actualPlanDigest: current.plan.digest,
209
- });
210
- }
211
- const expectedTaskKeys = current.plan.tasks.map(task => task.key).sort();
212
- const candidateTaskKeys = Object.keys(candidate.baseTaskRevisions).sort();
213
- if (canonicalWorkroomJson(expectedTaskKeys) !== canonicalWorkroomJson(candidateTaskKeys)) {
214
- return Object.freeze({
215
- status: 'rejected', planRevision: current.revision,
216
- reason: 'Plan Revision base Task revisions are incomplete for the current Plan',
217
- });
218
- }
219
- for (const [taskKey, revision] of Object.entries(candidate.baseTaskRevisions)) {
220
- if (state.tasks[taskKey]?.revision !== revision) {
221
- return Object.freeze({
222
- status: 'stale', planRevision: current.revision, actualSequence: state.sequence,
223
- actualPlanDigest: current.plan.digest,
224
- });
225
- }
226
- }
227
- let recomputed;
228
- try {
229
- recomputed = computeWorkflowPlanRevisionDiff(current.plan, candidate.nextPlan, candidate.baseTaskRevisions);
230
- }
231
- catch (error) {
232
- return Object.freeze({
233
- status: 'rejected', planRevision: current.revision,
234
- reason: error instanceof Error ? error.message : String(error),
235
- });
236
- }
237
- if (canonicalWorkroomJson(recomputed) !== canonicalWorkroomJson(candidate.diff)) {
238
- return Object.freeze({
239
- status: 'rejected', planRevision: current.revision,
240
- reason: 'Plan Revision claimed diff differs from the Kernel recomputation',
241
- });
242
- }
243
- const reused = recomputed.added.filter(task => state.tasks[task.key]).map(task => task.key).sort();
244
- if (reused.length > 0) {
245
- return Object.freeze({
246
- status: 'rejected', planRevision: current.revision,
247
- reason: `Plan Revision cannot reuse historical Task keys: ${reused.join(', ')}`,
248
- });
249
- }
250
- const changedKeys = [...recomputed.replaced, ...recomputed.removed].map(change => change.taskKey);
251
- const active = changedKeys.filter(key => {
252
- const status = state.tasks[key]?.status;
253
- return status === 'executing' || status === 'awaiting_acceptance' || status === 'cancelling';
254
- }).sort();
255
- if (active.length > 0) {
256
- return Object.freeze({
257
- status: 'preemption_required', planRevision: current.revision, taskKeys: Object.freeze(active),
258
- });
259
- }
260
- const immutable = changedKeys.filter(key => state.tasks[key]?.status === 'accepted').sort();
261
- if (immutable.length > 0) {
262
- return Object.freeze({
263
- status: 'rejected', planRevision: current.revision,
264
- reason: `Accepted Tasks are immutable: ${immutable.join(', ')}`,
265
- });
266
- }
267
- const planRevision = current.revision + 1;
268
- const drafts = [this.#event('plan.revision_applied', {
269
- candidate,
270
- planRevision,
271
- recomputedDiffDigest: digestCanonicalWorkroomValue(recomputed),
272
- })];
273
- for (const task of recomputed.added)
274
- drafts.push(...this.#planTaskDrafts(task));
275
- for (const replacement of recomputed.replaced) {
276
- drafts.push(this.#event('task.plan_revised', {
277
- ...planTaskPayload(replacement.task),
278
- expectedTaskRevision: replacement.expectedTaskRevision,
279
- newTaskRevision: replacement.expectedTaskRevision + 1,
280
- reason: candidate.reason,
281
- }));
282
- if (replacement.task.approvalGate) {
283
- drafts.push(this.#planTaskBlockerDraft(replacement.task));
284
- }
285
- }
286
- for (const removal of recomputed.removed) {
287
- drafts.push(this.#event('task.cancelled', {
288
- taskKey: removal.taskKey,
289
- reason: `Removed by Plan Revision ${candidate.proposalId}: ${candidate.reason}`,
290
- }));
291
- }
292
- try {
293
- await this.#journal.append(candidate.runId, candidate.expectedSequence, drafts);
294
- }
295
- catch (error) {
296
- if (!(error instanceof WorkroomSequenceConflictError))
297
- throw error;
298
- const latestEvents = await this.#journal.read(candidate.runId);
299
- const latest = currentWorkflowPlan(latestEvents);
300
- return Object.freeze({
301
- status: 'stale', planRevision: latest.revision,
302
- actualSequence: latestEvents.at(-1)?.sequence ?? -1,
303
- actualPlanDigest: latest.plan.digest,
304
- });
305
- }
306
- return Object.freeze({
307
- status: 'applied', planRevision, duplicate: false,
308
- state: await this.read(candidate.projectId, candidate.runId),
309
- });
310
- }
311
- /** Exact authority verification followed by one Scheduler priority Journal fact. */
312
- async commitPriorityChange(value) {
313
- const proposal = parseWorkroomPriorityChangeProposal(value);
314
- const events = await this.#journal.read(proposal.runId);
315
- if (events.length === 0)
316
- throw new Error(`Workroom run ${proposal.runId} not found`);
317
- const duplicate = events.find(event => event.type === 'scheduler.priority_changed'
318
- && event.payload.proposalId === proposal.proposalId);
319
- if (duplicate) {
320
- const persisted = { ...duplicate.payload };
321
- delete persisted.authorizedBy;
322
- if (canonicalWorkroomJson(persisted) !== canonicalWorkroomJson(proposal)) {
323
- throw new Error(`Workroom priority proposal replay payload drift: ${proposal.proposalId}`);
324
- }
325
- return Object.freeze({
326
- status: 'duplicate', proposalId: proposal.proposalId, sequence: duplicate.sequence,
327
- });
328
- }
329
- const state = replayWorkroom(events);
330
- assertProject(state, proposal.projectId);
331
- if (state.sequence !== proposal.expectedSequence) {
332
- throw new WorkroomSequenceConflictError(proposal.runId, proposal.expectedSequence, state.sequence);
333
- }
334
- const currentTask = getWorkroomScheduledTaskSnapshot(events, proposal.taskKey);
335
- if (currentTask.taskRevision !== proposal.taskRevision
336
- || currentTask.sponsorLane !== proposal.currentLane) {
337
- throw new Error('Workroom priority proposal targets a stale Task revision or lane');
338
- }
339
- const authority = this.#priorityAuthority;
340
- if (!authority)
341
- throw new Error('Workroom priority authority is not installed');
342
- const planAuthority = currentWorkflowPlan(events).plan.authority;
343
- const authorizationInput = Object.freeze({
344
- version: 1,
345
- proposal,
346
- projectAuthority: Object.freeze({
347
- catalogRevision: planAuthority.projectRevision,
348
- projectDigest: planAuthority.projectDigest,
349
- orchestratorAgentDefinitionId: planAuthority.orchestratorAgentDefinitionId,
350
- }),
351
- currentTask,
352
- });
353
- const authorization = await authority.authorize(authorizationInput);
354
- if (!authorization.authorized)
355
- throw new WorkroomPriorityUnauthorizedError(authorization.reason);
356
- if (authorization.authority !== proposal.authority
357
- || authorization.principalId !== proposal.principalId
358
- || authorization.authorizationRef !== proposal.authorityRef
359
- || authorization.proposalDigest !== proposal.digest) {
360
- throw new Error('Workroom priority authority returned a stale or mismatched exact proof');
361
- }
362
- if (proposal.requestedLane !== proposal.currentLane && authorization.authority !== 'sponsor') {
363
- throw new Error('Only an exact Sponsor authority may move a Task across lanes');
364
- }
365
- const controlState = this.#acceptanceControlState(state);
366
- if (proposal.deadline <= controlState.now)
367
- throw new Error('Workroom priority proposal is expired');
368
- const appended = await this.#journal.append(proposal.runId, proposal.expectedSequence, [Object.freeze({
369
- ...this.#event('scheduler.priority_changed', { ...proposal, authorizedBy: authorization.authorizationRef }),
370
- occurredAt: controlState.now,
371
- })]);
372
- return Object.freeze({
373
- status: 'committed', proposalId: proposal.proposalId, sequence: appended[0].sequence,
374
- });
375
- }
376
- /** Typed pre-execution Sponsor decision; generic blocker resolution is forbidden for approval gates. */
377
- async decidePlanApprovalGate(input) {
378
- const normalized = normalizePlanGateDecision(input);
379
- const requestDigest = digestCanonicalWorkroomValue(normalized);
380
- let events = await this.#journal.read(normalized.runId);
381
- const replay = events.find(event => event.type === 'plan_gate.decided'
382
- && event.payload.operationId === normalized.operationId);
383
- if (replay) {
384
- if (replay.payload.requestDigest !== requestDigest) {
385
- throw new Error(`Plan Sponsor Gate operation payload conflict: ${normalized.operationId}`);
386
- }
387
- const state = replayWorkroom(events);
388
- assertProject(state, normalized.projectId);
389
- return planGateReceipt('duplicate', normalized, requestDigest, state);
390
- }
391
- const state = replayWorkroom(events);
392
- assertProject(state, normalized.projectId);
393
- if (state.sequence !== normalized.expectedSequence) {
394
- throw new WorkroomSequenceConflictError(normalized.runId, normalized.expectedSequence, state.sequence);
395
- }
396
- const planEvents = events.filter(event => event.type === 'plan.admitted');
397
- if (planEvents.length !== 1)
398
- throw new Error('Plan Sponsor Gate requires one exact admitted Plan');
399
- const plan = planEvents[0].payload.plan;
400
- assertWorkflowPlanProposal(plan);
401
- const plannedTask = plan.tasks.find(task => task.key === normalized.taskKey);
402
- const task = state.tasks[normalized.taskKey];
403
- if (!plannedTask || !task || task.revision !== normalized.taskRevision) {
404
- throw new Error('Plan Sponsor Gate decision targets a stale Task revision');
405
- }
406
- const gate = plannedTask.approvalGate;
407
- if (!gate || gate.id !== normalized.gateId
408
- || !task.blockers.some(blocker => blocker.id === gate.id && blocker.kind === 'approval')) {
409
- throw new Error('Plan Sponsor Gate decision targets an absent or settled gate');
410
- }
411
- const authority = this.#planGateAuthority;
412
- if (!authority)
413
- throw new Error('Plan Sponsor Gate authority is not installed');
414
- const authorizationInput = Object.freeze({
415
- version: 1,
416
- ...normalized,
417
- planProposalId: plan.proposalId,
418
- planDigest: plan.digest,
419
- projectRevision: plan.authority.projectRevision,
420
- projectDigest: plan.authority.projectDigest,
421
- sourceParameterDigest: plan.parameterDigest,
422
- profileRevisionId: plan.authority.profileRevisionId,
423
- profileDigest: plan.authority.profileDigest,
424
- policyRevisionId: gate.policyRevisionId,
425
- policyDigest: gate.policyDigest,
426
- gateOwner: gate.owner,
427
- gateDeadline: gate.deadline,
428
- });
429
- const authorization = await authority.authorize(authorizationInput);
430
- if (!authorization.authorized)
431
- throw new WorkroomPlanGateUnauthorizedError(authorization.reason);
432
- if (authorization.principalId !== normalized.sponsorPrincipalId
433
- || typeof authorization.authorizationRef !== 'string'
434
- || !authorization.authorizationRef.trim()) {
435
- throw new Error('Plan Sponsor Gate authority returned a stale principal proof');
436
- }
437
- const controlState = this.#acceptanceControlState(state);
438
- if (!Number.isFinite(gate.deadline) || gate.deadline <= controlState.now) {
439
- throw new Error('Plan Sponsor Gate deadline has expired');
440
- }
441
- const event = (type, payload) => Object.freeze({ ...this.#event(type, payload), occurredAt: controlState.now });
442
- const audit = event('plan_gate.decided', {
443
- operationId: normalized.operationId,
444
- requestDigest,
445
- taskKey: normalized.taskKey,
446
- taskRevision: normalized.taskRevision,
447
- gateId: normalized.gateId,
448
- planDigest: plan.digest,
449
- policyRevisionId: gate.policyRevisionId,
450
- policyDigest: gate.policyDigest,
451
- decision: normalized.decision,
452
- sponsorPrincipalId: authorization.principalId,
453
- authorizedBy: authorization.authorizationRef,
454
- reasonDigest: digestCanonicalWorkroomValue({ reason: normalized.reason }),
455
- });
456
- const action = normalized.decision === 'approve'
457
- ? [event('task.blocker_resolved', {
458
- taskKey: normalized.taskKey,
459
- blockerId: normalized.gateId,
460
- })]
461
- : normalized.decision === 'cancel'
462
- ? decideWorkroom(controlState, {
463
- type: 'cancel_run',
464
- reason: `Plan Sponsor Gate ${normalized.gateId} cancelled`,
465
- controlDeadline: controlState.now,
466
- }, (type, payload) => event(type, payload))
467
- : [event('task.failed', {
468
- taskKey: normalized.taskKey,
469
- reason: `Plan Sponsor Gate ${normalized.gateId} ${normalized.decision}`,
470
- })];
471
- await this.#journal.append(normalized.runId, normalized.expectedSequence, [audit, ...action]);
472
- events = await this.#journal.read(normalized.runId);
473
- return planGateReceipt('committed', normalized, requestDigest, replayWorkroom(events));
474
- }
475
- /** Kernel-owned CAS commit for one exact deterministic Scheduler selection. */
476
- async commitSchedulerDecision(decision) {
477
- const events = await this.#journal.read(decision.runId);
478
- if (events.length === 0)
479
- throw new Error(`Workroom run ${decision.runId} not found`);
480
- const decisionEventType = decision.type === 'dispatch_task'
481
- ? 'scheduler.dispatch_requested'
482
- : 'scheduler.preemption_requested';
483
- const duplicate = events.find(event => event.type === decisionEventType
484
- && event.payload.decisionId === decision.decisionId);
485
- if (duplicate) {
486
- if (canonicalWorkroomJson(duplicate.payload) !== canonicalWorkroomJson(decision)) {
487
- throw new Error(`Workroom Scheduler decision replay payload drift: ${decision.decisionId}`);
488
- }
489
- return Object.freeze({
490
- status: 'duplicate',
491
- decisionId: decision.decisionId,
492
- sequence: duplicate.sequence,
493
- });
494
- }
495
- const expected = decideWorkroomSchedule(events);
496
- if (!expected || canonicalWorkroomJson(expected) !== canonicalWorkroomJson(decision)) {
497
- throw new Error('Workroom Scheduler decision is stale or differs from the deterministic Kernel decision');
498
- }
499
- const state = replayWorkroom(events);
500
- assertProject(state, decision.projectId);
501
- if (state.sequence !== decision.expectedSequence) {
502
- throw new WorkroomSequenceConflictError(decision.runId, decision.expectedSequence, state.sequence);
503
- }
504
- const drafts = decision.type === 'dispatch_task'
505
- ? [Object.freeze({
506
- eventId: decision.decisionId,
507
- occurredAt: state.now,
508
- type: 'scheduler.dispatch_requested',
509
- payload: decision,
510
- })]
511
- : [
512
- Object.freeze({
513
- eventId: decision.decisionId,
514
- occurredAt: state.now,
515
- type: 'scheduler.preemption_requested',
516
- payload: decision,
517
- }),
518
- this.#event('assignment.checkpoint_requested', {
519
- decisionId: decision.decisionId,
520
- assignmentId: decision.assignmentId,
521
- envelopeDigest: decision.assignmentEnvelopeDigest,
522
- reservedTaskKey: decision.reservedTaskKey,
523
- requestedAt: decision.requestedAt,
524
- deadline: decision.deadline,
525
- takeoverFence: decision.takeoverFence,
526
- owner: decision.owner,
527
- allowedSuccessors: decision.allowedSuccessors,
528
- }),
529
- ];
530
- const appended = await this.#journal.append(decision.runId, decision.expectedSequence, drafts);
531
- if (appended.length !== drafts.length)
532
- throw new Error('Workroom Scheduler Kernel append did not commit one decision batch');
533
- return Object.freeze({
534
- status: 'committed',
535
- decisionId: decision.decisionId,
536
- sequence: appended.at(-1).sequence,
537
- });
538
- }
539
- async execute(projectId, runId, command) {
540
- assertProjectId(projectId);
541
- const scopedProjectId = projectId.trim();
542
- assertRunId(runId);
543
- const state = await this.#readUnscoped(runId);
544
- assertProject(state, scopedProjectId);
545
- const events = command.type === 'advance_clock' ? await this.#journal.read(runId) : undefined;
546
- const drafts = [
547
- ...decideWorkroom(state, command, (type, payload) => this.#event(type, payload)),
548
- ...(command.type === 'advance_clock' && events
549
- ? decideWorkroomPreemptionTimeout(events, command.now, (type, payload) => this.#event(type, payload))
550
- : []),
551
- ];
552
- await this.#journal.append(runId, state.sequence, drafts);
553
- return drafts.length === 0 ? state : this.read(scopedProjectId, runId);
554
- }
555
- /** Sponsor-authorized, exact-sequence Run cancellation or durable replan request. */
556
- async controlRun(command, authenticatedPrincipal) {
557
- assertWorkroomRunControlCommand(command);
558
- const principalId = authenticatedPrincipal.principalId.trim();
559
- if (!principalId)
560
- throw new Error('Workroom Run control authenticated principal is required');
561
- const events = await this.#journal.read(command.runId);
562
- if (events.length === 0)
563
- throw new Error(`Workroom run ${command.runId} not found`);
564
- const state = replayWorkroom(events);
565
- assertProject(state, command.projectId);
566
- const requestDigest = workroomRunControlRequestDigest(command, principalId);
567
- const replay = events.find(event => event.type === 'run.control_decided'
568
- && event.payload.operationId === command.operationId);
569
- if (replay) {
570
- if (replay.payload.requestDigest !== requestDigest
571
- || replay.payload.action !== command.action
572
- || replay.payload.principalId !== principalId) {
573
- throw new Error(`Workroom Run control replay payload drift: ${command.operationId}`);
574
- }
575
- await this.#authorizeRunControl(command, principalId, requestDigest, {
576
- sequence: Number(replay.payload.stateSequence),
577
- status: replay.payload.stateStatus,
578
- digest: String(replay.payload.stateDigest),
579
- }, 'commit');
580
- return runControlReceipt('duplicate', command, requestDigest, replay.eventId, state);
581
- }
582
- if (command.expectedSequence !== state.sequence) {
583
- await this.#authorizeRunControl(command, principalId, requestDigest, {
584
- sequence: state.sequence,
585
- status: state.status,
586
- digest: digestCanonicalWorkroomValue(state),
587
- }, 'stale_probe');
588
- return Object.freeze({ status: 'stale', actualSequence: state.sequence });
589
- }
590
- if (command.action === 'cancel' && state.cancelRequested) {
591
- throw new Error('Workroom Run cancellation is already active');
592
- }
593
- if (state.status === 'completed' || state.status === 'cancelled') {
594
- throw new Error(`Workroom run is terminal: ${state.status}`);
595
- }
596
- if (command.action === 'cancel' && command.controlDeadline < state.now) {
597
- throw new Error('Workroom Run cancellation deadline is before the current Kernel clock');
598
- }
599
- if (command.action === 'request_replan' && state.cancelRequested) {
600
- throw new Error('Cannot request replan while Run cancellation is active');
601
- }
602
- const stateDigest = digestCanonicalWorkroomValue(state);
603
- const authorization = await this.#authorizeRunControl(command, principalId, requestDigest, {
604
- sequence: state.sequence, status: state.status, digest: stateDigest,
605
- }, 'commit');
606
- const audit = this.#event('run.control_decided', {
607
- operationId: command.operationId,
608
- action: command.action,
609
- reasonCode: command.reasonCode,
610
- expectedSequence: command.expectedSequence,
611
- principalId,
612
- requestDigest,
613
- catalogRevision: authorization.catalogRevision,
614
- projectDigest: authorization.projectDigest,
615
- authorizationRef: authorization.authorizationRef,
616
- stateSequence: state.sequence,
617
- stateStatus: state.status,
618
- stateDigest,
619
- });
620
- const drafts = command.action === 'cancel'
621
- ? [
622
- audit,
623
- ...decideWorkroom(state, {
624
- type: 'cancel_run', reason: command.reasonCode,
625
- controlDeadline: command.controlDeadline,
626
- }, (type, payload) => this.#event(type, payload)),
627
- ]
628
- : [audit, this.#event('run.replan_requested', {
629
- operationId: command.operationId,
630
- reasonCode: command.reasonCode,
631
- requestDigest,
632
- })];
633
- const appended = await this.#journal.append(command.runId, state.sequence, drafts);
634
- if (appended.length !== drafts.length) {
635
- throw new Error('Workroom Run control append did not commit one exact batch');
636
- }
637
- const next = replayWorkroom([...events, ...appended]);
638
- return runControlReceipt('committed', command, requestDigest, appended[0].eventId, next);
639
- }
640
- async #authorizeRunControl(command, principalId, requestDigest, state, purpose) {
641
- if (!this.#runControlAuthority) {
642
- throw new WorkroomRunControlUnauthorizedError('authority_not_installed');
643
- }
644
- const authorization = await this.#runControlAuthority.authorize(Object.freeze({
645
- version: 1,
646
- purpose,
647
- command,
648
- authenticatedPrincipalId: principalId,
649
- requestDigest,
650
- stateSequence: state.sequence,
651
- stateStatus: state.status,
652
- stateDigest: state.digest,
653
- }));
654
- if (!authorization.authorized) {
655
- throw new WorkroomRunControlUnauthorizedError(authorization.reason);
656
- }
657
- if (authorization.principalId !== principalId
658
- || !authorization.catalogRevision.trim()
659
- || !authorization.projectDigest.trim()
660
- || !authorization.authorizationRef.trim()) {
661
- throw new WorkroomRunControlUnauthorizedError('authority_decision_not_exact');
662
- }
663
- return authorization;
664
- }
665
- /** Atomically persists the local Assignment claim and its exact Envelope. */
666
- async previewLocalAssignment(input) {
667
- const request = normalizeWorkroomLocalAssignmentClaimRequest(input);
668
- const events = await this.#journal.read(request.runId);
669
- const state = replayWorkroom(events);
670
- assertProject(state, request.projectId);
671
- const existing = findLocalAssignmentIssuance(events, request.operationId);
672
- if (existing)
673
- assertLocalAssignmentReplay(existing, workroomLocalAssignmentRequestDigest(request));
674
- const task = state.tasks[request.taskKey];
675
- if (!task)
676
- throw new Error(`Task ${request.taskKey} not found`);
677
- if (!existing && task.status !== 'ready')
678
- throw new Error(`Task ${task.key} is ${task.status}`);
679
- return assignmentPreview({
680
- kind: 'local', assignmentRef: existing?.envelope.assignmentId
681
- ?? workroomLocalAssignmentId(request.operationId),
682
- claimDigest: digestCanonicalWorkroomValue({ kind: 'local', request }),
683
- taskRevision: existing?.envelope.taskRevision ?? task.revision,
684
- kernelSequence: existing?.envelope.factAnchor.sequence ?? state.sequence,
685
- kernelStateDigest: existing?.envelope.factAnchor.digest
686
- ?? digestCanonicalWorkroomValue(events),
687
- });
688
- }
689
- async findLocalAssignment(input) {
690
- const request = normalizeWorkroomLocalAssignmentClaimRequest(input);
691
- const events = await this.#journal.read(request.runId);
692
- const issued = findLocalAssignmentIssuance(events, request.operationId);
693
- if (!issued)
694
- return undefined;
695
- assertLocalAssignmentReplay(issued, workroomLocalAssignmentRequestDigest(request));
696
- const state = replayWorkroom(events);
697
- assertProject(state, request.projectId);
698
- return Object.freeze({ ...issued, state });
699
- }
700
- async issueLocalAssignment(input) {
701
- const request = normalizeWorkroomLocalAssignmentClaimRequest(input);
702
- const requestDigest = workroomLocalAssignmentRequestDigest(request);
703
- const existingEvents = await this.#journal.read(request.runId);
704
- const replayed = findLocalAssignmentIssuance(existingEvents, request.operationId);
705
- if (replayed) {
706
- assertLocalAssignmentReplay(replayed, requestDigest);
707
- const state = replayWorkroom(existingEvents);
708
- assertProject(state, request.projectId);
709
- return Object.freeze({ ...replayed, state });
710
- }
711
- const authorityPort = this.#localAssignmentAuthority;
712
- if (!authorityPort)
713
- throw new Error('Local Assignment authority resolver is not installed');
714
- const state = replayWorkroom(existingEvents);
715
- assertProject(state, request.projectId);
716
- const task = state.tasks[request.taskKey];
717
- if (!task)
718
- throw new Error(`Task ${request.taskKey} not found`);
719
- if (task.status !== 'ready')
720
- throw new Error(`Task ${task.key} is ${task.status}`);
721
- if (!task.acceptanceContract) {
722
- throw new Error(`Task ${task.key} Acceptance Contract is not pinned`);
723
- }
724
- const attempt = task.attempt + 1;
725
- const fence = Object.values(state.assignments)
726
- .filter(assignment => assignment.taskKey === task.key)
727
- .reduce((highest, assignment) => Math.max(highest, assignment.fence), 0) + 1;
728
- const assignmentId = workroomLocalAssignmentId(request.operationId);
729
- const factAnchor = Object.freeze({
730
- ref: `workroom-journal:${encodeURIComponent(state.runId)}:${state.sequence}`,
731
- sequence: state.sequence,
732
- digest: digestCanonicalWorkroomValue(existingEvents),
733
- });
734
- const assignment = Object.freeze({
735
- id: assignmentId,
736
- revision: 1,
737
- attempt,
738
- fence,
739
- });
740
- const authority = await authorityPort.resolveLocal(Object.freeze({
741
- projectId: state.projectId,
742
- runId: state.runId,
743
- task: Object.freeze({
744
- key: task.key,
745
- revision: task.revision,
746
- acceptanceContract: task.acceptanceContract,
747
- }),
748
- assignment,
749
- requestedAgentDefinitionId: request.agentDefinitionId,
750
- factAnchor,
751
- }));
752
- const timing = this.#trustedAssignmentTiming('Local');
753
- const issued = materializeWorkroomLocalAssignment({
754
- request,
755
- taskRevision: task.revision,
756
- assignmentId,
757
- assignmentRevision: assignment.revision,
758
- attempt,
759
- fence,
760
- issuedAt: timing.issuedAt,
761
- factAnchor,
762
- authority,
763
- });
764
- const claimDrafts = decideWorkroom(state, {
765
- type: 'claim_task',
766
- taskKey: task.key,
767
- assignmentId,
768
- assignmentRevision: issued.envelope.assignmentRevision,
769
- fence,
770
- envelopeDigest: issued.envelope.digest,
771
- owner: issued.envelope.principalId,
772
- role: issued.envelope.role,
773
- leaseExpiresAt: timing.leaseExpiresAt,
774
- }, (type, payload) => this.#event(type, payload));
775
- const drafts = Object.freeze([
776
- ...claimDrafts,
777
- this.#event('local_execution.requested', issued),
778
- ]);
779
- try {
780
- await this.#journal.append(request.runId, state.sequence, drafts);
781
- }
782
- catch (error) {
783
- if (!(error instanceof WorkroomSequenceConflictError))
784
- throw error;
785
- const winnerEvents = await this.#journal.read(request.runId);
786
- const winner = findLocalAssignmentIssuance(winnerEvents, request.operationId);
787
- if (!winner)
788
- throw error;
789
- assertLocalAssignmentReplay(winner, requestDigest);
790
- const winnerState = replayWorkroom(winnerEvents);
791
- assertProject(winnerState, request.projectId);
792
- return Object.freeze({ ...winner, state: winnerState });
793
- }
794
- return Object.freeze({
795
- ...issued,
796
- state: await this.read(request.projectId, request.runId),
797
- });
798
- }
799
- /**
800
- * Atomically persists the Kernel claim and its exact Remote Dispatch intent.
801
- * A caller names only the desired definition/endpoint; the current-generation
802
- * authority port supplies every executable snapshot and grant.
803
- */
804
- async previewRemoteAssignment(input) {
805
- const request = normalizeWorkroomRemoteAssignmentClaimRequest(input);
806
- const events = await this.#journal.read(request.runId);
807
- const state = replayWorkroom(events);
808
- assertProject(state, request.projectId);
809
- const existing = findRemoteAssignmentIssuance(events, request.operationId);
810
- if (existing)
811
- assertRemoteAssignmentReplay(existing, workroomRemoteAssignmentRequestDigest(request));
812
- const task = state.tasks[request.taskKey];
813
- if (!task)
814
- throw new Error(`Task ${request.taskKey} not found`);
815
- if (!existing && task.status !== 'ready')
816
- throw new Error(`Task ${task.key} is ${task.status}`);
817
- return assignmentPreview({
818
- kind: 'remote', assignmentRef: existing?.envelope.assignmentId
819
- ?? workroomRemoteAssignmentId(request.operationId),
820
- claimDigest: digestCanonicalWorkroomValue({ kind: 'remote', request }),
821
- taskRevision: existing?.envelope.taskRevision ?? task.revision,
822
- kernelSequence: existing?.envelope.factAnchor.sequence ?? state.sequence,
823
- kernelStateDigest: existing?.envelope.factAnchor.digest
824
- ?? digestCanonicalWorkroomValue(events),
825
- });
826
- }
827
- async findRemoteAssignment(input) {
828
- const request = normalizeWorkroomRemoteAssignmentClaimRequest(input);
829
- const events = await this.#journal.read(request.runId);
830
- const issued = findRemoteAssignmentIssuance(events, request.operationId);
831
- if (!issued)
832
- return undefined;
833
- assertRemoteAssignmentReplay(issued, workroomRemoteAssignmentRequestDigest(request));
834
- const state = replayWorkroom(events);
835
- assertProject(state, request.projectId);
836
- return Object.freeze({ ...issued, state });
837
- }
838
- async issueRemoteAssignment(input) {
839
- const request = normalizeWorkroomRemoteAssignmentClaimRequest(input);
840
- const requestDigest = workroomRemoteAssignmentRequestDigest(request);
841
- const existingEvents = await this.#journal.read(request.runId);
842
- const replayed = findRemoteAssignmentIssuance(existingEvents, request.operationId);
843
- if (replayed) {
844
- assertRemoteAssignmentReplay(replayed, requestDigest);
845
- const state = replayWorkroom(existingEvents);
846
- assertProject(state, request.projectId);
847
- return Object.freeze({ ...replayed, state });
848
- }
849
- const authorityPort = this.#remoteAssignmentAuthority;
850
- if (!authorityPort) {
851
- throw new Error('Remote Assignment authority resolver is not installed');
852
- }
853
- const state = replayWorkroom(existingEvents);
854
- assertProject(state, request.projectId);
855
- const task = state.tasks[request.taskKey];
856
- if (!task)
857
- throw new Error(`Task ${request.taskKey} not found`);
858
- if (task.status !== 'ready')
859
- throw new Error(`Task ${task.key} is ${task.status}`);
860
- if (!task.acceptanceContract) {
861
- throw new Error(`Task ${task.key} Acceptance Contract is not pinned`);
862
- }
863
- const attempt = task.attempt + 1;
864
- const fence = Object.values(state.assignments)
865
- .filter(assignment => assignment.taskKey === task.key)
866
- .reduce((highest, assignment) => Math.max(highest, assignment.fence), 0) + 1;
867
- const assignmentId = workroomRemoteAssignmentId(request.operationId);
868
- const factAnchor = Object.freeze({
869
- ref: `workroom-journal:${encodeURIComponent(state.runId)}:${state.sequence}`,
870
- sequence: state.sequence,
871
- digest: digestCanonicalWorkroomValue(existingEvents),
872
- });
873
- const assignment = Object.freeze({
874
- id: assignmentId,
875
- revision: 1,
876
- attempt,
877
- fence,
878
- });
879
- const authority = await authorityPort.resolve(Object.freeze({
880
- projectId: state.projectId,
881
- runId: state.runId,
882
- task: Object.freeze({
883
- key: task.key,
884
- revision: task.revision,
885
- acceptanceContract: task.acceptanceContract,
886
- }),
887
- assignment,
888
- requestedAgentDefinitionId: request.agentDefinitionId,
889
- requestedEndpointId: request.endpointId,
890
- factAnchor,
891
- }));
892
- const timing = this.#trustedAssignmentTiming('Remote');
893
- const leaseExpiresAt = timing.leaseExpiresAt;
894
- const issued = materializeWorkroomRemoteAssignment({
895
- request,
896
- taskRevision: task.revision,
897
- assignmentId,
898
- assignmentRevision: assignment.revision,
899
- attempt,
900
- fence,
901
- issuedAt: timing.issuedAt,
902
- leaseExpiresAt,
903
- reconcileDeadline: timing.reconcileDeadline,
904
- acceptanceContract: task.acceptanceContract,
905
- factAnchor,
906
- authority,
907
- });
908
- const claimDrafts = decideWorkroom(state, {
909
- type: 'claim_task',
910
- taskKey: task.key,
911
- assignmentId,
912
- assignmentRevision: issued.envelope.assignmentRevision,
913
- fence,
914
- envelopeDigest: issued.envelope.digest,
915
- owner: issued.envelope.principalId,
916
- role: issued.envelope.role,
917
- leaseExpiresAt,
918
- }, (type, payload) => this.#event(type, payload));
919
- const drafts = Object.freeze([
920
- ...claimDrafts,
921
- this.#event('remote_dispatch.requested', issued),
922
- ]);
923
- try {
924
- await this.#journal.append(request.runId, state.sequence, drafts);
925
- }
926
- catch (error) {
927
- if (!(error instanceof WorkroomSequenceConflictError))
928
- throw error;
929
- const winnerEvents = await this.#journal.read(request.runId);
930
- const winner = findRemoteAssignmentIssuance(winnerEvents, request.operationId);
931
- if (!winner)
932
- throw error;
933
- assertRemoteAssignmentReplay(winner, requestDigest);
934
- const winnerState = replayWorkroom(winnerEvents);
935
- assertProject(winnerState, request.projectId);
936
- return Object.freeze({ ...winner, state: winnerState });
937
- }
938
- return Object.freeze({
939
- ...issued,
940
- state: await this.read(request.projectId, request.runId),
941
- });
942
- }
943
- async applyAssignmentObservation(envelope, value, expectedSequence) {
944
- assertAssignmentExecutionEnvelope(envelope);
945
- const observation = validateAssignmentExecutionObservation(envelope, value);
946
- if (!Number.isSafeInteger(expectedSequence) || expectedSequence < 0) {
947
- throw new Error('Assignment observation expectedSequence must be a non-negative safe integer');
948
- }
949
- const events = await this.#journal.read(envelope.runId);
950
- if (events.length === 0)
951
- throw new Error(`Workroom run ${envelope.runId} not found`);
952
- const state = replayWorkroom(events);
953
- assertProject(state, envelope.projectId);
954
- const task = state.tasks[envelope.taskKey];
955
- const assignment = state.assignments[envelope.assignmentId];
956
- if (!task || !assignment
957
- || task.revision !== envelope.taskRevision
958
- || assignment.taskKey !== task.key
959
- || assignment.taskRevision !== envelope.taskRevision
960
- || assignment.revision !== envelope.assignmentRevision
961
- || assignment.attempt !== envelope.attempt
962
- || assignment.fence !== envelope.fence
963
- || assignment.envelopeDigest !== envelope.digest
964
- || assignment.owner !== envelope.principalId
965
- || assignment.role !== envelope.role) {
966
- throw new Error('Assignment observation Envelope is stale or targets another authority scope');
967
- }
968
- const observationDigest = digestCanonicalWorkroomValue(observation);
969
- const persistedDigest = assignment.observationDigests[observation.observationId];
970
- if (persistedDigest) {
971
- if (persistedDigest !== observationDigest) {
972
- throw new Error(`Assignment observationId conflict: ${observation.observationId}`);
973
- }
974
- return state;
975
- }
976
- if (task.currentAssignmentId !== assignment.id) {
977
- throw new Error('Assignment observation Envelope is stale or targets another authority scope');
978
- }
979
- if (state.sequence !== expectedSequence) {
980
- throw new WorkroomSequenceConflictError(envelope.runId, expectedSequence, state.sequence);
981
- }
982
- const header = {
983
- assignmentId: assignment.id,
984
- observationId: observation.observationId,
985
- observationDigest,
986
- envelopeDigest: envelope.digest,
987
- };
988
- let draft;
989
- switch (observation.type) {
990
- case 'progress':
991
- requireObservationStatus(assignment.status, ['running']);
992
- draft = this.#event('assignment.progress', { ...header, progress: observation.progress });
993
- break;
994
- case 'heartbeat':
995
- requireObservationStatus(assignment.status, ['leased', 'running']);
996
- draft = this.#event('assignment.heartbeat', {
997
- ...header,
998
- leaseExpiresAt: this.#trustedHeartbeatLeaseExpiry(assignment.leaseExpiresAt),
999
- });
1000
- break;
1001
- case 'checkpoint':
1002
- requireObservationStatus(assignment.status, ['running']);
1003
- draft = this.#event('assignment.checkpointed', {
1004
- ...header,
1005
- checkpointRef: observation.checkpoint.ref,
1006
- checkpointDigest: observation.checkpoint.digest,
1007
- });
1008
- break;
1009
- case 'execution_completed':
1010
- requireObservationStatus(assignment.status, ['running']);
1011
- draft = this.#event('assignment.execution_completed', {
1012
- ...header,
1013
- reportRef: observation.completion.report.ref,
1014
- reportDigest: observation.completion.report.digest,
1015
- candidateRef: observation.completion.candidate.ref,
1016
- candidateHash: observation.completion.candidate.hash,
1017
- ...(observation.completion.completionReceiptDigest === undefined
1018
- ? {}
1019
- : { completionReceiptDigest: observation.completion.completionReceiptDigest }),
1020
- });
1021
- break;
1022
- }
1023
- const preemption = replayWorkroomPreemptions(events).pending;
1024
- const drafts = observation.type === 'checkpoint'
1025
- && preemption?.assignmentId === assignment.id
1026
- ? [
1027
- draft,
1028
- this.#event('scheduler.preemption_checkpoint_acknowledged', {
1029
- decisionId: preemption.decisionId,
1030
- assignmentId: assignment.id,
1031
- envelopeDigest: envelope.digest,
1032
- observationId: observation.observationId,
1033
- observationDigest,
1034
- checkpointRef: observation.checkpoint.ref,
1035
- checkpointDigest: observation.checkpoint.digest,
1036
- assignmentAttempt: assignment.attempt,
1037
- assignmentFence: assignment.fence,
1038
- takeoverFence: preemption.takeoverFence,
1039
- }),
1040
- this.#event('assignment.preempted', {
1041
- decisionId: preemption.decisionId,
1042
- assignmentId: assignment.id,
1043
- checkpointRef: observation.checkpoint.ref,
1044
- checkpointDigest: observation.checkpoint.digest,
1045
- outcome: 'interrupted',
1046
- }),
1047
- ]
1048
- : [draft];
1049
- await this.#journal.append(envelope.runId, expectedSequence, drafts);
1050
- return this.read(envelope.projectId, envelope.runId);
1051
- }
1052
- async evaluateTaskAcceptance(projectId, runId, taskKey) {
1053
- assertProjectId(projectId);
1054
- const scopedProjectId = projectId.trim();
1055
- assertRunId(runId);
1056
- const policy = this.#acceptancePolicy;
1057
- if (!policy)
1058
- throw new Error('Acceptance Policy Decision Port is not installed');
1059
- const state = await this.#readUnscoped(runId);
1060
- assertProject(state, scopedProjectId);
1061
- const input = createAcceptanceDecisionInput(state, taskKey);
1062
- const decision = await policy.decide(input);
1063
- const assignment = state.assignments[input.assignment.id];
1064
- if (!assignment?.candidateRef
1065
- || !assignment.candidateHash
1066
- || decision.candidate.id !== assignment.candidateRef
1067
- || decision.candidate.hash !== assignment.candidateHash) {
1068
- throw new Error('Acceptance Candidate does not match the Executor completion candidate');
1069
- }
1070
- const drafts = decideTaskAcceptance(input, decision, (type, payload) => this.#event(type, payload));
1071
- await this.#journal.append(runId, input.expectedSequence, drafts);
1072
- return this.read(scopedProjectId, runId);
1073
- }
1074
- async pinTaskAcceptance(projectId, runId, taskKey) {
1075
- assertProjectId(projectId);
1076
- const scopedProjectId = projectId.trim();
1077
- assertRunId(runId);
1078
- const policy = this.#acceptancePolicy;
1079
- if (!policy)
1080
- throw new Error('Acceptance Policy Decision Port is not installed');
1081
- const state = await this.#readUnscoped(runId);
1082
- assertProject(state, scopedProjectId);
1083
- const input = createAcceptanceContractPinInput(state, taskKey);
1084
- const contract = await policy.pinContract(input);
1085
- assertAcceptanceContract(contract, input.task.key, input.task.revision);
1086
- const pinnedContract = freezeAcceptanceContract(contract);
1087
- const drafts = [this.#event('task.acceptance_pinned', {
1088
- taskKey: input.task.key,
1089
- contract: pinnedContract,
1090
- })];
1091
- await this.#journal.append(runId, input.expectedSequence, drafts);
1092
- return this.read(scopedProjectId, runId);
1093
- }
1094
- async claimReviewerAssignment(projectId, runId, assignmentId, principalId) {
1095
- const { scopedProjectId, state } = await this.#readProject(projectId, runId);
1096
- const assignment = state.reviewerAssignments[assignmentId];
1097
- if (!assignment)
1098
- throw new Error(`Reviewer Assignment ${assignmentId} not found`);
1099
- const authorization = await this.#authorize(state, {
1100
- action: 'claim_review',
1101
- principalId,
1102
- requiredRole: 'reviewer',
1103
- taskKey: assignment.taskKey,
1104
- targetId: assignment.id,
1105
- });
1106
- const controlState = this.#acceptanceControlState(state);
1107
- const drafts = decideReviewerClaim(controlState, { assignmentId, principalId, authorization }, (type, payload) => Object.freeze({ ...this.#event(type, payload), occurredAt: controlState.now }));
1108
- await this.#journal.append(runId, state.sequence, drafts);
1109
- return this.read(scopedProjectId, runId);
1110
- }
1111
- async submitReviewerVerdict(projectId, runId, assignmentId, principalId, verdict) {
1112
- const { scopedProjectId, state } = await this.#readProject(projectId, runId);
1113
- const assignment = state.reviewerAssignments[assignmentId];
1114
- if (!assignment)
1115
- throw new Error(`Reviewer Assignment ${assignmentId} not found`);
1116
- const authorization = await this.#authorize(state, {
1117
- action: 'submit_review',
1118
- principalId,
1119
- requiredRole: 'reviewer',
1120
- taskKey: assignment.taskKey,
1121
- targetId: assignment.id,
1122
- });
1123
- const controlState = this.#acceptanceControlState(state);
1124
- const drafts = decideReviewerVerdict(controlState, { assignmentId, principalId, authorization, verdict }, (type, payload) => Object.freeze({ ...this.#event(type, payload), occurredAt: controlState.now }));
1125
- await this.#journal.append(runId, state.sequence, drafts);
1126
- return this.read(scopedProjectId, runId);
1127
- }
1128
- async decideSponsorGate(projectId, runId, gateId, principalId, input) {
1129
- const { scopedProjectId, state } = await this.#readProject(projectId, runId);
1130
- const gate = state.sponsorGates[gateId];
1131
- if (!gate)
1132
- throw new Error(`Sponsor Gate ${gateId} not found`);
1133
- const authorization = await this.#authorize(state, {
1134
- action: 'decide_sponsor',
1135
- principalId,
1136
- requiredRole: 'sponsor',
1137
- taskKey: gate.taskKey,
1138
- targetId: gate.id,
1139
- });
1140
- const controlState = this.#acceptanceControlState(state);
1141
- const drafts = decideSponsorGate(controlState, { gateId, principalId, authorization, ...input }, (type, payload) => Object.freeze({ ...this.#event(type, payload), occurredAt: controlState.now }));
1142
- await this.#journal.append(runId, state.sequence, drafts);
1143
- return this.read(scopedProjectId, runId);
1144
- }
1145
- async read(projectId, runId) {
1146
- assertProjectId(projectId);
1147
- const scopedProjectId = projectId.trim();
1148
- assertRunId(runId);
1149
- const state = await this.#readUnscoped(runId);
1150
- assertProject(state, scopedProjectId);
1151
- return state;
1152
- }
1153
- async list(projectId) {
1154
- assertProjectId(projectId);
1155
- const scopedProjectId = projectId.trim();
1156
- const states = await Promise.all((await this.#journal.listRunIds()).map(runId => this.#readUnscoped(runId)));
1157
- return Object.freeze(states
1158
- .filter(state => state.projectId === scopedProjectId)
1159
- .sort((left, right) => right.now - left.now));
1160
- }
1161
- /** Durable remote dispatch intents used by the generation recovery projector. */
1162
- async listLocalAssignmentIssuances() {
1163
- const receipts = [];
1164
- for (const runId of await this.#journal.listRunIds()) {
1165
- const events = await this.#journal.read(runId);
1166
- if (events.length === 0)
1167
- continue;
1168
- const state = replayWorkroom(events);
1169
- for (const event of events) {
1170
- if (event.type !== 'local_execution.requested')
1171
- continue;
1172
- receipts.push(Object.freeze({
1173
- ...parseWorkroomLocalAssignmentIssuance(event.payload),
1174
- state,
1175
- }));
1176
- }
1177
- }
1178
- return Object.freeze(receipts.sort((left, right) => compareCanonicalWorkroomText(left.operationId, right.operationId)));
1179
- }
1180
- /** Durable remote dispatch intents used by the generation recovery projector. */
1181
- async listRemoteAssignmentIssuances() {
1182
- const receipts = [];
1183
- for (const runId of await this.#journal.listRunIds()) {
1184
- const events = await this.#journal.read(runId);
1185
- if (events.length === 0)
1186
- continue;
1187
- const state = replayWorkroom(events);
1188
- for (const event of events) {
1189
- if (event.type !== 'remote_dispatch.requested')
1190
- continue;
1191
- receipts.push(Object.freeze({
1192
- ...parseWorkroomRemoteAssignmentIssuance(event.payload),
1193
- state,
1194
- }));
1195
- }
1196
- }
1197
- return Object.freeze(receipts.sort((left, right) => compareCanonicalWorkroomText(left.operationId, right.operationId)));
1198
- }
1199
- async #readUnscoped(runId) {
1200
- const events = await this.#journal.read(runId);
1201
- if (events.length === 0)
1202
- throw new Error(`Workroom run ${runId} not found`);
1203
- return replayWorkroom(events);
1204
- }
1205
- async #readProject(projectId, runId) {
1206
- assertProjectId(projectId);
1207
- const scopedProjectId = projectId.trim();
1208
- assertRunId(runId);
1209
- const state = await this.#readUnscoped(runId);
1210
- assertProject(state, scopedProjectId);
1211
- return { scopedProjectId, state };
1212
- }
1213
- async #authorize(state, input) {
1214
- const authority = this.#acceptanceAuthority;
1215
- if (!authority)
1216
- throw new Error('Workroom Acceptance Authority Port is not installed');
1217
- return await authority.authorize(Object.freeze({
1218
- ...input,
1219
- projectId: state.projectId,
1220
- runId: state.runId,
1221
- expectedSequence: state.sequence,
1222
- }));
1223
- }
1224
- #planTaskDrafts(task) {
1225
- return Object.freeze([
1226
- this.#event('task.planned', planTaskPayload(task)),
1227
- ...(task.approvalGate ? [this.#planTaskBlockerDraft(task)] : []),
1228
- ]);
1229
- }
1230
- #planTaskBlockerDraft(task) {
1231
- const gate = task.approvalGate;
1232
- if (!gate)
1233
- throw new Error(`Workflow Plan Task ${task.key} has no Sponsor Gate`);
1234
- return this.#event('task.blocked', {
1235
- taskKey: task.key,
1236
- blockerId: gate.id,
1237
- kind: 'approval',
1238
- owner: gate.owner,
1239
- reason: `Workflow Plan Sponsor Gate ${gate.id}`,
1240
- deadline: gate.deadline,
1241
- });
1242
- }
1243
- #acceptanceControlState(state) {
1244
- const now = this.#now();
1245
- if (!Number.isFinite(now))
1246
- throw new Error('Acceptance control clock must be finite');
1247
- return Object.freeze({ ...state, now: Math.max(state.now, now) });
1248
- }
1249
- #event(type, payload) {
1250
- return Object.freeze({
1251
- eventId: this.#createId(),
1252
- occurredAt: this.#now(),
1253
- type,
1254
- payload: Object.freeze({ ...payload }),
1255
- });
1256
- }
1257
- #trustedHeartbeatLeaseExpiry(currentLeaseExpiresAt) {
1258
- const now = this.#now();
1259
- if (!Number.isFinite(now))
1260
- throw new Error('Assignment heartbeat clock must be finite');
1261
- if (now >= currentLeaseExpiresAt) {
1262
- throw new Error('Assignment heartbeat cannot revive an expired lease');
1263
- }
1264
- const leaseExpiresAt = now + this.#assignmentHeartbeatLeaseMs;
1265
- if (!Number.isFinite(leaseExpiresAt))
1266
- throw new Error('Assignment heartbeat lease expiry must be finite');
1267
- if (leaseExpiresAt <= currentLeaseExpiresAt) {
1268
- throw new Error('Assignment heartbeat must strictly extend the current lease');
1269
- }
1270
- return leaseExpiresAt;
1271
- }
1272
- #trustedAssignmentTiming(kind) {
1273
- const now = this.#now();
1274
- if (!Number.isFinite(now) || now < 0) {
1275
- throw new Error(`${kind} Assignment claim clock must be a finite timestamp`);
1276
- }
1277
- const expiresAt = now + this.#assignmentHeartbeatLeaseMs;
1278
- const reconcileDeadline = expiresAt + this.#assignmentHeartbeatLeaseMs;
1279
- if (!Number.isFinite(expiresAt) || !Number.isFinite(reconcileDeadline)) {
1280
- throw new Error(`${kind} Assignment lease expiry must be finite`);
1281
- }
1282
- return Object.freeze({
1283
- issuedAt: now,
1284
- leaseExpiresAt: expiresAt,
1285
- reconcileDeadline,
1286
- });
1287
- }
1288
- }
1289
- function assignmentPreview(input) {
1290
- const body = Object.freeze({ version: 1, ...input });
1291
- return Object.freeze({ ...body, previewDigest: digestCanonicalWorkroomValue(body) });
1292
- }
1293
- function currentWorkflowPlan(events) {
1294
- const admitted = events.filter(event => event.type === 'plan.admitted');
1295
- if (admitted.length !== 1)
1296
- throw new Error('Plan Revision requires one exact admitted Plan');
1297
- let plan = admitted[0].payload.plan;
1298
- assertWorkflowPlanProposal(plan);
1299
- let revision = 1;
1300
- for (const event of events) {
1301
- if (event.type !== 'plan.revision_applied')
1302
- continue;
1303
- const candidate = event.payload.candidate;
1304
- assertWorkflowPlanRevisionCandidate(candidate);
1305
- const nextRevision = Number(event.payload.planRevision);
1306
- if (candidate.basePlanRevision !== revision || candidate.basePlanDigest !== plan.digest
1307
- || nextRevision !== revision + 1) {
1308
- throw new Error('Persisted Plan Revision chain is not contiguous');
1309
- }
1310
- plan = candidate.nextPlan;
1311
- revision = nextRevision;
1312
- }
1313
- return Object.freeze({ revision, plan });
1314
- }
1315
- function planTaskPayload(task) {
1316
- return {
1317
- taskKey: task.key,
1318
- title: task.title,
1319
- required: task.required,
1320
- maxAttempts: task.maxAttempts,
1321
- role: task.role,
1322
- dependsOn: task.dependsOn,
1323
- requires: task.requires,
1324
- sponsorLane: task.scheduler.sponsorLane,
1325
- localRank: task.scheduler.localRank,
1326
- deadline: task.scheduler.deadline,
1327
- enqueuedAt: task.scheduler.enqueuedAt,
1328
- preemptibility: task.scheduler.preemptibility,
1329
- ...(task.approvalGate ? { approvalGate: task.approvalGate } : {}),
1330
- };
1331
- }
1332
- function requireObservationStatus(status, allowed) {
1333
- if (!allowed.includes(status))
1334
- throw new Error(`Assignment cannot observe execution while ${status}`);
1335
- }
1336
- function assertRunId(runId) {
1337
- if (!/^[A-Za-z0-9_-]{1,128}$/u.test(runId)) {
1338
- throw new Error('Workroom runId must contain only letters, digits, underscore or hyphen');
1339
- }
1340
- }
1341
- function assertProjectId(projectId) {
1342
- if (!projectId.trim())
1343
- throw new Error('Workroom projectId is required');
1344
- }
1345
- function assertProject(state, projectId) {
1346
- if (state.projectId !== projectId)
1347
- throw new Error('Workroom run does not belong to the requested Project');
1348
- }
1349
- function runControlReceipt(status, command, requestDigest, receiptRef, state) {
1350
- return Object.freeze({
1351
- status,
1352
- action: command.action,
1353
- operationId: command.operationId,
1354
- receiptRef,
1355
- receiptDigest: digestCanonicalWorkroomValue({
1356
- version: 1,
1357
- operationId: command.operationId,
1358
- action: command.action,
1359
- requestDigest,
1360
- receiptRef,
1361
- }),
1362
- state,
1363
- });
1364
- }
1365
- function findLocalAssignmentIssuance(events, operationId) {
1366
- const matches = events.filter(event => event.type === 'local_execution.requested'
1367
- && event.payload.operationId === operationId);
1368
- if (matches.length > 1) {
1369
- throw new Error(`Local Assignment operation ${operationId} is duplicated in the Kernel Journal`);
1370
- }
1371
- return matches[0]
1372
- ? parseWorkroomLocalAssignmentIssuance(matches[0].payload)
1373
- : undefined;
1374
- }
1375
- function assertLocalAssignmentReplay(issuance, requestDigest) {
1376
- if (issuance.requestDigest !== requestDigest) {
1377
- throw new Error(`Local Assignment operation payload conflict: ${issuance.operationId}`);
1378
- }
1379
- }
1380
- function findRemoteAssignmentIssuance(events, operationId) {
1381
- const matches = events.filter(event => event.type === 'remote_dispatch.requested'
1382
- && event.payload.operationId === operationId);
1383
- if (matches.length > 1) {
1384
- throw new Error(`Remote Assignment operation ${operationId} is duplicated in the Kernel Journal`);
1385
- }
1386
- return matches[0]
1387
- ? parseWorkroomRemoteAssignmentIssuance(matches[0].payload)
1388
- : undefined;
1389
- }
1390
- function assertRemoteAssignmentReplay(issuance, requestDigest) {
1391
- if (issuance.requestDigest !== requestDigest) {
1392
- throw new Error(`Remote Assignment operation payload conflict: ${issuance.operationId}`);
1393
- }
1394
- }
1395
- function normalizePlanAdmission(input) {
1396
- requireCanonicalText(input.operationId, 'operationId');
1397
- assertProjectId(input.projectId);
1398
- requireCanonicalText(input.title, 'title');
1399
- requireCanonicalText(input.sourceEventRef, 'sourceEventRef');
1400
- requireDigest(input.sourceEventDigest, 'sourceEventDigest');
1401
- requireCanonicalText(input.orchestratorAgentDefinitionId, 'orchestratorAgentDefinitionId');
1402
- assertWorkflowPlanProposal(input.plan);
1403
- if (input.plan.projectId !== input.projectId.trim()) {
1404
- throw new Error('Workflow Plan proposal belongs to another Project');
1405
- }
1406
- return Object.freeze({
1407
- ...structuredClone(input),
1408
- projectId: input.projectId.trim(),
1409
- title: input.title.trim(),
1410
- });
1411
- }
1412
- function normalizePlanGateDecision(input) {
1413
- for (const [value, label] of [
1414
- [input.operationId, 'operationId'], [input.projectId, 'projectId'], [input.runId, 'runId'],
1415
- [input.taskKey, 'taskKey'], [input.gateId, 'gateId'], [input.reason, 'reason'],
1416
- [input.sponsorPrincipalId, 'sponsorPrincipalId'], [input.sponsorAuthorityRef, 'sponsorAuthorityRef'],
1417
- ])
1418
- requireCanonicalText(value, label);
1419
- if (!Number.isSafeInteger(input.taskRevision) || input.taskRevision < 1) {
1420
- throw new Error('Plan Sponsor Gate taskRevision must be a positive safe integer');
1421
- }
1422
- if (!Number.isSafeInteger(input.expectedSequence) || input.expectedSequence < 0) {
1423
- throw new Error('Plan Sponsor Gate expectedSequence must be a non-negative safe integer');
1424
- }
1425
- if (!['approve', 'reject', 'request_changes', 'cancel'].includes(input.decision)) {
1426
- throw new Error('Plan Sponsor Gate decision is invalid');
1427
- }
1428
- return Object.freeze(structuredClone(input));
1429
- }
1430
- function planGateReceipt(status, input, requestDigest, state) {
1431
- const receiptRef = `workroom-run:${input.runId}:plan-gate:${encodeURIComponent(input.operationId)}`;
1432
- return Object.freeze({
1433
- status,
1434
- operationId: input.operationId,
1435
- receiptRef,
1436
- receiptDigest: digestCanonicalWorkroomValue({
1437
- version: 1,
1438
- operationId: input.operationId,
1439
- requestDigest,
1440
- decision: input.decision,
1441
- }),
1442
- state,
1443
- });
1444
- }
1445
- function planAdmissionRunId(operationId) {
1446
- return `run-${digestCanonicalWorkroomValue({ operationId }).slice('sha256:'.length, 38)}`;
1447
- }
1448
- function planAdmissionReceipt(runId, operationId, sourceEventDigest, plan, state) {
1449
- return Object.freeze({
1450
- runId,
1451
- receiptRef: `workroom-run:${runId}:plan:${encodeURIComponent(plan.proposalId)}`,
1452
- receiptDigest: digestCanonicalWorkroomValue({
1453
- version: 1,
1454
- runId,
1455
- operationId,
1456
- planDigest: plan.digest,
1457
- sourceEventDigest,
1458
- }),
1459
- state,
1460
- });
1461
- }
1462
- function assertExactPlanAdmission(events, input, admittedPayload) {
1463
- const expectedTypes = [
1464
- 'run.created',
1465
- 'plan.admitted',
1466
- ...input.plan.tasks.flatMap(task => [
1467
- 'task.planned',
1468
- ...(task.approvalGate ? ['task.blocked'] : []),
1469
- ]),
1470
- ];
1471
- if (events.length < expectedTypes.length
1472
- || events.slice(0, expectedTypes.length)
1473
- .some((event, index) => event.type !== expectedTypes[index])) {
1474
- throw new Error('Workflow Plan operation replay conflicts with persisted Run shape');
1475
- }
1476
- const created = events[0];
1477
- const admitted = events[1];
1478
- if (created.payload.projectId !== input.projectId
1479
- || created.payload.title !== input.title
1480
- || canonicalWorkroomJson(admitted.payload) !== canonicalWorkroomJson(admittedPayload)) {
1481
- throw new Error('Workflow Plan operation replay payload drift');
1482
- }
1483
- let cursor = 2;
1484
- for (const task of input.plan.tasks) {
1485
- const payload = events[cursor++].payload;
1486
- const expected = {
1487
- taskKey: task.key, title: task.title, required: task.required,
1488
- maxAttempts: task.maxAttempts, role: task.role,
1489
- dependsOn: task.dependsOn, requires: task.requires,
1490
- sponsorLane: task.scheduler.sponsorLane,
1491
- localRank: task.scheduler.localRank,
1492
- deadline: task.scheduler.deadline,
1493
- enqueuedAt: task.scheduler.enqueuedAt,
1494
- preemptibility: task.scheduler.preemptibility,
1495
- ...(task.approvalGate ? { approvalGate: task.approvalGate } : {}),
1496
- };
1497
- if (canonicalWorkroomJson(payload) !== canonicalWorkroomJson(expected)) {
1498
- throw new Error('Workflow Plan operation replay Task payload drift');
1499
- }
1500
- if (task.approvalGate) {
1501
- const blocker = events[cursor++].payload;
1502
- const expectedBlocker = {
1503
- taskKey: task.key,
1504
- blockerId: task.approvalGate.id,
1505
- kind: 'approval',
1506
- owner: task.approvalGate.owner,
1507
- reason: `Workflow Plan Sponsor Gate ${task.approvalGate.id}`,
1508
- deadline: task.approvalGate.deadline,
1509
- };
1510
- if (canonicalWorkroomJson(blocker) !== canonicalWorkroomJson(expectedBlocker)) {
1511
- throw new Error('Workflow Plan operation replay Sponsor Gate payload drift');
1512
- }
1513
- }
1514
- }
1515
- }
1516
- function requireCanonicalText(value, label) {
1517
- if (typeof value !== 'string' || !value.trim() || value !== value.trim()) {
1518
- throw new Error(`Workroom Plan admission ${label} must be canonical text`);
1519
- }
1520
- }
1521
- function requireDigest(value, label) {
1522
- if (typeof value !== 'string' || !/^sha256:[a-f0-9]{64}$/u.test(value)) {
1523
- throw new Error(`Workroom Plan admission ${label} must be a canonical SHA-256 digest`);
1524
- }
1525
- }
1526
- //# sourceMappingURL=workroom-kernel.js.map