@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,1088 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFile as nodeReadFile, readdir as nodeReaddir, } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { canonicalWorkroomJson as stableJson, deepFreezeWorkroomValue as deepFreeze, digestCanonicalWorkroomValue as digest, } from './canonical-value.js';
5
+ import { DurableFileStore, nodeDurableFileSystem, } from './durable-file-store.js';
6
+ export class RemoteCallbackInboxSequenceConflictError extends Error {
7
+ linkId;
8
+ expectedSequence;
9
+ actualSequence;
10
+ constructor(linkId, expectedSequence, actualSequence) {
11
+ super(`Remote Callback Inbox ${linkId} sequence conflict: expected ${expectedSequence}, `
12
+ + `actual ${actualSequence}`);
13
+ this.linkId = linkId;
14
+ this.expectedSequence = expectedSequence;
15
+ this.actualSequence = actualSequence;
16
+ this.name = 'RemoteCallbackInboxSequenceConflictError';
17
+ }
18
+ }
19
+ export class MemoryRemoteCallbackInboxRepository {
20
+ #events = new Map();
21
+ async read(linkId) {
22
+ return project(this.#events.get(identifier(linkId, 'linkId')) ?? []);
23
+ }
24
+ async append(linkId, expectedSequence, drafts) {
25
+ const id = identifier(linkId, 'linkId');
26
+ const current = this.#events.get(id) ?? [];
27
+ const appended = materializeAppend(id, current, expectedSequence, drafts);
28
+ if (appended.some(event => event.sequence >= current.length)) {
29
+ this.#events.set(id, Object.freeze([...current, ...appended]));
30
+ }
31
+ return appended;
32
+ }
33
+ }
34
+ const nodeFileSystem = Object.freeze({
35
+ ...nodeDurableFileSystem,
36
+ readdir: async (path) => await nodeReaddir(path),
37
+ readFile: async (path, encoding) => await nodeReadFile(path, encoding),
38
+ });
39
+ /** Immutable file segments plus hard-link claim provide a restart-safe filesystem CAS. */
40
+ export class FileRemoteCallbackInboxRepository {
41
+ directory;
42
+ fileSystem;
43
+ #durable;
44
+ constructor(directory, fileSystem = nodeFileSystem) {
45
+ this.directory = directory;
46
+ this.fileSystem = fileSystem;
47
+ this.#durable = new DurableFileStore(directory, fileSystem);
48
+ }
49
+ async read(linkId) {
50
+ const events = await this.#readEvents(identifier(linkId, 'linkId'));
51
+ // A prior hard-link may have succeeded while its directory fsync failed.
52
+ // Re-observing the file is not durability proof; sync before confirming it.
53
+ if (events.length > 0)
54
+ await this.#durable.syncLeaf();
55
+ return project(events);
56
+ }
57
+ async append(linkId, expectedSequence, drafts) {
58
+ const id = identifier(linkId, 'linkId');
59
+ const current = await this.#readEvents(id);
60
+ const appended = materializeAppend(id, current, expectedSequence, drafts);
61
+ if (appended.length === 0 || appended.every(event => event.sequence < current.length)) {
62
+ if (current.length > 0)
63
+ await this.#durable.syncLeaf();
64
+ return appended;
65
+ }
66
+ await this.#durable.ensureDurableLeaf('Remote Callback Inbox');
67
+ const firstSequence = appended[0].sequence;
68
+ const streamDigest = hash(id);
69
+ const segmentPath = join(this.directory, `${streamDigest}.${String(firstSequence).padStart(16, '0')}.json`);
70
+ const encoded = JSON.stringify(appended);
71
+ const published = await this.#durable.publishCreateOnly({
72
+ target: segmentPath,
73
+ content: encoded,
74
+ createdValue: appended,
75
+ onConflict: async () => {
76
+ const winner = await this.#readEvents(id);
77
+ const replay = materializeAppend(id, winner, expectedSequence, drafts);
78
+ if (replay.length > 0 && replay.every(event => event.sequence < winner.length)) {
79
+ return replay;
80
+ }
81
+ throw new RemoteCallbackInboxSequenceConflictError(id, expectedSequence, winner.at(-1)?.sequence ?? -1);
82
+ },
83
+ });
84
+ return published.value;
85
+ }
86
+ async #readEvents(linkId) {
87
+ const prefix = `${hash(linkId)}.`;
88
+ let names;
89
+ try {
90
+ names = (await this.fileSystem.readdir(this.directory))
91
+ .filter(name => name.startsWith(prefix) && name.endsWith('.json'))
92
+ .sort();
93
+ }
94
+ catch (error) {
95
+ if (isMissingFile(error))
96
+ return [];
97
+ throw error;
98
+ }
99
+ const segments = await Promise.all(names.map(async (name) => {
100
+ const encodedSequence = name.slice(prefix.length, -'.json'.length);
101
+ if (!/^\d{16}$/u.test(encodedSequence)) {
102
+ throw new Error('Remote Callback Inbox segment filename sequence is invalid');
103
+ }
104
+ const firstSequence = Number(encodedSequence);
105
+ const parsed = JSON.parse(await this.fileSystem.readFile(join(this.directory, name), 'utf8'));
106
+ if (!Array.isArray(parsed))
107
+ throw new Error('Remote Callback Inbox segment must be an event array');
108
+ const events = parsed.map(parseEvent);
109
+ if (events.length === 0 || events[0].sequence !== firstSequence) {
110
+ throw new Error('Remote Callback Inbox segment filename sequence does not bind its first event');
111
+ }
112
+ return events;
113
+ }));
114
+ const events = segments.flat().sort((left, right) => left.sequence - right.sequence);
115
+ if (events.some(event => event.linkId !== linkId)) {
116
+ throw new Error('Remote Callback Inbox link identity collision');
117
+ }
118
+ assertContiguous(events);
119
+ return Object.freeze(events);
120
+ }
121
+ }
122
+ export class RemoteCallbackInbox {
123
+ repository;
124
+ link;
125
+ #maxSequenceGap;
126
+ constructor(repository, link, options) {
127
+ this.repository = repository;
128
+ this.link = link;
129
+ assertRemoteExecutionLink(link);
130
+ this.#maxSequenceGap = positiveInteger(options.maxSequenceGap, 'maxSequenceGap');
131
+ }
132
+ async read() {
133
+ const projection = await this.repository.read(this.link.id);
134
+ if (projection && stableJson(projection.link) !== stableJson(this.link)) {
135
+ throw new Error('Remote Callback Inbox persisted Link does not match the trusted Link');
136
+ }
137
+ return projection;
138
+ }
139
+ async receive(envelope, expectedSequence) {
140
+ const normalized = normalizeEnvelope(this.link, envelope);
141
+ const current = await this.read();
142
+ const duplicate = findDuplicate(current, normalized);
143
+ if (duplicate) {
144
+ return deepFreeze({
145
+ duplicate: true,
146
+ ...(duplicate.observation ? { observation: duplicate.observation } : {}),
147
+ projection: current,
148
+ });
149
+ }
150
+ const actualSequence = current?.sequence ?? -1;
151
+ if (actualSequence !== expectedSequence) {
152
+ throw new RemoteCallbackInboxSequenceConflictError(this.link.id, expectedSequence, actualSequence);
153
+ }
154
+ if (current?.status === 'terminal_observed') {
155
+ throw new Error('Remote Callback Inbox cannot accept callbacks after terminal observation');
156
+ }
157
+ const cursor = current?.callbackCursor ?? 0;
158
+ const drafts = [];
159
+ if (!current)
160
+ drafts.push(registeredDraft(this.link));
161
+ if (current?.status === 'reconcile_required' || normalized.callbackSequence > cursor + 1) {
162
+ const gap = normalized.callbackSequence - (cursor + 1);
163
+ if (gap > this.#maxSequenceGap) {
164
+ throw new Error('Remote Callback Inbox callback sequence gap exceeds the bounded window');
165
+ }
166
+ assertAvailableSequence(current, normalized);
167
+ drafts.push(deferredDraft(normalized));
168
+ }
169
+ else {
170
+ if (normalized.callbackSequence !== cursor + 1) {
171
+ throw new Error('Remote Callback Inbox callback sequence is stale or non-monotonic');
172
+ }
173
+ drafts.push(acceptedDraft(this.link, normalized));
174
+ }
175
+ await this.repository.append(this.link.id, expectedSequence, drafts);
176
+ const projection = await this.read();
177
+ if (!projection)
178
+ throw new Error('Remote Callback Inbox projection disappeared after receive');
179
+ const accepted = projection.accepted.find(item => item.eventId === normalized.eventId);
180
+ return deepFreeze({
181
+ duplicate: false,
182
+ ...(accepted ? { observation: accepted.observation } : {}),
183
+ projection,
184
+ });
185
+ }
186
+ async reconcile(envelopes, expectedSequence, value) {
187
+ const current = await this.read();
188
+ if (!current) {
189
+ throw new Error('Remote Callback Inbox has no sequence gap to reconcile');
190
+ }
191
+ const normalizedEnvelopes = envelopes.map(value => normalizeEnvelope(this.link, value));
192
+ const reconciliationReceipt = normalizeReconciliationReceipt(this.link, value, normalizedEnvelopes);
193
+ if (current.status !== 'reconcile_required') {
194
+ const durableReplay = expectedSequence < current.sequence
195
+ && normalizedEnvelopes.every(envelope => findDuplicate(current, envelope) !== undefined)
196
+ && current.accepted.some(item => stableJson(item.reconciliationReceipt) === stableJson(reconciliationReceipt));
197
+ if (durableReplay)
198
+ return current;
199
+ throw new Error('Remote Callback Inbox has no sequence gap to reconcile');
200
+ }
201
+ if (current.sequence !== expectedSequence) {
202
+ throw new RemoteCallbackInboxSequenceConflictError(this.link.id, expectedSequence, current.sequence);
203
+ }
204
+ if (reconciliationReceipt.fromCursor !== current.callbackCursor) {
205
+ throw new Error('Remote Callback Inbox poll receipt cursor does not match the durable cursor');
206
+ }
207
+ const expectedSnapshotCursor = Math.max(current.callbackCursor, ...current.deferred.map(envelope => envelope.callbackSequence), ...normalizedEnvelopes.map(envelope => envelope.callbackSequence));
208
+ if (reconciliationReceipt.snapshotCursor !== expectedSnapshotCursor) {
209
+ throw new Error('Remote Callback Inbox poll snapshot cursor is incomplete or drifted');
210
+ }
211
+ if (reconciliationReceipt.reconciledAt > this.link.reconcileDeadline) {
212
+ throw new Error('Remote Callback Inbox reconciliation deadline has expired');
213
+ }
214
+ const pending = new Map(current.deferred.map(envelope => [envelope.callbackSequence, envelope]));
215
+ const incomingByIdentity = new Map();
216
+ for (const normalized of normalizedEnvelopes) {
217
+ const identity = `${normalized.gatewayReceipt.endpointId}\0${normalized.eventId}`;
218
+ const priorIncoming = incomingByIdentity.get(identity);
219
+ if (priorIncoming) {
220
+ if (priorIncoming.gatewayReceipt.callbackDigest
221
+ !== normalized.gatewayReceipt.callbackDigest) {
222
+ throw new Error('Remote Callback Inbox reconciliation callback body drift');
223
+ }
224
+ continue;
225
+ }
226
+ incomingByIdentity.set(identity, normalized);
227
+ const duplicate = findDuplicate(current, normalized);
228
+ if (duplicate)
229
+ continue;
230
+ if (normalized.callbackSequence - (current.callbackCursor + 1) > this.#maxSequenceGap) {
231
+ throw new Error('Remote Callback Inbox callback sequence gap exceeds the bounded window');
232
+ }
233
+ assertAvailableSequence(current, normalized, pending);
234
+ pending.set(normalized.callbackSequence, normalized);
235
+ }
236
+ const ordered = [...pending.values()].sort((left, right) => left.callbackSequence - right.callbackSequence);
237
+ const terminalIndex = ordered.findIndex(envelope => envelope.payload.type === 'execution_completed');
238
+ if (terminalIndex >= 0 && terminalIndex !== ordered.length - 1) {
239
+ throw new Error('Remote Callback Inbox cannot reconcile callbacks after terminal observation');
240
+ }
241
+ const drafts = [];
242
+ let cursor = current.callbackCursor;
243
+ for (const envelope of ordered) {
244
+ if (envelope.callbackSequence !== cursor + 1)
245
+ break;
246
+ drafts.push(acceptedDraft(this.link, envelope, reconciliationReceipt, normalizedEnvelopes));
247
+ cursor += 1;
248
+ if (envelope.payload.type === 'execution_completed')
249
+ break;
250
+ }
251
+ for (const envelope of incomingByIdentity.values()) {
252
+ if (current.deferred.some(item => item.eventId === envelope.eventId)
253
+ || drafts.some(draft => draft.type === 'callback.accepted'
254
+ && draft.payload.envelope.eventId === envelope.eventId))
255
+ continue;
256
+ drafts.push(deferredDraft(envelope));
257
+ }
258
+ if (drafts.length === 0)
259
+ return current;
260
+ await this.repository.append(this.link.id, expectedSequence, drafts);
261
+ const projection = await this.read();
262
+ if (!projection)
263
+ throw new Error('Remote Callback Inbox projection disappeared after reconcile');
264
+ return projection;
265
+ }
266
+ }
267
+ export function createRemoteExecutionLink(input) {
268
+ validateLinkInput(input);
269
+ const id = `remote-execution-link:v1:${[
270
+ input.projectId,
271
+ input.runId,
272
+ input.assignmentId,
273
+ String(input.attempt),
274
+ String(input.fence),
275
+ ].map(encodeURIComponent).join(':')}`;
276
+ const projection = deepFreeze({
277
+ version: 1,
278
+ id,
279
+ ...input,
280
+ endpoint: { ...input.endpoint },
281
+ workspace: { ...input.workspace, pathScope: [...input.workspace.pathScope] },
282
+ });
283
+ return deepFreeze({ ...projection, digest: digest(projection) });
284
+ }
285
+ /** Canonical body digest computed before the trusted gateway receipt is attached. */
286
+ export function digestRemoteCallbackMessage(value) {
287
+ const { gatewayReceipt: _gatewayReceipt, ...message } = value;
288
+ return digest(message);
289
+ }
290
+ export function digestRemoteCallbackReconciliationBatch(input) {
291
+ return digest({
292
+ receiptId: input.receiptId,
293
+ source: input.source,
294
+ reconciledAt: input.reconciledAt,
295
+ endpointId: input.endpointId,
296
+ cardDigest: input.cardDigest,
297
+ authBindingId: input.authBindingId,
298
+ linkId: input.linkId,
299
+ fromCursor: input.fromCursor,
300
+ snapshotCursor: input.snapshotCursor,
301
+ callbackDigests: input.callbackDigests,
302
+ });
303
+ }
304
+ function assertRemoteExecutionLink(value) {
305
+ if (!value || typeof value !== 'object')
306
+ throw new Error('Invalid Remote Execution Link');
307
+ const { version, id, digest: actualDigest, ...input } = value;
308
+ if (version !== 1)
309
+ throw new Error('Remote Execution Link version is unsupported');
310
+ const canonical = createRemoteExecutionLink(input);
311
+ if (id !== canonical.id || actualDigest !== canonical.digest || stableJson(value) !== stableJson(canonical)) {
312
+ throw new Error('Remote Execution Link identity or digest is invalid');
313
+ }
314
+ if (!Object.isFrozen(value) || !Object.isFrozen(value.endpoint) || !Object.isFrozen(value.workspace)) {
315
+ throw new Error('Remote Execution Link must be deeply immutable');
316
+ }
317
+ }
318
+ function validateLinkInput(input) {
319
+ assertExactKeys(input, [
320
+ 'linkedAt', 'reconcileDeadline', 'projectId', 'runId', 'taskKey',
321
+ 'taskRevision', 'assignmentId', 'assignmentRevision', 'attempt', 'fence',
322
+ 'assignmentEnvelopeDigest', 'dispatchId', 'messageId',
323
+ 'dispatchEnvelopeDigest', 'endpoint', 'remoteTaskId', 'remoteContextId',
324
+ 'workspace',
325
+ ], 'Remote Execution Link input');
326
+ assertExactKeys(input.endpoint, ['id', 'cardDigest', 'authBindingId'], 'Link endpoint');
327
+ assertExactKeys(input.workspace, [
328
+ 'provider', 'repositoryId', 'integrationBindingId', 'baseSha', 'checkpointSha',
329
+ 'targetRef', 'branchRef', 'pathScope', 'mode', 'fence',
330
+ ], 'Link workspace');
331
+ timestamp(input.linkedAt, 'linkedAt');
332
+ timestamp(input.reconcileDeadline, 'reconcileDeadline');
333
+ if (input.reconcileDeadline <= input.linkedAt)
334
+ throw new Error('Remote Execution Link deadline is invalid');
335
+ for (const [name, value] of Object.entries({
336
+ projectId: input.projectId,
337
+ runId: input.runId,
338
+ taskKey: input.taskKey,
339
+ assignmentId: input.assignmentId,
340
+ dispatchId: input.dispatchId,
341
+ messageId: input.messageId,
342
+ endpointId: input.endpoint.id,
343
+ authBindingId: input.endpoint.authBindingId,
344
+ remoteTaskId: input.remoteTaskId,
345
+ remoteContextId: input.remoteContextId,
346
+ repositoryId: input.workspace.repositoryId,
347
+ integrationBindingId: input.workspace.integrationBindingId,
348
+ targetRef: input.workspace.targetRef,
349
+ branchRef: input.workspace.branchRef,
350
+ }))
351
+ identifier(value, name);
352
+ for (const [name, value] of Object.entries({
353
+ taskRevision: input.taskRevision,
354
+ assignmentRevision: input.assignmentRevision,
355
+ attempt: input.attempt,
356
+ fence: input.fence,
357
+ }))
358
+ positiveInteger(value, name);
359
+ requireDigest(input.assignmentEnvelopeDigest, 'assignmentEnvelopeDigest');
360
+ requireDigest(input.dispatchEnvelopeDigest, 'dispatchEnvelopeDigest');
361
+ requireDigest(input.endpoint.cardDigest, 'endpoint.cardDigest');
362
+ if (input.workspace.provider !== 'github_pull_request')
363
+ throw new Error('Remote Execution Link workspace provider is unsupported');
364
+ requireGitSha(input.workspace.baseSha, 'workspace.baseSha');
365
+ if (input.workspace.checkpointSha !== undefined) {
366
+ requireGitSha(input.workspace.checkpointSha, 'workspace.checkpointSha');
367
+ }
368
+ if (input.workspace.fence !== input.fence)
369
+ throw new Error('Remote Execution Link workspace fence mismatch');
370
+ requireGitRef(input.workspace.targetRef, 'workspace.targetRef');
371
+ requireGitRef(input.workspace.branchRef, 'workspace.branchRef');
372
+ if (!Array.isArray(input.workspace.pathScope) || input.workspace.pathScope.length === 0
373
+ || input.workspace.pathScope.some(path => !isCanonicalRelativePath(path))) {
374
+ throw new Error('Remote Execution Link workspace pathScope must contain canonical relative paths');
375
+ }
376
+ if (new Set(input.workspace.pathScope).size !== input.workspace.pathScope.length) {
377
+ throw new Error('Remote Execution Link workspace pathScope must be unique');
378
+ }
379
+ if (input.workspace.mode !== 'branch_only' && input.workspace.mode !== 'branch_and_pr') {
380
+ throw new Error('Remote Execution Link workspace mode is unsupported');
381
+ }
382
+ if (input.workspace.targetRef === input.workspace.branchRef)
383
+ throw new Error('Remote Execution Link requires an attempt branch distinct from target');
384
+ }
385
+ function registeredDraft(link) {
386
+ return deepFreeze({
387
+ eventId: `${link.id}:registered`,
388
+ occurredAt: link.linkedAt,
389
+ type: 'link.registered',
390
+ payload: { link },
391
+ });
392
+ }
393
+ function acceptedDraft(link, envelope, reconciliationReceipt, reconciliationBatch) {
394
+ const normalized = normalizeCallback(link, envelope);
395
+ return deepFreeze({
396
+ eventId: callbackEventId(link.id, 'accepted', envelope),
397
+ occurredAt: reconciliationReceipt?.reconciledAt ?? envelope.gatewayReceipt.receivedAt,
398
+ type: 'callback.accepted',
399
+ payload: {
400
+ envelope,
401
+ payloadHash: digest(envelope.payload),
402
+ observation: normalized.observation,
403
+ ...(normalized.completionReceipt
404
+ ? { completionReceipt: normalized.completionReceipt }
405
+ : {}),
406
+ ...(reconciliationReceipt ? { reconciliationReceipt } : {}),
407
+ ...(reconciliationBatch
408
+ ? { reconciliationBatch: deepFreeze(structuredClone(reconciliationBatch)) }
409
+ : {}),
410
+ },
411
+ });
412
+ }
413
+ function deferredDraft(envelope) {
414
+ return deepFreeze({
415
+ eventId: callbackEventId(envelope.linkId, 'deferred', envelope),
416
+ occurredAt: envelope.gatewayReceipt.receivedAt,
417
+ type: 'callback.deferred',
418
+ payload: { envelope, payloadHash: digest(envelope.payload) },
419
+ });
420
+ }
421
+ function callbackEventId(linkId, disposition, envelope) {
422
+ return `${linkId}:${disposition}:${encodeURIComponent(envelope.gatewayReceipt.endpointId)}:`
423
+ + encodeURIComponent(envelope.eventId);
424
+ }
425
+ function normalizeEnvelope(link, value) {
426
+ const envelope = deepFreeze(structuredClone(value));
427
+ assertExactKeys(envelope, [
428
+ 'version', 'callbackSequence', 'eventId', 'linkId', 'projectId', 'runId',
429
+ 'taskKey', 'taskRevision', 'assignmentId', 'assignmentRevision', 'attempt',
430
+ 'fence', 'assignmentEnvelopeDigest', 'dispatchId', 'messageId',
431
+ 'dispatchEnvelopeDigest', 'claimedEndpoint', 'remoteTaskId',
432
+ 'remoteContextId', 'payload', 'gatewayReceipt',
433
+ ], 'Envelope');
434
+ assertExactKeys(envelope.claimedEndpoint, [
435
+ 'endpointId', 'cardDigest', 'authBindingId',
436
+ ], 'claimed endpoint');
437
+ assertExactKeys(envelope.gatewayReceipt, [
438
+ 'receiptId', 'source', 'receivedAt', 'endpointId', 'cardDigest', 'authBindingId',
439
+ 'callbackDigest',
440
+ ], 'trusted Gateway receipt');
441
+ const exactBindings = [
442
+ ['version', envelope.version, 1],
443
+ ['linkId', envelope.linkId, link.id],
444
+ ['projectId', envelope.projectId, link.projectId],
445
+ ['runId', envelope.runId, link.runId],
446
+ ['taskKey', envelope.taskKey, link.taskKey],
447
+ ['taskRevision', envelope.taskRevision, link.taskRevision],
448
+ ['assignmentId', envelope.assignmentId, link.assignmentId],
449
+ ['assignmentRevision', envelope.assignmentRevision, link.assignmentRevision],
450
+ ['attempt', envelope.attempt, link.attempt],
451
+ ['fence', envelope.fence, link.fence],
452
+ ['assignmentEnvelopeDigest', envelope.assignmentEnvelopeDigest, link.assignmentEnvelopeDigest],
453
+ ['dispatchId', envelope.dispatchId, link.dispatchId],
454
+ ['messageId', envelope.messageId, link.messageId],
455
+ ['dispatchEnvelopeDigest', envelope.dispatchEnvelopeDigest, link.dispatchEnvelopeDigest],
456
+ ['claimedEndpointId', envelope.claimedEndpoint?.endpointId, link.endpoint.id],
457
+ ['claimedCardDigest', envelope.claimedEndpoint?.cardDigest, link.endpoint.cardDigest],
458
+ ['claimedAuthBindingId', envelope.claimedEndpoint?.authBindingId, link.endpoint.authBindingId],
459
+ ['authenticatedEndpointId', envelope.gatewayReceipt?.endpointId, link.endpoint.id],
460
+ ['authenticatedCardDigest', envelope.gatewayReceipt?.cardDigest, link.endpoint.cardDigest],
461
+ ['authenticatedAuthBindingId', envelope.gatewayReceipt?.authBindingId, link.endpoint.authBindingId],
462
+ ['remoteTaskId', envelope.remoteTaskId, link.remoteTaskId],
463
+ ['remoteContextId', envelope.remoteContextId, link.remoteContextId],
464
+ ];
465
+ const drift = exactBindings.find(([, actual, expected]) => actual !== expected);
466
+ if (drift)
467
+ throw new Error(`Remote Callback Inbox ${drift[0]} does not match the trusted Link`);
468
+ identifier(envelope.gatewayReceipt.receiptId, 'gatewayReceipt.receiptId');
469
+ if (envelope.gatewayReceipt.source !== 'push' && envelope.gatewayReceipt.source !== 'poll') {
470
+ throw new Error('Remote Callback Inbox Gateway receipt source is invalid');
471
+ }
472
+ timestamp(envelope.gatewayReceipt.receivedAt, 'gatewayReceipt.receivedAt');
473
+ requireDigest(envelope.gatewayReceipt.callbackDigest, 'gatewayReceipt.callbackDigest');
474
+ if (envelope.gatewayReceipt.callbackDigest !== digestRemoteCallbackMessage(envelope)) {
475
+ throw new Error('Remote Callback Inbox Gateway receipt does not bind the exact callback body');
476
+ }
477
+ positiveInteger(envelope.callbackSequence, 'callbackSequence');
478
+ identifier(envelope.eventId, 'eventId');
479
+ normalizeCallback(link, envelope);
480
+ return envelope;
481
+ }
482
+ function normalizeReconciliationReceipt(link, value, envelopes) {
483
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
484
+ throw new Error('Remote Callback Inbox poll reconciliation receipt must be an object');
485
+ }
486
+ assertExactKeys(value, [
487
+ 'receiptId', 'source', 'reconciledAt', 'endpointId', 'cardDigest',
488
+ 'authBindingId', 'linkId', 'fromCursor', 'snapshotCursor',
489
+ 'callbackDigests', 'batchDigest',
490
+ ], 'poll reconciliation receipt');
491
+ identifier(value.receiptId, 'reconciliationReceipt.receiptId');
492
+ if (value.source !== 'poll') {
493
+ throw new Error('Remote Callback Inbox reconciliation requires a trusted poll receipt');
494
+ }
495
+ timestamp(value.reconciledAt, 'reconciliationReceipt.reconciledAt');
496
+ nonNegativeInteger(value.fromCursor, 'reconciliationReceipt.fromCursor');
497
+ nonNegativeInteger(value.snapshotCursor, 'reconciliationReceipt.snapshotCursor');
498
+ const exactBindings = [
499
+ ['endpointId', value.endpointId, link.endpoint.id],
500
+ ['cardDigest', value.cardDigest, link.endpoint.cardDigest],
501
+ ['authBindingId', value.authBindingId, link.endpoint.authBindingId],
502
+ ['linkId', value.linkId, link.id],
503
+ ];
504
+ const drift = exactBindings.find(([, actual, expected]) => actual !== expected);
505
+ if (drift) {
506
+ throw new Error(`Remote Callback Inbox poll receipt ${drift[0]} does not match the Link`);
507
+ }
508
+ if (!Array.isArray(value.callbackDigests)) {
509
+ throw new Error('Remote Callback Inbox poll receipt callbackDigests must be an array');
510
+ }
511
+ const callbackDigests = value.callbackDigests.map((item, index) => {
512
+ requireDigest(item, `reconciliationReceipt.callbackDigests[${index}]`);
513
+ return item;
514
+ });
515
+ if (new Set(callbackDigests).size !== callbackDigests.length) {
516
+ throw new Error('Remote Callback Inbox poll receipt callbackDigests must be unique');
517
+ }
518
+ const expectedDigests = envelopes?.map(envelope => envelope.gatewayReceipt.callbackDigest);
519
+ if (expectedDigests && stableJson(callbackDigests) !== stableJson(expectedDigests)) {
520
+ throw new Error('Remote Callback Inbox poll receipt does not bind the exact callback batch');
521
+ }
522
+ const input = deepFreeze({
523
+ receiptId: value.receiptId,
524
+ source: 'poll',
525
+ reconciledAt: value.reconciledAt,
526
+ endpointId: value.endpointId,
527
+ cardDigest: value.cardDigest,
528
+ authBindingId: value.authBindingId,
529
+ linkId: value.linkId,
530
+ fromCursor: value.fromCursor,
531
+ snapshotCursor: value.snapshotCursor,
532
+ callbackDigests,
533
+ });
534
+ requireDigest(value.batchDigest, 'reconciliationReceipt.batchDigest');
535
+ if (value.batchDigest !== digestRemoteCallbackReconciliationBatch(input)) {
536
+ throw new Error('Remote Callback Inbox poll receipt batch digest is invalid');
537
+ }
538
+ return deepFreeze({ ...input, batchDigest: value.batchDigest });
539
+ }
540
+ function normalizeCallback(link, envelope) {
541
+ const payload = envelope.payload;
542
+ if (!payload || typeof payload !== 'object')
543
+ throw new Error('Remote Callback Inbox payload is invalid');
544
+ let candidate;
545
+ let completionReceipt;
546
+ if (payload.type === 'heartbeat') {
547
+ assertExactKeys(payload, ['type'], 'heartbeat payload');
548
+ candidate = { version: 1, type: 'heartbeat', observationId: envelope.eventId, envelopeDigest: link.assignmentEnvelopeDigest };
549
+ }
550
+ else if (payload.type === 'progress') {
551
+ assertExactKeys(payload, ['type', 'progress'], 'progress payload');
552
+ if (!payload.progress || typeof payload.progress !== 'object') {
553
+ throw new Error('Remote Callback Inbox progress must be an object');
554
+ }
555
+ assertExactKeys(payload.progress, [
556
+ 'summary', 'completedUnits', 'totalUnits',
557
+ ], 'progress');
558
+ identifier(payload.progress.summary, 'progress.summary');
559
+ const completedUnits = optionalNonNegativeInteger(payload.progress.completedUnits, 'progress.completedUnits');
560
+ const totalUnits = optionalPositiveInteger(payload.progress.totalUnits, 'progress.totalUnits');
561
+ if (completedUnits !== undefined && totalUnits !== undefined && completedUnits > totalUnits) {
562
+ throw new Error('Remote Callback Inbox progress completedUnits exceeds totalUnits');
563
+ }
564
+ candidate = {
565
+ version: 1,
566
+ type: 'progress',
567
+ observationId: envelope.eventId,
568
+ envelopeDigest: link.assignmentEnvelopeDigest,
569
+ progress: {
570
+ summary: payload.progress.summary,
571
+ ...(completedUnits === undefined ? {} : { completedUnits }),
572
+ ...(totalUnits === undefined ? {} : { totalUnits }),
573
+ },
574
+ };
575
+ }
576
+ else if (payload.type === 'checkpoint') {
577
+ assertExactKeys(payload, ['type', 'checkpoint'], 'checkpoint payload');
578
+ if (!payload.checkpoint || typeof payload.checkpoint !== 'object') {
579
+ throw new Error('Remote Callback Inbox checkpoint must be an object');
580
+ }
581
+ assertExactKeys(payload.checkpoint, ['ref', 'digest'], 'checkpoint');
582
+ identifier(payload.checkpoint.ref, 'checkpoint.ref');
583
+ requireDigest(payload.checkpoint.digest, 'checkpoint.digest');
584
+ candidate = {
585
+ version: 1,
586
+ type: 'checkpoint',
587
+ observationId: envelope.eventId,
588
+ envelopeDigest: link.assignmentEnvelopeDigest,
589
+ checkpoint: payload.checkpoint,
590
+ };
591
+ }
592
+ else if (payload.type === 'execution_completed') {
593
+ assertExactKeys(payload, ['type', 'completion'], 'execution_completed payload');
594
+ const completion = payload.completion;
595
+ if (!completion || typeof completion !== 'object') {
596
+ throw new Error('Remote Callback Inbox completion must be an object');
597
+ }
598
+ assertExactKeys(completion, [
599
+ 'report', 'candidate', 'claims', 'evidence', 'workspaceReceipt',
600
+ ], 'completion');
601
+ if (!completion.report || typeof completion.report !== 'object'
602
+ || !completion.candidate || typeof completion.candidate !== 'object') {
603
+ throw new Error('Remote Callback Inbox completion references are invalid');
604
+ }
605
+ assertExactKeys(completion.report, ['ref', 'digest'], 'completion report');
606
+ assertExactKeys(completion.candidate, ['ref', 'hash'], 'completion candidate');
607
+ identifier(completion.report.ref, 'completion.report.ref');
608
+ requireDigest(completion.report.digest, 'completion.report.digest');
609
+ identifier(completion.candidate.ref, 'completion.candidate.ref');
610
+ requireDigest(completion.candidate.hash, 'completion.candidate.hash');
611
+ const claims = normalizeContentReferences(completion.claims, 'completion.claims');
612
+ const evidence = normalizeContentReferences(completion.evidence, 'completion.evidence');
613
+ const workspaceReceipt = normalizeWorkspaceReceipt(link, completion.workspaceReceipt);
614
+ completionReceipt = deepFreeze({
615
+ report: { ref: completion.report.ref, digest: completion.report.digest },
616
+ candidate: { ref: completion.candidate.ref, hash: completion.candidate.hash },
617
+ claims,
618
+ evidence,
619
+ workspaceReceipt,
620
+ });
621
+ candidate = {
622
+ version: 1,
623
+ type: 'execution_completed',
624
+ observationId: envelope.eventId,
625
+ envelopeDigest: link.assignmentEnvelopeDigest,
626
+ completion: {
627
+ report: completion.report,
628
+ candidate: completion.candidate,
629
+ completionReceiptDigest: digest(completionReceipt),
630
+ },
631
+ };
632
+ }
633
+ else {
634
+ throw new Error('Remote Callback Inbox callback type is unsupported');
635
+ }
636
+ return deepFreeze({
637
+ observation: deepFreeze(candidate),
638
+ ...(completionReceipt ? { completionReceipt } : {}),
639
+ });
640
+ }
641
+ function normalizeContentReferences(value, label) {
642
+ if (!Array.isArray(value))
643
+ throw new Error(`Remote Callback Inbox ${label} must be an array`);
644
+ const refs = new Set();
645
+ return deepFreeze(value.map((item, index) => {
646
+ if (!item || typeof item !== 'object' || Array.isArray(item)) {
647
+ throw new Error(`Remote Callback Inbox ${label}[${index}] must be an object`);
648
+ }
649
+ assertExactKeys(item, ['ref', 'digest'], `${label}[${index}]`);
650
+ const ref = identifier(item.ref, `${label}[${index}].ref`);
651
+ requireDigest(item.digest, `${label}[${index}].digest`);
652
+ if (refs.has(ref))
653
+ throw new Error(`Remote Callback Inbox ${label} refs must be unique`);
654
+ refs.add(ref);
655
+ return { ref, digest: item.digest };
656
+ }));
657
+ }
658
+ function normalizeWorkspaceReceipt(link, value) {
659
+ if (!value || typeof value !== 'object')
660
+ throw new Error('Remote completion Workspace receipt is invalid');
661
+ assertExactKeys(value, [
662
+ 'provider', 'repositoryId', 'integrationBindingId', 'baseSha', 'checkpointSha',
663
+ 'targetRef', 'branchRef', 'pathScope', 'mode', 'headSha', 'pullRequestRef',
664
+ 'pullRequestHash', 'fence',
665
+ ], 'Workspace receipt');
666
+ for (const [name, actual, expected] of [
667
+ ['provider', value.provider, link.workspace.provider],
668
+ ['repositoryId', value.repositoryId, link.workspace.repositoryId],
669
+ ['integrationBindingId', value.integrationBindingId, link.workspace.integrationBindingId],
670
+ ['baseSha', value.baseSha, link.workspace.baseSha],
671
+ ['checkpointSha', value.checkpointSha, link.workspace.checkpointSha],
672
+ ['targetRef', value.targetRef, link.workspace.targetRef],
673
+ ['branchRef', value.branchRef, link.workspace.branchRef],
674
+ ['mode', value.mode, link.workspace.mode],
675
+ ['fence', value.fence, link.workspace.fence],
676
+ ]) {
677
+ if (actual !== expected)
678
+ throw new Error(`Remote completion Workspace ${name} does not match the Link`);
679
+ }
680
+ if (stableJson(value.pathScope) !== stableJson(link.workspace.pathScope)) {
681
+ throw new Error('Remote completion Workspace pathScope does not match the Link');
682
+ }
683
+ requireGitSha(value.headSha, 'workspaceReceipt.headSha');
684
+ if (value.mode === 'branch_and_pr') {
685
+ identifier(value.pullRequestRef, 'workspaceReceipt.pullRequestRef');
686
+ requireDigest(value.pullRequestHash, 'workspaceReceipt.pullRequestHash');
687
+ }
688
+ else if (value.pullRequestRef !== undefined || value.pullRequestHash !== undefined) {
689
+ throw new Error('Remote completion branch_only Workspace cannot contain a PR receipt');
690
+ }
691
+ return deepFreeze({ ...value, pathScope: [...value.pathScope] });
692
+ }
693
+ function materializeAppend(linkId, current, expectedSequence, drafts) {
694
+ sequence(expectedSequence, 'expectedSequence');
695
+ const normalized = drafts.map(normalizeDraft);
696
+ const existingById = new Map(current.map(event => [event.eventId, event]));
697
+ const replayed = [];
698
+ for (const draft of normalized) {
699
+ const existing = existingById.get(draft.eventId);
700
+ if (!existing)
701
+ continue;
702
+ if (stableJson({ occurredAt: existing.occurredAt, type: existing.type, payload: existing.payload })
703
+ !== stableJson(draft)) {
704
+ throw new Error(`Remote Callback Inbox eventId payload conflict: ${draft.eventId}`);
705
+ }
706
+ replayed.push(existing);
707
+ }
708
+ if (replayed.length > 0) {
709
+ if (replayed.length !== normalized.length)
710
+ throw new Error('Remote Callback Inbox append cannot mix replayed and new events');
711
+ return Object.freeze(replayed);
712
+ }
713
+ const actual = current.at(-1)?.sequence ?? -1;
714
+ if (actual !== expectedSequence)
715
+ throw new RemoteCallbackInboxSequenceConflictError(linkId, expectedSequence, actual);
716
+ const appended = normalized.map((draft, index) => deepFreeze({
717
+ ...draft,
718
+ version: 1,
719
+ linkId,
720
+ sequence: expectedSequence + index + 1,
721
+ }));
722
+ project(Object.freeze([...current, ...appended]));
723
+ return Object.freeze(appended);
724
+ }
725
+ function normalizeDraft(draft) {
726
+ identifier(draft.eventId, 'eventId');
727
+ timestamp(draft.occurredAt, 'occurredAt');
728
+ if (draft.type === 'link.registered') {
729
+ const raw = draft.payload.link;
730
+ if (!raw || typeof raw !== 'object')
731
+ throw new Error('Invalid persisted Remote Execution Link');
732
+ const { version, id, digest: actualDigest, ...input } = raw;
733
+ if (version !== 1)
734
+ throw new Error('Remote Execution Link version is unsupported');
735
+ const canonical = createRemoteExecutionLink(input);
736
+ if (id !== canonical.id || actualDigest !== canonical.digest
737
+ || stableJson(raw) !== stableJson(canonical)) {
738
+ throw new Error('Persisted Remote Execution Link identity or digest is invalid');
739
+ }
740
+ return deepFreeze({
741
+ eventId: draft.eventId,
742
+ occurredAt: draft.occurredAt,
743
+ type: 'link.registered',
744
+ payload: { link: canonical },
745
+ });
746
+ }
747
+ if (draft.type === 'callback.accepted' || draft.type === 'callback.deferred') {
748
+ identifier(draft.payload.payloadHash, 'payloadHash');
749
+ if (draft.payload.payloadHash !== digest(draft.payload.envelope.payload)) {
750
+ throw new Error('Remote Callback Inbox canonical payload hash is invalid');
751
+ }
752
+ return deepFreeze(structuredClone(draft));
753
+ }
754
+ throw new Error('Remote Callback Inbox event type is invalid');
755
+ }
756
+ function parseEvent(value) {
757
+ if (!value || typeof value !== 'object' || Array.isArray(value))
758
+ throw new Error('Invalid Remote Callback Inbox event');
759
+ const event = value;
760
+ const draft = normalizeDraft(event);
761
+ if (event.version !== 1)
762
+ throw new Error('Remote Callback Inbox event version is invalid');
763
+ return deepFreeze({
764
+ ...draft,
765
+ version: 1,
766
+ linkId: identifier(event.linkId, 'linkId'),
767
+ sequence: sequence(event.sequence, 'sequence'),
768
+ });
769
+ }
770
+ function createReconciliationReplayGroup(link, receipt, batch, cursor, deferred, accepted) {
771
+ if (receipt.fromCursor !== cursor) {
772
+ throw new Error('Remote Callback Inbox poll receipt cursor does not match the durable cursor');
773
+ }
774
+ const expectedSnapshotCursor = Math.max(cursor, ...deferred.keys(), ...batch.map(envelope => envelope.callbackSequence));
775
+ if (receipt.snapshotCursor !== expectedSnapshotCursor) {
776
+ throw new Error('Remote Callback Inbox poll snapshot cursor is incomplete or drifted');
777
+ }
778
+ if (receipt.reconciledAt > link.reconcileDeadline) {
779
+ throw new Error('Remote Callback Inbox reconciliation deadline has expired');
780
+ }
781
+ const pending = new Map(deferred);
782
+ for (const envelope of batch) {
783
+ const priorAccepted = accepted.find(item => item.endpointId === envelope.gatewayReceipt.endpointId
784
+ && item.eventId === envelope.eventId);
785
+ if (priorAccepted) {
786
+ if (priorAccepted.callbackDigest !== envelope.gatewayReceipt.callbackDigest) {
787
+ throw new Error('Remote Callback Inbox reconciliation callback body drift');
788
+ }
789
+ continue;
790
+ }
791
+ if (envelope.callbackSequence <= cursor) {
792
+ throw new Error('Remote Callback Inbox reconciliation batch contains a stale callback');
793
+ }
794
+ const occupied = pending.get(envelope.callbackSequence);
795
+ if (occupied && stableJson(occupied) !== stableJson(envelope)) {
796
+ throw new Error('Remote Callback Inbox reconciliation callback sequence drift');
797
+ }
798
+ pending.set(envelope.callbackSequence, envelope);
799
+ }
800
+ const ordered = [...pending.values()].sort((left, right) => left.callbackSequence - right.callbackSequence);
801
+ const terminalIndex = ordered.findIndex(envelope => envelope.payload.type === 'execution_completed');
802
+ if (terminalIndex >= 0 && terminalIndex !== ordered.length - 1) {
803
+ throw new Error('Remote Callback Inbox cannot reconcile callbacks after terminal observation');
804
+ }
805
+ const expected = [];
806
+ let expectedCursor = cursor;
807
+ for (const envelope of ordered) {
808
+ if (envelope.callbackSequence !== expectedCursor + 1)
809
+ break;
810
+ expected.push(envelope);
811
+ expectedCursor += 1;
812
+ if (envelope.payload.type === 'execution_completed')
813
+ break;
814
+ }
815
+ if (expected.length === 0) {
816
+ throw new Error('Remote Callback Inbox reconciliation accepted group has no proven callback');
817
+ }
818
+ return {
819
+ receipt,
820
+ batch,
821
+ expected: deepFreeze(expected),
822
+ offset: 0,
823
+ };
824
+ }
825
+ function project(events) {
826
+ if (events.length === 0)
827
+ return undefined;
828
+ assertContiguous(events);
829
+ const first = events[0];
830
+ if (first.type !== 'link.registered' || first.sequence !== 0 || first.linkId !== first.payload.link.id) {
831
+ throw new Error('Remote Callback Inbox must begin with its trusted Link');
832
+ }
833
+ const link = first.payload.link;
834
+ if (first.eventId !== `${link.id}:registered` || first.occurredAt !== link.linkedAt) {
835
+ throw new Error('Remote Callback Inbox trusted Link registration fact is invalid');
836
+ }
837
+ const accepted = [];
838
+ const deferredBySequence = new Map();
839
+ const identities = new Map();
840
+ const gatewayReceipts = new Map();
841
+ const completedReconciliationReceipts = new Set();
842
+ let cursor = 0;
843
+ let terminalReceipt;
844
+ let activeReconciliation;
845
+ for (const event of events.slice(1)) {
846
+ if (event.linkId !== link.id)
847
+ throw new Error('Remote Callback Inbox event Link identity drift');
848
+ if (event.type === 'link.registered')
849
+ throw new Error('Remote Callback Inbox Link can only be registered once');
850
+ const envelope = normalizeEnvelope(link, event.payload.envelope);
851
+ const normalizedCallback = normalizeCallback(link, envelope);
852
+ const expectedEventId = callbackEventId(link.id, event.type === 'callback.accepted' ? 'accepted' : 'deferred', envelope);
853
+ if (event.eventId !== expectedEventId) {
854
+ throw new Error('Remote Callback Inbox persisted callback event identity is invalid');
855
+ }
856
+ const priorReceiptDigest = gatewayReceipts.get(envelope.gatewayReceipt.receiptId);
857
+ if (priorReceiptDigest && priorReceiptDigest !== envelope.gatewayReceipt.callbackDigest) {
858
+ throw new Error('Remote Callback Inbox Gateway receipt identity drift');
859
+ }
860
+ gatewayReceipts.set(envelope.gatewayReceipt.receiptId, envelope.gatewayReceipt.callbackDigest);
861
+ const identity = `${envelope.gatewayReceipt.endpointId}\0${envelope.eventId}`;
862
+ const existingIdentity = identities.get(identity);
863
+ if (existingIdentity && (existingIdentity.payloadHash !== event.payload.payloadHash
864
+ || existingIdentity.callbackDigest !== envelope.gatewayReceipt.callbackDigest)) {
865
+ throw new Error('Remote Callback Inbox event identity callback body drift');
866
+ }
867
+ identities.set(identity, {
868
+ payloadHash: event.payload.payloadHash,
869
+ callbackDigest: envelope.gatewayReceipt.callbackDigest,
870
+ });
871
+ if (event.type === 'callback.deferred') {
872
+ if (activeReconciliation) {
873
+ throw new Error('Remote Callback Inbox reconciliation accepted group is incomplete');
874
+ }
875
+ if (event.occurredAt !== envelope.gatewayReceipt.receivedAt) {
876
+ throw new Error('Remote Callback Inbox deferred event time is not Gateway-observed time');
877
+ }
878
+ if (envelope.callbackSequence <= cursor || deferredBySequence.has(envelope.callbackSequence)) {
879
+ throw new Error('Remote Callback Inbox deferred sequence is stale or duplicated');
880
+ }
881
+ deferredBySequence.set(envelope.callbackSequence, envelope);
882
+ continue;
883
+ }
884
+ if (stableJson(event.payload.observation) !== stableJson(normalizedCallback.observation)
885
+ || stableJson(event.payload.completionReceipt)
886
+ !== stableJson(normalizedCallback.completionReceipt)) {
887
+ throw new Error('Remote Callback Inbox persisted observation does not match callback payload');
888
+ }
889
+ if (terminalReceipt)
890
+ throw new Error('Remote Callback Inbox observation exists after terminal receipt');
891
+ if (envelope.callbackSequence !== cursor + 1)
892
+ throw new Error('Remote Callback Inbox accepted callback sequence is not contiguous');
893
+ const deferred = deferredBySequence.get(envelope.callbackSequence);
894
+ if (deferred && stableJson(deferred) !== stableJson(envelope))
895
+ throw new Error('Remote Callback Inbox reconciliation callback drift');
896
+ const reconciliationReceipt = event.payload.reconciliationReceipt;
897
+ const reconciliationBatch = event.payload.reconciliationBatch;
898
+ let normalizedReconciliationReceipt;
899
+ if (reconciliationReceipt) {
900
+ if (!reconciliationBatch) {
901
+ throw new Error('Remote Callback Inbox reconciliation receipt is missing its exact callback batch');
902
+ }
903
+ const normalizedBatch = reconciliationBatch.map(item => normalizeEnvelope(link, item));
904
+ normalizedReconciliationReceipt = normalizeReconciliationReceipt(link, reconciliationReceipt, normalizedBatch);
905
+ if (!activeReconciliation) {
906
+ if (completedReconciliationReceipts.has(normalizedReconciliationReceipt.receiptId)) {
907
+ throw new Error('Remote Callback Inbox reconciliation receipt group is not contiguous');
908
+ }
909
+ activeReconciliation = createReconciliationReplayGroup(link, normalizedReconciliationReceipt, normalizedBatch, cursor, deferredBySequence, accepted);
910
+ }
911
+ else if (stableJson(activeReconciliation.receipt)
912
+ !== stableJson(normalizedReconciliationReceipt)
913
+ || stableJson(activeReconciliation.batch) !== stableJson(normalizedBatch)) {
914
+ throw new Error('Remote Callback Inbox reconciliation accepted group proof drift');
915
+ }
916
+ const expectedEnvelope = activeReconciliation.expected[activeReconciliation.offset];
917
+ if (!expectedEnvelope || stableJson(expectedEnvelope) !== stableJson(envelope)) {
918
+ throw new Error('Remote Callback Inbox reconciliation accepted group does not match its proof');
919
+ }
920
+ }
921
+ else {
922
+ if (reconciliationBatch) {
923
+ throw new Error('Remote Callback Inbox reconciliation batch lacks its trusted receipt');
924
+ }
925
+ if (activeReconciliation) {
926
+ throw new Error('Remote Callback Inbox reconciliation accepted group is incomplete');
927
+ }
928
+ }
929
+ if (deferred && !reconciliationReceipt) {
930
+ throw new Error('Remote Callback Inbox deferred callback requires a poll reconciliation receipt');
931
+ }
932
+ const expectedOccurredAt = normalizedReconciliationReceipt?.reconciledAt
933
+ ?? envelope.gatewayReceipt.receivedAt;
934
+ if (event.occurredAt !== expectedOccurredAt) {
935
+ throw new Error('Remote Callback Inbox accepted event time is not trusted');
936
+ }
937
+ deferredBySequence.delete(envelope.callbackSequence);
938
+ cursor += 1;
939
+ accepted.push(deepFreeze({
940
+ endpointId: envelope.gatewayReceipt.endpointId,
941
+ eventId: envelope.eventId,
942
+ payloadHash: event.payload.payloadHash,
943
+ callbackDigest: envelope.gatewayReceipt.callbackDigest,
944
+ callbackSequence: envelope.callbackSequence,
945
+ receivedAt: envelope.gatewayReceipt.receivedAt,
946
+ gatewayReceipt: envelope.gatewayReceipt,
947
+ ...(normalizedReconciliationReceipt
948
+ ? { reconciliationReceipt: normalizedReconciliationReceipt }
949
+ : {}),
950
+ observation: event.payload.observation,
951
+ ...(event.payload.completionReceipt
952
+ ? { completionReceipt: event.payload.completionReceipt }
953
+ : {}),
954
+ }));
955
+ if (event.payload.observation.type === 'execution_completed') {
956
+ if (!event.payload.completionReceipt) {
957
+ throw new Error('Remote Callback Inbox terminal observation is missing its completion receipt');
958
+ }
959
+ terminalReceipt = event.payload.completionReceipt;
960
+ }
961
+ if (activeReconciliation) {
962
+ activeReconciliation.offset += 1;
963
+ if (activeReconciliation.offset === activeReconciliation.expected.length) {
964
+ completedReconciliationReceipts.add(activeReconciliation.receipt.receiptId);
965
+ activeReconciliation = undefined;
966
+ }
967
+ }
968
+ }
969
+ if (activeReconciliation) {
970
+ throw new Error('Remote Callback Inbox reconciliation accepted group is incomplete');
971
+ }
972
+ return deepFreeze({
973
+ version: 1,
974
+ link,
975
+ sequence: events.at(-1).sequence,
976
+ status: terminalReceipt ? 'terminal_observed' : deferredBySequence.size > 0 ? 'reconcile_required' : 'open',
977
+ callbackCursor: cursor,
978
+ accepted: Object.freeze(accepted),
979
+ deferred: Object.freeze([...deferredBySequence.values()].sort((a, b) => a.callbackSequence - b.callbackSequence)),
980
+ ...(terminalReceipt ? { terminalReceipt } : {}),
981
+ });
982
+ }
983
+ function findDuplicate(current, envelope) {
984
+ if (!current)
985
+ return undefined;
986
+ const accepted = current.accepted.find(item => item.endpointId === envelope.gatewayReceipt.endpointId && item.eventId === envelope.eventId);
987
+ const deferred = current.deferred.find(item => item.gatewayReceipt.endpointId === envelope.gatewayReceipt.endpointId && item.eventId === envelope.eventId);
988
+ const existingPayloadHash = accepted?.payloadHash ?? (deferred ? digest(deferred.payload) : undefined);
989
+ const existingCallbackDigest = accepted?.callbackDigest
990
+ ?? deferred?.gatewayReceipt.callbackDigest;
991
+ if (existingPayloadHash && existingPayloadHash !== digest(envelope.payload)) {
992
+ throw new Error('Remote Callback Inbox endpoint/event identity payload drift');
993
+ }
994
+ if (existingCallbackDigest && existingCallbackDigest !== envelope.gatewayReceipt.callbackDigest) {
995
+ throw new Error('Remote Callback Inbox endpoint/event identity callback body drift');
996
+ }
997
+ if (!accepted && !deferred)
998
+ return undefined;
999
+ return deepFreeze(accepted ? { observation: accepted.observation } : {});
1000
+ }
1001
+ function assertAvailableSequence(current, envelope, pending = new Map(current?.deferred.map(item => [item.callbackSequence, item]) ?? [])) {
1002
+ if (envelope.callbackSequence <= (current?.callbackCursor ?? 0)) {
1003
+ throw new Error('Remote Callback Inbox callback sequence is stale');
1004
+ }
1005
+ const occupied = pending.get(envelope.callbackSequence);
1006
+ if (occupied && stableJson(occupied) !== stableJson(envelope)) {
1007
+ throw new Error('Remote Callback Inbox callback sequence identity drift');
1008
+ }
1009
+ }
1010
+ function assertContiguous(events) {
1011
+ events.forEach((event, index) => {
1012
+ if (event.sequence !== index)
1013
+ throw new Error('Remote Callback Inbox durable sequence is not contiguous');
1014
+ });
1015
+ }
1016
+ function assertExactKeys(value, allowed, label) {
1017
+ const unexpected = Object.keys(value).find(key => !allowed.includes(key));
1018
+ if (unexpected)
1019
+ throw new Error(`Remote Callback Inbox ${label} contains forbidden field ${unexpected}`);
1020
+ }
1021
+ function identifier(value, name) {
1022
+ if (typeof value !== 'string' || !value.trim())
1023
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1024
+ return value;
1025
+ }
1026
+ function timestamp(value, name) {
1027
+ if (!Number.isFinite(value) || Number(value) < 0)
1028
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1029
+ return Number(value);
1030
+ }
1031
+ function sequence(value, name) {
1032
+ if (!Number.isSafeInteger(value) || Number(value) < -1)
1033
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1034
+ return Number(value);
1035
+ }
1036
+ function positiveInteger(value, name) {
1037
+ if (!Number.isSafeInteger(value) || Number(value) < 1)
1038
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1039
+ return Number(value);
1040
+ }
1041
+ function optionalPositiveInteger(value, name) {
1042
+ if (value === undefined)
1043
+ return undefined;
1044
+ return positiveInteger(value, name);
1045
+ }
1046
+ function optionalNonNegativeInteger(value, name) {
1047
+ if (value === undefined)
1048
+ return undefined;
1049
+ if (!Number.isSafeInteger(value) || Number(value) < 0) {
1050
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1051
+ }
1052
+ return Number(value);
1053
+ }
1054
+ function nonNegativeInteger(value, name) {
1055
+ const normalized = optionalNonNegativeInteger(value, name);
1056
+ if (normalized === undefined)
1057
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1058
+ return normalized;
1059
+ }
1060
+ function requireDigest(value, name) {
1061
+ if (typeof value !== 'string' || !/^sha256:[a-f0-9]{64}$/u.test(value)) {
1062
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1063
+ }
1064
+ }
1065
+ function requireGitSha(value, name) {
1066
+ if (typeof value !== 'string' || !/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u.test(value)) {
1067
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1068
+ }
1069
+ }
1070
+ function requireGitRef(value, name) {
1071
+ if (typeof value !== 'string' || !/^refs\/heads\/[a-zA-Z0-9._/-]+$/u.test(value)
1072
+ || value.includes('..') || value.endsWith('/') || value.endsWith('.lock')) {
1073
+ throw new Error(`Invalid Remote Callback Inbox ${name}`);
1074
+ }
1075
+ }
1076
+ function isCanonicalRelativePath(value) {
1077
+ if (typeof value !== 'string' || !value.trim() || value.startsWith('/')
1078
+ || value.includes('\\') || value.includes('\0'))
1079
+ return false;
1080
+ return value.split('/').every(segment => segment !== '' && segment !== '.' && segment !== '..');
1081
+ }
1082
+ function hash(value) {
1083
+ return createHash('sha256').update(value).digest('hex');
1084
+ }
1085
+ function isMissingFile(error) {
1086
+ return error instanceof Error && 'code' in error && error.code === 'ENOENT';
1087
+ }
1088
+ //# sourceMappingURL=remote-callback-inbox.js.map