eve 0.83.3 → 0.84.1

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 (1595) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +1 -5
  3. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  4. package/dist/src/acp/adapter.d.ts +8 -5
  5. package/dist/src/acp/adapter.js +1 -1
  6. package/dist/src/ai/decide.d.ts +3 -7
  7. package/dist/src/ai/decide.js +1 -1
  8. package/dist/src/ai/decision-adapter.d.ts +7 -0
  9. package/dist/src/ai/decision-adapter.js +1 -0
  10. package/dist/src/ai/decision-types.d.ts +86 -0
  11. package/dist/src/approval/definition.d.ts +5 -12
  12. package/dist/src/approval/evaluation.d.ts +48 -0
  13. package/dist/src/approval/evaluation.js +1 -0
  14. package/dist/src/approval/status.d.ts +14 -0
  15. package/dist/src/approval/status.js +1 -0
  16. package/dist/src/channel/adapter-context.d.ts +1 -3
  17. package/dist/src/channel/adapter-context.js +1 -1
  18. package/dist/src/channel/adapter.d.ts +34 -26
  19. package/dist/src/channel/adapter.js +1 -1
  20. package/dist/src/channel/audience.d.ts +0 -3
  21. package/dist/src/channel/audience.js +1 -1
  22. package/dist/src/channel/auth/definitions.d.ts +532 -0
  23. package/dist/src/channel/auth/definitions.js +1 -0
  24. package/dist/src/channel/auth/jwt-ecdsa.js +1 -1
  25. package/dist/src/channel/auth/jwt-hmac.js +1 -1
  26. package/dist/src/channel/auth/oidc.js +1 -1
  27. package/dist/src/channel/channel-address.d.ts +12 -10
  28. package/dist/src/channel/channel-address.js +1 -1
  29. package/dist/src/channel/channel-operations.d.ts +21 -22
  30. package/dist/src/channel/channel-operations.js +1 -1
  31. package/dist/src/channel/compiled-channel.d.ts +4 -4
  32. package/dist/src/channel/conversation-context.js +1 -1
  33. package/dist/src/channel/cors.d.ts +2 -2
  34. package/dist/src/channel/cors.js +1 -1
  35. package/dist/src/channel/cross-channel-receive.d.ts +7 -4
  36. package/dist/src/channel/cross-channel-receive.js +1 -1
  37. package/dist/src/channel/delivery-idempotency.d.ts +6 -0
  38. package/dist/src/channel/delivery-idempotency.js +1 -1
  39. package/dist/src/channel/delivery-metadata.d.ts +2 -2
  40. package/dist/src/channel/delivery.d.ts +8 -0
  41. package/dist/src/channel/delivery.js +1 -0
  42. package/dist/src/channel/interaction-prompts.d.ts +54 -0
  43. package/dist/src/channel/interaction-prompts.js +1 -0
  44. package/dist/src/channel/invoke-tool.d.ts +11 -18
  45. package/dist/src/channel/pending-authorization.d.ts +3 -14
  46. package/dist/src/channel/pending-authorization.js +1 -1
  47. package/dist/src/channel/prompt-queue.d.ts +11 -19
  48. package/dist/src/channel/prompt-queue.js +1 -1
  49. package/dist/src/channel/resolve-text.d.ts +11 -18
  50. package/dist/src/channel/resolve-text.js +2 -2
  51. package/dist/src/channel/resolved-prompt.d.ts +7 -5
  52. package/dist/src/channel/resolved-prompt.js +1 -1
  53. package/dist/src/channel/routes.d.ts +4 -4
  54. package/dist/src/channel/schedule.d.ts +2 -2
  55. package/dist/src/channel/schedule.js +1 -1
  56. package/dist/src/channel/send-input.d.ts +3 -3
  57. package/dist/src/channel/send-input.js +1 -1
  58. package/dist/src/channel/session-callback.js +1 -1
  59. package/dist/src/channel/session-not-active-error.d.ts +8 -12
  60. package/dist/src/channel/session-not-active-error.js +1 -1
  61. package/dist/src/channel/session.d.ts +33 -59
  62. package/dist/src/channel/session.js +1 -1
  63. package/dist/src/channel/sign-in.d.ts +61 -0
  64. package/dist/src/channel/sign-in.js +3 -0
  65. package/dist/src/channel/surface.d.ts +44 -0
  66. package/dist/src/channel/surface.js +1 -0
  67. package/dist/src/channel/task-card.d.ts +24 -114
  68. package/dist/src/channel/task-card.js +1 -1
  69. package/dist/src/channel/types.d.ts +118 -110
  70. package/dist/src/channel/types.js +1 -1
  71. package/dist/src/chunks/use-eve-agent-DMeP0JOF.js +5046 -0
  72. package/dist/src/chunks/use-eve-agent-DP5Rso9C.js +5093 -0
  73. package/dist/src/cli/commands/init.js +1 -1
  74. package/dist/src/cli/commands/logs-events.d.ts +2 -0
  75. package/dist/src/cli/commands/logs-events.js +2 -2
  76. package/dist/src/cli/dev/command.js +1 -1
  77. package/dist/src/cli/dev/remote-print.d.ts +8 -0
  78. package/dist/src/cli/dev/remote-print.js +1 -0
  79. package/dist/src/cli/dev/tui/conversation-view.d.ts +24 -19
  80. package/dist/src/cli/dev/tui/conversation-view.js +1 -1
  81. package/dist/src/cli/dev/tui/diagnostic-presentation.d.ts +0 -10
  82. package/dist/src/cli/dev/tui/diagnostic-presentation.js +2 -3
  83. package/dist/src/cli/dev/tui/errors.d.ts +9 -65
  84. package/dist/src/cli/dev/tui/errors.js +1 -1
  85. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  86. package/dist/src/cli/dev/tui/runner.js +3 -3
  87. package/dist/src/cli/dev/tui/task-records.d.ts +3 -3
  88. package/dist/src/cli/dev/tui/task-records.js +1 -1
  89. package/dist/src/cli/dev/tui/terminal-renderer.js +10 -10
  90. package/dist/src/cli/dev/tui/terminal-tool-part.d.ts +2 -2
  91. package/dist/src/cli/dev/tui/terminal-tool-part.js +1 -1
  92. package/dist/src/cli/dev/tui/test/fake-eve-server.d.ts +3 -3
  93. package/dist/src/cli/dev/tui/test/fake-eve-server.js +1 -1
  94. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  95. package/dist/src/cli/dev/tui/transcript-parts.d.ts +16 -16
  96. package/dist/src/cli/dev/tui/transcript-parts.js +3 -3
  97. package/dist/src/cli/dev/tui/transcript.d.ts +0 -4
  98. package/dist/src/cli/dev/tui/transcript.js +1 -1
  99. package/dist/src/cli/dev/tui/tui.js +1 -1
  100. package/dist/src/cli/run.d.ts +0 -2
  101. package/dist/src/cli/run.js +1 -1
  102. package/dist/src/cli/telemetry/index.js +1 -1
  103. package/dist/src/client/agent-base-url.d.ts +4 -0
  104. package/dist/src/client/agent-base-url.js +1 -0
  105. package/dist/src/client/agent-info-schema.d.ts +1 -923
  106. package/dist/src/client/agent-info-schema.js +1 -1
  107. package/dist/src/client/agent-info-types.d.ts +281 -0
  108. package/dist/src/client/agent-session.d.ts +19 -22
  109. package/dist/src/client/agent-session.js +1 -1
  110. package/dist/src/client/agent-stream-follower.d.ts +11 -20
  111. package/dist/src/client/agent-stream-follower.js +1 -1
  112. package/dist/src/client/client-error.d.ts +2 -1
  113. package/dist/src/client/client-error.js +1 -1
  114. package/dist/src/client/client.d.ts +1 -1
  115. package/dist/src/client/client.js +1 -1
  116. package/dist/src/client/conversation-client.d.ts +37 -28
  117. package/dist/src/client/conversation-client.js +1 -1
  118. package/dist/src/client/conversation-state.d.ts +70 -73
  119. package/dist/src/client/conversation-state.js +1 -1
  120. package/dist/src/client/conversation.d.ts +51 -0
  121. package/dist/src/client/conversation.js +1 -0
  122. package/dist/src/client/delivery-events.d.ts +3 -0
  123. package/dist/src/client/delivery-events.js +1 -0
  124. package/dist/src/client/delivery.d.ts +38 -0
  125. package/dist/src/client/delivery.js +1 -0
  126. package/dist/src/client/file-parts.d.ts +9 -4
  127. package/dist/src/client/file-parts.js +1 -1
  128. package/dist/src/client/health-schema.d.ts +1 -1
  129. package/dist/src/client/health-types.d.ts +6 -0
  130. package/dist/src/client/index.d.ts +17 -23
  131. package/dist/src/client/index.js +1 -1
  132. package/dist/src/client/message-types.d.ts +92 -0
  133. package/dist/src/client/message-types.js +1 -0
  134. package/dist/src/client/messages.d.ts +30 -0
  135. package/dist/src/client/messages.js +1 -0
  136. package/dist/src/client/ndjson.d.ts +6 -11
  137. package/dist/src/client/ndjson.js +3 -3
  138. package/dist/src/client/open-stream.d.ts +47 -20
  139. package/dist/src/client/open-stream.js +1 -1
  140. package/dist/src/client/optimistic-message-submissions.d.ts +10 -18
  141. package/dist/src/client/optimistic-message-submissions.js +1 -1
  142. package/dist/src/client/session-controls.d.ts +23 -26
  143. package/dist/src/client/session-controls.js +1 -1
  144. package/dist/src/client/session-event-stream.d.ts +5 -16
  145. package/dist/src/client/session-event-stream.js +1 -1
  146. package/dist/src/client/session-store-helpers.d.ts +8 -0
  147. package/dist/src/client/session-store-helpers.js +2 -0
  148. package/dist/src/client/session-store-state.d.ts +80 -0
  149. package/dist/src/client/session-store-state.js +1 -0
  150. package/dist/src/client/session-store.d.ts +48 -0
  151. package/dist/src/client/session-store.js +1 -0
  152. package/dist/src/client/session-utils.d.ts +45 -41
  153. package/dist/src/client/session-utils.js +2 -1
  154. package/dist/src/client/session.d.ts +32 -23
  155. package/dist/src/client/session.js +1 -1
  156. package/dist/src/client/sessions.d.ts +3 -2
  157. package/dist/src/client/sessions.js +1 -1
  158. package/dist/src/client/stream-version.d.ts +3 -1
  159. package/dist/src/client/stream-version.js +1 -1
  160. package/dist/src/client/transcript.d.ts +43 -0
  161. package/dist/src/client/transcript.js +2 -0
  162. package/dist/src/client/types.d.ts +23 -82
  163. package/dist/src/client/url.d.ts +3 -3
  164. package/dist/src/compiled/.vendor-stamp.json +2 -2
  165. package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +34 -34
  166. package/dist/src/compiled/@ai-sdk/google/index.d.ts +15 -15
  167. package/dist/src/compiled/@ai-sdk/openai/index.d.ts +38 -38
  168. package/dist/src/compiled/@chat-adapter/slack/fetch-QqNM_Ef3.d.ts +4 -0
  169. package/dist/src/compiled/@chat-adapter/slack/index.js +13 -13
  170. package/dist/src/compiled/@chat-adapter/twilio/types-BaIqtt65.d.ts +100 -0
  171. package/dist/src/compiled/@linqapp/chat-sdk-adapter/adapter.d.ts +129 -0
  172. package/dist/src/compiled/@linqapp/chat-sdk-adapter/message-parser.d.ts +14 -0
  173. package/dist/src/compiled/@linqapp/chat-sdk-adapter/text-decorations.d.ts +28 -0
  174. package/dist/src/compiled/@vercel/sandbox/api-client/api-client.d.ts +75 -0
  175. package/dist/src/compiled/@vercel/sandbox/api-client/validators.d.ts +4 -0
  176. package/dist/src/compiled/@vercel/sandbox/command.d.ts +78 -0
  177. package/dist/src/compiled/@vercel/sandbox/drive.d.ts +41 -1
  178. package/dist/src/compiled/@vercel/sandbox/index.js +13 -13
  179. package/dist/src/compiled/@vercel/sandbox/network-policy.d.ts +35 -4
  180. package/dist/src/compiled/@vercel/sandbox/sandbox.d.ts +18 -4
  181. package/dist/src/compiled/@vercel/sandbox/session.d.ts +29 -3
  182. package/dist/src/compiled/@vercel/sandbox/utils/pipe-stdin.d.ts +19 -0
  183. package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +1 -1
  184. package/dist/src/compiled/@workflow/core/serialization/types.d.ts +1 -1
  185. package/dist/src/compiled/@workflow/core/serialization.d.ts +2 -2
  186. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +2 -2
  187. package/dist/src/compiled/_chunks/client/{core-CspsxXR-.js → core-BsvaaMUJ.js} +1 -1
  188. package/dist/src/compiled/_chunks/node/{auth-Dztlx9pE.js → auth-v5pS3mLo.js} +1 -1
  189. package/dist/src/compiled/_chunks/node/is-stream-DsuQX_bd.js +1 -0
  190. package/dist/src/compiled/_chunks/node/token-DHGH-jVc.js +1 -0
  191. package/dist/src/compiled/_chunks/node/token-util-BH2pw9Qm.js +25 -0
  192. package/dist/src/compiled/_chunks/node/token-util-CcvxNv76.js +1 -0
  193. package/dist/src/compiled/_chunks/node/version-C2PfNyEv.js +1 -0
  194. package/dist/src/compiled/semver/index.d.ts +2 -0
  195. package/dist/src/compiled/zod/index.js +1 -1
  196. package/dist/src/compiled/zod/v4/core.js +1 -1
  197. package/dist/src/compiled/zod-validation-error/index.js +1 -1
  198. package/dist/src/compiler/artifacts.d.ts +1 -0
  199. package/dist/src/compiler/artifacts.js +1 -1
  200. package/dist/src/compiler/development-extensions.js +1 -1
  201. package/dist/src/compiler/extension-compatibility.d.ts +19 -290
  202. package/dist/src/compiler/extension-compatibility.js +1 -1
  203. package/dist/src/compiler/manifest.d.ts +3 -11
  204. package/dist/src/compiler/manifest.js +1 -1
  205. package/dist/src/compiler/model-catalog.d.ts +8 -18
  206. package/dist/src/compiler/model-catalog.js +1 -1
  207. package/dist/src/compiler/normalize-agent-config.js +1 -1
  208. package/dist/src/compiler/normalize-connection.js +1 -1
  209. package/dist/src/compiler/normalize-hook.js +1 -1
  210. package/dist/src/compiler/normalize-instructions.js +1 -1
  211. package/dist/src/compiler/normalize-manifest-types.d.ts +3 -0
  212. package/dist/src/compiler/normalize-manifest.js +1 -1
  213. package/dist/src/compiler/normalize-memory.js +1 -1
  214. package/dist/src/compiler/normalize-schedule.js +1 -1
  215. package/dist/src/compiler/normalize-skill.js +1 -1
  216. package/dist/src/compiler/normalize-subagent.d.ts +0 -5
  217. package/dist/src/compiler/normalize-subagent.js +1 -1
  218. package/dist/src/compiler/normalize-tool.js +1 -1
  219. package/dist/src/compiler/remote-agent-node.d.ts +1 -6
  220. package/dist/src/compiler/source-graph.d.ts +0 -1
  221. package/dist/src/compiler/source-graph.js +1 -1
  222. package/dist/src/computer-use/extension/lib/computer-use-sandbox.js +1 -1
  223. package/dist/src/computer-use/extension/lib/sandbox.d.ts +1 -1
  224. package/dist/src/computer-use/extension/lib/sandbox.js +1 -1
  225. package/dist/src/computer-use/extension/tools/computer_use.js +1 -1
  226. package/dist/src/connections/errors.d.ts +3 -3
  227. package/dist/src/context/accessors.d.ts +0 -13
  228. package/dist/src/context/accessors.js +1 -1
  229. package/dist/src/context/container.d.ts +8 -11
  230. package/dist/src/context/container.js +1 -1
  231. package/dist/src/context/key-names.d.ts +1 -0
  232. package/dist/src/context/key-names.js +1 -1
  233. package/dist/src/context/keys.d.ts +20 -112
  234. package/dist/src/context/keys.js +1 -1
  235. package/dist/src/context/memory-tools.d.ts +4 -2
  236. package/dist/src/context/memory-tools.js +1 -1
  237. package/dist/src/context/providers/connection.js +1 -1
  238. package/dist/src/context/providers/session.js +1 -1
  239. package/dist/src/context/schedule-collection-tools.d.ts +2 -2
  240. package/dist/src/context/schedule-collection-tools.js +1 -1
  241. package/dist/src/context/session-context.d.ts +4 -2
  242. package/dist/src/discover/extensions.d.ts +2 -3
  243. package/dist/src/discover/extensions.js +1 -1
  244. package/dist/src/discover/manifest.js +1 -1
  245. package/dist/src/discover/skills.js +1 -1
  246. package/dist/src/dynamic/definition.d.ts +98 -108
  247. package/dist/src/dynamic/definition.js +1 -1
  248. package/dist/src/evals/assertions/collector.js +1 -1
  249. package/dist/src/evals/assertions/run.d.ts +12 -11
  250. package/dist/src/evals/assertions/run.js +2 -2
  251. package/dist/src/evals/assertions/scoped.js +1 -1
  252. package/dist/src/evals/cli/eval-client.js +1 -1
  253. package/dist/src/evals/cli/eval.js +2 -2
  254. package/dist/src/evals/context.js +1 -1
  255. package/dist/src/evals/expect/index.d.ts +0 -1
  256. package/dist/src/evals/index.d.ts +2 -5
  257. package/dist/src/evals/judge.js +1 -1
  258. package/dist/src/evals/match.d.ts +20 -17
  259. package/dist/src/evals/match.js +1 -1
  260. package/dist/src/evals/mock-model.d.ts +5 -1
  261. package/dist/src/evals/mock-model.js +1 -1
  262. package/dist/src/evals/output.d.ts +3 -0
  263. package/dist/src/evals/output.js +1 -0
  264. package/dist/src/evals/reported-tool-name.js +1 -1
  265. package/dist/src/evals/reporters/index.d.ts +4 -4
  266. package/dist/src/evals/reporters/index.js +1 -1
  267. package/dist/src/evals/runner/artifacts.js +1 -1
  268. package/dist/src/evals/runner/derive-run-facts.d.ts +8 -40
  269. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  270. package/dist/src/evals/runner/execute-eval.js +1 -1
  271. package/dist/src/evals/runner/execute-task.d.ts +3 -1
  272. package/dist/src/evals/runner/execute-task.js +1 -1
  273. package/dist/src/evals/runner/reporters/braintrust.d.ts +1 -1
  274. package/dist/src/evals/runner/reporters/braintrust.js +2 -2
  275. package/dist/src/evals/runner/reporters/console.d.ts +1 -1
  276. package/dist/src/evals/runner/reporters/console.js +1 -1
  277. package/dist/src/evals/runner/reporters/datadog.d.ts +1 -1
  278. package/dist/src/evals/runner/reporters/datadog.js +2 -2
  279. package/dist/src/evals/runner/reporters/junit.d.ts +1 -1
  280. package/dist/src/evals/runner/reporters/junit.js +2 -2
  281. package/dist/src/evals/runner/reporters/types.d.ts +2 -2
  282. package/dist/src/evals/runner/run-evals.d.ts +1 -1
  283. package/dist/src/evals/session-cleanup.d.ts +1 -1
  284. package/dist/src/evals/session-cleanup.js +1 -1
  285. package/dist/src/evals/session-content.d.ts +2 -2
  286. package/dist/src/evals/session-content.js +2 -1
  287. package/dist/src/evals/session-manager.d.ts +3 -6
  288. package/dist/src/evals/session-manager.js +1 -1
  289. package/dist/src/evals/session.d.ts +33 -24
  290. package/dist/src/evals/session.js +2 -2
  291. package/dist/src/evals/target.js +1 -1
  292. package/dist/src/evals/types.d.ts +115 -94
  293. package/dist/src/eve-channel/create-request.d.ts +3 -5
  294. package/dist/src/eve-channel/descendant-stream.d.ts +9 -0
  295. package/dist/src/eve-channel/descendant-stream.js +1 -0
  296. package/dist/src/eve-channel/index.d.ts +2 -2
  297. package/dist/src/eve-channel/index.js +1 -1
  298. package/dist/src/eve-channel/request.d.ts +8 -6
  299. package/dist/src/eve-channel/request.js +1 -3
  300. package/dist/src/eve-channel/stream-headers.d.ts +1 -1
  301. package/dist/src/eve-channel/stream-headers.js +1 -1
  302. package/dist/src/eve-channel/support.d.ts +25 -13
  303. package/dist/src/eve-channel/support.js +2 -2
  304. package/dist/src/eve-channel/types.d.ts +7 -30
  305. package/dist/src/execution/agent-sessions/message.d.ts +4 -0
  306. package/dist/src/execution/agent-sessions/message.js +1 -0
  307. package/dist/src/execution/agent-sessions/metadata.js +1 -1
  308. package/dist/src/execution/agent-sessions/remote-credentials.d.ts +19 -0
  309. package/dist/src/execution/agent-sessions/remote-credentials.js +1 -0
  310. package/dist/src/execution/agent-sessions/remote.d.ts +35 -13
  311. package/dist/src/execution/agent-sessions/remote.js +1 -1
  312. package/dist/src/execution/agent-sessions/requests.d.ts +6 -6
  313. package/dist/src/execution/agent-sessions/requests.js +1 -1
  314. package/dist/src/execution/agent-sessions/session.js +1 -1
  315. package/dist/src/execution/agent-sessions/steps.d.ts +26 -4
  316. package/dist/src/execution/agent-sessions/steps.js +1 -1
  317. package/dist/src/execution/agent-sessions/target.d.ts +2 -1
  318. package/dist/src/execution/agent-sessions/target.js +1 -1
  319. package/dist/src/execution/agent-sessions/usage.d.ts +0 -8
  320. package/dist/src/execution/agent-sessions/usage.js +1 -1
  321. package/dist/src/execution/cancelled-model-call-batch.d.ts +4 -2
  322. package/dist/src/execution/cancelled-model-call-batch.js +1 -1
  323. package/dist/src/execution/cancelled-turn-message.d.ts +2 -2
  324. package/dist/src/execution/cancelled-turn-message.js +1 -1
  325. package/dist/src/execution/catalog/connection-entry.js +1 -1
  326. package/dist/src/execution/catalog/search.js +1 -1
  327. package/dist/src/execution/catalog/skills.js +1 -1
  328. package/dist/src/execution/catalog/step-catalog.js +1 -1
  329. package/dist/src/execution/child-binding.d.ts +19 -0
  330. package/dist/src/execution/child-binding.js +1 -0
  331. package/dist/src/execution/close-session-stream-step.d.ts +9 -0
  332. package/dist/src/execution/close-session-stream-step.js +1 -0
  333. package/dist/src/execution/coordination-dispatch-shared.d.ts +13 -3
  334. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  335. package/dist/src/execution/coordination-dispatch-step.d.ts +9 -13
  336. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  337. package/dist/src/execution/deliver-payloads.js +1 -1
  338. package/dist/src/execution/durable-session-store.d.ts +2 -5
  339. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  340. package/dist/src/execution/dynamic-workflow/workflow.js +1 -1
  341. package/dist/src/execution/failure-summary.d.ts +11 -0
  342. package/dist/src/execution/failure-summary.js +1 -0
  343. package/dist/src/execution/forward-session-input.d.ts +2 -2
  344. package/dist/src/execution/forward-session-input.js +1 -1
  345. package/dist/src/execution/invoke-tool.js +1 -1
  346. package/dist/src/execution/legacy-session/snapshot.d.ts +4 -1
  347. package/dist/src/execution/legacy-session/snapshot.js +1 -1
  348. package/dist/src/execution/model-call-batching.d.ts +3 -3
  349. package/dist/src/execution/model-call-batching.js +1 -1
  350. package/dist/src/execution/ndjson-stream.d.ts +1 -1
  351. package/dist/src/execution/node-step.d.ts +2 -8
  352. package/dist/src/execution/node-step.js +1 -1
  353. package/dist/src/execution/proxied-deliver-step.d.ts +8 -3
  354. package/dist/src/execution/proxied-deliver-step.js +1 -1
  355. package/dist/src/execution/public-destination.d.ts +34 -0
  356. package/dist/src/execution/public-destination.js +1 -0
  357. package/dist/src/execution/publish-session-events.d.ts +98 -36
  358. package/dist/src/execution/publish-session-events.js +1 -1
  359. package/dist/src/execution/runtime-context.js +1 -1
  360. package/dist/src/execution/sandbox/abort-bound-session.js +1 -1
  361. package/dist/src/execution/sandbox/bash.js +1 -1
  362. package/dist/src/execution/sandbox/bindings/docker-cli.d.ts +2 -0
  363. package/dist/src/execution/sandbox/bindings/docker-cli.js +1 -1
  364. package/dist/src/execution/sandbox/bindings/docker-connection.js +1 -1
  365. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  366. package/dist/src/execution/sandbox/bindings/eve-image.d.ts +0 -2
  367. package/dist/src/execution/sandbox/bindings/eve-image.js +1 -1
  368. package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
  369. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  370. package/dist/src/execution/sandbox/ensure.js +1 -1
  371. package/dist/src/{extensions/code/extension/lib → execution/sandbox}/grep-search.d.ts +3 -2
  372. package/dist/src/execution/sandbox/grep-search.js +6 -0
  373. package/dist/src/execution/sandbox/multiplexed-command.d.ts +11 -1
  374. package/dist/src/execution/sandbox/multiplexed-command.js +1 -1
  375. package/dist/src/execution/sandbox/read-file.d.ts +1 -1
  376. package/dist/src/execution/sandbox/session.js +1 -1
  377. package/dist/src/execution/sandbox/workspace-root.d.ts +31 -0
  378. package/dist/src/execution/sandbox/workspace-root.js +1 -0
  379. package/dist/src/execution/session/active-turn.d.ts +12 -6
  380. package/dist/src/execution/session/active-turn.js +1 -1
  381. package/dist/src/execution/session/admission.d.ts +7 -2
  382. package/dist/src/execution/session/admission.js +1 -1
  383. package/dist/src/execution/session/answer-caller.d.ts +4 -4
  384. package/dist/src/execution/session/answer-caller.js +1 -1
  385. package/dist/src/execution/session/checkpoint-migrations.d.ts +4 -6
  386. package/dist/src/execution/session/checkpoint-migrations.js +1 -1
  387. package/dist/src/execution/session/control-delivery.d.ts +4 -0
  388. package/dist/src/execution/session/control-delivery.js +1 -0
  389. package/dist/src/execution/session/delivery-facts.d.ts +27 -0
  390. package/dist/src/execution/session/delivery-facts.js +1 -0
  391. package/dist/src/execution/session/end-sandbox-step.js +1 -1
  392. package/dist/src/execution/session/entry.js +1 -1
  393. package/dist/src/execution/session/finalization.d.ts +4 -0
  394. package/dist/src/execution/session/finalization.js +1 -1
  395. package/dist/src/execution/session/handoff-state.js +1 -1
  396. package/dist/src/execution/session/handoff-steps.d.ts +0 -8
  397. package/dist/src/execution/session/handoff-steps.js +1 -1
  398. package/dist/src/execution/session/handoff.d.ts +4 -3
  399. package/dist/src/execution/session/handoff.js +1 -1
  400. package/dist/src/execution/session/input-queue.d.ts +8 -2
  401. package/dist/src/execution/session/input-queue.js +1 -1
  402. package/dist/src/execution/session/interrupted-step.d.ts +64 -0
  403. package/dist/src/execution/session/interrupted-step.js +3 -0
  404. package/dist/src/execution/session/next-input.d.ts +7 -1
  405. package/dist/src/execution/session/next-input.js +1 -1
  406. package/dist/src/execution/session/pending-turn-state.d.ts +32 -12
  407. package/dist/src/execution/session/pending-turn-state.js +1 -1
  408. package/dist/src/execution/session/prewarm-step.d.ts +1 -1
  409. package/dist/src/execution/session/prewarm-step.js +1 -1
  410. package/dist/src/execution/session/program.js +1 -1
  411. package/dist/src/execution/session/settle-control-delivery-step.d.ts +8 -0
  412. package/dist/src/execution/session/settle-control-delivery-step.js +1 -0
  413. package/dist/src/execution/session/settle-duplicate-delivery-step.d.ts +8 -0
  414. package/dist/src/execution/session/settle-duplicate-delivery-step.js +1 -0
  415. package/dist/src/execution/session/state-delta.d.ts +2 -12
  416. package/dist/src/execution/session/state-delta.js +1 -1
  417. package/dist/src/execution/session/step-decision-check.d.ts +9 -0
  418. package/dist/src/execution/session/step-decision-check.js +1 -0
  419. package/dist/src/execution/session/step-state-delta.d.ts +16 -0
  420. package/dist/src/execution/session/step-state-delta.js +1 -0
  421. package/dist/src/execution/session/task-tool-tracing-step.d.ts +0 -3
  422. package/dist/src/execution/session/task-tool-tracing-step.js +1 -1
  423. package/dist/src/execution/session/turn-event-handler.d.ts +6 -16
  424. package/dist/src/execution/session/turn-event-handler.js +1 -1
  425. package/dist/src/execution/session/turn-step-result.d.ts +7 -2
  426. package/dist/src/execution/session/turn-step-result.js +1 -1
  427. package/dist/src/execution/session/turn-step-types.d.ts +35 -33
  428. package/dist/src/execution/session/turn-step.js +1 -1
  429. package/dist/src/execution/session/turn.d.ts +19 -32
  430. package/dist/src/execution/session/turn.js +1 -1
  431. package/dist/src/execution/session-callback-request.d.ts +7 -1
  432. package/dist/src/execution/session-callback-request.js +1 -1
  433. package/dist/src/execution/session-event-stream.d.ts +37 -16
  434. package/dist/src/execution/session-event-stream.js +1 -1
  435. package/dist/src/execution/session-inbox/address.d.ts +1 -0
  436. package/dist/src/execution/session-inbox/end-stranded-session.d.ts +7 -1
  437. package/dist/src/execution/session-inbox/end-stranded-session.js +1 -1
  438. package/dist/src/execution/session-inbox/handle.d.ts +7 -0
  439. package/dist/src/execution/session-inbox/handle.js +1 -0
  440. package/dist/src/execution/session-inbox/inbox.js +1 -1
  441. package/dist/src/execution/session-inbox/owner.d.ts +9 -6
  442. package/dist/src/execution/session-inbox/owner.js +1 -1
  443. package/dist/src/execution/session-inbox/pre-v27.d.ts +5 -0
  444. package/dist/src/execution/session-inbox/pre-v27.js +1 -0
  445. package/dist/src/execution/session-inbox/protocol.js +1 -1
  446. package/dist/src/execution/session-inbox/resume.d.ts +1 -0
  447. package/dist/src/execution/session-inbox/resume.js +1 -1
  448. package/dist/src/execution/session-inbox/stranded-replay-guard.js +1 -1
  449. package/dist/src/execution/session-workflow-tool-run.js +1 -1
  450. package/dist/src/execution/session.d.ts +3 -14
  451. package/dist/src/execution/session.js +2 -2
  452. package/dist/src/execution/settle-cancelled-turn-step.d.ts +3 -0
  453. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  454. package/dist/src/execution/stop-runs.d.ts +35 -0
  455. package/dist/src/execution/stop-runs.js +1 -0
  456. package/dist/src/execution/tasks/model-step.d.ts +5 -9
  457. package/dist/src/execution/tasks/model-step.js +1 -1
  458. package/dist/src/execution/tasks/render.d.ts +5 -2
  459. package/dist/src/execution/tasks/render.js +1 -1
  460. package/dist/src/execution/tasks/session.d.ts +6 -3
  461. package/dist/src/execution/tasks/session.js +1 -1
  462. package/dist/src/execution/tasks/start.d.ts +9 -6
  463. package/dist/src/execution/tasks/start.js +1 -1
  464. package/dist/src/execution/tasks/steps.d.ts +11 -6
  465. package/dist/src/execution/tasks/steps.js +1 -1
  466. package/dist/src/execution/tasks/table.d.ts +18 -5
  467. package/dist/src/execution/tasks/table.js +1 -1
  468. package/dist/src/execution/tasks/task-id-input.js +1 -1
  469. package/dist/src/execution/terminal-session-completion-step.d.ts +11 -1
  470. package/dist/src/execution/terminal-session-completion-step.js +1 -1
  471. package/dist/src/execution/terminal-session-failure-step.d.ts +6 -1
  472. package/dist/src/execution/terminal-session-failure-step.js +1 -1
  473. package/dist/src/execution/terminate-child-sessions-step.d.ts +5 -1
  474. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  475. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  476. package/dist/src/execution/tools/workflow/answer.d.ts +4 -5
  477. package/dist/src/execution/tools/workflow/answer.js +1 -1
  478. package/dist/src/execution/tools/workflow/apply-run-messages-step.d.ts +1 -1
  479. package/dist/src/execution/tools/workflow/apply-run-messages-step.js +1 -1
  480. package/dist/src/execution/tools/workflow/ask.d.ts +3 -3
  481. package/dist/src/execution/tools/workflow/body.js +1 -1
  482. package/dist/src/execution/tools/workflow/harness-definition.js +1 -1
  483. package/dist/src/execution/tools/workflow/messages.d.ts +25 -33
  484. package/dist/src/execution/tools/workflow/messages.js +1 -1
  485. package/dist/src/execution/tools/workflow/owner-inbox.d.ts +9 -5
  486. package/dist/src/execution/tools/workflow/owner-inbox.js +1 -1
  487. package/dist/src/execution/tools/workflow/owner.d.ts +3 -3
  488. package/dist/src/execution/tools/workflow/owner.js +1 -1
  489. package/dist/src/execution/tools/workflow/serve.js +1 -1
  490. package/dist/src/execution/tools/workflow/step.js +1 -1
  491. package/dist/src/execution/tools/workflow/withdraw-step.d.ts +2 -2
  492. package/dist/src/execution/tools/workflow/withdraw-step.js +1 -1
  493. package/dist/src/execution/v26-history.d.ts +28 -0
  494. package/dist/src/execution/v26-history.fixtures.d.ts +4 -0
  495. package/dist/src/execution/v26-history.fixtures.js +2 -0
  496. package/dist/src/execution/v26-history.js +1 -0
  497. package/dist/src/execution/web-fetch/request.js +1 -1
  498. package/dist/src/execution/workflow-errors.d.ts +5 -0
  499. package/dist/src/execution/workflow-errors.js +1 -1
  500. package/dist/src/execution/workflow-runtime.js +1 -1
  501. package/dist/src/extensions/code/extension/extension.d.ts +1 -11
  502. package/dist/src/extensions/code/extension/extension.js +1 -1
  503. package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +5 -1
  504. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
  505. package/dist/src/extensions/code/extension/lib/repository-root.js +1 -1
  506. package/dist/src/extensions/code/extension/lib/sandbox.d.ts +0 -4
  507. package/dist/src/extensions/code/extension/lib/sandbox.js +2 -2
  508. package/dist/src/extensions/code/extension/lib/tooling.d.ts +1 -1
  509. package/dist/src/extensions/code/extension/lib/tooling.js +1 -1
  510. package/dist/src/extensions/code/extension/lib/workspace-root.d.ts +1 -31
  511. package/dist/src/extensions/code/extension/lib/workspace-root.js +1 -1
  512. package/dist/src/extensions/code/extension/subagents/worker/agent.d.ts +1 -1
  513. package/dist/src/extensions/code/extension/subagents/worker/agent.js +1 -1
  514. package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -2
  515. package/dist/src/extensions/code/extension/tools/grep.d.ts +1 -28
  516. package/dist/src/extensions/code/extension/tools/grep.js +1 -1
  517. package/dist/src/extensions/code/sandbox.d.ts +1 -0
  518. package/dist/src/extensions/code/sandbox.js +1 -0
  519. package/dist/src/extensions/code/tools.d.ts +1 -5
  520. package/dist/src/extensions/code/tools.js +1 -1
  521. package/dist/src/extensions/git/extension/extension.d.ts +3 -3
  522. package/dist/src/extensions/git/extension/instructions/github.d.ts +1 -1
  523. package/dist/src/extensions/git/extension/instructions/github.js +1 -1
  524. package/dist/src/extensions/git/extension/lib/gh-tool.d.ts +2 -11
  525. package/dist/src/extensions/git/extension/lib/gh-tool.js +1 -1
  526. package/dist/src/extensions/git/extension/lib/github-shell.d.ts +13 -3
  527. package/dist/src/extensions/git/extension/lib/sandbox.d.ts +0 -4
  528. package/dist/src/extensions/git/extension/lib/sandbox.js +1 -1
  529. package/dist/src/extensions/git/extension/skills/pr.d.ts +1 -4
  530. package/dist/src/extensions/git/extension/skills/pr.js +1 -1
  531. package/dist/src/extensions/git/extension/tools/gh.d.ts +1 -26
  532. package/dist/src/extensions/git/extension/tools/gh.js +1 -1
  533. package/dist/src/framework/sources/modules/schedule-collection-wrapper.js +1 -1
  534. package/dist/src/harness/action-presentation.d.ts +3 -5
  535. package/dist/src/harness/action-presentation.js +1 -1
  536. package/dist/src/harness/action-result-helpers.d.ts +2 -8
  537. package/dist/src/harness/action-result-helpers.js +1 -1
  538. package/dist/src/harness/approval-outcome.d.ts +32 -0
  539. package/dist/src/harness/approval-outcome.js +1 -0
  540. package/dist/src/harness/attachment-staging.js +1 -1
  541. package/dist/src/harness/authorization.d.ts +2 -3
  542. package/dist/src/harness/authorization.js +1 -1
  543. package/dist/src/harness/call-executor.d.ts +118 -0
  544. package/dist/src/harness/call-executor.js +1 -0
  545. package/dist/src/harness/call-facts.d.ts +31 -0
  546. package/dist/src/harness/call-facts.js +1 -0
  547. package/dist/src/harness/call-outcome.d.ts +6 -0
  548. package/dist/src/harness/call-outcome.js +1 -0
  549. package/dist/src/harness/compaction/engine.d.ts +11 -0
  550. package/dist/src/harness/compaction/engine.js +2 -2
  551. package/dist/src/harness/compaction/step.d.ts +25 -5
  552. package/dist/src/harness/compaction/step.js +1 -1
  553. package/dist/src/harness/coordination.js +1 -1
  554. package/dist/src/harness/current-messages.d.ts +10 -0
  555. package/dist/src/harness/current-messages.js +1 -1
  556. package/dist/src/harness/emission.d.ts +9 -20
  557. package/dist/src/harness/emission.js +1 -1
  558. package/dist/src/harness/execute-call.d.ts +6 -23
  559. package/dist/src/harness/execute-call.js +1 -1
  560. package/dist/src/harness/execute-tool.d.ts +7 -3
  561. package/dist/src/harness/facts.d.ts +82 -0
  562. package/dist/src/harness/facts.js +1 -0
  563. package/dist/src/harness/finish-reason.d.ts +6 -1
  564. package/dist/src/harness/generation-steering.d.ts +4 -2
  565. package/dist/src/harness/generation-steering.js +1 -1
  566. package/dist/src/harness/hitl/approval-prompt.d.ts +3 -3
  567. package/dist/src/harness/hitl/approval-prompt.js +3 -3
  568. package/dist/src/harness/hitl/approvals.d.ts +66 -78
  569. package/dist/src/harness/hitl/approvals.js +2 -1
  570. package/dist/src/harness/hitl/approved-calls.d.ts +14 -36
  571. package/dist/src/harness/hitl/approved-calls.js +1 -1
  572. package/dist/src/harness/hitl/budget-request.d.ts +8 -46
  573. package/dist/src/harness/hitl/budget-request.js +1 -1
  574. package/dist/src/harness/hitl/budget.d.ts +9 -8
  575. package/dist/src/harness/hitl/budget.js +1 -1
  576. package/dist/src/harness/hitl/delivery.d.ts +16 -17
  577. package/dist/src/harness/hitl/delivery.js +1 -1
  578. package/dist/src/harness/hitl/index.d.ts +14 -19
  579. package/dist/src/harness/hitl/index.js +1 -1
  580. package/dist/src/harness/hitl/intake.d.ts +32 -43
  581. package/dist/src/harness/hitl/intake.js +1 -1
  582. package/dist/src/harness/hitl/relays.d.ts +7 -51
  583. package/dist/src/harness/hitl/relays.js +1 -1
  584. package/dist/src/harness/hitl/requests.d.ts +11 -53
  585. package/dist/src/harness/hitl/requests.js +1 -1
  586. package/dist/src/harness/hitl/responders.d.ts +50 -0
  587. package/dist/src/harness/hitl/responders.js +1 -0
  588. package/dist/src/harness/hitl/sign-ins.d.ts +7 -3
  589. package/dist/src/harness/hitl/sign-ins.js +1 -1
  590. package/dist/src/harness/hitl/stale-responses.d.ts +11 -11
  591. package/dist/src/harness/hitl/stale-responses.js +3 -3
  592. package/dist/src/harness/inline-tool-authorization.d.ts +8 -9
  593. package/dist/src/harness/inline-tool-authorization.js +1 -1
  594. package/dist/src/harness/interaction-facts.d.ts +36 -0
  595. package/dist/src/harness/interaction-facts.js +1 -0
  596. package/dist/src/harness/interaction-relay.d.ts +10 -0
  597. package/dist/src/harness/interaction-relay.js +1 -0
  598. package/dist/src/harness/interrupted-attempt.d.ts +19 -0
  599. package/dist/src/harness/interrupted-attempt.js +2 -0
  600. package/dist/src/harness/messages.d.ts +28 -15
  601. package/dist/src/harness/messages.js +1 -1
  602. package/dist/src/harness/model-call/call.d.ts +28 -12
  603. package/dist/src/harness/model-call/call.js +1 -1
  604. package/dist/src/harness/model-call/errors.js +1 -1
  605. package/dist/src/harness/model-call/failure.d.ts +4 -49
  606. package/dist/src/harness/model-call/failure.js +1 -1
  607. package/dist/src/harness/model-call/model.js +1 -1
  608. package/dist/src/harness/model-call/recovery.d.ts +4 -32
  609. package/dist/src/harness/model-call/recovery.js +1 -1
  610. package/dist/src/harness/model-call/request.d.ts +0 -1
  611. package/dist/src/harness/model-call/request.js +1 -1
  612. package/dist/src/harness/model-call/response.d.ts +22 -12
  613. package/dist/src/harness/model-call/response.js +1 -1
  614. package/dist/src/harness/model-call/retry.d.ts +23 -6
  615. package/dist/src/harness/model-call/retry.js +1 -1
  616. package/dist/src/harness/model-call/run.d.ts +4 -12
  617. package/dist/src/harness/model-call/run.js +1 -1
  618. package/dist/src/harness/model-call/tools.d.ts +0 -19
  619. package/dist/src/harness/model-call/tools.js +1 -1
  620. package/dist/src/harness/model-call/unique-call-ids.d.ts +13 -0
  621. package/dist/src/harness/model-call/unique-call-ids.js +1 -0
  622. package/dist/src/harness/model-call/usage.d.ts +7 -5
  623. package/dist/src/harness/model-call/usage.js +1 -1
  624. package/dist/src/harness/ordered-stream-emitter.d.ts +1 -0
  625. package/dist/src/harness/ordered-stream-emitter.js +1 -1
  626. package/dist/src/harness/provider-tool-history.js +1 -1
  627. package/dist/src/harness/publication.d.ts +4 -0
  628. package/dist/src/harness/publication.js +1 -0
  629. package/dist/src/harness/request-envelope.d.ts +0 -3
  630. package/dist/src/harness/request-envelope.js +1 -1
  631. package/dist/src/harness/running-work.d.ts +10 -0
  632. package/dist/src/harness/running-work.js +1 -0
  633. package/dist/src/harness/semantic-errors/rules/gateway.js +1 -1
  634. package/dist/src/harness/session-machine/cascade.d.ts +17 -0
  635. package/dist/src/harness/session-machine/cascade.js +1 -0
  636. package/dist/src/harness/session-machine/commit.d.ts +16 -16
  637. package/dist/src/harness/session-machine/commit.js +1 -1
  638. package/dist/src/harness/session-machine/current.d.ts +25 -17
  639. package/dist/src/harness/session-machine/current.js +1 -1
  640. package/dist/src/harness/session-machine/state.d.ts +43 -16
  641. package/dist/src/harness/session-machine/state.js +1 -1
  642. package/dist/src/harness/session-machine/suspended-steps.d.ts +22 -0
  643. package/dist/src/harness/session-machine/suspended-steps.js +1 -0
  644. package/dist/src/harness/session-machine/transitions.d.ts +144 -120
  645. package/dist/src/harness/session-machine/transitions.js +1 -1
  646. package/dist/src/harness/session-machine/view.d.ts +12 -8
  647. package/dist/src/harness/session-machine/view.js +1 -1
  648. package/dist/src/harness/session-machine/waiting.d.ts +16 -0
  649. package/dist/src/harness/session-machine/waiting.js +1 -0
  650. package/dist/src/harness/session-usage.d.ts +22 -0
  651. package/dist/src/harness/session-usage.js +1 -0
  652. package/dist/src/harness/step/after-model.d.ts +1 -4
  653. package/dist/src/harness/step/after-model.js +1 -1
  654. package/dist/src/harness/step/context.d.ts +21 -21
  655. package/dist/src/harness/step/context.js +1 -1
  656. package/dist/src/harness/step/intake.d.ts +7 -8
  657. package/dist/src/harness/step/intake.js +1 -1
  658. package/dist/src/harness/step/park.d.ts +19 -0
  659. package/dist/src/harness/step/park.js +1 -0
  660. package/dist/src/harness/step/prompt.d.ts +4 -5
  661. package/dist/src/harness/step/prompt.js +1 -1
  662. package/dist/src/harness/step-hooks.d.ts +24 -24
  663. package/dist/src/harness/step-hooks.js +1 -1
  664. package/dist/src/harness/stream-actions.d.ts +3 -9
  665. package/dist/src/harness/stream-actions.js +1 -1
  666. package/dist/src/harness/token-estimate.js +1 -1
  667. package/dist/src/harness/tool-history-repair.js +1 -1
  668. package/dist/src/harness/tool-loop.js +1 -1
  669. package/dist/src/harness/tools.d.ts +22 -38
  670. package/dist/src/harness/tools.js +1 -1
  671. package/dist/src/harness/types.d.ts +69 -67
  672. package/dist/src/harness/user-parts.d.ts +4 -0
  673. package/dist/src/harness/user-parts.js +1 -0
  674. package/dist/src/harness/workflow-tool-runs.d.ts +0 -1
  675. package/dist/src/harness/workflow-tool-runs.js +1 -1
  676. package/dist/src/instrumentation/ai-sdk-hook-bridge.d.ts +2 -2
  677. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  678. package/dist/src/instrumentation/channel-delivery.d.ts +4 -23
  679. package/dist/src/instrumentation/channel-delivery.js +1 -1
  680. package/dist/src/instrumentation/content.d.ts +1 -7
  681. package/dist/src/instrumentation/content.js +1 -1
  682. package/dist/src/instrumentation/dispatch.js +1 -1
  683. package/dist/src/instrumentation/lifecycle.d.ts +135 -198
  684. package/dist/src/instrumentation/lifecycle.js +1 -1
  685. package/dist/src/instrumentation/memory.d.ts +4 -2
  686. package/dist/src/instrumentation/memory.js +1 -1
  687. package/dist/src/instrumentation/native-events.d.ts +17 -10
  688. package/dist/src/instrumentation/native-events.js +1 -1
  689. package/dist/src/instrumentation/prepare-trace-context.d.ts +3 -3
  690. package/dist/src/instrumentation/provider.d.ts +20 -28
  691. package/dist/src/instrumentation/providers.js +1 -1
  692. package/dist/src/instrumentation/runtime-context.d.ts +1 -0
  693. package/dist/src/instrumentation/runtime-context.js +1 -1
  694. package/dist/src/instrumentation/runtime.d.ts +9 -30
  695. package/dist/src/instrumentation/runtime.js +1 -1
  696. package/dist/src/instrumentation/scope.d.ts +6 -0
  697. package/dist/src/instrumentation/scope.js +1 -0
  698. package/dist/src/instrumentation/session-context.d.ts +1 -1
  699. package/dist/src/instrumentation/session-context.js +1 -1
  700. package/dist/src/instrumentation/session-init.js +1 -1
  701. package/dist/src/instrumentation/setup-context.d.ts +2 -2
  702. package/dist/src/instrumentation/setup-context.js +1 -1
  703. package/dist/src/instrumentation/state.d.ts +0 -21
  704. package/dist/src/instrumentation/state.js +1 -1
  705. package/dist/src/internal/application/compiled-artifacts.d.ts +2 -0
  706. package/dist/src/internal/application/compiled-artifacts.js +2 -2
  707. package/dist/src/internal/application/dev-environment.d.ts +8 -2
  708. package/dist/src/internal/application/dev-environment.js +1 -1
  709. package/dist/src/internal/application/optional-package-install.js +1 -1
  710. package/dist/src/internal/application/stamped-package-version.js +1 -1
  711. package/dist/src/internal/authored-definition/approval.d.ts +2 -4
  712. package/dist/src/internal/authored-definition/approval.js +1 -1
  713. package/dist/src/internal/authored-definition/connection.js +1 -1
  714. package/dist/src/internal/authored-definition/core.d.ts +1 -1
  715. package/dist/src/internal/authored-definition/core.js +1 -1
  716. package/dist/src/internal/authored-definition/memory.js +1 -1
  717. package/dist/src/internal/authored-definition/schema-backed.d.ts +0 -3
  718. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  719. package/dist/src/internal/authored-module-loader.d.ts +0 -1
  720. package/dist/src/internal/authored-module-loader.js +1 -1
  721. package/dist/src/internal/authored-package-boundary.js +1 -1
  722. package/dist/src/internal/git.d.ts +2 -0
  723. package/dist/src/internal/git.js +1 -0
  724. package/dist/src/internal/grep.d.ts +1 -0
  725. package/dist/src/internal/grep.js +1 -0
  726. package/dist/src/internal/helpers/markdown.js +1 -1
  727. package/dist/src/internal/invocation/agent-invocation.d.ts +16 -19
  728. package/dist/src/internal/invocation/metadata.d.ts +0 -2
  729. package/dist/src/internal/invocation/metadata.js +1 -1
  730. package/dist/src/internal/invocation/workflow-execution.d.ts +4 -4
  731. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  732. package/dist/src/internal/legacy-events.d.ts +5 -0
  733. package/dist/src/internal/legacy-events.js +1 -0
  734. package/dist/src/internal/logging.d.ts +0 -12
  735. package/dist/src/internal/logging.js +1 -1
  736. package/dist/src/internal/mcp/protected-resource.js +1 -1
  737. package/dist/src/internal/mcp/published-tools.js +1 -1
  738. package/dist/src/internal/model-auth/api-key.js +1 -1
  739. package/dist/src/internal/model-auth/development-broker-client.js +1 -1
  740. package/dist/src/internal/model-auth/development-broker-server.js +1 -1
  741. package/dist/src/internal/model-auth/transport.js +1 -1
  742. package/dist/src/internal/model-catalog.d.ts +39 -16
  743. package/dist/src/internal/model-catalog.js +1 -1
  744. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  745. package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -1
  746. package/dist/src/internal/nitro/host/build-extension.js +2 -2
  747. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  748. package/dist/src/internal/nitro/host/dev-build-host.js +1 -1
  749. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  750. package/dist/src/internal/nitro/host/dev-server-state.js +1 -1
  751. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
  752. package/dist/src/internal/nitro/host/start-development-server.js +1 -1
  753. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  754. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  755. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +8 -1
  756. package/dist/src/internal/nitro/routes/info.js +1 -1
  757. package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
  758. package/dist/src/internal/scaffold.d.ts +5 -0
  759. package/dist/src/internal/scaffold.js +1 -0
  760. package/dist/src/internal/workflow/cancel-expired-development-run.js +1 -1
  761. package/dist/src/internal/workflow/development-world-client.js +1 -1
  762. package/dist/src/internal/workflow/development-world-server.js +1 -1
  763. package/dist/src/internal/workflow/local-world-data-directory.js +1 -1
  764. package/dist/src/internal/workspace.d.ts +1 -0
  765. package/dist/src/internal/workspace.js +1 -0
  766. package/dist/src/models/auto.d.ts +27 -14
  767. package/dist/src/models/auto.js +2 -2
  768. package/dist/src/protocol/delivery.d.ts +12 -0
  769. package/dist/src/protocol/delivery.js +1 -0
  770. package/dist/src/protocol/descendant-observation.d.ts +12 -0
  771. package/dist/src/protocol/descendant-observation.js +1 -0
  772. package/dist/src/protocol/interaction-json.d.ts +66 -0
  773. package/dist/src/protocol/interaction-json.js +1 -0
  774. package/dist/src/protocol/interaction-options.d.ts +4 -0
  775. package/dist/src/protocol/interaction-options.js +1 -0
  776. package/dist/src/protocol/remote-agent-protocol.d.ts +28 -1
  777. package/dist/src/protocol/remote-agent-protocol.js +1 -1
  778. package/dist/src/protocol/routes.d.ts +3 -2
  779. package/dist/src/protocol/routes.js +1 -1
  780. package/dist/src/protocol/session-event.d.ts +22 -0
  781. package/dist/src/protocol/session-event.js +1 -0
  782. package/dist/src/protocol/session-events/authoring.d.ts +2 -0
  783. package/dist/src/protocol/session-events/authoring.js +1 -0
  784. package/dist/src/protocol/session-events/catalog.d.ts +50 -0
  785. package/dist/src/protocol/session-events/catalog.js +1 -0
  786. package/dist/src/protocol/session-events/checker.d.ts +23 -0
  787. package/dist/src/protocol/session-events/checker.js +1 -0
  788. package/dist/src/protocol/session-events/common.d.ts +105 -0
  789. package/dist/src/protocol/session-events/common.js +1 -0
  790. package/dist/src/protocol/session-events/envelope.d.ts +174 -0
  791. package/dist/src/protocol/session-events/envelope.js +1 -0
  792. package/dist/src/protocol/session-events/facts.d.ts +24 -0
  793. package/dist/src/protocol/session-events/facts.js +1 -0
  794. package/dist/src/protocol/session-events/families/call.d.ts +142 -0
  795. package/dist/src/protocol/session-events/families/call.js +1 -0
  796. package/dist/src/protocol/session-events/families/child.d.ts +51 -0
  797. package/dist/src/protocol/session-events/families/child.js +1 -0
  798. package/dist/src/protocol/session-events/families/content.d.ts +56 -0
  799. package/dist/src/protocol/session-events/families/content.js +1 -0
  800. package/dist/src/protocol/session-events/families/context.d.ts +55 -0
  801. package/dist/src/protocol/session-events/families/context.js +1 -0
  802. package/dist/src/protocol/session-events/families/delivery.d.ts +86 -0
  803. package/dist/src/protocol/session-events/families/delivery.js +1 -0
  804. package/dist/src/protocol/session-events/families/interaction.d.ts +163 -0
  805. package/dist/src/protocol/session-events/families/interaction.js +1 -0
  806. package/dist/src/protocol/session-events/families/model.d.ts +88 -0
  807. package/dist/src/protocol/session-events/families/model.js +1 -0
  808. package/dist/src/protocol/session-events/families/response.d.ts +66 -0
  809. package/dist/src/protocol/session-events/families/response.js +1 -0
  810. package/dist/src/protocol/session-events/families/session.d.ts +73 -0
  811. package/dist/src/protocol/session-events/families/session.js +1 -0
  812. package/dist/src/protocol/session-events/families/task.d.ts +46 -0
  813. package/dist/src/protocol/session-events/families/task.js +1 -0
  814. package/dist/src/protocol/session-events/families/turn.d.ts +68 -0
  815. package/dist/src/protocol/session-events/families/turn.js +1 -0
  816. package/dist/src/protocol/session-events/families/usage.d.ts +30 -0
  817. package/dist/src/protocol/session-events/families/usage.js +1 -0
  818. package/dist/src/protocol/session-events/guards.d.ts +11 -0
  819. package/dist/src/protocol/session-events/guards.js +1 -0
  820. package/dist/src/protocol/session-events/index.d.ts +16 -0
  821. package/dist/src/protocol/session-events/index.js +1 -0
  822. package/dist/src/protocol/session-events/json.d.ts +20 -0
  823. package/dist/src/protocol/session-events/json.js +1 -0
  824. package/dist/src/protocol/session-events/schemas.d.ts +320 -0
  825. package/dist/src/protocol/session-events/schemas.js +1 -0
  826. package/dist/src/protocol/session-http.d.ts +7 -0
  827. package/dist/src/protocol/session-http.js +1 -0
  828. package/dist/src/protocol/session-lines.d.ts +19 -0
  829. package/dist/src/protocol/session-lines.js +1 -0
  830. package/dist/src/protocol/session-projection/fold.d.ts +75 -0
  831. package/dist/src/protocol/session-projection/fold.js +1 -0
  832. package/dist/src/protocol/session-projection/index.d.ts +4 -0
  833. package/dist/src/protocol/session-projection/index.js +1 -0
  834. package/dist/src/protocol/session-projection/observations.d.ts +150 -0
  835. package/dist/src/protocol/session-projection/observations.js +1 -0
  836. package/dist/src/protocol/session-projection/public-view.d.ts +74 -0
  837. package/dist/src/protocol/session-projection/public-view.js +1 -0
  838. package/dist/src/protocol/session-projection/reader.d.ts +62 -0
  839. package/dist/src/protocol/session-projection/reader.js +1 -0
  840. package/dist/src/protocol/session-projection/request-status.d.ts +7 -0
  841. package/dist/src/protocol/session-projection/request-status.js +1 -0
  842. package/dist/src/protocol/session-projection/selectors.d.ts +169 -0
  843. package/dist/src/protocol/session-projection/selectors.js +2 -0
  844. package/dist/src/protocol/session-projection/session-view.d.ts +18 -0
  845. package/dist/src/protocol/session-projection/session-view.js +1 -0
  846. package/dist/src/protocol/session-projection/tables.d.ts +237 -0
  847. package/dist/src/protocol/session-projection/tables.js +1 -0
  848. package/dist/src/protocol/session-projection/tree.d.ts +72 -0
  849. package/dist/src/protocol/session-projection/tree.js +1 -0
  850. package/dist/src/protocol/session-projection.d.ts +38 -157
  851. package/dist/src/protocol/session-projection.js +1 -1
  852. package/dist/src/protocol/task-tools.d.ts +8 -6
  853. package/dist/src/protocol/task-tools.js +1 -1
  854. package/dist/src/protocol/v26-interactions.d.ts +11 -0
  855. package/dist/src/protocol/v26-interactions.js +1 -0
  856. package/dist/src/protocol/v26-lines.d.ts +5 -0
  857. package/dist/src/protocol/v26-lines.js +1 -0
  858. package/dist/src/public/agents/auth.d.ts +2 -2
  859. package/dist/src/public/agents/auth.js +1 -1
  860. package/dist/src/public/ai/index.d.ts +1 -0
  861. package/dist/src/public/channels/auth.d.ts +2 -532
  862. package/dist/src/public/channels/auth.js +1 -1
  863. package/dist/src/public/channels/chat-sdk/authorization.d.ts +5 -2
  864. package/dist/src/public/channels/chat-sdk/authorization.js +1 -3
  865. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +10 -10
  866. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -3
  867. package/dist/src/public/channels/chat-sdk/index.d.ts +1 -1
  868. package/dist/src/public/channels/chat-sdk/index.js +1 -1
  869. package/dist/src/public/channels/chat-sdk/input-actions.d.ts +4 -4
  870. package/dist/src/public/channels/chat-sdk/input-actions.js +3 -3
  871. package/dist/src/public/channels/chat-sdk/{messageToUserContent.d.ts → message-content.d.ts} +3 -3
  872. package/dist/src/public/channels/chat-sdk/message-content.js +1 -0
  873. package/dist/src/public/channels/discord/api.d.ts +8 -11
  874. package/dist/src/public/channels/discord/api.js +1 -1
  875. package/dist/src/public/channels/discord/attachments.d.ts +2 -2
  876. package/dist/src/public/channels/discord/authorization.d.ts +3 -13
  877. package/dist/src/public/channels/discord/authorization.js +2 -2
  878. package/dist/src/public/channels/discord/credentials.d.ts +11 -0
  879. package/dist/src/public/channels/discord/credentials.js +1 -0
  880. package/dist/src/public/channels/discord/defaults.d.ts +7 -1
  881. package/dist/src/public/channels/discord/defaults.js +1 -3
  882. package/dist/src/public/channels/discord/discordChannel.d.ts +36 -48
  883. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  884. package/dist/src/public/channels/discord/hitl.d.ts +5 -4
  885. package/dist/src/public/channels/discord/hitl.js +1 -1
  886. package/dist/src/public/channels/discord/index.d.ts +4 -12
  887. package/dist/src/public/channels/discord/index.js +1 -1
  888. package/dist/src/public/channels/discord/messages.js +1 -1
  889. package/dist/src/public/channels/github/defaults.js +2 -4
  890. package/dist/src/public/channels/github/githubChannel.d.ts +23 -36
  891. package/dist/src/public/channels/github/githubChannel.js +1 -1
  892. package/dist/src/public/channels/github/index.d.ts +3 -2
  893. package/dist/src/public/channels/github/index.js +1 -1
  894. package/dist/src/public/channels/github/state.d.ts +2 -0
  895. package/dist/src/public/channels/imessage-tapbacks.d.ts +1 -1
  896. package/dist/src/public/channels/index.d.ts +16 -37
  897. package/dist/src/public/channels/index.js +1 -1
  898. package/dist/src/public/channels/linear/defaults.js +2 -4
  899. package/dist/src/public/channels/linear/hitl.d.ts +3 -3
  900. package/dist/src/public/channels/linear/hitl.js +2 -2
  901. package/dist/src/public/channels/linear/inbound-uploads.d.ts +3 -3
  902. package/dist/src/public/channels/linear/inbound-uploads.js +1 -1
  903. package/dist/src/public/channels/linear/inbound.d.ts +5 -3
  904. package/dist/src/public/channels/linear/inbound.js +1 -1
  905. package/dist/src/public/channels/linear/index.d.ts +4 -6
  906. package/dist/src/public/channels/linear/index.js +1 -1
  907. package/dist/src/public/channels/linear/linearChannel.d.ts +19 -30
  908. package/dist/src/public/channels/linear/linearChannel.js +1 -1
  909. package/dist/src/public/channels/linq/inboundContent.d.ts +2 -2
  910. package/dist/src/public/channels/linq/inboundContent.js +1 -1
  911. package/dist/src/public/channels/linq/index.d.ts +1 -1
  912. package/dist/src/public/channels/linq/linqChannel.d.ts +1 -2
  913. package/dist/src/public/channels/mcp.d.ts +2 -2
  914. package/dist/src/public/channels/mcp.js +1 -1
  915. package/dist/src/public/channels/photon/inboundContent.d.ts +2 -2
  916. package/dist/src/public/channels/photon/inboundContent.js +1 -1
  917. package/dist/src/public/channels/photon/index.d.ts +1 -1
  918. package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +1 -2
  919. package/dist/src/public/channels/reply.d.ts +22 -0
  920. package/dist/src/public/channels/reply.js +3 -0
  921. package/dist/src/public/channels/slack/action-status.js +1 -1
  922. package/dist/src/public/channels/slack/{input-response.d.ts → answers.d.ts} +5 -5
  923. package/dist/src/public/channels/slack/answers.js +1 -0
  924. package/dist/src/public/channels/slack/api.d.ts +5 -2
  925. package/dist/src/public/channels/slack/api.js +1 -1
  926. package/dist/src/public/channels/slack/approval-cards.d.ts +15 -5
  927. package/dist/src/public/channels/slack/approval-cards.js +2 -2
  928. package/dist/src/public/channels/slack/attachments.d.ts +6 -6
  929. package/dist/src/public/channels/slack/attachments.js +1 -1
  930. package/dist/src/public/channels/slack/blocks.d.ts +1 -1
  931. package/dist/src/public/channels/slack/blocks.js +1 -1
  932. package/dist/src/public/channels/slack/cards.d.ts +576 -0
  933. package/dist/src/public/channels/slack/cards.js +1 -0
  934. package/dist/src/public/channels/slack/connections.d.ts +4 -22
  935. package/dist/src/public/channels/slack/connections.js +1 -1
  936. package/dist/src/public/channels/slack/defaults.d.ts +13 -2
  937. package/dist/src/public/channels/slack/defaults.js +5 -5
  938. package/dist/src/public/channels/slack/hitl.d.ts +20 -19
  939. package/dist/src/public/channels/slack/hitl.js +3 -3
  940. package/dist/src/public/channels/slack/index.d.ts +7 -16
  941. package/dist/src/public/channels/slack/index.js +1 -1
  942. package/dist/src/public/channels/slack/interaction-cards.js +1 -1
  943. package/dist/src/public/channels/slack/interactions.d.ts +2 -2
  944. package/dist/src/public/channels/slack/interactions.js +1 -1
  945. package/dist/src/public/channels/slack/limits.js +1 -1
  946. package/dist/src/public/channels/slack/private-approval-delivery.d.ts +3 -3
  947. package/dist/src/public/channels/slack/private-approval-delivery.js +1 -1
  948. package/dist/src/public/channels/slack/renderers.d.ts +21 -27
  949. package/dist/src/public/channels/slack/renderers.js +1 -1
  950. package/dist/src/public/channels/slack/reply-delivery.d.ts +4 -4
  951. package/dist/src/public/channels/slack/reply-delivery.js +1 -1
  952. package/dist/src/public/channels/slack/session-operations.d.ts +4 -4
  953. package/dist/src/public/channels/slack/sign-in-cancel.js +1 -1
  954. package/dist/src/public/channels/slack/slackChannel.d.ts +30 -37
  955. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  956. package/dist/src/public/channels/slack/task-card.d.ts +9 -9
  957. package/dist/src/public/channels/slack/task-card.js +1 -1
  958. package/dist/src/public/channels/teams/api.d.ts +3 -7
  959. package/dist/src/public/channels/teams/attachments.d.ts +4 -4
  960. package/dist/src/public/channels/teams/authorization.d.ts +5 -9
  961. package/dist/src/public/channels/teams/authorization.js +1 -1
  962. package/dist/src/public/channels/teams/credentials.d.ts +13 -0
  963. package/dist/src/public/channels/teams/credentials.js +1 -0
  964. package/dist/src/public/channels/teams/defaults.d.ts +2 -6
  965. package/dist/src/public/channels/teams/defaults.js +1 -3
  966. package/dist/src/public/channels/teams/hitl.d.ts +8 -7
  967. package/dist/src/public/channels/teams/hitl.js +1 -1
  968. package/dist/src/public/channels/teams/index.d.ts +6 -8
  969. package/dist/src/public/channels/teams/index.js +1 -1
  970. package/dist/src/public/channels/teams/teamsChannel.d.ts +25 -44
  971. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  972. package/dist/src/public/channels/telegram/api.d.ts +3 -4
  973. package/dist/src/public/channels/telegram/attachments.d.ts +5 -5
  974. package/dist/src/public/channels/telegram/authorization-callback.js +1 -1
  975. package/dist/src/public/channels/telegram/authorization.d.ts +4 -8
  976. package/dist/src/public/channels/telegram/authorization.js +2 -2
  977. package/dist/src/public/channels/telegram/credentials.d.ts +9 -0
  978. package/dist/src/public/channels/telegram/credentials.js +1 -0
  979. package/dist/src/public/channels/telegram/defaults.js +1 -3
  980. package/dist/src/public/channels/telegram/hitl.d.ts +22 -20
  981. package/dist/src/public/channels/telegram/hitl.js +2 -2
  982. package/dist/src/public/channels/telegram/index.d.ts +5 -7
  983. package/dist/src/public/channels/telegram/index.js +1 -1
  984. package/dist/src/public/channels/telegram/telegramChannel.d.ts +23 -36
  985. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  986. package/dist/src/public/channels/text.d.ts +4 -0
  987. package/dist/src/public/channels/text.js +1 -0
  988. package/dist/src/public/channels/twilio/api.d.ts +8 -8
  989. package/dist/src/public/channels/twilio/api.js +1 -1
  990. package/dist/src/public/channels/twilio/credentials.d.ts +7 -0
  991. package/dist/src/public/channels/twilio/credentials.js +1 -0
  992. package/dist/src/public/channels/twilio/defaults.d.ts +0 -1
  993. package/dist/src/public/channels/twilio/defaults.js +1 -5
  994. package/dist/src/public/channels/twilio/inbound.d.ts +2 -2
  995. package/dist/src/public/channels/twilio/index.d.ts +4 -4
  996. package/dist/src/public/channels/twilio/index.js +1 -1
  997. package/dist/src/public/channels/twilio/twilioChannel.d.ts +24 -37
  998. package/dist/src/public/channels/twilio/twilioChannel.js +1 -1
  999. package/dist/src/public/channels/twilio/verify.d.ts +6 -4
  1000. package/dist/src/public/channels/undelivered-reply.d.ts +2 -2
  1001. package/dist/src/public/channels/upload-policy.d.ts +7 -7
  1002. package/dist/src/public/connections/index.d.ts +3 -5
  1003. package/dist/src/public/context/index.d.ts +3 -2
  1004. package/dist/src/public/definitions/agent.d.ts +18 -18
  1005. package/dist/src/public/definitions/agent.js +1 -1
  1006. package/dist/src/public/definitions/approval.d.ts +1 -1
  1007. package/dist/src/public/definitions/channel.d.ts +57 -60
  1008. package/dist/src/public/definitions/channel.js +1 -1
  1009. package/dist/src/public/definitions/connections/dynamic.d.ts +3 -15
  1010. package/dist/src/public/definitions/connections/dynamic.js +1 -1
  1011. package/dist/src/public/definitions/connections/events.d.ts +9 -9
  1012. package/dist/src/public/definitions/connections/mcp.d.ts +5 -3
  1013. package/dist/src/public/definitions/connections/openapi.d.ts +1 -1
  1014. package/dist/src/public/definitions/extension.d.ts +2 -4
  1015. package/dist/src/public/definitions/extension.js +1 -1
  1016. package/dist/src/public/definitions/hook.d.ts +63 -85
  1017. package/dist/src/public/definitions/hook.js +1 -1
  1018. package/dist/src/public/definitions/instructions.d.ts +3 -10
  1019. package/dist/src/public/definitions/instructions.js +1 -1
  1020. package/dist/src/public/definitions/model.d.ts +21 -0
  1021. package/dist/src/public/definitions/model.js +1 -0
  1022. package/dist/src/public/definitions/removed-event-keys.d.ts +2 -0
  1023. package/dist/src/public/definitions/removed-event-keys.js +1 -0
  1024. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  1025. package/dist/src/public/definitions/schedule.d.ts +4 -4
  1026. package/dist/src/public/definitions/skill.d.ts +5 -0
  1027. package/dist/src/public/definitions/skill.js +1 -1
  1028. package/dist/src/public/events/index.d.ts +27 -0
  1029. package/dist/src/public/events/index.js +1 -0
  1030. package/dist/src/public/experimental/connections/index.d.ts +1 -0
  1031. package/dist/src/public/experimental/connections/index.js +1 -0
  1032. package/dist/src/public/experimental/schedules/client.js +1 -1
  1033. package/dist/src/public/hooks/index.d.ts +4 -3
  1034. package/dist/src/public/index.d.ts +3 -2
  1035. package/dist/src/public/instructions/index.d.ts +2 -2
  1036. package/dist/src/public/instrumentation/index.d.ts +9 -28
  1037. package/dist/src/public/instrumentation/index.js +1 -1
  1038. package/dist/src/public/instrumentation/otel.d.ts +1 -1
  1039. package/dist/src/public/instrumentation/otel.js +1 -1
  1040. package/dist/src/public/instrumentation/provider.d.ts +1 -1
  1041. package/dist/src/public/instrumentation/provider.js +1 -1
  1042. package/dist/src/public/local-dev.d.ts +3 -1
  1043. package/dist/src/public/memory/file/backend.d.ts +1 -1
  1044. package/dist/src/public/memory/file/backends/in-memory.js +1 -1
  1045. package/dist/src/public/memory/file/backends/vercel-blob.js +1 -1
  1046. package/dist/src/public/memory/file/provider.js +1 -1
  1047. package/dist/src/public/memory/index.d.ts +14 -20
  1048. package/dist/src/public/models/index.d.ts +3 -0
  1049. package/dist/src/public/models/index.js +1 -1
  1050. package/dist/src/public/models/openai/index.d.ts +0 -2
  1051. package/dist/src/public/models/openai/index.js +1 -1
  1052. package/dist/src/public/next/index.d.ts +5 -36
  1053. package/dist/src/public/next/index.js +1 -1
  1054. package/dist/src/public/nuxt/index.d.ts +1 -1
  1055. package/dist/src/public/nuxt/module.d.ts +5 -2
  1056. package/dist/src/public/nuxt/module.js +1 -1
  1057. package/dist/src/public/sandbox/index.d.ts +1 -1
  1058. package/dist/src/public/sandbox/vercel-sandbox.d.ts +52 -12
  1059. package/dist/src/public/sandbox/vercel.d.ts +1 -1
  1060. package/dist/src/public/schedules/subscription.d.ts +5 -8
  1061. package/dist/src/public/server/index.d.ts +2 -14
  1062. package/dist/src/public/server/index.js +1 -1
  1063. package/dist/src/public/sessions/index.d.ts +6 -0
  1064. package/dist/src/public/sessions/index.js +1 -0
  1065. package/dist/src/public/skills/index.d.ts +2 -2
  1066. package/dist/src/public/skills/index.js +1 -1
  1067. package/dist/src/public/sveltekit/routing.d.ts +0 -4
  1068. package/dist/src/public/sveltekit/routing.js +1 -1
  1069. package/dist/src/public/tools/approval/index.d.ts +1 -1
  1070. package/dist/src/public/tools/bash.d.ts +1 -1
  1071. package/dist/src/public/tools/bash.js +1 -1
  1072. package/dist/src/public/tools/glob.d.ts +1 -1
  1073. package/dist/src/public/tools/glob.js +1 -1
  1074. package/dist/src/public/tools/grep.d.ts +1 -1
  1075. package/dist/src/public/tools/grep.js +1 -1
  1076. package/dist/src/public/tools/index.d.ts +5 -9
  1077. package/dist/src/public/tools/index.js +1 -1
  1078. package/dist/src/public/tools/read-file.d.ts +1 -1
  1079. package/dist/src/public/tools/read-file.js +1 -1
  1080. package/dist/src/public/tools/result.d.ts +17 -9
  1081. package/dist/src/public/tools/result.js +1 -1
  1082. package/dist/src/public/tools/web-fetch.d.ts +1 -1
  1083. package/dist/src/public/tools/web-fetch.js +1 -1
  1084. package/dist/src/public/tools/web-search.d.ts +1 -3
  1085. package/dist/src/public/tools/web-search.js +1 -1
  1086. package/dist/src/public/tools/write-file.d.ts +1 -1
  1087. package/dist/src/public/tools/write-file.js +1 -1
  1088. package/dist/src/public/workflow-modules.d.ts +8 -2
  1089. package/dist/src/react/index.d.ts +4 -7
  1090. package/dist/src/react/index.js +1 -1
  1091. package/dist/src/react/use-eve-agent.d.ts +68 -50
  1092. package/dist/src/react/use-eve-agent.js +1 -1
  1093. package/dist/src/reactions/bundle.d.ts +4 -0
  1094. package/dist/src/reactions/bundle.js +1 -0
  1095. package/dist/src/reactions/frame.d.ts +13 -0
  1096. package/dist/src/reactions/frame.js +1 -0
  1097. package/dist/src/reactions/intents.d.ts +22 -0
  1098. package/dist/src/reactions/intents.js +1 -0
  1099. package/dist/src/reactions/kinds/connection.d.ts +18 -0
  1100. package/dist/src/reactions/kinds/connection.js +1 -0
  1101. package/dist/src/reactions/kinds/hook.d.ts +8 -0
  1102. package/dist/src/reactions/kinds/hook.js +1 -0
  1103. package/dist/src/reactions/kinds/instructions.d.ts +21 -0
  1104. package/dist/src/reactions/kinds/instructions.js +1 -0
  1105. package/dist/src/reactions/kinds/memory.d.ts +72 -0
  1106. package/dist/src/reactions/kinds/memory.js +1 -0
  1107. package/dist/src/reactions/kinds/model.d.ts +21 -0
  1108. package/dist/src/reactions/kinds/model.js +1 -0
  1109. package/dist/src/reactions/kinds/skill.d.ts +27 -0
  1110. package/dist/src/reactions/kinds/skill.js +1 -0
  1111. package/dist/src/reactions/kinds/subagent.d.ts +16 -0
  1112. package/dist/src/reactions/kinds/subagent.js +1 -0
  1113. package/dist/src/reactions/kinds/tool.d.ts +16 -0
  1114. package/dist/src/reactions/kinds/tool.js +1 -0
  1115. package/dist/src/reactions/policy.d.ts +13 -0
  1116. package/dist/src/reactions/policy.js +1 -0
  1117. package/dist/src/reactions/reaction.d.ts +83 -0
  1118. package/dist/src/reactions/reaction.js +1 -0
  1119. package/dist/src/reactions/records.d.ts +40 -0
  1120. package/dist/src/reactions/records.js +1 -0
  1121. package/dist/src/reactions/remote.d.ts +25 -0
  1122. package/dist/src/reactions/remote.js +1 -0
  1123. package/dist/src/reactions/runner.d.ts +45 -0
  1124. package/dist/src/reactions/runner.js +1 -0
  1125. package/dist/src/reactions/state.d.ts +102 -0
  1126. package/dist/src/reactions/state.js +1 -0
  1127. package/dist/src/reactions/turn.d.ts +12 -0
  1128. package/dist/src/reactions/turn.js +2 -0
  1129. package/dist/src/runtime/agent/bootstrap.d.ts +1 -3
  1130. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  1131. package/dist/src/runtime/agent/resolve-model.d.ts +3 -4
  1132. package/dist/src/runtime/agent/resolve-model.js +1 -1
  1133. package/dist/src/runtime/connections/principal.d.ts +2 -0
  1134. package/dist/src/runtime/connections/principal.js +1 -1
  1135. package/dist/src/runtime/connections/registry.d.ts +2 -2
  1136. package/dist/src/runtime/connections/registry.js +1 -1
  1137. package/dist/src/runtime/connections/scoped-authorization.d.ts +8 -1
  1138. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  1139. package/dist/src/runtime/graph.d.ts +0 -6
  1140. package/dist/src/runtime/loaders/artifact-paths.d.ts +1 -0
  1141. package/dist/src/runtime/loaders/artifact-paths.js +1 -1
  1142. package/dist/src/runtime/loaders/bundled-artifacts.d.ts +2 -0
  1143. package/dist/src/runtime/loaders/bundled-artifacts.js +1 -1
  1144. package/dist/src/runtime/loaders/model-metadata.d.ts +4 -0
  1145. package/dist/src/runtime/loaders/model-metadata.js +1 -0
  1146. package/dist/src/runtime/local-dev-capability.d.ts +2 -3
  1147. package/dist/src/runtime/local-dev-capability.js +1 -1
  1148. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  1149. package/dist/src/runtime/resolve-agent.js +1 -1
  1150. package/dist/src/runtime/resolve-connection.js +1 -1
  1151. package/dist/src/runtime/resolve-dynamic.d.ts +9 -0
  1152. package/dist/src/runtime/resolve-dynamic.js +1 -0
  1153. package/dist/src/runtime/resolve-hook.js +1 -1
  1154. package/dist/src/runtime/resolve-memory.js +1 -1
  1155. package/dist/src/runtime/resolve-tool.js +1 -1
  1156. package/dist/src/runtime/schedules/collection-client.js +1 -1
  1157. package/dist/src/runtime/schedules/dispatch-occurrence.js +1 -1
  1158. package/dist/src/runtime/sessions/compiled-agent-cache.d.ts +3 -2
  1159. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  1160. package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -2
  1161. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  1162. package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +16 -3
  1163. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  1164. package/dist/src/runtime/subagents/workflow.js +1 -1
  1165. package/dist/src/runtime/types.d.ts +22 -39
  1166. package/dist/src/sandbox/provider.d.ts +5 -3
  1167. package/dist/src/sandbox/providers/default.d.ts +4 -2
  1168. package/dist/src/sandbox/providers/default.js +1 -1
  1169. package/dist/src/self-modification/agent.d.ts +3 -3
  1170. package/dist/src/self-modification/agent.js +1 -1
  1171. package/dist/src/self-modification/config.d.ts +1 -1
  1172. package/dist/src/self-modification/config.js +1 -1
  1173. package/dist/src/self-modification/deployed-sandbox.js +1 -1
  1174. package/dist/src/self-modification/extension/extension.d.ts +1 -0
  1175. package/dist/src/self-modification/extension/local-only.d.ts +1 -1
  1176. package/dist/src/self-modification/extension/local-only.js +1 -1
  1177. package/dist/src/self-modification/extension/subagents/agent/agent.d.ts +15 -4
  1178. package/dist/src/self-modification/extension/subagents/agent/agent.js +1 -1
  1179. package/dist/src/self-modification/extension/subagents/agent/instructions.d.ts +1 -1
  1180. package/dist/src/self-modification/extension/subagents/agent/instructions.js +2 -2
  1181. package/dist/src/self-modification/extension/subagents/agent/sandbox.d.ts +2 -2
  1182. package/dist/src/self-modification/extension/subagents/agent/sandbox.js +1 -1
  1183. package/dist/src/self-modification/extension/subagents/agent/skills/trace_analysis.d.ts +3 -3
  1184. package/dist/src/self-modification/extension/subagents/agent/skills/trace_analysis.js +1 -1
  1185. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace.d.ts +1 -1
  1186. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace_spans.d.ts +1 -1
  1187. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.d.ts +1 -1
  1188. package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.d.ts +1 -1
  1189. package/dist/src/self-modification/mode.d.ts +8 -0
  1190. package/dist/src/self-modification/mode.js +1 -1
  1191. package/dist/src/self-modification/remote/config.d.ts +3 -6
  1192. package/dist/src/self-modification/remote/extension.d.ts +1 -0
  1193. package/dist/src/self-modification/remote/production-registry-add.js +1 -1
  1194. package/dist/src/self-modification/remote/subagents/agent/agent.d.ts +6 -3
  1195. package/dist/src/self-modification/remote/subagents/agent/agent.js +1 -1
  1196. package/dist/src/self-modification/remote/subagents/agent/instructions.d.ts +1 -1
  1197. package/dist/src/self-modification/remote/subagents/agent/instructions.js +2 -2
  1198. package/dist/src/self-modification/remote/subagents/agent/tools/publish.d.ts +1 -3
  1199. package/dist/src/self-modification/remote/subagents/agent/tools/publish.js +1 -1
  1200. package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.d.ts +1 -3
  1201. package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.js +1 -1
  1202. package/dist/src/self-modification/scaffold.js +1 -1
  1203. package/dist/src/self-modification/setup.js +3 -6
  1204. package/dist/src/services/dev-client/client-options.js +1 -1
  1205. package/dist/src/services/dev-client.d.ts +4 -4
  1206. package/dist/src/services/dev-client.js +1 -1
  1207. package/dist/src/setup/flows/model-source-change.js +1 -1
  1208. package/dist/src/setup/integrations/self-modification/setup.d.ts +1 -4
  1209. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  1210. package/dist/src/setup/scaffold/create/project.js +1 -1
  1211. package/dist/src/setup/scaffold/create/web-template.d.ts +9 -18
  1212. package/dist/src/setup/scaffold/create/web-template.js +1015 -2537
  1213. package/dist/src/setup/verified-remote-agent.js +1 -1
  1214. package/dist/src/shared/action-label.d.ts +5 -3
  1215. package/dist/src/shared/action-label.js +1 -1
  1216. package/dist/src/shared/action-types.d.ts +5 -0
  1217. package/dist/src/shared/action-types.js +1 -1
  1218. package/dist/src/shared/agent-definition.d.ts +14 -10
  1219. package/dist/src/shared/answers-delivery-id.d.ts +1 -0
  1220. package/dist/src/shared/answers-delivery-id.js +1 -0
  1221. package/dist/src/shared/channel-context.d.ts +12 -0
  1222. package/dist/src/shared/channel-context.js +1 -0
  1223. package/dist/src/shared/channel-definition.d.ts +19 -26
  1224. package/dist/src/shared/channel-delivery.d.ts +16 -0
  1225. package/dist/src/shared/channel-delivery.js +1 -0
  1226. package/dist/src/shared/connection-events.d.ts +2 -2
  1227. package/dist/src/shared/connection-types.d.ts +7 -32
  1228. package/dist/src/shared/conversation-context.d.ts +4 -13
  1229. package/dist/src/shared/delivery.d.ts +38 -0
  1230. package/dist/src/shared/delivery.js +1 -0
  1231. package/dist/src/shared/history-message.d.ts +190 -0
  1232. package/dist/src/shared/history-message.js +1 -0
  1233. package/dist/src/shared/input.d.ts +23 -97
  1234. package/dist/src/shared/input.js +1 -1
  1235. package/dist/src/shared/instructions-definition.d.ts +2 -8
  1236. package/dist/src/shared/instrumentation-channel-kind.d.ts +1 -1
  1237. package/dist/src/shared/instrumentation-channel.d.ts +12 -0
  1238. package/dist/src/shared/instrumentation-channel.js +1 -0
  1239. package/dist/src/shared/json.d.ts +2 -18
  1240. package/dist/src/shared/memory-state.d.ts +4 -40
  1241. package/dist/src/shared/memory-state.js +1 -1
  1242. package/dist/src/shared/message-content.d.ts +19 -0
  1243. package/dist/src/shared/message-content.js +1 -0
  1244. package/dist/src/shared/network-address.d.ts +9 -0
  1245. package/dist/src/shared/network-address.js +1 -1
  1246. package/dist/src/shared/sandbox-environment.d.ts +2 -2
  1247. package/dist/src/shared/sandbox-provider.d.ts +1 -1
  1248. package/dist/src/shared/sandbox-session.d.ts +64 -85
  1249. package/dist/src/shared/schedule-definition.d.ts +5 -5
  1250. package/dist/src/shared/serialized-observability-state.d.ts +0 -2
  1251. package/dist/src/shared/serialized-observability-state.js +1 -1
  1252. package/dist/src/shared/session-history.d.ts +2 -2
  1253. package/dist/src/shared/session.d.ts +22 -0
  1254. package/dist/src/shared/session.js +1 -0
  1255. package/dist/src/shared/skill-definition.d.ts +1 -1
  1256. package/dist/src/shared/skill-package.d.ts +2 -2
  1257. package/dist/src/shared/skill-package.js +1 -1
  1258. package/dist/src/shared/token-usage-math.d.ts +5 -0
  1259. package/dist/src/shared/token-usage-math.js +1 -0
  1260. package/dist/src/shared/token-usage.d.ts +0 -2
  1261. package/dist/src/shared/token-usage.js +1 -1
  1262. package/dist/src/shared/validate-authorization.js +1 -1
  1263. package/dist/src/shared/wait-with-signal.d.ts +2 -0
  1264. package/dist/src/shared/wait-with-signal.js +1 -0
  1265. package/dist/src/subagents/adapter.d.ts +3 -5
  1266. package/dist/src/subagents/adapter.js +1 -1
  1267. package/dist/src/subagents/callback-route.js +1 -1
  1268. package/dist/src/subagents/event-proxy-step.d.ts +6 -9
  1269. package/dist/src/subagents/event-proxy-step.js +1 -1
  1270. package/dist/src/subagents/hitl-proxy.d.ts +11 -23
  1271. package/dist/src/subagents/hitl-proxy.js +1 -1
  1272. package/dist/src/subagents/invocation.d.ts +8 -8
  1273. package/dist/src/subagents/invocation.js +2 -2
  1274. package/dist/src/subagents/parent-notification.d.ts +5 -0
  1275. package/dist/src/subagents/parent-notification.js +1 -1
  1276. package/dist/src/subagents/protocol-two-callback.d.ts +27 -0
  1277. package/dist/src/subagents/protocol-two-callback.js +1 -0
  1278. package/dist/src/svelte/index.d.ts +3 -6
  1279. package/dist/src/svelte/index.js +2 -39
  1280. package/dist/src/svelte/use-eve-agent.d.ts +67 -56
  1281. package/dist/src/svelte/use-eve-agent.js +1 -1
  1282. package/dist/src/tool-stubs/rules.js +1 -1
  1283. package/dist/src/tools/approval/policies.d.ts +4 -16
  1284. package/dist/src/tools/approval/policies.js +1 -1
  1285. package/dist/src/tools/auth.d.ts +3 -3
  1286. package/dist/src/tools/definition.d.ts +13 -35
  1287. package/dist/src/tools/definition.js +1 -1
  1288. package/dist/src/tools/dynamic.d.ts +13 -72
  1289. package/dist/src/tools/dynamic.js +1 -1
  1290. package/dist/src/tools/framework/agent.js +1 -1
  1291. package/dist/src/tools/provided/ask-question-workflow.d.ts +3 -3
  1292. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  1293. package/dist/src/tools/provided/ask-question.d.ts +2 -2
  1294. package/dist/src/tools/provided/ask-question.js +1 -1
  1295. package/dist/src/tools/provided/grep.d.ts +2 -15
  1296. package/dist/src/tools/provided/grep.js +1 -2
  1297. package/dist/src/tools/provided/no-reply.d.ts +2 -2
  1298. package/dist/src/tools/provided/no-reply.js +1 -1
  1299. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  1300. package/dist/src/tools/provided/sleep.d.ts +2 -2
  1301. package/dist/src/tools/provided/sleep.js +1 -1
  1302. package/dist/src/tools/provided/workflow.js +1 -1
  1303. package/dist/src/tools/workflow-definition.d.ts +17 -15
  1304. package/dist/src/tracing/eve/agent-approval-instrumentation.d.ts +1 -1
  1305. package/dist/src/tracing/eve/agent-approval-instrumentation.js +1 -1
  1306. package/dist/src/tracing/eve/agent-channel-delivery-instrumentation.d.ts +2 -2
  1307. package/dist/src/tracing/eve/agent-channel-delivery-instrumentation.js +1 -1
  1308. package/dist/src/tracing/eve/agent-invocation-coordinator.d.ts +2 -2
  1309. package/dist/src/tracing/eve/agent-otel-provider.js +1 -1
  1310. package/dist/src/tracing/eve/agent-tool-instrumentation.d.ts +6 -7
  1311. package/dist/src/tracing/eve/agent-tool-instrumentation.js +1 -1
  1312. package/dist/src/tracing/eve/agent-trace-context-store.d.ts +3 -3
  1313. package/dist/src/tracing/eve/agent-trace-state.d.ts +1 -6
  1314. package/dist/src/tracing/eve/delegation.d.ts +4 -4
  1315. package/dist/src/tracing/eve/install-instrumentation-runtime.js +1 -1
  1316. package/dist/src/tracing/eve/invoke-tool-span.d.ts +3 -2
  1317. package/dist/src/tracing/eve/invoke-tool-span.js +1 -1
  1318. package/dist/src/tracing/eve/otel-declaration.d.ts +9 -10
  1319. package/dist/src/tracing/eve/otel-declaration.js +1 -1
  1320. package/dist/src/tracing/eve/policy.d.ts +2 -2
  1321. package/dist/src/tracing/eve/policy.js +1 -1
  1322. package/dist/src/tracing/eve/session.d.ts +4 -3
  1323. package/dist/src/tracing/eve/session.js +1 -1
  1324. package/dist/src/vue/index.d.ts +3 -6
  1325. package/dist/src/vue/index.js +2 -39
  1326. package/dist/src/vue/use-eve-agent.d.ts +70 -59
  1327. package/dist/src/vue/use-eve-agent.js +1 -1
  1328. package/docs/agent-config.md +41 -44
  1329. package/docs/channels/chat-sdk.mdx +19 -13
  1330. package/docs/channels/custom.mdx +106 -85
  1331. package/docs/channels/discord.mdx +12 -12
  1332. package/docs/channels/eve.mdx +48 -15
  1333. package/docs/channels/github.mdx +2 -2
  1334. package/docs/channels/linear.mdx +8 -8
  1335. package/docs/channels/linq.mdx +1 -1
  1336. package/docs/channels/mcp.mdx +2 -2
  1337. package/docs/channels/overview.mdx +11 -1
  1338. package/docs/channels/photon.mdx +1 -1
  1339. package/docs/channels/slack.mdx +64 -57
  1340. package/docs/channels/teams.mdx +4 -4
  1341. package/docs/channels/telegram.mdx +1 -1
  1342. package/docs/channels/twilio.mdx +2 -2
  1343. package/docs/code-extension.mdx +19 -7
  1344. package/docs/concepts/built-in-tools.md +21 -9
  1345. package/docs/concepts/context-control.md +5 -8
  1346. package/docs/concepts/default-harness.md +13 -8
  1347. package/docs/concepts/execution-model-and-durability.mdx +119 -12
  1348. package/docs/concepts/meta.json +1 -0
  1349. package/docs/concepts/sessions-runs-and-streaming.md +244 -138
  1350. package/docs/concepts/state.md +1 -1
  1351. package/docs/concepts/upgrade-to-v27-events.md +128 -0
  1352. package/docs/connections/mcp.mdx +38 -34
  1353. package/docs/connections/openapi.mdx +23 -2
  1354. package/docs/connections/overview.mdx +66 -57
  1355. package/docs/evals/assertions.mdx +30 -24
  1356. package/docs/evals/cases.mdx +19 -24
  1357. package/docs/evals/judge.mdx +15 -2
  1358. package/docs/evals/overview.mdx +7 -7
  1359. package/docs/evals/reporters.mdx +15 -11
  1360. package/docs/evals/targets.mdx +5 -3
  1361. package/docs/evals/tool-stubs.mdx +2 -2
  1362. package/docs/extensions.md +6 -3
  1363. package/docs/guides/client/continuations.mdx +10 -10
  1364. package/docs/guides/client/messages.mdx +50 -48
  1365. package/docs/guides/client/output-schema.mdx +13 -13
  1366. package/docs/guides/client/overview.mdx +35 -13
  1367. package/docs/guides/client/streaming.mdx +160 -123
  1368. package/docs/guides/decide.md +15 -9
  1369. package/docs/guides/deployment/self-hosting.md +5 -40
  1370. package/docs/guides/dynamic-capabilities.md +151 -406
  1371. package/docs/guides/frontend/nextjs.mdx +1 -1
  1372. package/docs/guides/frontend/nuxt.mdx +2 -2
  1373. package/docs/guides/frontend/overview.mdx +257 -181
  1374. package/docs/guides/frontend/sveltekit.mdx +4 -4
  1375. package/docs/guides/frontend/tanstack.mdx +5 -5
  1376. package/docs/guides/frontend/use-eve-agent-svelte.mdx +30 -38
  1377. package/docs/guides/frontend/use-eve-agent-vue.mdx +35 -36
  1378. package/docs/guides/hooks.md +67 -55
  1379. package/docs/guides/instrumentation/instrumentation.mdx +33 -27
  1380. package/docs/guides/instrumentation/otel.mdx +4 -2
  1381. package/docs/guides/remote-agents.md +116 -50
  1382. package/docs/guides/self-modification.md +11 -7
  1383. package/docs/instructions.mdx +4 -6
  1384. package/docs/memory/custom-provider.md +63 -56
  1385. package/docs/memory/file.md +1 -1
  1386. package/docs/memory/overview.mdx +10 -18
  1387. package/docs/patterns/durable-cross-channel-notifications.md +4 -3
  1388. package/docs/patterns/multi-tenant-approvals.md +3 -3
  1389. package/docs/patterns/multi-tenant-auth.md +3 -3
  1390. package/docs/patterns/multi-tenant-memory.md +6 -7
  1391. package/docs/patterns/voice-notes.md +1 -1
  1392. package/docs/reference/cli.md +9 -25
  1393. package/docs/reference/typescript-api.md +85 -60
  1394. package/docs/sandbox/custom-providers.mdx +13 -14
  1395. package/docs/sandbox/default.mdx +1 -1
  1396. package/docs/sandbox/docker.mdx +10 -0
  1397. package/docs/sandbox/index.mdx +5 -1
  1398. package/docs/sandbox/vercel.mdx +6 -6
  1399. package/docs/schedules.mdx +4 -4
  1400. package/docs/skills.mdx +6 -6
  1401. package/docs/subagents/index.mdx +25 -34
  1402. package/docs/tools/human-in-the-loop.md +42 -34
  1403. package/docs/tools/overview.mdx +14 -12
  1404. package/docs/tools/tasks-upgrade.md +13 -1
  1405. package/docs/tools/tasks.md +58 -89
  1406. package/docs/tools/workflows.mdx +48 -33
  1407. package/docs/tutorial/guard-the-spend.mdx +1 -1
  1408. package/docs/tutorial/run-analysis.mdx +15 -12
  1409. package/docs/tutorial/team-playbooks.mdx +19 -23
  1410. package/package.json +147 -96
  1411. package/dist/src/chunks/use-eve-agent-BE2_zd5q.js +0 -4968
  1412. package/dist/src/chunks/use-eve-agent-e8a5vcFO.js +0 -4926
  1413. package/dist/src/cli/invoke/command.d.ts +0 -19
  1414. package/dist/src/cli/invoke/command.js +0 -1
  1415. package/dist/src/cli/invoke/invoke.d.ts +0 -27
  1416. package/dist/src/cli/invoke/invoke.js +0 -1
  1417. package/dist/src/cli/invoke/result.d.ts +0 -137
  1418. package/dist/src/cli/invoke/result.js +0 -1
  1419. package/dist/src/client/agent-host.d.ts +0 -4
  1420. package/dist/src/client/agent-host.js +0 -1
  1421. package/dist/src/client/authorization-message-parts.d.ts +0 -4
  1422. package/dist/src/client/authorization-message-parts.js +0 -1
  1423. package/dist/src/client/conversation-projection.d.ts +0 -4
  1424. package/dist/src/client/conversation-projection.js +0 -1
  1425. package/dist/src/client/conversation-reducer.d.ts +0 -29
  1426. package/dist/src/client/conversation-reducer.js +0 -1
  1427. package/dist/src/client/eve-agent-projection.d.ts +0 -28
  1428. package/dist/src/client/eve-agent-projection.js +0 -1
  1429. package/dist/src/client/eve-agent-store-helpers.d.ts +0 -34
  1430. package/dist/src/client/eve-agent-store-helpers.js +0 -2
  1431. package/dist/src/client/eve-agent-store-state.d.ts +0 -96
  1432. package/dist/src/client/eve-agent-store.d.ts +0 -45
  1433. package/dist/src/client/eve-agent-store.js +0 -1
  1434. package/dist/src/client/message-action-parts.d.ts +0 -37
  1435. package/dist/src/client/message-action-parts.js +0 -1
  1436. package/dist/src/client/message-reducer-primitives.d.ts +0 -6
  1437. package/dist/src/client/message-reducer-primitives.js +0 -1
  1438. package/dist/src/client/message-reducer-types.d.ts +0 -244
  1439. package/dist/src/client/message-reducer.d.ts +0 -14
  1440. package/dist/src/client/message-reducer.js +0 -1
  1441. package/dist/src/client/message-response.d.ts +0 -74
  1442. package/dist/src/client/message-response.js +0 -1
  1443. package/dist/src/client/message-run-parts.d.ts +0 -22
  1444. package/dist/src/client/message-run-parts.js +0 -1
  1445. package/dist/src/client/output-schema.d.ts +0 -5
  1446. package/dist/src/client/output-schema.js +0 -1
  1447. package/dist/src/client/reducer.d.ts +0 -67
  1448. package/dist/src/client/session-turn-dispatch.d.ts +0 -15
  1449. package/dist/src/client/session-turn-dispatch.js +0 -1
  1450. package/dist/src/client/tool-call-state.d.ts +0 -23
  1451. package/dist/src/client/tool-call-state.js +0 -1
  1452. package/dist/src/client/tool-part-state.d.ts +0 -7
  1453. package/dist/src/client/tool-part-state.js +0 -1
  1454. package/dist/src/client/transcript-reducer.d.ts +0 -49
  1455. package/dist/src/client/transcript-reducer.js +0 -2
  1456. package/dist/src/compiled/_chunks/node/token-Bedbhv5z.js +0 -1
  1457. package/dist/src/compiled/_chunks/node/token-util-DpJNusVS.js +0 -1
  1458. package/dist/src/compiled/_chunks/node/token-util-DwHQ2a3c.js +0 -1
  1459. package/dist/src/compiled/_chunks/node/version-C__MqbLM.js +0 -1
  1460. package/dist/src/context/build-dynamic-tools.d.ts +0 -10
  1461. package/dist/src/context/build-dynamic-tools.js +0 -1
  1462. package/dist/src/context/dynamic-connection-lifecycle.d.ts +0 -15
  1463. package/dist/src/context/dynamic-connection-lifecycle.js +0 -1
  1464. package/dist/src/context/dynamic-instruction-lifecycle.d.ts +0 -31
  1465. package/dist/src/context/dynamic-instruction-lifecycle.js +0 -1
  1466. package/dist/src/context/dynamic-model-lifecycle.d.ts +0 -19
  1467. package/dist/src/context/dynamic-model-lifecycle.js +0 -1
  1468. package/dist/src/context/dynamic-resolve-context.d.ts +0 -12
  1469. package/dist/src/context/dynamic-resolve-context.js +0 -1
  1470. package/dist/src/context/dynamic-skill-lifecycle.d.ts +0 -15
  1471. package/dist/src/context/dynamic-skill-lifecycle.js +0 -1
  1472. package/dist/src/context/dynamic-subagent-lifecycle.d.ts +0 -27
  1473. package/dist/src/context/dynamic-subagent-lifecycle.js +0 -1
  1474. package/dist/src/context/dynamic-tool-lifecycle.d.ts +0 -46
  1475. package/dist/src/context/dynamic-tool-lifecycle.js +0 -1
  1476. package/dist/src/context/dynamic-tool-metadata.d.ts +0 -47
  1477. package/dist/src/context/dynamic-tool-metadata.js +0 -1
  1478. package/dist/src/context/effective-model.d.ts +0 -5
  1479. package/dist/src/context/effective-model.js +0 -1
  1480. package/dist/src/context/hook-lifecycle.d.ts +0 -15
  1481. package/dist/src/context/hook-lifecycle.js +0 -1
  1482. package/dist/src/context/memory-event-lifecycle.d.ts +0 -15
  1483. package/dist/src/context/memory-event-lifecycle.js +0 -1
  1484. package/dist/src/context/memory-lifecycle.d.ts +0 -47
  1485. package/dist/src/context/memory-lifecycle.js +0 -1
  1486. package/dist/src/context/serialized-dynamic-model-selection.d.ts +0 -2
  1487. package/dist/src/context/serialized-dynamic-model-selection.js +0 -1
  1488. package/dist/src/execution/cancel-descendant-turns-step.d.ts +0 -6
  1489. package/dist/src/execution/cancel-descendant-turns-step.js +0 -1
  1490. package/dist/src/execution/dynamic-connection-recovery.d.ts +0 -14
  1491. package/dist/src/execution/dynamic-connection-recovery.js +0 -1
  1492. package/dist/src/execution/dynamic-connections.d.ts +0 -12
  1493. package/dist/src/execution/dynamic-connections.js +0 -1
  1494. package/dist/src/execution/history-view.d.ts +0 -10
  1495. package/dist/src/execution/history-view.js +0 -1
  1496. package/dist/src/execution/legacy-remote-agent/protocol.d.ts +0 -49
  1497. package/dist/src/execution/legacy-remote-agent/protocol.js +0 -1
  1498. package/dist/src/execution/runtime-errors.d.ts +0 -13
  1499. package/dist/src/execution/runtime-errors.js +0 -1
  1500. package/dist/src/execution/sandbox/grep-tool.d.ts +0 -26
  1501. package/dist/src/execution/sandbox/grep-tool.js +0 -3
  1502. package/dist/src/execution/session/turn-waiting-step.d.ts +0 -4
  1503. package/dist/src/execution/session/turn-waiting-step.js +0 -1
  1504. package/dist/src/execution/tools/workflow/cancel.d.ts +0 -13
  1505. package/dist/src/execution/tools/workflow/cancel.js +0 -1
  1506. package/dist/src/execution/workflow-trace-context.d.ts +0 -8
  1507. package/dist/src/execution/workflow-trace-context.js +0 -1
  1508. package/dist/src/extensions/code/extension/instructions/github.d.ts +0 -3
  1509. package/dist/src/extensions/code/extension/instructions/github.js +0 -1
  1510. package/dist/src/extensions/code/extension/lib/github-compat.d.ts +0 -28
  1511. package/dist/src/extensions/code/extension/lib/github-compat.js +0 -1
  1512. package/dist/src/extensions/code/extension/lib/grep-search.js +0 -6
  1513. package/dist/src/extensions/code/extension/skills/pr.d.ts +0 -6
  1514. package/dist/src/extensions/code/extension/skills/pr.js +0 -1
  1515. package/dist/src/extensions/code/extension/tools/gh.d.ts +0 -28
  1516. package/dist/src/extensions/code/extension/tools/gh.js +0 -1
  1517. package/dist/src/harness/approval-recheck.d.ts +0 -7
  1518. package/dist/src/harness/approval-recheck.js +0 -1
  1519. package/dist/src/harness/authorization-event-fields.d.ts +0 -16
  1520. package/dist/src/harness/authorization-event-fields.js +0 -1
  1521. package/dist/src/harness/hitl/candidates.d.ts +0 -139
  1522. package/dist/src/harness/hitl/candidates.js +0 -1
  1523. package/dist/src/harness/hitl/coordinator.d.ts +0 -35
  1524. package/dist/src/harness/hitl/coordinator.js +0 -1
  1525. package/dist/src/harness/input-extraction.d.ts +0 -13
  1526. package/dist/src/harness/input-extraction.js +0 -1
  1527. package/dist/src/harness/input-request-class.d.ts +0 -3
  1528. package/dist/src/harness/input-request-class.js +0 -1
  1529. package/dist/src/harness/input-request-resolution.d.ts +0 -39
  1530. package/dist/src/harness/input-request-resolution.js +0 -1
  1531. package/dist/src/harness/open-input-request.d.ts +0 -8
  1532. package/dist/src/harness/open-input-request.js +0 -1
  1533. package/dist/src/harness/session-machine/events.d.ts +0 -6
  1534. package/dist/src/harness/session-machine/events.js +0 -1
  1535. package/dist/src/harness/session-machine/resolver-events.d.ts +0 -12
  1536. package/dist/src/harness/session-machine/resolver-events.js +0 -1
  1537. package/dist/src/harness/tool-call-action.d.ts +0 -9
  1538. package/dist/src/harness/tool-call-action.js +0 -1
  1539. package/dist/src/harness/tool-interrupts.d.ts +0 -22
  1540. package/dist/src/harness/tool-interrupts.js +0 -1
  1541. package/dist/src/harness/tool-presentation.d.ts +0 -5
  1542. package/dist/src/harness/tool-presentation.js +0 -1
  1543. package/dist/src/harness/turn-tag-state.d.ts +0 -115
  1544. package/dist/src/harness/turn-tag-state.js +0 -1
  1545. package/dist/src/internal/dynamic-tool-rebind.d.ts +0 -3
  1546. package/dist/src/internal/dynamic-tool-rebind.js +0 -1
  1547. package/dist/src/internal/nitro/host/extension-capability-requirements.d.ts +0 -14
  1548. package/dist/src/internal/nitro/host/extension-capability-requirements.js +0 -1
  1549. package/dist/src/internal/workflow-bundle/dynamic-capability-transform-plugin.d.ts +0 -12
  1550. package/dist/src/internal/workflow-bundle/dynamic-capability-transform-plugin.js +0 -1
  1551. package/dist/src/internal/workflow-bundle/dynamic-remote-agent-transform.d.ts +0 -7
  1552. package/dist/src/internal/workflow-bundle/dynamic-remote-agent-transform.js +0 -3
  1553. package/dist/src/internal/workflow-bundle/dynamic-tool-ast-references.d.ts +0 -79
  1554. package/dist/src/internal/workflow-bundle/dynamic-tool-ast-references.js +0 -1
  1555. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.d.ts +0 -14
  1556. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +0 -3
  1557. package/dist/src/protocol/event-dedupe.d.ts +0 -26
  1558. package/dist/src/protocol/event-dedupe.js +0 -1
  1559. package/dist/src/protocol/event-id.d.ts +0 -10
  1560. package/dist/src/protocol/event-id.js +0 -1
  1561. package/dist/src/protocol/message-version.d.ts +0 -53
  1562. package/dist/src/protocol/message-version.js +0 -1
  1563. package/dist/src/protocol/message.d.ts +0 -1198
  1564. package/dist/src/protocol/message.js +0 -2
  1565. package/dist/src/public/channels/chat-sdk/messageToUserContent.js +0 -1
  1566. package/dist/src/public/channels/slack/input-response.js +0 -1
  1567. package/dist/src/runtime/agent/model-catalog.d.ts +0 -10
  1568. package/dist/src/runtime/agent/model-catalog.js +0 -1
  1569. package/dist/src/runtime/hooks/registry.d.ts +0 -34
  1570. package/dist/src/runtime/hooks/registry.js +0 -1
  1571. package/dist/src/runtime/resolve-dynamic-connection.d.ts +0 -5
  1572. package/dist/src/runtime/resolve-dynamic-connection.js +0 -1
  1573. package/dist/src/runtime/resolve-dynamic-instructions.d.ts +0 -4
  1574. package/dist/src/runtime/resolve-dynamic-instructions.js +0 -1
  1575. package/dist/src/runtime/resolve-dynamic-skill.d.ts +0 -8
  1576. package/dist/src/runtime/resolve-dynamic-skill.js +0 -1
  1577. package/dist/src/runtime/resolve-dynamic-subagent.d.ts +0 -9
  1578. package/dist/src/runtime/resolve-dynamic-subagent.js +0 -1
  1579. package/dist/src/runtime/resolve-dynamic-tool.d.ts +0 -12
  1580. package/dist/src/runtime/resolve-dynamic-tool.js +0 -1
  1581. package/dist/src/self-modification/migration.d.ts +0 -9
  1582. package/dist/src/self-modification/migration.js +0 -28
  1583. package/dist/src/shared/history-view.d.ts +0 -22
  1584. package/dist/src/shared/history-view.js +0 -1
  1585. package/dist/src/shared/package-version.d.ts +0 -2
  1586. package/dist/src/shared/package-version.js +0 -1
  1587. package/dist/src/tools/durable-callbacks.d.ts +0 -118
  1588. package/dist/src/tools/durable-callbacks.js +0 -1
  1589. package/dist/src/tools/durable-schema.d.ts +0 -16
  1590. package/dist/src/tools/durable-schema.js +0 -1
  1591. /package/dist/src/{client/eve-agent-store-state.js → ai/decision-types.js} +0 -0
  1592. /package/dist/src/client/{message-reducer-types.js → agent-info-types.js} +0 -0
  1593. /package/dist/src/client/{reducer.js → health-types.js} +0 -0
  1594. /package/dist/src/{shared → protocol/session-projection}/display-name.d.ts +0 -0
  1595. /package/dist/src/{shared → protocol/session-projection}/display-name.js +0 -0
