eve 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1048) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/bin/eve.js +15 -0
  3. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  4. package/dist/src/approval/definition.d.ts +19 -5
  5. package/dist/src/channel/adapter.d.ts +2 -0
  6. package/dist/src/channel/auth/oidc.js +1 -1
  7. package/dist/src/channel/channel-address.d.ts +1 -4
  8. package/dist/src/channel/channel-address.js +1 -1
  9. package/dist/src/channel/channel-operations.d.ts +4 -11
  10. package/dist/src/channel/channel-operations.js +1 -1
  11. package/dist/src/channel/compiled-channel.d.ts +0 -2
  12. package/dist/src/channel/compiled-channel.js +2 -2
  13. package/dist/src/channel/cross-channel-receive.d.ts +1 -3
  14. package/dist/src/channel/cross-channel-receive.js +1 -1
  15. package/dist/src/channel/forwarded-principal.js +1 -1
  16. package/dist/src/channel/schedule-auth.d.ts +16 -0
  17. package/dist/src/channel/schedule-auth.js +1 -1
  18. package/dist/src/channel/session-callback.js +1 -1
  19. package/dist/src/channel/session.d.ts +3 -8
  20. package/dist/src/channel/session.js +1 -1
  21. package/dist/src/channel/task-card.d.ts +121 -0
  22. package/dist/src/channel/task-card.js +1 -0
  23. package/dist/src/channel/types.d.ts +12 -57
  24. package/dist/src/chunks/{use-eve-agent-DXcE_8Ja.js → use-eve-agent-D_5129A9.js} +295 -205
  25. package/dist/src/chunks/{use-eve-agent-D4HVZBjn.js → use-eve-agent-Dab2MnT2.js} +295 -205
  26. package/dist/src/cli/commands/info.d.ts +11 -0
  27. package/dist/src/cli/commands/info.js +1 -1
  28. package/dist/src/cli/commands/init-agent-workspace.js +1 -1
  29. package/dist/src/cli/commands/init.js +1 -1
  30. package/dist/src/cli/dev/command-options.d.ts +2 -2
  31. package/dist/src/cli/dev/command.js +1 -1
  32. package/dist/src/cli/dev/tui/blocks.d.ts +19 -18
  33. package/dist/src/cli/dev/tui/blocks.js +3 -3
  34. package/dist/src/cli/dev/tui/command-typeahead.d.ts +3 -6
  35. package/dist/src/cli/dev/tui/diagnostic-presentation.d.ts +10 -0
  36. package/dist/src/cli/dev/tui/diagnostic-presentation.js +3 -2
  37. package/dist/src/cli/dev/tui/prompt-placeholder.d.ts +2 -0
  38. package/dist/src/cli/dev/tui/prompt-placeholder.js +1 -0
  39. package/dist/src/cli/dev/tui/rail.d.ts +1 -1
  40. package/dist/src/cli/dev/tui/runner.d.ts +25 -2
  41. package/dist/src/cli/dev/tui/runner.js +3 -3
  42. package/dist/src/cli/dev/tui/status-line.d.ts +4 -2
  43. package/dist/src/cli/dev/tui/status-line.js +1 -1
  44. package/dist/src/cli/dev/tui/subagent-pump.d.ts +44 -52
  45. package/dist/src/cli/dev/tui/subagent-pump.js +1 -1
  46. package/dist/src/cli/dev/tui/task-activity.d.ts +55 -0
  47. package/dist/src/cli/dev/tui/task-activity.js +1 -0
  48. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +13 -30
  49. package/dist/src/cli/dev/tui/terminal-renderer.js +11 -11
  50. package/dist/src/cli/dev/tui/theme.d.ts +1 -1
  51. package/dist/src/cli/dev/tui/theme.js +1 -1
  52. package/dist/src/cli/dev/tui/tool-block-groups.d.ts +6 -9
  53. package/dist/src/cli/dev/tui/tool-block-groups.js +1 -1
  54. package/dist/src/cli/dev/tui/tool-presentation.d.ts +16 -3
  55. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  56. package/dist/src/cli/dev/tui/traces/trace-conversation.js +3 -1
  57. package/dist/src/cli/dev/tui/traces/trace-view.js +1 -1
  58. package/dist/src/cli/dev/tui/types.d.ts +11 -5
  59. package/dist/src/cli/dev/ui-options.d.ts +2 -2
  60. package/dist/src/cli/option-parsers.d.ts +3 -1
  61. package/dist/src/cli/option-parsers.js +1 -1
  62. package/dist/src/cli/ui/terminal-text.js +1 -1
  63. package/dist/src/client/agent-info-schema.d.ts +150 -9
  64. package/dist/src/client/agent-info-schema.js +1 -1
  65. package/dist/src/client/agent-session.d.ts +28 -0
  66. package/dist/src/client/agent-session.js +1 -0
  67. package/dist/src/client/eve-agent-store-helpers.d.ts +1 -1
  68. package/dist/src/client/eve-agent-store-helpers.js +2 -2
  69. package/dist/src/client/eve-agent-store.js +1 -1
  70. package/dist/src/client/index.d.ts +2 -1
  71. package/dist/src/client/index.js +1 -1
  72. package/dist/src/client/message-action-parts.js +1 -1
  73. package/dist/src/client/message-reducer.js +1 -1
  74. package/dist/src/client/message-task-parts.d.ts +8 -0
  75. package/dist/src/client/message-task-parts.js +1 -0
  76. package/dist/src/client/optimistic-message-submissions.js +1 -1
  77. package/dist/src/client/session-controls.d.ts +0 -1
  78. package/dist/src/client/session-utils.d.ts +10 -0
  79. package/dist/src/client/session-utils.js +1 -1
  80. package/dist/src/client/session.d.ts +8 -16
  81. package/dist/src/client/session.js +1 -1
  82. package/dist/src/client/stream-version.js +1 -1
  83. package/dist/src/client/types.d.ts +2 -4
  84. package/dist/src/compiled/.vendor-stamp.json +3 -2
  85. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  86. package/dist/src/compiled/@vercel/connect/LICENSE +202 -0
  87. package/dist/src/compiled/@vercel/connect/authorization-details.d.ts +11 -0
  88. package/dist/src/compiled/@vercel/connect/authorization.d.ts +47 -0
  89. package/dist/src/compiled/@vercel/connect/connector.d.ts +32 -0
  90. package/dist/src/compiled/@vercel/connect/index.d.ts +5 -0
  91. package/dist/src/compiled/@vercel/connect/index.js +26 -0
  92. package/dist/src/compiled/@vercel/connect/installation.d.ts +48 -0
  93. package/dist/src/compiled/@vercel/connect/token.d.ts +137 -0
  94. package/dist/src/compiled/@workflow/core/runtime.js +3 -3
  95. package/dist/src/compiler/bundled-extension.d.ts +7 -1
  96. package/dist/src/compiler/bundled-extension.js +1 -1
  97. package/dist/src/compiler/default-tool-policy.d.ts +2 -2
  98. package/dist/src/compiler/default-tool-policy.js +1 -1
  99. package/dist/src/compiler/development-extensions.js +1 -1
  100. package/dist/src/compiler/extension-compatibility.d.ts +54 -18
  101. package/dist/src/compiler/extension-compatibility.js +1 -1
  102. package/dist/src/compiler/extension-mount-bindings.d.ts +5 -0
  103. package/dist/src/compiler/extension-mount-bindings.js +1 -0
  104. package/dist/src/compiler/load-binding-namespace.d.ts +10 -2
  105. package/dist/src/compiler/load-binding-namespace.js +1 -1
  106. package/dist/src/compiler/manifest.d.ts +19 -17
  107. package/dist/src/compiler/manifest.js +1 -1
  108. package/dist/src/compiler/module-lifecycle.d.ts +2 -2
  109. package/dist/src/compiler/module-lifecycle.js +1 -1
  110. package/dist/src/compiler/module-map.d.ts +1 -1
  111. package/dist/src/compiler/module-map.js +3 -3
  112. package/dist/src/compiler/normalize-manifest-helpers.d.ts +18 -1
  113. package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
  114. package/dist/src/compiler/normalize-manifest-types.d.ts +2 -0
  115. package/dist/src/compiler/normalize-manifest.js +1 -1
  116. package/dist/src/compiler/normalize-subagent.js +1 -1
  117. package/dist/src/compiler/normalize-tool.js +1 -1
  118. package/dist/src/compiler/project-sources.d.ts +4 -0
  119. package/dist/src/compiler/project-sources.js +1 -1
  120. package/dist/src/compiler/remote-agent-node.js +1 -1
  121. package/dist/src/compiler/source-graph.d.ts +5 -0
  122. package/dist/src/compiler/source-graph.js +1 -1
  123. package/dist/src/computer-use/extension/lib/computer-use-sandbox.d.ts +8 -0
  124. package/dist/src/computer-use/extension/lib/computer-use-sandbox.js +3 -3
  125. package/dist/src/computer-use/extension/lib/computer-use.d.ts +2 -0
  126. package/dist/src/computer-use/extension/lib/computer-use.js +2 -1
  127. package/dist/src/computer-use/extension/tools/computer_use.js +1 -1
  128. package/dist/src/context/build-dynamic-tools.js +1 -1
  129. package/dist/src/context/dynamic-subagent-lifecycle.d.ts +5 -0
  130. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  131. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  132. package/dist/src/context/dynamic-tool-metadata.d.ts +1 -1
  133. package/dist/src/context/key-names.d.ts +0 -1
  134. package/dist/src/context/key-names.js +1 -1
  135. package/dist/src/context/keys.d.ts +8 -14
  136. package/dist/src/context/keys.js +1 -1
  137. package/dist/src/context/memory-lifecycle.js +1 -1
  138. package/dist/src/context/memory-tools.d.ts +0 -1
  139. package/dist/src/context/provider.d.ts +1 -3
  140. package/dist/src/context/run-step.d.ts +2 -3
  141. package/dist/src/context/run-step.js +1 -1
  142. package/dist/src/context/serialize.js +1 -1
  143. package/dist/src/discover/bundled-extension.js +1 -1
  144. package/dist/src/discover/discover-agent.js +1 -1
  145. package/dist/src/discover/extensions.d.ts +0 -7
  146. package/dist/src/discover/extensions.js +1 -1
  147. package/dist/src/discover/manifest.d.ts +4 -0
  148. package/dist/src/evals/assertions/run.d.ts +4 -3
  149. package/dist/src/evals/assertions/run.js +1 -1
  150. package/dist/src/evals/index.d.ts +1 -1
  151. package/dist/src/evals/match.d.ts +4 -4
  152. package/dist/src/evals/mock-model.js +1 -1
  153. package/dist/src/evals/runner/derive-run-facts.d.ts +3 -3
  154. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  155. package/dist/src/evals/runner/reporters/assertion-scores.d.ts +19 -0
  156. package/dist/src/evals/runner/reporters/assertion-scores.js +1 -0
  157. package/dist/src/evals/runner/reporters/braintrust.js +1 -1
  158. package/dist/src/evals/runner/reporters/datadog-client.d.ts +123 -0
  159. package/dist/src/evals/runner/reporters/datadog-client.js +4 -0
  160. package/dist/src/evals/runner/reporters/datadog.d.ts +9 -98
  161. package/dist/src/evals/runner/reporters/datadog.js +2 -3
  162. package/dist/src/evals/session-content.js +1 -1
  163. package/dist/src/evals/session.d.ts +4 -4
  164. package/dist/src/evals/session.js +2 -2
  165. package/dist/src/evals/types.d.ts +18 -15
  166. package/dist/src/eve-channel/create-request.d.ts +5 -4
  167. package/dist/src/eve-channel/create-request.js +1 -1
  168. package/dist/src/eve-channel/index.d.ts +0 -9
  169. package/dist/src/eve-channel/index.js +1 -1
  170. package/dist/src/eve-channel/request.d.ts +3 -7
  171. package/dist/src/eve-channel/request.js +1 -1
  172. package/dist/src/eve-channel/support.d.ts +15 -5
  173. package/dist/src/eve-channel/support.js +1 -1
  174. package/dist/src/eve-channel/turn-policy-request.d.ts +2 -0
  175. package/dist/src/eve-channel/turn-policy-request.js +1 -0
  176. package/dist/src/eve-channel/types.d.ts +4 -0
  177. package/dist/src/execution/agent-sessions/context.d.ts +60 -0
  178. package/dist/src/execution/agent-sessions/context.js +1 -0
  179. package/dist/src/{subagents/remote-dispatch.d.ts → execution/agent-sessions/remote.d.ts} +17 -40
  180. package/dist/src/execution/agent-sessions/remote.js +1 -0
  181. package/dist/src/execution/agent-sessions/requests.d.ts +20 -0
  182. package/dist/src/execution/agent-sessions/requests.js +1 -0
  183. package/dist/src/execution/agent-sessions/session.d.ts +12 -0
  184. package/dist/src/execution/agent-sessions/session.js +1 -0
  185. package/dist/src/execution/agent-sessions/steps.d.ts +59 -0
  186. package/dist/src/execution/agent-sessions/steps.js +1 -0
  187. package/dist/src/execution/agent-sessions/target.d.ts +45 -0
  188. package/dist/src/execution/agent-sessions/target.js +1 -0
  189. package/dist/src/execution/agent-sessions/usage.d.ts +18 -0
  190. package/dist/src/execution/agent-sessions/usage.js +1 -0
  191. package/dist/src/execution/authorization-callback-match.d.ts +2 -4
  192. package/dist/src/execution/authorization-callback-match.js +1 -1
  193. package/dist/src/execution/cancel-descendant-turns-step.d.ts +1 -5
  194. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  195. package/dist/src/execution/cancelled-model-call-batch.js +1 -1
  196. package/dist/src/execution/connection-announcement.d.ts +7 -0
  197. package/dist/src/execution/connection-announcement.js +4 -0
  198. package/dist/src/execution/continuation-conflict-step.d.ts +2 -3
  199. package/dist/src/execution/continuation-conflict-step.js +1 -1
  200. package/dist/src/execution/coordination-dispatch-shared.d.ts +9 -27
  201. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  202. package/dist/src/execution/coordination-dispatch-step.d.ts +3 -2
  203. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  204. package/dist/src/execution/create-session-step.d.ts +0 -1
  205. package/dist/src/execution/create-session-step.js +1 -1
  206. package/dist/src/execution/deliver-payloads.js +1 -1
  207. package/dist/src/execution/durable-session-store.d.ts +0 -1
  208. package/dist/src/execution/dynamic-connections.js +1 -1
  209. package/dist/src/execution/dynamic-workflow/program-step.js +1 -1
  210. package/dist/src/execution/dynamic-workflow/schema.d.ts +1 -3
  211. package/dist/src/execution/dynamic-workflow/schema.js +1 -1
  212. package/dist/src/execution/dynamic-workflow/tool.d.ts +1 -1
  213. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  214. package/dist/src/execution/dynamic-workflow/workflow.js +1 -1
  215. package/dist/src/execution/forward-session-input.d.ts +4 -0
  216. package/dist/src/execution/forward-session-input.js +1 -0
  217. package/dist/src/execution/legacy-remote-agent/protocol.d.ts +41 -0
  218. package/dist/src/execution/legacy-remote-agent/protocol.js +1 -0
  219. package/dist/src/execution/legacy-session/authorization.js +1 -1
  220. package/dist/src/execution/legacy-session/completion-step.js +1 -1
  221. package/dist/src/execution/legacy-session/inbox.js +1 -1
  222. package/dist/src/execution/legacy-session/input.js +1 -1
  223. package/dist/src/execution/legacy-session/interrupt-step.js +1 -1
  224. package/dist/src/execution/model-call-batching.js +1 -1
  225. package/dist/src/execution/node-step.d.ts +1 -1
  226. package/dist/src/execution/node-step.js +1 -1
  227. package/dist/src/execution/proxied-deliver-step.d.ts +9 -6
  228. package/dist/src/execution/proxied-deliver-step.js +1 -1
  229. package/dist/src/execution/publish-session-events.d.ts +130 -0
  230. package/dist/src/execution/publish-session-events.js +1 -0
  231. package/dist/src/execution/route-child-delivery.d.ts +5 -4
  232. package/dist/src/execution/route-child-delivery.js +1 -3
  233. package/dist/src/execution/runtime-context.js +1 -1
  234. package/dist/src/execution/sandbox/prewarm.js +1 -1
  235. package/dist/src/execution/session/admission.d.ts +1 -12
  236. package/dist/src/execution/session/admission.js +1 -1
  237. package/dist/src/execution/session/entry-input.d.ts +0 -2
  238. package/dist/src/execution/session/entry.js +1 -1
  239. package/dist/src/execution/session/finalization.js +1 -1
  240. package/dist/src/execution/session/handoff-steps.d.ts +13 -2
  241. package/dist/src/execution/session/handoff-steps.js +1 -1
  242. package/dist/src/execution/session/handoff.d.ts +17 -3
  243. package/dist/src/execution/session/handoff.js +1 -1
  244. package/dist/src/execution/session/input-queue.d.ts +27 -28
  245. package/dist/src/execution/session/input-queue.js +1 -1
  246. package/dist/src/execution/session/next-input.d.ts +5 -0
  247. package/dist/src/execution/session/next-input.js +1 -1
  248. package/dist/src/execution/session/pending-turn-state.d.ts +2 -0
  249. package/dist/src/execution/session/pending-turn-state.js +1 -1
  250. package/dist/src/execution/session/principal.d.ts +14 -0
  251. package/dist/src/execution/session/principal.js +1 -0
  252. package/dist/src/execution/session/program.js +1 -1
  253. package/dist/src/execution/session/route-selected-delivery.js +1 -1
  254. package/dist/src/execution/session/state-cursor.d.ts +17 -15
  255. package/dist/src/execution/session/state-cursor.js +1 -1
  256. package/dist/src/execution/session/state-delta.d.ts +33 -0
  257. package/dist/src/execution/session/state-delta.js +1 -0
  258. package/dist/src/execution/session/timeout-steps.js +1 -1
  259. package/dist/src/execution/session/turn-event-handler.d.ts +2 -2
  260. package/dist/src/execution/session/turn-event-handler.js +1 -1
  261. package/dist/src/execution/session/turn-step-result.d.ts +1 -3
  262. package/dist/src/execution/session/turn-step-result.js +1 -1
  263. package/dist/src/execution/session/turn-step-types.d.ts +24 -15
  264. package/dist/src/execution/session/turn-step.d.ts +2 -2
  265. package/dist/src/execution/session/turn-step.js +1 -1
  266. package/dist/src/execution/session/turn-waiting-step.d.ts +4 -0
  267. package/dist/src/execution/session/turn-waiting-step.js +1 -0
  268. package/dist/src/execution/session/turn.d.ts +33 -2
  269. package/dist/src/execution/session/turn.js +1 -1
  270. package/dist/src/execution/session-callback-request.js +1 -1
  271. package/dist/src/execution/session-event-stream.d.ts +33 -0
  272. package/dist/src/execution/session-event-stream.js +1 -0
  273. package/dist/src/execution/session-inbox/inbox.d.ts +2 -0
  274. package/dist/src/execution/session-inbox/inbox.js +1 -1
  275. package/dist/src/execution/session-inbox/protocol.js +1 -1
  276. package/dist/src/execution/session-inbox/release-step.js +1 -1
  277. package/dist/src/execution/session-inbox/resume.js +1 -1
  278. package/dist/src/execution/session-workflow-tool-run.d.ts +11 -2
  279. package/dist/src/execution/session-workflow-tool-run.js +1 -1
  280. package/dist/src/execution/session.d.ts +0 -1
  281. package/dist/src/execution/session.js +2 -2
  282. package/dist/src/execution/settle-cancelled-turn-step.d.ts +21 -9
  283. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  284. package/dist/src/execution/stable-workflow-names.d.ts +0 -1
  285. package/dist/src/execution/stable-workflow-names.js +1 -1
  286. package/dist/src/execution/tasks/calls.d.ts +42 -0
  287. package/dist/src/execution/tasks/calls.js +1 -0
  288. package/dist/src/execution/tasks/model-step.d.ts +58 -0
  289. package/dist/src/execution/tasks/model-step.js +1 -0
  290. package/dist/src/execution/tasks/render.d.ts +66 -0
  291. package/dist/src/execution/tasks/render.js +8 -0
  292. package/dist/src/execution/tasks/session.d.ts +19 -0
  293. package/dist/src/execution/tasks/session.js +1 -0
  294. package/dist/src/execution/tasks/start.d.ts +34 -0
  295. package/dist/src/execution/tasks/start.js +1 -0
  296. package/dist/src/execution/tasks/steps.d.ts +31 -0
  297. package/dist/src/execution/tasks/steps.js +1 -0
  298. package/dist/src/execution/tasks/table.d.ts +192 -0
  299. package/dist/src/execution/tasks/table.js +1 -0
  300. package/dist/src/execution/tasks/task-id-input.d.ts +19 -0
  301. package/dist/src/execution/tasks/task-id-input.js +1 -0
  302. package/dist/src/execution/tasks/tool-entry-point.d.ts +11 -0
  303. package/dist/src/execution/tasks/tool-entry-point.js +1 -0
  304. package/dist/src/execution/tasks/workflow-target.d.ts +2 -0
  305. package/dist/src/execution/tasks/workflow-target.js +1 -1
  306. package/dist/src/execution/terminal-session-completion-step.js +1 -1
  307. package/dist/src/execution/terminal-session-failure-step.js +1 -1
  308. package/dist/src/execution/terminate-child-sessions-step.d.ts +2 -9
  309. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  310. package/dist/src/execution/tool-auth.js +1 -1
  311. package/dist/src/execution/tools/agent-router-workflow.d.ts +1 -1
  312. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  313. package/dist/src/execution/tools/agent-router.d.ts +1 -1
  314. package/dist/src/execution/tools/agent-router.js +1 -1
  315. package/dist/src/execution/tools/connection-approval.d.ts +25 -0
  316. package/dist/src/execution/tools/connection-approval.js +1 -0
  317. package/dist/src/execution/tools/connection-search-rank.d.ts +21 -0
  318. package/dist/src/execution/tools/connection-search-rank.js +1 -0
  319. package/dist/src/execution/tools/connection-target.d.ts +13 -0
  320. package/dist/src/execution/tools/connection-target.js +1 -0
  321. package/dist/src/execution/tools/connection-tools.d.ts +10 -0
  322. package/dist/src/execution/tools/connection-tools.js +2 -0
  323. package/dist/src/execution/tools/load-skill.js +1 -1
  324. package/dist/src/execution/tools/workflow/answer.d.ts +7 -4
  325. package/dist/src/execution/tools/workflow/answer.js +1 -1
  326. package/dist/src/execution/tools/workflow/ask.d.ts +73 -10
  327. package/dist/src/execution/tools/workflow/ask.js +1 -1
  328. package/dist/src/execution/tools/workflow/body.d.ts +60 -19
  329. package/dist/src/execution/tools/workflow/body.js +1 -1
  330. package/dist/src/execution/tools/workflow/cancel.d.ts +7 -2
  331. package/dist/src/execution/tools/workflow/cancel.js +1 -1
  332. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.d.ts +10 -4
  333. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.js +1 -1
  334. package/dist/src/execution/tools/workflow/{background.d.ts → harness-definition.d.ts} +6 -6
  335. package/dist/src/execution/tools/workflow/harness-definition.js +1 -0
  336. package/dist/src/execution/tools/workflow/interrupt.d.ts +6 -0
  337. package/dist/src/execution/tools/workflow/interrupt.js +1 -0
  338. package/dist/src/execution/tools/workflow/messages.d.ts +135 -10
  339. package/dist/src/execution/tools/workflow/messages.js +1 -1
  340. package/dist/src/execution/tools/workflow/owner-inbox.js +1 -1
  341. package/dist/src/execution/tools/workflow/owner.d.ts +15 -4
  342. package/dist/src/execution/tools/workflow/owner.js +1 -1
  343. package/dist/src/execution/tools/workflow/serve.d.ts +3 -0
  344. package/dist/src/execution/tools/workflow/serve.js +1 -0
  345. package/dist/src/execution/tools/workflow/start.d.ts +18 -11
  346. package/dist/src/execution/tools/workflow/start.js +1 -1
  347. package/dist/src/execution/tools/workflow/step-execution.js +1 -1
  348. package/dist/src/execution/tools/workflow/step.js +1 -1
  349. package/dist/src/execution/tools/workflow/types.d.ts +0 -10
  350. package/dist/src/execution/tools/workflow/withdraw-step.d.ts +31 -0
  351. package/dist/src/execution/tools/workflow/withdraw-step.js +1 -0
  352. package/dist/src/execution/tools/workflow/workflow-owner-blocking.d.ts +3 -5
  353. package/dist/src/execution/tools/workflow/workflow-owner-blocking.js +1 -1
  354. package/dist/src/execution/tools/workflow/workflow.d.ts +3 -3
  355. package/dist/src/execution/tools/workflow/workflow.js +1 -1
  356. package/dist/src/execution/web-fetch/request.js +1 -1
  357. package/dist/src/execution/workflow-callback-url.d.ts +0 -5
  358. package/dist/src/execution/workflow-callback-url.js +1 -1
  359. package/dist/src/execution/workflow-runtime.d.ts +3 -5
  360. package/dist/src/execution/workflow-runtime.js +1 -1
  361. package/dist/src/execution/workflow-webhook-route.js +1 -1
  362. package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -1
  363. package/dist/src/extensions/code/extension/lib/github-shell.js +1 -1
  364. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
  365. package/dist/src/framework/sources/modules/agent.d.ts +1 -0
  366. package/dist/src/framework/sources/modules/agent.js +1 -1
  367. package/dist/src/framework/sources/registry.js +1 -1
  368. package/dist/src/harness/action-presentation.js +1 -1
  369. package/dist/src/harness/action-result-helpers.d.ts +1 -0
  370. package/dist/src/harness/action-result-helpers.js +1 -1
  371. package/dist/src/harness/advertised-tools.d.ts +1 -1
  372. package/dist/src/harness/advertised-tools.js +1 -1
  373. package/dist/src/harness/announcements.d.ts +22 -0
  374. package/dist/src/harness/announcements.js +1 -0
  375. package/dist/src/harness/approval-candidates.d.ts +10 -2
  376. package/dist/src/harness/approval-candidates.js +1 -1
  377. package/dist/src/harness/approval-delivery-coordinator.d.ts +4 -5
  378. package/dist/src/harness/approval-delivery-coordinator.js +1 -1
  379. package/dist/src/harness/approval-recheck.d.ts +7 -0
  380. package/dist/src/harness/approval-recheck.js +1 -0
  381. package/dist/src/harness/authorization-event-fields.d.ts +13 -0
  382. package/dist/src/harness/authorization-event-fields.js +1 -0
  383. package/dist/src/harness/authorization.d.ts +2 -1
  384. package/dist/src/harness/authorization.js +1 -1
  385. package/dist/src/harness/coordination.d.ts +31 -27
  386. package/dist/src/harness/coordination.js +1 -1
  387. package/dist/src/harness/current-messages.d.ts +6 -1
  388. package/dist/src/harness/current-messages.js +1 -1
  389. package/dist/src/harness/emission.d.ts +7 -1
  390. package/dist/src/harness/emission.js +1 -1
  391. package/dist/src/harness/execute-tool.d.ts +4 -15
  392. package/dist/src/harness/hitl/session-limit-input-requests.d.ts +2 -0
  393. package/dist/src/harness/hitl/session-limit-input-requests.js +1 -1
  394. package/dist/src/harness/input-request-resolution.d.ts +5 -2
  395. package/dist/src/harness/input-request-resolution.js +1 -1
  396. package/dist/src/harness/input-requests.js +1 -1
  397. package/dist/src/harness/messages.d.ts +11 -3
  398. package/dist/src/harness/messages.js +1 -1
  399. package/dist/src/harness/nested-actions.d.ts +23 -0
  400. package/dist/src/harness/nested-actions.js +1 -0
  401. package/dist/src/harness/pending-input-batches.d.ts +8 -6
  402. package/dist/src/harness/pending-input-batches.js +1 -1
  403. package/dist/src/harness/provider-tool-history.d.ts +7 -2
  404. package/dist/src/harness/provider-tool-history.js +1 -1
  405. package/dist/src/harness/proxy-input-requests.d.ts +41 -36
  406. package/dist/src/harness/proxy-input-requests.js +1 -1
  407. package/dist/src/harness/session-limit-enforcement.js +1 -1
  408. package/dist/src/harness/stale-input-responses.js +1 -1
  409. package/dist/src/harness/step-hooks.js +1 -1
  410. package/dist/src/harness/tool-loop.js +2 -2
  411. package/dist/src/harness/tool-model-output.js +1 -1
  412. package/dist/src/harness/tool-presentation.js +1 -1
  413. package/dist/src/harness/tools.d.ts +1 -5
  414. package/dist/src/harness/tools.js +1 -1
  415. package/dist/src/harness/turn-tag-state.d.ts +6 -5
  416. package/dist/src/harness/types.d.ts +7 -15
  417. package/dist/src/harness/workflow-dispatch.d.ts +30 -0
  418. package/dist/src/harness/workflow-dispatch.js +1 -0
  419. package/dist/src/harness/workflow-tool-runs.d.ts +5 -65
  420. package/dist/src/harness/workflow-tool-runs.js +1 -1
  421. package/dist/src/instrumentation/lifecycle.d.ts +3 -0
  422. package/dist/src/instrumentation/native-events.d.ts +0 -7
  423. package/dist/src/instrumentation/native-events.js +1 -1
  424. package/dist/src/instrumentation/runtime.d.ts +1 -4
  425. package/dist/src/instrumentation/runtime.js +1 -1
  426. package/dist/src/instrumentation/state.d.ts +0 -6
  427. package/dist/src/instrumentation/state.js +1 -1
  428. package/dist/src/internal/application/package.js +1 -1
  429. package/dist/src/internal/authored-definition/schema-backed.d.ts +10 -0
  430. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  431. package/dist/src/internal/authored-module-loader.d.ts +12 -6
  432. package/dist/src/internal/authored-module-loader.js +2 -2
  433. package/dist/src/internal/authored-module-map-loader.js +1 -1
  434. package/dist/src/internal/authored-package-boundary.d.ts +3 -0
  435. package/dist/src/internal/authored-package-boundary.js +1 -1
  436. package/dist/src/internal/bundler/extension-mount-plugin.d.ts +14 -0
  437. package/dist/src/internal/bundler/extension-mount-plugin.js +1 -0
  438. package/dist/src/internal/bundler/extension-scope-plugin.d.ts +8 -11
  439. package/dist/src/internal/bundler/extension-scope-plugin.js +2 -3
  440. package/dist/src/internal/invocation/workflow-execution.d.ts +2 -2
  441. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  442. package/dist/src/internal/mount-state.d.ts +1 -0
  443. package/dist/src/internal/mount-state.js +1 -0
  444. package/dist/src/internal/nitro/host/build-application.js +1 -1
  445. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  446. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  447. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  448. package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
  449. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  450. package/dist/src/internal/node-esm-compat-banner.js +1 -1
  451. package/dist/src/internal/workflow/development-world-client.js +1 -1
  452. package/dist/src/internal/workflow-bundle/authored-workflow-directives.d.ts +4 -3
  453. package/dist/src/internal/workflow-bundle/authored-workflow-directives.js +1 -1
  454. package/dist/src/internal/workflow-bundle/builder.js +1 -1
  455. package/dist/src/internal/workflow-bundle/dynamic-capability-transform-plugin.js +1 -1
  456. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  457. package/dist/src/models/auto.d.ts +6 -0
  458. package/dist/src/models/auto.js +2 -2
  459. package/dist/src/protocol/message-version.d.ts +1 -0
  460. package/dist/src/protocol/message-version.js +1 -1
  461. package/dist/src/protocol/message.d.ts +126 -67
  462. package/dist/src/protocol/message.js +2 -2
  463. package/dist/src/protocol/remote-agent-protocol.d.ts +16 -0
  464. package/dist/src/protocol/remote-agent-protocol.js +1 -0
  465. package/dist/src/protocol/routes.d.ts +0 -6
  466. package/dist/src/protocol/routes.js +1 -1
  467. package/dist/src/protocol/task-tools.d.ts +21 -0
  468. package/dist/src/protocol/task-tools.js +1 -0
  469. package/dist/src/public/channels/auth.js +1 -1
  470. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +25 -16
  471. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
  472. package/dist/src/public/channels/chat-sdk/index.d.ts +1 -1
  473. package/dist/src/public/channels/chat-sdk/input-actions.d.ts +8 -0
  474. package/dist/src/public/channels/chat-sdk/input-actions.js +1 -0
  475. package/dist/src/public/channels/index.d.ts +1 -1
  476. package/dist/src/public/channels/linq/linqChannel.js +1 -1
  477. package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
  478. package/dist/src/public/channels/slack/action-status.d.ts +11 -12
  479. package/dist/src/public/channels/slack/action-status.js +1 -1
  480. package/dist/src/public/channels/slack/api.js +1 -1
  481. package/dist/src/public/channels/slack/attachments.js +1 -1
  482. package/dist/src/public/channels/slack/auth.d.ts +3 -0
  483. package/dist/src/public/channels/slack/auth.js +1 -1
  484. package/dist/src/public/channels/slack/connections.d.ts +6 -6
  485. package/dist/src/public/channels/slack/connections.js +1 -1
  486. package/dist/src/public/channels/slack/defaults.d.ts +13 -19
  487. package/dist/src/public/channels/slack/defaults.js +4 -4
  488. package/dist/src/public/channels/slack/hitl.d.ts +22 -13
  489. package/dist/src/public/channels/slack/hitl.js +2 -2
  490. package/dist/src/public/channels/slack/index.d.ts +4 -3
  491. package/dist/src/public/channels/slack/index.js +1 -1
  492. package/dist/src/public/channels/slack/input-response.d.ts +1 -5
  493. package/dist/src/public/channels/slack/input-response.js +1 -1
  494. package/dist/src/public/channels/slack/interaction-cards.js +1 -1
  495. package/dist/src/public/channels/slack/interactions.js +1 -1
  496. package/dist/src/public/channels/slack/renderers.d.ts +76 -0
  497. package/dist/src/public/channels/slack/renderers.js +1 -0
  498. package/dist/src/public/channels/slack/session-operations.d.ts +6 -0
  499. package/dist/src/public/channels/slack/session-operations.js +1 -1
  500. package/dist/src/public/channels/slack/slackChannel.d.ts +47 -103
  501. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  502. package/dist/src/public/channels/slack/task-card.d.ts +24 -0
  503. package/dist/src/public/channels/slack/task-card.js +1 -0
  504. package/dist/src/public/channels/telegram/hitl.d.ts +7 -1
  505. package/dist/src/public/channels/telegram/hitl.js +2 -1
  506. package/dist/src/public/channels/telegram/state.js +1 -1
  507. package/dist/src/public/channels/telegram/telegramChannel.d.ts +5 -0
  508. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  509. package/dist/src/public/definitions/channel.d.ts +6 -1
  510. package/dist/src/public/definitions/channel.js +1 -1
  511. package/dist/src/public/definitions/connections/mcp.d.ts +4 -6
  512. package/dist/src/public/definitions/connections/openapi.d.ts +7 -8
  513. package/dist/src/public/definitions/extension.d.ts +2 -2
  514. package/dist/src/public/definitions/extension.js +1 -1
  515. package/dist/src/public/definitions/hook.d.ts +4 -4
  516. package/dist/src/public/definitions/state.d.ts +4 -2
  517. package/dist/src/public/definitions/state.js +1 -1
  518. package/dist/src/public/memory/index.d.ts +0 -1
  519. package/dist/src/public/models/openai/index.d.ts +1 -1
  520. package/dist/src/public/models/openai/index.js +1 -1
  521. package/dist/src/public/schedules/index.d.ts +1 -0
  522. package/dist/src/public/schedules/index.js +1 -1
  523. package/dist/src/public/server/index.d.ts +28 -0
  524. package/dist/src/public/server/index.js +1 -0
  525. package/dist/src/public/tools/index.d.ts +3 -2
  526. package/dist/src/public/tools/index.js +1 -1
  527. package/dist/src/public/tools/no-reply.d.ts +1 -0
  528. package/dist/src/public/tools/no-reply.js +1 -0
  529. package/dist/src/runtime/agent/bootstrap-model-utils.d.ts +6 -7
  530. package/dist/src/runtime/agent/bootstrap-model-utils.js +1 -1
  531. package/dist/src/runtime/agent/bootstrap.d.ts +0 -1
  532. package/dist/src/runtime/agent/bootstrap.js +1 -1
  533. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  534. package/dist/src/runtime/agent/mock-model-fixtures.d.ts +1 -1
  535. package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
  536. package/dist/src/runtime/channels/registry.js +1 -1
  537. package/dist/src/runtime/connections/mcp-client.d.ts +1 -9
  538. package/dist/src/runtime/connections/mcp-client.js +1 -1
  539. package/dist/src/runtime/connections/openapi-client.js +1 -1
  540. package/dist/src/runtime/connections/scoped-authorization.d.ts +1 -1
  541. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  542. package/dist/src/runtime/connections/tool-result.d.ts +27 -0
  543. package/dist/src/runtime/connections/tool-result.js +2 -0
  544. package/dist/src/runtime/connections/tool-signature.d.ts +14 -0
  545. package/dist/src/runtime/connections/tool-signature.js +1 -0
  546. package/dist/src/runtime/local-dev-capability.js +1 -1
  547. package/dist/src/runtime/prompt/compose.d.ts +1 -3
  548. package/dist/src/runtime/prompt/compose.js +3 -3
  549. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  550. package/dist/src/runtime/resolve-tool.js +1 -1
  551. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  552. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  553. package/dist/src/runtime/sessions/turn.d.ts +1 -16
  554. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  555. package/dist/src/runtime/subagents/registry.js +1 -1
  556. package/dist/src/runtime/subagents/workflow-reference.d.ts +6 -3
  557. package/dist/src/runtime/subagents/workflow-reference.js +1 -1
  558. package/dist/src/runtime/subagents/workflow.d.ts +12 -6
  559. package/dist/src/runtime/subagents/workflow.js +1 -1
  560. package/dist/src/runtime/tools/registry.js +1 -1
  561. package/dist/src/self-modification/extension/classify-registry-item.d.ts +3 -0
  562. package/dist/src/self-modification/extension/classify-registry-item.js +1 -1
  563. package/dist/src/self-modification/extension/subagents/agent/agent.d.ts +1 -1
  564. package/dist/src/self-modification/extension/subagents/agent/agent.js +1 -1
  565. package/dist/src/self-modification/extension/subagents/agent/instructions.js +7 -7
  566. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
  567. package/dist/src/self-modification/extension/subagents/agent/tools/search_registry.d.ts +2 -0
  568. package/dist/src/self-modification/extension/subagents/agent/tools/search_registry.js +1 -1
  569. package/dist/src/self-modification/scaffold.d.ts +2 -0
  570. package/dist/src/self-modification/scaffold.js +7 -0
  571. package/dist/src/self-modification/setup.js +1 -7
  572. package/dist/src/setup/boxes/select-model.js +1 -1
  573. package/dist/src/setup/integrations/shopify/templates.d.ts +1 -1
  574. package/dist/src/setup/integrations/shopify/templates.js +31 -19
  575. package/dist/src/setup/scaffold/create/agent-paths.d.ts +5 -0
  576. package/dist/src/setup/scaffold/create/agent-paths.js +1 -0
  577. package/dist/src/setup/scaffold/create/instructions-template.d.ts +1 -0
  578. package/dist/src/setup/scaffold/create/instructions-template.js +8 -0
  579. package/dist/src/setup/scaffold/create/project.js +3 -10
  580. package/dist/src/shared/action-request-name.d.ts +3 -0
  581. package/dist/src/shared/action-request-name.js +1 -0
  582. package/dist/src/shared/action-types.d.ts +49 -21
  583. package/dist/src/shared/action-types.js +1 -1
  584. package/dist/src/shared/agent-definition.d.ts +0 -7
  585. package/dist/src/shared/chatgpt-model.d.ts +1 -1
  586. package/dist/src/shared/chatgpt-model.js +1 -1
  587. package/dist/src/shared/connection-types.d.ts +2 -8
  588. package/dist/src/shared/default-agent-model.d.ts +10 -1
  589. package/dist/src/shared/default-agent-model.js +1 -1
  590. package/dist/src/shared/extension-mount.d.ts +2 -0
  591. package/dist/src/shared/extension-mount.js +1 -0
  592. package/dist/src/shared/format-duration.d.ts +2 -0
  593. package/dist/src/shared/format-duration.js +1 -0
  594. package/dist/src/shared/input.d.ts +1 -0
  595. package/dist/src/shared/memory-state.d.ts +1 -0
  596. package/dist/src/shared/memory-state.js +1 -1
  597. package/dist/src/shared/model-helper.d.ts +2 -2
  598. package/dist/src/shared/model-helper.js +1 -1
  599. package/dist/src/shared/model-summary.d.ts +2 -6
  600. package/dist/src/shared/model-summary.js +1 -1
  601. package/dist/src/shared/presentation-text.d.ts +5 -0
  602. package/dist/src/shared/presentation-text.js +1 -1
  603. package/dist/src/shared/serialized-observability-state.d.ts +0 -4
  604. package/dist/src/shared/serialized-observability-state.js +1 -1
  605. package/dist/src/shared/value-delta.d.ts +39 -0
  606. package/dist/src/shared/value-delta.js +1 -0
  607. package/dist/src/subagents/adapter-state.d.ts +0 -2
  608. package/dist/src/subagents/adapter-state.js +1 -1
  609. package/dist/src/subagents/adapter.js +1 -1
  610. package/dist/src/subagents/callback-route.js +1 -1
  611. package/dist/src/subagents/event-proxy-step.d.ts +16 -29
  612. package/dist/src/subagents/event-proxy-step.js +1 -1
  613. package/dist/src/subagents/hitl-proxy.d.ts +35 -17
  614. package/dist/src/subagents/hitl-proxy.js +1 -1
  615. package/dist/src/subagents/invocation.d.ts +1 -2
  616. package/dist/src/subagents/parent-notification.d.ts +2 -1
  617. package/dist/src/subagents/parent-notification.js +1 -1
  618. package/dist/src/subagents/token-budget.d.ts +8 -9
  619. package/dist/src/subagents/token-budget.js +1 -1
  620. package/dist/src/subagents/tool.d.ts +6 -12
  621. package/dist/src/subagents/tool.js +1 -1
  622. package/dist/src/svelte/index.js +1 -1
  623. package/dist/src/svelte/use-eve-agent.js +1 -1
  624. package/dist/src/tools/behavior.d.ts +5 -5
  625. package/dist/src/tools/definition.d.ts +50 -14
  626. package/dist/src/tools/definition.js +1 -1
  627. package/dist/src/tools/durable-callbacks.d.ts +1 -1
  628. package/dist/src/tools/dynamic.d.ts +6 -0
  629. package/dist/src/tools/framework/agent-contract.d.ts +2 -5
  630. package/dist/src/tools/framework/agent-contract.js +1 -1
  631. package/dist/src/tools/framework/agent.d.ts +2 -5
  632. package/dist/src/tools/framework/agent.js +1 -1
  633. package/dist/src/tools/framework/connection-tools.d.ts +3 -0
  634. package/dist/src/tools/framework/connection-tools.js +1 -0
  635. package/dist/src/tools/provided/agent-router.d.ts +6 -3
  636. package/dist/src/tools/provided/agent-router.js +1 -1
  637. package/dist/src/{execution/tools → tools/provided}/ask-question-workflow.d.ts +3 -4
  638. package/dist/src/tools/provided/ask-question-workflow.js +1 -0
  639. package/dist/src/tools/provided/ask-question.d.ts +20 -5
  640. package/dist/src/tools/provided/ask-question.js +2 -1
  641. package/dist/src/tools/provided/interrupted.d.ts +18 -0
  642. package/dist/src/tools/provided/interrupted.js +1 -0
  643. package/dist/src/tools/provided/no-reply.d.ts +19 -0
  644. package/dist/src/tools/provided/no-reply.js +1 -0
  645. package/dist/src/tools/provided/sleep-workflow.d.ts +4 -0
  646. package/dist/src/tools/provided/sleep-workflow.js +1 -0
  647. package/dist/src/tools/provided/sleep.d.ts +11 -5
  648. package/dist/src/tools/provided/sleep.js +1 -1
  649. package/dist/src/tools/provided/task-cancel.d.ts +6 -0
  650. package/dist/src/tools/provided/task-cancel.js +1 -0
  651. package/dist/src/tools/provided/task-wait.d.ts +9 -0
  652. package/dist/src/tools/provided/task-wait.js +1 -0
  653. package/dist/src/tools/provided/workflow.d.ts +2 -2
  654. package/dist/src/tools/provided/workflow.js +1 -1
  655. package/dist/src/tools/schema-emission.d.ts +23 -0
  656. package/dist/src/tools/schema-emission.js +1 -0
  657. package/dist/src/tools/schema.d.ts +22 -8
  658. package/dist/src/tools/schema.js +1 -1
  659. package/dist/src/tools/workflow-definition.d.ts +187 -85
  660. package/dist/src/tools/workflow-definition.js +1 -1
  661. package/dist/src/tools/workflow-entry-point.d.ts +3 -0
  662. package/dist/src/tools/workflow-entry-point.js +1 -0
  663. package/dist/src/tracing/agent-action-instrumentation.d.ts +1 -3
  664. package/dist/src/tracing/agent-action-instrumentation.js +1 -1
  665. package/dist/src/tracing/agent-invocation-coordinator.d.ts +9 -18
  666. package/dist/src/tracing/agent-invocation-coordinator.js +1 -1
  667. package/dist/src/tracing/agent-otel-content.d.ts +0 -2
  668. package/dist/src/tracing/agent-otel-content.js +3 -3
  669. package/dist/src/tracing/agent-otel-provider.js +2 -2
  670. package/dist/src/tracing/agent-otel-runtime-context.d.ts +20 -0
  671. package/dist/src/tracing/agent-otel-runtime-context.js +1 -1
  672. package/dist/src/tracing/agent-otel-usage.js +1 -1
  673. package/dist/src/tracing/agent-span-contract.d.ts +1 -1
  674. package/dist/src/tracing/agent-span-contract.js +1 -1
  675. package/dist/src/tracing/agent-span-id-generator.d.ts +0 -1
  676. package/dist/src/tracing/agent-span-id-generator.js +1 -1
  677. package/dist/src/tracing/agent-trace-context-codec.d.ts +1 -2
  678. package/dist/src/tracing/agent-trace-context-codec.js +1 -1
  679. package/dist/src/tracing/agent-trace-context-store.d.ts +2 -27
  680. package/dist/src/tracing/agent-trace-context-store.js +1 -1
  681. package/dist/src/tracing/agent-trace-state.d.ts +1 -19
  682. package/dist/src/tracing/content-attributes.js +1 -1
  683. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  684. package/dist/src/vue/index.js +1 -1
  685. package/dist/src/vue/use-eve-agent.js +1 -1
  686. package/docs/agent-config.md +36 -13
  687. package/docs/channels/chat-sdk.mdx +15 -4
  688. package/docs/channels/custom.mdx +89 -17
  689. package/docs/channels/eve.mdx +1 -1
  690. package/docs/channels/mcp.mdx +1 -1
  691. package/docs/channels/overview.mdx +14 -56
  692. package/docs/channels/slack.mdx +230 -35
  693. package/docs/channels/telegram.mdx +2 -0
  694. package/docs/concepts/built-in-tools.md +36 -28
  695. package/docs/concepts/context-control.md +2 -2
  696. package/docs/concepts/execution-model-and-durability.mdx +10 -11
  697. package/docs/concepts/sessions-runs-and-streaming.md +67 -47
  698. package/docs/connections/mcp.mdx +4 -4
  699. package/docs/connections/openapi.mdx +2 -2
  700. package/docs/connections/overview.mdx +2 -2
  701. package/docs/evals/assertions.mdx +5 -5
  702. package/docs/evals/cases.mdx +1 -1
  703. package/docs/evals/reporters.mdx +6 -4
  704. package/docs/extensions.md +11 -2
  705. package/docs/guides/client/streaming.mdx +31 -11
  706. package/docs/guides/dev-tui.md +13 -3
  707. package/docs/guides/dynamic-capabilities.md +5 -3
  708. package/docs/guides/evaluate.md +29 -2
  709. package/docs/guides/frontend/overview.mdx +5 -7
  710. package/docs/guides/hooks.md +16 -12
  711. package/docs/guides/instrumentation/instrumentation.mdx +2 -0
  712. package/docs/guides/remote-agents.md +12 -14
  713. package/docs/guides/self-modification.md +10 -0
  714. package/docs/instructions.mdx +1 -1
  715. package/docs/patterns/multi-tenant-approvals.md +1 -1
  716. package/docs/protocols/ucp.mdx +20 -16
  717. package/docs/reference/cli.md +61 -8
  718. package/docs/reference/typescript-api.md +43 -41
  719. package/docs/schedules.mdx +14 -34
  720. package/docs/subagents/index.mdx +24 -56
  721. package/docs/tools/human-in-the-loop.md +48 -13
  722. package/docs/tools/meta.json +1 -1
  723. package/docs/tools/overview.mdx +79 -59
  724. package/docs/tools/tasks-upgrade.md +201 -0
  725. package/docs/tools/tasks.md +315 -0
  726. package/docs/tools/workflows.mdx +368 -154
  727. package/package.json +18 -12
  728. package/dist/src/channel/activity-renderer.d.ts +0 -21
  729. package/dist/src/channel/activity-renderer.js +0 -1
  730. package/dist/src/channel/activity-sink.d.ts +0 -2
  731. package/dist/src/channel/activity-sink.js +0 -1
  732. package/dist/src/eve-channel/activity-observer-request.d.ts +0 -7
  733. package/dist/src/eve-channel/activity-observer-request.js +0 -1
  734. package/dist/src/eve-channel/delivery-policy-request.d.ts +0 -4
  735. package/dist/src/eve-channel/delivery-policy-request.js +0 -1
  736. package/dist/src/execution/activity-cohort.d.ts +0 -20
  737. package/dist/src/execution/activity-cohort.js +0 -1
  738. package/dist/src/execution/activity-collector.d.ts +0 -12
  739. package/dist/src/execution/activity-collector.js +0 -1
  740. package/dist/src/execution/activity-events.d.ts +0 -8
  741. package/dist/src/execution/activity-events.js +0 -1
  742. package/dist/src/execution/activity-route.d.ts +0 -2
  743. package/dist/src/execution/activity-route.js +0 -1
  744. package/dist/src/execution/activity-work-id.d.ts +0 -9
  745. package/dist/src/execution/activity-work-id.js +0 -1
  746. package/dist/src/execution/activity-work.d.ts +0 -30
  747. package/dist/src/execution/activity-work.js +0 -1
  748. package/dist/src/execution/cancel-indexed-session-tasks-step.d.ts +0 -7
  749. package/dist/src/execution/cancel-indexed-session-tasks-step.js +0 -1
  750. package/dist/src/execution/dispatch-action-failures.d.ts +0 -8
  751. package/dist/src/execution/dispatch-action-failures.js +0 -1
  752. package/dist/src/execution/dispatch-start-operation.d.ts +0 -15
  753. package/dist/src/execution/dispatch-start-operation.js +0 -1
  754. package/dist/src/execution/publish-channel-event.d.ts +0 -23
  755. package/dist/src/execution/publish-channel-event.js +0 -1
  756. package/dist/src/execution/scheduled-launch-delivery.d.ts +0 -7
  757. package/dist/src/execution/scheduled-launch-delivery.js +0 -1
  758. package/dist/src/execution/session/event-sink.d.ts +0 -26
  759. package/dist/src/execution/session/event-sink.js +0 -1
  760. package/dist/src/execution/session-activity-projection.d.ts +0 -16
  761. package/dist/src/execution/session-activity-projection.js +0 -1
  762. package/dist/src/execution/session-activity-renderer-step.d.ts +0 -15
  763. package/dist/src/execution/session-activity-renderer-step.js +0 -1
  764. package/dist/src/execution/session-activity.d.ts +0 -3
  765. package/dist/src/execution/session-activity.js +0 -1
  766. package/dist/src/execution/submit-activity.d.ts +0 -7
  767. package/dist/src/execution/submit-activity.js +0 -1
  768. package/dist/src/execution/task-event-callback.d.ts +0 -12
  769. package/dist/src/execution/task-event-callback.js +0 -1
  770. package/dist/src/execution/task-input-capability.d.ts +0 -4
  771. package/dist/src/execution/task-input-capability.js +0 -1
  772. package/dist/src/execution/task-input-response-route.d.ts +0 -2
  773. package/dist/src/execution/task-input-response-route.js +0 -1
  774. package/dist/src/execution/tasks/child/notify.d.ts +0 -44
  775. package/dist/src/execution/tasks/child/notify.js +0 -1
  776. package/dist/src/execution/tasks/parent/control-shared.d.ts +0 -23
  777. package/dist/src/execution/tasks/parent/control-shared.js +0 -1
  778. package/dist/src/execution/tasks/parent/delegate.d.ts +0 -35
  779. package/dist/src/execution/tasks/parent/delegate.js +0 -1
  780. package/dist/src/execution/tasks/parent/dispatch.d.ts +0 -22
  781. package/dist/src/execution/tasks/parent/dispatch.js +0 -1
  782. package/dist/src/execution/tasks/parent/hitl-proxy-steps.d.ts +0 -27
  783. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +0 -1
  784. package/dist/src/execution/tasks/parent/run-parent.d.ts +0 -58
  785. package/dist/src/execution/tasks/parent/run-parent.js +0 -1
  786. package/dist/src/execution/tasks/parent/subagent-task-projection.d.ts +0 -26
  787. package/dist/src/execution/tasks/parent/subagent-task-projection.js +0 -1
  788. package/dist/src/execution/tasks/parent/task-cancel.d.ts +0 -12
  789. package/dist/src/execution/tasks/parent/task-cancel.js +0 -1
  790. package/dist/src/execution/tasks/parent/tool-execution.d.ts +0 -45
  791. package/dist/src/execution/tasks/parent/tool-execution.js +0 -1
  792. package/dist/src/execution/terminal-session-event.d.ts +0 -13
  793. package/dist/src/execution/terminal-session-event.js +0 -1
  794. package/dist/src/execution/tools/ask-question-workflow.js +0 -1
  795. package/dist/src/execution/tools/ask-question.d.ts +0 -19
  796. package/dist/src/execution/tools/ask-question.js +0 -2
  797. package/dist/src/execution/tools/connection-search.d.ts +0 -2
  798. package/dist/src/execution/tools/connection-search.js +0 -2
  799. package/dist/src/execution/tools/sleep-workflow.d.ts +0 -3
  800. package/dist/src/execution/tools/sleep-workflow.js +0 -1
  801. package/dist/src/execution/tools/sleep.d.ts +0 -10
  802. package/dist/src/execution/tools/sleep.js +0 -1
  803. package/dist/src/execution/tools/subagent/accept-event-step.d.ts +0 -7
  804. package/dist/src/execution/tools/subagent/accept-event-step.js +0 -1
  805. package/dist/src/execution/tools/subagent/emit-event-step.d.ts +0 -12
  806. package/dist/src/execution/tools/subagent/emit-event-step.js +0 -1
  807. package/dist/src/execution/tools/subagent/invoke-agent.d.ts +0 -42
  808. package/dist/src/execution/tools/subagent/invoke-agent.js +0 -1
  809. package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +0 -44
  810. package/dist/src/execution/tools/subagent/invoke-preparation.js +0 -1
  811. package/dist/src/execution/tools/subagent/invoke-step.d.ts +0 -64
  812. package/dist/src/execution/tools/subagent/invoke-step.js +0 -1
  813. package/dist/src/execution/tools/subagent/receipt-identity.d.ts +0 -11
  814. package/dist/src/execution/tools/subagent/receipt-identity.js +0 -1
  815. package/dist/src/execution/tools/subagent/start.d.ts +0 -51
  816. package/dist/src/execution/tools/subagent/start.js +0 -1
  817. package/dist/src/execution/tools/subagent/steer.d.ts +0 -13
  818. package/dist/src/execution/tools/subagent/steer.js +0 -1
  819. package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +0 -24
  820. package/dist/src/execution/tools/subagent/task-agent-requests.js +0 -1
  821. package/dist/src/execution/tools/subagent/task-cancel.d.ts +0 -10
  822. package/dist/src/execution/tools/subagent/task-cancel.js +0 -1
  823. package/dist/src/execution/tools/tasks.d.ts +0 -3
  824. package/dist/src/execution/tools/tasks.js +0 -1
  825. package/dist/src/execution/tools/workflow/background.js +0 -1
  826. package/dist/src/execution/tools/workflow/workflow-owner-background.d.ts +0 -14
  827. package/dist/src/execution/tools/workflow/workflow-owner-background.js +0 -1
  828. package/dist/src/harness/background-tools.d.ts +0 -45
  829. package/dist/src/harness/background-tools.js +0 -1
  830. package/dist/src/instrumentation/background-task-runtime.d.ts +0 -18
  831. package/dist/src/instrumentation/background-task-runtime.js +0 -1
  832. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.3.0/node_modules/@vercel/cli-config/dist/index.js +0 -21
  833. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/envpath.js +0 -1
  834. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errors.js +0 -2
  835. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errutils.js +0 -1
  836. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/exec.js +0 -1
  837. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/fsutils.js +0 -1
  838. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/index.js +0 -1
  839. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/lookup.js +0 -1
  840. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/safety.js +0 -1
  841. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/authorization.js +0 -1
  842. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/connector.js +0 -1
  843. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/index.js +0 -1
  844. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/installation.js +0 -1
  845. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/internal/base-url.js +0 -1
  846. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/internal/default-scopes.js +0 -1
  847. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/internal/env.js +0 -1
  848. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/internal/url-validation.js +0 -1
  849. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/token.js +0 -1
  850. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/auth-errors.js +0 -1
  851. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -1
  852. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/get-context.js +0 -1
  853. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -1
  854. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -2
  855. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/index.js +0 -1
  856. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/oauth.js +0 -1
  857. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/token-error.js +0 -1
  858. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/token-io.js +0 -1
  859. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/token-util.js +0 -2
  860. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/token.js +0 -1
  861. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -1
  862. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.9/node_modules/@vercel/oidc/dist/version.js +0 -1
  863. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +0 -1
  864. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +0 -1
  865. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +0 -1
  866. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +0 -1
  867. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +0 -1
  868. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -1
  869. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +0 -1
  870. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +0 -1
  871. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +0 -2
  872. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +0 -1
  873. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +0 -1
  874. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +0 -1
  875. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +0 -1
  876. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +0 -1
  877. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +0 -1
  878. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +0 -1
  879. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +0 -1
  880. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +0 -1
  881. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +0 -1
  882. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +0 -1
  883. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +0 -1
  884. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +0 -1
  885. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +0 -1
  886. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +0 -1
  887. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +0 -1
  888. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +0 -1
  889. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +0 -1
  890. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +0 -1
  891. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +0 -1
  892. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +0 -1
  893. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +0 -1
  894. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +0 -1
  895. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +0 -1
  896. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +0 -1
  897. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +0 -1
  898. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +0 -1
  899. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +0 -1
  900. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +0 -1
  901. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +0 -1
  902. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +0 -1
  903. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +0 -1
  904. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +0 -1
  905. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +0 -1
  906. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +0 -1
  907. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +0 -1
  908. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +0 -1
  909. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +0 -1
  910. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +0 -1
  911. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +0 -1
  912. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +0 -1
  913. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +0 -1
  914. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +0 -1
  915. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +0 -1
  916. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +0 -1
  917. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +0 -1
  918. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +0 -1
  919. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +0 -1
  920. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +0 -1
  921. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +0 -1
  922. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +0 -1
  923. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +0 -1
  924. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +0 -1
  925. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +0 -1
  926. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +0 -1
  927. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +0 -1
  928. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +0 -1
  929. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +0 -1
  930. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +0 -1
  931. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +0 -1
  932. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +0 -1
  933. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +0 -1
  934. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +0 -1
  935. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +0 -1
  936. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +0 -1
  937. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +0 -1
  938. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +0 -1
  939. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +0 -1
  940. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +0 -1
  941. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +0 -1
  942. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +0 -1
  943. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +0 -1
  944. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +0 -1
  945. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +0 -1
  946. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +0 -1
  947. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +0 -1
  948. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +0 -1
  949. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +0 -1
  950. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +0 -1
  951. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +0 -1
  952. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +0 -1
  953. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +0 -1
  954. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +0 -1
  955. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +0 -1
  956. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +0 -1
  957. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +0 -1
  958. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +0 -1
  959. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +0 -1
  960. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +0 -1
  961. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +0 -1
  962. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +0 -1
  963. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +0 -1
  964. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +0 -1
  965. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +0 -1
  966. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +0 -1
  967. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +0 -1
  968. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +0 -1
  969. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +0 -1
  970. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +0 -1
  971. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +0 -1
  972. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +0 -1
  973. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +0 -1
  974. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +0 -1
  975. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +0 -1
  976. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +0 -1
  977. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +0 -1
  978. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +0 -2
  979. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +0 -1
  980. package/dist/src/protocol/activity.d.ts +0 -112
  981. package/dist/src/protocol/activity.js +0 -1
  982. package/dist/src/protocol/agent-handle-error.d.ts +0 -13
  983. package/dist/src/protocol/agent-handle-error.js +0 -1
  984. package/dist/src/public/channels/slack/activity-plan.d.ts +0 -5
  985. package/dist/src/public/channels/slack/activity-plan.js +0 -1
  986. package/dist/src/public/channels/slack/activity.d.ts +0 -63
  987. package/dist/src/public/channels/slack/activity.js +0 -2
  988. package/dist/src/public/tools/connection-search.d.ts +0 -1
  989. package/dist/src/public/tools/connection-search.js +0 -1
  990. package/dist/src/public/tools/task-cancel.d.ts +0 -1
  991. package/dist/src/public/tools/task-cancel.js +0 -1
  992. package/dist/src/runtime/prompt/connections.d.ts +0 -9
  993. package/dist/src/runtime/prompt/connections.js +0 -2
  994. package/dist/src/shared/empty-delivery.d.ts +0 -3
  995. package/dist/src/shared/empty-delivery.js +0 -1
  996. package/dist/src/subagents/agent-handle-errors.d.ts +0 -25
  997. package/dist/src/subagents/agent-handle-errors.js +0 -1
  998. package/dist/src/subagents/callback-step.d.ts +0 -11
  999. package/dist/src/subagents/callback-step.js +0 -1
  1000. package/dist/src/subagents/continuation-bundle.d.ts +0 -13
  1001. package/dist/src/subagents/continuation-bundle.js +0 -1
  1002. package/dist/src/subagents/handle-dispatch.d.ts +0 -65
  1003. package/dist/src/subagents/handle-dispatch.js +0 -1
  1004. package/dist/src/subagents/handles/operation-id.d.ts +0 -15
  1005. package/dist/src/subagents/handles/operation-id.js +0 -1
  1006. package/dist/src/subagents/handles/prompt.d.ts +0 -52
  1007. package/dist/src/subagents/handles/prompt.js +0 -3
  1008. package/dist/src/subagents/handles/query.d.ts +0 -41
  1009. package/dist/src/subagents/handles/query.js +0 -1
  1010. package/dist/src/subagents/handles/state-key.d.ts +0 -8
  1011. package/dist/src/subagents/handles/state-key.js +0 -1
  1012. package/dist/src/subagents/handles/store.d.ts +0 -217
  1013. package/dist/src/subagents/handles/store.js +0 -1
  1014. package/dist/src/subagents/handles/transitions.d.ts +0 -103
  1015. package/dist/src/subagents/handles/transitions.js +0 -1
  1016. package/dist/src/subagents/remote-dispatch.js +0 -1
  1017. package/dist/src/subagents/start-local.d.ts +0 -29
  1018. package/dist/src/subagents/start-local.js +0 -1
  1019. package/dist/src/subagents/start-remote.d.ts +0 -21
  1020. package/dist/src/subagents/start-remote.js +0 -1
  1021. package/dist/src/tasks/delivery-context.d.ts +0 -32
  1022. package/dist/src/tasks/delivery-context.js +0 -4
  1023. package/dist/src/tasks/delivery-policy.d.ts +0 -14
  1024. package/dist/src/tasks/delivery-policy.js +0 -1
  1025. package/dist/src/tasks/json.d.ts +0 -88
  1026. package/dist/src/tasks/json.js +0 -1
  1027. package/dist/src/tasks/notification.d.ts +0 -10
  1028. package/dist/src/tasks/notification.js +0 -1
  1029. package/dist/src/tasks/task-id.d.ts +0 -31
  1030. package/dist/src/tasks/task-id.js +0 -1
  1031. package/dist/src/tasks/task-inbox-token.d.ts +0 -2
  1032. package/dist/src/tasks/task-inbox-token.js +0 -1
  1033. package/dist/src/tasks/transitions.d.ts +0 -17
  1034. package/dist/src/tasks/transitions.js +0 -1
  1035. package/dist/src/tasks/types.d.ts +0 -138
  1036. package/dist/src/tasks/types.js +0 -1
  1037. package/dist/src/tools/framework/connection-search.d.ts +0 -3
  1038. package/dist/src/tools/framework/connection-search.js +0 -1
  1039. package/dist/src/tools/framework/task-cancel.d.ts +0 -4
  1040. package/dist/src/tools/framework/task-cancel.js +0 -1
  1041. package/dist/src/tools/framework/task-contract.d.ts +0 -19
  1042. package/dist/src/tools/framework/task-contract.js +0 -1
  1043. package/dist/src/tools/native-definition.d.ts +0 -7
  1044. package/dist/src/tools/native-definition.js +0 -1
  1045. package/dist/src/tracing/agent-invocation-terminal.d.ts +0 -18
  1046. package/dist/src/tracing/agent-invocation-terminal.js +0 -1
  1047. /package/dist/src/execution/{tools/subagent → agent-sessions}/metadata.d.ts +0 -0
  1048. /package/dist/src/execution/{tools/subagent → agent-sessions}/metadata.js +0 -0
