@zhin.js/agent 1.1.13 → 1.1.14

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 (1159) hide show
  1. package/README.md +40 -20
  2. package/lib/ai-event-bus.d.ts +1 -1
  3. package/lib/ai-hook-handlers.d.ts +1 -1
  4. package/lib/assistant/config.d.ts +3 -17
  5. package/lib/assistant/config.d.ts.map +1 -1
  6. package/lib/assistant/config.js +1 -8
  7. package/lib/assistant/config.js.map +1 -1
  8. package/lib/assistant/index.d.ts +6 -9
  9. package/lib/assistant/index.d.ts.map +1 -1
  10. package/lib/assistant/index.js +4 -6
  11. package/lib/assistant/index.js.map +1 -1
  12. package/lib/assistant/job-engine.d.ts +0 -4
  13. package/lib/assistant/job-engine.d.ts.map +1 -1
  14. package/lib/assistant/job-engine.js +0 -2
  15. package/lib/assistant/job-engine.js.map +1 -1
  16. package/lib/assistant/job-store.d.ts +1 -8
  17. package/lib/assistant/job-store.d.ts.map +1 -1
  18. package/lib/assistant/job-store.js +3 -9
  19. package/lib/assistant/job-store.js.map +1 -1
  20. package/lib/assistant/job-worker.d.ts +2 -3
  21. package/lib/assistant/job-worker.d.ts.map +1 -1
  22. package/lib/assistant/job-worker.js +15 -25
  23. package/lib/assistant/job-worker.js.map +1 -1
  24. package/lib/assistant/runtime-contract.d.ts +22 -0
  25. package/lib/assistant/runtime-contract.d.ts.map +1 -0
  26. package/lib/assistant/runtime-contract.js +2 -0
  27. package/lib/assistant/runtime-contract.js.map +1 -0
  28. package/lib/assistant/types.d.ts +0 -10
  29. package/lib/assistant/types.d.ts.map +1 -1
  30. package/lib/assistant/types.js +0 -4
  31. package/lib/assistant/types.js.map +1 -1
  32. package/lib/authoring/bridge.d.ts +1 -1
  33. package/lib/authoring/index.d.ts +0 -4
  34. package/lib/authoring/index.d.ts.map +1 -1
  35. package/lib/authoring/index.js +0 -2
  36. package/lib/authoring/index.js.map +1 -1
  37. package/lib/authoring/types.d.ts +3 -39
  38. package/lib/authoring/types.d.ts.map +1 -1
  39. package/lib/authoring/types.js.map +1 -1
  40. package/lib/builtin/bash-tool.d.ts.map +1 -1
  41. package/lib/builtin/bash-tool.js +15 -2
  42. package/lib/builtin/bash-tool.js.map +1 -1
  43. package/lib/builtin/five-agent/index.d.ts +0 -1
  44. package/lib/builtin/five-agent/index.d.ts.map +1 -1
  45. package/lib/builtin/five-agent/index.js +0 -1
  46. package/lib/builtin/five-agent/index.js.map +1 -1
  47. package/lib/builtin/five-agent/role-capability-policy.d.ts +1 -1
  48. package/lib/builtin/five-agent/role-capability-policy.d.ts.map +1 -1
  49. package/lib/builtin/five-agent/role-capability-policy.js +1 -1
  50. package/lib/builtin/five-agent/role-capability-policy.js.map +1 -1
  51. package/lib/builtin/spawn-task-tool.d.ts +1 -1
  52. package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
  53. package/lib/builtin/spawn-task-tool.js +4 -100
  54. package/lib/builtin/spawn-task-tool.js.map +1 -1
  55. package/lib/builtin-tools.d.ts +0 -2
  56. package/lib/builtin-tools.d.ts.map +1 -1
  57. package/lib/builtin-tools.js +0 -6
  58. package/lib/builtin-tools.js.map +1 -1
  59. package/lib/common-adapter-tools.d.ts +1 -1
  60. package/lib/config/agent-interfaces.d.ts +2 -1
  61. package/lib/config/agent-interfaces.d.ts.map +1 -1
  62. package/lib/config/index.d.ts +3 -3
  63. package/lib/config/index.d.ts.map +1 -1
  64. package/lib/config/index.js +2 -2
  65. package/lib/config/index.js.map +1 -1
  66. package/lib/config/keyword-triggers.d.ts +0 -1
  67. package/lib/config/keyword-triggers.d.ts.map +1 -1
  68. package/lib/config/keyword-triggers.js +0 -1
  69. package/lib/config/keyword-triggers.js.map +1 -1
  70. package/lib/config/normalize-ai-config.d.ts.map +1 -1
  71. package/lib/config/normalize-ai-config.js +9 -0
  72. package/lib/config/normalize-ai-config.js.map +1 -1
  73. package/lib/config/validate-ai-config.d.ts +1 -0
  74. package/lib/config/validate-ai-config.d.ts.map +1 -1
  75. package/lib/config/validate-ai-config.js +179 -0
  76. package/lib/config/validate-ai-config.js.map +1 -1
  77. package/lib/config/zhin-agent-config.d.ts +0 -3
  78. package/lib/config/zhin-agent-config.d.ts.map +1 -1
  79. package/lib/config/zhin-agent-constants.d.ts +0 -3
  80. package/lib/config/zhin-agent-constants.d.ts.map +1 -1
  81. package/lib/config/zhin-agent-constants.js +0 -14
  82. package/lib/config/zhin-agent-constants.js.map +1 -1
  83. package/lib/config/zhin-agent-defaults.d.ts.map +1 -1
  84. package/lib/config/zhin-agent-defaults.js +0 -3
  85. package/lib/config/zhin-agent-defaults.js.map +1 -1
  86. package/lib/config/zhin-agent-dependencies.d.ts +4 -5
  87. package/lib/config/zhin-agent-dependencies.d.ts.map +1 -1
  88. package/lib/context/context-system.d.ts +2 -1
  89. package/lib/context/context-system.d.ts.map +1 -1
  90. package/lib/context/context-system.js +1 -0
  91. package/lib/context/context-system.js.map +1 -1
  92. package/lib/context/context-tail-limit.d.ts +2 -2
  93. package/lib/context/context-tail-limit.d.ts.map +1 -1
  94. package/lib/context/context-tail-limit.js +2 -3
  95. package/lib/context/context-tail-limit.js.map +1 -1
  96. package/lib/context/im-turn-context-adapter.d.ts +1 -2
  97. package/lib/context/im-turn-context-adapter.d.ts.map +1 -1
  98. package/lib/context/im-turn-context-adapter.js +1 -5
  99. package/lib/context/im-turn-context-adapter.js.map +1 -1
  100. package/lib/context/turn-envelope.d.ts +1 -1
  101. package/lib/context/turn-envelope.d.ts.map +1 -1
  102. package/lib/context/turn-envelope.js +4 -0
  103. package/lib/context/turn-envelope.js.map +1 -1
  104. package/lib/context/turn-user-message.d.ts +1 -1
  105. package/lib/context/turn-user-message.d.ts.map +1 -1
  106. package/lib/context/turn-user-message.js +3 -3
  107. package/lib/context/turn-user-message.js.map +1 -1
  108. package/lib/core/agent-core-run.d.ts.map +1 -1
  109. package/lib/core/agent-core-run.js +36 -12
  110. package/lib/core/agent-core-run.js.map +1 -1
  111. package/lib/core/agent-loop-standalone.d.ts +1 -1
  112. package/lib/core/agent-loop-standalone.js +13 -6
  113. package/lib/core/agent-loop-standalone.js.map +1 -1
  114. package/lib/core/tool-execution-authority.d.ts +2 -2
  115. package/lib/core/tool-execution-authority.d.ts.map +1 -1
  116. package/lib/data-governance/data-governance.d.ts +198 -0
  117. package/lib/data-governance/data-governance.d.ts.map +1 -0
  118. package/lib/data-governance/data-governance.js +660 -0
  119. package/lib/data-governance/data-governance.js.map +1 -0
  120. package/lib/data-governance/database-payload-lifecycle-repository.d.ts +68 -0
  121. package/lib/data-governance/database-payload-lifecycle-repository.d.ts.map +1 -0
  122. package/lib/data-governance/database-payload-lifecycle-repository.js +226 -0
  123. package/lib/data-governance/database-payload-lifecycle-repository.js.map +1 -0
  124. package/lib/data-governance/disclosure-manifest.d.ts +110 -0
  125. package/lib/data-governance/disclosure-manifest.d.ts.map +1 -0
  126. package/lib/data-governance/disclosure-manifest.js +264 -0
  127. package/lib/data-governance/disclosure-manifest.js.map +1 -0
  128. package/lib/data-governance/encrypted-database-payload-vault.d.ts +107 -0
  129. package/lib/data-governance/encrypted-database-payload-vault.d.ts.map +1 -0
  130. package/lib/data-governance/encrypted-database-payload-vault.js +236 -0
  131. package/lib/data-governance/encrypted-database-payload-vault.js.map +1 -0
  132. package/lib/data-governance/encrypted-file-payload-vault.d.ts +117 -0
  133. package/lib/data-governance/encrypted-file-payload-vault.d.ts.map +1 -0
  134. package/lib/data-governance/encrypted-file-payload-vault.js +507 -0
  135. package/lib/data-governance/encrypted-file-payload-vault.js.map +1 -0
  136. package/lib/data-governance/file-payload-lifecycle-repository.d.ts +19 -0
  137. package/lib/data-governance/file-payload-lifecycle-repository.d.ts.map +1 -0
  138. package/lib/data-governance/file-payload-lifecycle-repository.js +194 -0
  139. package/lib/data-governance/file-payload-lifecycle-repository.js.map +1 -0
  140. package/lib/data-governance/governance-authority-repository.d.ts +148 -0
  141. package/lib/data-governance/governance-authority-repository.d.ts.map +1 -0
  142. package/lib/data-governance/governance-authority-repository.js +439 -0
  143. package/lib/data-governance/governance-authority-repository.js.map +1 -0
  144. package/lib/data-governance/governed-payload-write-saga.d.ts +126 -0
  145. package/lib/data-governance/governed-payload-write-saga.d.ts.map +1 -0
  146. package/lib/data-governance/governed-payload-write-saga.js +471 -0
  147. package/lib/data-governance/governed-payload-write-saga.js.map +1 -0
  148. package/lib/data-governance/payload-hold-overdue-projection.d.ts +57 -0
  149. package/lib/data-governance/payload-hold-overdue-projection.d.ts.map +1 -0
  150. package/lib/data-governance/payload-hold-overdue-projection.js +80 -0
  151. package/lib/data-governance/payload-hold-overdue-projection.js.map +1 -0
  152. package/lib/data-governance/payload-lifecycle.d.ts +359 -0
  153. package/lib/data-governance/payload-lifecycle.d.ts.map +1 -0
  154. package/lib/data-governance/payload-lifecycle.js +930 -0
  155. package/lib/data-governance/payload-lifecycle.js.map +1 -0
  156. package/lib/data-governance/payload-vault-storage-handoff.d.ts +255 -0
  157. package/lib/data-governance/payload-vault-storage-handoff.d.ts.map +1 -0
  158. package/lib/data-governance/payload-vault-storage-handoff.js +471 -0
  159. package/lib/data-governance/payload-vault-storage-handoff.js.map +1 -0
  160. package/lib/defaults/hooks.d.ts +2 -2
  161. package/lib/defaults/hooks.d.ts.map +1 -1
  162. package/lib/defaults/hooks.js +2 -2
  163. package/lib/defaults/hooks.js.map +1 -1
  164. package/lib/defaults/subagents.d.ts +2 -2
  165. package/lib/defaults/subagents.d.ts.map +1 -1
  166. package/lib/defaults/subagents.js +2 -2
  167. package/lib/defaults/subagents.js.map +1 -1
  168. package/lib/defaults/tools.d.ts +1 -2
  169. package/lib/defaults/tools.js +2 -2
  170. package/lib/defaults/tools.js.map +1 -1
  171. package/lib/discovery/agent-surface-info.d.ts +0 -2
  172. package/lib/discovery/agent-surface-info.d.ts.map +1 -1
  173. package/lib/discovery/agent-surface-info.js +0 -5
  174. package/lib/discovery/agent-surface-info.js.map +1 -1
  175. package/lib/discovery/agent-surface.d.ts.map +1 -1
  176. package/lib/discovery/agent-surface.js +0 -39
  177. package/lib/discovery/agent-surface.js.map +1 -1
  178. package/lib/event/agent-stream-hooks.d.ts +1 -1
  179. package/lib/event/hook-stream-sink.d.ts +1 -1
  180. package/lib/event/publish-agent-stream.d.ts +3 -3
  181. package/lib/event/publish-agent-stream.d.ts.map +1 -1
  182. package/lib/event/publish-agent-stream.js +1 -1
  183. package/lib/event/publish-agent-stream.js.map +1 -1
  184. package/lib/event/session-events.d.ts +1 -1
  185. package/lib/event/turn-event.d.ts +22 -2
  186. package/lib/event/turn-event.d.ts.map +1 -1
  187. package/lib/event/turn-event.js.map +1 -1
  188. package/lib/event/turn-to-agent-stream.js +6 -0
  189. package/lib/event/turn-to-agent-stream.js.map +1 -1
  190. package/lib/features/agent-feature.d.ts +1 -1
  191. package/lib/features/mcp-feature.d.ts +1 -1
  192. package/lib/index.d.ts +99 -33
  193. package/lib/index.d.ts.map +1 -1
  194. package/lib/index.js +94 -21
  195. package/lib/index.js.map +1 -1
  196. package/lib/ingress/capability-ingress.d.ts +5 -5
  197. package/lib/ingress/capability-ingress.d.ts.map +1 -1
  198. package/lib/ingress/capability-ingress.js +26 -26
  199. package/lib/ingress/capability-ingress.js.map +1 -1
  200. package/lib/init/activate-ai-database-storage.d.ts +5 -3
  201. package/lib/init/activate-ai-database-storage.d.ts.map +1 -1
  202. package/lib/init/activate-ai-database-storage.js +23 -32
  203. package/lib/init/activate-ai-database-storage.js.map +1 -1
  204. package/lib/init/configure-zhin-agent.d.ts +1 -1
  205. package/lib/init/configure-zhin-agent.d.ts.map +1 -1
  206. package/lib/init/configure-zhin-agent.js +3 -5
  207. package/lib/init/configure-zhin-agent.js.map +1 -1
  208. package/lib/init/define-ai-database-models.d.ts.map +1 -1
  209. package/lib/init/define-ai-database-models.js +21 -5
  210. package/lib/init/define-ai-database-models.js.map +1 -1
  211. package/lib/init/dispose-zhin-agent.d.ts +1 -3
  212. package/lib/init/dispose-zhin-agent.d.ts.map +1 -1
  213. package/lib/init/dispose-zhin-agent.js +0 -2
  214. package/lib/init/dispose-zhin-agent.js.map +1 -1
  215. package/lib/init/introspection-collectors.d.ts +1 -1
  216. package/lib/init/introspection-collectors.d.ts.map +1 -1
  217. package/lib/init/introspection-collectors.js +13 -14
  218. package/lib/init/introspection-collectors.js.map +1 -1
  219. package/lib/internal/agent-host.d.ts +5 -8
  220. package/lib/internal/agent-host.d.ts.map +1 -1
  221. package/lib/internal/host-types.d.ts +4 -0
  222. package/lib/internal/host-types.d.ts.map +1 -1
  223. package/lib/journal/persistent-turn-journal.d.ts +5 -1
  224. package/lib/journal/persistent-turn-journal.d.ts.map +1 -1
  225. package/lib/journal/persistent-turn-journal.js +11 -1
  226. package/lib/journal/persistent-turn-journal.js.map +1 -1
  227. package/lib/mcp-client/bridge.d.ts +1 -1
  228. package/lib/mcp-client/connection.d.ts +1 -1
  229. package/lib/mcp-client/index.d.ts +1 -1
  230. package/lib/media/media-normalize.d.ts +9 -5
  231. package/lib/media/media-normalize.d.ts.map +1 -1
  232. package/lib/media/media-normalize.js +125 -69
  233. package/lib/media/media-normalize.js.map +1 -1
  234. package/lib/media/media-publisher.d.ts.map +1 -1
  235. package/lib/media/media-publisher.js +48 -3
  236. package/lib/media/media-publisher.js.map +1 -1
  237. package/lib/media/vision-capability.js +1 -1
  238. package/lib/media/vision-capability.js.map +1 -1
  239. package/lib/memory/index.d.ts +1 -1
  240. package/lib/memory/index.d.ts.map +1 -1
  241. package/lib/plugin-ai-hook-bus.d.ts +1 -1
  242. package/lib/plugin-runtime/agent-host-port.d.ts +66 -4
  243. package/lib/plugin-runtime/agent-host-port.d.ts.map +1 -1
  244. package/lib/plugin-runtime/agent-host-port.js.map +1 -1
  245. package/lib/plugin-runtime/agent-runtime.d.ts +3 -0
  246. package/lib/plugin-runtime/agent-runtime.d.ts.map +1 -1
  247. package/lib/plugin-runtime/agent-runtime.js +73 -3
  248. package/lib/plugin-runtime/agent-runtime.js.map +1 -1
  249. package/lib/plugin-runtime/agent-trace-runtime.d.ts +37 -0
  250. package/lib/plugin-runtime/agent-trace-runtime.d.ts.map +1 -0
  251. package/lib/plugin-runtime/agent-trace-runtime.js +150 -0
  252. package/lib/plugin-runtime/agent-trace-runtime.js.map +1 -0
  253. package/lib/plugin-runtime/capability-tools.js +2 -2
  254. package/lib/plugin-runtime/capability-tools.js.map +1 -1
  255. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.d.ts +70 -0
  256. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.d.ts.map +1 -0
  257. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.js +203 -0
  258. package/lib/plugin-runtime/database-overlay-pack-promotion-repository.js.map +1 -0
  259. package/lib/plugin-runtime/deferred-capability-plan.d.ts +26 -0
  260. package/lib/plugin-runtime/deferred-capability-plan.d.ts.map +1 -1
  261. package/lib/plugin-runtime/deferred-capability-plan.js +98 -4
  262. package/lib/plugin-runtime/deferred-capability-plan.js.map +1 -1
  263. package/lib/plugin-runtime/full-agent-turn-engine.js +48 -5
  264. package/lib/plugin-runtime/full-agent-turn-engine.js.map +1 -1
  265. package/lib/plugin-runtime/host-mcp-projection.d.ts +1 -1
  266. package/lib/plugin-runtime/index.d.ts +66 -0
  267. package/lib/plugin-runtime/index.d.ts.map +1 -1
  268. package/lib/plugin-runtime/index.js +65 -0
  269. package/lib/plugin-runtime/index.js.map +1 -1
  270. package/lib/plugin-runtime/native-interaction-tools.js +1 -1
  271. package/lib/plugin-runtime/native-interaction-tools.js.map +1 -1
  272. package/lib/plugin-runtime/native-semantic-memory-tools.d.ts +17 -0
  273. package/lib/plugin-runtime/native-semantic-memory-tools.d.ts.map +1 -0
  274. package/lib/plugin-runtime/native-semantic-memory-tools.js +169 -0
  275. package/lib/plugin-runtime/native-semantic-memory-tools.js.map +1 -0
  276. package/lib/plugin-runtime/turn-intent-resolver.d.ts +20 -0
  277. package/lib/plugin-runtime/turn-intent-resolver.d.ts.map +1 -0
  278. package/lib/plugin-runtime/turn-intent-resolver.js +8 -0
  279. package/lib/plugin-runtime/turn-intent-resolver.js.map +1 -0
  280. package/lib/plugin-runtime/workroom-acceptance-authority.d.ts +5 -0
  281. package/lib/plugin-runtime/workroom-acceptance-authority.d.ts.map +1 -0
  282. package/lib/plugin-runtime/workroom-acceptance-authority.js +14 -0
  283. package/lib/plugin-runtime/workroom-acceptance-authority.js.map +1 -0
  284. package/lib/plugin-runtime/workroom-acceptance-fact-providers.d.ts +233 -0
  285. package/lib/plugin-runtime/workroom-acceptance-fact-providers.d.ts.map +1 -0
  286. package/lib/plugin-runtime/workroom-acceptance-fact-providers.js +517 -0
  287. package/lib/plugin-runtime/workroom-acceptance-fact-providers.js.map +1 -0
  288. package/lib/plugin-runtime/workroom-acceptance-internal-providers.d.ts +139 -0
  289. package/lib/plugin-runtime/workroom-acceptance-internal-providers.d.ts.map +1 -0
  290. package/lib/plugin-runtime/workroom-acceptance-internal-providers.js +430 -0
  291. package/lib/plugin-runtime/workroom-acceptance-internal-providers.js.map +1 -0
  292. package/lib/plugin-runtime/workroom-acceptance-policy.d.ts +4 -0
  293. package/lib/plugin-runtime/workroom-acceptance-policy.d.ts.map +1 -0
  294. package/lib/plugin-runtime/workroom-acceptance-policy.js +20 -0
  295. package/lib/plugin-runtime/workroom-acceptance-policy.js.map +1 -0
  296. package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts +175 -0
  297. package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts.map +1 -0
  298. package/lib/plugin-runtime/workroom-acceptance-production-composition.js +793 -0
  299. package/lib/plugin-runtime/workroom-acceptance-production-composition.js.map +1 -0
  300. package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts +186 -0
  301. package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts.map +1 -0
  302. package/lib/plugin-runtime/workroom-acceptance-provider-composition.js +553 -0
  303. package/lib/plugin-runtime/workroom-acceptance-provider-composition.js.map +1 -0
  304. package/lib/plugin-runtime/workroom-accepted-source-runtime.d.ts +75 -0
  305. package/lib/plugin-runtime/workroom-accepted-source-runtime.d.ts.map +1 -0
  306. package/lib/plugin-runtime/workroom-accepted-source-runtime.js +267 -0
  307. package/lib/plugin-runtime/workroom-accepted-source-runtime.js.map +1 -0
  308. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.d.ts +42 -0
  309. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.d.ts.map +1 -0
  310. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.js +90 -0
  311. package/lib/plugin-runtime/workroom-assignment-authority-grant-runtime.js.map +1 -0
  312. package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts +159 -0
  313. package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts.map +1 -0
  314. package/lib/plugin-runtime/workroom-assignment-authority-provider.js +595 -0
  315. package/lib/plugin-runtime/workroom-assignment-authority-provider.js.map +1 -0
  316. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.d.ts +58 -0
  317. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.d.ts.map +1 -0
  318. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.js +218 -0
  319. package/lib/plugin-runtime/workroom-assignment-knowledge-composition.js.map +1 -0
  320. package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts +47 -0
  321. package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts.map +1 -0
  322. package/lib/plugin-runtime/workroom-data-governance-authority-writer.js +115 -0
  323. package/lib/plugin-runtime/workroom-data-governance-authority-writer.js.map +1 -0
  324. package/lib/plugin-runtime/workroom-data-governance-composition.d.ts +28 -0
  325. package/lib/plugin-runtime/workroom-data-governance-composition.d.ts.map +1 -0
  326. package/lib/plugin-runtime/workroom-data-governance-composition.js +41 -0
  327. package/lib/plugin-runtime/workroom-data-governance-composition.js.map +1 -0
  328. package/lib/plugin-runtime/workroom-data-governance-root-provider.d.ts +51 -0
  329. package/lib/plugin-runtime/workroom-data-governance-root-provider.d.ts.map +1 -0
  330. package/lib/plugin-runtime/workroom-data-governance-root-provider.js +66 -0
  331. package/lib/plugin-runtime/workroom-data-governance-root-provider.js.map +1 -0
  332. package/lib/plugin-runtime/workroom-data-governance-runtime.d.ts +134 -0
  333. package/lib/plugin-runtime/workroom-data-governance-runtime.d.ts.map +1 -0
  334. package/lib/plugin-runtime/workroom-data-governance-runtime.js +1253 -0
  335. package/lib/plugin-runtime/workroom-data-governance-runtime.js.map +1 -0
  336. package/lib/plugin-runtime/workroom-data-governance-storage.d.ts +66 -0
  337. package/lib/plugin-runtime/workroom-data-governance-storage.d.ts.map +1 -0
  338. package/lib/plugin-runtime/workroom-data-governance-storage.js +160 -0
  339. package/lib/plugin-runtime/workroom-data-governance-storage.js.map +1 -0
  340. package/lib/plugin-runtime/workroom-data-lifecycle-composition.d.ts +37 -0
  341. package/lib/plugin-runtime/workroom-data-lifecycle-composition.d.ts.map +1 -0
  342. package/lib/plugin-runtime/workroom-data-lifecycle-composition.js +131 -0
  343. package/lib/plugin-runtime/workroom-data-lifecycle-composition.js.map +1 -0
  344. package/lib/plugin-runtime/workroom-data-lifecycle-console.d.ts +238 -0
  345. package/lib/plugin-runtime/workroom-data-lifecycle-console.d.ts.map +1 -0
  346. package/lib/plugin-runtime/workroom-data-lifecycle-console.js +495 -0
  347. package/lib/plugin-runtime/workroom-data-lifecycle-console.js.map +1 -0
  348. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.d.ts +15 -0
  349. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.d.ts.map +1 -0
  350. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.js +119 -0
  351. package/lib/plugin-runtime/workroom-data-lifecycle-human-ingress.js.map +1 -0
  352. package/lib/plugin-runtime/workroom-dynamic-planning-provider.d.ts +142 -0
  353. package/lib/plugin-runtime/workroom-dynamic-planning-provider.d.ts.map +1 -0
  354. package/lib/plugin-runtime/workroom-dynamic-planning-provider.js +301 -0
  355. package/lib/plugin-runtime/workroom-dynamic-planning-provider.js.map +1 -0
  356. package/lib/plugin-runtime/workroom-dynamic-planning.d.ts +4 -0
  357. package/lib/plugin-runtime/workroom-dynamic-planning.d.ts.map +1 -0
  358. package/lib/plugin-runtime/workroom-dynamic-planning.js +13 -0
  359. package/lib/plugin-runtime/workroom-dynamic-planning.js.map +1 -0
  360. package/lib/plugin-runtime/workroom-effect-composition.d.ts +37 -0
  361. package/lib/plugin-runtime/workroom-effect-composition.d.ts.map +1 -0
  362. package/lib/plugin-runtime/workroom-effect-composition.js +69 -0
  363. package/lib/plugin-runtime/workroom-effect-composition.js.map +1 -0
  364. package/lib/plugin-runtime/workroom-effect-production.d.ts +133 -0
  365. package/lib/plugin-runtime/workroom-effect-production.d.ts.map +1 -0
  366. package/lib/plugin-runtime/workroom-effect-production.js +272 -0
  367. package/lib/plugin-runtime/workroom-effect-production.js.map +1 -0
  368. package/lib/plugin-runtime/workroom-effect-runtime.d.ts +72 -0
  369. package/lib/plugin-runtime/workroom-effect-runtime.d.ts.map +1 -0
  370. package/lib/plugin-runtime/workroom-effect-runtime.js +179 -0
  371. package/lib/plugin-runtime/workroom-effect-runtime.js.map +1 -0
  372. package/lib/plugin-runtime/workroom-governed-dispatch-composition.d.ts +27 -0
  373. package/lib/plugin-runtime/workroom-governed-dispatch-composition.d.ts.map +1 -0
  374. package/lib/plugin-runtime/workroom-governed-dispatch-composition.js +40 -0
  375. package/lib/plugin-runtime/workroom-governed-dispatch-composition.js.map +1 -0
  376. package/lib/plugin-runtime/workroom-governed-dispatch-reasons.d.ts +10 -0
  377. package/lib/plugin-runtime/workroom-governed-dispatch-reasons.d.ts.map +1 -0
  378. package/lib/plugin-runtime/workroom-governed-dispatch-reasons.js +20 -0
  379. package/lib/plugin-runtime/workroom-governed-dispatch-reasons.js.map +1 -0
  380. package/lib/plugin-runtime/workroom-journal-payload-composition.d.ts +16 -0
  381. package/lib/plugin-runtime/workroom-journal-payload-composition.d.ts.map +1 -0
  382. package/lib/plugin-runtime/workroom-journal-payload-composition.js +69 -0
  383. package/lib/plugin-runtime/workroom-journal-payload-composition.js.map +1 -0
  384. package/lib/plugin-runtime/workroom-local-agent-core-adapter.d.ts +17 -0
  385. package/lib/plugin-runtime/workroom-local-agent-core-adapter.d.ts.map +1 -0
  386. package/lib/plugin-runtime/workroom-local-agent-core-adapter.js +101 -0
  387. package/lib/plugin-runtime/workroom-local-agent-core-adapter.js.map +1 -0
  388. package/lib/plugin-runtime/workroom-local-agent-loop.d.ts +90 -0
  389. package/lib/plugin-runtime/workroom-local-agent-loop.d.ts.map +1 -0
  390. package/lib/plugin-runtime/workroom-local-agent-loop.js +303 -0
  391. package/lib/plugin-runtime/workroom-local-agent-loop.js.map +1 -0
  392. package/lib/plugin-runtime/workroom-local-assignment-authority.d.ts +5 -0
  393. package/lib/plugin-runtime/workroom-local-assignment-authority.d.ts.map +1 -0
  394. package/lib/plugin-runtime/workroom-local-assignment-authority.js +16 -0
  395. package/lib/plugin-runtime/workroom-local-assignment-authority.js.map +1 -0
  396. package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts +33 -0
  397. package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts.map +1 -0
  398. package/lib/plugin-runtime/workroom-local-assignment-runtime.js +189 -0
  399. package/lib/plugin-runtime/workroom-local-assignment-runtime.js.map +1 -0
  400. package/lib/plugin-runtime/workroom-local-assignment-supply.d.ts +39 -0
  401. package/lib/plugin-runtime/workroom-local-assignment-supply.d.ts.map +1 -0
  402. package/lib/plugin-runtime/workroom-local-assignment-supply.js +107 -0
  403. package/lib/plugin-runtime/workroom-local-assignment-supply.js.map +1 -0
  404. package/lib/plugin-runtime/workroom-overlay-pack-promotion.d.ts +145 -0
  405. package/lib/plugin-runtime/workroom-overlay-pack-promotion.d.ts.map +1 -0
  406. package/lib/plugin-runtime/workroom-overlay-pack-promotion.js +516 -0
  407. package/lib/plugin-runtime/workroom-overlay-pack-promotion.js.map +1 -0
  408. package/lib/plugin-runtime/workroom-payload-processor-recall.d.ts +91 -0
  409. package/lib/plugin-runtime/workroom-payload-processor-recall.d.ts.map +1 -0
  410. package/lib/plugin-runtime/workroom-payload-processor-recall.js +189 -0
  411. package/lib/plugin-runtime/workroom-payload-processor-recall.js.map +1 -0
  412. package/lib/plugin-runtime/workroom-plan-gate-authority.d.ts +7 -0
  413. package/lib/plugin-runtime/workroom-plan-gate-authority.d.ts.map +1 -0
  414. package/lib/plugin-runtime/workroom-plan-gate-authority.js +40 -0
  415. package/lib/plugin-runtime/workroom-plan-gate-authority.js.map +1 -0
  416. package/lib/plugin-runtime/workroom-portfolio-capacity.d.ts +132 -0
  417. package/lib/plugin-runtime/workroom-portfolio-capacity.d.ts.map +1 -0
  418. package/lib/plugin-runtime/workroom-portfolio-capacity.js +189 -0
  419. package/lib/plugin-runtime/workroom-portfolio-capacity.js.map +1 -0
  420. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.d.ts +38 -0
  421. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.d.ts.map +1 -0
  422. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.js +103 -0
  423. package/lib/plugin-runtime/workroom-portfolio-checkpoint-ack.js.map +1 -0
  424. package/lib/plugin-runtime/workroom-portfolio-control-composition.d.ts +30 -0
  425. package/lib/plugin-runtime/workroom-portfolio-control-composition.d.ts.map +1 -0
  426. package/lib/plugin-runtime/workroom-portfolio-control-composition.js +102 -0
  427. package/lib/plugin-runtime/workroom-portfolio-control-composition.js.map +1 -0
  428. package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts +41 -0
  429. package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts.map +1 -0
  430. package/lib/plugin-runtime/workroom-portfolio-control-runtime.js +208 -0
  431. package/lib/plugin-runtime/workroom-portfolio-control-runtime.js.map +1 -0
  432. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.d.ts +141 -0
  433. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.d.ts.map +1 -0
  434. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js +331 -0
  435. package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js.map +1 -0
  436. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.d.ts +23 -0
  437. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.d.ts.map +1 -0
  438. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js +82 -0
  439. package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js.map +1 -0
  440. package/lib/plugin-runtime/workroom-portfolio-sponsor.d.ts +96 -0
  441. package/lib/plugin-runtime/workroom-portfolio-sponsor.d.ts.map +1 -0
  442. package/lib/plugin-runtime/workroom-portfolio-sponsor.js +313 -0
  443. package/lib/plugin-runtime/workroom-portfolio-sponsor.js.map +1 -0
  444. package/lib/plugin-runtime/workroom-preemption-runtime.d.ts +57 -0
  445. package/lib/plugin-runtime/workroom-preemption-runtime.d.ts.map +1 -0
  446. package/lib/plugin-runtime/workroom-preemption-runtime.js +163 -0
  447. package/lib/plugin-runtime/workroom-preemption-runtime.js.map +1 -0
  448. package/lib/plugin-runtime/workroom-priority-authority.d.ts +11 -0
  449. package/lib/plugin-runtime/workroom-priority-authority.d.ts.map +1 -0
  450. package/lib/plugin-runtime/workroom-priority-authority.js +72 -0
  451. package/lib/plugin-runtime/workroom-priority-authority.js.map +1 -0
  452. package/lib/plugin-runtime/workroom-profile-authority-composition.d.ts +61 -0
  453. package/lib/plugin-runtime/workroom-profile-authority-composition.d.ts.map +1 -0
  454. package/lib/plugin-runtime/workroom-profile-authority-composition.js +231 -0
  455. package/lib/plugin-runtime/workroom-profile-authority-composition.js.map +1 -0
  456. package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts +228 -0
  457. package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts.map +1 -0
  458. package/lib/plugin-runtime/workroom-profile-authority-runtime.js +1132 -0
  459. package/lib/plugin-runtime/workroom-profile-authority-runtime.js.map +1 -0
  460. package/lib/plugin-runtime/workroom-projection-outbound.d.ts +10 -0
  461. package/lib/plugin-runtime/workroom-projection-outbound.d.ts.map +1 -0
  462. package/lib/plugin-runtime/workroom-projection-outbound.js +35 -0
  463. package/lib/plugin-runtime/workroom-projection-outbound.js.map +1 -0
  464. package/lib/plugin-runtime/workroom-projection-runtime.d.ts +87 -0
  465. package/lib/plugin-runtime/workroom-projection-runtime.d.ts.map +1 -0
  466. package/lib/plugin-runtime/workroom-projection-runtime.js +421 -0
  467. package/lib/plugin-runtime/workroom-projection-runtime.js.map +1 -0
  468. package/lib/plugin-runtime/workroom-remote-assignment-authority.d.ts +9 -0
  469. package/lib/plugin-runtime/workroom-remote-assignment-authority.d.ts.map +1 -0
  470. package/lib/plugin-runtime/workroom-remote-assignment-authority.js +20 -0
  471. package/lib/plugin-runtime/workroom-remote-assignment-authority.js.map +1 -0
  472. package/lib/plugin-runtime/workroom-remote-callback-runtime.d.ts +38 -0
  473. package/lib/plugin-runtime/workroom-remote-callback-runtime.d.ts.map +1 -0
  474. package/lib/plugin-runtime/workroom-remote-callback-runtime.js +80 -0
  475. package/lib/plugin-runtime/workroom-remote-callback-runtime.js.map +1 -0
  476. package/lib/plugin-runtime/workroom-remote-executor.d.ts +20 -0
  477. package/lib/plugin-runtime/workroom-remote-executor.d.ts.map +1 -0
  478. package/lib/plugin-runtime/workroom-remote-executor.js +42 -0
  479. package/lib/plugin-runtime/workroom-remote-executor.js.map +1 -0
  480. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.d.ts +72 -0
  481. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.d.ts.map +1 -0
  482. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.js +142 -0
  483. package/lib/plugin-runtime/workroom-reviewer-authority-runtime.js.map +1 -0
  484. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.d.ts +112 -0
  485. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.d.ts.map +1 -0
  486. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.js +376 -0
  487. package/lib/plugin-runtime/workroom-risk-acceptance-runtime.js.map +1 -0
  488. package/lib/plugin-runtime/workroom-run-profile-pin-authority.d.ts +42 -0
  489. package/lib/plugin-runtime/workroom-run-profile-pin-authority.d.ts.map +1 -0
  490. package/lib/plugin-runtime/workroom-run-profile-pin-authority.js +125 -0
  491. package/lib/plugin-runtime/workroom-run-profile-pin-authority.js.map +1 -0
  492. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts +25 -0
  493. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts.map +1 -0
  494. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js +79 -0
  495. package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js.map +1 -0
  496. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.d.ts +16 -0
  497. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.d.ts.map +1 -0
  498. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.js +49 -0
  499. package/lib/plugin-runtime/workroom-scheduler-portfolio-contract.js.map +1 -0
  500. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts +63 -0
  501. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts.map +1 -0
  502. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js +233 -0
  503. package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js.map +1 -0
  504. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts +37 -0
  505. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts.map +1 -0
  506. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js +122 -0
  507. package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js.map +1 -0
  508. package/lib/plugin-runtime/workroom-scheduler-route-registry.d.ts +27 -0
  509. package/lib/plugin-runtime/workroom-scheduler-route-registry.d.ts.map +1 -0
  510. package/lib/plugin-runtime/workroom-scheduler-route-registry.js +136 -0
  511. package/lib/plugin-runtime/workroom-scheduler-route-registry.js.map +1 -0
  512. package/lib/plugin-runtime/workroom-scheduler-runtime.d.ts +84 -0
  513. package/lib/plugin-runtime/workroom-scheduler-runtime.d.ts.map +1 -0
  514. package/lib/plugin-runtime/workroom-scheduler-runtime.js +231 -0
  515. package/lib/plugin-runtime/workroom-scheduler-runtime.js.map +1 -0
  516. package/lib/portfolio/capacity-control-outbox.d.ts +174 -0
  517. package/lib/portfolio/capacity-control-outbox.d.ts.map +1 -0
  518. package/lib/portfolio/capacity-control-outbox.js +338 -0
  519. package/lib/portfolio/capacity-control-outbox.js.map +1 -0
  520. package/lib/portfolio/database-capacity-control-outbox.d.ts +62 -0
  521. package/lib/portfolio/database-capacity-control-outbox.d.ts.map +1 -0
  522. package/lib/portfolio/database-capacity-control-outbox.js +166 -0
  523. package/lib/portfolio/database-capacity-control-outbox.js.map +1 -0
  524. package/lib/portfolio/file-capacity-control-outbox.d.ts +10 -0
  525. package/lib/portfolio/file-capacity-control-outbox.d.ts.map +1 -0
  526. package/lib/portfolio/file-capacity-control-outbox.js +113 -0
  527. package/lib/portfolio/file-capacity-control-outbox.js.map +1 -0
  528. package/lib/portfolio/file-portfolio-journal.d.ts +11 -0
  529. package/lib/portfolio/file-portfolio-journal.d.ts.map +1 -0
  530. package/lib/portfolio/file-portfolio-journal.js +196 -0
  531. package/lib/portfolio/file-portfolio-journal.js.map +1 -0
  532. package/lib/portfolio/portfolio-admission.d.ts +95 -0
  533. package/lib/portfolio/portfolio-admission.d.ts.map +1 -0
  534. package/lib/portfolio/portfolio-admission.js +1080 -0
  535. package/lib/portfolio/portfolio-admission.js.map +1 -0
  536. package/lib/portfolio/portfolio-journal.d.ts +359 -0
  537. package/lib/portfolio/portfolio-journal.d.ts.map +1 -0
  538. package/lib/portfolio/portfolio-journal.js +844 -0
  539. package/lib/portfolio/portfolio-journal.js.map +1 -0
  540. package/lib/portfolio/resource-bundle.d.ts +136 -0
  541. package/lib/portfolio/resource-bundle.d.ts.map +1 -0
  542. package/lib/portfolio/resource-bundle.js +387 -0
  543. package/lib/portfolio/resource-bundle.js.map +1 -0
  544. package/lib/portfolio/sponsor-projection.d.ts +78 -0
  545. package/lib/portfolio/sponsor-projection.d.ts.map +1 -0
  546. package/lib/portfolio/sponsor-projection.js +135 -0
  547. package/lib/portfolio/sponsor-projection.js.map +1 -0
  548. package/lib/prompt/assembly.d.ts.map +1 -1
  549. package/lib/prompt/assembly.js +1 -3
  550. package/lib/prompt/assembly.js.map +1 -1
  551. package/lib/prompt/prompt-builder.d.ts +1 -1
  552. package/lib/prompt/prompt-builder.d.ts.map +1 -1
  553. package/lib/prompt/system-prompt.d.ts +1 -1
  554. package/lib/prompt/system-prompt.js +2 -2
  555. package/lib/prompt/system-prompt.js.map +1 -1
  556. package/lib/reserved-tools.d.ts.map +1 -1
  557. package/lib/reserved-tools.js +0 -1
  558. package/lib/reserved-tools.js.map +1 -1
  559. package/lib/{orchestrator → resource-hub}/hook-registry.d.ts.map +1 -1
  560. package/lib/{orchestrator → resource-hub}/hook-registry.js.map +1 -1
  561. package/lib/{orchestrator → resource-hub}/index.d.ts +4 -11
  562. package/lib/{orchestrator → resource-hub}/index.d.ts.map +1 -1
  563. package/lib/{orchestrator → resource-hub}/index.js +4 -8
  564. package/lib/{orchestrator → resource-hub}/index.js.map +1 -1
  565. package/lib/{orchestrator → resource-hub}/mcp-lifecycle.d.ts.map +1 -1
  566. package/lib/{orchestrator → resource-hub}/mcp-lifecycle.js.map +1 -1
  567. package/lib/{orchestrator → resource-hub}/mcp-registry.d.ts.map +1 -1
  568. package/lib/{orchestrator → resource-hub}/mcp-registry.js.map +1 -1
  569. package/lib/{orchestrator → resource-hub}/resolve-subagent-tools.d.ts +3 -3
  570. package/lib/resource-hub/resolve-subagent-tools.d.ts.map +1 -0
  571. package/lib/{orchestrator → resource-hub}/resolve-subagent-tools.js +18 -13
  572. package/lib/resource-hub/resolve-subagent-tools.js.map +1 -0
  573. package/lib/{orchestrator → resource-hub}/resource-registry.d.ts.map +1 -1
  574. package/lib/{orchestrator → resource-hub}/resource-registry.js.map +1 -1
  575. package/lib/{orchestrator → resource-hub}/role-configs.d.ts.map +1 -1
  576. package/lib/{orchestrator → resource-hub}/role-configs.js +0 -2
  577. package/lib/{orchestrator → resource-hub}/role-configs.js.map +1 -1
  578. package/lib/{orchestrator → resource-hub}/skill-registry.d.ts.map +1 -1
  579. package/lib/{orchestrator → resource-hub}/skill-registry.js.map +1 -1
  580. package/lib/{orchestrator → resource-hub}/subagent-registry.d.ts.map +1 -1
  581. package/lib/{orchestrator → resource-hub}/subagent-registry.js.map +1 -1
  582. package/lib/{orchestrator → resource-hub}/tool-registry.d.ts.map +1 -1
  583. package/lib/{orchestrator → resource-hub}/tool-registry.js.map +1 -1
  584. package/lib/{orchestrator → resource-hub}/tool-selection.d.ts.map +1 -1
  585. package/lib/{orchestrator → resource-hub}/tool-selection.js.map +1 -1
  586. package/lib/{orchestrator → resource-hub}/types.d.ts +1 -1
  587. package/lib/{orchestrator → resource-hub}/types.d.ts.map +1 -1
  588. package/lib/{orchestrator → resource-hub}/types.js.map +1 -1
  589. package/lib/routing/workroom-bot-identity.d.ts +22 -0
  590. package/lib/routing/workroom-bot-identity.d.ts.map +1 -0
  591. package/lib/routing/workroom-bot-identity.js +46 -0
  592. package/lib/routing/workroom-bot-identity.js.map +1 -0
  593. package/lib/schedule-domain/budget-guard.d.ts +1 -1
  594. package/lib/schedule-domain/budget-guard.d.ts.map +1 -1
  595. package/lib/schedule-domain/budget-guard.js +9 -1
  596. package/lib/schedule-domain/budget-guard.js.map +1 -1
  597. package/lib/schedule-domain/execution-domain.d.ts +1 -0
  598. package/lib/schedule-domain/execution-domain.d.ts.map +1 -1
  599. package/lib/schedule-domain/execution-domain.js +3 -1
  600. package/lib/schedule-domain/execution-domain.js.map +1 -1
  601. package/lib/schedule-domain/schedule-execution-queue.d.ts +24 -0
  602. package/lib/schedule-domain/schedule-execution-queue.d.ts.map +1 -0
  603. package/lib/schedule-domain/schedule-execution-queue.js +123 -0
  604. package/lib/schedule-domain/schedule-execution-queue.js.map +1 -0
  605. package/lib/seam/seam-integration.d.ts +1 -1
  606. package/lib/seam/seam-integration.js +1 -1
  607. package/lib/seam/skill-service.d.ts +1 -1
  608. package/lib/security/exec-policy.d.ts +11 -1
  609. package/lib/security/exec-policy.d.ts.map +1 -1
  610. package/lib/security/exec-policy.js +16 -4
  611. package/lib/security/exec-policy.js.map +1 -1
  612. package/lib/security/policy-facade.d.ts.map +1 -1
  613. package/lib/security/policy-facade.js +60 -5
  614. package/lib/security/policy-facade.js.map +1 -1
  615. package/lib/security/sandbox-docker.js +1 -1
  616. package/lib/security/sandbox-docker.js.map +1 -1
  617. package/lib/security/sandbox.d.ts +2 -0
  618. package/lib/security/sandbox.d.ts.map +1 -1
  619. package/lib/security/sandbox.js +16 -4
  620. package/lib/security/sandbox.js.map +1 -1
  621. package/lib/security/turn-file-authority.d.ts +1 -1
  622. package/lib/security/turn-file-authority.d.ts.map +1 -1
  623. package/lib/security/turn-file-authority.js +10 -3
  624. package/lib/security/turn-file-authority.js.map +1 -1
  625. package/lib/security/turn-sandbox-authority.d.ts +13 -0
  626. package/lib/security/turn-sandbox-authority.d.ts.map +1 -0
  627. package/lib/security/turn-sandbox-authority.js +42 -0
  628. package/lib/security/turn-sandbox-authority.js.map +1 -0
  629. package/lib/service.d.ts +2 -0
  630. package/lib/service.d.ts.map +1 -1
  631. package/lib/service.js +2 -1
  632. package/lib/service.js.map +1 -1
  633. package/lib/session/approval-port.d.ts +2 -0
  634. package/lib/session/approval-port.d.ts.map +1 -1
  635. package/lib/session/approval-port.js.map +1 -1
  636. package/lib/session/index.d.ts +2 -6
  637. package/lib/session/index.d.ts.map +1 -1
  638. package/lib/session/index.js +2 -4
  639. package/lib/session/index.js.map +1 -1
  640. package/lib/session/session-io.d.ts +2 -6
  641. package/lib/session/session-io.d.ts.map +1 -1
  642. package/lib/session/session-io.js +4 -20
  643. package/lib/session/session-io.js.map +1 -1
  644. package/lib/session/session-system.d.ts +0 -2
  645. package/lib/session/session-system.d.ts.map +1 -1
  646. package/lib/session/session-system.js +2 -13
  647. package/lib/session/session-system.js.map +1 -1
  648. package/lib/session/turn-ingress-session.d.ts +1 -5
  649. package/lib/session/turn-ingress-session.d.ts.map +1 -1
  650. package/lib/session/turn-ingress-session.js +27 -29
  651. package/lib/session/turn-ingress-session.js.map +1 -1
  652. package/lib/session-tree-runtime.d.ts +15 -0
  653. package/lib/session-tree-runtime.d.ts.map +1 -0
  654. package/lib/{session-tree-runtime-registry.js → session-tree-runtime.js} +5 -15
  655. package/lib/session-tree-runtime.js.map +1 -0
  656. package/lib/skill/index.d.ts +2 -2
  657. package/lib/skill/index.d.ts.map +1 -1
  658. package/lib/skill/index.js +1 -1
  659. package/lib/skill/skill-registry-as-service.d.ts +1 -1
  660. package/lib/skill/skill-system.d.ts +4 -4
  661. package/lib/skill/skill-system.d.ts.map +1 -1
  662. package/lib/skill/skill-system.js +2 -2
  663. package/lib/skill/skill-system.js.map +1 -1
  664. package/lib/subagent/subagent-runtime.d.ts +2 -7
  665. package/lib/subagent/subagent-runtime.d.ts.map +1 -1
  666. package/lib/subagent/subagent-runtime.js +4 -43
  667. package/lib/subagent/subagent-runtime.js.map +1 -1
  668. package/lib/subagent/subagent-system-init.d.ts.map +1 -1
  669. package/lib/subagent/subagent-system-init.js +0 -2
  670. package/lib/subagent/subagent-system-init.js.map +1 -1
  671. package/lib/subagent-ai-events.d.ts +1 -1
  672. package/lib/subagent-ai-events.js +1 -1
  673. package/lib/subagent-preset.d.ts +1 -1
  674. package/lib/subagent-preset.d.ts.map +1 -1
  675. package/lib/subagent-prompt.d.ts +0 -2
  676. package/lib/subagent-prompt.d.ts.map +1 -1
  677. package/lib/subagent-prompt.js +3 -3
  678. package/lib/subagent-prompt.js.map +1 -1
  679. package/lib/task-executor.d.ts +1 -0
  680. package/lib/task-executor.d.ts.map +1 -1
  681. package/lib/task-executor.js +4 -1
  682. package/lib/task-executor.js.map +1 -1
  683. package/lib/tool/classic-tool-execution-authority.js +2 -2
  684. package/lib/tool/classic-tool-execution-authority.js.map +1 -1
  685. package/lib/tool/context-tools.d.ts +1 -4
  686. package/lib/tool/context-tools.d.ts.map +1 -1
  687. package/lib/tool/context-tools.js +0 -50
  688. package/lib/tool/context-tools.js.map +1 -1
  689. package/lib/tool/contracts.d.ts +1 -1
  690. package/lib/tool/conversation-reference-tool.d.ts +5 -0
  691. package/lib/tool/conversation-reference-tool.d.ts.map +1 -0
  692. package/lib/tool/conversation-reference-tool.js +40 -0
  693. package/lib/tool/conversation-reference-tool.js.map +1 -0
  694. package/lib/tool/index.d.ts +1 -0
  695. package/lib/tool/index.d.ts.map +1 -1
  696. package/lib/tool/index.js +1 -0
  697. package/lib/tool/index.js.map +1 -1
  698. package/lib/tool/prepare-turn-tools.d.ts.map +1 -1
  699. package/lib/tool/prepare-turn-tools.js +7 -22
  700. package/lib/tool/prepare-turn-tools.js.map +1 -1
  701. package/lib/tool/runtime.d.ts +3 -4
  702. package/lib/tool/runtime.d.ts.map +1 -1
  703. package/lib/tool/runtime.js +0 -1
  704. package/lib/tool/runtime.js.map +1 -1
  705. package/lib/tool/sources.d.ts +3 -4
  706. package/lib/tool/sources.d.ts.map +1 -1
  707. package/lib/tool/sources.js +2 -6
  708. package/lib/tool/sources.js.map +1 -1
  709. package/lib/tool/tool-approval-once-store.d.ts +1 -1
  710. package/lib/tool/tool-approval-once-store.js +1 -1
  711. package/lib/tool/tool-system.d.ts.map +1 -1
  712. package/lib/tool/tool-system.js.map +1 -1
  713. package/lib/tool/turn-tool-runtime.d.ts +2 -1
  714. package/lib/tool/turn-tool-runtime.d.ts.map +1 -1
  715. package/lib/tool/turn-tool-runtime.js +76 -21
  716. package/lib/tool/turn-tool-runtime.js.map +1 -1
  717. package/lib/tool-bridge.d.ts +2 -2
  718. package/lib/tool-bridge.js +1 -1
  719. package/lib/tool-catalog/deferred-turn-controller.d.ts +1 -1
  720. package/lib/tool-catalog/tool-catalog.d.ts +1 -1
  721. package/lib/turn/auto-continue.d.ts +1 -1
  722. package/lib/turn/deferred-delivery.d.ts +1 -1
  723. package/lib/turn/inbound-media.d.ts +12 -8
  724. package/lib/turn/inbound-media.d.ts.map +1 -1
  725. package/lib/turn/inbound-media.js +61 -42
  726. package/lib/turn/inbound-media.js.map +1 -1
  727. package/lib/turn/inbound-queue-config.d.ts +1 -1
  728. package/lib/turn/inbound-queue-runtime.d.ts +1 -1
  729. package/lib/turn/inbound-turn-queue.d.ts +1 -1
  730. package/lib/turn/index.d.ts +1 -1
  731. package/lib/turn/index.d.ts.map +1 -1
  732. package/lib/turn/index.js.map +1 -1
  733. package/lib/turn/persist-deferred-context.d.ts +1 -1
  734. package/lib/turn/persist-subagent-context.d.ts +1 -1
  735. package/lib/turn/process-stream.d.ts +1 -1
  736. package/lib/turn/prompt-api.d.ts +1 -1
  737. package/lib/turn/prompt-controller.d.ts +6 -0
  738. package/lib/turn/prompt-controller.d.ts.map +1 -1
  739. package/lib/turn/prompt-controller.js +58 -5
  740. package/lib/turn/prompt-controller.js.map +1 -1
  741. package/lib/turn/turn-ingress.d.ts +55 -5
  742. package/lib/turn/turn-ingress.d.ts.map +1 -1
  743. package/lib/turn/turn-ingress.js +18 -0
  744. package/lib/turn/turn-ingress.js.map +1 -1
  745. package/lib/turn/turn-pipeline.d.ts.map +1 -1
  746. package/lib/turn/turn-pipeline.js +5 -4
  747. package/lib/turn/turn-pipeline.js.map +1 -1
  748. package/lib/utils/keyed-mutex.d.ts +1 -1
  749. package/lib/utils/keyed-mutex.d.ts.map +1 -1
  750. package/lib/utils/keyed-mutex.js +32 -5
  751. package/lib/utils/keyed-mutex.js.map +1 -1
  752. package/lib/workroom/acceptance-control.d.ts +76 -0
  753. package/lib/workroom/acceptance-control.d.ts.map +1 -0
  754. package/lib/workroom/acceptance-control.js +335 -0
  755. package/lib/workroom/acceptance-control.js.map +1 -0
  756. package/lib/workroom/acceptance-policy.d.ts +152 -0
  757. package/lib/workroom/acceptance-policy.d.ts.map +1 -0
  758. package/lib/workroom/acceptance-policy.js +610 -0
  759. package/lib/workroom/acceptance-policy.js.map +1 -0
  760. package/lib/workroom/accepted-source-memory-application.d.ts +113 -0
  761. package/lib/workroom/accepted-source-memory-application.d.ts.map +1 -0
  762. package/lib/workroom/accepted-source-memory-application.js +327 -0
  763. package/lib/workroom/accepted-source-memory-application.js.map +1 -0
  764. package/lib/workroom/accepted-source-projector.d.ts +89 -0
  765. package/lib/workroom/accepted-source-projector.d.ts.map +1 -0
  766. package/lib/workroom/accepted-source-projector.js +281 -0
  767. package/lib/workroom/accepted-source-projector.js.map +1 -0
  768. package/lib/workroom/assignment-authority-grant-application.d.ts +125 -0
  769. package/lib/workroom/assignment-authority-grant-application.d.ts.map +1 -0
  770. package/lib/workroom/assignment-authority-grant-application.js +317 -0
  771. package/lib/workroom/assignment-authority-grant-application.js.map +1 -0
  772. package/lib/workroom/assignment-authority-grant-repository.d.ts +151 -0
  773. package/lib/workroom/assignment-authority-grant-repository.d.ts.map +1 -0
  774. package/lib/workroom/assignment-authority-grant-repository.js +387 -0
  775. package/lib/workroom/assignment-authority-grant-repository.js.map +1 -0
  776. package/lib/workroom/assignment-executor.d.ts +110 -0
  777. package/lib/workroom/assignment-executor.d.ts.map +1 -0
  778. package/lib/workroom/assignment-executor.js +371 -0
  779. package/lib/workroom/assignment-executor.js.map +1 -0
  780. package/lib/workroom/assignment-observation-ingress.d.ts +21 -0
  781. package/lib/workroom/assignment-observation-ingress.d.ts.map +1 -0
  782. package/lib/workroom/assignment-observation-ingress.js +24 -0
  783. package/lib/workroom/assignment-observation-ingress.js.map +1 -0
  784. package/lib/workroom/canonical-value.d.ts +7 -0
  785. package/lib/workroom/canonical-value.d.ts.map +1 -0
  786. package/lib/workroom/canonical-value.js +32 -0
  787. package/lib/workroom/canonical-value.js.map +1 -0
  788. package/lib/workroom/catalog-definition.d.ts +49 -0
  789. package/lib/workroom/catalog-definition.d.ts.map +1 -0
  790. package/lib/workroom/catalog-definition.js +2 -0
  791. package/lib/workroom/catalog-definition.js.map +1 -0
  792. package/lib/workroom/catalog.d.ts +80 -0
  793. package/lib/workroom/catalog.d.ts.map +1 -0
  794. package/lib/workroom/catalog.js +372 -0
  795. package/lib/workroom/catalog.js.map +1 -0
  796. package/lib/workroom/database-project-knowledge-journal.d.ts +62 -0
  797. package/lib/workroom/database-project-knowledge-journal.d.ts.map +1 -0
  798. package/lib/workroom/database-project-knowledge-journal.js +161 -0
  799. package/lib/workroom/database-project-knowledge-journal.js.map +1 -0
  800. package/lib/workroom/durable-file-store.d.ts +52 -0
  801. package/lib/workroom/durable-file-store.d.ts.map +1 -0
  802. package/lib/workroom/durable-file-store.js +117 -0
  803. package/lib/workroom/durable-file-store.js.map +1 -0
  804. package/lib/workroom/dynamic-workflow-planner.d.ts +86 -0
  805. package/lib/workroom/dynamic-workflow-planner.d.ts.map +1 -0
  806. package/lib/workroom/dynamic-workflow-planner.js +260 -0
  807. package/lib/workroom/dynamic-workflow-planner.js.map +1 -0
  808. package/lib/workroom/effect-blocker-repository.d.ts +35 -0
  809. package/lib/workroom/effect-blocker-repository.d.ts.map +1 -0
  810. package/lib/workroom/effect-blocker-repository.js +174 -0
  811. package/lib/workroom/effect-blocker-repository.js.map +1 -0
  812. package/lib/workroom/effect-ledger.d.ts +191 -0
  813. package/lib/workroom/effect-ledger.d.ts.map +1 -0
  814. package/lib/workroom/effect-ledger.js +443 -0
  815. package/lib/workroom/effect-ledger.js.map +1 -0
  816. package/lib/workroom/file-accepted-source-memory-repository.d.ts +15 -0
  817. package/lib/workroom/file-accepted-source-memory-repository.d.ts.map +1 -0
  818. package/lib/workroom/file-accepted-source-memory-repository.js +133 -0
  819. package/lib/workroom/file-accepted-source-memory-repository.js.map +1 -0
  820. package/lib/workroom/file-effect-ledger.d.ts +10 -0
  821. package/lib/workroom/file-effect-ledger.d.ts.map +1 -0
  822. package/lib/workroom/file-effect-ledger.js +118 -0
  823. package/lib/workroom/file-effect-ledger.js.map +1 -0
  824. package/lib/workroom/file-human-ingress-application.d.ts +10 -0
  825. package/lib/workroom/file-human-ingress-application.d.ts.map +1 -0
  826. package/lib/workroom/file-human-ingress-application.js +177 -0
  827. package/lib/workroom/file-human-ingress-application.js.map +1 -0
  828. package/lib/workroom/file-human-ingress.d.ts +24 -0
  829. package/lib/workroom/file-human-ingress.d.ts.map +1 -0
  830. package/lib/workroom/file-human-ingress.js +234 -0
  831. package/lib/workroom/file-human-ingress.js.map +1 -0
  832. package/lib/workroom/file-interaction-space-binding-repository.d.ts +24 -0
  833. package/lib/workroom/file-interaction-space-binding-repository.d.ts.map +1 -0
  834. package/lib/workroom/file-interaction-space-binding-repository.js +293 -0
  835. package/lib/workroom/file-interaction-space-binding-repository.js.map +1 -0
  836. package/lib/workroom/file-profile-journal.d.ts +32 -0
  837. package/lib/workroom/file-profile-journal.d.ts.map +1 -0
  838. package/lib/workroom/file-profile-journal.js +308 -0
  839. package/lib/workroom/file-profile-journal.js.map +1 -0
  840. package/lib/workroom/git-workspace-gateway.d.ts +149 -0
  841. package/lib/workroom/git-workspace-gateway.d.ts.map +1 -0
  842. package/lib/workroom/git-workspace-gateway.js +248 -0
  843. package/lib/workroom/git-workspace-gateway.js.map +1 -0
  844. package/lib/workroom/human-ingress-application.d.ts +126 -0
  845. package/lib/workroom/human-ingress-application.d.ts.map +1 -0
  846. package/lib/workroom/human-ingress-application.js +414 -0
  847. package/lib/workroom/human-ingress-application.js.map +1 -0
  848. package/lib/workroom/human-ingress-orchestrator.d.ts +99 -0
  849. package/lib/workroom/human-ingress-orchestrator.d.ts.map +1 -0
  850. package/lib/workroom/human-ingress-orchestrator.js +234 -0
  851. package/lib/workroom/human-ingress-orchestrator.js.map +1 -0
  852. package/lib/workroom/human-ingress-source-reader.d.ts +29 -0
  853. package/lib/workroom/human-ingress-source-reader.d.ts.map +1 -0
  854. package/lib/workroom/human-ingress-source-reader.js +119 -0
  855. package/lib/workroom/human-ingress-source-reader.js.map +1 -0
  856. package/lib/workroom/human-ingress.d.ts +182 -0
  857. package/lib/workroom/human-ingress.d.ts.map +1 -0
  858. package/lib/workroom/human-ingress.js +526 -0
  859. package/lib/workroom/human-ingress.js.map +1 -0
  860. package/lib/workroom/interaction-space-binding-service.d.ts +57 -0
  861. package/lib/workroom/interaction-space-binding-service.d.ts.map +1 -0
  862. package/lib/workroom/interaction-space-binding-service.js +197 -0
  863. package/lib/workroom/interaction-space-binding-service.js.map +1 -0
  864. package/lib/workroom/interaction-space-router.d.ts +75 -0
  865. package/lib/workroom/interaction-space-router.d.ts.map +1 -0
  866. package/lib/workroom/interaction-space-router.js +243 -0
  867. package/lib/workroom/interaction-space-router.js.map +1 -0
  868. package/lib/workroom/journal-model.d.ts +40 -0
  869. package/lib/workroom/journal-model.d.ts.map +1 -0
  870. package/lib/workroom/journal-model.js +12 -0
  871. package/lib/workroom/journal-model.js.map +1 -0
  872. package/lib/workroom/journal.d.ts +214 -0
  873. package/lib/workroom/journal.d.ts.map +1 -0
  874. package/lib/workroom/journal.js +1935 -0
  875. package/lib/workroom/journal.js.map +1 -0
  876. package/lib/workroom/kernel-contracts.d.ts +167 -0
  877. package/lib/workroom/kernel-contracts.d.ts.map +1 -0
  878. package/lib/workroom/kernel-contracts.js +2 -0
  879. package/lib/workroom/kernel-contracts.js.map +1 -0
  880. package/lib/workroom/kernel-state.d.ts +5 -0
  881. package/lib/workroom/kernel-state.d.ts.map +1 -0
  882. package/lib/workroom/kernel-state.js +819 -0
  883. package/lib/workroom/kernel-state.js.map +1 -0
  884. package/lib/workroom/legacy-embedded-payload-migration.d.ts +89 -0
  885. package/lib/workroom/legacy-embedded-payload-migration.d.ts.map +1 -0
  886. package/lib/workroom/legacy-embedded-payload-migration.js +312 -0
  887. package/lib/workroom/legacy-embedded-payload-migration.js.map +1 -0
  888. package/lib/workroom/legacy-run-offline-migration.d.ts +84 -0
  889. package/lib/workroom/legacy-run-offline-migration.d.ts.map +1 -0
  890. package/lib/workroom/legacy-run-offline-migration.js +470 -0
  891. package/lib/workroom/legacy-run-offline-migration.js.map +1 -0
  892. package/lib/workroom/local-assignment-executor.d.ts +59 -0
  893. package/lib/workroom/local-assignment-executor.d.ts.map +1 -0
  894. package/lib/workroom/local-assignment-executor.js +197 -0
  895. package/lib/workroom/local-assignment-executor.js.map +1 -0
  896. package/lib/workroom/local-assignment-issuance.d.ts +68 -0
  897. package/lib/workroom/local-assignment-issuance.d.ts.map +1 -0
  898. package/lib/workroom/local-assignment-issuance.js +128 -0
  899. package/lib/workroom/local-assignment-issuance.js.map +1 -0
  900. package/lib/workroom/plan-approval-control.d.ts +52 -0
  901. package/lib/workroom/plan-approval-control.d.ts.map +1 -0
  902. package/lib/workroom/plan-approval-control.js +9 -0
  903. package/lib/workroom/plan-approval-control.js.map +1 -0
  904. package/lib/workroom/plan-revision.d.ts +44 -0
  905. package/lib/workroom/plan-revision.d.ts.map +1 -0
  906. package/lib/workroom/plan-revision.js +133 -0
  907. package/lib/workroom/plan-revision.js.map +1 -0
  908. package/lib/workroom/profile-compiler.d.ts +130 -0
  909. package/lib/workroom/profile-compiler.d.ts.map +1 -0
  910. package/lib/workroom/profile-compiler.js +357 -0
  911. package/lib/workroom/profile-compiler.js.map +1 -0
  912. package/lib/workroom/profile-registry.d.ts +191 -0
  913. package/lib/workroom/profile-registry.d.ts.map +1 -0
  914. package/lib/workroom/profile-registry.js +698 -0
  915. package/lib/workroom/profile-registry.js.map +1 -0
  916. package/lib/workroom/project-knowledge-registry.d.ts +136 -0
  917. package/lib/workroom/project-knowledge-registry.d.ts.map +1 -0
  918. package/lib/workroom/project-knowledge-registry.js +429 -0
  919. package/lib/workroom/project-knowledge-registry.js.map +1 -0
  920. package/lib/workroom/projection-outbox.d.ts +254 -0
  921. package/lib/workroom/projection-outbox.d.ts.map +1 -0
  922. package/lib/workroom/projection-outbox.js +1312 -0
  923. package/lib/workroom/projection-outbox.js.map +1 -0
  924. package/lib/workroom/remote-assignment-dispatch-command.d.ts +31 -0
  925. package/lib/workroom/remote-assignment-dispatch-command.d.ts.map +1 -0
  926. package/lib/workroom/remote-assignment-dispatch-command.js +56 -0
  927. package/lib/workroom/remote-assignment-dispatch-command.js.map +1 -0
  928. package/lib/workroom/remote-assignment-issuance.d.ts +88 -0
  929. package/lib/workroom/remote-assignment-issuance.d.ts.map +1 -0
  930. package/lib/workroom/remote-assignment-issuance.js +201 -0
  931. package/lib/workroom/remote-assignment-issuance.js.map +1 -0
  932. package/lib/workroom/remote-callback-application.d.ts +115 -0
  933. package/lib/workroom/remote-callback-application.d.ts.map +1 -0
  934. package/lib/workroom/remote-callback-application.js +570 -0
  935. package/lib/workroom/remote-callback-application.js.map +1 -0
  936. package/lib/workroom/remote-callback-gateway.d.ts +60 -0
  937. package/lib/workroom/remote-callback-gateway.d.ts.map +1 -0
  938. package/lib/workroom/remote-callback-gateway.js +173 -0
  939. package/lib/workroom/remote-callback-gateway.js.map +1 -0
  940. package/lib/workroom/remote-callback-inbox.d.ts +278 -0
  941. package/lib/workroom/remote-callback-inbox.d.ts.map +1 -0
  942. package/lib/workroom/remote-callback-inbox.js +1088 -0
  943. package/lib/workroom/remote-callback-inbox.js.map +1 -0
  944. package/lib/workroom/remote-callback-reconciliation-worker.d.ts +60 -0
  945. package/lib/workroom/remote-callback-reconciliation-worker.d.ts.map +1 -0
  946. package/lib/workroom/remote-callback-reconciliation-worker.js +197 -0
  947. package/lib/workroom/remote-callback-reconciliation-worker.js.map +1 -0
  948. package/lib/workroom/remote-dispatch-admission.d.ts +45 -0
  949. package/lib/workroom/remote-dispatch-admission.d.ts.map +1 -0
  950. package/lib/workroom/remote-dispatch-admission.js +187 -0
  951. package/lib/workroom/remote-dispatch-admission.js.map +1 -0
  952. package/lib/workroom/remote-dispatch-outbox.d.ts +203 -0
  953. package/lib/workroom/remote-dispatch-outbox.d.ts.map +1 -0
  954. package/lib/workroom/remote-dispatch-outbox.js +765 -0
  955. package/lib/workroom/remote-dispatch-outbox.js.map +1 -0
  956. package/lib/workroom/remote-dispatch-scheduler.d.ts +36 -0
  957. package/lib/workroom/remote-dispatch-scheduler.d.ts.map +1 -0
  958. package/lib/workroom/remote-dispatch-scheduler.js +133 -0
  959. package/lib/workroom/remote-dispatch-scheduler.js.map +1 -0
  960. package/lib/workroom/remote-dispatch-worker.d.ts +22 -0
  961. package/lib/workroom/remote-dispatch-worker.d.ts.map +1 -0
  962. package/lib/workroom/remote-dispatch-worker.js +124 -0
  963. package/lib/workroom/remote-dispatch-worker.js.map +1 -0
  964. package/lib/workroom/remote-dispatch.d.ts +79 -0
  965. package/lib/workroom/remote-dispatch.d.ts.map +1 -0
  966. package/lib/workroom/remote-dispatch.js +220 -0
  967. package/lib/workroom/remote-dispatch.js.map +1 -0
  968. package/lib/workroom/role-capability-snapshot.d.ts +88 -0
  969. package/lib/workroom/role-capability-snapshot.d.ts.map +1 -0
  970. package/lib/workroom/role-capability-snapshot.js +456 -0
  971. package/lib/workroom/role-capability-snapshot.js.map +1 -0
  972. package/lib/workroom/runtime.d.ts +109 -0
  973. package/lib/workroom/runtime.d.ts.map +1 -0
  974. package/lib/workroom/runtime.js +450 -0
  975. package/lib/workroom/runtime.js.map +1 -0
  976. package/lib/workroom/scheduler-priority-control.d.ts +35 -0
  977. package/lib/workroom/scheduler-priority-control.d.ts.map +1 -0
  978. package/lib/workroom/scheduler-priority-control.js +9 -0
  979. package/lib/workroom/scheduler-priority-control.js.map +1 -0
  980. package/lib/workroom/workflow-plan-builder.d.ts +88 -0
  981. package/lib/workroom/workflow-plan-builder.d.ts.map +1 -0
  982. package/lib/workroom/workflow-plan-builder.js +232 -0
  983. package/lib/workroom/workflow-plan-builder.js.map +1 -0
  984. package/lib/workroom/workroom-assignment-knowledge-context.d.ts +102 -0
  985. package/lib/workroom/workroom-assignment-knowledge-context.d.ts.map +1 -0
  986. package/lib/workroom/workroom-assignment-knowledge-context.js +127 -0
  987. package/lib/workroom/workroom-assignment-knowledge-context.js.map +1 -0
  988. package/lib/workroom/workroom-kernel.d.ts +141 -0
  989. package/lib/workroom/workroom-kernel.d.ts.map +1 -0
  990. package/lib/workroom/workroom-kernel.js +1325 -0
  991. package/lib/workroom/workroom-kernel.js.map +1 -0
  992. package/lib/workroom/workroom-preemption.d.ts +65 -0
  993. package/lib/workroom/workroom-preemption.d.ts.map +1 -0
  994. package/lib/workroom/workroom-preemption.js +213 -0
  995. package/lib/workroom/workroom-preemption.js.map +1 -0
  996. package/lib/workroom/workroom-scheduler-application.d.ts +43 -0
  997. package/lib/workroom/workroom-scheduler-application.d.ts.map +1 -0
  998. package/lib/workroom/workroom-scheduler-application.js +71 -0
  999. package/lib/workroom/workroom-scheduler-application.js.map +1 -0
  1000. package/lib/workroom/workroom-scheduler.d.ts +135 -0
  1001. package/lib/workroom/workroom-scheduler.d.ts.map +1 -0
  1002. package/lib/workroom/workroom-scheduler.js +649 -0
  1003. package/lib/workroom/workroom-scheduler.js.map +1 -0
  1004. package/lib/workroom/workroom-task-report-store.d.ts +131 -0
  1005. package/lib/workroom/workroom-task-report-store.d.ts.map +1 -0
  1006. package/lib/workroom/workroom-task-report-store.js +528 -0
  1007. package/lib/workroom/workroom-task-report-store.js.map +1 -0
  1008. package/lib/zhin-agent/index.d.ts +7 -22
  1009. package/lib/zhin-agent/index.d.ts.map +1 -1
  1010. package/lib/zhin-agent/index.js +5 -33
  1011. package/lib/zhin-agent/index.js.map +1 -1
  1012. package/lib/zhin-agent/runtime-modules.d.ts +3 -3
  1013. package/lib/zhin-agent/runtime-modules.d.ts.map +1 -1
  1014. package/lib/zhin-agent/runtime-modules.js +3 -3
  1015. package/lib/zhin-agent/runtime-modules.js.map +1 -1
  1016. package/package.json +10 -16
  1017. package/lib/a2a/delegation-message.d.ts +0 -14
  1018. package/lib/a2a/delegation-message.d.ts.map +0 -1
  1019. package/lib/a2a/delegation-message.js +0 -53
  1020. package/lib/a2a/delegation-message.js.map +0 -1
  1021. package/lib/a2a/task-state.d.ts +0 -9
  1022. package/lib/a2a/task-state.d.ts.map +0 -1
  1023. package/lib/a2a/task-state.js +0 -53
  1024. package/lib/a2a/task-state.js.map +0 -1
  1025. package/lib/assistant/runtime-registry.d.ts +0 -23
  1026. package/lib/assistant/runtime-registry.d.ts.map +0 -1
  1027. package/lib/assistant/runtime-registry.js +0 -27
  1028. package/lib/assistant/runtime-registry.js.map +0 -1
  1029. package/lib/authoring/define-dynamic.d.ts +0 -4
  1030. package/lib/authoring/define-dynamic.d.ts.map +0 -1
  1031. package/lib/authoring/define-dynamic.js +0 -8
  1032. package/lib/authoring/define-dynamic.js.map +0 -1
  1033. package/lib/authoring/define-state.d.ts +0 -4
  1034. package/lib/authoring/define-state.d.ts.map +0 -1
  1035. package/lib/authoring/define-state.js +0 -8
  1036. package/lib/authoring/define-state.js.map +0 -1
  1037. package/lib/builtin/five-agent/strategy.d.ts +0 -4
  1038. package/lib/builtin/five-agent/strategy.d.ts.map +0 -1
  1039. package/lib/builtin/five-agent/strategy.js +0 -42
  1040. package/lib/builtin/five-agent/strategy.js.map +0 -1
  1041. package/lib/builtin/memory-search-tool.d.ts +0 -2
  1042. package/lib/builtin/memory-search-tool.d.ts.map +0 -1
  1043. package/lib/builtin/memory-search-tool.js +0 -58
  1044. package/lib/builtin/memory-search-tool.js.map +0 -1
  1045. package/lib/builtin/memory-upsert-tool.d.ts +0 -2
  1046. package/lib/builtin/memory-upsert-tool.d.ts.map +0 -1
  1047. package/lib/builtin/memory-upsert-tool.js +0 -72
  1048. package/lib/builtin/memory-upsert-tool.js.map +0 -1
  1049. package/lib/builtin/orchestration-tools.d.ts +0 -7
  1050. package/lib/builtin/orchestration-tools.d.ts.map +0 -1
  1051. package/lib/builtin/orchestration-tools.js +0 -259
  1052. package/lib/builtin/orchestration-tools.js.map +0 -1
  1053. package/lib/connection/authorization-flow.d.ts +0 -26
  1054. package/lib/connection/authorization-flow.d.ts.map +0 -1
  1055. package/lib/connection/authorization-flow.js +0 -76
  1056. package/lib/connection/authorization-flow.js.map +0 -1
  1057. package/lib/connection/index.d.ts +0 -3
  1058. package/lib/connection/index.d.ts.map +0 -1
  1059. package/lib/connection/index.js +0 -2
  1060. package/lib/connection/index.js.map +0 -1
  1061. package/lib/dynamic/dynamic-registry.d.ts +0 -34
  1062. package/lib/dynamic/dynamic-registry.d.ts.map +0 -1
  1063. package/lib/dynamic/dynamic-registry.js +0 -52
  1064. package/lib/dynamic/dynamic-registry.js.map +0 -1
  1065. package/lib/init/bootstrap-gate.d.ts +0 -6
  1066. package/lib/init/bootstrap-gate.d.ts.map +0 -1
  1067. package/lib/init/bootstrap-gate.js +0 -28
  1068. package/lib/init/bootstrap-gate.js.map +0 -1
  1069. package/lib/memory-entry-registry.d.ts +0 -13
  1070. package/lib/memory-entry-registry.d.ts.map +0 -1
  1071. package/lib/memory-entry-registry.js +0 -24
  1072. package/lib/memory-entry-registry.js.map +0 -1
  1073. package/lib/orchestration-memory-hook.d.ts +0 -3
  1074. package/lib/orchestration-memory-hook.d.ts.map +0 -1
  1075. package/lib/orchestration-memory-hook.js +0 -22
  1076. package/lib/orchestration-memory-hook.js.map +0 -1
  1077. package/lib/orchestration-runtime-registry.d.ts +0 -16
  1078. package/lib/orchestration-runtime-registry.d.ts.map +0 -1
  1079. package/lib/orchestration-runtime-registry.js +0 -20
  1080. package/lib/orchestration-runtime-registry.js.map +0 -1
  1081. package/lib/orchestrator/agent-dispatcher.d.ts +0 -171
  1082. package/lib/orchestrator/agent-dispatcher.d.ts.map +0 -1
  1083. package/lib/orchestrator/agent-dispatcher.js +0 -415
  1084. package/lib/orchestrator/agent-dispatcher.js.map +0 -1
  1085. package/lib/orchestrator/bootstrap-executors.d.ts +0 -7
  1086. package/lib/orchestrator/bootstrap-executors.d.ts.map +0 -1
  1087. package/lib/orchestrator/bootstrap-executors.js +0 -73
  1088. package/lib/orchestrator/bootstrap-executors.js.map +0 -1
  1089. package/lib/orchestrator/orchestration-mappers.d.ts +0 -9
  1090. package/lib/orchestrator/orchestration-mappers.d.ts.map +0 -1
  1091. package/lib/orchestrator/orchestration-mappers.js +0 -117
  1092. package/lib/orchestrator/orchestration-mappers.js.map +0 -1
  1093. package/lib/orchestrator/orchestration-repository.d.ts +0 -91
  1094. package/lib/orchestrator/orchestration-repository.d.ts.map +0 -1
  1095. package/lib/orchestrator/orchestration-repository.js +0 -389
  1096. package/lib/orchestrator/orchestration-repository.js.map +0 -1
  1097. package/lib/orchestrator/orchestration-service.d.ts +0 -133
  1098. package/lib/orchestrator/orchestration-service.d.ts.map +0 -1
  1099. package/lib/orchestrator/orchestration-service.js +0 -582
  1100. package/lib/orchestrator/orchestration-service.js.map +0 -1
  1101. package/lib/orchestrator/orchestration-source.d.ts +0 -5
  1102. package/lib/orchestrator/orchestration-source.d.ts.map +0 -1
  1103. package/lib/orchestrator/orchestration-source.js +0 -22
  1104. package/lib/orchestrator/orchestration-source.js.map +0 -1
  1105. package/lib/orchestrator/orchestration-types.d.ts +0 -88
  1106. package/lib/orchestrator/orchestration-types.d.ts.map +0 -1
  1107. package/lib/orchestrator/orchestration-types.js +0 -2
  1108. package/lib/orchestrator/orchestration-types.js.map +0 -1
  1109. package/lib/orchestrator/remote-agent-registry.d.ts +0 -37
  1110. package/lib/orchestrator/remote-agent-registry.d.ts.map +0 -1
  1111. package/lib/orchestrator/remote-agent-registry.js +0 -178
  1112. package/lib/orchestrator/remote-agent-registry.js.map +0 -1
  1113. package/lib/orchestrator/remote-task-executor.d.ts +0 -10
  1114. package/lib/orchestrator/remote-task-executor.d.ts.map +0 -1
  1115. package/lib/orchestrator/remote-task-executor.js +0 -231
  1116. package/lib/orchestrator/remote-task-executor.js.map +0 -1
  1117. package/lib/orchestrator/remote-task-poller.d.ts +0 -18
  1118. package/lib/orchestrator/remote-task-poller.d.ts.map +0 -1
  1119. package/lib/orchestrator/remote-task-poller.js +0 -84
  1120. package/lib/orchestrator/remote-task-poller.js.map +0 -1
  1121. package/lib/orchestrator/resolve-subagent-tools.d.ts.map +0 -1
  1122. package/lib/orchestrator/resolve-subagent-tools.js.map +0 -1
  1123. package/lib/orchestrator/task-queue.d.ts +0 -167
  1124. package/lib/orchestrator/task-queue.d.ts.map +0 -1
  1125. package/lib/orchestrator/task-queue.js +0 -416
  1126. package/lib/orchestrator/task-queue.js.map +0 -1
  1127. package/lib/session/passive-group-buffer.d.ts +0 -15
  1128. package/lib/session/passive-group-buffer.d.ts.map +0 -1
  1129. package/lib/session/passive-group-buffer.js +0 -50
  1130. package/lib/session/passive-group-buffer.js.map +0 -1
  1131. package/lib/session/passive-group-session.d.ts +0 -10
  1132. package/lib/session/passive-group-session.d.ts.map +0 -1
  1133. package/lib/session/passive-group-session.js +0 -32
  1134. package/lib/session/passive-group-session.js.map +0 -1
  1135. package/lib/session-tree-runtime-registry.d.ts +0 -22
  1136. package/lib/session-tree-runtime-registry.d.ts.map +0 -1
  1137. package/lib/session-tree-runtime-registry.js.map +0 -1
  1138. package/lib/state/agent-state-store.d.ts +0 -18
  1139. package/lib/state/agent-state-store.d.ts.map +0 -1
  1140. package/lib/state/agent-state-store.js +0 -50
  1141. package/lib/state/agent-state-store.js.map +0 -1
  1142. /package/lib/{orchestrator → resource-hub}/hook-registry.d.ts +0 -0
  1143. /package/lib/{orchestrator → resource-hub}/hook-registry.js +0 -0
  1144. /package/lib/{orchestrator → resource-hub}/mcp-lifecycle.d.ts +0 -0
  1145. /package/lib/{orchestrator → resource-hub}/mcp-lifecycle.js +0 -0
  1146. /package/lib/{orchestrator → resource-hub}/mcp-registry.d.ts +0 -0
  1147. /package/lib/{orchestrator → resource-hub}/mcp-registry.js +0 -0
  1148. /package/lib/{orchestrator → resource-hub}/resource-registry.d.ts +0 -0
  1149. /package/lib/{orchestrator → resource-hub}/resource-registry.js +0 -0
  1150. /package/lib/{orchestrator → resource-hub}/role-configs.d.ts +0 -0
  1151. /package/lib/{orchestrator → resource-hub}/skill-registry.d.ts +0 -0
  1152. /package/lib/{orchestrator → resource-hub}/skill-registry.js +0 -0
  1153. /package/lib/{orchestrator → resource-hub}/subagent-registry.d.ts +0 -0
  1154. /package/lib/{orchestrator → resource-hub}/subagent-registry.js +0 -0
  1155. /package/lib/{orchestrator → resource-hub}/tool-registry.d.ts +0 -0
  1156. /package/lib/{orchestrator → resource-hub}/tool-registry.js +0 -0
  1157. /package/lib/{orchestrator → resource-hub}/tool-selection.d.ts +0 -0
  1158. /package/lib/{orchestrator → resource-hub}/tool-selection.js +0 -0
  1159. /package/lib/{orchestrator → resource-hub}/types.js +0 -0