@@ -1 +1 @@
1
- import{activeTurnId,answeredCallIds,nextStepIndex,runningTasks,turnPosition}from"./view.js";import{inputWithdrawn,signInWithdrawn}from"./events.js";import{openInputs,openSignIns,turnCoordinates}from"#protocol/session-projection.js";import{createActionResultEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createContextClearedEvent,createHistoryImportedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageReceivedEvent,createResultCompletedEvent,createSessionCompletedEvent,createSessionFailedEvent,createSessionStartedEvent,createSessionWaitingEvent,createStepFailedEvent,createStepStartedEvent,createTaskSettledEvent,createTaskStartedEvent,createTurnCancelledEvent,createTurnCompletedEvent,createTurnFailedEvent,createTurnStartedEvent,createTurnWaitingEvent}from"#protocol/message.js";import{toProxyInputRequestEntries}from"#harness/hitl/relays.js";import{authorizationEventFields}from"#harness/authorization-event-fields.js";import{signInAttemptKey}from"#harness/hitl/sign-ins.js";const unchanged=(e,t)=>({events:t,turn:e.turn});function at(e){let t=turnPosition(e);return{sequence:t.sequence,stepIndex:t.stepIndex,turnId:activeTurnId(t)}}function receive(e,t){let n=turnPosition(e.projection),r=activeTurnId(n),i=[];return n.sessionStarted||i.push(createSessionStartedEvent({predecessor:t.predecessor,runtime:t.runtime,trace:t.trace})),n.turnId===``&&i.push(createTurnStartedEvent({sequence:n.sequence,trace:t.trace,turnId:r})),t.imported!==void 0&&t.imported.length>0&&i.push(createHistoryImportedEvent({messages:t.imported,sequence:n.sequence,turnId:r})),t.message!==void 0&&i.push(createMessageReceivedEvent({message:t.message,sequence:n.sequence,turnId:r})),unchanged(e,i)}function startStep(e,t){let{sequence:n,turnId:r}=at(e.projection);return unchanged(e,[createStepStartedEvent({modelId:t.modelId,sequence:n,stepIndex:nextStepIndex(e.projection),turnId:r})])}function hold(e,t){let{sequence:n,turnId:r}=turnPosition(e.projection);return r===``?unchanged(e,[]):unchanged(e,[createTurnWaitingEvent({on:t.on,sequence:n,turnId:r,usage:e.usage})])}function finishTurn(e,t={}){let{sequence:n,stepIndex:r,turnId:i}=at(e.projection),a=[];return t.result!==void 0&&a.push(createResultCompletedEvent({result:t.result,sequence:n,stepIndex:r,turnId:i})),e.projection.activeTurnId!==void 0&&a.push(createTurnCompletedEvent({sequence:n,turnId:i})),a.push(createSessionWaitingEvent(e.usage)),unchanged(e,a)}function fail(e,t){let{sequence:n,stepIndex:r,turnId:i}=at(e.projection),a=e.turn.suspended.filter(e=>(e.approved?.length??0)>0);return{commit:a.flatMap(cancelledTranscript),events:failedEvents(e,t,{sequence:n,stepIndex:r,turnId:i}),turn:{...e.turn,suspended:e.turn.suspended.filter(e=>!a.includes(e))}}}function failedEvents(e,t,n){let{sequence:r,stepIndex:i,turnId:a}=n,{code:o,details:s,message:c}=t,l=t.terminal!==void 0;return[createStepFailedEvent({code:o,details:s,message:c,sequence:r,stepIndex:i,turnId:a}),createTurnFailedEvent({code:o,details:s,message:c,sequence:r,terminal:l,turnId:a}),t.terminal===void 0?createSessionWaitingEvent(e.usage):createSessionFailedEvent({code:o,details:s,message:c,sessionId:t.terminal.sessionId,usage:e.usage})]}function idle(e){return unchanged(e,[createSessionWaitingEvent(e.usage)])}function sessionCompleted(e){return createSessionCompletedEvent(e)}function sessionFailed(e){return createSessionFailedEvent(e)}function settle(e,t){let n=[],r=[...e.turn.suspended];for(let{part:e,result:i}of t.results){let t=r.findIndex(t=>stepCallIds(t).has(e.toolCallId)),a=r[t];a!==void 0&&(r[t]=withoutApproved({...a,messages:withResult(a.messages,e)},new Set([e.toolCallId])),i!==void 0&&n.push(createActionResultEvent({result:i,...a.event})))}for(let t of r)t.tasks.length!==0&&t.requests.length!==0&&(runningTasks(t).length>0||t.requests.some(t=>t.requestId in e.projection.inputs)||n.push(createInputRequestedEvent({requests:t.requests,...t.event})));let i=r.filter(isComplete);return{commit:i.flatMap(e=>e.messages),events:n,turn:{...e.turn,suspended:r.filter(e=>!i.includes(e))}}}const RETRIED_CALL_RESULT={code:`MODEL_CALL_ATTEMPT_RETRIED`,message:`The model call attempt was retried before this tool could run.`};function discardAttempt(e,t){let n=at(e.projection);return unchanged(e,t.calls.map(({callId:e,toolName:t})=>createActionResultEvent({...n,result:{callId:e,isError:!0,kind:`tool-result`,output:{...RETRIED_CALL_RESULT},toolName:t}})))}function suspendStep(e,t){return{events:[],turn:suspend(e.turn,{...t,requests:[]})}}function withoutApproved(e,t){if(e.approved===void 0)return e;let n=e.approved.filter(e=>!t.has(e.action.callId));if(n.length===e.approved.length)return e;let{approved:r,...i}=e;return n.length===0?i:{...i,approved:n}}function runnableCalls(e,t){let n=new Set(e.signIns.map(signInAttemptKey));return(t.approved??[]).filter(e=>(e.signIns??[]).every(e=>!n.has(signInAttemptKey(e))))}function approvedCalls(e){return e.turn.suspended.flatMap(t=>runnableCalls(e,t))}function suspend(e,t){return{...e,suspended:[...e.suspended,t]}}function stepCallIds(e){let t=new Set;for(let n of e.messages)if(n.role===`assistant`&&typeof n.content!=`string`)for(let e of n.content)e.type===`tool-call`&&e.providerExecuted!==!0&&t.add(e.toolCallId);return t}function isComplete(e){if(e.requests.length>0)return!1;let t=answeredCallIds(e.messages);return[...stepCallIds(e)].every(e=>t.has(e))}function withResult(e,t){let n=[...e],r=findCall(n,t.toolCallId);if(r===void 0)return n.push({content:[t],role:`tool`}),n;let i={...t,toolName:r.call.toolName},a=n[r.index+1];return a?.role===`tool`?n[r.index+1]={...a,content:[...a.content,i]}:n.splice(r.index+1,0,{content:[i],role:`tool`}),n}function withoutResults(e,t){return e.flatMap(e=>{if(e.role!==`tool`)return[e];let n=e.content.filter(e=>e.type!==`tool-result`||!t.has(e.toolCallId));return n.length===0?[]:[{...e,content:n}]})}function findCall(e,t){for(let[n,r]of e.entries()){if(r.role!==`assistant`||typeof r.content==`string`)continue;let e=r.content.find(e=>e.type===`tool-call`&&e.toolCallId===t);if(e!==void 0)return{call:e,index:n}}}function startTask(e,t){return unchanged(e,[createTaskStartedEvent(t)])}function settleTask(e,t){let{outcome:n,task:r}=t;return unchanged(e,t.calls.map(e=>{let t={callId:e.callId,kind:r.kind,name:r.name,taskId:r.id,turnId:e.turnId};switch(n.status){case`completed`:return createTaskSettledEvent({...t,output:n.output,status:`completed`});case`failed`:return createTaskSettledEvent({...t,error:{message:n.error},status:`failed`});case`cancelled`:return createTaskSettledEvent(n.reason===void 0?{...t,status:`cancelled`}:{...t,cancel:{reason:n.reason},status:`cancelled`})}}))}function finishRun(e,t){let n=new Set(t.requestIds);return unchanged(e,openInputs(e.projection).filter(e=>n.has(e.request.requestId)||t.taskId!==void 0&&e.taskId===t.taskId).map(inputWithdrawn))}function relay(e,t){let{payload:n}=t,r=[...finishRun(e,{requestIds:t.replacedRequestIds}).events];if(n.kind===`subagent-input-request`){let{event:e}=n;r.push(createInputRequestedEvent({callId:n.callId,requests:e.requests,sequence:e.sequence,stepIndex:e.stepIndex,taskId:e.taskId,turnId:e.turnId}))}else{let{event:t}=n;if(r.push(t),t.type!==`authorization.required`)return unchanged(e,r)}if(r.push(...hold(e,{on:`input`}).events),n.kind!==`subagent-input-request`)return unchanged(e,r);let i=toProxyInputRequestEntries(n).map(([e,n])=>[e,{...n,...t.workflowAsk!==void 0&&{workflowAsk:t.workflowAsk},...t.runId!==void 0&&{runId:t.runId}}]);return{...unchanged(e,r),relays:{upsert:{entries:i,forChildContinuationToken:n.childContinuationToken,inputSource:n.inputSource}}}}function receiveRelayedAnswer(e){return createMessageReceivedEvent(e)}function routeAnswer(e,t){let n=t.children.filter(e=>e.resolutions.length>0).map(e=>createInputResolvedEvent({resolutions:e.resolutions,...e.event}));t.holds===!0&&n.push(...hold(e,{on:`input`}).events);let r=t.children.flatMap(e=>e.resolutions.map(e=>e.requestId));return{...unchanged(e,n),...r.length>0&&{relays:{retire:r}}}}function runSignIn(e,t,n){let r={...authorizationEventFields(t),sequence:e.sequence,stepIndex:e.stepIndex,taskId:e.taskId,turnId:e.turnId};return n===void 0?createAuthorizationRequiredEvent({...r,description:`Sign in to ${t.name} to continue.`,webhookUrl:t.hookUrl}):createAuthorizationCompletedEvent({...r,outcome:n})}function matchSignIns(e,t){let n=new Set(t.attemptIds);return{...unchanged(e,[]),signIns:e.signIns.filter(e=>!n.has(signInAttemptKey(e)))}}function callSignIns(e){return e.suspended.flatMap(e=>(e.approved??[]).flatMap(e=>e.signIns??[]))}function awaitSignIns(e,t){let n=stepCallIds(e),r=t.stopped.filter(({action:e})=>n.has(e.callId));if(r.length===0)return e;let i=r.map(({action:n,connections:r})=>{let i=e.approved?.find(e=>e.action.callId===n.callId);return{action:n,requestId:i?.requestId??n.callId,signIns:[...i?.signIns??[],...t.challenges.filter(e=>r.includes(e.name))]}}),a=new Set(i.map(e=>e.action.callId));return{...e,messages:withoutResults(e.messages,a),approved:[...(e.approved??[]).filter(e=>!a.has(e.action.callId)),...i]}}function completeSignIn(e,t){let n=at(e.projection),r=new Set(callSignIns(e.turn).map(signInAttemptKey));return unchanged(e,t.completions.filter(e=>!r.has(signInAttemptKey(e))).map(t=>{let r=t.attemptId===void 0?void 0:e.projection.authorizations[t.attemptId];return createAuthorizationCompletedEvent({...authorizationEventFields(t),outcome:`authorized`,sequence:r?.sequence??n.sequence,stepIndex:r?.stepIndex??n.stepIndex,turnId:r?.turnId??n.turnId})}))}function ownOpenRequestIds(e){return new Set(openInputs(e.projection).filter(t=>t.callId===void 0&&t.taskId===void 0&&!e.relayedRequestIds.has(t.request.requestId)).map(e=>e.request.requestId))}const CANCELLED_CALL_RESULT=`The turn was cancelled before this call finished.`;function cancel(e){let{projection:t}=e,n=t.activeTurnId,r=e.turn.suspended.filter(e=>n!==void 0&&e.event.turnId===n||e.tasks.some(t=>!answeredCallIds(e.messages).has(t.callId))||(e.approved?.length??0)>0),i=new Set(r.flatMap(e=>e.requests.map(e=>e.requestId))),a=[...openInputs(t).filter(t=>t.turnId===n||i.has(t.request.requestId)||e.relayedRequestIds.has(t.request.requestId)||t.request.kind===`session-limit`).map(inputWithdrawn),...openSignIns(t).filter(e=>e.turnId===n).map(e=>signInWithdrawn(e,`Cancelled.`))];if(n!==void 0){let{sequence:e}=turnCoordinates(t);a.push(createTurnCancelledEvent({sequence:e,turnId:n}))}return a.push(createSessionWaitingEvent(e.usage)),{commit:r.flatMap(cancelledTranscript),events:a,signIns:[],turn:{...e.turn,suspended:e.turn.suspended.filter(e=>!r.includes(e))}}}function cancelledTranscript(e){let t=answeredCallIds(e.messages),n=[...e.messages];for(let r of e.messages)if(r.role===`assistant`&&typeof r.content!=`string`)for(let e of r.content)e.type===`tool-call`&&e.providerExecuted!==!0&&(t.has(e.toolCallId)||(n=withResult(n,{output:{type:`text`,value:CANCELLED_CALL_RESULT},toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-result`})));return n}function clear(e,t){let{projection:n}=e,{sequence:r,turnId:i}=turnCoordinates(n);return{clearsHistory:!0,events:[...openInputs(n).filter(t=>!e.relayedRequestIds.has(t.request.requestId)).map(inputWithdrawn),...openSignIns(n).map(e=>signInWithdrawn(e,`The context was cleared.`)),createContextClearedEvent({sequence:r,sessionId:t.sessionId,turnId:i}),createSessionWaitingEvent(e.usage)],turn:{grants:e.turn.grants,suspended:[]}}}export{CANCELLED_CALL_RESULT,approvedCalls,awaitSignIns,callSignIns,cancel,clear,completeSignIn,discardAttempt,fail,finishRun,finishTurn,hold,idle,matchSignIns,ownOpenRequestIds,receive,receiveRelayedAnswer,relay,routeAnswer,runSignIn,runnableCalls,sessionCompleted,sessionFailed,settle,settleTask,startStep,startTask,stepCallIds,suspend,suspendStep,withResult,withoutApproved};
1
+ import{activeTurnId,answeredCallIds,turnPosition}from"./view.js";import{isComplete,stepCallIds,suspend,withResult,withoutResults}from"./suspended-steps.js";import{activeTurn,interactionOwner}from"#protocol/session-projection/selectors.js";import{isOpen}from"#protocol/session-projection/tree.js";import{callSettledFrom}from"#harness/call-facts.js";import{contextStarted,controlAdmitted,defined,delegatedUsageFact,deliveryApplied,errorInfoOf,fact,runSettledFacts,sessionEndedFacts,turnSettled}from"#harness/facts.js";import{activeTurnIdOf,nextChangeId,openRunOf}from"#protocol/session-projection.js";import{closeUnder}from"#harness/session-machine/cascade.js";import{interruptedCallResult}from"#harness/interrupted-attempt.js";import{interactionSettled,responseAdmitted,responseSettled,responseSubmitted,signInInteractionId}from"#harness/interaction-facts.js";import{signInAttemptKey}from"#harness/hitl/sign-ins.js";const unchanged=(e,t)=>({events:t,turn:e.turn});function followedTurn(e){let t=e.view.selection;return t===null?null:t?.turnId??e.view.session.latestTurnId??null}function waitingDeliveries(e,t){return t.filter(({deliveryId:t})=>e.view?.deliveries[t]?.status===`admitted`)}function consumed(e,t){return fact(`delivery.consumed`,{deliveryId:e.deliveryId,history:(e.history?.length??0)>0?e.history:void 0,parts:e.parts,turnId:t})}function receive(e,t){let{projection:n}=e,r=turnPosition(n),i=activeTurnId(r),a=waitingDeliveries(n,t.deliveries??[]),o=a[0],s=o===void 0?t.cause??{policy:`system`}:{deliveryId:o.deliveryId},{parent:c,predecessor:l,runtime:u,trace:d}=t,f=[];return r.sessionStarted||f.push(fact(`session.started`,{parent:c,predecessor:l,runtime:u,trace:d})),r.turnId===``&&f.push(fact(`turn.started`,{cause:s,follows:followedTurn(n),trace:d,turnId:i})),f.push(...a.map(e=>consumed(e,i))),unchanged(e,f)}function join(e,t){let{projection:n}=e,r=waitingDeliveries(n,t.deliveries),i=activeTurnIdOf(n);return unchanged(e,i===void 0?r.map(({deliveryId:e})=>deliveryApplied(e)):r.map(e=>consumed(e,i)))}function fail(e,t){let n=e.turn.suspended.filter(e=>(e.approved?.length??0)>0),r=errorInfoOf(t),i=activeTurnIdOf(e.projection),a=i===void 0?void 0:openRunOf(e.projection,i),o=[...a===void 0?[]:runSettledFacts({runId:a,outcome:`failed`,error:r}),...t.terminal===void 0?turnSettled(e.projection,{error:r,outcome:`failed`}):sessionEndedFacts(e.projection,{cause:i===void 0?void 0:{turnId:i},error:r,outcome:`failed`})];return{...commitSteps(e.turn,n,cancelledTranscript),events:o}}function settle(e,t){let n=[],r=[...e.turn.suspended];for(let{part:i,result:a,usage:o}of t.results){let t=r.findIndex(e=>stepCallIds(e).has(i.toolCallId)),s=r[t];if(s===void 0)continue;r[t]=withoutApproved({...s,messages:withResult(s.messages,i)},new Set([i.toolCallId]));let c=a===void 0?void 0:e.projection.view.calls[a.callId];a!==void 0&&c!==void 0&&c.taskId===void 0&&c.status!==`settled`&&(n.push(callSettledFrom(a)),o!==void 0&&n.push(delegatedUsageFact(a.callId,o)))}let i=r.filter(isComplete);return{...commitSteps({...e.turn,suspended:r},i),events:n}}function discardAttempt(e,t){let n=e.projection.view,r={family:`run`,id:t.runId},i=t.ending===`steered`?closeUnder(n,r,`steered`):[];if(!isOpen(n,r))return unchanged(e,i);let a=t.ending===`retried`?{outcome:`abandoned`,runId:t.runId,usage:t.usage}:{finishReason:`other`,outcome:`completed`,runId:t.runId,usage:t.usage};return unchanged(e,[...i,...runSettledFacts(a)])}function suspendStep(e,t){return{events:[],turn:suspend(e.turn,{...t,requests:[]})}}function withoutApproved(e,t){if(e.approved===void 0)return e;let n=e.approved.filter(e=>!t.has(e.call.callId));if(n.length===e.approved.length)return e;let{approved:r,...i}=e;return n.length===0?i:{...i,approved:n}}function runnableCalls(e,t){let n=new Set(e.signIns.map(signInAttemptKey));return(t.approved??[]).filter(e=>(e.signIns??[]).every(e=>!n.has(signInAttemptKey(e))))}function startTask(e,t,n){let r=[];return(n?.has(t.taskId)??e.projection.view.tasks[t.taskId]!==void 0)||(n?.add(t.taskId),r.push({type:`task.started`,data:{taskId:t.taskId,kind:t.kind,name:t.name,startedBy:{callId:t.callId}}})),r.push({type:`call.started`,data:defined({callId:t.callId,taskId:t.taskId,clearedBy:t.clearedBy})}),unchanged(e,r)}function settleTask(e,t){let{outcome:n}=t,r=n.status===`completed`?n.output:void 0,i=t.calls[0]?.callId,a=t.calls.map(({callId:e},t)=>fact(`call.settled`,{callId:e,error:n.status===`failed`?{code:`TASK_FAILED`,message:n.error}:void 0,outcome:n.status===`cancelled`?`interrupted`:n.status,output:t===0?r:void 0,outputOf:t>0&&r!==void 0&&i!==void 0?{callId:i}:void 0,reason:n.status===`cancelled`?n.reason??`task-cancelled`:void 0}));return unchanged(e,a)}function endTask(e,t){let n=e.projection.view.tasks[t.taskId];if(n===void 0||n.status===`ended`)return unchanged(e,[]);let{outcome:r}=t;return unchanged(e,[fact(`task.ended`,{error:r.status===`failed`?{code:`TASK_FAILED`,message:r.error}:void 0,outcome:r.status,reason:r.status===`cancelled`?r.reason??`task-ended`:void 0,taskId:t.taskId})])}function finishRun(e,t){let n=new Set(t.requestIds),r=e.projection.view,i=Object.values(r.interactions).filter(e=>e.status===`open`&&(n.has(e.interactionId)||t.taskId!==void 0&&interactionOwner(r,e).taskId===t.taskId));return unchanged(e,i.map(e=>withdrawInteraction(e.interactionId,`asker-ended`)))}function withdrawInteraction(e,t,n=`withdrawn`){return interactionSettled(e,n,{reason:t})}function relay(e,t){let{payload:n}=t,r=e.projection.view,i=n.route===void 0?void 0:{...n.route,...t.workflowAsk!==void 0&&{workflowAsk:t.workflowAsk},...t.runId!==void 0&&{runId:t.runId}},a=[],o={};for(let e of n.events){let t=e.data.interactionId,s=r.interactions[t];if(e.type===`interaction.opened`||s?.origin!==void 0&&`callId`in s.subject&&s.subject.callId===n.callId)switch(e.type){case`interaction.opened`:if(s!==void 0)break;a.push({data:{...e.data,origin:e.data.origin??{interactionId:t,sessionId:n.childSessionId},subject:{callId:n.callId}},type:`interaction.opened`}),i!==void 0&&e.data.request.kind!==`sign-in`&&(o[t]=i);break;case`interaction.settled`:if(s?.status!==`open`)break;a.push(...mirrorSettled(r,e.data));break;case`response.admitted`:{let t=s===void 0?void 0:forwardedAnswer(r,e.data);t!==void 0&&r.responses[t]?.status===`submitted`&&a.push(responseAdmitted(t));break}case`response.settled`:{let t=s===void 0?void 0:forwardedAnswer(r,e.data);t!==void 0&&e.data.outcome!==`applied`&&a.push(responseSettled(t,e.data.outcome,e.data.reason));break}}}return Object.keys(o).length>0?{...unchanged(e,a),relays:o}:unchanged(e,a)}function mirrorSettled(e,t){let n=Object.values(e.responses).filter(e=>e.interactionId===t.interactionId&&e.status!==`settled`).sort((e,t)=>e.introducedAt-t.introducedAt),r=t.outcome===`accepted`||t.outcome===`declined`||t.outcome===`invalid`?n.at(-1):void 0,i=r===void 0?[]:[responseSettled(r.responseId,`applied`,t.reason)],a=r===void 0?t.cause:{responseId:r.responseId};return i.push(fact(`interaction.settled`,{...t,cause:a})),i}function forwardedAnswer(e,t){let n=Object.values(e.responses).filter(e=>e.interactionId===t.interactionId&&e.status!==`settled`).sort((e,t)=>e.introducedAt-t.introducedAt);return(n.find(e=>t.deliveryId!==void 0&&e.deliveryId===t.deliveryId)??n.at(-1))?.responseId}function routeAnswer(e,t){let n=e.projection.view,r=[],i=new Set;for(let e of t.deliveries){if(n.deliveries[e.deliveryId]!==void 0||i.has(e.deliveryId))continue;i.add(e.deliveryId);let{deliveryId:t,principal:a,source:o}=e;r.push(fact(`delivery.admitted`,{deliveryId:t,principal:a,source:o})),e.consumed!==void 0&&r.push(consumed({deliveryId:t,parts:e.consumed.parts},e.consumed.turnId))}let known=e=>i.has(e)||n.deliveries[e]!==void 0,a=new Map;for(let e of t.forwarded)n.responses[e.responseId]===void 0&&n.interactions[e.interactionId]?.status===`open`&&known(e.deliveryId)&&(a.set(e.responseId,e),r.push(responseSubmitted(e)));for(let{answer:e,outcome:i}of t.decided){let t=n.interactions[e.interactionId];if(t?.status!==`open`)continue;let o=[...Object.values(n.responses).filter(e=>e.interactionId===t.interactionId&&e.status!==`settled`).map(e=>e.responseId),...[...a.values()].filter(e=>e.interactionId===t.interactionId).map(e=>e.responseId)].at(-1);o!==void 0&&r.push(responseSettled(o,`applied`)),r.push(interactionSettled(t.interactionId,i,{cause:o===void 0?void 0:{responseId:o},response:e}))}for(let e of t.deliveries)e.consumed===void 0&&e.continues!==!0&&i.has(e.deliveryId)&&r.push(deliveryApplied(e.deliveryId));return unchanged(e,r)}function matchSignIns(e,t){let n=new Set(t.attemptIds);return{...unchanged(e,[]),signIns:e.signIns.filter(e=>!n.has(signInAttemptKey(e)))}}function callSignIns(e){return e.suspended.flatMap(e=>(e.approved??[]).flatMap(e=>e.signIns??[]))}function awaitSignIns(e,t){let n=stepCallIds(e),r=t.stopped.filter(({call:e})=>n.has(e.callId));if(r.length===0)return e;let i=r.map(({approval:n,call:r,connections:i})=>{let a=e.approved?.find(e=>e.call.callId===r.callId),o=n?.interactionId??a?.interactionId,s=n?.responder??a?.responder;return{call:r,...o!==void 0&&{interactionId:o},...s!==void 0&&{responder:s},signIns:[...a?.signIns??[],...t.challenges.filter(e=>i.includes(e.name))]}}),a=new Set(i.map(e=>e.call.callId));return{...e,messages:withoutResults(e.messages,a),approved:[...(e.approved??[]).filter(e=>!a.has(e.call.callId)),...i]}}function signInCallbackFacts(e,t,n){let r=signInInteractionId(t);if(e.interactions[r]?.status!==`open`)return[];let i=`callback_${r}`,a=`response_${i}`,o=interactionSettled(r,n.outcome,{cause:{responseId:a},...n.reason!==void 0&&{reason:n.reason}});return[{data:{deliveryId:i,source:{callback:`authorization`}},type:`delivery.admitted`},responseSubmitted({deliveryId:i,interactionId:r,responseId:a}),responseSettled(a,`applied`),n.retryable===!1?{...o,data:{...o.data,response:{retryable:!1}}}:o,deliveryApplied(i)]}function callSignInsSettled(e,t,n){let r=e.projection.view,i=n===void 0?{outcome:`accepted`}:{...n,outcome:`failed`};return(t.signIns??[]).flatMap(e=>signInCallbackFacts(r,e,i))}function completeSignIn(e,t){let n=e.projection.view,r=new Set(callSignIns(e.turn).map(signInAttemptKey));return unchanged(e,t.completions.filter(e=>!r.has(signInAttemptKey(e))).flatMap(e=>signInCallbackFacts(n,e,{outcome:`accepted`})))}function controlDeliveryFor(e,t){return t??{deliveryId:`control_${String(e.projection.view.position)}`}}function controlled(e,t,n){if(e===void 0)return n(void 0);let r=n({deliveryId:e.deliveryId});return{...r,events:[controlAdmitted(e,t),...r.events,deliveryApplied(e.deliveryId)]}}const CANCELLED_CALL_RESULT=`The turn was cancelled before this call finished.`;function cancel(e,t={}){let{projection:n}=e,r=activeTurnIdOf(n),i=e.turn.suspended.filter(e=>r!==void 0&&e.event.turnId===r||e.tasks.some(t=>!answeredCallIds(e.messages).has(t.callId))||(e.approved?.length??0)>0),a=new Set(i.flatMap(e=>e.requests.map(e=>e.interactionId))),o=n.view,s=Object.values(o.interactions).filter(t=>t.status===`open`&&(e.relayedRequestIds.has(t.interactionId)||a.has(t.interactionId)||t.request.kind===`budget`)).map(e=>withdrawInteraction(e.interactionId,`Cancelled.`,`interrupted`));s.push(...turnSettled(n,{cause:t.cause,outcome:`cancelled`},activeTurn(o)?.turnId??r),...unreadSettled(e));let{queued:c,...l}=e.turn;return{...commitSteps(l,i,cancelledTranscript),events:s,signIns:[]}}function unreadSettled(e){let t=e.projection.view;return(e.turn.queued?.deliveries??[]).filter(({deliveryId:e})=>t.deliveries[e]?.status===`admitted`).map(({deliveryId:e})=>fact(`delivery.settled`,{deliveryId:e,outcome:`ignored`}))}function cancelledTranscript(e){return stoppedTranscript(e,()=>CANCELLED_CALL_RESULT)}function stopInterruptedSteps(e,t){let n=e.turn.suspended.filter(e=>e.requests.some(e=>t.settledInteractions.has(e.interactionId))||[...stepCallIds(e)].some(e=>t.calls.get(e)?.started===!0));return{...commitSteps(e.turn,n,e=>stoppedTranscript(e,e=>interruptedCallResult(t.calls.get(e)))),events:[]}}function commitSteps(e,t,n=e=>e.messages){let r=new Set(t);return{commit:t.flatMap(n),turn:{...e,suspended:e.suspended.filter(e=>!r.has(e))}}}function stoppedTranscript(e,t){let n=answeredCallIds(e.messages),r=[...e.messages];for(let i of e.messages)if(i.role===`assistant`&&typeof i.content!=`string`)for(let e of i.content)e.type===`tool-call`&&e.providerExecuted!==!0&&(n.has(e.toolCallId)||(r=withResult(r,{output:{type:`text`,value:t(e.toolCallId)},toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-result`})));return r}function clear(e,t={}){let{projection:n}=e,r=nextChangeId(n);return{clearsHistory:!0,signIns:[],events:[...clearedInteractions(e),...turnSettled(n,{cause:t.cause,outcome:`cancelled`}),...unreadSettled(e),contextStarted({cause:t.cause,changeId:r,kind:`clear`}),fact(`context.settled`,{changeId:r,kind:`clear`,outcome:`completed`,selects:null})],turn:{remembered:e.turn.remembered,suspended:[]}}}function clearedInteractions(e){let t=e.projection.view;return Object.values(t.interactions).filter(t=>t.status===`open`&&!e.relayedRequestIds.has(t.interactionId)).map(e=>withdrawInteraction(e.interactionId,`The context was cleared.`,`interrupted`))}export{CANCELLED_CALL_RESULT,awaitSignIns,callSignIns,callSignInsSettled,cancel,clear,completeSignIn,controlDeliveryFor,controlled,discardAttempt,endTask,fail,finishRun,join,matchSignIns,receive,relay,routeAnswer,runnableCalls,settle,settleTask,startTask,stopInterruptedSteps,suspendStep,withoutApproved};
@@ -1,12 +1,12 @@
1
- import type { TokenUsage } from "#shared/token-usage.js";
2
1
  import type { ModelMessage } from "ai";