@@ -0,0 +1,14 @@
1
+ import type { SessionAuthContext } from "#channel/types.js";
2
+ import type { TurnStepPayload } from "#execution/session/turn-step-types.js";
3
+ /** Every anonymous caller shares this one principal. */
4
+ export declare const ANONYMOUS_PRINCIPAL = "anonymous";
5
+ /**
6
+ * Stable key for the principal a session identity acts as: only a turn's own
7
+ * principal steers it, and one principal's queued messages share a turn.
8
+ */
9
+ export declare function principalOf(auth: SessionAuthContext | null | undefined): string;
10
+ /**
11
+ * The principal of the delivery that starts or continues a turn. A delivery
12
+ * without auth keeps the session's current identity, as the turn step does.
13
+ */
14
+ export declare function resolveTurnPrincipal(payload: TurnStepPayload | undefined, serializedContext: Record<string, unknown>): string;
@@ -0,0 +1 @@
1
+ import{AuthKey}from"#context/keys.js";const ANONYMOUS_PRINCIPAL=`anonymous`;function principalOf(e){return e==null||e.principalType===`anonymous`?ANONYMOUS_PRINCIPAL:JSON.stringify([e.authenticator,e.issuer??null,e.principalType,e.principalId])}function resolveTurnPrincipal(e,t){let n=e?.delivery?.auth;return principalOf(n===void 0?t[AuthKey.name]:n)}export{ANONYMOUS_PRINCIPAL,principalOf,resolveTurnPrincipal};
@@ -1 +1 @@
1
- import{settleCancelledTurnStep}from"#execution/settle-cancelled-turn-step.js";import"#execution/session-inbox/inbox.js";import{bindTurnCallerContextStep,notifyCancelledTaskCallerStep,notifyTurnCallerStep,resolveInitialTurnCallerStep}from"#subagents/parent-notification.js";import{signalSessionAnchorStep}from"#execution/session/handoff-steps.js";import{SessionHandoff,sessionAnchorToken}from"#execution/session/handoff.js";import{nextTurnDelivery}from"#execution/session/next-input.js";import{cancelDescendantTurnsStep}from"#execution/cancel-descendant-turns-step.js";import{SessionInputQueue}from"#execution/session/input-queue.js";import{SessionExecution}from"#execution/session/turn.js";import{SessionStateCursor}from"#execution/session/state-cursor.js";import{finalizeSession}from"#execution/session/finalization.js";import{createSessionTimeoutControl}from"#execution/session/timeout-control.js";function createSafeOuterWorkflowError(){let e=Error(`Agent workflow failed. Inspect the private session trace for details.`);return e.name=`EveWorkflowFailure`,e}async function runPreparedSession(e,t){let n=new SessionStateCursor({inbox:t,sessionWritable:e.sessionWritable,serializedContext:e.serializedContext,sessionState:e.sessionState}),r={caller:e.caller,terminalEmitted:!1},i=new SessionHandoff({checkpoint:{capabilities:e.capabilities,retention:e.retention,sessionTimeoutMs:e.sessionTimeoutMs},deploymentId:e.deploymentId,inbox:t,isInitialOwner:e.anchor.kind===`self`,sessionId:e.sessionId}),a={output:``,isError:!0},o;try{try{o=await runSessionLoop(e,{cursor:n,handoff:i,inbox:t,progress:r})}finally{await t.dispose()}return o.kind===`transferred`?e.anchor.kind===`self`?(a=await i.awaitAnchoredResult(),a):{output:``}:(a=await finalizeSession(o.outcome,{caller:r.caller,cursor:n,sessionWritable:e.sessionWritable}),r.terminalEmitted=!0,a)}catch(t){throw r.terminalEmitted||await finalizeSession({error:t,kind:`failed`,turnId:r.turnId},{caller:r.caller,cursor:n,sessionWritable:e.sessionWritable}),createSafeOuterWorkflowError()}finally{await reportResultToAnchor(e,a,i,o)}}async function failSession(e){let t;try{t=await resolveInitialTurnCallerStep({serializedContext:e.serializedContext})}catch{}throw await finalizeSession({error:e.error,kind:`failed`},{caller:t,cursor:{serializedContext:e.serializedContext,sessionState:e.sessionState},sessionWritable:e.sessionWritable}),createSafeOuterWorkflowError()}async function reportResultToAnchor(e,t,n,r){switch(e.anchor.kind){case`self`:await n.disposeAnchor(),await e.anchor.notify?.(t);return;case`successor`:if(r?.kind===`transferred`)return;await signalSessionAnchorStep({result:t,token:sessionAnchorToken(e.sessionId)});return}}async function runSessionLoop(e,t){let{cursor:n,handoff:r,inbox:i,progress:a}=t,o=new SessionInputQueue,s=new SessionExecution({capabilities:e.capabilities,cursor:n,inbox:i,queue:o,sessionId:e.sessionId}),c=e.sessionTimeoutDeadline===void 0?void 0:createSessionTimeoutControl({deadline:e.sessionTimeoutDeadline,sessionId:e.sessionId}),nextParkedActivity=async e=>{for(;;){let t=await nextTurnDelivery({cursor:n,expectedAttemptIds:e,inbox:i,queue:o});if(t.kind!==`workflow`)return t;await s.handleWorkflowMessage(t.message)}},l=0,runTurn=async e=>{let t=a.caller;return t?.taskId!==void 0&&o.rememberTask(t.taskId),t!==void 0&&await n.apply({serializedContext:await bindTurnCallerContextStep({caller:t,serializedContext:n.serializedContext})}),a.turnId=`turn_${String(l++)}`,await s.runTurn(e)},runDeliveredTurn=async e=>{let t=await r.tryTransfer(e,{serializedContext:n.serializedContext,sessionState:n.sessionState});return t.kind===`transferred`?t:(e.delivery.caller!==void 0&&(a.caller=e.delivery.caller),{action:await runTurn({delivery:e.delivery}),kind:`action`})},settleCancelledTurn=async()=>{let t=await settleCancelledTurnStep({sessionWritable:e.sessionWritable,serializedContext:n.serializedContext,sessionState:n.sessionState});return await n.apply(t),a.caller=void 0,t},awaitPrewarmedAction=async()=>{for(;;){let e=await nextParkedActivity(new Set);switch(e.kind){case`expired`:case`reset`:case`closed`:return{kind:`terminal`,outcome:{kind:`expired`}};case`clear`:case`compact`:continue;case`turn`:return await runDeliveredTurn(e);case`cancel-turn`:case`authorization-resume`:continue}}},runInitialAction=async()=>e.awaitFirstMessage?await awaitPrewarmedAction():{action:await runTurn(e.initialInput===void 0?void 0:{delivery:e.initialInput}),kind:`action`};try{let[t,r]=await Promise.allSettled([runInitialAction(),c?.start()]);if(r.status===`rejected`)throw r.reason;if(t.status===`rejected`)throw t.reason;let i=t.value;if(i.kind!==`action`)return i;let o=i.action;for(;;){if(o.kind===`done`)return{kind:`terminal`,outcome:{action:o,kind:`done`}};if(o.cancelled===!0){let t={caller:a.caller,sessionId:e.sessionId},n=await settleCancelledTurn();await notifyCancelledTaskCallerStep(n.usage===void 0?t:{...t,usage:n.usage})}else o.settled?.notifyCaller===!0&&(a.caller!==void 0&&await notifyTurnCallerStep({caller:a.caller,lifecycle:`parked`,sessionId:e.sessionId,settled:o.settled}),a.caller=void 0);let t=await nextParkedActivity(new Set(o.authorizationAttemptIds??[]));switch(t.kind){case`authorization-resume`:o=await runTurn({delivery:{kind:`deliver`,payloads:t.payloads}});continue;case`expired`:case`reset`:case`closed`:return{kind:`terminal`,outcome:{kind:`expired`}};case`clear`:case`compact`:o=await runTurn({control:t.kind});continue;case`cancel-turn`:await cancelDescendantTurnsStep({serializedContext:n.serializedContext,sessionState:n.sessionState}),await settleCancelledTurn(),o={...o,settled:void 0};continue;case`turn`:{let e=await runDeliveredTurn(t);if(e.kind!==`action`)return e;o=e.action;continue}}}}finally{await c?.dispose()}}export{failSession,runPreparedSession};
1
+ import{workingTasks}from"#execution/tasks/table.js";import{settleCancelledTurnStep}from"#execution/settle-cancelled-turn-step.js";import"#execution/session-inbox/inbox.js";import{bindTurnCallerContextStep,notifyCancelledTaskCallerStep,notifyTurnCallerStep,resolveInitialTurnCallerStep}from"#subagents/parent-notification.js";import{signalSessionAnchorStep}from"#execution/session/handoff-steps.js";import{SessionHandoff,sessionAnchorToken}from"#execution/session/handoff.js";import{nextTurnDelivery}from"#execution/session/next-input.js";import{cancelDescendantTurnsStep}from"#execution/cancel-descendant-turns-step.js";import{SessionInputQueue}from"#execution/session/input-queue.js";import{SessionExecution}from"#execution/session/turn.js";import{SessionStateCursor}from"#execution/session/state-cursor.js";import{cancelWorkingTasks,sessionTaskTable}from"#execution/tasks/session.js";import{finalizeSession}from"#execution/session/finalization.js";import{createSessionTimeoutControl}from"#execution/session/timeout-control.js";function createSafeOuterWorkflowError(){let e=Error(`Agent workflow failed. Inspect the private session trace for details.`);return e.name=`EveWorkflowFailure`,e}async function runPreparedSession(e,t){let n=new SessionStateCursor({inbox:t,sessionWritable:e.sessionWritable,serializedContext:e.serializedContext,sessionState:e.sessionState}),r={caller:e.caller,terminalEmitted:!1},i=new SessionHandoff({checkpoint:{capabilities:e.capabilities,retention:e.retention,sessionTimeoutMs:e.sessionTimeoutMs},deploymentId:e.deploymentId,inbox:t,isInitialOwner:e.anchor.kind===`self`,sessionId:e.sessionId}),a={output:``,isError:!0},o;try{try{o=await runSessionLoop(e,{cursor:n,handoff:i,inbox:t,progress:r})}finally{await t.dispose()}return o.kind===`transferred`?e.anchor.kind===`self`?(a=await i.awaitAnchoredResult(),a):{output:``}:(a=await finalizeSession(o.outcome,{caller:r.caller,cursor:n,sessionWritable:e.sessionWritable}),r.terminalEmitted=!0,a)}catch(t){throw r.terminalEmitted||await finalizeSession({error:t,kind:`failed`,turnId:r.turnId},{caller:r.caller,cursor:n,sessionWritable:e.sessionWritable}),createSafeOuterWorkflowError()}finally{await reportResultToAnchor(e,a,i,o)}}async function failSession(e){let t;try{t=await resolveInitialTurnCallerStep({serializedContext:e.serializedContext})}catch{}throw await finalizeSession({error:e.error,kind:`failed`},{caller:t,cursor:{serializedContext:e.serializedContext,sessionState:e.sessionState},sessionWritable:e.sessionWritable}),createSafeOuterWorkflowError()}async function reportResultToAnchor(e,t,n,r){switch(e.anchor.kind){case`self`:await n.disposeAnchor(),await e.anchor.notify?.(t);return;case`successor`:if(r?.kind===`transferred`)return;await signalSessionAnchorStep({result:t,token:sessionAnchorToken(e.sessionId)});return}}async function runSessionLoop(e,t){let{cursor:n,handoff:r,inbox:i,progress:a}=t,o=new SessionInputQueue,s=new SessionExecution({capabilities:e.capabilities,cursor:n,inbox:i,queue:o,sessionId:e.sessionId}),c=e.sessionTimeoutDeadline===void 0?void 0:createSessionTimeoutControl({deadline:e.sessionTimeoutDeadline,sessionId:e.sessionId}),nextParkedActivity=async e=>{for(;;){let t=await nextTurnDelivery({cursor:n,expectedAttemptIds:e,hasWorkingTasks:()=>workingTasks(sessionTaskTable(n)).length>0,inbox:i,queue:o});if(t.kind===`workflow`){await s.handleWorkflowMessage(t.message);continue}if(t.kind===`cancel-working-tasks`){await cancelWorkingTasks(n,`turn_cancelled`);continue}return t}},l=0,runTurn=async e=>{let t=a.caller;t!==void 0&&await n.advance(e=>bindTurnCallerContextStep({caller:t,serializedContext:e.serializedContext})),a.turnId=`turn_${String(l++)}`;let r=await s.runTurn(e,{caller:t});return r.caller!==void 0&&(a.caller=r.caller),r},runDeliveredTurn=async e=>{let t=await r.tryTransfer(e,{serializedContext:n.serializedContext,sessionState:n.sessionState});return t.kind===`transferred`?t:(e.delivery.caller!==void 0&&(a.caller=e.delivery.caller),{action:await runTurn({delivery:e.delivery}),kind:`action`})},settleCancelledTurn=async e=>{let t=await n.advance(t=>settleCancelledTurnStep({...t,reportUsage:e}));return a.caller=void 0,t},awaitPrewarmedAction=async()=>{for(;;){let e=await nextParkedActivity(new Set);switch(e.kind){case`expired`:case`reset`:case`closed`:return{kind:`terminal`,outcome:{kind:`expired`}};case`clear`:case`compact`:continue;case`turn`:return await runDeliveredTurn(e);case`cancel-turn`:case`authorization-resume`:continue}}},runInitialAction=async()=>e.awaitFirstMessage?await awaitPrewarmedAction():{action:await runTurn(e.initialInput===void 0?void 0:{delivery:e.initialInput}),kind:`action`};try{let[t,r]=await Promise.allSettled([runInitialAction(),c?.start()]);if(r.status===`rejected`)throw r.reason;if(t.status===`rejected`)throw t.reason;let i=t.value;if(i.kind!==`action`)return i;let o=i.action;for(;;){if(o.kind===`done`)return{kind:`terminal`,outcome:{action:o,kind:`done`}};if(o.cancelled===!0){let t={caller:a.caller,sessionId:e.sessionId},n=await settleCancelledTurn(a.caller!==void 0);await notifyCancelledTaskCallerStep(n.usage===void 0?t:{...t,usage:n.usage})}else o.settled!==void 0&&(a.caller!==void 0&&await notifyTurnCallerStep({caller:a.caller,lifecycle:`parked`,sessionId:e.sessionId,settled:o.settled}),a.caller=void 0);let t=await nextParkedActivity(new Set(o.authorizationAttemptIds??[]));switch(t.kind){case`authorization-resume`:o=await runTurn({delivery:{kind:`deliver`,payloads:t.payloads}});continue;case`expired`:case`reset`:case`closed`:return{kind:`terminal`,outcome:{kind:`expired`}};case`clear`:case`compact`:o=await runTurn({control:t.kind});continue;case`cancel-turn`:await cancelDescendantTurnsStep({sessionState:n.sessionState}),await cancelWorkingTasks(n,`turn_cancelled`),await settleCancelledTurn(!1),o={...o,settled:void 0};continue;case`turn`:{let e=await runDeliveredTurn(t);if(e.kind!==`action`)return e;o=e.action;continue}}}}finally{await c?.dispose()}}export{failSession,runPreparedSession};
@@ -1 +1 @@
1
- import{routeDeliverToChildren}from"#execution/route-child-delivery.js";async function routeSelectedDelivery(e,t){let n=await routeDeliverToChildren({delivery:e.delivery,sessionWritable:t.sessionWritable,serializedContext:t.serializedContext,sessionState:t.sessionState});return await t.apply(n),n.kind===`cancel-turn`?{kind:`cancel-turn`}:n.remainder===void 0?{kind:`consumed`}:{...e,delivery:n.remainder}}export{routeSelectedDelivery};
1
+ import{routeDeliverToChildren}from"#execution/route-child-delivery.js";async function routeSelectedDelivery(e,t){let n=await t.advance(t=>routeDeliverToChildren({delivery:e.delivery,...t}));return n.kind===`cancel-turn`?{kind:`cancel-turn`}:n.remainder===void 0?{kind:`consumed`}:{...e,delivery:n.remainder}}export{routeSelectedDelivery};
@@ -1,22 +1,18 @@
1
1
  import type { DurableSessionState } from "#execution/durable-session-store.js";