@@ -0,0 +1,1132 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFile, readdir } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { compareCanonicalWorkroomText, canonicalWorkroomJson, deepFreezeWorkroomValue as deepFreeze, digestCanonicalWorkroomValue as digest, } from '../workroom/canonical-value.js';
5
+ import { DurableFileStore, nodeDurableFileSystem, } from '../workroom/durable-file-store.js';
6
+ import { compileWorkroomProfile, } from '../workroom/profile-compiler.js';
7
+ import { ProjectProfileRegistry, } from '../workroom/profile-registry.js';
8
+ import { createWorkroomDynamicPlanningPolicyAuthority, createWorkroomDynamicPlanningPolicySnapshot, } from './workroom-dynamic-planning-provider.js';
9
+ import { createWorkroomSchedulerPolicySnapshot } from '../workroom/workroom-scheduler.js';
10
+ export function createCapabilityPackManifest(input) {
11
+ assertKeys(input, [
12
+ 'id', 'version', 'kind', 'requires', 'tools', 'skills', 'agents', 'workflows', 'memories', 'glossaries',
13
+ 'acceptancePolicies',
14
+ ], 'Pack');
15
+ text(input.id, 'Pack id');
16
+ text(input.version, 'Pack version');
17
+ if (!['domain', 'competency', 'integration', 'policy'].includes(input.kind)) {
18
+ throw new Error('Capability Pack kind is invalid');
19
+ }
20
+ const body = deepFreeze({
21
+ id: input.id,
22
+ version: input.version,
23
+ kind: input.kind,
24
+ ...(input.requires ? { requires: sortPackRefs(input.requires) } : {}),
25
+ ...(input.tools ? { tools: sortDefinitions(input.tools) } : {}),
26
+ ...(input.skills ? { skills: [...input.skills].map(value => ({
27
+ id: requiredText(value.id, 'Skill id'),
28
+ digest: requiredDigest(value.digest, 'Skill digest'),
29
+ requiresTools: unique(value.requiresTools, 'Skill Tool requirement'),
30
+ })).sort(byId) } : {}),
31
+ ...(input.agents ? { agents: [...input.agents].map(value => ({
32
+ id: requiredText(value.id, 'Agent id'),
33
+ digest: requiredDigest(value.digest, 'Agent digest'),
34
+ role: requiredText(value.role, 'Agent role'),
35
+ allowedTools: unique(value.allowedTools, 'Agent Tool ceiling'),
36
+ allowedSkills: unique(value.allowedSkills, 'Agent Skill ceiling'),
37
+ })).sort(byId) } : {}),
38
+ ...(input.workflows ? { workflows: [...input.workflows].map(value => ({
39
+ id: requiredText(value.id, 'Workflow id'),
40
+ digest: requiredDigest(value.digest, 'Workflow digest'),
41
+ requiredByProfile: value.requiredByProfile === true,
42
+ tasks: [...value.tasks].map(task => ({
43
+ key: requiredText(task.key, 'Workflow Task key'),
44
+ role: requiredText(task.role, 'Workflow Task role'),
45
+ requires: {
46
+ ...(task.requires.tools ? { tools: unique(task.requires.tools, 'Workflow Tool requirement') } : {}),
47
+ ...(task.requires.skills ? { skills: unique(task.requires.skills, 'Workflow Skill requirement') } : {}),
48
+ },
49
+ })).sort((left, right) => compareCanonicalWorkroomText(left.key, right.key)),
50
+ })).sort(byId) } : {}),
51
+ ...(input.memories ? { memories: sortKnowledgeDefinitions(input.memories, 'Memory') } : {}),
52
+ ...(input.glossaries ? { glossaries: sortKnowledgeDefinitions(input.glossaries, 'Glossary') } : {}),
53
+ ...(input.acceptancePolicies
54
+ ? { acceptancePolicies: [...input.acceptancePolicies].map(canonicalAcceptancePolicy).sort(byId) }
55
+ : {}),
56
+ });
57
+ return deepFreeze({ ...body, digest: digest(body) });
58
+ }
59
+ export function createWorkroomProfileOverlay(input) {
60
+ assertKeys(input, [
61
+ 'version', 'projectId', 'revisionId', 'charterRevisionId', 'parentRevisionId', 'packs',
62
+ 'enabledTools', 'enabledSkills', 'enabledAgents', 'enabledWorkflows', 'enabledMemories', 'enabledGlossaries',
63
+ 'enabledAcceptancePolicies',
64
+ ], 'Profile Overlay');
65
+ if (input.version !== 1)
66
+ throw new Error('Profile Overlay version is invalid');
67
+ const body = deepFreeze({
68
+ version: 1,
69
+ projectId: requiredText(input.projectId, 'Overlay projectId'),
70
+ revisionId: requiredText(input.revisionId, 'Overlay revisionId'),
71
+ charterRevisionId: requiredText(input.charterRevisionId, 'Overlay charterRevisionId'),
72
+ ...(input.parentRevisionId
73
+ ? { parentRevisionId: requiredText(input.parentRevisionId, 'Overlay parentRevisionId') }
74
+ : {}),
75
+ packs: sortPackRefs(input.packs),
76
+ enabledTools: unique(input.enabledTools, 'Overlay enabled Tool'),
77
+ enabledSkills: unique(input.enabledSkills, 'Overlay enabled Skill'),
78
+ enabledAgents: unique(input.enabledAgents, 'Overlay enabled Agent'),
79
+ enabledWorkflows: unique(input.enabledWorkflows, 'Overlay enabled Workflow'),
80
+ enabledMemories: unique(input.enabledMemories ?? [], 'Overlay enabled Memory'),
81
+ enabledGlossaries: unique(input.enabledGlossaries ?? [], 'Overlay enabled Glossary'),
82
+ enabledAcceptancePolicies: unique(input.enabledAcceptancePolicies ?? [], 'Overlay enabled Acceptance Policy'),
83
+ });
84
+ return deepFreeze({ ...body, digest: digest(body) });
85
+ }
86
+ /** Crash-durable File tracer. Parent `.zhin` must already exist. */
87
+ export class FileWorkroomProfileAuthorityRepository {
88
+ directory;
89
+ verification;
90
+ #root;
91
+ #packs;
92
+ #overlays;
93
+ #profileProofs;
94
+ #policies;
95
+ #ready;
96
+ constructor(directory, verification, fileSystem = nodeDurableFileSystem) {
97
+ this.directory = directory;
98
+ this.verification = verification;
99
+ this.#root = new DurableFileStore(directory, fileSystem);
100
+ this.#packs = new DurableFileStore(join(directory, 'packs'), fileSystem);
101
+ this.#overlays = new DurableFileStore(join(directory, 'overlays'), fileSystem);
102
+ this.#profileProofs = new DurableFileStore(join(directory, 'profile-proofs'), fileSystem);
103
+ this.#policies = new DurableFileStore(join(directory, 'planning-policies'), fileSystem);
104
+ }
105
+ async readPack(ref) {
106
+ assertPackRef(ref);
107
+ const record = await readOptional(join(this.#packs.directory, `${keyHash(`${ref.id}@${ref.version}`)}.json`), parsePackPublication);
108
+ if (!record || record.pack.digest !== ref.digest)
109
+ return undefined;
110
+ await this.#verify(record.authorityRequest, record.governance);
111
+ return record;
112
+ }
113
+ async publishPack(publication) {
114
+ const canonical = canonicalPackPublication(publication);
115
+ await this.#verify(canonical.authorityRequest, canonical.governance);
116
+ await this.#ensureReady();
117
+ const target = join(this.#packs.directory, `${keyHash(`${canonical.pack.id}@${canonical.pack.version}`)}.json`);
118
+ const result = await this.#packs.publishCreateOnly({
119
+ target,
120
+ content: canonicalWorkroomJson(canonical),
121
+ createdValue: canonical,
122
+ onConflict: async () => {
123
+ const winner = await readRequired(target, parsePackPublication);
124
+ if (canonicalWorkroomJson(winner.pack) !== canonicalWorkroomJson(canonical.pack)) {
125
+ throw new Error(`Capability Pack ${canonical.pack.id}@${canonical.pack.version} identity payload drift`);
126
+ }
127
+ return winner;
128
+ },
129
+ });
130
+ await this.#verify(result.value.authorityRequest, result.value.governance);
131
+ await this.#root.syncLeafAndParent();
132
+ return result.value;
133
+ }
134
+ async readOverlay(projectId, revisionId) {
135
+ text(projectId, 'Overlay projectId');
136
+ text(revisionId, 'Overlay revisionId');
137
+ return await readOptional(join(this.#overlays.directory, `${keyHash(`${projectId}:${revisionId}`)}.json`), parseOverlay);
138
+ }
139
+ async publishOverlay(overlay) {
140
+ const canonical = canonicalOverlay(overlay);
141
+ await this.#ensureReady();
142
+ const target = join(this.#overlays.directory, `${keyHash(`${canonical.projectId}:${canonical.revisionId}`)}.json`);
143
+ const result = await this.#overlays.publishCreateOnly({
144
+ target,
145
+ content: canonicalWorkroomJson(canonical),
146
+ createdValue: canonical,
147
+ onConflict: async () => {
148
+ const winner = await readRequired(target, parseOverlay);
149
+ if (winner.digest !== canonical.digest)
150
+ throw new Error('Profile Overlay identity payload drift');
151
+ return winner;
152
+ },
153
+ });
154
+ await this.#root.syncLeafAndParent();
155
+ return result.value;
156
+ }
157
+ async readProfileProof(projectId, revisionId) {
158
+ text(projectId, 'Profile proof projectId');
159
+ text(revisionId, 'Profile proof revisionId');
160
+ const proof = await readOptional(join(this.#profileProofs.directory, `${keyHash(`${projectId}:${revisionId}`)}.json`), parseProfileProof);
161
+ if (proof)
162
+ await this.#verify(proof.authorityRequest, proof.governance);
163
+ return proof;
164
+ }
165
+ async publishProfileProof(proof) {
166
+ const canonical = canonicalProfileProof(proof);
167
+ await this.#verify(canonical.authorityRequest, canonical.governance);
168
+ await this.#ensureReady();
169
+ const target = join(this.#profileProofs.directory, `${keyHash(`${canonical.projectId}:${canonical.revisionId}`)}.json`);
170
+ const result = await this.#profileProofs.publishCreateOnly({
171
+ target,
172
+ content: canonicalWorkroomJson(canonical),
173
+ createdValue: canonical,
174
+ onConflict: async () => {
175
+ const winner = await readRequired(target, parseProfileProof);
176
+ if (canonicalWorkroomJson(winner) !== canonicalWorkroomJson(canonical)) {
177
+ throw new Error('Project Profile publication proof identity payload drift');
178
+ }
179
+ return winner;
180
+ },
181
+ });
182
+ await this.#verify(result.value.authorityRequest, result.value.governance);
183
+ await this.#root.syncLeafAndParent();
184
+ return result.value;
185
+ }
186
+ async readPlanningPolicy(projectId, profileRevisionId) {
187
+ text(projectId, 'Planning Policy projectId');
188
+ text(profileRevisionId, 'Planning Policy Profile revisionId');
189
+ const prefix = `${keyHash(`${projectId}:${profileRevisionId}`)}.`;
190
+ let names;
191
+ try {
192
+ names = await readdir(this.#policies.directory);
193
+ }
194
+ catch (error) {
195
+ if (hasCode(error, 'ENOENT'))
196
+ return undefined;
197
+ throw error;
198
+ }
199
+ const records = await Promise.all(names.filter(name => name.startsWith(prefix) && name.endsWith('.json'))
200
+ .sort().map(name => readRequired(join(this.#policies.directory, name), parsePlanningPolicy)));
201
+ let previous;
202
+ for (const record of records) {
203
+ if (record.projectId !== projectId || record.profileRevisionId !== profileRevisionId
204
+ || record.revision !== (previous?.revision ?? 0) + 1
205
+ || record.previousDigest !== previous?.digest) {
206
+ throw new Error('Planning Policy revision chain is invalid');
207
+ }
208
+ await this.#verify(record.authorityRequest, record.governance);
209
+ previous = record;
210
+ }
211
+ return previous;
212
+ }
213
+ async appendPlanningPolicy(revision) {
214
+ const canonical = canonicalPlanningPolicy(revision);
215
+ await this.#verify(canonical.authorityRequest, canonical.governance);
216
+ const current = await this.readPlanningPolicy(canonical.projectId, canonical.profileRevisionId);
217
+ if (canonical.revision !== (current?.revision ?? 0) + 1
218
+ || canonical.previousDigest !== current?.digest) {
219
+ throw new Error('Planning Policy previous digest/revision CAS mismatch');
220
+ }
221
+ await this.#ensureReady();
222
+ const prefix = keyHash(`${canonical.projectId}:${canonical.profileRevisionId}`);
223
+ const target = join(this.#policies.directory, `${prefix}.${String(canonical.revision).padStart(16, '0')}.json`);
224
+ const result = await this.#policies.publishCreateOnly({
225
+ target,
226
+ content: canonicalWorkroomJson(canonical),
227
+ createdValue: canonical,
228
+ onConflict: async () => {
229
+ const winner = await readRequired(target, parsePlanningPolicy);
230
+ if (canonicalWorkroomJson(winner) !== canonicalWorkroomJson(canonical)) {
231
+ throw new Error('Planning Policy revision identity payload drift');
232
+ }
233
+ return winner;
234
+ },
235
+ });
236
+ await this.#verify(result.value.authorityRequest, result.value.governance);
237
+ await this.#root.syncLeafAndParent();
238
+ return result.value;
239
+ }
240
+ #ensureReady() {
241
+ this.#ready ??= (async () => {
242
+ await this.#root.ensureDurableLeaf('Workroom Profile authority repository');
243
+ await this.#packs.ensureDurableLeaf('Capability Pack publication repository');
244
+ await this.#overlays.ensureDurableLeaf('Project Profile Overlay repository');
245
+ await this.#profileProofs.ensureDurableLeaf('Project Profile publication proof repository');
246
+ await this.#policies.ensureDurableLeaf('Planning Policy repository');
247
+ await this.#root.syncLeafAndParent();
248
+ })();
249
+ return this.#ready;
250
+ }
251
+ async #verify(request, decision) {
252
+ if (!this.verification || !await this.verification.verify(request, decision)) {
253
+ throw new Error('Trusted Workroom Profile publisher authority verification is unavailable or denied');
254
+ }
255
+ }
256
+ }
257
+ export class FileWorkroomRunProfilePinProofRepository {
258
+ directory;
259
+ verification;
260
+ #store;
261
+ #ready;
262
+ constructor(directory, verification, fileSystem = nodeDurableFileSystem) {
263
+ this.directory = directory;
264
+ this.verification = verification;
265
+ this.#store = new DurableFileStore(directory, fileSystem);
266
+ }
267
+ async read(projectId, runId) {
268
+ text(projectId, 'Run pin proof projectId');
269
+ text(runId, 'Run pin proof runId');
270
+ const proof = await readOptional(join(this.directory, `${keyHash(`${projectId}:${runId}`)}.json`), parseRunPinProof);
271
+ if (proof)
272
+ await this.#verify(proof);
273
+ return proof;
274
+ }
275
+ async publish(proof) {
276
+ const canonical = canonicalRunPinProof(proof);
277
+ await this.#verify(canonical);
278
+ await this.#ensureReady();
279
+ const target = join(this.directory, `${keyHash(`${canonical.pin.projectId}:${canonical.pin.runId}`)}.json`);
280
+ const result = await this.#store.publishCreateOnly({
281
+ target,
282
+ content: canonicalWorkroomJson(canonical),
283
+ createdValue: canonical,
284
+ onConflict: async () => {
285
+ const winner = await readRequired(target, parseRunPinProof);
286
+ if (!sameRunPinAuthorityScope(winner.request, canonical.request)
287
+ || canonicalWorkroomJson(winner.pin) !== canonicalWorkroomJson(canonical.pin)) {
288
+ throw new Error('Workroom Run Profile pin proof identity payload drift');
289
+ }
290
+ return winner;
291
+ },
292
+ });
293
+ await this.#verify(result.value);
294
+ await this.#store.syncLeafAndParent();
295
+ return result.value;
296
+ }
297
+ #ensureReady() {
298
+ this.#ready ??= this.#store.ensureDurableLeaf('Workroom Run Profile pin proof repository');
299
+ return this.#ready;
300
+ }
301
+ async #verify(proof) {
302
+ if (!this.verification || !await this.verification.verify(proof.request, proof.authority)) {
303
+ throw new Error('Trusted Workroom Run Profile pin proof verification is unavailable or denied');
304
+ }
305
+ }
306
+ }
307
+ export class WorkroomProfileAuthorityRuntime {
308
+ options;
309
+ control;
310
+ planningPolicy;
311
+ runPins;
312
+ profiles;
313
+ constructor(options) {
314
+ this.options = options;
315
+ this.control = Object.freeze({
316
+ publishPack: async (command, signal) => await this.#publishPack(command, signal),
317
+ publishProfile: async (command, signal) => await this.#publishProfile(command, signal, false),
318
+ publishRollback: async (command, signal) => await this.#publishProfile(command, signal, true),
319
+ publishPlanningPolicy: async (command, signal) => await this.#publishPolicy(command, signal),
320
+ });
321
+ this.planningPolicy = Object.freeze({
322
+ resolve: async (request) => await this.#resolvePolicy(request),
323
+ });
324
+ this.runPins = Object.freeze({
325
+ pin: async (command, signal) => await this.#pinRun(command, signal),
326
+ });
327
+ this.profiles = Object.freeze({
328
+ read: async (projectId) => await this.#readProfiles(projectId),
329
+ });
330
+ }
331
+ async #publishPack(command, signal) {
332
+ assertKeys(command, ['version', 'operationId', 'authenticatedPrincipalId', 'pack'], 'Pack command');
333
+ commandHeader(command, signal);
334
+ return await this.options.generationView.withCurrent(this.#operation(command.operationId, signal), async (view) => {
335
+ assertView(view, this.options.generation.generation);
336
+ const pack = createCapabilityPackManifest(command.pack);
337
+ const existing = await this.options.repository.readPack(pack);
338
+ if (existing)
339
+ return existing;
340
+ const authorized = await this.#authorize({
341
+ version: 1, action: 'publish_pack', operationId: command.operationId,
342
+ authenticatedPrincipalId: command.authenticatedPrincipalId, candidateDigest: pack.digest,
343
+ }, 'trusted_pack_publisher');
344
+ signal.throwIfAborted();
345
+ const body = deepFreeze({
346
+ version: 1,
347
+ pack,
348
+ authorityRequest: authorized.request,
349
+ governance: authorized.decision,
350
+ });
351
+ return await this.options.repository.publishPack(deepFreeze({ ...body, digest: digest(body) }));
352
+ });
353
+ }
354
+ async #publishProfile(command, signal, rollback) {
355
+ assertKeys(command, [
356
+ 'version', 'operationId', 'authenticatedPrincipalId', 'projectId', 'expectedRegistryRevision',
357
+ 'overlay', 'source', 'activate', ...(rollback ? ['restoredFromRevisionId'] : []),
358
+ ], rollback ? 'Profile rollback command' : 'Profile command');
359
+ commandHeader(command, signal);
360
+ if (rollback)
361
+ requiredText(command.restoredFromRevisionId, 'Profile rollback restored revisionId');
362
+ if (command.projectId !== command.overlay.projectId)
363
+ throw new Error('Profile command Project drift');
364
+ const overlay = canonicalOverlay(command.overlay);
365
+ return await this.options.generationView.withCurrent(this.#operation(command.operationId, signal), async (view) => {
366
+ assertView(view, this.options.generation.generation);
367
+ const packs = await Promise.all(overlay.packs.map(async (ref) => {
368
+ const publication = await this.options.repository.readPack(ref);
369
+ if (!publication)
370
+ throw new Error(`Trusted Capability Pack ${ref.id}@${ref.version} is unavailable`);
371
+ return publication.pack;
372
+ }));
373
+ const compiled = compileWorkroomProfile({
374
+ revision: {
375
+ id: overlay.revisionId,
376
+ projectId: overlay.projectId,
377
+ charterRevisionId: overlay.charterRevisionId,
378
+ packs: overlay.packs,
379
+ enabledTools: overlay.enabledTools,
380
+ enabledSkills: overlay.enabledSkills,
381
+ enabledAgents: overlay.enabledAgents,
382
+ enabledWorkflows: overlay.enabledWorkflows,
383
+ enabledMemories: overlay.enabledMemories,
384
+ enabledGlossaries: overlay.enabledGlossaries,
385
+ enabledAcceptancePolicies: overlay.enabledAcceptancePolicies,
386
+ },
387
+ packs,
388
+ generationSupply: generationSupply(view),
389
+ });
390
+ if (!compiled.ok) {
391
+ throw new Error(`Profile compilation failed: ${compiled.diagnostics.map(value => value.code).join(',')}`);
392
+ }
393
+ const existingState = rollback ? await this.#readProfiles(command.projectId) : undefined;
394
+ const restoredFromRevisionId = rollback
395
+ ? command.restoredFromRevisionId
396
+ : undefined;
397
+ const restored = restoredFromRevisionId
398
+ ? existingState?.revisions[restoredFromRevisionId]
399
+ : undefined;
400
+ if (rollback && !restored) {
401
+ throw new Error(`Restored Profile Revision ${restoredFromRevisionId} not found`);
402
+ }
403
+ await this.options.repository.publishOverlay(overlay);
404
+ const governance = Object.freeze({
405
+ authorize: async (input) => {
406
+ const authorized = await this.#authorize({
407
+ version: 1,
408
+ action: rollback ? 'publish_profile_rollback' : 'publish_profile',
409
+ operationId: command.operationId,
410
+ authenticatedPrincipalId: command.authenticatedPrincipalId,
411
+ candidateDigest: digest(input),
412
+ ...(input.currentActive ? { currentDigest: input.currentActive.compiledDigest } : {}),
413
+ projectId: command.projectId,
414
+ }, 'sponsor');
415
+ signal.throwIfAborted();
416
+ const proofBody = deepFreeze({
417
+ version: 1,
418
+ projectId: command.projectId,
419
+ revisionId: overlay.revisionId,
420
+ governanceInput: structuredClone(input),
421
+ authorityRequest: authorized.request,
422
+ governance: authorized.decision,
423
+ });
424
+ await this.options.repository.publishProfileProof(deepFreeze({
425
+ ...proofBody,
426
+ digest: digest(proofBody),
427
+ }));
428
+ return deepFreeze({
429
+ ...structuredClone(input),
430
+ approved: true,
431
+ decisionId: authorized.decision.decisionId,
432
+ route: 'sponsor',
433
+ outcome: 'approved',
434
+ decidedBy: authorized.decision.decidedBy,
435
+ });
436
+ },
437
+ });
438
+ const profiles = new ProjectProfileRegistry(this.options.profileJournal, governance);
439
+ const revision = {
440
+ revisionId: overlay.revisionId,
441
+ projectId: overlay.projectId,
442
+ charterRevisionId: overlay.charterRevisionId,
443
+ packRefs: overlay.packs,
444
+ overlayDigest: restored?.overlayDigest ?? overlay.digest,
445
+ compiledDigest: compiled.profile.digest,
446
+ compiledProfile: compiled.profile,
447
+ ...(overlay.parentRevisionId ? { parentRevisionId: overlay.parentRevisionId } : {}),
448
+ ...(restoredFromRevisionId ? { restoredFromRevisionId } : {}),
449
+ source: structuredClone(command.source),
450
+ };
451
+ let state = rollback
452
+ ? await profiles.registerRollback({
453
+ projectId: command.projectId,
454
+ expectedRegistryRevision: command.expectedRegistryRevision,
455
+ restoredFromRevisionId: restoredFromRevisionId,
456
+ revision,
457
+ })
458
+ : await profiles.registerRevision({
459
+ projectId: command.projectId,
460
+ expectedRegistryRevision: command.expectedRegistryRevision,
461
+ revision,
462
+ });
463
+ if (command.activate) {
464
+ state = await profiles.activateRevision({
465
+ projectId: command.projectId,
466
+ expectedRegistryRevision: state.registryRevision,
467
+ revisionId: overlay.revisionId,
468
+ compiledDigest: compiled.profile.digest,
469
+ });
470
+ }
471
+ return await this.#readProfiles(command.projectId);
472
+ });
473
+ }
474
+ async #publishPolicy(command, signal) {
475
+ assertKeys(command, [
476
+ 'version', 'operationId', 'authenticatedPrincipalId', 'projectId', 'catalogRevision',
477
+ 'projectDigest', 'profileRevisionId', 'profileDigest', 'revision', 'expectedPreviousDigest', 'policy',
478
+ ], 'Planning Policy command');
479
+ commandHeader(command, signal);
480
+ return await this.options.generationView.withCurrent(this.#operation(command.operationId, signal), async (view) => {
481
+ assertView(view, this.options.generation.generation);
482
+ const profiles = await this.#readProfiles(command.projectId);
483
+ const profile = profiles.revisions[command.profileRevisionId];
484
+ if (!profile || profile.compiledDigest !== command.profileDigest) {
485
+ throw new Error('Planning Policy Profile binding is unavailable or stale');
486
+ }
487
+ const policy = canonicalPolicy(command.policy);
488
+ const current = await this.options.repository.readPlanningPolicy(command.projectId, command.profileRevisionId);
489
+ if (current?.revision === command.revision) {
490
+ const candidate = planningPolicyCandidate(command, policy, current.authorityRequest, current.governance);
491
+ if (canonicalWorkroomJson({ ...current, digest: undefined })
492
+ === canonicalWorkroomJson({ ...candidate, digest: undefined }))
493
+ return current;
494
+ }
495
+ if (command.revision !== (current?.revision ?? 0) + 1
496
+ || command.expectedPreviousDigest !== current?.digest) {
497
+ throw new Error('Planning Policy previous digest/revision CAS mismatch');
498
+ }
499
+ const candidateBody = planningPolicyBody(command, policy);
500
+ const authorized = await this.#authorize({
501
+ version: 1,
502
+ action: 'publish_planning_policy',
503
+ operationId: command.operationId,
504
+ authenticatedPrincipalId: command.authenticatedPrincipalId,
505
+ candidateDigest: digest(candidateBody),
506
+ ...(current ? { currentDigest: current.digest } : {}),
507
+ projectId: command.projectId,
508
+ }, 'sponsor');
509
+ signal.throwIfAborted();
510
+ const body = deepFreeze({
511
+ ...candidateBody,
512
+ authorityRequest: authorized.request,
513
+ governance: authorized.decision,
514
+ });
515
+ return await this.options.repository.appendPlanningPolicy(deepFreeze({ ...body, digest: digest(body) }));
516
+ });
517
+ }
518
+ async #pinRun(command, signal) {
519
+ assertKeys(command, [
520
+ 'version', 'operationId', 'projectId', 'runId', 'planRevisionId', 'planDigest',
521
+ 'profileRevisionId', 'profileDigest', 'principalId', 'runFactDigest', 'expectedRegistryRevision',
522
+ ], 'Run pin command');
523
+ if (command.version !== 1)
524
+ throw new Error('Run pin command version is invalid');
525
+ text(command.operationId, 'Run pin operationId');
526
+ text(command.principalId, 'Run pin principalId');
527
+ text(command.projectId, 'Run pin projectId');
528
+ text(command.runId, 'Run pin runId');
529
+ text(command.planRevisionId, 'Run pin Plan revisionId');
530
+ requiredDigest(command.planDigest, 'Run pin Plan digest');
531
+ text(command.profileRevisionId, 'Run pin Profile revisionId');
532
+ requiredDigest(command.profileDigest, 'Run pin Profile digest');
533
+ requiredDigest(command.runFactDigest, 'Run pin fact digest');
534
+ if (!Number.isSafeInteger(command.expectedRegistryRevision)
535
+ || command.expectedRegistryRevision < -1) {
536
+ throw new Error('Run pin expected Registry revision is invalid');
537
+ }
538
+ signal.throwIfAborted();
539
+ const authority = this.options.runPinAuthority;
540
+ const proofs = this.options.runPinProofs;
541
+ if (!authority || !proofs)
542
+ throw new Error('Workroom Run Profile pin authority/proof repository is unavailable');
543
+ const requestBody = deepFreeze({
544
+ ...structuredClone(command),
545
+ generation: this.options.generation.generation,
546
+ });
547
+ const request = deepFreeze({ ...requestBody, digest: digest(requestBody) });
548
+ const authorized = await authority.authorize(request);
549
+ signal.throwIfAborted();
550
+ if (!authorized || authorized.requestDigest !== request.digest) {
551
+ throw new Error('Workroom Run Profile pin authority exact echo mismatch');
552
+ }
553
+ requiredDigest(authorized.authorityDigest, 'Run pin authority digest');
554
+ const state = await this.#readProfiles(command.projectId);
555
+ const existing = state.runPins[command.runId];
556
+ if (existing) {
557
+ const proof = await proofs.read(command.projectId, command.runId);
558
+ if (!proof || !sameRunPinAuthorityScope(proof.request, request)
559
+ || canonicalWorkroomJson(proof.pin) !== canonicalWorkroomJson(existing)) {
560
+ throw new Error('Workroom Run Profile pin replay proof is unavailable or stale');
561
+ }
562
+ return existing;
563
+ }
564
+ if (!state.active || state.registryRevision !== command.expectedRegistryRevision
565
+ || state.active.revisionId !== command.profileRevisionId
566
+ || state.active.compiledDigest !== command.profileDigest) {
567
+ throw new Error('Workroom Run Profile pin Registry position is stale');
568
+ }
569
+ const expectedPin = deepFreeze({
570
+ projectId: command.projectId,
571
+ runId: command.runId,
572
+ profileRevisionId: command.profileRevisionId,
573
+ profileDigest: command.profileDigest,
574
+ activationRegistryRevision: state.active.activatedAtRegistryRevision,
575
+ pinnedAtRegistryRevision: state.registryRevision + 1,
576
+ });
577
+ const proofBody = deepFreeze({
578
+ version: 1,
579
+ request,
580
+ authority: structuredClone(authorized),
581
+ pin: expectedPin,
582
+ });
583
+ await proofs.publish(deepFreeze({ ...proofBody, digest: digest(proofBody) }));
584
+ const pin = await new ProjectProfileRegistry(this.options.profileJournal).pinRun({
585
+ projectId: command.projectId,
586
+ runId: command.runId,
587
+ expectedRegistryRevision: command.expectedRegistryRevision,
588
+ });
589
+ if (canonicalWorkroomJson(pin) !== canonicalWorkroomJson(expectedPin)) {
590
+ throw new Error('Workroom Run Profile pin drifted from its authority proof');
591
+ }
592
+ return pin;
593
+ }
594
+ async #resolvePolicy(request) {
595
+ if (canonicalWorkroomJson(request.generation) !== canonicalWorkroomJson(this.options.generation))
596
+ return undefined;
597
+ const record = await this.options.repository.readPlanningPolicy(request.projectId, request.profile.revisionId);
598
+ if (!record
599
+ || record.catalogRevision !== request.catalogRevision
600
+ || record.projectDigest !== request.projectDigest
601
+ || record.profileDigest !== request.profile.digest)
602
+ return undefined;
603
+ return createWorkroomDynamicPlanningPolicyAuthority({
604
+ version: 1,
605
+ generation: this.options.generation,
606
+ projectId: record.projectId,
607
+ catalogRevision: record.catalogRevision,
608
+ projectDigest: record.projectDigest,
609
+ profileRevisionId: record.profileRevisionId,
610
+ profileDigest: record.profileDigest,
611
+ policy: record.policy,
612
+ });
613
+ }
614
+ async #readProfiles(projectId) {
615
+ const state = await new ProjectProfileRegistry(this.options.profileJournal).read(projectId);
616
+ for (const revision of Object.values(state.revisions)) {
617
+ const proof = await this.options.repository.readProfileProof(projectId, revision.revisionId);
618
+ if (!proof)
619
+ throw new Error(`Trusted Project Profile proof ${revision.revisionId} is unavailable`);
620
+ const governanceInput = governanceInputFromDecision(revision.governanceDecision);
621
+ if (canonicalWorkroomJson(proof.governanceInput) !== canonicalWorkroomJson(governanceInput)) {
622
+ throw new Error(`Trusted Project Profile proof ${revision.revisionId} drifted from its Registry decision`);
623
+ }
624
+ }
625
+ return state;
626
+ }
627
+ async #authorize(input, requiredRole) {
628
+ const request = createRequest(input);
629
+ const result = await this.options.authority.authorize(request);
630
+ if (!result.approved) {
631
+ if (result.requestDigest !== request.digest)
632
+ throw new Error('Profile authority denial echo mismatch');
633
+ throw new Error(`Profile authority denied: ${result.reason}`);
634
+ }
635
+ if (result.requestDigest !== request.digest
636
+ || result.decidedBy !== request.authenticatedPrincipalId
637
+ || result.authorizedBy !== requiredRole) {
638
+ throw new Error('Profile authority exact decision echo mismatch');
639
+ }
640
+ text(result.decisionId, 'authority decisionId');
641
+ nonNegative(result.decidedAt, 'authority decision timestamp');
642
+ return deepFreeze({ request, decision: structuredClone(result) });
643
+ }
644
+ #operation(operationId, signal) {
645
+ return deepFreeze({ operationId, generation: this.options.generation.generation, signal });
646
+ }
647
+ }
648
+ function createRequest(input) {
649
+ assertKeys(input, [
650
+ 'version', 'action', 'operationId', 'authenticatedPrincipalId', 'candidateDigest',
651
+ 'currentDigest', 'projectId',
652
+ ], 'Profile publisher authority request');
653
+ if (input.version !== 1
654
+ || !['publish_pack', 'publish_profile', 'publish_profile_rollback', 'publish_planning_policy']
655
+ .includes(input.action)) {
656
+ throw new Error('Profile publisher authority request version/action is invalid');
657
+ }
658
+ text(input.operationId, 'Profile publisher operationId');
659
+ text(input.authenticatedPrincipalId, 'Profile publisher principalId');
660
+ requiredDigest(input.candidateDigest, 'Profile publisher candidate digest');
661
+ if (input.currentDigest !== undefined) {
662
+ requiredDigest(input.currentDigest, 'Profile publisher current digest');
663
+ }
664
+ if (input.projectId !== undefined)
665
+ text(input.projectId, 'Profile publisher projectId');
666
+ if ((input.action === 'publish_pack') !== (input.projectId === undefined)) {
667
+ throw new Error('Profile publisher authority Project scope is invalid');
668
+ }
669
+ const body = deepFreeze(structuredClone(input));
670
+ return deepFreeze({ ...body, digest: digest(body) });
671
+ }
672
+ function canonicalPackPublication(value) {
673
+ const { digest: packDigest, ...packInput } = value.pack;
674
+ const pack = createCapabilityPackManifest(packInput);
675
+ if (pack.digest !== packDigest)
676
+ throw new Error('Capability Pack digest mismatch');
677
+ const authorityRequest = canonicalRequest(value.authorityRequest);
678
+ if (authorityRequest.action !== 'publish_pack'
679
+ || authorityRequest.candidateDigest !== pack.digest
680
+ || authorityRequest.currentDigest !== undefined
681
+ || authorityRequest.projectId !== undefined) {
682
+ throw new Error('Capability Pack publisher authority scope mismatch');
683
+ }
684
+ const governance = canonicalDecision(value.governance, 'trusted_pack_publisher', authorityRequest);
685
+ const body = deepFreeze({ version: 1, pack, authorityRequest, governance });
686
+ const canonical = deepFreeze({ ...body, digest: digest(body) });
687
+ if (value.version !== 1 || value.digest !== canonical.digest
688
+ || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
689
+ throw new Error('Capability Pack publication digest mismatch');
690
+ }
691
+ return canonical;
692
+ }
693
+ function parsePackPublication(value) {
694
+ if (!isRecord(value) || !isRecord(value.pack)
695
+ || !isRecord(value.authorityRequest) || !isRecord(value.governance)) {
696
+ throw new Error('Capability Pack publication is malformed');
697
+ }
698
+ return canonicalPackPublication(value);
699
+ }
700
+ function canonicalOverlay(value) {
701
+ const { digest: supplied, ...input } = value;
702
+ const canonical = createWorkroomProfileOverlay(input);
703
+ if (supplied !== canonical.digest || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
704
+ throw new Error('Profile Overlay digest mismatch');
705
+ }
706
+ return canonical;
707
+ }
708
+ function parseOverlay(value) {
709
+ if (!isRecord(value))
710
+ throw new Error('Profile Overlay is malformed');
711
+ return canonicalOverlay(value);
712
+ }
713
+ function canonicalProfileProof(value) {
714
+ if (!isRecord(value.governanceInput))
715
+ throw new Error('Project Profile publication proof is malformed');
716
+ const governanceInput = deepFreeze(structuredClone(value.governanceInput));
717
+ const authorityRequest = canonicalRequest(value.authorityRequest);
718
+ const expectedAction = governanceInput.operation === 'register_rollback'
719
+ ? 'publish_profile_rollback'
720
+ : 'publish_profile';
721
+ if (authorityRequest.action !== expectedAction
722
+ || authorityRequest.projectId !== value.projectId
723
+ || authorityRequest.candidateDigest !== digest(governanceInput)
724
+ || authorityRequest.currentDigest !== governanceInput.currentActive?.compiledDigest
725
+ || governanceInput.projectId !== value.projectId
726
+ || governanceInput.revisionId !== value.revisionId) {
727
+ throw new Error('Project Profile Sponsor authority scope mismatch');
728
+ }
729
+ const body = deepFreeze({
730
+ version: 1,
731
+ projectId: requiredText(value.projectId, 'Profile proof projectId'),
732
+ revisionId: requiredText(value.revisionId, 'Profile proof revisionId'),
733
+ governanceInput,
734
+ authorityRequest,
735
+ governance: canonicalDecision(value.governance, 'sponsor', authorityRequest),
736
+ });
737
+ const canonical = deepFreeze({ ...body, digest: digest(body) });
738
+ if (value.version !== 1 || value.digest !== canonical.digest
739
+ || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
740
+ throw new Error('Project Profile publication proof digest mismatch');
741
+ }
742
+ return canonical;
743
+ }
744
+ function parseProfileProof(value) {
745
+ if (!isRecord(value) || !isRecord(value.governanceInput)
746
+ || !isRecord(value.authorityRequest) || !isRecord(value.governance)) {
747
+ throw new Error('Project Profile publication proof is malformed');
748
+ }
749
+ return canonicalProfileProof(value);
750
+ }
751
+ function governanceInputFromDecision(decision) {
752
+ const { approved: _approved, decisionId: _decisionId, route: _route, outcome: _outcome, decidedBy: _decidedBy, ...input } = structuredClone(decision);
753
+ return deepFreeze(input);
754
+ }
755
+ function canonicalRunPinProof(value) {
756
+ const request = canonicalRunPinRequest(value.request);
757
+ const authority = canonicalRunPinAuthority(value.authority, request);
758
+ const pin = deepFreeze(structuredClone(value.pin));
759
+ text(pin.projectId, 'Run pin proof Project');
760
+ text(pin.runId, 'Run pin proof Run');
761
+ text(pin.profileRevisionId, 'Run pin proof Profile revision');
762
+ requiredDigest(pin.profileDigest, 'Run pin proof Profile digest');
763
+ positive(pin.activationRegistryRevision, 'Run pin proof activation revision');
764
+ positive(pin.pinnedAtRegistryRevision, 'Run pin proof Registry revision');
765
+ if (pin.projectId !== request.projectId || pin.runId !== request.runId) {
766
+ throw new Error('Workroom Run Profile pin proof scope mismatch');
767
+ }
768
+ const body = deepFreeze({ version: 1, request, authority, pin });
769
+ const canonical = deepFreeze({ ...body, digest: digest(body) });
770
+ if (value.version !== 1 || value.digest !== canonical.digest
771
+ || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
772
+ throw new Error('Workroom Run Profile pin proof digest mismatch');
773
+ }
774
+ return canonical;
775
+ }
776
+ function parseRunPinProof(value) {
777
+ if (!isRecord(value) || !isRecord(value.request)
778
+ || !isRecord(value.authority) || !isRecord(value.pin)) {
779
+ throw new Error('Workroom Run Profile pin proof is malformed');
780
+ }
781
+ return canonicalRunPinProof(value);
782
+ }
783
+ function canonicalRunPinRequest(value) {
784
+ assertKeys(value, [
785
+ 'version', 'generation', 'operationId', 'principalId', 'projectId', 'runId',
786
+ 'planRevisionId', 'planDigest', 'profileRevisionId', 'profileDigest',
787
+ 'runFactDigest', 'expectedRegistryRevision', 'digest',
788
+ ], 'Run pin authority request');
789
+ const { digest: supplied, ...input } = value;
790
+ if (input.version !== 1 || !Number.isSafeInteger(input.generation) || input.generation < 1) {
791
+ throw new Error('Run pin authority request version/generation is invalid');
792
+ }
793
+ text(input.operationId, 'Run pin authority operationId');
794
+ text(input.principalId, 'Run pin authority principalId');
795
+ text(input.projectId, 'Run pin authority projectId');
796
+ text(input.runId, 'Run pin authority runId');
797
+ text(input.planRevisionId, 'Run pin authority Plan revisionId');
798
+ requiredDigest(input.planDigest, 'Run pin authority Plan digest');
799
+ text(input.profileRevisionId, 'Run pin authority Profile revisionId');
800
+ requiredDigest(input.profileDigest, 'Run pin authority Profile digest');
801
+ requiredDigest(input.runFactDigest, 'Run pin authority fact digest');
802
+ if (!Number.isSafeInteger(input.expectedRegistryRevision) || input.expectedRegistryRevision < -1) {
803
+ throw new Error('Run pin authority expected Registry revision is invalid');
804
+ }
805
+ const canonical = deepFreeze({ ...structuredClone(input), digest: digest(input) });
806
+ if (supplied !== canonical.digest || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
807
+ throw new Error('Run pin authority request digest mismatch');
808
+ }
809
+ return canonical;
810
+ }
811
+ function canonicalRunPinAuthority(value, request) {
812
+ assertKeys(value, ['requestDigest', 'authorityDigest'], 'Run pin authority');
813
+ requiredDigest(value.requestDigest, 'Run pin authority request digest');
814
+ requiredDigest(value.authorityDigest, 'Run pin authority digest');
815
+ if (value.requestDigest !== request.digest)
816
+ throw new Error('Run pin authority exact echo mismatch');
817
+ return deepFreeze(structuredClone(value));
818
+ }
819
+ function sameRunPinAuthorityScope(left, right) {
820
+ const semantic = (value) => ({
821
+ version: value.version,
822
+ generation: value.generation,
823
+ principalId: value.principalId,
824
+ projectId: value.projectId,
825
+ runId: value.runId,
826
+ planRevisionId: value.planRevisionId,
827
+ planDigest: value.planDigest,
828
+ profileRevisionId: value.profileRevisionId,
829
+ profileDigest: value.profileDigest,
830
+ runFactDigest: value.runFactDigest,
831
+ });
832
+ return canonicalWorkroomJson(semantic(left)) === canonicalWorkroomJson(semantic(right));
833
+ }
834
+ function planningPolicyBody(command, policy) {
835
+ return deepFreeze({
836
+ version: 1,
837
+ revision: positive(command.revision, 'Planning Policy revision'),
838
+ ...(command.expectedPreviousDigest
839
+ ? { previousDigest: requiredDigest(command.expectedPreviousDigest, 'Planning Policy previous digest') }
840
+ : {}),
841
+ projectId: requiredText(command.projectId, 'Planning Policy projectId'),
842
+ catalogRevision: requiredText(command.catalogRevision, 'Planning Policy Catalog revision'),
843
+ projectDigest: requiredDigest(command.projectDigest, 'Planning Policy Project digest'),
844
+ profileRevisionId: requiredText(command.profileRevisionId, 'Planning Policy Profile revisionId'),
845
+ profileDigest: requiredDigest(command.profileDigest, 'Planning Policy Profile digest'),
846
+ policy,
847
+ });
848
+ }
849
+ function planningPolicyCandidate(command, policy, authorityRequest, governance) {
850
+ const body = deepFreeze({ ...planningPolicyBody(command, policy), authorityRequest, governance });
851
+ return deepFreeze({ ...body, digest: digest(body) });
852
+ }
853
+ function canonicalPlanningPolicy(value) {
854
+ const policy = canonicalPolicy(value.policy);
855
+ const candidateBody = deepFreeze({
856
+ version: 1,
857
+ revision: positive(value.revision, 'Planning Policy revision'),
858
+ ...(value.previousDigest
859
+ ? { previousDigest: requiredDigest(value.previousDigest, 'Planning Policy previous digest') }
860
+ : {}),
861
+ projectId: requiredText(value.projectId, 'Planning Policy projectId'),
862
+ catalogRevision: requiredText(value.catalogRevision, 'Planning Policy Catalog revision'),
863
+ projectDigest: requiredDigest(value.projectDigest, 'Planning Policy Project digest'),
864
+ profileRevisionId: requiredText(value.profileRevisionId, 'Planning Policy Profile revisionId'),
865
+ profileDigest: requiredDigest(value.profileDigest, 'Planning Policy Profile digest'),
866
+ policy,
867
+ });
868
+ const authorityRequest = canonicalRequest(value.authorityRequest);
869
+ if (authorityRequest.action !== 'publish_planning_policy'
870
+ || authorityRequest.projectId !== candidateBody.projectId
871
+ || authorityRequest.candidateDigest !== digest(candidateBody)
872
+ || authorityRequest.currentDigest !== candidateBody.previousDigest) {
873
+ throw new Error('Planning Policy Sponsor authority scope mismatch');
874
+ }
875
+ const body = deepFreeze({
876
+ ...candidateBody,
877
+ authorityRequest,
878
+ governance: canonicalDecision(value.governance, 'sponsor', authorityRequest),
879
+ });
880
+ const canonical = deepFreeze({ ...body, digest: digest(body) });
881
+ if (value.version !== 1 || value.digest !== canonical.digest
882
+ || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
883
+ throw new Error('Planning Policy content digest mismatch');
884
+ }
885
+ return canonical;
886
+ }
887
+ function parsePlanningPolicy(value) {
888
+ if (!isRecord(value) || !isRecord(value.policy)
889
+ || !isRecord(value.authorityRequest) || !isRecord(value.governance)) {
890
+ throw new Error('Planning Policy revision is malformed');
891
+ }
892
+ return canonicalPlanningPolicy(value);
893
+ }
894
+ function canonicalPolicy(value) {
895
+ const { digest: supplied, ...input } = value;
896
+ const policy = createWorkroomDynamicPlanningPolicySnapshot(input);
897
+ if (supplied !== policy.digest || canonicalWorkroomJson(value) !== canonicalWorkroomJson(policy)) {
898
+ throw new Error('Dynamic planning Policy digest mismatch');
899
+ }
900
+ requiredText(policy.revisionId, 'Planning Policy revisionId');
901
+ positive(policy.maxTasks, 'Planning Policy maxTasks');
902
+ positive(policy.maxTotalAttempts, 'Planning Policy maxTotalAttempts');
903
+ positive(policy.maxAttemptsPerTask, 'Planning Policy maxAttemptsPerTask');
904
+ if (policy.maxAttemptsPerTask > policy.maxTotalAttempts || typeof policy.allowOptionalTasks !== 'boolean') {
905
+ throw new Error('Dynamic planning Policy attempt/optional constraint is invalid');
906
+ }
907
+ unique(policy.approvalRequiredAuthorities, 'Planning Policy approval authority');
908
+ requiredText(policy.sponsorGate.owner, 'Planning Policy Sponsor owner');
909
+ positive(policy.sponsorGate.decisionTimeoutMs, 'Planning Policy Sponsor timeout');
910
+ const { digest: schedulerDigest, ...schedulerInput } = policy.schedulerPolicy;
911
+ const scheduler = createWorkroomSchedulerPolicySnapshot(schedulerInput);
912
+ if (schedulerDigest !== scheduler.digest
913
+ || canonicalWorkroomJson(policy.schedulerPolicy) !== canonicalWorkroomJson(scheduler)) {
914
+ throw new Error('Dynamic planning Scheduler Policy digest mismatch');
915
+ }
916
+ if (!['urgent', 'high', 'normal', 'low'].includes(policy.defaultSponsorLane)
917
+ || !['checkpointable', 'atomic'].includes(policy.defaultPreemptibility)) {
918
+ throw new Error('Dynamic planning Policy default scheduling authority is invalid');
919
+ }
920
+ positive(policy.defaultTaskDeadlineMs, 'Planning Policy Task deadline');
921
+ return policy;
922
+ }
923
+ function canonicalDecision(value, role, request) {
924
+ assertKeys(value, [
925
+ 'approved', 'requestDigest', 'decisionId', 'decidedBy', 'authorizedBy', 'decidedAt',
926
+ ], 'Profile authority decision');
927
+ if (!value || value.approved !== true || value.authorizedBy !== role) {
928
+ throw new Error('Profile authority decision role is invalid');
929
+ }
930
+ requiredDigest(value.requestDigest, 'authority request digest');
931
+ requiredText(value.decisionId, 'authority decisionId');
932
+ requiredText(value.decidedBy, 'authority principal');
933
+ nonNegative(value.decidedAt, 'authority decision timestamp');
934
+ if (value.requestDigest !== request.digest || value.decidedBy !== request.authenticatedPrincipalId) {
935
+ throw new Error('Profile authority decision exact echo mismatch');
936
+ }
937
+ return deepFreeze(structuredClone(value));
938
+ }
939
+ function canonicalRequest(value) {
940
+ const { digest: supplied, ...input } = value;
941
+ const canonical = createRequest(input);
942
+ if (supplied !== canonical.digest || canonicalWorkroomJson(value) !== canonicalWorkroomJson(canonical)) {
943
+ throw new Error('Profile publisher authority request digest mismatch');
944
+ }
945
+ return canonical;
946
+ }
947
+ function generationSupply(view) {
948
+ return deepFreeze({
949
+ tools: sortDefinitions(view.tools),
950
+ skills: sortDefinitions(view.skills),
951
+ agents: sortDefinitions(view.agents),
952
+ });
953
+ }
954
+ function assertView(view, generation) {
955
+ if (view.generation !== generation)
956
+ throw new Error('Profile publication generation view is stale');
957
+ requiredDigest(view.digest, 'generation view digest');
958
+ }
959
+ function commandHeader(command, signal) {
960
+ signal.throwIfAborted();
961
+ if (command.version !== 1)
962
+ throw new Error('Profile control command version is invalid');
963
+ text(command.operationId, 'control operationId');
964
+ text(command.authenticatedPrincipalId, 'authenticated principalId');
965
+ }
966
+ function sortPackRefs(values) {
967
+ if (!Array.isArray(values))
968
+ throw new Error('Capability Pack refs are invalid');
969
+ return deepFreeze(values.map(value => {
970
+ assertPackRef(value);
971
+ return { id: value.id, version: value.version, digest: value.digest };
972
+ }).sort((left, right) => compareCanonicalWorkroomText(`${left.id}@${left.version}#${left.digest}`, `${right.id}@${right.version}#${right.digest}`)));
973
+ }
974
+ function assertPackRef(value) {
975
+ text(value.id, 'Pack ref id');
976
+ text(value.version, 'Pack ref version');
977
+ requiredDigest(value.digest, 'Pack ref digest');
978
+ }
979
+ function sortDefinitions(values) {
980
+ if (!Array.isArray(values))
981
+ throw new Error('Capability definitions are invalid');
982
+ return deepFreeze(values.map(value => ({
983
+ id: requiredText(value.id, 'Capability id'),
984
+ digest: requiredDigest(value.digest, 'Capability digest'),
985
+ })).sort(byId));
986
+ }
987
+ function sortKnowledgeDefinitions(values, label) {
988
+ return deepFreeze([...values].map(value => ({
989
+ id: requiredText(value.id, `${label} id`),
990
+ digest: requiredDigest(value.digest, `${label} digest`),
991
+ allowedRoles: unique(value.allowedRoles, `${label} allowed role`),
992
+ taskKeys: unique(value.taskKeys, `${label} Task key`),
993
+ })).sort(byId));
994
+ }
995
+ function canonicalAcceptancePolicy(value) {
996
+ requiredText(value.id, 'Acceptance Policy id');
997
+ requiredDigest(value.digest, 'Acceptance Policy digest');
998
+ if (!Array.isArray(value.tasks) || value.tasks.length === 0) {
999
+ throw new Error('Acceptance Policy requires Tasks');
1000
+ }
1001
+ const tasks = [...value.tasks].map(task => {
1002
+ if (!['task_result', 'integration_candidate', 'effect_intent'].includes(task.kind)) {
1003
+ throw new Error('Acceptance Policy Task kind is invalid');
1004
+ }
1005
+ if (!['baseline', 'reviewer_required', 'sponsor_required', 'reviewer_then_sponsor']
1006
+ .includes(task.minimumRoute)) {
1007
+ throw new Error('Acceptance Policy minimum route is invalid');
1008
+ }
1009
+ if (!Array.isArray(task.criteria) || task.criteria.length === 0) {
1010
+ throw new Error('Acceptance Policy Task requires criteria');
1011
+ }
1012
+ return {
1013
+ taskKey: requiredText(task.taskKey, 'Acceptance Policy Task key'),
1014
+ kind: task.kind,
1015
+ criteria: [...task.criteria].map(criterion => {
1016
+ if (!['deterministic', 'judgment'].includes(criterion.kind)) {
1017
+ throw new Error('Acceptance criterion kind is invalid');
1018
+ }
1019
+ return {
1020
+ id: requiredText(criterion.id, 'Acceptance criterion id'),
1021
+ kind: criterion.kind,
1022
+ description: requiredText(criterion.description, 'Acceptance criterion description'),
1023
+ };
1024
+ }).sort(byId),
1025
+ requiredEvidence: unique(task.requiredEvidence, 'Acceptance required Evidence'),
1026
+ minimumRoute: task.minimumRoute,
1027
+ reviewerPrincipalId: requiredText(task.reviewerPrincipalId, 'Acceptance Reviewer principal'),
1028
+ sponsorPrincipalId: requiredText(task.sponsorPrincipalId, 'Acceptance Sponsor principal'),
1029
+ reviewerTimeoutMs: positive(task.reviewerTimeoutMs, 'Acceptance Reviewer timeout'),
1030
+ sponsorTimeoutMs: positive(task.sponsorTimeoutMs, 'Acceptance Sponsor timeout'),
1031
+ };
1032
+ }).sort((left, right) => compareCanonicalWorkroomText(left.taskKey, right.taskKey));
1033
+ if (new Set(tasks.map(task => task.taskKey)).size !== tasks.length) {
1034
+ throw new Error('Acceptance Policy Task keys contain duplicates');
1035
+ }
1036
+ const memorySchema = value.memorySchema;
1037
+ if (!memorySchema || !Array.isArray(memorySchema.claimRules)) {
1038
+ throw new Error('Acceptance Memory schema is invalid');
1039
+ }
1040
+ const claimRules = [...memorySchema.claimRules].map(rule => {
1041
+ if (rule.valueType !== 'string' || typeof rule.allowSupersedes !== 'boolean') {
1042
+ throw new Error('Acceptance Memory claim rule is invalid');
1043
+ }
1044
+ const allowedStatuses = unique(rule.allowedStatuses, 'Acceptance Memory claim status');
1045
+ if (allowedStatuses.some(status => status !== 'verified' && status !== 'assumed')) {
1046
+ throw new Error('Acceptance Memory claim status is invalid');
1047
+ }
1048
+ return {
1049
+ key: requiredText(rule.key, 'Acceptance Memory claim key'),
1050
+ valueType: 'string',
1051
+ allowedStatuses: allowedStatuses,
1052
+ allowSupersedes: rule.allowSupersedes,
1053
+ };
1054
+ }).sort((left, right) => compareCanonicalWorkroomText(left.key, right.key));
1055
+ if (new Set(claimRules.map(rule => rule.key)).size !== claimRules.length) {
1056
+ throw new Error('Acceptance Memory claim keys contain duplicates');
1057
+ }
1058
+ return deepFreeze({
1059
+ id: value.id,
1060
+ digest: value.digest,
1061
+ tasks,
1062
+ memorySchema: {
1063
+ revision: positive(memorySchema.revision, 'Acceptance Memory schema revision'),
1064
+ claimRules,
1065
+ },
1066
+ });
1067
+ }
1068
+ function unique(values, label) {
1069
+ if (!Array.isArray(values))
1070
+ throw new Error(`${label} list is invalid`);
1071
+ return deepFreeze([...new Set(values.map(value => requiredText(value, label)))].sort());
1072
+ }
1073
+ function byId(left, right) {
1074
+ return compareCanonicalWorkroomText(left.id, right.id);
1075
+ }
1076
+ function assertKeys(value, allowed, label) {
1077
+ const extras = Object.keys(value).filter(key => !allowed.includes(key));
1078
+ if (extras.length > 0)
1079
+ throw new Error(`${label} contains forbidden fields: ${extras.sort().join(',')}`);
1080
+ }
1081
+ function text(value, label) {
1082
+ if (typeof value !== 'string' || !value.trim() || value !== value.trim()) {
1083
+ throw new Error(`${label} is invalid`);
1084
+ }
1085
+ }
1086
+ function requiredText(value, label) {
1087
+ text(value, label);
1088
+ return value;
1089
+ }
1090
+ function requiredDigest(value, label) {
1091
+ text(value, label);
1092
+ if (!/^sha256:[a-f\d]{64}$/u.test(value))
1093
+ throw new Error(`${label} is not a canonical SHA-256 digest`);
1094
+ return value;
1095
+ }
1096
+ function positive(value, label) {
1097
+ if (!Number.isSafeInteger(value) || Number(value) < 1)
1098
+ throw new Error(`${label} is invalid`);
1099
+ return Number(value);
1100
+ }
1101
+ function nonNegative(value, label) {
1102
+ if (!Number.isSafeInteger(value) || Number(value) < 0)
1103
+ throw new Error(`${label} is invalid`);
1104
+ return Number(value);
1105
+ }
1106
+ function keyHash(value) {
1107
+ return createHash('sha256').update(value).digest('hex');
1108
+ }
1109
+ async function readOptional(path, parse) {
1110
+ try {
1111
+ return parse(JSON.parse(await readFile(path, 'utf8')));
1112
+ }
1113
+ catch (error) {
1114
+ if (hasCode(error, 'ENOENT'))
1115
+ return undefined;
1116
+ throw error;
1117
+ }
1118
+ }
1119
+ async function readRequired(path, parse) {
1120
+ const value = await readOptional(path, parse);
1121
+ if (!value)
1122
+ throw new Error(`Required Workroom Profile authority record is absent: ${path}`);
1123
+ return value;
1124
+ }
1125
+ function isRecord(value) {
1126
+ return Boolean(value && typeof value === 'object' && !Array.isArray(value));
1127
+ }
1128
+ function hasCode(error, code) {
1129
+ return Boolean(error && typeof error === 'object' && 'code' in error
1130
+ && error.code === code);
1131
+ }
1132
+ //# sourceMappingURL=workroom-profile-authority-runtime.js.map