3
2
  import type { AuthorizationChallenge } from "#harness/authorization.js";
3
+ import type { PendingResponder } from "#harness/hitl/index.js";
4
4
  import { type TaskToolCall } from "#execution/tasks/calls.js";
5
- import type { SessionStateMap, StepInput } from "#harness/types.js";
5
+ import type { SessionStateMap, HarnessStepInput } from "#harness/types.js";
6
6
  import type { RuntimeWorkflowTaskRequest } from "#shared/action-types.js";
7
7
  import { type SessionProjection } from "#protocol/session-projection.js";
8
8
  import { type StepCoordinates, type SuspendedStep, type TurnState } from "./state.js";
9
- export type { StepCoordinates, SuspendedStep, TurnState } from "./state.js";
9
+ export type { ApprovalAsk, ApprovedCall, StepCoordinates, SuspendedStep, TurnState, } from "./state.js";
10
10
  export declare const SESSION_PROJECTION_STATE_KEY = "eve.harness.sessionProjection";
11
11
  /** What a transition sees. */
12
12
  export interface SessionView {
@@ -14,10 +14,10 @@ export interface SessionView {
14
14
  readonly projection: SessionProjection;
15
15
  /** Requests this session relays for a child session or a workflow run, by `requestId`. */
16
16
  readonly relayedRequestIds: ReadonlySet<string>;
17
+ /** Who gave each answer a response policy still weighs, by response id. */
18
+ readonly responders: Readonly<Record<string, PendingResponder>>;
17
19
  /** The sign-in attempts the session waits on, with what completing them needs. */
18
20
  readonly signIns: readonly AuthorizationChallenge[];
19
- /** The session's token usage so far, which its waiting and terminal events report. */
20
- readonly usage: TokenUsage;
21
21
  }
22
22
  /** Reads the authoritative lifecycle facts saved alongside execution state. */
23
23
  export declare function storedProjection(state: SessionStateMap | undefined): SessionProjection;
@@ -30,15 +30,15 @@ export interface TurnPosition {
30
30
  readonly turnId: string;
31
31
  /** The open turn streamed assistant output, so steering can no longer restart it. */
32
32
  readonly assistantOutputStarted?: boolean;
33
+ /** The open turn's latest open model run, which content and calls belong to. */
34
+ readonly runId?: string;
33
35
  }
34
36
  export declare function turnPosition(projection: SessionProjection): TurnPosition;
35
37
  /** The open turn's id, or the id the next turn takes. */
36
38
  export declare function activeTurnId(position: Pick<TurnPosition, "sequence" | "turnId">): string;
37
39
  export declare function isBetweenTurns(projection: SessionProjection): boolean;
38
- /** The index the open turn's next `step.started` takes. */
39
- export declare function nextStepIndex(projection: SessionProjection): number;
40
40
  /** Input the session holds until it can run. */
41
- export declare function queuedInput(state: SessionStateMap | undefined): StepInput | undefined;
41
+ export declare function queuedInput(state: SessionStateMap | undefined): HarnessStepInput | undefined;
42
42
  export declare function suspendedSteps(state: SessionStateMap | undefined): readonly SuspendedStep[];
43
43
  /** The ids of calls that already have a result in `messages`. */
44
44
  export declare function answeredCallIds(messages: readonly ModelMessage[]): ReadonlySet<string>;
@@ -53,3 +53,7 @@ export interface RuntimeWait {
53
53
  }
54
54
  /** The calls suspended steps wait on the runtime for, or `undefined` when none do. */
55
55
  export declare function runtimeWait(state: SessionStateMap | undefined): RuntimeWait | undefined;
56
+ /** The suspended step whose approval `interactionId` names. */
57
+ export declare function stepForRequest(view: SessionView, interactionId: string): SuspendedStep | undefined;
58
+ /** Requests this session asked itself and still awaits; relayed requests answer elsewhere. */
59
+ export declare function ownOpenRequestIds(view: Omit<SessionView, "turn">): ReadonlySet<string>;
@@ -1 +1 @@
1
- import{readTurnState}from"./state.js";import{initialSessionProjection,turnCoordinates}from"#protocol/session-projection.js";import{pendingTaskToolCalls}from"#execution/tasks/calls.js";const SESSION_PROJECTION_STATE_KEY=`eve.harness.sessionProjection`;function storedProjection(e){return e?.[`eve.harness.sessionProjection`]??initialSessionProjection()}function turnPosition(e){let{sequence:t,stepIndex:n}=turnCoordinates(e),r=e.activeTurnId===void 0?void 0:e.turns[e.activeTurnId],i={sessionStarted:e.started===!0,sequence:t,stepIndex:n,turnId:r?.turnId??``};return r?.outputStarted===!0&&(i.assistantOutputStarted=!0),i}function activeTurnId(e){return e.turnId===``?`turn_${e.sequence}`:e.turnId}function isBetweenTurns(e){return e.activeTurnId===void 0}function nextStepIndex(e){let t=e.activeTurnId===void 0?void 0:e.turns[e.activeTurnId];return t?.stepIndex===void 0?0:t.stepIndex+1}function queuedInput(e){return readTurnState(e).queued}function suspendedSteps(e){return readTurnState(e).suspended}function answeredCallIds(e){let t=new Set;for(let n of e)if((n.role===`tool`||n.role===`assistant`)&&typeof n.content!=`string`)for(let e of n.content)e.type===`tool-result`&&t.add(e.toolCallId);return t}function runningTasks(e){let t=answeredCallIds(e.messages);return e.tasks.filter(e=>!t.has(e.callId))}function runtimeWait(e){let t=suspendedSteps(e).flatMap(e=>{let t=runningTasks(e),n=pendingTaskToolCalls(e.messages);return t.length===0&&n.length===0?[]:[{step:e,tasks:t,taskToolCalls:n}]}),n=t[0];if(n===void 0)return;let r=t.flatMap(e=>e.tasks),i=t.flatMap(e=>e.taskToolCalls);return{callIds:[...r.map(e=>e.callId),...i.map(e=>e.callId)],event:n.step.event,taskToolCalls:i,tasks:r}}export{SESSION_PROJECTION_STATE_KEY,activeTurnId,answeredCallIds,isBetweenTurns,nextStepIndex,queuedInput,runningTasks,runtimeWait,storedProjection,suspendedSteps,turnPosition};
1
+ import{readTurnState}from"./state.js";import{openRequests}from"#protocol/session-projection/reader.js";import{interactionOwner}from"#protocol/session-projection/selectors.js";import{activeTurnIdOf,initialSessionProjection,openRunOf,turnCoordinates}from"#protocol/session-projection.js";import{pendingTaskToolCalls}from"#execution/tasks/calls.js";const SESSION_PROJECTION_STATE_KEY=`eve.harness.sessionProjection`;function storedProjection(e){let t=e?.[SESSION_PROJECTION_STATE_KEY];if(t===void 0)return initialSessionProjection();let n=initialSessionProjection(),r={counters:t.counters??n.counters,view:t.view??n.view,usageWindow:t.usageWindow};return t.outputStarted===void 0?r:{...r,outputStarted:t.outputStarted}}function turnPosition(e){let{sequence:t,stepIndex:n}=turnCoordinates(e),r=activeTurnIdOf(e),i={sessionStarted:e.view.session.status!==`new`,sequence:t,stepIndex:n,turnId:r??``};if(r===void 0)return i;e.outputStarted===r&&(i.assistantOutputStarted=!0);let a=openRunOf(e,r);return a!==void 0&&(i.runId=a),i}function activeTurnId(e){return e.turnId===``?`turn_${e.sequence}`:e.turnId}function isBetweenTurns(e){return activeTurnIdOf(e)===void 0}function queuedInput(e){return readTurnState(e).queued}function suspendedSteps(e){return readTurnState(e).suspended}function answeredCallIds(e){let t=new Set;for(let n of e)if((n.role===`tool`||n.role===`assistant`)&&typeof n.content!=`string`)for(let e of n.content)e.type===`tool-result`&&t.add(e.toolCallId);return t}function runningTasks(e){let t=answeredCallIds(e.messages);return e.tasks.filter(e=>!t.has(e.callId))}function runtimeWait(e){let t=suspendedSteps(e).flatMap(e=>{let t=runningTasks(e),n=pendingTaskToolCalls(e.messages);return t.length===0&&n.length===0?[]:[{step:e,tasks:t,taskToolCalls:n}]}),n=t[0];if(n===void 0)return;let r=t.flatMap(e=>e.tasks),i=t.flatMap(e=>e.taskToolCalls);return{callIds:[...r.map(e=>e.callId),...i.map(e=>e.callId)],event:n.step.event,taskToolCalls:i,tasks:r}}function stepForRequest(e,t){return e.turn.suspended.find(e=>e.requests.some(e=>e.interactionId===t))}function ownOpenRequestIds(e){return new Set(openRequests(e.projection.view).filter(t=>t.origin===void 0&&interactionOwner(e.projection.view,t).taskId===void 0&&!e.relayedRequestIds.has(t.interactionId)).map(e=>e.interactionId))}export{SESSION_PROJECTION_STATE_KEY,activeTurnId,answeredCallIds,isBetweenTurns,ownOpenRequestIds,queuedInput,runningTasks,runtimeWait,stepForRequest,storedProjection,suspendedSteps,turnPosition};
@@ -0,0 +1,16 @@
1
+ import type { SessionEvent } from "#protocol/session-event.js";
2
+ import type { SessionView } from "#protocol/session-projection/tables.js";
3
+ /**
4
+ * What a step announces as it ends, from the tables before and after it: that the open turn
5
+ * waits on interactions — `turn.paused` with the interactions, and `awaiting-input` for the
6
+ * deliveries the turn answers for now. It announces when the step leaves the turn waiting on
7
+ * someone it didn't wait on before, or a delivery arrived or moved during the step and can go
8
+ * no further: one answer of a batch still waiting for the rest, or a message queued behind a
9
+ * budget question. A step that only finds the turn as it was announces nothing.
10
+ *
11
+ * A step is the session's unit of progress: inside one, a line can look as if nothing is left
12
+ * to do while the step goes on, so only its end can say. Every step's publisher asks here, so
13
+ * nothing the session runs announces a pause itself, and the announcement materializes
14
+ * `waiting(view, turnId)` for readers that follow the stream from a cursor without folding.
15
+ */
16
+ export declare function announceWaiting(before: SessionView, after: SessionView): SessionEvent[];
@@ -0,0 +1 @@
1
+ import{activeTurn,openWork,waiting}from"#protocol/session-projection/selectors.js";function announceWaiting(e,t){let n=activeTurn(t)?.turnId;if(n===void 0)return[];let r=waiting(t,n);if(r?.on!==`interaction`)return[];let i=waiting(e,n),a=new Set(i?.on===`interaction`?i.interactions.map(e=>e.interactionId):[]),o=openWork(t,{turnId:n}).deliveries.map(e=>e.deliveryId);return!Object.values(t.deliveries).some(t=>t.status!==`settled`&&e.deliveries[t.deliveryId]?.status!==t.status)&&r.interactions.every(e=>a.has(e.interactionId))?[]:[{data:{awaiting:r.interactions.map(({interactionId:e})=>({interactionId:e})),turnId:n},type:`turn.paused`},...o.map(e=>({data:{deliveryId:e,outcome:`awaiting-input`,turnId:n},type:`delivery.settled`}))]}export{announceWaiting};
@@ -0,0 +1,22 @@
1
+ import type { SessionStateMap } from "#harness/types.js";
2
+ import type { SessionView } from "#protocol/session-projection/tables.js";
3
+ import type { TokenUsage } from "#shared/token-usage.js";
4
+ export declare const NO_USAGE: TokenUsage;
5
+ /** Lifetime spend comes only from committed usage facts, including delegated spend. */
6
+ export declare function sessionUsage(session: {
7
+ readonly state?: SessionStateMap;
8
+ }): TokenUsage;
9
+ /** Own model runs include summaries; delegated spend belongs to the calls that delegated. */
10
+ export declare function turnUsage(view: SessionView, turnId: string): TokenUsage;
11
+ /** A persistent child reports each committed unit of spend to its parent exactly once. */
12
+ export declare function takeSessionUsageDelta<T extends {
13
+ readonly state?: SessionStateMap;
14
+ }>(session: T): {
15
+ readonly delta: TokenUsage;
16
+ readonly session: T;
17
+ };
18
+ /** Spend outside a turn must not be claimed again by a later turn's report. */
19
+ export declare function markUsageReported<T extends {
20
+ readonly state?: SessionStateMap;
21
+ }>(session: T, usage: TokenUsage): T;
22
+ export declare function withModelUsage(view: SessionView, usage: TokenUsage): SessionView;
@@ -0,0 +1 @@
1
+ import{storedProjection}from"#harness/session-machine/view.js";import{addTokenUsage,usageSince}from"#shared/token-usage-math.js";const REPORTED_SESSION_USAGE_STATE_KEY=`eve.harness.reportedSessionUsage`,NO_USAGE={cacheReadTokens:0,cacheWriteTokens:0,inputTokens:0,outputTokens:0};function sessionUsage(e){return storedProjection(e.state).view.usage.total}function turnUsage(e,t){let n=NO_USAGE;for(let r of Object.values(e.runs)){if(r.usage===void 0)continue;let{owner:i}=r;(`turnId`in i?i.turnId:e.changes[i.changeId]?.turnId)===t&&(n=addTokenUsage(n,r.usage))}return n}function takeSessionUsageDelta(e){let t=sessionUsage(e);return{delta:usageSince(t,reportedUsage(e.state)),session:withReported(e,t)}}function markUsageReported(e,t){return withReported(e,addTokenUsage(reportedUsage(e.state),t))}function withModelUsage(e,t){return{...e,usage:{byKind:{model:t},total:t}}}function reportedUsage(e){return e?.[REPORTED_SESSION_USAGE_STATE_KEY]??NO_USAGE}function withReported(e,t){return{...e,state:{...e.state,[REPORTED_SESSION_USAGE_STATE_KEY]:t}}}export{NO_USAGE,markUsageReported,sessionUsage,takeSessionUsageDelta,turnUsage,withModelUsage};
@@ -1,7 +1,4 @@
1
- import type { ModelMessage } from "ai";
2
1
  import type { StepResult } from "#harness/types.js";
3
2
  import type { ModelResponse } from "#harness/model-call/run.js";
4
- import type { Step } from "#harness/step/context.js";
3
+ import { type Step } from "#harness/step/context.js";
5
4
  export declare function handleStepResult(step: Step, input: ModelResponse): Promise<StepResult>;
6
- /** The SDK's approval parts: eve answers approvals itself, so history never holds them. */
7
- export declare function withoutApprovalParts(messages: readonly ModelMessage[]): ModelMessage[];
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{REPLY_TOOL_NAME}from"#protocol/reply-tool.js";import{resolveAssistantStepText,validateHarnessModelMessages}from"#harness/messages.js";import{renderFinalOutputWhileWorkingError}from"#execution/tasks/render.js";import{extractToolApprovalInputRequests,hasRunnableQueue,parkOnApprovals,stopForToolSignIn}from"#harness/hitl/index.js";import{stageToolResultMedia}from"#harness/attachment-staging.js";import{isWorkflowTool,workingTaskIds}from"#execution/tasks/model-step.js";import{collectWorkflowCalls}from"#harness/coordination.js";import{fail,finishTurn,hold,suspendStep,withResult}from"#harness/session-machine/transitions.js";import{createToolResultMessagePartFromToolError,isToolResultError}from"#harness/action-result-helpers.js";import{setRequestEnvelopeTokens}from"#harness/request-envelope.js";import{getInvalidToolCallInputError,isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{FINAL_OUTPUT_BESIDE_PENDING_CALLS}from"#harness/final-output.js";import{appendMissingToolResultMessages,extractToolResultCallIds}from"#harness/model-call/response.js";import{clearTurnClientContextState}from"#harness/turn-client-context.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";const log=createLogger(`harness.tool-loop`);function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===REPLY_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}async function handleStepResult(e,t){let{promptMessages:n,result:r}=t,i=resolveAssistantStepText(r.response.messages,r.text),a=getInvalidToolCallInputErrors({toolCalls:r.toolCalls}),o=new Set([...r.invalidInputToolCallIds??[],...r.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...a.map(e=>e.toolCallId)]),s=appendMissingToolResultMessages({append:a.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:r.response.messages}),c=new Set;for(let e of[...r.content??[],...r.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&c.add(e.toolCallId);let l=normalizeProviderToolHistory({messages:s,providerExecutedOutcomeIds:c}),u=await stageToolResultMedia(withoutApprovalParts(l.messages));e.session=setRequestEnvelopeTokens({...e.session,compaction:createNextCompactionConfig(e.session.compaction,t.durableModelPromptMessageCount,r)},r.usage?.inputTokens!==void 0&&t.durableModelPromptMessageCount!==void 0?t.requestEnvelopeTokens:void 0);let d=extractToolApprovalInputRequests({content:r.content??[],excludedCallIds:o,tools:t.catalog}),f=new Set([...d.map(e=>e.action.callId),...extractToolResultCallIds(u)]),p=(r.toolCalls??[]).filter(e=>!o.has(e.toolCallId)).filter(e=>!f.has(e.toolCallId)).filter(e=>isWorkflowTool(t.catalog.get(e.toolName))),m=resolveInlineAuthorizationInterrupt({toolResults:r.toolResults});if(p.length>0||d.length>0||m){let{sequence:i,stepIndex:a,turnId:o}=e.position(),s=collectWorkflowCalls({session:e.session,toolCalls:p,tools:t.catalog,turnId:o});e.session={...s.session,history:validateHarnessModelMessages(n)};let c={event:{sequence:i,stepIndex:a,turnId:o},messages:answerCallsThatWontRun(u,r),tasks:s.workflowRequests};if(d.length>0){let n=await parkOnApprovals(e,{...c,requests:d,tools:t.catalog,waitsOn:m?`sign-in`:p.length>0?`runtime`:void 0});return m?stopForToolSignIn(e,m):n}return await e.apply(suspendStep(e.view(),c)),m?stopForToolSignIn(e,m):(s.workflowRequests.some(e=>e.entry.entryPoint===`execute`)&&await e.apply(hold(e.view(),{on:`tasks`})),{next:null,session:e.session})}e.session={...e.session,history:validateHarnessModelMessages([...n,...u])};let h=e.session.outputSchema!==void 0&&extractFinalOutput(r)!==void 0,g=workingTaskIds(e.session),_=h&&g.length>0,v=u;_&&(v=rejectFinalOutput(u,r,g),e.session={...e.session,history:validateHarnessModelMessages([...n,...v])});let y=await stepEndsTurn(r,u,t.endsTurnTools);return(!h||_)&&(v.at(-1)?.role===`tool`&&!y||l.outcomeEndsResponse||hasRunnableQueue(e.view()))?{next:e.runStep,session:e.session}:g.length>0?(await e.apply(hold(e.view(),{on:`tasks`})),{held:{kind:`tasks`,taskIds:g},next:null,session:e.session}):settleTurn(e,{history:n,result:r,stepOutput:y?null:i})}function answerCallsThatWontRun(e,t){let n=extractToolResultCallIds(e);return(t.toolCalls??[]).filter(e=>e.toolName===REPLY_TOOL_NAME).map(e=>({output:{type:`error-text`,value:FINAL_OUTPUT_BESIDE_PENDING_CALLS},toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-result`})).filter(e=>!n.has(e.toolCallId)).reduce((e,t)=>withResult(e,t),[...e])}function withoutApprovalParts(e){return e.flatMap(e=>{if(e.role!==`assistant`&&e.role!==`tool`||!Array.isArray(e.content))return[e];let t=e.content.filter(e=>e.type!==`tool-approval-request`&&e.type!==`tool-approval-response`);return t.length===0?[]:[{...e,content:t}]})}async function stepEndsTurn(e,t,n){let r=e.toolCalls??[];if(r.length===0)return!1;let i=new Map;for(let e of t)if(e.role===`tool`)for(let t of e.content)t.type===`tool-result`&&i.set(t.toolCallId,t.output);if(!r.every(e=>{let t=i.get(e.toolCallId);return n.has(e.toolName)&&t!==void 0&&!isToolResultError(t)}))return!1;let a=new Map((e.toolResults??[]).map(e=>[e.toolCallId,e.output]));for(let e of r){let t=n.get(e.toolName);if(typeof t==`function`&&!await callEndsTurn(t,a.get(e.toolCallId),e))return!1}return!0}async function callEndsTurn(e,t,n){try{return await e(t)===!0}catch(e){return log.warn(`endsTurn threw; continuing the turn`,{callId:n.toolCallId,error:e,toolName:n.toolName}),!1}}function rejectFinalOutput(e,t,n){let r=(t.toolCalls??[]).find(e=>e.toolName===REPLY_TOOL_NAME);if(r===void 0)return[...e];let i={output:{type:`error-text`,value:renderFinalOutputWhileWorkingError(n)},toolCallId:r.toolCallId,toolName:REPLY_TOOL_NAME,type:`tool-result`};return[...e,{content:[i],role:`tool`}]}const OUTPUT_SCHEMA_NOT_FULFILLED={code:`OUTPUT_SCHEMA_NOT_FULFILLED`,message:`The agent could not produce a result matching the requested schema.`};function extractFinalOutput(e){return(e.toolCalls??[]).find(e=>e.toolName===REPLY_TOOL_NAME&&!isInvalidToolCall(e))?.input}async function settleTurn(e,t){let{history:n,result:r,stepOutput:i}=t,a=e.session.outputSchema;if(e.session=clearTurnClientContextState(e.session),a===void 0)return await e.apply(finishTurn(e.view()),e.session.history),{next:null,session:e.session,settledTurn:{output:i??``}};let o=extractFinalOutput(r);return o===void 0?(e.session={...e.session,outputSchema:void 0},await e.apply(fail(e.view(),OUTPUT_SCHEMA_NOT_FULFILLED)),{next:null,session:e.session,settledTurn:{isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message}}):(e.session={...e.session,history:[...n,{content:JSON.stringify(o),role:`assistant`}],outputSchema:void 0},await e.apply(finishTurn(e.view(),{result:o}),e.session.history),{next:null,session:e.session,settledTurn:{output:o}})}function createNextCompactionConfig(e,t,n){let r={recentWindowSize:e.recentWindowSize,threshold:e.threshold,thresholdPercent:e.thresholdPercent};return n.usage?.inputTokens!==void 0&&t!==void 0&&(r.lastKnownInputTokens=n.usage.inputTokens,r.lastKnownPromptMessageCount=t),r}export{handleStepResult,withoutApprovalParts};
1
+ import{createLogger}from"#internal/logging.js";import{REPLY_TOOL_NAME}from"#protocol/reply-tool.js";import{renderFinalOutputWhileWorkingError}from"#execution/tasks/render.js";import{askStepApprovals,stopForToolSignIn}from"#harness/hitl/index.js";import{stageToolResultMedia}from"#harness/attachment-staging.js";import{resolveAssistantStepText,validateHarnessModelMessages}from"#harness/messages.js";import{isWorkflowTool,workingTaskIds}from"#execution/tasks/model-step.js";import{collectWorkflowCalls}from"#harness/coordination.js";import{fail,suspendStep}from"#harness/session-machine/transitions.js";import{turnSettled}from"#harness/facts.js";import{createToolResultMessagePartFromToolError,isToolResultError}from"#harness/action-result-helpers.js";import{getInvalidToolCallInputError,isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{withPromptMeasurement}from"#harness/compaction/engine.js";import{withResult}from"#harness/session-machine/suspended-steps.js";import{hasQueuedTurnInput,park}from"#harness/step/park.js";import{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{FINAL_OUTPUT_BESIDE_PENDING_CALLS}from"#harness/final-output.js";import{failTurnForReaction}from"#harness/step/context.js";import{appendMissingToolResultMessages,extractToolResultCallIds}from"#harness/model-call/response.js";import{clearTurnClientContextState}from"#harness/turn-client-context.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";const log=createLogger(`harness.tool-loop`);function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===REPLY_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}async function handleStepResult(e,t){let{promptMessages:n,result:r}=t,i=resolveAssistantStepText(r.response.messages,r.text),a=getInvalidToolCallInputErrors({toolCalls:r.toolCalls}),o=new Set([...r.invalidInputToolCallIds??[],...r.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...a.map(e=>e.toolCallId)]),s=appendMissingToolResultMessages({append:a.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:r.response.messages}),c=new Set;for(let e of[...r.content??[],...r.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&c.add(e.toolCallId);let l=normalizeProviderToolHistory({messages:s,providerExecutedOutcomeIds:c}),u=await stageToolResultMedia(l.messages);e.session={...e.session,compaction:withPromptMeasurement(e.session.compaction,{inputTokens:r.usage?.inputTokens,promptMessageCount:t.durableModelPromptMessageCount,requestEnvelopeTokens:t.requestEnvelopeTokens})};let d=r.approvalRequests??[],f=new Set([...d.map(e=>e.call.callId),...extractToolResultCallIds(u)]),p=(r.toolCalls??[]).filter(e=>!o.has(e.toolCallId)).filter(e=>!f.has(e.toolCallId)).filter(e=>isWorkflowTool(t.catalog.get(e.toolName))),m=resolveInlineAuthorizationInterrupt({signIns:r.signIns??[]});if(p.length>0||d.length>0||m){let{sequence:i,stepIndex:a,turnId:o}=e.position(),s=collectWorkflowCalls({session:e.session,toolCalls:p,tools:t.catalog,turnId:o});e.session={...s.session,history:validateHarnessModelMessages(n)};let c={event:{sequence:i,stepIndex:a,turnId:o},messages:answerCallsThatWontRun(u,r),tasks:s.workflowRequests.map(e=>({...e,clearedBy:r.policyApprovals?.[e.callId]}))};return d.length>0?await askStepApprovals(e,{...c,requests:d,tools:t.catalog}):await e.apply(suspendStep(e.view(),c)),m?stopForToolSignIn(e,m):park(e)}e.session={...e.session,history:validateHarnessModelMessages([...n,...u])};let h=e.session.outputSchema!==void 0&&extractFinalOutput(r)!==void 0,g=workingTaskIds(e.session),_=h&&g.length>0,v=u;_&&(v=rejectFinalOutput(u,r,g),e.session={...e.session,history:validateHarnessModelMessages([...n,...v])});let y=await stepEndsTurn(r,u,t.endsTurnTools);return(!h||_)&&(v.at(-1)?.role===`tool`&&!y||l.outcomeEndsResponse||hasQueuedTurnInput(e.view()))?{next:e.runStep,session:e.session}:g.length>0?{held:{kind:`tasks`,taskIds:g},next:null,session:e.session}:settleTurn(e,{history:n,result:r,stepOutput:y?null:i})}function answerCallsThatWontRun(e,t){let n=extractToolResultCallIds(e);return(t.toolCalls??[]).filter(e=>e.toolName===REPLY_TOOL_NAME).map(e=>({output:{type:`error-text`,value:FINAL_OUTPUT_BESIDE_PENDING_CALLS},toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-result`})).filter(e=>!n.has(e.toolCallId)).reduce((e,t)=>withResult(e,t),[...e])}async function stepEndsTurn(e,t,n){let r=e.toolCalls??[];if(r.length===0)return!1;let i=new Map;for(let e of t)if(e.role===`tool`)for(let t of e.content)t.type===`tool-result`&&i.set(t.toolCallId,t.output);if(!r.every(e=>{let t=i.get(e.toolCallId);return n.has(e.toolName)&&t!==void 0&&!isToolResultError(t)}))return!1;let a=new Map((e.toolResults??[]).map(e=>[e.toolCallId,e.output]));for(let e of r){let t=n.get(e.toolName);if(typeof t==`function`&&!await callEndsTurn(t,a.get(e.toolCallId),e))return!1}return!0}async function callEndsTurn(e,t,n){try{return await e(t)===!0}catch(e){return log.warn(`endsTurn threw; continuing the turn`,{callId:n.toolCallId,error:e,toolName:n.toolName}),!1}}function rejectFinalOutput(e,t,n){let r=(t.toolCalls??[]).find(e=>e.toolName===REPLY_TOOL_NAME);if(r===void 0)return[...e];let i={output:{type:`error-text`,value:renderFinalOutputWhileWorkingError(n)},toolCallId:r.toolCallId,toolName:REPLY_TOOL_NAME,type:`tool-result`};return[...e,{content:[i],role:`tool`}]}const OUTPUT_SCHEMA_NOT_FULFILLED={code:`OUTPUT_SCHEMA_NOT_FULFILLED`,message:`The agent could not produce a result matching the requested schema.`};function extractFinalOutput(e){return(e.toolCalls??[]).find(e=>e.toolName===REPLY_TOOL_NAME&&!isInvalidToolCall(e))?.input}async function settleTurn(e,t){let{history:n,result:r,stepOutput:i}=t,a=await failTurnForReaction(e);if(a!==void 0)return a;let o=e.session.outputSchema;if(e.session=clearTurnClientContextState(e.session),o===void 0)return await e.apply(turnSettled(e.view().projection,{outcome:`completed`}),e.session.history),{next:null,session:e.session,settledTurn:{output:i??``}};let s=extractFinalOutput(r);return s===void 0?(e.session={...e.session,outputSchema:void 0},await e.apply(fail(e.view(),OUTPUT_SCHEMA_NOT_FULFILLED)),{next:null,session:e.session,settledTurn:{isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message}}):(e.session={...e.session,history:[...n,{content:JSON.stringify(s),role:`assistant`}],outputSchema:void 0},await e.apply(turnSettled(e.view().projection,{outcome:`completed`}),e.session.history),{next:null,session:e.session,settledTurn:{output:s}})}export{handleStepResult};
@@ -1,14 +1,13 @@
1
1
  import type { ModelMessage } from "ai";
2
+ import type { SessionEvent } from "#protocol/session-event.js";
2
3
  import type { AlsContext } from "#context/container.js";
3
4
  import { type HarnessModelMessage } from "#harness/messages.js";
4
5
  import { type Publish, type Transition } from "#harness/session-machine/commit.js";
5
6
  import { type StepProjection } from "#harness/session-machine/current.js";
7
+ import { type Prompt } from "#harness/step/prompt.js";
6
8
  import { type SessionView, type TurnPosition } from "#harness/session-machine/view.js";
7
- import type { HarnessEmitFn, HarnessSession, StepFn, StepInput, StepResult, ToolLoopHarnessConfig } from "#harness/types.js";
9
+ import type { HarnessEmitFn, HarnessSession, StepFn, HarnessStepInput, StepResult, ToolLoopHarnessConfig } from "#harness/types.js";
8
10
  import type { InstrumentationStepScope } from "#instrumentation/runtime.js";
9
- import type { SessionHistoryMessage } from "#shared/session-history.js";
10
- import type { createHistoryViewPreparer } from "#shared/history-view.js";
11
- type HistoryViewPreparer = ReturnType<typeof createHistoryViewPreparer>;
12
11
  /**
13
12
  * One harness step: the session it changes, and the machine it changes the session through.
14
13
  * Every lifecycle change goes through `apply`, which publishes the transition's events and saves
@@ -27,11 +26,15 @@ export interface Step {
27
26
  readonly instrumentation: InstrumentationStepScope<HarnessSession> | undefined;
28
27
  /** A child's caller or a schedule hears only the turn's real end. */
29
28
  readonly hasDelegatedCaller: boolean;
29
+ /**
30
+ * The session's reader sees only its final reply: a child's caller or a schedule. A held turn's
31
+ * text there narrates; a person reads it as a reply.
32
+ */
33
+ readonly finalReplyOnly: boolean;
30
34
  view(): SessionView;
31
35
  position(): TurnPosition;
32
- apply(transition: Transition, messages?: readonly ModelMessage[]): Promise<void>;
33
- /** History as the model and hooks see it, under `state`, the session's by default. */
34
- projectHistory(messages: readonly ModelMessage[], state?: HarnessSession["state"]): readonly ModelMessage[];
36
+ /** Publishes a transition, or facts that change nothing private, as one commit. */
37
+ apply(change: Transition | readonly SessionEvent[], messages?: readonly ModelMessage[]): Promise<void>;
35
38
  }
36
39
  export declare function createStep(input: {
37
40
  readonly config: ToolLoopHarnessConfig;
@@ -39,29 +42,26 @@ export declare function createStep(input: {
39
42
  readonly emit: HarnessEmitFn | undefined;
40
43
  readonly instrumentation: InstrumentationStepScope<HarnessSession> | undefined;
41
44
  readonly live: StepProjection;
42
- readonly prepareHistory: HistoryViewPreparer;
43
45
  readonly publish: Publish;
44
46
  readonly runStep: StepFn;
45
47
  readonly session: HarnessSession;
46
48
  }): Step;
47
- /**
48
- * Opens the turn, or joins the open one, with the preamble its hooks prepare: memory recall and
49
- * dynamic instructions join history ahead of the turn's input. Returns the step's result when the
50
- * preamble failed the session.
51
- */
49
+ /** Opens the turn, or joins the open one. Returns the step's result when opening failed the session. */
52
50
  export declare function openTurn(step: Step, opened: {
53
- /** Prior conversation the delivery added, published before the message. */
54
- readonly imported?: readonly SessionHistoryMessage[];
55
51
  readonly input: readonly HarnessModelMessage[];
56
- readonly message?: StepInput["message"];
52
+ readonly message?: HarnessStepInput["message"];
53
+ /** The deliveries the turn consumes. */
54
+ readonly deliveries?: HarnessStepInput["deliveries"];
57
55
  }): Promise<StepResult | undefined>;
58
56
  /**
59
- * A lifecycle event failed to publish: a dynamic model selection failure ends the session, and a
60
- * dynamic connection resolver failure parks it. Anything else throws.
57
+ * Before a model call: the session's dynamic values are evaluated with the conversation the call
58
+ * reads, and user-role instructions from new occurrences join history, ahead of the turn's input
59
+ * on its first call. A value that fails fails the turn; returns the step's result then.
61
60
  */
61
+ export declare function prepareModelCall(step: Step, preview: Prompt): Promise<StepResult | undefined>;
62
+ /** A hook failed during the turn: the turn fails. Returns the step's result then. */
63
+ export declare function failTurnForReaction(step: Step): Promise<StepResult | undefined>;
64
+ /** A lifecycle event failed to publish: a dynamic model selection failure ends the session. */
62
65
  export declare function failBoundaryEvent(step: Step, error: unknown): Promise<StepResult>;
63
- /** A dynamic connection resolver threw: the session parks so the next message can retry. */
64
- export declare function failConnectionResolution(step: Step, error: unknown): Promise<StepResult>;
65
66
  /** No model can serve the turn: the session fails. */
66
67
  export declare function failModelSelection(step: Step, error: unknown): Promise<StepResult>;
67
- export {};
@@ -1 +1 @@
1
- import{createErrorId,createLogger}from"#internal/logging.js";import{recordAppliedSession}from"#harness/session-machine/current.js";import{ParentSessionKey,SessionCallbackKey,SessionPredecessorKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{validateHarnessModelMessages}from"#harness/messages.js";import{drainMemoryCommit,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{fail,receive}from"#harness/session-machine/transitions.js";import{isDynamicConnectionResolutionError}from"#context/dynamic-connection-lifecycle.js";import{applyTransition,sessionView}from"#harness/session-machine/commit.js";import{isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";const log=createLogger(`harness.step`);function createStep(e){let{ctx:t,live:n}=e,r={session:e.session,frameworkToolNames:new Set,config:e.config,ctx:t,runStep:e.runStep,publish:e.publish,emit:e.emit,instrumentation:e.instrumentation,hasDelegatedCaller:t?.get(ParentSessionKey)!==void 0||t?.get(SessionCallbackKey)!==void 0,view:()=>sessionView(n.read(),r.session.state),position:()=>turnPosition(n.read()),async apply(n,i){r.session=await applyTransition(r.session,n,e.publish,i),t!==void 0&&recordAppliedSession(t,r.session)},projectHistory:(t,n=r.session.state)=>e.prepareHistory(t,n).messages};return r}async function openTurn(e,t){let{config:n,ctx:r}=e;r!==void 0&&(prepareDynamicInstructionPreamble(r,e.projectHistory(e.session.history)),prepareMemoryPreamble(r,{history:e.session.history,input:[...t.input],projector:n.historyProjector,state:e.session.state}));let i;try{let i=e.position(),a=await e.instrumentation?.preparePreamble({sequence:i.sequence,sessionStarted:i.sessionStarted,traceContext:e.instrumentation?.traceContext,turnId:activeTurnId(i)});await e.apply(receive(e.view(),{imported:t.imported,message:t.message,predecessor:r?.get(SessionPredecessorKey),runtime:n.runtimeIdentity,trace:a}),e.projectHistory([...e.session.history,...t.input]))}catch(e){i={error:e}}let a=r===void 0?[]:drainDynamicInstructionUserMessages(r),o=r===void 0?void 0:drainMemoryCommit(r);if(e.session={...e.session,history:validateHarnessModelMessages([...e.session.history,...o?.recalledMessages??[],...a]),state:o?.state??e.session.state},i!==void 0)return failBoundaryEvent(e,i.error);e.instrumentation?.setTurnId(e.position().turnId)}async function failBoundaryEvent(e,t){if(throwIfTurnAborted(e.config.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(e,t);if(isDynamicConnectionResolutionError(t))return failConnectionResolution(e,t);throw t}async function failConnectionResolution(e,t){if(e.emit===void 0)throw t;e.instrumentation?.recordError(t);let n=createErrorId(),r=toErrorMessage(t);return log.error(`dynamic connection resolver failed — parking session`,{error:t,errorId:n,sessionId:e.session.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`EVENT_HANDLER_FAILED`,details:{errorId:n},message:r})),e.session={...e.session,outputSchema:void 0},{next:null,session:e.session,settledTurn:{isError:!0,output:r}}}async function failModelSelection(e,t){if(throwIfTurnAborted(e.config.abortSignal),e.instrumentation?.recordError(t),e.emit===void 0)throw t;let n=createErrorId(),r=toErrorMessage(t),{session:i}=e;return log.error(`model selection failed terminally`,{error:t,errorId:n,sessionId:i.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`MODEL_SELECTION_FAILED`,details:{errorId:n},message:r,terminal:{sessionId:i.sessionId}})),{next:e.hasDelegatedCaller?{done:!0,isError:!0,output:r}:{done:!0,output:``},session:e.session}}export{createStep,failBoundaryEvent,failConnectionResolution,failModelSelection,openTurn};
1
+ import{createErrorId,createLogger}from"#internal/logging.js";import{ParentSessionKey,ScheduleIdKey,SessionCallbackKey,SessionPredecessorKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{recordAppliedSession}from"#harness/session-machine/current.js";import{validateHarnessModelMessages}from"#harness/messages.js";import{applyTransition,dropClosedRecords,sessionView}from"#harness/session-machine/commit.js";import{fail,receive}from"#harness/session-machine/transitions.js";import{evaluateValues,isReactionFailedError}from"#reactions/runner.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{withClientContext}from"#harness/step/prompt.js";import{isDynamicModelSelectionError}from"#reactions/kinds/model.js";import{takeUserInstructionMessages}from"#reactions/kinds/instructions.js";import{takeTurnFailure}from"#reactions/intents.js";const log=createLogger(`harness.step`);function createStep(e){let{ctx:t,live:n}=e,r=t?.get(ParentSessionKey)!==void 0||t?.get(SessionCallbackKey)!==void 0,i={session:e.session,frameworkToolNames:new Set,config:e.config,ctx:t,runStep:e.runStep,publish:e.publish,emit:e.emit,instrumentation:e.instrumentation,hasDelegatedCaller:r,finalReplyOnly:r||t?.get(ScheduleIdKey)!==void 0,view:()=>sessionView(n.read(),i.session.state),position:()=>turnPosition(n.read()),async apply(r,a){let o=`events`in r?r:{events:r,turn:i.view().turn};i.session=dropClosedRecords(await applyTransition(i.session,o,e.publish,a),n.read()),t!==void 0&&recordAppliedSession(t,i.session)}};return i}async function openTurn(e,t){let{config:n,ctx:r}=e,i;try{let i=e.position(),a=await e.instrumentation?.preparePreamble({sequence:i.sequence,sessionStarted:i.sessionStarted,traceContext:e.instrumentation?.traceContext,turnId:activeTurnId(i)});await e.apply(receive(e.view(),{deliveries:t.deliveries,predecessor:r?.get(SessionPredecessorKey),runtime:n.runtimeIdentity,trace:a}),[...e.session.history,...t.input])}catch(e){i={error:e}}if(i!==void 0)return failBoundaryEvent(e,i.error);e.instrumentation?.setTurnId(e.position().turnId)}async function prepareModelCall(e,t){let n=e.ctx;if(n===void 0)return;throwIfTurnAborted(e.config.abortSignal);try{await evaluateValues(n,{abortSignal:e.config.abortSignal,conversation:validateHarnessModelMessages(withClientContext(t))})}catch(t){if(!isReactionFailedError(t))throw t;return failTurn(e,t,`REACTION_FAILED`)}let r=takeUserInstructionMessages(n);r.length>0&&(e.session={...e.session,history:validateHarnessModelMessages([...e.session.history,...r])})}async function failTurnForReaction(e){let t=takeTurnFailure(e.ctx);if(t!==void 0)return failTurn(e,Error(t),`HOOK_FAILED`)}async function failTurn(e,t,n){throwIfTurnAborted(e.config.abortSignal),e.instrumentation?.recordError(t);let r=toErrorMessage(t),i=createErrorId();return log.error(`turn failed`,{code:n,error:t,errorId:i,sessionId:e.session.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:n,details:{errorId:i},message:r})),{next:null,session:e.session,settledTurn:{isError:!0,output:r}}}async function failBoundaryEvent(e,t){if(throwIfTurnAborted(e.config.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(e,t);throw t}async function failModelSelection(e,t){if(throwIfTurnAborted(e.config.abortSignal),e.instrumentation?.recordError(t),e.emit===void 0)throw t;let n=createErrorId(),r=toErrorMessage(t),{session:i}=e;return log.error(`model selection failed terminally`,{error:t,errorId:n,sessionId:i.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`MODEL_SELECTION_FAILED`,details:{errorId:n},message:r,terminal:!0})),{next:e.hasDelegatedCaller?{done:!0,isError:!0,output:r}:{done:!0,output:``},session:e.session}}export{createStep,failBoundaryEvent,failModelSelection,failTurnForReaction,openTurn,prepareModelCall};
@@ -1,15 +1,14 @@
1
1
  import { type HarnessModelMessage, type UserModelMessage } from "#harness/messages.js";
2
2
  import { getTurnClientContextState } from "#harness/turn-client-context.js";
3
- import type { StepInput } from "#harness/types.js";
4
- import type { SessionHistoryMessage } from "#shared/session-history.js";
3
+ import type { HarnessStepInput } from "#harness/types.js";
5
4
  import type { Step } from "./context.js";
6
5
  /**
7
6
  * Settles the calls the runtime ran for parked steps. Returns `undefined` while some are still
8
7
  * running: input queued behind them waits until they have. Otherwise returns the step's input
9
8
  * without the results it settled, and whether the step waited on any.
10
9
  */
11
- export declare function settleRuntimeWork(step: Step, input: StepInput | undefined): Promise<{
12
- readonly input: StepInput | undefined;
10
+ export declare function settleRuntimeWork(step: Step, input: HarnessStepInput | undefined): Promise<{
11
+ readonly input: HarnessStepInput | undefined;
13
12
  readonly waited: boolean;
14
13
  } | undefined>;
15
14
  /** The turn's input as the model reads it. */
@@ -19,18 +18,18 @@ export interface TurnInput {
19
18
  readonly clientContext: readonly string[] | undefined;
20
19
  readonly storedClientContext: ReturnType<typeof getTurnClientContextState>;
21
20
  readonly ephemeral: readonly UserModelMessage[];
22
- /** Prior conversation the delivery added, as published in `history.imported`. */
23
- readonly imported: readonly SessionHistoryMessage[];
24
- /** The added history, the context entries, and the message, in history order. */
21
+ /** Imported history, the context entries, and the message, in history order. */
25
22
  readonly messages: readonly HarnessModelMessage[];
26
23
  /** The input carries a user's message, which follows tool results across a boundary. */
27
24
  readonly hasUserMessage: boolean;
25
+ /** The message with its attachments staged, so input queued again isn't staged twice. */
26
+ readonly message: HarnessStepInput["message"];
28
27
  }
29
28
  /**
30
29
  * Prepares the turn's input: client and context entries, and the message with its attachments
31
30
  * staged to the sandbox. A message a plain-text answer consumed never reaches the model.
32
31
  */
33
- export declare function prepareTurnInput(step: Step, input: StepInput | undefined, options: {
32
+ export declare function prepareTurnInput(step: Step, input: HarnessStepInput | undefined, options: {
34
33
  readonly consumedMessage: boolean;
35
34
  }): Promise<TurnInput>;
36
35
  /** The turn's input as it follows tool results: a user message needs a boundary before it. */
@@ -1 +1 @@
1
- import{readClientContext}from"#internal/client-context.js";import{TOOL_RESULT_BOUNDARY,createFrameworkUserMessage,createImportedHistoryMessages,createUserMessage,frameworkMessageKindForStepInput,normalizeUserContent}from"#harness/messages.js";import{activeTurnId,runtimeWait}from"#harness/session-machine/view.js";import{stageAttachmentsToSandbox,stageToolResultMedia}from"#harness/attachment-staging.js";import{forgetFinishedRuns,runtimeResultCalls}from"#harness/coordination.js";import{finishRun,settle}from"#harness/session-machine/transitions.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{getTurnClientContextState}from"#harness/turn-client-context.js";async function settleRuntimeWork(e,t){let n=runtimeWait(e.session.state);if(n===void 0)return{input:t,waited:!1};let r=resolveRuntimeActionResultsForCallIds({pendingCallIds:n.callIds,results:t?.runtimeActionResults??[]});if(r===void 0)return;let i=forgetFinishedRuns(e.session,r,n.event.turnId);e.session=i.session,await e.apply(finishRun(e.view(),{requestIds:i.requestIds}));let a=await runtimeResultCalls(r,e.config.tools),o=(await stageToolResultMedia([{role:`tool`,content:a.map(({part:e})=>e)}])).flatMap(e=>e.role===`tool`?e.content.filter(e=>e.type===`tool-result`):[]);if(await e.apply(settle(e.view(),{results:a.map((e,t)=>({...e,part:o[t]}))})),t===void 0)return{input:t,waited:!0};let{runtimeActionResults:s,...c}=t;return{input:c,waited:!0}}async function prepareTurnInput(e,t,n){let r=activeTurnId(e.position()),i=getTurnClientContextState(e.session.state,r),a=readClientContext(t),o=(a??i?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],s=t?.history??[],c=[...createImportedHistoryMessages(s),...(t?.context??[]).map(e=>createFrameworkUserMessage(`context.instruction`,e))],l=frameworkMessageKindForStepInput(t),u=normalizeUserContent(t?.message),d=u!==void 0&&!n.consumedMessage?await stageAttachmentsToSandbox(u):void 0;return d!==void 0&&c.push(l===void 0?createUserMessage(`user`,d):createFrameworkUserMessage(l,d)),{clientContext:a,ephemeral:o,hasUserMessage:d!==void 0&&l===void 0,imported:s,messages:c,storedClientContext:i,turnId:r}}function followingToolResults(e){return[...e.hasUserMessage?[{content:TOOL_RESULT_BOUNDARY,role:`assistant`}]:[],...e.messages]}export{followingToolResults,prepareTurnInput,settleRuntimeWork};
1
+ import{readClientContext}from"#internal/client-context.js";import{activeTurnId,runtimeWait}from"#harness/session-machine/view.js";import{stageAttachmentsToSandbox,stageToolResultMedia}from"#harness/attachment-staging.js";import{TOOL_RESULT_BOUNDARY,anchorToTurn,createFrameworkUserMessage,createImportedHistoryMessages,createUserMessage,frameworkMessageKindForStepInput,normalizeMessage,userContentOf}from"#harness/messages.js";import{forgetFinishedRuns,runtimeResultCalls}from"#harness/coordination.js";import{finishRun,settle}from"#harness/session-machine/transitions.js";import{delegatedUsageFact}from"#harness/facts.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{getTurnClientContextState}from"#harness/turn-client-context.js";async function settleRuntimeWork(e,t){let n=runtimeWait(e.session.state);if(n===void 0){if(await recordLateSpend(e,t?.delegatedUsage,new Set),t?.delegatedUsage===void 0)return{input:t,waited:!1};let{delegatedUsage:n,...r}=t;return{input:r,waited:!1}}let r=resolveRuntimeActionResultsForCallIds({pendingCallIds:n.callIds,results:t?.runtimeActionResults??[]});if(r===void 0)return;let i=forgetFinishedRuns(e.session,r,n.event.turnId);e.session=i.session,await e.apply(finishRun(e.view(),{requestIds:i.requestIds}));let a=await runtimeResultCalls(r,e.config.tools),o=(await stageToolResultMedia([{role:`tool`,content:a.map(({part:e})=>e)}])).flatMap(e=>e.role===`tool`?e.content.filter(e=>e.type===`tool-result`):[]),s=t?.delegatedUsage??{};if(await recordLateSpend(e,s,new Set(a.map(({part:e})=>e.toolCallId))),await e.apply(settle(e.view(),{results:a.map((e,t)=>({...e,part:o[t],usage:s[e.part.toolCallId]}))})),t===void 0)return{input:t,waited:!0};let{delegatedUsage:c,runtimeActionResults:l,...u}=t;return{input:u,waited:!0}}async function recordLateSpend(e,t,n){let r=Object.entries(t??{}).filter(([e])=>!n.has(e));r.length>0&&await e.publish(r.map(([,e])=>delegatedUsageFact(void 0,e)))}async function prepareTurnInput(e,t,n){let r=activeTurnId(e.position()),i=getTurnClientContextState(e.session.state,r),a=readClientContext(t),o=(a??i?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],s=[...createImportedHistoryMessages(t?.history??[]),...(t?.context??[]).map(e=>anchorToTurn(createFrameworkUserMessage(`context.instruction`,e),r))],c=frameworkMessageKindForStepInput(t),l=normalizeMessage(t?.message),u=l!==void 0&&!n.consumedMessage?await stageAttachmentsToSandbox(userContentOf(l)):void 0;return u!==void 0&&s.push(anchorToTurn(c===void 0?createUserMessage(`user`,u):createFrameworkUserMessage(c,u),r)),{clientContext:a,ephemeral:o,hasUserMessage:u!==void 0&&c===void 0,message:u,messages:s,storedClientContext:i,turnId:r}}function followingToolResults(e){return[...e.hasUserMessage?[{content:TOOL_RESULT_BOUNDARY,role:`assistant`}]:[],...e.messages]}export{followingToolResults,prepareTurnInput,settleRuntimeWork};
@@ -0,0 +1,19 @@
1
+ import { type SessionView } from "#harness/session-machine/view.js";
2
+ import type { StepResult } from "#harness/types.js";
3
+ import type { Step } from "./context.js";
4
+ /**
5
+ * Whether the session resumes the turn on a person itself: a request it asked, or its own sign-in.
6
+ * A child's relayed sign-in resumes the turn on its call instead, though readers see a person.
7
+ */
8
+ export declare function resumesOnPerson(view: SessionView): boolean;
9
+ /** Whether an open request takes its answer before any message: the message waits behind it. */
10
+ export declare function holdsMessages(view: SessionView): boolean;
11
+ /** Whether the turn holds input it hasn't taken. */
12
+ export declare function hasQueuedTurnInput(view: SessionView): boolean;
13
+ /** Whether anything open stops the turn from calling the model. */
14
+ export declare function blocked(view: SessionView, state: Step["session"]["state"]): boolean;
15
+ /**
16
+ * Nothing the step holds can run. Input the turn holds runs next step, past whatever it steers;
17
+ * otherwise the turn stops, waiting on the person it asked or on the runtime's calls.
18
+ */
19
+ export declare function park(step: Step): StepResult;
@@ -0,0 +1 @@
1
+ import{readClientContext}from"#internal/client-context.js";import{ownOpenRequestIds,runtimeWait}from"#harness/session-machine/view.js";const ANSWER_FIRST_KINDS=new Set([`budget`]);function resumesOnPerson(e){return ownOpenRequestIds(e).size>0||e.signIns.length>0}function holdsMessages(e){let t=e.projection.view;return[...ownOpenRequestIds(e)].some(e=>ANSWER_FIRST_KINDS.has(t.interactions[e]?.request.kind??``))}function hasQueuedTurnInput(e){let t=e.turn.queued;return t!==void 0&&(t.message!==void 0||(t.context?.length??0)>0||t.outputSchema!==void 0||readClientContext(t)!==void 0||(t.runtimeActionResults?.length??0)>0)}function blocked(e,t){return resumesOnPerson(e)||runtimeWait(t)!==void 0}function park(e){let t=e.view();return hasQueuedTurnInput(t)&&!holdsMessages(t)?{next:e.runStep,session:e.session}:resumesOnPerson(t)?{held:{kind:`request`},next:null,session:e.session}:{next:null,session:e.session}}export{blocked,hasQueuedTurnInput,holdsMessages,park,resumesOnPerson};
@@ -15,9 +15,8 @@ export interface Prompt {
15
15
  }
16
16
  export declare function buildPrompt(step: Step, turn: TurnInput): Promise<Prompt>;
17
17
  /**
18
- * The prompt a step starts on while approved calls wait to run: history and the turn's input,
19
- * without the task results and the client context's position a prompt settles, which wait for
20
- * the prompt the model reads once the calls have run.
18
+ * The prompt the session's dynamic values are evaluated with: history and the turn's input,
19
+ * without the task results and the client context's position a prompt settles.
21
20
  */
22
21
  export declare function previewPrompt(step: Step, turn: TurnInput): Prompt;
23
22
  /**
@@ -27,8 +26,8 @@ export declare function previewPrompt(step: Step, turn: TurnInput): Prompt;
27
26
  export declare function placeTurnInput(step: Step, messages: readonly HarnessModelMessage[], turn: TurnInput): HarnessModelMessage[];
28
27
  /** `messages`, the prompt's by default, with the client's context at its position. */
29
28
  export declare function withClientContext(prompt: Prompt, messages?: readonly HarnessModelMessage[]): HarnessModelMessage[];
30
- /** The prompt as the model reads it: with the client's context, projected for its history view. */
31
- export declare function projectPrompt(step: Step, prompt: Prompt): HarnessModelMessage[];
29
+ /** The prompt as the model reads it: with the client's context. */
30
+ export declare function projectPrompt(prompt: Prompt): HarnessModelMessage[];
32
31
  /**
33
32
  * Compaction rewrote the durable messages: the client's context keeps its distance from the end,
34
33
  * so it stays after the turn's input.
@@ -1 +1 @@
1
- import{followingToolResults}from"./intake.js";import{createFrameworkUserMessage,followsToolResults,normalizeModelMessages,validateHarnessModelMessages}from"#harness/messages.js";import{appendTaskContext}from"#execution/tasks/model-step.js";import{hasUnansweredToolCall}from"#harness/model-call/response.js";import{getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{repairToolHistory}from"#harness/tool-history-repair.js";async function buildPrompt(e,t){let n=repairToolHistory({messages:e.session.history,insertionIndex:t.storedClientContext?.insertionIndex}),r=validateHarnessModelMessages(n.messages);if(e.session={...e.session,history:[...r]},t.storedClientContext!==void 0&&n.insertionIndex!==void 0){let r={...t.storedClientContext,insertionIndex:n.insertionIndex};t={...t,storedClientContext:r},e.session=setTurnClientContextState(e.session,r)}if(!hasUnansweredToolCall(r)){let t=await appendTaskContext({messages:r,projectHistory:e.projectHistory,session:e.session,tools:e.config.tools});e.session=t.session,r.push(...t.messages)}let i=placeTurnInput(e,r,t);return{clientContext:getTurnClientContextState(e.session.state,t.turnId),messages:i}}function previewPrompt(e,t){let n=validateHarnessModelMessages([...e.session.history]);return{clientContext:turnClientContext(n,t),messages:withTurnInput(n,t)}}function placeTurnInput(e,t,n){let r=turnClientContext(t,n);return r!==void 0&&(e.session=setTurnClientContextState(e.session,r)),withTurnInput(t,n)}function turnClientContext(e,t){return t.clientContext===void 0?t.storedClientContext:{insertionIndex:t.storedClientContext?.insertionIndex??e.length,messages:t.clientContext,turnId:t.turnId}}function withTurnInput(e,t){return[...e,...followsToolResults(e)?followingToolResults(t):t.messages]}function withClientContext(e,t=e.messages){let{clientContext:n}=e;if(n===void 0||n.messages.length===0)return[...t];let r=Math.min(Math.max(0,n.insertionIndex),t.length);return[...t.slice(0,r),...n.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...t.slice(r)]}function projectPrompt(e,t){return validateHarnessModelMessages(normalizeModelMessages(e.projectHistory(withClientContext(t))))}function compactPrompt(e,t,n){let{clientContext:r}=t;if(r!==void 0){let i=Math.max(0,t.messages.length-r.insertionIndex);t.clientContext={...r,insertionIndex:Math.max(0,n.length-i)},e.session=setTurnClientContextState(e.session,t.clientContext)}t.messages=n}export{buildPrompt,compactPrompt,placeTurnInput,previewPrompt,projectPrompt,withClientContext};
1
+ import{followingToolResults}from"./intake.js";import{anchorToTurn,createFrameworkUserMessage,followsToolResults,normalizeModelMessages,validateHarnessModelMessages}from"#harness/messages.js";import{appendTaskContext}from"#execution/tasks/model-step.js";import{hasUnansweredToolCall}from"#harness/model-call/response.js";import{getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{repairToolHistory}from"#harness/tool-history-repair.js";async function buildPrompt(e,t){let n=repairToolHistory({messages:e.session.history,insertionIndex:t.storedClientContext?.insertionIndex}),r=validateHarnessModelMessages(n.messages);if(e.session={...e.session,history:[...r]},t.storedClientContext!==void 0&&n.insertionIndex!==void 0){let r={...t.storedClientContext,insertionIndex:n.insertionIndex};t={...t,storedClientContext:r},e.session=setTurnClientContextState(e.session,r)}if(!hasUnansweredToolCall(r)){let n=await appendTaskContext({messages:r,session:e.session,tools:e.config.tools});e.session=n.session,r.push(...n.messages.map(e=>e.role===`user`?anchorToTurn(e,t.turnId):e))}let i=placeTurnInput(e,r,t);return{clientContext:getTurnClientContextState(e.session.state,t.turnId),messages:i}}function previewPrompt(e,t){let n=validateHarnessModelMessages([...e.session.history]);return{clientContext:turnClientContext(n,t),messages:withTurnInput(n,t)}}function placeTurnInput(e,t,n){let r=turnClientContext(t,n);return r!==void 0&&(e.session=setTurnClientContextState(e.session,r)),withTurnInput(t,n)}function turnClientContext(e,t){return t.clientContext===void 0?t.storedClientContext:{insertionIndex:t.storedClientContext?.insertionIndex??e.length,messages:t.clientContext,turnId:t.turnId}}function withTurnInput(e,t){return[...e,...followsToolResults(e)?followingToolResults(t):t.messages]}function withClientContext(e,t=e.messages){let{clientContext:n}=e;if(n===void 0||n.messages.length===0)return[...t];let r=Math.min(Math.max(0,n.insertionIndex),t.length);return[...t.slice(0,r),...n.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...t.slice(r)]}function projectPrompt(e){return validateHarnessModelMessages(normalizeModelMessages(withClientContext(e)))}function compactPrompt(e,t,n){let{clientContext:r}=t;if(r!==void 0){let i=Math.max(0,t.messages.length-r.insertionIndex);t.clientContext={...r,insertionIndex:Math.max(0,n.length-i)},e.session=setTurnClientContextState(e.session,t.clientContext)}t.messages=n}export{buildPrompt,compactPrompt,placeTurnInput,previewPrompt,projectPrompt,withClientContext};
@@ -1,13 +1,23 @@
1
- import type { GenerateTextOnStepStartCallback, ModelMessage, PrepareStepFunction, ProviderMetadata, StepResult, ToolSet } from "ai";
1
+ import type { GenerateTextOnStepStartCallback, LanguageModelUsage, ModelMessage, PrepareStepFunction, ProviderMetadata, StepResult, ToolSet, ToolResultPart } from "ai";
2
+ import type { Usage } from "#protocol/session-events/envelope.js";
3
+ import type { ToolSignIn } from "#harness/call-executor.js";
2
4
  import type { TurnPosition } from "#harness/session-machine/view.js";
3
5
  import type { ModelProfile } from "#harness/model-profile.js";
4
- import { type HarnessEmitFn, type HarnessSession, type HarnessToolLookup } from "#harness/types.js";
6
+ import { type HarnessEmitFn, type HarnessSession } from "#harness/types.js";
7
+ import type { ApprovalAsk } from "#harness/session-machine/view.js";
5
8
  /**
6
9
  * The subset of `StepResult` that the harness reads after a step completes, captured by the
7
10
  * `onStepEnd` callback.
8
11
  */
9
12
  export type HarnessStepResult = Pick<StepResult<ToolSet>, "content" | "finishReason" | "providerMetadata" | "response" | "text" | "toolCalls" | "toolResults" | "usage"> & {
13
+ /** The AI SDK's ID for the model call, which the telemetry of the calls it made shares. */
14
+ readonly callId?: string;
10
15
  readonly invalidInputToolCallIds?: ReadonlySet<string>;
16
+ /** The calls eve ran that wait on a person's approval. */
17
+ readonly approvalRequests?: readonly ApprovalAsk[];
18
+ readonly policyApprovals?: Readonly<Record<string, import("#protocol/session-events/families/call.js").ClearedBy>>;
19
+ /** The calls eve ran that stopped for a sign-in. */
20
+ readonly signIns?: readonly ToolSignIn[];
11
21
  };
12
22
  /**
13
23
  * Input for {@link buildStepHooks}.
@@ -35,8 +45,8 @@ interface StepHooks {
35
45
  /**
36
46
  * `ToolLoopAgent` `onStepEnd` callback.
37
47
  *
38
- * Emits `actions.requested`, `action.result`, and `step.completed` events
39
- * from the captured step result.
48
+ * Publishes call and content facts from the captured response, then settles its model run
49
+ * with the usage it reported.
40
50
  */
41
51
  readonly onStepEnd: (step: StepResult<ToolSet>) => Promise<void>;
42
52
  /**
@@ -74,26 +84,16 @@ interface StepHooks {
74
84
  */
75
85
  export declare function buildStepHooks(input: StepHooksInput): StepHooks;
76
86
  /**
77
- * Emits `actions.requested`, `action.result`, and `step.completed` events
78
- * from a captured step result.
79
- *
80
- * Tool calls and results that match `excludedActionToolNames`, belong to
81
- * tool-approval requests, or are marked `invalid` by the AI SDK (e.g. the
82
- * model emitted unparsable JSON) are filtered out of the emitted events.
83
- * The AI SDK feeds the invalid-call error back to the model on the next
84
- * step via `step.response.messages` so it can retry with well-formed
85
- * arguments — the runtime event stream only sees successfully parsed
86
- * tool calls.
87
- *
88
- * `handledInlineToolResultCallIds` contains results emitted by
89
- * `emitStreamContent` or sent to authorization. Skip them here.
87
+ * Ends a step's run: the calls that didn't run settle with why, then one commit holds the run's
88
+ * structured result, if it has one, its settlement, and its usage. The stream published the calls,
89
+ * and eve published the results of the calls it ran as they settled.
90
90
  */
91
- export declare function emitStepActions(emitFn: HarnessEmitFn, state: TurnPosition, step: HarnessStepResult, options: {
92
- readonly emittedActionCallIds?: ReadonlySet<string>;
93
- readonly excludedActionCallIds?: ReadonlySet<string>;
94
- readonly excludedActionToolNames: ReadonlySet<string>;
95
- readonly handledInlineToolResultCallIds?: ReadonlySet<string>;
96
- readonly tools: HarnessToolLookup;
97
- }): Promise<void>;
91
+ export declare function emitStepActions(emitFn: HarnessEmitFn, state: TurnPosition, step: HarnessStepResult, notRun: readonly ToolResultPart[]): Promise<void>;
92
+ /** A run's usage as `usage.recorded` carries it, or `undefined` when the SDK reported none. */
93
+ export declare function runUsageOf(input: {
94
+ readonly costUsd: number | undefined;
95
+ readonly usage: LanguageModelUsage | undefined;
96
+ }): Usage | undefined;
97
+ export declare function extractGatewayCostUsd(providerMetadata: ProviderMetadata | undefined): number | undefined;
98
98
  export declare function readGatewayGenerationId(providerMetadata: ProviderMetadata | undefined): string | undefined;
99
99
  export {};
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{AuthKey}from"#context/keys.js";import{createActionResultEvent,createActionsRequestedEvent,createStepCompletedEvent}from"#protocol/message.js";import{isAuthorizationSignal,isPendingAuthorizationToolOutput}from"#harness/authorization.js";import{createRuntimeToolResultFromMessagePart,createRuntimeToolResultFromStepResult,createRuntimeToolResultFromToolError,toActionResult}from"#harness/action-result-helpers.js";import{requireSessionModelReference}from"#harness/types.js";import{resolveCallProviderOptions}from"#harness/provider-safety.js";import{isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{collectActionPresentation,createPresentedRuntimeActionRequestFromToolCall}from"#harness/action-presentation.js";import{normalizeAssistantStepFinishReason}from"#harness/finish-reason.js";import{extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{readToolInterrupt}from"#harness/tool-interrupts.js";import{applyConversationCacheControl,mergeGatewayAutoCaching}from"#harness/prompt-cache.js";function buildStepHooks(e){let t=e.session,n;return{onStepEnd:async e=>{n(e)},onStepStart:async({messages:t})=>{await e.startStep?.(t)},prepareStep:async({messages:n})=>{let{profile:r}=e,i={messages:r.anthropicCache?applyConversationCacheControl(n,r.anthropicCache):n},a=requireSessionModelReference(t),o=resolveCallProviderOptions({auth:e.auth??contextStorage.getStore()?.get(AuthKey)??null,profile:r,providerOptions:a.providerOptions,session:t});return r.gateway?i.providerOptions=mergeGatewayAutoCaching(o):o!==void 0&&(i.providerOptions=o),i},stepResult:new Promise(e=>{n=e})}}async function emitStepActions(e,t,n,r){let i=new Set(n.toolCalls.filter(isProviderExecutedToolCall).map(e=>e.toolCallId)),a=new Set([...r.excludedActionCallIds??[],...i,...extractToolApprovalInputRequests({content:n.content??[],excludedCallIds:r.excludedActionCallIds,tools:r.tools}).map(e=>e.action.callId),...n.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId)]),isExcluded=(e,t)=>a.has(e)||r.excludedActionToolNames.has(t),o=n.toolCalls.filter(e=>!isExcluded(e.toolCallId,e.toolName)&&!r.emittedActionCallIds?.has(e.toolCallId)).map(e=>createPresentedRuntimeActionRequestFromToolCall({toolCall:e,tools:r.tools}));o.length>0&&await e(createActionsRequestedEvent({actions:o.map(({action:e})=>e),presentation:collectActionPresentation(o),sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId}));let s=r.handledInlineToolResultCallIds,c=new Map(n.toolResults.map(e=>[e.toolCallId,e.output])),l=new Map(n.toolCalls.map(e=>[e.toolCallId,e.input]));for(let r of reconcileToolResults(n)){if(isExcluded(r.callId,r.toolName)||s?.has(r.callId))continue;let n=c.get(r.callId);shouldSkipAuthorizationActionResult(r.callId,n)||await e(createActionResultEvent({result:toActionResult(r,l.get(r.callId)),sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId}))}await e(createStepCompletedEvent({finishReason:normalizeAssistantStepFinishReason(n.finishReason),providerMetadata:extractStepProviderMetadata(n.providerMetadata),sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId,usage:extractStepUsage({costUsd:extractGatewayCostUsd(n.providerMetadata),usage:n.usage})}))}function isProviderExecutedToolCall(e){return e.providerExecuted===!0}function reconcileToolResults(e){let t=new Map;for(let n of e.toolResults)n.providerExecuted!==!0&&t.set(n.toolCallId,createRuntimeToolResultFromStepResult(n));for(let n of e.content??[])n.type===`tool-error`&&n.providerExecuted!==!0&&(t.has(n.toolCallId)||t.set(n.toolCallId,createRuntimeToolResultFromToolError(n)));let n=new Map(e.toolCalls.map(e=>[e.toolCallId,e.toolName]));for(let r of extractToolResultParts(e.response.messages))r.providerExecuted!==!0&&(t.has(r.toolCallId)||t.set(r.toolCallId,createRuntimeToolResultFromMessagePart(r,n.get(r.toolCallId)??r.toolName)));return[...t.values()]}function shouldSkipAuthorizationActionResult(e,t){if(t!==void 0&&isPendingAuthorizationToolOutput(t))return!0;let n=contextStorage.getStore();if(n===void 0)return!1;let r=readToolInterrupt(n,e);return r!==void 0&&isAuthorizationSignal(r)}function extractToolResultParts(e){let t=[];for(let n of e)if(n.role===`tool`&&Array.isArray(n.content))for(let e of n.content)e.type===`tool-result`&&t.push(e);return t}function extractStepUsage(e){let t={};e.costUsd!==void 0&&(t.costUsd=e.costUsd);let n=e.usage;return n===void 0?Object.keys(t).length>0?t:void 0:(n.inputTokens!==void 0&&(t.inputTokens=n.inputTokens),n.outputTokens!==void 0&&(t.outputTokens=n.outputTokens),n.inputTokenDetails?.cacheReadTokens!==void 0&&(t.cacheReadTokens=n.inputTokenDetails.cacheReadTokens),n.inputTokenDetails?.cacheWriteTokens!==void 0&&(t.cacheWriteTokens=n.inputTokenDetails.cacheWriteTokens),Object.keys(t).length>0?t:void 0)}function extractStepProviderMetadata(e){let t=readGatewayGenerationId(e);return t===void 0?void 0:{gateway:{generationId:t}}}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayGenerationId(e){let t=readGatewayMetadata(e)?.generationId;return typeof t==`string`&&t.length>0?t:void 0}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}export{buildStepHooks,emitStepActions,readGatewayGenerationId};
1
+ import{contextStorage}from"#context/container.js";import{AuthKey}from"#context/keys.js";import{REPLY_TOOL_NAME}from"#protocol/reply-tool.js";import{callSettledFrom,toJsonValue}from"#harness/call-facts.js";import{usageOf}from"#harness/facts.js";import{createRuntimeToolResultFromMessagePart}from"#harness/action-result-helpers.js";import{isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{requireSessionModelReference}from"#harness/types.js";import{resolveCallProviderOptions}from"#harness/provider-safety.js";import{normalizeAssistantStepFinishReason}from"#harness/finish-reason.js";import{applyConversationCacheControl,mergeGatewayAutoCaching}from"#harness/prompt-cache.js";function buildStepHooks(e){let t=e.session,n;return{onStepEnd:async e=>{n(e)},onStepStart:async({messages:t})=>{await e.startStep?.(t)},prepareStep:async({messages:n})=>{let{profile:r}=e,i={messages:r.anthropicCache?applyConversationCacheControl(n,r.anthropicCache):n},a=requireSessionModelReference(t),o=resolveCallProviderOptions({auth:e.auth??contextStorage.getStore()?.get(AuthKey)??null,profile:r,providerOptions:a.providerOptions,session:t});return r.gateway?i.providerOptions=mergeGatewayAutoCaching(o):o!==void 0&&(i.providerOptions=o),i},stepResult:new Promise(e=>{n=e})}}async function emitStepActions(e,t,n,r){let{runId:i}=t;for(let t of r)await e(callSettledFrom(createRuntimeToolResultFromMessagePart(t,t.toolName)));if(i===void 0)return;let a=[],o=finalOutputOf(n);o!==void 0&&a.push({data:{kind:`result`,partId:`${i}.result`,phase:`reply`,runId:i,value:o},type:`content.completed`});let s={finishReason:normalizeAssistantStepFinishReason(n.finishReason),outcome:`completed`,runId:i},c=readGatewayGenerationId(n.providerMetadata);c!==void 0&&(s.generationId=c),a.push({data:s,type:`model.settled`});let l=runUsageOf({costUsd:extractGatewayCostUsd(n.providerMetadata),usage:n.usage});l!==void 0&&a.push({data:{kind:`model`,owner:{runId:i},usage:l},type:`usage.recorded`}),await e(a)}function finalOutputOf(e){let t=(e.toolCalls??[]).find(e=>e.toolName===REPLY_TOOL_NAME&&!isInvalidToolCall(e));return t===void 0?void 0:toJsonValue(t.input)}function runUsageOf(e){let{usage:t}=e;if(t!==void 0||e.costUsd!==void 0)return usageOf({cacheReadTokens:t?.inputTokenDetails?.cacheReadTokens,cacheWriteTokens:t?.inputTokenDetails?.cacheWriteTokens,costUsd:e.costUsd,inputTokens:t?.inputTokens,outputTokens:t?.outputTokens})}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayGenerationId(e){let t=readGatewayMetadata(e)?.generationId;return typeof t==`string`&&t.length>0?t:void 0}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}export{buildStepHooks,emitStepActions,extractGatewayCostUsd,readGatewayGenerationId,runUsageOf};
@@ -1,23 +1,17 @@
1
- import { type RuntimeActionRequestProjection } from "#harness/action-presentation.js";
1
+ import type { RuntimeActionRequestProjection } from "#harness/action-presentation.js";
2
2
  import type { HarnessEmitFn } from "#harness/types.js";
3
3
  interface ActionEventCoordinates {
4
- readonly sequence: number;
5
- readonly stepIndex: number;
4
+ readonly runId?: string;
6
5
  readonly turnId: string;
7
6
  }
8
- interface EmittedProviderAction {
9
- readonly request: RuntimeActionRequestProjection;
10
- readonly toolName: string;
11
- }
12
7
  interface ProviderStreamActionBatch {
13
8
  cancel(): Promise<void>;
14
9
  flush(): Promise<void>;
15
- observe(action: RuntimeActionRequestProjection, toolName: string): void;
10
+ observe(action: RuntimeActionRequestProjection): void;
16
11
  }
17
12
  /** Batches provider-managed calls that arrive in one streamed model response. */
18
13
  export declare function createProviderStreamActionBatch(input: {
19
14
  readonly emitFn: HarnessEmitFn;
20
- readonly onActionsEmitted?: (actions: readonly EmittedProviderAction[]) => void;
21
15
  readonly state: ActionEventCoordinates;
22
16
  }): ProviderStreamActionBatch;
23
17
  export {};