2
+ import type { SessionStepState } from "#execution/publish-session-events.js";
3
+ import { type SessionStateTransition } from "#execution/session/state-delta.js";
2
4
  import type { SessionInboxOwnership } from "#execution/session-inbox/inbox.js";
3
- import type { TurnStepInput, TurnStepPayload } from "#execution/session/turn-step-types.js";
4
- /** A durable-state transition; absent fields keep the cursor's current value. */
5
- export interface SessionStateTransition {
6
- readonly serializedContext?: Record<string, unknown>;
7
- readonly sessionState?: DurableSessionState;
8
- }
9
5
  /**
10
- * The one mutable serialized-context / session-state pair owned by the
11
- * workflow executing a session. Steps return transitions; the cursor adopts
12
- * them and claims any continuation address a step introduced, so every hook
13
- * the session answers to is registered before the next step runs.
6
+ * The one serialized-context / session-state pair owned by the workflow
7
+ * executing a session. Steps run against it and return deltas; the cursor
8
+ * applies each to the state its step was given and claims any continuation
9
+ * address the step introduced, so every hook the session answers to is
10
+ * registered before the next step runs.
14
11
  */
15
12
  export declare class SessionStateCursor {
16
13
  readonly sessionWritable: WritableStream<Uint8Array>;
17
14
  private readonly inbox;
18
- private currentSerializedContext;
19
- private currentSessionState;
15
+ private values;
20
16
  constructor(input: {
21
17
  readonly inbox: Pick<SessionInboxOwnership, "claimSessionHooks">;
22
18
  readonly sessionWritable: WritableStream<Uint8Array>;
@@ -25,7 +21,13 @@ export declare class SessionStateCursor {
25
21
  });
26
22
  get serializedContext(): Record<string, unknown>;
27
23
  get sessionState(): DurableSessionState;
28
- /** Applies a transition after claiming every continuation address it introduced. */
29
- apply(transition: SessionStateTransition): Promise<void>;
30
- createStepInput(input: TurnStepPayload | undefined, signals: Pick<TurnStepInput, "abortSignal" | "steeringSignal">): TurnStepInput;
24
+ /**
25
+ * Runs a session-changing step against the current state and adopts the
26
+ * delta it returns. A delta describes a change to exactly the state its step
27
+ * was given, so state that another step changed in the meantime is a
28
+ * sequencing bug, never a merge.
29
+ */
30
+ advance<T extends SessionStateTransition>(step: (state: SessionStepState) => Promise<T>): Promise<T>;
31
+ /** The session's stream and current state, spread into a step's input. */
32
+ private stepState;
31
33
  }
@@ -1 +1 @@
1
- import{sessionHookTokens}from"#execution/session/hook-tokens.js";var SessionStateCursor=class{sessionWritable;inbox;currentSerializedContext;currentSessionState;constructor(e){this.inbox=e.inbox,this.sessionWritable=e.sessionWritable,this.currentSerializedContext=e.serializedContext,this.currentSessionState=e.sessionState}get serializedContext(){return this.currentSerializedContext}get sessionState(){return this.currentSessionState}async apply(e){let t=e.serializedContext??this.currentSerializedContext,n=e.sessionState??this.currentSessionState;await this.inbox.claimSessionHooks(sessionHookTokens({serializedContext:t,sessionState:n})),this.currentSerializedContext=t,this.currentSessionState=n}createStepInput(e,t){return{...t,input:e,sessionWritable:this.sessionWritable,serializedContext:this.currentSerializedContext,sessionState:this.currentSessionState}}};export{SessionStateCursor};
1
+ import{applySessionStateDelta}from"#execution/session/state-delta.js";import{sessionHookTokens}from"#execution/session/hook-tokens.js";var SessionStateCursor=class{sessionWritable;inbox;values;constructor(e){this.inbox=e.inbox,this.sessionWritable=e.sessionWritable,this.values={serializedContext:e.serializedContext,sessionState:e.sessionState}}get serializedContext(){return this.values.serializedContext}get sessionState(){return this.values.sessionState}async advance(e){let t=this.values,n=await e(this.stepState()),r=applySessionStateDelta(t,n.stateDelta);if(await this.inbox.claimSessionHooks(sessionHookTokens(r)),this.values!==t)throw Error(`Session state changed while a step ran, so its state delta cannot apply.`);return this.values=r,n}stepState(){return{...this.values,sessionWritable:this.sessionWritable}}};export{SessionStateCursor};
@@ -0,0 +1,33 @@
1
+ import type { DurableSessionState } from "#execution/durable-session-store.js";
2
+ import { type ValueDelta } from "#shared/value-delta.js";
3
+ /** The durable values a session workflow threads through its steps. */
4
+ export interface SessionStateValues {
5
+ readonly serializedContext: Record<string, unknown>;
6
+ readonly sessionState: DurableSessionState;
7
+ }
8
+ /** How a step changed the session's values; an absent value is unchanged. */
9
+ export interface SessionStateDelta {
10
+ readonly serializedContext?: ValueDelta;
11
+ readonly sessionState?: ValueDelta;
12
+ }
13
+ /** A step result the session workflow adopts through its state cursor. */
14
+ export interface SessionStateTransition {
15
+ readonly stateDelta: SessionStateDelta;
16
+ }
17
+ /** `T` with its session values replaced by the delta that produces them. */
18
+ export type WithSessionStateDelta<T> = T extends unknown ? Omit<T, keyof SessionStateValues> & SessionStateTransition : never;
19
+ /**
20
+ * Runs a session step's work and returns its result with the session values
21
+ * it produced replaced by their delta from the values the step was given.
22
+ *
23
+ * Workflow replay reads every step's output but no step's input, so a step
24
+ * that returns only what changed keeps both replay and storage from carrying
25
+ * the whole session once per step. The workflow body applies the delta to the
26
+ * values it passed in; see {@link applySessionStateDelta}.
27
+ *
28
+ * The input is snapshotted before `work` runs because step code may edit it
29
+ * in place, as a channel adapter does with its state.
30
+ */
31
+ export declare function withSessionStateDelta<I extends Partial<SessionStateValues>, R extends Partial<SessionStateValues>>(input: I, work: (input: I) => Promise<R>): Promise<WithSessionStateDelta<R>>;
32
+ /** Applies a step's delta to the values that step was given. */
33
+ export declare function applySessionStateDelta(values: SessionStateValues, delta: SessionStateDelta): SessionStateValues;
@@ -0,0 +1 @@
1
+ import{applyValueDelta,diffValue,snapshotValue}from"#shared/value-delta.js";async function withSessionStateDelta(e,t){let n={serializedContext:snapshotValue(e.serializedContext),sessionState:snapshotValue(e.sessionState)},{serializedContext:r,sessionState:i,...a}=await t(e),o={},s=r===void 0?void 0:diffValue(n.serializedContext,r);s!==void 0&&(o.serializedContext=s);let c=i===void 0?void 0:diffValue(n.sessionState,i);return c!==void 0&&(o.sessionState=c),{...a,stateDelta:o}}function applySessionStateDelta(e,t){return{serializedContext:applyValueDelta(e.serializedContext,t.serializedContext),sessionState:applyValueDelta(e.sessionState,t.sessionState)}}export{applySessionStateDelta,withSessionStateDelta};
@@ -1 +1 @@
1
- import{walkCauseChain}from"#shared/errors.js";import{sessionTimeoutWorkflowReference,startWorkflowOnCurrentDeployment}from"#execution/workflow-runtime.js";import{cancelRun,getWorld}from"#internal/workflow/runtime.js";import{resumeSessionInbox}from"#execution/session-inbox/resume.js";import{EntityConflictError,HookNotFoundError,RunExpiredError,WorkflowRunNotFoundError}from"#compiled/@workflow/errors/index.js";async function startSessionTimeoutStep(e){"use step";return{runId:(await startWorkflowOnCurrentDeployment(sessionTimeoutWorkflowReference,[e])).runId}}async function signalSessionTimeoutStep(e){"use step";try{await resumeSessionInbox(e.token,{kind:`session-timeout`,ownerRunId:e.ownerRunId})}catch(e){if(!isInactiveTimeoutTarget(e))throw e}}async function cancelSessionTimeoutStep(e){"use step";try{await cancelRun(await getWorld(),e.runId,{cancelReason:`Session ended before its timeout`})}catch(e){if(!isInactiveTimeoutTarget(e))throw e}}function isInactiveTimeoutTarget(e){for(let t of walkCauseChain(e))if(HookNotFoundError.is(t)||WorkflowRunNotFoundError.is(t)||RunExpiredError.is(t)||EntityConflictError.is(t))return!0;return!1}export{cancelSessionTimeoutStep,signalSessionTimeoutStep,startSessionTimeoutStep};
1
+ import{walkCauseChain}from"#shared/errors.js";import{sessionTimeoutWorkflowReference,startWorkflowOnCurrentDeployment}from"#execution/workflow-runtime.js";import{resumeSessionInbox}from"#execution/session-inbox/resume.js";import{EntityConflictError,HookNotFoundError,RunExpiredError,WorkflowRunNotFoundError}from"#compiled/@workflow/errors/index.js";import{cancelRun,getWorld}from"#internal/workflow/runtime.js";async function startSessionTimeoutStep(e){"use step";return{runId:(await startWorkflowOnCurrentDeployment(sessionTimeoutWorkflowReference,[e])).runId}}async function signalSessionTimeoutStep(e){"use step";try{await resumeSessionInbox(e.token,{kind:`session-timeout`,ownerRunId:e.ownerRunId})}catch(e){if(!isInactiveTimeoutTarget(e))throw e}}async function cancelSessionTimeoutStep(e){"use step";try{await cancelRun(await getWorld(),e.runId,{cancelReason:`Session ended before its timeout`})}catch(e){if(!isInactiveTimeoutTarget(e))throw e}}function isInactiveTimeoutTarget(e){for(let t of walkCauseChain(e))if(HookNotFoundError.is(t)||WorkflowRunNotFoundError.is(t)||RunExpiredError.is(t)||EntityConflictError.is(t))return!0;return!1}export{cancelSessionTimeoutStep,signalSessionTimeoutStep,startSessionTimeoutStep};
@@ -1,7 +1,7 @@
1
1
  import type { ContextContainer } from "#context/container.js";
2
2
  import type { bindDynamicConnections } from "#execution/dynamic-connections.js";
3
3
  import type { resolveEffectiveAgentRuntime } from "#execution/effective-agent-config.js";
4
- import type { SessionEventSink } from "#execution/session/event-sink.js";
4
+ import type { SessionEventPublisher } from "#execution/publish-session-events.js";
5
5
  import type { HandleEventFn } from "#harness/types.js";
6
6
  import type { ExecutionInstrumentation } from "#instrumentation/runtime.js";
7
7
  import type { CompiledBundle } from "#runtime/sessions/runtime-context-keys.js";
@@ -23,5 +23,5 @@ export declare function createTurnEventHandler(input: {
23
23
  readonly effectiveAgent: ReturnType<typeof resolveEffectiveAgentRuntime>;
24
24
  readonly effectiveNode: CompiledBundle["graph"]["root"];
25
25
  readonly instrumentation: ExecutionInstrumentation | undefined;
26
- readonly sink: SessionEventSink;
26
+ readonly publisher: SessionEventPublisher;
27
27
  }): HandleEventFn;
@@ -1 +1 @@
1
- import{dispatchDynamicSubagentEvent}from"#context/dynamic-subagent-lifecycle.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{dispatchDynamicToolEvent}from"#context/dynamic-tool-lifecycle.js";import{dispatchStreamEventHooks}from"#context/hook-lifecycle.js";import{dispatchDynamicInstructionEvent}from"#context/dynamic-instruction-lifecycle.js";import{dispatchDynamicSkillEvent}from"#context/dynamic-skill-lifecycle.js";import{dispatchMemoryLifecycleEvent}from"#context/memory-event-lifecycle.js";import{TurnCancelledError,throwIfTurnAborted}from"#harness/turn-cancellation.js";const HOOK_CANCELLABLE_EVENTS={"action.input.appended":!0,"action.partial":!0,"action.result":!0,"actions.requested":!0,"approval.candidate":!0,"approval.settled":!0,"authorization.completed":!0,"authorization.required":!0,"compaction.completed":!0,"compaction.requested":!0,"context.cleared":!1,"input.requested":!0,"input.resolved":!0,"message.appended":!0,"message.completed":!0,"message.received":!0,"reasoning.appended":!0,"reasoning.completed":!0,"result.completed":!0,"session.completed":!1,"session.failed":!1,"session.started":!0,"session.waiting":!1,"step.completed":!0,"step.failed":!1,"step.started":!0,"subagent.called":!1,"subagent.completed":!1,"subagent.event":!1,"subagent.started":!1,"turn.cancelled":!1,"turn.completed":!1,"turn.failed":!1,"turn.started":!0};function isHookCancellableEvent(e){return HOOK_CANCELLABLE_EVENTS[e]===!0}function createTurnEventHandler(e){let{abortSignal:t,bundle:n,ctx:r,effectiveAgent:i,effectiveNode:a}=e;return async(o,s)=>{let c=await e.sink.emit(o),l=await dispatchMemoryLifecycleEvent({abortSignal:t,appRoot:a.agent?.metadata?.appRoot??``,ctx:r,event:o,instrumentation:e.instrumentation?.memory,memories:a.agent?.memories??[],messages:s,nodeId:n.nodeId??`__root__`}),u=e.canCancelTurn&&isHookCancellableEvent(c.event.type)?()=>e.hookCancellation.abort(new TurnCancelledError):void 0;c.suppressed||await dispatchStreamEventHooks({cancelTurn:u,ctx:r,registry:n.hookRegistry,event:c.event}),c.event.type!==`step.started`&&await dispatchDynamicModelEvent({abortSignal:t,ctx:r,dynamicModel:i.turnAgent.dynamicModel,event:c.event,messages:l,scope:{moduleMap:n.moduleMap,nodeId:n.nodeId}}),await e.dynamicConnections.dispatch(c.event),await dispatchDynamicSubagentEvent({ctx:r,resolvers:n.subagentRegistry.dynamicResolvers??[],event:c.event,messages:l}),await dispatchDynamicToolEvent({ctx:r,resolvers:n.resolvedAgent.dynamicToolResolvers??[],event:c.event,messages:l}),await dispatchDynamicSkillEvent({ctx:r,resolvers:n.resolvedAgent.dynamicSkillResolvers??[],event:c.event,messages:l}),await dispatchDynamicInstructionEvent({ctx:r,resolvers:n.resolvedAgent.dynamicInstructionsResolvers??[],event:c.event,messages:l}),u!==void 0&&throwIfTurnAborted(e.hookCancellation.signal)}}export{createTurnEventHandler,isHookCancellableEvent};
1
+ import{dispatchDynamicSubagentEvent}from"#context/dynamic-subagent-lifecycle.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{dispatchDynamicToolEvent}from"#context/dynamic-tool-lifecycle.js";import{dispatchDynamicInstructionEvent}from"#context/dynamic-instruction-lifecycle.js";import{dispatchDynamicSkillEvent}from"#context/dynamic-skill-lifecycle.js";import{dispatchMemoryLifecycleEvent}from"#context/memory-event-lifecycle.js";import{TurnCancelledError,throwIfTurnAborted}from"#harness/turn-cancellation.js";const HOOK_CANCELLABLE_EVENTS={"action.input.appended":!0,"action.partial":!0,"action.result":!0,"actions.requested":!0,"agent.started":!1,"approval.candidate":!0,"approval.settled":!0,"authorization.completed":!0,"authorization.required":!0,"compaction.completed":!0,"compaction.requested":!0,"context.cleared":!1,"input.requested":!0,"input.resolved":!0,"message.appended":!0,"message.completed":!0,"message.received":!0,"reasoning.appended":!0,"reasoning.completed":!0,"result.completed":!0,"session.completed":!1,"session.failed":!1,"session.started":!0,"session.waiting":!1,"step.completed":!0,"step.failed":!1,"step.started":!0,"task.settled":!1,"task.started":!1,"turn.cancelled":!1,"turn.completed":!1,"turn.failed":!1,"turn.started":!0,"turn.waiting":!1};function isHookCancellableEvent(e){return HOOK_CANCELLABLE_EVENTS[e]===!0}function createTurnEventHandler(e){let{abortSignal:t,bundle:n,ctx:r,effectiveAgent:i,effectiveNode:a}=e,{publisher:o}=e;return async(s,c)=>{let l=await o.emit(s),u=await dispatchMemoryLifecycleEvent({abortSignal:t,appRoot:a.agent?.metadata?.appRoot??``,ctx:r,event:s,instrumentation:e.instrumentation?.memory,memories:a.agent?.memories??[],messages:c,nodeId:n.nodeId??`__root__`}),d=e.canCancelTurn&&isHookCancellableEvent(l.type)?()=>e.hookCancellation.abort(new TurnCancelledError):void 0;await o.dispatcher.runHooks(l,d),l.type!==`step.started`&&await dispatchDynamicModelEvent({abortSignal:t,ctx:r,dynamicModel:i.turnAgent.dynamicModel,event:l,messages:u,scope:{moduleMap:n.moduleMap,nodeId:n.nodeId}}),await e.dynamicConnections.dispatch(l),await dispatchDynamicSubagentEvent({ctx:r,resolvers:n.subagentRegistry.dynamicResolvers??[],event:l,messages:u}),await dispatchDynamicToolEvent({ctx:r,resolvers:n.resolvedAgent.dynamicToolResolvers??[],event:l,messages:u}),await dispatchDynamicSkillEvent({ctx:r,resolvers:n.resolvedAgent.dynamicSkillResolvers??[],event:l,messages:u}),await dispatchDynamicInstructionEvent({ctx:r,resolvers:n.resolvedAgent.dynamicInstructionsResolvers??[],event:l,messages:u}),d!==void 0&&throwIfTurnAborted(e.hookCancellation.signal)}}export{createTurnEventHandler,isHookCancellableEvent};
@@ -1,5 +1,3 @@
1
1
  import type { DurableStepResult } from "#execution/session/turn-step-types.js";
2
2
  import type { StepResult } from "#harness/types.js";
3
- export declare function resolveSessionStepResult(stepResult: StepResult, nextSerializedContext: Record<string, unknown>, beforeStepContext: Record<string, unknown>,
4
- /** The turn this step belongs to. */
5
- turnId: string): DurableStepResult;
3
+ export declare function resolveSessionStepResult(stepResult: StepResult, nextSerializedContext: Record<string, unknown>): DurableStepResult;
@@ -1 +1 @@
1
- import{createDurableSessionState}from"#execution/durable-session-store.js";import{getBackgroundTasks}from"#harness/workflow-tool-runs.js";import{preserveSerializedBackgroundTaskObservabilityState}from"#shared/serialized-observability-state.js";import{derivePendingState}from"#execution/session/pending-turn-state.js";import{getTurnUsageState,takeSessionUsageDelta,toUsage}from"#harness/turn-tag-state.js";function resolveSessionStepResult(e,t,n,r){let i=createDurableSessionState({session:e.session});if(e.steered)return{action:`steered`,serializedContext:t,sessionState:i};let a=e.backgroundTasks===void 0||e.backgroundTaskSession===void 0?{}:{backgroundTaskContext:preserveSerializedBackgroundTaskObservabilityState(n,t,e.backgroundTasks),backgroundTaskState:createDurableSessionState({session:e.backgroundTaskSession}),backgroundTasks:e.backgroundTasks};if(e.next!==null&&typeof e.next==`object`&&`done`in e.next){let n=getTurnUsageState(e.session.state)?.session;return{action:`done`,...a,output:e.next.output,isError:e.next.isError,serializedContext:t,sessionState:i,usage:n===void 0?void 0:toUsage(n),usageDelta:takeSessionUsageDelta(e.session).delta}}if(e.next===null){let n=derivePendingState(e.session);if(e.settledTurn!==void 0){if(e.settledTurn.isError!==!0&&getBackgroundTasks(e.session.state).query({state:`working`,turnId:r}).length>0)return{action:`park`,...a,...n,settled:{...e.settledTurn,notifyCaller:!1},serializedContext:t,sessionState:i};let{delta:o,session:s}=takeSessionUsageDelta(e.session);return{action:`park`,...a,...n,serializedContext:t,sessionState:createDurableSessionState({session:s}),settled:{notifyCaller:!0,output:e.settledTurn.output,isError:e.settledTurn.isError,usage:o}}}return{action:`park`,...a,...n,serializedContext:t,sessionState:i}}return{action:`continue`,...a,serializedContext:t,sessionState:i}}export{resolveSessionStepResult};
1
+ import{getTurnUsageState,takeSessionUsageDelta,toUsage}from"#harness/turn-tag-state.js";import{createDurableSessionState}from"#execution/durable-session-store.js";import{derivePendingState}from"#execution/session/pending-turn-state.js";function resolveSessionStepResult(e,t){let n=createDurableSessionState({session:e.session});if(e.steered)return{action:`steered`,serializedContext:t,sessionState:n};if(e.next!==null&&typeof e.next==`object`&&`done`in e.next){let r=getTurnUsageState(e.session.state)?.session;return{action:`done`,output:e.next.output,isError:e.next.isError,serializedContext:t,sessionState:n,usage:r===void 0?void 0:toUsage(r),usageDelta:takeSessionUsageDelta(e.session).delta}}if(e.held!==void 0)return{action:`held`,serializedContext:t,sessionState:n,taskIds:e.held.taskIds};if(e.next===null){let r=derivePendingState(e.session);if(e.settledTurn!==void 0){let{delta:n,session:i}=takeSessionUsageDelta(e.session);return{action:`park`,...r,serializedContext:t,sessionState:createDurableSessionState({session:i}),settled:{output:e.settledTurn.output,isError:e.settledTurn.isError,usage:n}}}return{action:`park`,...r,serializedContext:t,sessionState:n}}return{action:`continue`,serializedContext:t,sessionState:n}}export{resolveSessionStepResult};
@@ -1,16 +1,15 @@
1
- import type { DeliverHookPayload } from "#channel/types.js";
1
+ import type { DeliverHookPayload, TurnCaller } from "#channel/types.js";
2
2
  import type { DurableSessionState } from "#execution/durable-session-store.js";
3
- import type { SettledTurn, StepResult } from "#harness/types.js";
3
+ import type { WithSessionStateDelta } from "#execution/session/state-delta.js";
4
+ import type { TaskToolCall } from "#execution/tasks/calls.js";
5
+ import type { SettledTurn } from "#harness/types.js";
4
6
  import type { RuntimeActionResult } from "#shared/action-types.js";
5
7
  import type { TokenUsage } from "#shared/token-usage.js";
6
- /** A settled turn as the session parks it. The session, not the harness, decides caller delivery. */
7
- export interface ParkedSettledTurn extends SettledTurn {
8
- /** False while background tasks started by this turn are still working. */
9
- readonly notifyCaller: boolean;
10
- }
11
8
  /** Trusted runtime-action results collected by the session owner. */
12
9
  export interface RuntimeActionResultStepInput {
13
10
  readonly acceptedAtMsByCallId?: Readonly<Record<string, number>>;
11
+ /** What the `ctx.agent` sessions of the `execute` runs behind these results spent. */
12
+ readonly delegatedUsage?: readonly TokenUsage[];
14
13
  readonly results: readonly RuntimeActionResult[];
15
14
  }
16
15
  /**
@@ -33,14 +32,10 @@ export interface TurnStepInput {
33
32
  readonly sessionState: DurableSessionState;
34
33
  }
35
34
  interface DurableStepResultFields {
36
- /** Pre-step context plus the observability state owned by committed background tasks. */
37
- readonly backgroundTaskContext?: Record<string, unknown>;
38
- readonly backgroundTaskState?: DurableSessionState;
39
- readonly backgroundTasks?: StepResult["backgroundTasks"];
40
35
  readonly serializedContext: Record<string, unknown>;
41
36
  readonly sessionState: DurableSessionState;
42
37
  }
43
- /** Result returned by a session-mutating turn step. */
38
+ /** What one turn step's work produces, with the session state it leaves. */
44
39
  export type DurableStepResult = ({
45
40
  readonly action: "continue" | "done";
46
41
  readonly output?: unknown;
@@ -49,16 +44,30 @@ export type DurableStepResult = ({
49
44
  readonly usageDelta?: TokenUsage;
50
45
  } | {
51
46
  readonly action: "cancelled" | "steered";
47
+ }
48
+ /** The model ended the turn while tasks work; the turn waits for them. */
49
+ | {
50
+ readonly action: "held";
51
+ readonly taskIds: readonly string[];
52
52
  } | {
53
53
  readonly action: "park";
54
54
  readonly authorizationAttemptIds?: readonly string[];
55
55
  readonly hasPendingAuthorization: boolean;
56
56
  readonly hasPendingInputBatch: boolean;
57
57
  readonly pendingCoordinationCallIds?: readonly string[];
58
- readonly settled?: ParkedSettledTurn;
58
+ readonly pendingTaskToolCalls?: readonly TaskToolCall[];
59
+ readonly settled?: SettledTurn;
59
60
  }) & DurableStepResultFields;
61
+ /** What `turnStep` returns: its result, with the session state as a delta. */
62
+ export type TurnStepResult = WithSessionStateDelta<DurableStepResult>;
60
63
  /** The only two ways a locally executed conversational turn can settle. */
61
64
  export type TurnOutcome = {
65
+ /**
66
+ * The delegated caller of the latest message the turn read. A caller's
67
+ * later message awaits its reply at its own address, so the turn reports there.
68
+ */
69
+ readonly caller?: TurnCaller;
70
+ } & ({
62
71
  readonly kind: "done";
63
72
  readonly output: unknown;
64
73
  readonly isError?: boolean;
@@ -68,6 +77,6 @@ export type TurnOutcome = {
68
77
  readonly authorizationAttemptIds?: readonly string[];
69
78
  readonly cancelled?: true;
70
79
  readonly kind: "park";
71
- readonly settled?: ParkedSettledTurn;
72
- };
80
+ readonly settled?: SettledTurn;
81
+ });
73
82
  export {};
@@ -1,4 +1,4 @@
1
- import type { DurableStepResult, TurnStepInput } from "#execution/session/turn-step-types.js";
1
+ import type { TurnStepInput, TurnStepResult } from "#execution/session/turn-step-types.js";
2
2
  export type { TurnStepInput };
3
3
  /** Runs a bounded batch of harness model steps inside one durable `"use step"` boundary. */
4
- export declare function turnStep(rawInput: TurnStepInput): Promise<DurableStepResult>;
4
+ export declare function turnStep(input: TurnStepInput): Promise<TurnStepResult>;
@@ -1 +1 @@
1
- import{defaultDeliverResult}from"#channel/adapter.js";import{contextStorage}from"#context/container.js";import{AuthKey,CapabilitiesKey,ChannelDeliveryKey,HandleEventKey,InitiatorAuthKey,ParentSessionKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicToolRuntimeRevisionKey,SessionTitleKey,StaticModelReferenceKey,TaskDeliveryPolicyKey,TurnDeliveryIdsKey,TurnTaskDeliveryKey}from"#context/keys.js";import{createAuthorizationCompletedEvent,createSessionStartedEvent,createTurnStartedEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{coalesceTurnInputs,createTurnInputMessages,validateHarnessModelMessages}from"#harness/messages.js";import{drainMemoryCommit,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{createWorkflowRuntime}from"#execution/workflow-runtime.js";import{consumeDeferredStepInput}from"#harness/pending-input-batches.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{refreshDynamicSessionSubagentsForRuntimeRevision}from"#context/dynamic-subagent-lifecycle.js";import{resolveEffectiveAgentRuntime}from"#execution/effective-agent-config.js";import{hydrateDurableSession,refreshSessionFromTurnAgent}from"#execution/session.js";import{readRetainedBackgroundToolResult,runBackgroundStep}from"#execution/tasks/parent/tool-execution.js";import*as agentTraceState from"#tracing/agent-trace-context-store.js";import{activeTurnId}from"#harness/active-turn-id.js";import{derivePendingState}from"#execution/session/pending-turn-state.js";import{rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision}from"#context/dynamic-tool-lifecycle.js";import{setChannelContext}from"#execution/channel-context.js";import{deriveSessionTitle}from"#execution/eve-workflow-attributes.js";import*as activityCohort from"#execution/activity-cohort.js";import{CallbackBaseUrlKey,PendingAuthorizationResultKey,clearPendingAuthorization,getPendingAuthorization}from"#harness/authorization.js";import{drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{bindDynamicConnections}from"#execution/dynamic-connections.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{bindSessionInstrumentation}from"#instrumentation/runtime.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{matchAuthorizationCallbacks}from"#execution/authorization-callback-match.js";import{resolveSessionStepResult}from"#execution/session/turn-step-result.js";import{createSessionEventSink}from"#execution/session/event-sink.js";import{createTurnEventHandler}from"#execution/session/turn-event-handler.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{buildRuntimeIdentity,createExecutionNodeStep}from"#execution/node-step.js";import{getBackgroundTaskDelivery,markBackgroundTaskStepInput,resolveInitiatingTaskContext,resolveTaskDeliveryContext}from"#tasks/delivery-context.js";import{prepareWorkflowPreambleTrace}from"#execution/workflow-trace-context.js";import{reconcileSessionContinuationToken}from"#execution/reconcile-session-continuation-token.js";import{createExecutionHistoryView}from"#execution/history-view.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{runModelCallBatch}from"#execution/model-call-batching.js";import{createCancelledModelCallBatchResult}from"#execution/cancelled-model-call-batch.js";function channelDeliveryErrorCode(e){if(typeof e==`object`&&e&&`code`in e){let t=e.code;if(typeof t==`string`&&t.length>0)return t}return`CHANNEL_DELIVERY_FAILED`}async function turnStep(e){"use step";return runSessionStep(e)}async function runSessionStep(e){let t=e.input?.delivery,n=t,r=e.input?.runtimeResults,i=readDurableSession(e.sessionState),a=await deserializeContext(e.serializedContext),o=a.require(ChannelKey),s=a.require(BundleKey),c=resolveEffectiveAgentRuntime(s,a),l=t?.taskDeliveryPolicy??a.get(TaskDeliveryPolicyKey)??`auto`;a.set(TaskDeliveryPolicyKey,l);try{let{getWorkflowMetadata:e}=await import(`#compiled/@workflow/core/index.js`),t=e();typeof t.url==`string`&&a.set(CallbackBaseUrlKey,resolveWorkflowCallbackBaseUrl(t.url))}catch{}let u=getPendingAuthorization(i.state),d;if(u&&n!==void 0){let{matches:e,remainingPayloads:t}=matchAuthorizationCallbacks(u,n.payloads);if(n={...n,payloads:t},e.length>0){let r=activityCohort.restoreAuthorizationActivity({ctx:a,matches:e,pending:u}),o=e.map(e=>e.result);a.set(PendingAuthorizationResultKey,o),i={...i,state:clearPendingAuthorization(i.state,r)},d=e,t.length===0&&(n=void 0)}}let f=a.get(AuthKey);n?.auth!==void 0&&(a.set(AuthKey,n.auth??null),a.has(InitiatorAuthKey)||a.set(InitiatorAuthKey,n.auth??null));let p=getBackgroundTaskDelivery(n),m=hydrateDurableSession({compactionOverrides:{thresholdPercent:c.thresholdPercent},durable:i,turnAgent:c.turnAgent}),h=createExecutionHistoryView(m),g=bindSessionInstrumentation({agentName:c.turnAgent.id,ctx:a,rootSessionId:m.rootSessionId??m.sessionId,sessionId:m.sessionId}),_=getHarnessEmissionState(m.state);if(!_.sessionStarted&&!a.has(SessionTitleKey)&&!a.has(ParentSessionKey)){let e=t?.payloads.find(e=>e.message!==void 0)?.message,n=deriveSessionTitle(t?.title??e);n!==void 0&&(a.set(SessionTitleKey,n),await setEveAttributes({"$eve.title":n}))}t!==void 0&&(await contextStorage.run(a,()=>g?.preparePreamble({sequence:_.sequence,sessionStarted:_.sessionStarted})),await contextStorage.run(a,()=>g?.instrumentChannelDelivery({agentName:s.turnAgent.id,ctx:a,delivery:t,rootSessionId:m.rootSessionId??m.sessionId,sequence:_.sequence,sessionId:m.sessionId,turnId:activeTurnId(_)})));let failChannelDeliveries=async e=>{await contextStorage.run(a,()=>g?.instrumentChannelDelivery({ctx:a,error:e,errorCode:channelDeliveryErrorCode(e),includeTurn:!1,outcome:`failed`})),await g?.flush()},v=createSessionEventSink({adapter:o,ctx:a,isFirstTurn:_.sequence===0,sessionWritable:e.sessionWritable,sessionId:m.sessionId}),{adapterCtx:y}=v,b=new AbortController,x=e.abortSignal===void 0?b.signal:AbortSignal.any([e.abortSignal,b.signal]);try{let u=bindDynamicConnections(a,s.resolvedAgent),S={...s.graph.root,turnAgent:c.turnAgent},C=createTurnEventHandler({abortSignal:x,bundle:s,canCancelTurn:e.input?.control===void 0,hookCancellation:b,ctx:a,dynamicConnections:u,effectiveAgent:c,effectiveNode:S,instrumentation:g,sink:v}),w=n!==void 0&&!isHarnessBetweenTurns(m)?structuredClone(y.state):void 0,T;if(n!==void 0){let e=[];try{for(let t of n.payloads){let n=o.deliver?await o.deliver(t,y):defaultDeliverResult(t);n!=null&&e.push(p===void 0?n:markBackgroundTaskStepInput(n))}}catch(e){throw await failChannelDeliveries(e),e}T=e.length===0?void 0:e.reduce(coalesceTurnInputs)}let E=n!==void 0&&T===void 0&&!isHarnessBetweenTurns(m);if(E)f===void 0?a.delete(AuthKey):a.set(AuthKey,f),y.state=w;else if(t!==void 0&&a.set(TurnTaskDeliveryKey,`none`),t?.payloads.some(e=>e.message!==void 0)){let e=t.deliveryMetadata?.map(e=>e.deliveryId)??[];a.set(TurnDeliveryIdsKey,_.turnId?[...new Set([...a.get(TurnDeliveryIdsKey)??[],...e])]:e)}else!_.sessionStarted&&a.get(ChannelDeliveryKey)!==void 0&&a.set(TurnDeliveryIdsKey,[a.require(ChannelDeliveryKey).deliveryId]);r!==void 0&&(r.acceptedAtMsByCallId!==void 0&&a.set(RuntimeActionSettlementTimesKey,r.acceptedAtMsByCallId),T={...T,runtimeActionResults:r.results});let D;if(T!==void 0&&p!==void 0){let e=resolveTaskDeliveryContext({state:i.state,taskDeliveryIds:p.taskDeliveryIds??[p.taskDeliveryId],taskDeliveryPolicy:l});e!==void 0&&(a.set(TurnTaskDeliveryKey,e.phase),D=e.rootTurnId,T={...T,context:[...T.context??[],e.context]})}activityCohort.updateActivityRootForDelivery({activeTurnId:activeTurnId(_),ctx:a,delivery:E?void 0:t,sessionState:i.state,taskRootTurnId:D});let O=a.get(TurnTaskDeliveryKey);if(O===`none`||O===`initiating`){let e=resolveInitiatingTaskContext({state:i.state,turnId:activeTurnId(_)});e!==void 0&&a.set(TurnTaskDeliveryKey,e.phase)}if(t!==void 0){let e={...o,state:{...y.state}};setChannelContext(a,e)}if(n!==void 0&&T===void 0&&isHarnessBetweenTurns(m)){await contextStorage.run(a,()=>g?.instrumentChannelDelivery({ctx:a,includeTurn:!1,outcome:`completed`})),await g?.flush();let t=reconcileSessionContinuationToken(a,m),n=serializeContext(a),r=t===m?e.sessionState:createDurableSessionState({session:t});return{action:`park`,...derivePendingState(t),serializedContext:n,sessionState:r}}let k=s.subagentRegistry.dynamicResolvers??[],A=s.resolvedAgent.dynamicToolResolvers??[],j=buildRuntimeIdentity(S);try{let e=process.env.VERCEL_DEPLOYMENT_ID?.trim(),t=e?`deployment:${e}`:await resolveRuntimeCompiledArtifactsVersionedCacheKey(s.compiledArtifactsSource),n=_.sessionStarted;if(a.setVirtualContext(StaticModelReferenceKey,c.turnAgent.model??null),!n)a.set(SessionDynamicSubagentRuntimeRevisionKey,t),a.set(SessionDynamicToolRuntimeRevisionKey,t);else{let e=createSessionStartedEvent({runtime:j});await Promise.all([refreshDynamicSessionSubagentsForRuntimeRevision({ctx:a,resolvers:k,event:e,messages:h.initial.messages,runtimeRevision:t}),contextStorage.run(a,async()=>await refreshDynamicSessionToolsForRuntimeRevision({ctx:a,resolvers:A,event:e,messages:h.initial.messages,runtimeRevision:t}))]),isHarnessBetweenTurns(m)||await rebindMissingCompiledDynamicToolCallbacks({ctx:a,event:createTurnStartedEvent({sequence:_.sequence,turnId:activeTurnId(_)}),messages:h.initial.messages,resolvers:A})}}catch(e){throw await failChannelDeliveries(e),e}let M=s.resolvedAgent.config?.experimental?.workflow?.modelCallsPerStep??1,N=a.get(CapabilitiesKey),runHarnessStep=async(t,n)=>{let r=refreshSessionFromTurnAgent({compactionOverrides:{thresholdPercent:c.thresholdPercent},session:t,turnAgent:c.turnAgent});return createExecutionNodeStep({steeringSignal:e.steeringSignal,abortSignal:x,capabilities:N,clearOnly:e.input?.control===`clear`,compactOnly:e.input?.control===`compact`,createRuntime:createWorkflowRuntime,handleEvent:C,prepareApprovalTurn:e=>u.dispatch(createTurnStartedEvent(e)),historyProjector:h.projector,historyView:h.prepare(r),instrumentation:g,modelResolutionScope:{moduleMap:s.moduleMap,nodeId:s.nodeId},node:S})(r,n)},P,F;try{throwIfTurnAborted(x),F=await runModelCallBatch({steeringSignal:e.steeringSignal,initialInput:T,initialSession:m,modelCallsPerStep:M,runStep:async({firstCall:e,session:t,stepInput:n})=>{let r=await runBackgroundStep(a,t,async t=>{a.setVirtualContext(HandleEventKey,C),a.setVirtualContext(StaticModelReferenceKey,c.turnAgent.model??null);let r=e&&T?.outputSchema!==void 0?{...t,outputSchema:T.outputSchema}:t,i=getHarnessEmissionState(r.state);if(await u.rehydrate(i,j,isHarnessBetweenTurns(r)?void 0:{sequence:i.sequence,turnId:activeTurnId(i)}),e&&d){let e=getHarnessEmissionState(r.state);if(d.some(({candidateId:e})=>e===void 0)&&isHarnessBetweenTurns(r)){let t=createTurnInputMessages(consumeDeferredStepInput({session:r,input:n}).input);prepareDynamicInstructionPreamble(a,h.messages(r)),prepareMemoryPreamble(a,{history:r.history,input:t,projector:h.projector,state:r.state});let i=[],o=await prepareWorkflowPreambleTrace({emissionState:e,instrumentation:g});try{e=await emitTurnPreamble(C,{},e,h.projector({messages:[...r.history,...t],state:r.state}),j,o)}finally{i=drainDynamicInstructionUserMessages(a);let e=drainMemoryCommit(a);r={...r,history:validateHarnessModelMessages([...e?.history??r.history,...i]),state:e?.state??r.state}}r=setHarnessEmissionState(r,e)}for(let{authorization:t,result:n,candidateId:r}of d)await C(createAuthorizationCompletedEvent({attemptId:n.attemptId,authorization:t,candidateId:r,name:n.name,outcome:`authorized`,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId}))}return runHarnessStep(r,n)});return r.settledTurn===void 0&&throwIfTurnAborted(x),P={result:r,serializedContext:serializeContext(a)},r}})}catch(t){if(!isTurnCancellation(t)&&!x.aborted)throw await failChannelDeliveries(t),t;let n=readRetainedBackgroundToolResult(a);return g?.rememberBackgroundTasks(n?.backgroundTasks??[]),createCancelledModelCallBatchResult({beforeBatchContext:e.serializedContext,checkpoint:P,ctx:a,initialSession:m,stepInput:T})}g?.rememberBackgroundTasks(F.backgroundTasks??[]);let I=reconcileSessionContinuationToken(a,F.session);agentTraceState.pruneAgentTraceState(a,I.sessionId,I.state);let L=serializeContext(a);F={...F,session:I};let R=resolveSessionStepResult(F,L,e.serializedContext,activeTurnId(_));return R.action===`done`&&await v.close(),R}finally{v.release()}}export{turnStep};
1
+ import{defaultDeliverResult}from"#channel/adapter.js";import{contextStorage}from"#context/container.js";import{AuthKey,CapabilitiesKey,ChannelDeliveryKey,HandleEventKey,InitiatorAuthKey,ParentSessionKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicToolRuntimeRevisionKey,SessionTitleKey,StaticModelReferenceKey,TurnDeliveryIdsKey}from"#context/keys.js";import{createAuthorizationCompletedEvent,createSessionStartedEvent,createTurnStartedEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{coalesceTurnInputs,createTurnInputMessages,validateHarnessModelMessages}from"#harness/messages.js";import{drainMemoryCommit,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{createWorkflowRuntime}from"#execution/workflow-runtime.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import*as agentTraceState from"#tracing/agent-trace-context-store.js";import{activeTurnId}from"#harness/active-turn-id.js";import{hydrateDurableSession,refreshSessionFromTurnAgent}from"#execution/session.js";import{resolveEffectiveAgentRuntime}from"#execution/effective-agent-config.js";import{refreshDynamicSessionSubagentsForRuntimeRevision}from"#context/dynamic-subagent-lifecycle.js";import{openSessionEventPublisher}from"#execution/publish-session-events.js";import{withSessionStateDelta}from"#execution/session/state-delta.js";import{derivePendingState}from"#execution/session/pending-turn-state.js";import{rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision}from"#context/dynamic-tool-lifecycle.js";import{runStep}from"#context/run-step.js";import{setChannelContext}from"#execution/channel-context.js";import{reconcileSessionContinuationToken}from"#execution/reconcile-session-continuation-token.js";import{bindSessionInstrumentation}from"#instrumentation/runtime.js";import{deriveSessionTitle}from"#execution/eve-workflow-attributes.js";import{CallbackBaseUrlKey,PendingAuthorizationResultKey,clearPendingAuthorization,getPendingAuthorization}from"#harness/authorization.js";import{drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{bindDynamicConnections}from"#execution/dynamic-connections.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{matchAuthorizationCallbacks}from"#execution/authorization-callback-match.js";import{consumeDeferredStepInput}from"#harness/pending-input-batches.js";import{resolveSessionStepResult}from"#execution/session/turn-step-result.js";import{createTurnEventHandler}from"#execution/session/turn-event-handler.js";import{authorizationEventFields}from"#harness/authorization-event-fields.js";import{countRunUsage}from"#execution/agent-sessions/usage.js";import{buildRuntimeIdentity,createExecutionNodeStep}from"#execution/node-step.js";import{prepareWorkflowPreambleTrace}from"#execution/workflow-trace-context.js";import{createExecutionHistoryView}from"#execution/history-view.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{runModelCallBatch}from"#execution/model-call-batching.js";import{createCancelledModelCallBatchResult}from"#execution/cancelled-model-call-batch.js";function channelDeliveryErrorCode(e){if(typeof e==`object`&&e&&`code`in e){let t=e.code;if(typeof t==`string`&&t.length>0)return t}return`CHANNEL_DELIVERY_FAILED`}async function turnStep(e){"use step";return await withSessionStateDelta(e,runSessionStep)}async function runSessionStep(e){let t=e.input?.delivery,n=t,r=e.input?.runtimeResults,i=readDurableSession(e.sessionState);for(let e of r?.delegatedUsage??[])i=countRunUsage(i,e);let a=await deserializeContext(e.serializedContext),o=a.require(ChannelKey),s=a.require(BundleKey),c=resolveEffectiveAgentRuntime(s,a);try{let{getWorkflowMetadata:e}=await import(`#compiled/@workflow/core/index.js`),t=e();typeof t.url==`string`&&a.set(CallbackBaseUrlKey,resolveWorkflowCallbackBaseUrl(t.url))}catch{}let l=getPendingAuthorization(i.state),u;if(l&&n!==void 0){let{matches:e,remainingPayloads:t}=matchAuthorizationCallbacks(l,n.payloads);if(n={...n,payloads:t},e.length>0){let r=e.map(e=>e.result.attemptId),o=e.map(e=>e.result);a.set(PendingAuthorizationResultKey,o),i={...i,state:clearPendingAuthorization(i.state,r)},u=e,t.length===0&&(n=void 0)}}let d=a.get(AuthKey);n?.auth!==void 0&&(a.set(AuthKey,n.auth??null),a.has(InitiatorAuthKey)||a.set(InitiatorAuthKey,n.auth??null));let f=hydrateDurableSession({compactionOverrides:{thresholdPercent:c.thresholdPercent},durable:i,turnAgent:c.turnAgent}),p=createExecutionHistoryView(f),m=bindSessionInstrumentation({agentName:c.turnAgent.id,ctx:a,rootSessionId:f.rootSessionId??f.sessionId,sessionId:f.sessionId}),h=getHarnessEmissionState(f.state);if(!h.sessionStarted&&!a.has(SessionTitleKey)&&!a.has(ParentSessionKey)){let e=t?.payloads.find(e=>e.message!==void 0)?.message,n=deriveSessionTitle(t?.title??e);n!==void 0&&(a.set(SessionTitleKey,n),await setEveAttributes({"$eve.title":n}))}t!==void 0&&(await contextStorage.run(a,()=>m?.preparePreamble({sequence:h.sequence,sessionStarted:h.sessionStarted})),await contextStorage.run(a,()=>m?.instrumentChannelDelivery({agentName:s.turnAgent.id,ctx:a,delivery:t,rootSessionId:f.rootSessionId??f.sessionId,sequence:h.sequence,sessionId:f.sessionId,turnId:activeTurnId(h)})));let failChannelDeliveries=async e=>{await contextStorage.run(a,()=>m?.instrumentChannelDelivery({ctx:a,error:e,errorCode:channelDeliveryErrorCode(e),includeTurn:!1,outcome:`failed`})),await m?.flush()},g=openSessionEventPublisher({ctx:a,origin:`own`,sessionWritable:e.sessionWritable}),{adapterCtx:_}=g.dispatcher,v=new AbortController,y=e.abortSignal===void 0?v.signal:AbortSignal.any([e.abortSignal,v.signal]);try{let i=bindDynamicConnections(a,s.resolvedAgent),l={...s.graph.root,turnAgent:c.turnAgent},b=createTurnEventHandler({abortSignal:y,bundle:s,canCancelTurn:e.input?.control===void 0,hookCancellation:v,ctx:a,dynamicConnections:i,effectiveAgent:c,effectiveNode:l,instrumentation:m,publisher:g}),x=n!==void 0&&!isHarnessBetweenTurns(f)?structuredClone(_.state):void 0,S;if(n!==void 0){let e=[];try{for(let t of n.payloads){let n=o.deliver?await o.deliver(t,_):defaultDeliverResult(t);n!=null&&e.push(n)}}catch(e){throw await failChannelDeliveries(e),e}S=e.length===0?void 0:e.reduce(coalesceTurnInputs)}if(n!==void 0&&S===void 0&&!isHarnessBetweenTurns(f))d===void 0?a.delete(AuthKey):a.set(AuthKey,d),_.state=x;else if(t?.payloads.some(e=>e.message!==void 0)){let e=t.deliveryMetadata?.map(e=>e.deliveryId)??[];a.set(TurnDeliveryIdsKey,h.turnId?[...new Set([...a.get(TurnDeliveryIdsKey)??[],...e])]:e)}else!h.sessionStarted&&a.get(ChannelDeliveryKey)!==void 0&&a.set(TurnDeliveryIdsKey,[a.require(ChannelDeliveryKey).deliveryId]);if(r!==void 0&&(r.acceptedAtMsByCallId!==void 0&&a.set(RuntimeActionSettlementTimesKey,r.acceptedAtMsByCallId),S={...S,runtimeActionResults:r.results}),t!==void 0){let e={...o,state:{..._.state}};setChannelContext(a,e)}if(n!==void 0&&S===void 0&&isHarnessBetweenTurns(f)){await contextStorage.run(a,()=>m?.instrumentChannelDelivery({ctx:a,includeTurn:!1,outcome:`completed`})),await m?.flush();let t=reconcileSessionContinuationToken(a,f),n=serializeContext(a),r=t===f?e.sessionState:createDurableSessionState({session:t});return{action:`park`,...derivePendingState(t),serializedContext:n,sessionState:r}}let C=s.subagentRegistry.dynamicResolvers??[],w=s.resolvedAgent.dynamicToolResolvers??[],T=buildRuntimeIdentity(l);try{let e=process.env.VERCEL_DEPLOYMENT_ID?.trim(),t=e?`deployment:${e}`:await resolveRuntimeCompiledArtifactsVersionedCacheKey(s.compiledArtifactsSource),n=h.sessionStarted;if(a.setVirtualContext(StaticModelReferenceKey,c.turnAgent.model??null),!n)a.set(SessionDynamicSubagentRuntimeRevisionKey,t),a.set(SessionDynamicToolRuntimeRevisionKey,t);else{let e=createSessionStartedEvent({runtime:T});await Promise.all([refreshDynamicSessionSubagentsForRuntimeRevision({ctx:a,resolvers:C,event:e,messages:p.initial.messages,runtimeRevision:t}),contextStorage.run(a,async()=>await refreshDynamicSessionToolsForRuntimeRevision({ctx:a,resolvers:w,event:e,messages:p.initial.messages,runtimeRevision:t}))]),isHarnessBetweenTurns(f)||await rebindMissingCompiledDynamicToolCallbacks({ctx:a,event:createTurnStartedEvent({sequence:h.sequence,turnId:activeTurnId(h)}),messages:p.initial.messages,resolvers:w})}}catch(e){throw await failChannelDeliveries(e),e}let E=s.resolvedAgent.config?.experimental?.workflow?.modelCallsPerStep??1,D=a.get(CapabilitiesKey),runHarnessStep=async(t,n)=>{let r=refreshSessionFromTurnAgent({compactionOverrides:{thresholdPercent:c.thresholdPercent},session:t,turnAgent:c.turnAgent});return createExecutionNodeStep({steeringSignal:e.steeringSignal,abortSignal:y,capabilities:D,clearOnly:e.input?.control===`clear`,compactOnly:e.input?.control===`compact`,createRuntime:createWorkflowRuntime,handleEvent:b,prepareApprovalTurn:e=>i.dispatch(createTurnStartedEvent(e)),historyProjector:p.projector,historyView:p.prepare(r),instrumentation:m,modelResolutionScope:{moduleMap:s.moduleMap,nodeId:s.nodeId},node:l})(r,n)},O,k;try{throwIfTurnAborted(y),k=await runModelCallBatch({steeringSignal:e.steeringSignal,initialInput:S,initialSession:f,modelCallsPerStep:E,runStep:async({firstCall:e,session:t,stepInput:n})=>{let r=await runStep(a,t,async t=>{a.setVirtualContext(HandleEventKey,b),a.setVirtualContext(StaticModelReferenceKey,c.turnAgent.model??null);let r=e&&S?.outputSchema!==void 0?{...t,outputSchema:S.outputSchema}:t,o=getHarnessEmissionState(r.state);if(await i.rehydrate(o,T,isHarnessBetweenTurns(r)?void 0:{sequence:o.sequence,turnId:activeTurnId(o)}),e&&u){let e=getHarnessEmissionState(r.state);if(u.some(({challenge:e})=>e.candidateId===void 0)&&isHarnessBetweenTurns(r)){let t=createTurnInputMessages(consumeDeferredStepInput({session:r,input:n}).input);prepareDynamicInstructionPreamble(a,p.messages(r)),prepareMemoryPreamble(a,{history:r.history,input:t,projector:p.projector,state:r.state});let i=[],o=await prepareWorkflowPreambleTrace({emissionState:e,instrumentation:m});try{e=await emitTurnPreamble(b,{},e,p.projector({messages:[...r.history,...t],state:r.state}),T,o)}finally{i=drainDynamicInstructionUserMessages(a);let e=drainMemoryCommit(a);r={...r,history:validateHarnessModelMessages([...r.history,...e?.recalledMessages??[],...i]),state:e?.state??r.state}}r=setHarnessEmissionState(r,e)}for(let{challenge:t}of u)await b(createAuthorizationCompletedEvent({...authorizationEventFields(t),outcome:`authorized`,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId}))}return runHarnessStep(r,n)});return r.settledTurn===void 0&&throwIfTurnAborted(y),O={result:r,serializedContext:serializeContext(a)},r}})}catch(t){if(!isTurnCancellation(t)&&!y.aborted)throw await failChannelDeliveries(t),t;return createCancelledModelCallBatchResult({beforeBatchContext:e.serializedContext,checkpoint:O,ctx:a,initialSession:f,stepInput:S})}let A=reconcileSessionContinuationToken(a,k.session);agentTraceState.pruneAgentTraceState(a,A.sessionId,A.state);let j=serializeContext(a);k={...k,session:A};let M=resolveSessionStepResult(k,j);return M.action===`done`&&await g.writer.close(),M}finally{g.writer.release()}}export{turnStep};
@@ -0,0 +1,4 @@
1
+ import { type SessionStepState } from "#execution/publish-session-events.js";
2
+ import { type SessionStateTransition } from "#execution/session/state-delta.js";
3
+ /** Publishes `turn.waiting` for the open turn the session workflow just parked. */
4
+ export declare function publishTurnWaitingStep(target: SessionStepState): Promise<SessionStateTransition>;
@@ -0,0 +1 @@
1
+ import{createTurnWaitingEvent}from"#protocol/message.js";import{publishSessionEvents}from"#execution/publish-session-events.js";import{withSessionStateDelta}from"#execution/session/state-delta.js";async function publishTurnWaitingStep(e){"use step";return await withSessionStateDelta(e,async e=>{let{sequence:t,turnId:n}=e.sessionState.emissionState;return await publishSessionEvents(e,[createTurnWaitingEvent({sequence:t,turnId:n})])})}export{publishTurnWaitingStep};
@@ -1,4 +1,4 @@
1
- import type { SessionCapabilities } from "#channel/types.js";
1
+ import type { SessionCapabilities, TurnCaller } from "#channel/types.js";
2
2
  import { type SessionInputQueue } from "#execution/session/input-queue.js";
3
3
  import type { SessionInboxReader } from "#execution/session-inbox/inbox.js";
4
4
  import type { SessionStateCursor } from "#execution/session/state-cursor.js";
@@ -23,9 +23,40 @@ export declare class SessionExecution {
23
23
  private readonly input;
24
24
  constructor(input: SessionExecutionInput);
25
25
  get cursor(): SessionStateCursor;
26
- runTurn(delivery: TurnStepPayload | undefined): Promise<TurnOutcome>;
26
+ runTurn(delivery: TurnStepPayload | undefined, options?: {
27
+ /**
28
+ * The delegated caller the turn answers. The session binds it before the
29
+ * turn, including for a first turn whose input carries no caller.
30
+ */
31
+ readonly caller?: TurnCaller;
32
+ }): Promise<TurnOutcome>;
33
+ /**
34
+ * Applies what runs reported while the model step ran, so the next step sees
35
+ * it. Consecutive `agent-started` messages, such as a fan-out's, share one step.
36
+ * An ending session drops them: its stream is closed, and finalizing the
37
+ * session terminates the children.
38
+ */
39
+ private handleBoundaryMessages;
27
40
  private runTurnSteps;
28
41
  handleWorkflowMessage(message: WorkflowToolRunMessage): Promise<RuntimeActionResult | undefined>;
42
+ /** `session.cancel()` stops the turn, the calls it waits on, and every working task. */
29
43
  private finishCancelledTurn;
44
+ /**
45
+ * The model tried to end the turn while its tasks work. The turn parks as
46
+ * `task_wait` would, until one of them settles or the turn is steered.
47
+ */
48
+ private waitForHeldTurn;
30
49
  private waitForRuntimeActionResults;
50
+ /** Answers every `task_wait` that can return now; returns the ones still waiting. */
51
+ private resolveTaskWaits;
52
+ /**
53
+ * `task_cancel` is answered at once, and so is each `task_wait` that can
54
+ * return now: a timeout of 0, a result already waiting, or nothing working.
55
+ * Any other `task_wait` parks the open turn, reported once as
56
+ * `turn.waiting`, and the turn resolves it alongside the step's other
57
+ * deferred calls.
58
+ */
59
+ private answerTaskToolCalls;
60
+ /** Aborts the `abortSignal` of every workflow tool call the wait has no result for yet. */
61
+ private interruptWaitedWorkflowCalls;
31
62
  }
@@ -1 +1 @@
1
- import{sessionCommandHookToken,sessionInboxHookToken}from"#execution/session-inbox/address.js";import{coalesceDeliveries}from"#harness/messages.js";import{getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{isInboxToolResultFromRecordedWorkflowToolRun}from"#harness/workflow-tool-runs.js";import{activeTurnId}from"#harness/active-turn-id.js";import{decodeSessionInboxPayload}from"#execution/session-inbox/protocol.js";import{isInboxSubagentResultFromRunningHandle}from"#subagents/handles/query.js";import{routeDeliverToChildren}from"#execution/route-child-delivery.js";import{routeSelectedDelivery}from"#execution/session/route-selected-delivery.js";import{admitSessionInboxPayload,applySessionCancellation}from"#execution/session/admission.js";import{cancelDescendantTurnsStep}from"#execution/cancel-descendant-turns-step.js";import{isSteeringDelivery}from"#execution/session/input-queue.js";import{TurnCancelledError}from"#harness/turn-cancellation.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{dispatchCoordinationStep}from"#execution/coordination-dispatch-step.js";import{acknowledgeDelegatedTasksStep}from"#execution/tasks/parent/delegate.js";import{handleWorkflowToolRunMessage}from"#execution/session-workflow-tool-run.js";import{turnStep}from"#execution/session/turn-step.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";function hasDelegatedCallerContext(e){if(e[`eve.sessionCallback`]!==void 0)return!0;let t=e[`eve.channel`];return typeof t==`object`&&!!t&&Reflect.get(t,`kind`)===`subagent`}var SessionExecution=class{input;constructor(e){this.input=e}get cursor(){return this.input.cursor}async runTurn(e){let t=new ActiveTurn(this.input,e?.delivery?.caller?.callId);try{return await this.runTurnSteps(t,e)}finally{t.dispose()}}async runTurnSteps(e,t){let n=t;for(;;){let{cursor:t}=this.input,r=t.serializedContext,i=await turnStep(t.createStepInput(n,{abortSignal:e.signal,steeringSignal:e.steeringSignal})),a=i.action===`park`?i.pendingCoordinationCallIds:void 0,o=(i.backgroundTasks?.length??0)>0,s=i.action===`park`&&i.settled!==void 0;if(o){if(i.backgroundTaskState===void 0)throw Error(`Background tasks were returned without their committed session state.`);await t.apply({serializedContext:i.backgroundTaskContext??r,sessionState:i.backgroundTaskState}),await acknowledgeDelegatedTasksStep({tasks:i.backgroundTasks??[]})}if(await t.apply({serializedContext:i.serializedContext,sessionState:i.action===`cancelled`||!s&&e.signal.aborted?i.backgroundTaskState??i.sessionState:i.sessionState}),await e.admitBoundary(),e.resetSteering(),i.action===`cancelled`||!s&&e.signal.aborted&&(a===void 0||o))return await this.finishCancelledTurn();if(i.action===`done`)return{isError:i.isError,kind:`done`,output:i.output??``,usage:i.usage,usageDelta:i.usageDelta};if(a!==void 0&&i.action===`park`){let r=await dispatchCoordinationStep({action:i.action,callbackBaseUrl:resolveWorkflowCallbackBaseUrl(getWorkflowMetadata().url),workflowToolRunOwner:{inbox:sessionInboxHookToken(sessionCommandHookToken(this.input.sessionId))},sessionWritable:t.sessionWritable,serializedContext:t.serializedContext,sessionState:t.sessionState}),o=r.results.length===0?void 0:Date.now();await t.apply(r);let s=await this.waitForRuntimeActionResults({initialAcceptedAtMs:o,initialResults:r.results,pendingCallIds:a,turn:e});if(s===`cancelled`)return await this.finishCancelledTurn();n={delivery:await e.takeSteering(),runtimeResults:s};continue}if(i.action===`park`){if(i.hasPendingInputBatch&&this.input.capabilities?.requestInput!==!0&&!hasDelegatedCallerContext(this.input.cursor.serializedContext))throw Error("This session cannot request human input, so it cannot wait for a tool approval or question. Sessions started without `capabilities.requestInput`, such as schedules, must not use approval-gated tools.");return{authorizationAttemptIds:i.authorizationAttemptIds,kind:`park`,settled:i.settled}}let c=await e.takeSteering();n=c===void 0?void 0:{delivery:c}}}async handleWorkflowMessage(e){return await handleWorkflowToolRunMessage({callbackMetadataUrl:getWorkflowMetadata().url,cursor:this.input.cursor,message:e})}async finishCancelledTurn(){let{cursor:e}=this.input;return await cancelDescendantTurnsStep({serializedContext:e.serializedContext,sessionState:e.sessionState}),{cancelled:!0,kind:`park`}}async waitForRuntimeActionResults(e){let t=[...e.initialResults],n=new Map;if(e.initialAcceptedAtMs!==void 0)for(let r of t)n.set(r.callId,e.initialAcceptedAtMs);for(;;){let r=resolveRuntimeActionResultsForCallIds({pendingCallIds:e.pendingCallIds,results:t});if(r!==void 0)return{acceptedAtMsByCallId:Object.fromEntries(r.map(e=>[e.callId,n.get(e.callId)])),results:r};let i=await e.turn.nextRuntimeEvent();if(i===`cancelled`)return i;if(i.kind===`runtime-action-result`){let e=this.input.cursor.sessionState.snapshot.session.state,r=i.results.filter(t=>t.kind===`tool-result`?isInboxToolResultFromRecordedWorkflowToolRun(e,t):t.kind===`subagent-result`&&t.origin===`child`&&isInboxSubagentResultFromRunningHandle(e,t));if(r.length>0){let e=Date.now();t.push(...r);for(let t of r)n.set(t.callId,e)}continue}let a=await this.handleWorkflowMessage(i.message);a!==void 0&&(t.push(a),n.set(a.callId,Date.now()))}}},ActiveTurn=class{admitted=new Set;routedToChildren=new Set;runtimeResults=[];controller=new AbortController;expectedTurnId;input;callerCallId;unsubscribe;unsubscribeDelivery;steeringController=new AbortController;constructor(e,t){this.input=e,this.callerCallId=t,this.expectedTurnId=activeTurnId(e.cursor.sessionState.emissionState),this.unsubscribe=e.inbox.onInterrupt(e=>{this.cancelsThisTurn(e)&&this.abort()}),this.unsubscribeDelivery=e.inbox.onDelivery(this.signalSteering)}signalSteering=e=>{let t;try{t=decodeSessionInboxPayload(e)}catch{return}t.kind===`deliver`&&isSteeringDelivery(t,this.callerCallId)&&!this.input.cursor.sessionState.hasProxyInputRequests&&t.payloads.some(e=>e.message!==void 0&&e.inputResponses===void 0&&e.task===void 0)&&this.steeringController.abort()};get signal(){return this.controller.signal}dispose(){this.unsubscribe(),this.unsubscribeDelivery()}get steeringSignal(){return this.steeringController.signal}resetSteering(){this.steeringController.signal.aborted&&(this.unsubscribeDelivery(),this.steeringController=new AbortController,this.unsubscribeDelivery=this.input.inbox.onDelivery(this.signalSteering))}async admitBoundary(){let e=this.input.inbox.drain();for(let t of e)await this.admit(t)}async takeSteering(){let e=[];for(;;){let t=this.input.queue.takeSteering(this.admitted,this.callerCallId);if(t===void 0)break;for(let e of t.sequences)this.admitted.delete(e);let n=await routeSelectedDelivery(t,this.input.cursor);if(n.kind===`cancel-turn`){this.abort();break}n.kind===`turn`&&e.push(n.delivery)}if(e.length!==0)return e.length===1?e[0]:coalesceDeliveries(e)}async nextRuntimeEvent(){for(;;){if(this.signal.aborted)return`cancelled`;let e=this.runtimeResults.shift();if(e!==void 0)return e;let t=await this.input.inbox.next();if(t===void 0)throw Error(`Session inbox closed before runtime actions completed.`);await this.admit(t),await this.routeAdmittedToChildren()}}cancelsThisTurn(e){return e.kind===`reset`?!0:e.kind===`cancel`?e.turnId===void 0||e.turnId===this.expectedTurnId:!1}async admit(e){let t=await admitSessionInboxPayload(e,this.input);switch(t.kind){case`delivery`:this.admitted.add(t.admission.sequence);return;case`runtime-action-result`:this.runtimeResults.push({kind:`runtime-action-result`,results:t.payload.results});return;case`workflow`:this.runtimeResults.push({kind:`workflow`,message:t.message});return;case`cancel`:if(!this.cancelsThisTurn(e))return;await applySessionCancellation(t.command,this.input),this.abort();return;case`consumed`:return}}async routeAdmittedToChildren(){for(let e of this.admitted){if(this.routedToChildren.has(e))continue;let t=this.input.queue.delivery(e);if(t===void 0){this.admitted.delete(e);continue}this.routedToChildren.add(e);let n=await routeDeliverToChildren({delivery:t,sessionWritable:this.input.cursor.sessionWritable,serializedContext:this.input.cursor.serializedContext,sessionState:this.input.cursor.sessionState});if(await this.input.cursor.apply(n),n.kind===`cancel-turn`){this.input.queue.replaceDelivery(e,void 0),this.admitted.delete(e),this.abort();return}this.input.queue.replaceDelivery(e,n.remainder),n.remainder===void 0&&this.admitted.delete(e)}}abort(){this.controller.signal.aborted||this.controller.abort(new TurnCancelledError)}};export{SessionExecution,hasDelegatedCallerContext};
1
+ import{sessionCommandHookToken,sessionInboxHookToken}from"#execution/session-inbox/address.js";import{TASK_WAIT_TOOL_NAME}from"#protocol/task-tools.js";import{coalesceDeliveries}from"#harness/messages.js";import{renderTaskWaitResult}from"#execution/tasks/render.js";import{taskWaitResult}from"#execution/tasks/table.js";import{sleep}from"#compiled/@workflow/core/index.js";import{findBlockingWorkflowToolRun,isInboxToolResultFromRecordedWorkflowToolRun}from"#harness/workflow-tool-runs.js";import{activeTurnId}from"#harness/active-turn-id.js";import{decodeSessionInboxPayload}from"#execution/session-inbox/protocol.js";import{resolveTurnPrincipal}from"#execution/session/principal.js";import{routeSelectedDelivery}from"#execution/session/route-selected-delivery.js";import{admitSessionInboxPayload}from"#execution/session/admission.js";import{taskToolResult}from"#execution/tasks/calls.js";import{cancelDescendantTurnsStep}from"#execution/cancel-descendant-turns-step.js";import{isSteeringMessage}from"#execution/session/input-queue.js";import{answerTaskCancel,cancelWorkingTasks,isTaskRunMessage,sessionTaskTable}from"#execution/tasks/session.js";import{routeDeliverToChildren}from"#execution/route-child-delivery.js";import{TurnCancelledError}from"#harness/turn-cancellation.js";import{dispatchCoordinationStep}from"#execution/coordination-dispatch-step.js";import{applyTaskRunMessageStep}from"#execution/tasks/steps.js";import{publishTurnWaitingStep}from"#execution/session/turn-waiting-step.js";import{batchAgentStarts,handleWorkflowToolRunMessage}from"#execution/session-workflow-tool-run.js";import{emitAgentStartedStep}from"#execution/tools/workflow/emit-workflow-tool-run-report-step.js";import{interruptWorkflowToolRun}from"#execution/tools/workflow/interrupt.js";import{turnStep}from"#execution/session/turn-step.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";function hasDelegatedCallerContext(e){if(e[`eve.sessionCallback`]!==void 0)return!0;let t=e[`eve.channel`];return typeof t==`object`&&!!t&&Reflect.get(t,`kind`)===`subagent`}var SessionExecution=class{input;constructor(e){this.input=e}get cursor(){return this.input.cursor}async runTurn(e,t={}){let n=new ActiveTurn(this.input,{caller:t.caller,principal:resolveTurnPrincipal(e,this.input.cursor.serializedContext)});try{let t=await this.runTurnSteps(n,e);return await this.handleBoundaryMessages(n.takeBoundaryMessages(),t.kind===`done`),t.kind===`park`&&t.settled!==void 0&&await cancelWorkingTasks(this.input.cursor,`turn_ended`),n.caller===void 0?t:{...t,caller:n.caller}}finally{n.dispose()}}async handleBoundaryMessages(e,t=!1){for(let n of batchAgentStarts(e))n.kind===`message`?await this.handleWorkflowMessage(n.message):t||await this.input.cursor.advance(e=>emitAgentStartedStep({...e,messages:n.messages}))}async runTurnSteps(e,t){let n=t;for(;;){let{cursor:t}=this.input,r=await t.advance(t=>turnStep({...t,abortSignal:e.signal,input:n,steeringSignal:e.steeringSignal})),i=r.action===`park`?r.pendingCoordinationCallIds:void 0,a=r.action===`park`&&r.settled!==void 0;if(await e.admitBoundary(),await this.handleBoundaryMessages(e.takeBoundaryMessages(),r.action===`done`),r.action===`cancelled`||!a&&e.signal.aborted&&i===void 0)return await this.finishCancelledTurn(e);if(r.action===`done`)return{isError:r.isError,kind:`done`,output:r.output??``,usage:r.usage,usageDelta:r.usageDelta};if(r.action===`held`){if(await this.waitForHeldTurn(e)===`cancelled`)return await this.finishCancelledTurn(e);let t=await e.takeSteering();n=t===void 0?void 0:{delivery:t};continue}if(i!==void 0&&r.action===`park`){let a=await t.advance(e=>dispatchCoordinationStep({action:r.action,workflowToolRunOwner:{inbox:sessionInboxHookToken(sessionCommandHookToken(this.input.sessionId))},...e})),o=a.results.length===0?void 0:Date.now(),s=await this.waitForRuntimeActionResults({initialAcceptedAtMs:o,initialResults:a.results,taskToolCalls:r.pendingTaskToolCalls??[],pendingCallIds:i,turn:e});if(s===`cancelled`)return await this.finishCancelledTurn(e);n={delivery:await e.takeSteering(),runtimeResults:s};continue}if(r.action===`park`){if(r.hasPendingInputBatch&&this.input.capabilities?.requestInput!==!0&&!hasDelegatedCallerContext(this.input.cursor.serializedContext))throw Error("This session cannot request human input, so it cannot wait for a tool approval or question. Sessions started without `capabilities.requestInput`, such as schedules, must not use approval-gated tools.");return{authorizationAttemptIds:r.authorizationAttemptIds,kind:`park`,settled:r.settled}}let o=await e.takeSteering();n=o===void 0?void 0:{delivery:o}}}async handleWorkflowMessage(e){if(isTaskRunMessage(e)){await this.input.cursor.advance(t=>applyTaskRunMessageStep({...t,message:e}));return}return await handleWorkflowToolRunMessage({cursor:this.input.cursor,message:e})}async finishCancelledTurn(e){let{cursor:t}=this.input;return await this.handleBoundaryMessages(e.takeBoundaryMessages(`agent-started`)),await cancelDescendantTurnsStep({sessionState:t.sessionState}),await cancelWorkingTasks(t,`turn_cancelled`),{cancelled:!0,kind:`park`}}async waitForHeldTurn(e){let t=!1;for(;;){let n={interrupted:t,timedOut:!1};if(taskWaitResult(sessionTaskTable(this.input.cursor),n)!==void 0)return`woke`;let r=await e.nextRuntimeEvent([]);if(r===`cancelled`)return r;switch(r.kind){case`steering`:t=!0;continue;case`workflow`:await this.handleWorkflowMessage(r.message);continue;case`runtime-action-result`:case`timeout`:continue}}}async waitForRuntimeActionResults(e){let t=[...e.initialResults],n=!1,r=new Map,i=new Map;if(e.initialAcceptedAtMs!==void 0)for(let n of t)r.set(n.callId,e.initialAcceptedAtMs);let accept=e=>{t.push(e),r.set(e.callId,Date.now())},a=await this.answerTaskToolCalls(e.taskToolCalls,accept);for(;;){a=this.resolveTaskWaits(a,n,accept);let o=resolveRuntimeActionResultsForCallIds({pendingCallIds:e.pendingCallIds,results:t});if(o!==void 0){let e=o.flatMap(e=>{let t=i.get(e.callId);return t===void 0?[]:[t]});return{acceptedAtMsByCallId:Object.fromEntries(o.map(e=>[e.callId,r.get(e.callId)])),...e.length>0&&{delegatedUsage:e},results:o}}let s=a.flatMap(e=>e.timer===void 0?[]:[e.timer]),c=await e.turn.nextRuntimeEvent(s);if(c===`cancelled`)return c;if(c.kind===`timeout`){for(let e of a)e.callId===c.callId&&(e.timedOut=!0);continue}if(c.kind===`steering`){n||await this.interruptWaitedWorkflowCalls(e.pendingCallIds,t),n=!0;continue}if(c.kind===`runtime-action-result`){let e=this.input.cursor.sessionState.snapshot.session.state,n=c.results.filter(t=>t.kind===`tool-result`&&isInboxToolResultFromRecordedWorkflowToolRun(e,t));if(n.length>0){let e=Date.now();t.push(...n);for(let t of n)r.set(t.callId,e)}continue}let l=await this.handleWorkflowMessage(c.message);l!==void 0&&(accept(l),c.message.kind===`outcome`&&c.message.usage!==void 0&&i.set(l.callId,c.message.usage))}}resolveTaskWaits(e,t,n){let r=sessionTaskTable(this.input.cursor),i=[];for(let a of e){let e=taskWaitResult(r,{interrupted:t,timedOut:a.timedOut});if(e===void 0){i.push(a);continue}let o=renderTaskWaitResult(e,Date.now()-a.startedAtMs);n(taskToolResult(a.callId,TASK_WAIT_TOOL_NAME,o))}return i}async answerTaskToolCalls(e,t){let n=[];for(let r of e)r.kind===`task_wait`?n.push(startTaskWait(r)):t(await answerTaskCancel(this.input.cursor,r));let r=this.resolveTaskWaits(n,!1,t);return r.length>0&&await this.input.cursor.advance(publishTurnWaitingStep),r}async interruptWaitedWorkflowCalls(e,t){let n=this.input.cursor.sessionState.snapshot.session.state,r=new Set(t.map(e=>e.callId)),i=e.filter(e=>!r.has(e)).flatMap(e=>{let t=findBlockingWorkflowToolRun(n,e);return t===void 0?[]:[t.address]});await Promise.all(i.map(e=>interruptWorkflowToolRun(e)))}};function startTaskWait(e){let{callId:t,timeoutMs:n}=e,r=n===void 0?void 0:sleep(n).then(()=>t);return{callId:t,startedAtMs:Date.now(),timedOut:!1,timer:r}}var ActiveTurn=class{admitted=new Set;routedToChildren=new Set;runtimeResults=[];controller=new AbortController;expectedTurnId;input;identity;unsubscribe;unsubscribeDelivery;steeringController=new AbortController;caller;constructor(e,t){this.input=e,this.caller=t.caller,this.identity={callerCallId:t.caller?.callId,principal:t.principal},this.expectedTurnId=activeTurnId(e.cursor.sessionState.emissionState),this.unsubscribe=e.inbox.onInterrupt(e=>{this.cancelsThisTurn(e)&&this.abort()}),this.unsubscribeDelivery=e.inbox.onDelivery(this.signalSteering)}signalSteering=e=>{let t;try{t=decodeSessionInboxPayload(e)}catch{return}t.kind===`deliver`&&isSteeringMessage(t,this.identity)&&!this.input.cursor.sessionState.hasProxyInputRequests&&this.steeringController.abort()};get signal(){return this.controller.signal}dispose(){this.unsubscribe(),this.unsubscribeDelivery()}get steeringSignal(){return this.steeringController.signal}resetSteering(){this.steeringController.signal.aborted&&(this.unsubscribeDelivery(),this.steeringController=new AbortController,this.unsubscribeDelivery=this.input.inbox.onDelivery(this.signalSteering))}async admitBoundary(){let e=this.input.inbox.drain();for(let t of e)await this.admit(t)}async takeSteering(){let e=[];for(;;){let t=this.input.queue.takeSteering(this.admitted,this.identity);if(t===void 0)break;for(let e of t.sequences)this.admitted.delete(e);let n=await routeSelectedDelivery(t,this.input.cursor);if(n.kind===`cancel-turn`){this.abort();break}n.kind===`turn`&&e.push(n.delivery)}if(this.resetSteering(),e.length===0)return;let t=e.length===1?e[0]:coalesceDeliveries(e);return t.caller!==void 0&&(this.caller=t.caller),t}takeBoundaryMessages(e){let t=[],n=[];for(let r of this.runtimeResults){let i=asBoundaryMessage(r);i===void 0||e!==void 0&&i.kind!==e?n.push(r):t.push(i)}return this.runtimeResults.splice(0,this.runtimeResults.length,...n),t}async nextRuntimeEvent(e){for(;;){let t=await this.routeAdmittedToChildren();if(this.signal.aborted)return`cancelled`;if(t)return{kind:`steering`};let n=this.runtimeResults.shift();if(n!==void 0)return n;let r=await this.waitForInboxOrTimer(e);if(r!==void 0)return{callId:r,kind:`timeout`};let i=await this.input.inbox.next();if(i===void 0)throw Error(`Session inbox closed before runtime actions completed.`);await this.admit(i)}}async waitForInboxOrTimer(e){if(e.length===0||this.input.inbox.hasPending())return;let t=this.input.inbox.whenPending().then(()=>void 0);return await Promise.race([t,...e])}cancelsThisTurn(e){return e.kind===`reset`?!0:e.kind===`cancel`?e.turnId===void 0||e.turnId===this.expectedTurnId:!1}async admit(e){let t=await admitSessionInboxPayload(e,this.input);switch(t.kind){case`delivery`:this.admitted.add(t.admission.sequence);return;case`runtime-action-result`:this.runtimeResults.push({kind:`runtime-action-result`,results:t.payload.results});return;case`workflow`:this.runtimeResults.push({kind:`workflow`,message:t.message});return;case`cancel`:this.cancelsThisTurn(e)&&this.abort();return;case`consumed`:return}}async routeAdmittedToChildren(){let e=!1;for(let t of this.admitted){if(this.routedToChildren.has(t))continue;let n=this.input.queue.delivery(t);if(n===void 0){this.admitted.delete(t);continue}this.routedToChildren.add(t);let r=await this.input.cursor.advance(e=>routeDeliverToChildren({delivery:n,...e}));if(r.kind===`cancel-turn`)return this.input.queue.replaceDelivery(t,void 0),this.admitted.delete(t),this.abort(),!1;if(this.input.queue.replaceDelivery(t,r.remainder),r.remainder===void 0){this.admitted.delete(t);continue}isSteeringMessage(r.remainder,this.identity)&&(e=!0)}return e}abort(){this.controller.signal.aborted||this.controller.abort(new TurnCancelledError)}};function asBoundaryMessage(e){if(e!==`cancelled`&&e.kind===`workflow`&&(e.message.from.taskId!==void 0||e.message.kind===`agent-started`))return e.message}export{SessionExecution,hasDelegatedCallerContext};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{isObject}from"#shared/guards.js";const log=createLogger(`execution.session-callback`),VERCEL_CALLBACK_HOST_ENVS=[`VERCEL_URL`,`VERCEL_BRANCH_URL`,`VERCEL_PROJECT_PRODUCTION_URL`],VERCEL_REQUEST_CONTEXT=Symbol.for(`@vercel/request-context`);async function postSessionCallbackRequest(e){let t=e.timeoutMs??3e4,n=AbortSignal.timeout(t),r;try{r=await fetch(e.url,{body:JSON.stringify(e.body),headers:await resolveSessionCallbackHeaders(e.url),method:`POST`,redirect:`error`,signal:n})}catch(r){throw e.logFailures!==!1&&log.error(`callback delivery failed`,{...callbackLogFields(e),failure:n.aborted?`timeout`:`transport`,timeoutMs:t,error:Error(`Callback request failed before receiving a response.`)}),r}return!r.ok&&e.logFailures!==!1&&log.error(`callback delivery failed`,{...callbackLogFields(e),failure:`http`,statusCode:r.status,error:Error(`Callback request failed with HTTP ${r.status}.`)}),r}function callbackLogFields(e){let t=URL.parse(e.url),n=t?.pathname.match(/^(.*?\/(?:callback|activity))\//)?.[1],r={callbackOrigin:t?.origin,callbackPath:n===void 0?`[redacted]`:`${n}/[redacted]`};if(isObject(e.body)){for(let t of[`kind`,`callId`,`taskId`,`sessionId`,`childSessionId`,`subagentName`,`updateEpoch`])typeof e.body[t]==`string`&&(r[t]=e.body[t]);typeof e.body.updateIndex==`number`&&(r.updateIndex=e.body.updateIndex)}return r}async function resolveSessionCallbackHeaders(e){let t={"content-type":`application/json`};if(process.env.VERCEL!==`1`)return t;let n;try{n=new URL(e)}catch{return t}let r=VERCEL_CALLBACK_HOST_ENVS.some(e=>process.env[e]?.trim().toLowerCase()===n.hostname.toLowerCase());if(n.protocol!==`https:`||!r)return t;let i=readAmbientVercelOidcToken();return i!==void 0&&(t[`x-vercel-trusted-oidc-idp-token`]=i),t}function readAmbientVercelOidcToken(){let e=(globalThis[VERCEL_REQUEST_CONTEXT]?.get?.().headers?.[`x-vercel-oidc-token`]??process.env.VERCEL_OIDC_TOKEN)?.trim();return e===``?void 0:e}export{postSessionCallbackRequest};
1
+ import{createLogger}from"#internal/logging.js";import{isObject}from"#shared/guards.js";const log=createLogger(`execution.session-callback`),VERCEL_CALLBACK_HOST_ENVS=[`VERCEL_URL`,`VERCEL_BRANCH_URL`,`VERCEL_PROJECT_PRODUCTION_URL`],VERCEL_REQUEST_CONTEXT=Symbol.for(`@vercel/request-context`);async function postSessionCallbackRequest(e){let t=e.timeoutMs??3e4,n=AbortSignal.timeout(t),r;try{r=await fetch(e.url,{body:JSON.stringify(e.body),headers:await resolveSessionCallbackHeaders(e.url),method:`POST`,redirect:`error`,signal:n})}catch(r){throw e.logFailures!==!1&&log.error(`callback delivery failed`,{...callbackLogFields(e),failure:n.aborted?`timeout`:`transport`,timeoutMs:t,error:Error(`Callback request failed before receiving a response.`)}),r}return!r.ok&&e.logFailures!==!1&&log.error(`callback delivery failed`,{...callbackLogFields(e),failure:`http`,statusCode:r.status,error:Error(`Callback request failed with HTTP ${r.status}.`)}),r}function callbackLogFields(e){let t=URL.parse(e.url),n=t?.pathname.match(/^(.*?\/(?:callback|activity))\//)?.[1],r={callbackOrigin:t?.origin,callbackPath:n===void 0?`[redacted]`:`${n}/[redacted]`};if(isObject(e.body)){for(let t of[`kind`,`callId`,`sessionId`,`childSessionId`,`subagentName`,`updateEpoch`])typeof e.body[t]==`string`&&(r[t]=e.body[t]);typeof e.body.updateIndex==`number`&&(r.updateIndex=e.body.updateIndex)}return r}async function resolveSessionCallbackHeaders(e){let t={"content-type":`application/json`};if(process.env.VERCEL!==`1`)return t;let n;try{n=new URL(e)}catch{return t}let r=VERCEL_CALLBACK_HOST_ENVS.some(e=>process.env[e]?.trim().toLowerCase()===n.hostname.toLowerCase());if(n.protocol!==`https:`||!r)return t;let i=readAmbientVercelOidcToken();return i!==void 0&&(t[`x-vercel-trusted-oidc-idp-token`]=i),t}function readAmbientVercelOidcToken(){let e=(globalThis[VERCEL_REQUEST_CONTEXT]?.get?.().headers?.[`x-vercel-oidc-token`]??process.env.VERCEL_OIDC_TOKEN)?.trim();return e===``?void 0:e}export{postSessionCallbackRequest};
@@ -0,0 +1,33 @@
1
+ import type { MessageStreamEvent } from "#protocol/message.js";
2
+ /** Options for {@link streamSessionEvents}. */
3
+ export interface SessionEventStreamOptions {
4
+ /**
5
+ * Zero-based index of the first event to read. Negative values count back
6
+ * from the durable tail (`-1` is the latest event). Defaults to `0`.
7
+ */
8
+ readonly startIndex?: number;
9
+ /**
10
+ * Whether to keep following events recorded after the read opens. When
11
+ * `false`, the read ends at the durable tail observed when it opens.
12
+ * Defaults to `true`.
13
+ */
14
+ readonly follow?: boolean;
15
+ /** Stops the read and releases the underlying stream reader. */
16
+ readonly signal?: AbortSignal;
17
+ }
18
+ /**
19
+ * Reads one session's durable event stream. Negative `startIndex` values count
20
+ * back from the tail.
21
+ */
22
+ export declare function readSessionEventStream(sessionId: string, startIndex?: number): ReadableStream<MessageStreamEvent>;
23
+ /** Returns the index of the last durably recorded event, or `-1` before the first. */
24
+ export declare function readSessionStreamTailIndex(sessionId: string): Promise<number>;
25
+ /**
26
+ * Iterates one session's durable events in process, without the HTTP stream
27
+ * route.
28
+ *
29
+ * A bounded read counts events up from `startIndex` to find the tail. That
30
+ * holds because the writer persists exactly one chunk per event (see
31
+ * `createOrderedStreamEmitter`).
32
+ */
33
+ export declare function streamSessionEvents(sessionId: string, options?: SessionEventStreamOptions): AsyncGenerator<MessageStreamEvent, void, undefined>;
@@ -0,0 +1 @@
1
+ import{normalizePersistedMessageStreamEvent}from"#protocol/message-version.js";import{getRun}from"#internal/workflow/runtime.js";import{parseNdjsonStream}from"#execution/ndjson-stream.js";function readSessionEventStream(e,t){return parseNdjsonStream(()=>getRun(e).getReadable({startIndex:t}),normalizePersistedEvent)}async function readSessionStreamTailIndex(e){let t=getRun(e).getReadable();try{return await t.getTailIndex()}finally{await t.cancel().catch(()=>{})}}async function*streamSessionEvents(e,t={}){let{follow:n=!0,signal:r}=t,i=t.startIndex??0;if(r?.aborted)return;let a,o=i;if((!n||i<0)&&(a=await readSessionStreamTailIndex(e),i<0&&(o=Math.max(0,a+1+i))),!n&&a!==void 0&&o>a)return;let s=readSessionEventStream(e,o).getReader(),cancel=()=>void s.cancel(r?.reason).catch(()=>{});r?.addEventListener(`abort`,cancel,{once:!0});try{let e=o;for(;!r?.aborted;){let{done:t,value:r}=await s.read();if(t||(yield r,!n&&a!==void 0&&e>=a))return;e+=1}}finally{r?.removeEventListener(`abort`,cancel),await s.cancel().catch(()=>{}),s.releaseLock()}}function normalizePersistedEvent(e){return normalizePersistedMessageStreamEvent(e)}export{readSessionEventStream,readSessionStreamTailIndex,streamSessionEvents};
@@ -17,6 +17,8 @@ export interface SessionInboxReader {
17
17
  /** Removes every payload accepted so far, in arrival order. */
18
18
  drain(): SessionInboxPayload[];
19
19
  hasPending(): boolean;
20
+ /** Resolves once a payload is ready or the inbox closes, without consuming anything. */
21
+ whenPending(): Promise<void>;
20
22
  /**
21
23
  * Called from the pump the moment an interrupt (`cancel`, `reset`,
22
24
  * `session-timeout`) is accepted, ahead of any consumer read. Handlers must
@@ -1 +1 @@
1
- import{sessionInboxHookToken}from"#execution/session-inbox/address.js";import{createHook,getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{claimHookOwnership,disposeHook}from"#execution/hook-ownership.js";import{releaseSessionHooksStep}from"#execution/session-inbox/release-step.js";function isInterrupt(e){return e.kind===`cancel`||e.kind===`reset`||e.kind===`session-timeout`}function createSessionInbox(e){let t=[],n=[],r=new Set,i=new Set,a=new Set,o,notify=()=>{for(let e of r)e();r.clear()},wait=()=>new Promise(e=>r.add(e)),closed=()=>t.every(e=>e.closed||e.stopping),pump=async e=>{let t=e.hook[Symbol.asyncIterator]();try{for(;!e.stopping;){let e=await t.next();if(e.done)break;if(n.push(e.value),e.value.kind===`send`||e.value.kind===`deliver`)for(let t of a)t(e.value);if(isInterrupt(e.value))for(let t of i)t(e.value);notify()}}catch(t){e.stopping||(o={error:t})}finally{e.closed=!0,notify()}},stop=async()=>{let e=t.splice(0);for(let t of e)t.stopping=!0;notify(),await Promise.all(e.map(({hook:e})=>disposeHook(e)));let r=n.splice(0);return notify(),r},claimSessionHook=async n=>{if(!n)throw Error(`A session alias requires a nonempty continuation token.`);let r=t.find(e=>e.token===n);if(r!==void 0)return await r.registered;if(t.length>=256)throw Error(`A session may claim at most 256 addresses.`);let i={token:n,hook:createHook({token:sessionInboxHookToken(n),metadata:{sessionId:e}}),stopping:!1,closed:!1};t.push(i);try{i.registered=claimHookOwnership(i.hook),await i.registered,pump(i)}catch(e){throw t.splice(t.indexOf(i),1),e}};return{get claimedTokens(){return t.map(({token:e})=>e)},claimSessionHook,async claimSessionHooks(e){let t=await Promise.allSettled([...new Set(e)].map(claimSessionHook));for(let e of t)if(e.status===`rejected`)throw e.reason},async next(){for(;;){if(o!==void 0)throw o.error;if(n.length>0)return n.shift();if(closed())return;await wait()}},drain(){if(o!==void 0)throw o.error;return n.splice(0)},hasPending(){if(o!==void 0)throw o.error;return n.length>0},onInterrupt(e){return i.add(e),()=>i.delete(e)},onDelivery(e){a.add(e);for(let t of n)(t.kind===`send`||t.kind===`deliver`)&&e(t);return()=>a.delete(e)},restore(e){if(t.length===0)throw Error(`Cannot restore session commands before reclaiming the session hooks.`);n.unshift(...e),notify()},async dispose(){await stop()},async release(){return t.length>0&&await releaseSessionHooksStep({ownerRunId:getWorkflowMetadata().workflowRunId,tokens:t.map(({hook:e})=>e.token)}),await stop()}}}function isWorkflowMessage(e){return e.kind===`report`||e.kind===`request`||e.kind===`outcome`}export{createSessionInbox,isInterrupt,isWorkflowMessage};
1
+ import{sessionInboxHookToken}from"#execution/session-inbox/address.js";import{createHook,getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{claimHookOwnership,disposeHook}from"#execution/hook-ownership.js";import{releaseSessionHooksStep}from"#execution/session-inbox/release-step.js";function isInterrupt(e){return e.kind===`cancel`||e.kind===`reset`||e.kind===`session-timeout`}function createSessionInbox(e){let t=[],n=[],r=new Set,i=new Set,a=new Set,o,notify=()=>{for(let e of r)e();r.clear()},wait=()=>new Promise(e=>r.add(e)),closed=()=>t.every(e=>e.closed||e.stopping),pump=async e=>{let t=e.hook[Symbol.asyncIterator]();try{for(;!e.stopping;){let e=await t.next();if(e.done)break;if(n.push(e.value),e.value.kind===`send`||e.value.kind===`deliver`)for(let t of a)t(e.value);if(isInterrupt(e.value))for(let t of i)t(e.value);notify()}}catch(t){e.stopping||(o={error:t})}finally{e.closed=!0,notify()}},stop=async()=>{let e=t.splice(0);for(let t of e)t.stopping=!0;notify(),await Promise.all(e.map(({hook:e})=>disposeHook(e)));let r=n.splice(0);return notify(),r},claimSessionHook=async n=>{if(!n)throw Error(`A session alias requires a nonempty continuation token.`);let r=t.find(e=>e.token===n);if(r!==void 0)return await r.registered;if(t.length>=256)throw Error(`A session may claim at most 256 addresses.`);let i={token:n,hook:createHook({token:sessionInboxHookToken(n),metadata:{sessionId:e}}),stopping:!1,closed:!1};t.push(i);try{i.registered=claimHookOwnership(i.hook),await i.registered,pump(i)}catch(e){throw t.splice(t.indexOf(i),1),e}};return{get claimedTokens(){return t.map(({token:e})=>e)},claimSessionHook,async claimSessionHooks(e){let t=await Promise.allSettled([...new Set(e)].map(claimSessionHook));for(let e of t)if(e.status===`rejected`)throw e.reason},async next(){for(;;){if(o!==void 0)throw o.error;if(n.length>0)return n.shift();if(closed())return;await wait()}},drain(){if(o!==void 0)throw o.error;return n.splice(0)},hasPending(){if(o!==void 0)throw o.error;return n.length>0},async whenPending(){for(;o===void 0&&n.length===0&&!closed();)await wait()},onInterrupt(e){return i.add(e),()=>i.delete(e)},onDelivery(e){a.add(e);for(let t of n)(t.kind===`send`||t.kind===`deliver`)&&e(t);return()=>a.delete(e)},restore(e){if(t.length===0)throw Error(`Cannot restore session commands before reclaiming the session hooks.`);n.unshift(...e),notify()},async dispose(){await stop()},async release(){return t.length>0&&await releaseSessionHooksStep({ownerRunId:getWorkflowMetadata().workflowRunId,tokens:t.map(({hook:e})=>e.token)}),await stop()}}}function isWorkflowMessage(e){return e.kind===`agent-started`||e.kind===`started`||e.kind===`report`||e.kind===`reply`||e.kind===`request`||e.kind===`withdraw`||e.kind===`usage`||e.kind===`outcome`}export{createSessionInbox,isInterrupt,isWorkflowMessage};
@@ -1 +1 @@
1
- var SessionInboxPayloadError=class extends Error{constructor(e){super(e),this.name=`SessionInboxPayloadError`}};function decodeSessionInboxPayload(e){if(typeof e!=`object`||!e||!(`kind`in e))throw new SessionInboxPayloadError(`Session inbox payload must be an object with a kind.`);let t=e;if(t.taskDeliveryPolicy!==void 0&&t.taskDeliveryPolicy!==`auto`&&t.taskDeliveryPolicy!==`cohort`)throw new SessionInboxPayloadError(`Task delivery policy must be "auto" or "cohort".`);switch(t.kind){case`send`:{if(t.payload===null||typeof t.payload!=`object`)throw new SessionInboxPayloadError(`Session send payload must be an object.`);let n=e;return{auth:n.auth,title:n.title,caller:n.caller,deliveryMetadata:n.delivery===void 0?void 0:[{...n.delivery,payloadIndex:0}],kind:`deliver`,payloads:[n.payload],requestId:n.requestId,taskDeliveryId:n.taskDeliveryId,turnPolicy:n.turnPolicy,taskDeliveryPolicy:n.taskDeliveryPolicy}}case`deliver`:if(!Array.isArray(t.payloads))throw new SessionInboxPayloadError(`Session delivery payloads must be an array.`);return e;case`cancel`:case`clear`:case`compact`:case`reset`:case`session-timeout`:return e;default:throw new SessionInboxPayloadError(`Unsupported session inbox payload kind ${JSON.stringify(t.kind)}.`)}}export{SessionInboxPayloadError,decodeSessionInboxPayload};
1
+ var SessionInboxPayloadError=class extends Error{constructor(e){super(e),this.name=`SessionInboxPayloadError`}};function decodeSessionInboxPayload(e){if(typeof e!=`object`||!e||!(`kind`in e))throw new SessionInboxPayloadError(`Session inbox payload must be an object with a kind.`);let t=e;switch(t.kind){case`send`:{if(t.payload===null||typeof t.payload!=`object`)throw new SessionInboxPayloadError(`Session send payload must be an object.`);let n=e;return{auth:n.auth,title:n.title,caller:n.caller,deliveryMetadata:n.delivery===void 0?void 0:[{...n.delivery,payloadIndex:0}],kind:`deliver`,payloads:[n.payload],requestId:n.requestId,turnPolicy:n.turnPolicy}}case`deliver`:if(!Array.isArray(t.payloads))throw new SessionInboxPayloadError(`Session delivery payloads must be an array.`);return e;case`cancel`:case`clear`:case`compact`:case`reset`:case`session-timeout`:return e;default:throw new SessionInboxPayloadError(`Unsupported session inbox payload kind ${JSON.stringify(t.kind)}.`)}}export{SessionInboxPayloadError,decodeSessionInboxPayload};
@@ -1 +1 @@
1
- import{getWorld}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";async function releaseSessionHooksStep(e){"use step";let t=await getWorld(),n=await Promise.allSettled(e.tokens.map(async n=>{let r;try{r=await t.hooks.getByToken(n)}catch(e){if(HookNotFoundError.is(e))return;throw e}if(r.runId!==e.ownerRunId)throw Error(`Cannot release a session hook owned by another workflow.`);await t.events.create(e.ownerRunId,{correlationId:r.hookId,eventData:{token:n},eventType:`hook_disposed`,specVersion:r.specVersion})}));for(let e of n)if(e.status===`rejected`)throw e.reason}export{releaseSessionHooksStep};
1
+ import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{getWorld}from"#internal/workflow/runtime.js";async function releaseSessionHooksStep(e){"use step";let t=await getWorld(),n=await Promise.allSettled(e.tokens.map(async n=>{let r;try{r=await t.hooks.getByToken(n)}catch(e){if(HookNotFoundError.is(e))return;throw e}if(r.runId!==e.ownerRunId)throw Error(`Cannot release a session hook owned by another workflow.`);await t.events.create(e.ownerRunId,{correlationId:r.hookId,eventData:{token:n},eventType:`hook_disposed`,specVersion:r.specVersion})}));for(let e of n)if(e.status===`rejected`)throw e.reason}export{releaseSessionHooksStep};
@@ -1 +1 @@
1
- import{isObject}from"#shared/guards.js";import{SESSION_INBOX_SESSION_ID_METADATA_KEY,isSessionInboxAddress,sessionCommandHookToken,sessionHandoffMarkerToken,sessionInboxHookToken}from"#execution/session-inbox/address.js";import{getHookByToken,resumeHook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{UnsupportedLegacySessionError,resolveLegacyInbox,resumeLegacyInbox}from"#execution/legacy-session/inbox.js";async function resumeSessionInbox(e,t){let n=logicalToken(e),r=Date.now()+5e3;for(;;){let i;try{i=await resumeHook(sessionInboxHookToken(n),t)}catch(e){if(!HookNotFoundError.is(e))throw e;if(await isHandoffInProgress(n,r))continue;return await resumeLegacyInbox(n,t).catch(rethrowUnsupportedAsNotFound)}let a;return{ownerRunId:i.runId,get sessionId(){return a??=(async()=>{try{return typeof e==`string`?requireSessionId(await i.metadata):e.sessionId}catch(e){throw new AcceptedSessionIdentityError(e)}})()}}}}var AcceptedSessionIdentityError=class extends Error{constructor(e){super(`Session command accepted, but its session identity could not be resolved.`,{cause:e}),this.name=`AcceptedSessionIdentityError`}};function requireSessionId(e){let t=isObject(e)?e[SESSION_INBOX_SESSION_ID_METADATA_KEY]:void 0;if(typeof t!=`string`||t.length===0)throw Error(`Session hook metadata is missing its session ID.`);return t}async function resolveSessionInbox(e){try{return{sessionId:requireSessionId(await(await getHookByToken(sessionInboxHookToken(e))).metadata)}}catch(t){if(!HookNotFoundError.is(t))throw t;return{sessionId:(await resolveLegacyInbox(e)).sessionId}}}function rethrowUnsupportedAsNotFound(e){throw e instanceof UnsupportedLegacySessionError?new HookNotFoundError(e.message):e}function logicalToken(e){if(typeof e==`string`)return e;if(!isSessionInboxAddress(e))throw Error(`Session inbox target has an invalid address.`);return sessionCommandHookToken(e.sessionId)}async function isHandoffInProgress(e,t){if(Date.now()>=t)return!1;try{await getHookByToken(sessionHandoffMarkerToken(e))}catch(e){if(HookNotFoundError.is(e))return!1;throw e}return await new Promise(e=>setTimeout(e,20)),!0}export{AcceptedSessionIdentityError,requireSessionId,resolveSessionInbox,resumeSessionInbox};
1
+ import{isObject}from"#shared/guards.js";import{SESSION_INBOX_SESSION_ID_METADATA_KEY,isSessionInboxAddress,sessionCommandHookToken,sessionHandoffMarkerToken,sessionInboxHookToken}from"#execution/session-inbox/address.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{getHookByToken,resumeHook}from"#internal/workflow/runtime.js";import{UnsupportedLegacySessionError,resolveLegacyInbox,resumeLegacyInbox}from"#execution/legacy-session/inbox.js";async function resumeSessionInbox(e,t){let n=logicalToken(e),r=Date.now()+5e3;for(;;){let i;try{i=await resumeHook(sessionInboxHookToken(n),t)}catch(e){if(!HookNotFoundError.is(e))throw e;if(await isHandoffInProgress(n,r))continue;return await resumeLegacyInbox(n,t).catch(rethrowUnsupportedAsNotFound)}let a;return{ownerRunId:i.runId,get sessionId(){return a??=(async()=>{try{return typeof e==`string`?requireSessionId(await i.metadata):e.sessionId}catch(e){throw new AcceptedSessionIdentityError(e)}})()}}}}var AcceptedSessionIdentityError=class extends Error{constructor(e){super(`Session command accepted, but its session identity could not be resolved.`,{cause:e}),this.name=`AcceptedSessionIdentityError`}};function requireSessionId(e){let t=isObject(e)?e[SESSION_INBOX_SESSION_ID_METADATA_KEY]:void 0;if(typeof t!=`string`||t.length===0)throw Error(`Session hook metadata is missing its session ID.`);return t}async function resolveSessionInbox(e){try{return{sessionId:requireSessionId(await(await getHookByToken(sessionInboxHookToken(e))).metadata)}}catch(t){if(!HookNotFoundError.is(t))throw t;return{sessionId:(await resolveLegacyInbox(e)).sessionId}}}function rethrowUnsupportedAsNotFound(e){throw e instanceof UnsupportedLegacySessionError?new HookNotFoundError(e.message):e}function logicalToken(e){if(typeof e==`string`)return e;if(!isSessionInboxAddress(e))throw Error(`Session inbox target has an invalid address.`);return sessionCommandHookToken(e.sessionId)}async function isHandoffInProgress(e,t){if(Date.now()>=t)return!1;try{await getHookByToken(sessionHandoffMarkerToken(e))}catch(e){if(HookNotFoundError.is(e))return!1;throw e}return await new Promise(e=>setTimeout(e,20)),!0}export{AcceptedSessionIdentityError,requireSessionId,resolveSessionInbox,resumeSessionInbox};