eve 0.64.1 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -2
  3. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  4. package/dist/src/channel/resolve-text.d.ts +11 -7
  5. package/dist/src/channel/resolve-text.js +1 -1
  6. package/dist/src/channel/types.d.ts +4 -5
  7. package/dist/src/chunks/{use-eve-agent-BdKlQF32.js → use-eve-agent-BUeSjwIk.js} +244 -11
  8. package/dist/src/chunks/{use-eve-agent-IIuxkn6y.js → use-eve-agent-ydPlURM4.js} +244 -11
  9. package/dist/src/cli/dev/command-options.d.ts +1 -0
  10. package/dist/src/cli/dev/command.js +2 -2
  11. package/dist/src/cli/dev/local-server-process.js +1 -1
  12. package/dist/src/cli/dev/tui/argument-typeahead.d.ts +36 -0
  13. package/dist/src/cli/dev/tui/argument-typeahead.js +2 -0
  14. package/dist/src/cli/dev/tui/blocks.d.ts +1 -1
  15. package/dist/src/cli/dev/tui/blocks.js +2 -2
  16. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  17. package/dist/src/cli/dev/tui/question-panel.d.ts +3 -2
  18. package/dist/src/cli/dev/tui/rail.d.ts +1 -1
  19. package/dist/src/cli/dev/tui/runner.d.ts +3 -0
  20. package/dist/src/cli/dev/tui/runner.js +1 -1
  21. package/dist/src/cli/dev/tui/setup-commands.d.ts +2 -8
  22. package/dist/src/cli/dev/tui/setup-commands.js +1 -2
  23. package/dist/src/cli/dev/tui/setup-flow.d.ts +0 -3
  24. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -0
  25. package/dist/src/cli/dev/tui/terminal-renderer.js +10 -12
  26. package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
  27. package/dist/src/cli/dev/tui/theme.d.ts +1 -1
  28. package/dist/src/cli/dev/tui/tool-presentation.d.ts +4 -4
  29. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  30. package/dist/src/cli/dev/tui/tui.js +1 -1
  31. package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +1 -1
  32. package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -1
  33. package/dist/src/cli/invoke/result.d.ts +1 -1
  34. package/dist/src/cli/invoke/result.js +1 -1
  35. package/dist/src/cli/telemetry/preference.js +1 -1
  36. package/dist/src/client/agent-info-schema.d.ts +0 -2
  37. package/dist/src/client/agent-info-schema.js +1 -1
  38. package/dist/src/client/index.d.ts +1 -3
  39. package/dist/src/client/index.js +1 -1
  40. package/dist/src/compiled/.vendor-stamp.json +4 -3
  41. package/dist/src/compiled/@agentclientprotocol/sdk/index.js +2 -51
  42. package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
  43. package/dist/src/compiled/@ai-sdk/google/index.js +7 -7
  44. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  45. package/dist/src/compiled/@ai-sdk/openai/index.js +4 -4
  46. package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
  47. package/dist/src/compiled/@cfworker/json-schema/index.d.ts +18 -0
  48. package/dist/src/compiled/@cfworker/json-schema/index.js +2 -0
  49. package/dist/src/compiled/@modelcontextprotocol/server/index.js +9 -58
  50. package/dist/src/compiled/@opentelemetry/api/index.js +1 -1
  51. package/dist/src/compiled/@opentelemetry/otlp-transformer/index.js +1 -1
  52. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +55 -55
  53. package/dist/src/compiled/@vercel/blob/index.js +14 -36
  54. package/dist/src/compiled/@vercel/oidc/index.js +6 -28
  55. package/dist/src/compiled/@vercel/otel/index.js +1 -1
  56. package/dist/src/compiled/@vercel/sandbox/index.js +13 -13
  57. package/dist/src/compiled/{@workflow/builders/LICENSE.md → @vercel/sdk/LICENSE} +2 -2
  58. package/dist/src/compiled/@vercel/sdk/index.d.ts +41 -0
  59. package/dist/src/compiled/@vercel/sdk/index.js +1 -0
  60. package/dist/src/compiled/@workflow/core/index.js +1 -1
  61. package/dist/src/compiled/@workflow/core/private.js +1 -1
  62. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  63. package/dist/src/compiled/@workflow/core/runtime.js +2 -2
  64. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  65. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  66. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  67. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  68. package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
  69. package/dist/src/compiled/_chunks/client/core-CspsxXR-.js +52 -0
  70. package/dist/src/compiled/_chunks/client/rolldown-runtime-DK3Fl9T5.js +1 -0
  71. package/dist/src/compiled/_chunks/node/auth-Dztlx9pE.js +2 -0
  72. package/dist/src/compiled/_chunks/workflow/{attribute-changes-DFx4eluc.js → attribute-changes-89Nwz7XW.js} +1 -1
  73. package/dist/src/compiled/_chunks/workflow/{chunk-5MU5Z6L3-CrYztnvh.js → chunk-5MU5Z6L3-z9-dfnHp.js} +1 -1
  74. package/dist/src/compiled/_chunks/workflow/{chunk-NWCAEW5Y-ClfmNvkQ.js → chunk-NWCAEW5Y-8afLJrun.js} +1 -1
  75. package/dist/src/compiled/_chunks/workflow/{dist-C3919PVU.js → dist-C3ZE62yI.js} +3 -3
  76. package/dist/src/compiled/_chunks/workflow/dist-CNT2vjZ4.js +1 -0
  77. package/dist/src/compiled/_chunks/workflow/{dist-xTushGCp.js → dist-DtXwQbZr.js} +1 -1
  78. package/dist/src/compiled/_chunks/workflow/{esm-DyLz8Egm.js → esm-DtrPCf49.js} +1 -1
  79. package/dist/src/compiled/_chunks/workflow/{experimental-evaluation-D8_K_Pe9.js → experimental-evaluation-Dm32egEG.js} +2 -2
  80. package/dist/src/compiled/_chunks/workflow/frames-DnrfSd1P.js +3 -0
  81. package/dist/src/compiled/_chunks/workflow/{functions-C06vHfWP.js → functions-DpZiBxgQ.js} +1 -1
  82. package/dist/src/compiled/_chunks/workflow/{getMachineId-bsd-WEBNKY2R-DcIEvZzd.js → getMachineId-bsd-WEBNKY2R-D5OkV-EY.js} +1 -1
  83. package/dist/src/compiled/_chunks/workflow/{getMachineId-darwin-LT47KAXP-C4nRhfn9.js → getMachineId-darwin-LT47KAXP-BqwKrkSO.js} +1 -1
  84. package/dist/src/compiled/_chunks/workflow/{getMachineId-linux-LTVQO6VW-BqQf2T4W.js → getMachineId-linux-LTVQO6VW-CJlbJ4KP.js} +1 -1
  85. package/dist/src/compiled/_chunks/workflow/{getMachineId-unsupported-UKWBA27G-oYffWhib.js → getMachineId-unsupported-UKWBA27G-C4Y3-LZG.js} +1 -1
  86. package/dist/src/compiled/_chunks/workflow/{getMachineId-win-NLJKOPY6-CpL96LtN.js → getMachineId-win-NLJKOPY6-CsPs71SE.js} +1 -1
  87. package/dist/src/compiled/_chunks/workflow/{global-DFW-hO6M.js → global-DIlFoH2w.js} +1 -1
  88. package/dist/src/compiled/_chunks/workflow/{helpers-Bw52uyzw.js → helpers-k3zcudWr.js} +1 -1
  89. package/dist/src/compiled/_chunks/workflow/{logger-DFNCa8Nl.js → logger-Bzc8jWWj.js} +1 -1
  90. package/dist/src/compiled/_chunks/workflow/resume-hook-BmJ263ZR.js +1 -0
  91. package/dist/src/compiled/_chunks/workflow/{rolldown-runtime-DPpTSio4.js → rolldown-runtime-B_knIduE.js} +1 -1
  92. package/dist/src/compiled/_chunks/workflow/{run-BT6SQv5f.js → run-NLvREued.js} +1 -1
  93. package/dist/src/compiled/_chunks/workflow/{serialization-Cl0SYU0I.js → serialization-HCDeQWcR.js} +2 -2
  94. package/dist/src/compiled/_chunks/workflow/{signal-exit-B9U6kH7R.js → signal-exit-DZKTacNU.js} +1 -1
  95. package/dist/src/compiled/_chunks/workflow/sleep-Bi508qmg.js +1 -0
  96. package/dist/src/compiled/_chunks/workflow/{token-CrFhCmWs.js → token-1wSBbi5N.js} +1 -1
  97. package/dist/src/compiled/_chunks/workflow/{token-U5XEWlVM.js → token-BhlnqoHM.js} +1 -1
  98. package/dist/src/compiled/_chunks/workflow/{token-util-BkqzD0OM.js → token-util-Cm4Ec1Bg.js} +1 -1
  99. package/dist/src/compiled/_chunks/workflow/token-util-DaeRTzDa.js +5 -0
  100. package/dist/src/compiled/_chunks/workflow/{wait-until-Dzhr6tzf.js → wait-until-DXLZx3tU.js} +1 -1
  101. package/dist/src/compiled/_chunks/workflow/{wrapper-CKui_eTd.js → wrapper-CzrF_dmI.js} +3 -3
  102. package/dist/src/compiled/_chunks/workflow/ws-transport-BSM_Cl7a.js +1 -0
  103. package/dist/src/compiled/jose/index.js +1 -1
  104. package/dist/src/compiled/zod/index.js +1 -51
  105. package/dist/src/compiled/zod/v3.js +1 -0
  106. package/dist/src/compiled/zod/v4/core.js +1 -0
  107. package/dist/src/compiled/zod-validation-error/index.js +1 -1
  108. package/dist/src/compiler/artifacts.d.ts +2 -0
  109. package/dist/src/compiler/artifacts.js +1 -1
  110. package/dist/src/compiler/bundled-extension.d.ts +17 -0
  111. package/dist/src/compiler/bundled-extension.js +1 -0
  112. package/dist/src/compiler/compile-agent.d.ts +4 -0
  113. package/dist/src/compiler/compile-agent.js +1 -1
  114. package/dist/src/compiler/compile-from-memory.js +1 -1
  115. package/dist/src/compiler/development-extensions.d.ts +23 -0
  116. package/dist/src/compiler/development-extensions.js +1 -0
  117. package/dist/src/compiler/extension-compatibility.d.ts +20 -14
  118. package/dist/src/compiler/extension-compatibility.js +1 -1
  119. package/dist/src/compiler/load-binding-namespace.js +1 -1
  120. package/dist/src/compiler/manifest.js +1 -1
  121. package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
  122. package/dist/src/compiler/normalize-manifest-types.d.ts +23 -0
  123. package/dist/src/compiler/normalize-manifest.d.ts +2 -7
  124. package/dist/src/compiler/normalize-manifest.js +1 -1
  125. package/dist/src/compiler/source-graph-paths.d.ts +2 -0
  126. package/dist/src/compiler/source-graph-paths.js +1 -0
  127. package/dist/src/compiler/source-graph.d.ts +4 -1
  128. package/dist/src/compiler/source-graph.js +1 -1
  129. package/dist/src/context/build-base-tool-context.js +1 -1
  130. package/dist/src/context/build-callback-context.js +1 -1
  131. package/dist/src/context/dynamic-skill-lifecycle.d.ts +3 -3
  132. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  133. package/dist/src/context/keys.d.ts +18 -4
  134. package/dist/src/context/keys.js +1 -1
  135. package/dist/src/context/session-context.d.ts +5 -4
  136. package/dist/src/discover/bundled-extension.d.ts +11 -0
  137. package/dist/src/discover/bundled-extension.js +1 -0
  138. package/dist/src/discover/discover-agent.js +1 -1
  139. package/dist/src/discover/manifest.d.ts +5 -0
  140. package/dist/src/evals/assertions/collector.js +1 -1
  141. package/dist/src/evals/cli/eval.js +2 -2
  142. package/dist/src/evals/runner/artifacts.js +1 -1
  143. package/dist/src/evals/types.d.ts +2 -0
  144. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  145. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  146. package/dist/src/execution/node-step.d.ts +2 -4
  147. package/dist/src/execution/node-step.js +1 -1
  148. package/dist/src/execution/proxied-deliver-step.js +1 -1
  149. package/dist/src/execution/route-child-delivery.js +1 -1
  150. package/dist/src/execution/sandbox/bindings/docker-templates.d.ts +6 -0
  151. package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
  152. package/dist/src/execution/sandbox/bindings/docker.d.ts +6 -2
  153. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  154. package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +2 -2
  155. package/dist/src/execution/sandbox/bindings/just-bash.d.ts +2 -2
  156. package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -1
  157. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +7 -2
  158. package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +6 -2
  159. package/dist/src/execution/sandbox/bindings/vercel.d.ts +6 -3
  160. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  161. package/dist/src/execution/sandbox/ensure.js +1 -1
  162. package/dist/src/execution/sandbox/glob-tool.js +1 -1
  163. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  164. package/dist/src/execution/sandbox/logging-session.js +2 -2
  165. package/dist/src/execution/sandbox/provider-host.js +1 -1
  166. package/dist/src/execution/sandbox/read-file.js +1 -1
  167. package/dist/src/execution/sandbox/session.d.ts +5 -2
  168. package/dist/src/execution/sandbox/session.js +1 -1
  169. package/dist/src/execution/session/event-sink.d.ts +7 -13
  170. package/dist/src/execution/session/event-sink.js +1 -1
  171. package/dist/src/execution/session/handoff.d.ts +2 -2
  172. package/dist/src/execution/session/handoff.js +1 -1
  173. package/dist/src/execution/session/turn-step.js +1 -1
  174. package/dist/src/execution/session-workflow-tool-run.js +1 -1
  175. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  176. package/dist/src/execution/skills/instructions.d.ts +6 -8
  177. package/dist/src/execution/skills/instructions.js +2 -2
  178. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  179. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  180. package/dist/src/execution/tools/agent-router.d.ts +1 -2
  181. package/dist/src/execution/tools/agent-router.js +1 -1
  182. package/dist/src/execution/tools/ask-question-workflow.d.ts +11 -0
  183. package/dist/src/execution/tools/ask-question-workflow.js +1 -0
  184. package/dist/src/execution/tools/ask-question.d.ts +19 -0
  185. package/dist/src/execution/tools/ask-question.js +2 -0
  186. package/dist/src/execution/tools/connection-search.js +1 -1
  187. package/dist/src/execution/tools/file-state.d.ts +1 -7
  188. package/dist/src/execution/tools/file-state.js +1 -1
  189. package/dist/src/execution/tools/load-skill.d.ts +9 -5
  190. package/dist/src/execution/tools/load-skill.js +1 -1
  191. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  192. package/dist/src/execution/tools/sleep.d.ts +8 -9
  193. package/dist/src/execution/tools/sleep.js +1 -1
  194. package/dist/src/execution/tools/subagent/emit-event-step.d.ts +2 -1
  195. package/dist/src/execution/tools/subagent/emit-event-step.js +1 -1
  196. package/dist/src/execution/tools/subagent/task-agent-requests.js +1 -1
  197. package/dist/src/execution/tools/workflow/answer.d.ts +2 -0
  198. package/dist/src/execution/tools/workflow/answer.js +1 -1
  199. package/dist/src/execution/tools/workflow/ask.d.ts +3 -2
  200. package/dist/src/execution/tools/workflow/ask.js +1 -1
  201. package/dist/src/execution/tools/workflow/body.d.ts +5 -0
  202. package/dist/src/execution/tools/workflow/body.js +1 -1
  203. package/dist/src/execution/tools/workflow/cancel.d.ts +0 -4
  204. package/dist/src/execution/tools/workflow/cancel.js +1 -1
  205. package/dist/src/execution/tools/workflow/start.d.ts +1 -0
  206. package/dist/src/execution/tools/workflow/start.js +1 -1
  207. package/dist/src/extensions/code/extension/extension.d.ts +57 -0
  208. package/dist/src/extensions/code/extension/extension.js +1 -0
  209. package/dist/src/extensions/code/extension/hooks/authenticate.d.ts +2 -0
  210. package/dist/src/extensions/code/extension/hooks/authenticate.js +1 -0
  211. package/dist/src/extensions/code/extension/instructions.md +87 -0
  212. package/dist/src/extensions/code/extension/lib/command-failure.d.ts +7 -0
  213. package/dist/src/extensions/code/extension/lib/command-failure.js +2 -0
  214. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.d.ts +14 -0
  215. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.js +1309 -0
  216. package/dist/src/extensions/code/extension/lib/computer-use-sandbox.d.ts +9 -0
  217. package/dist/src/extensions/code/extension/lib/computer-use-sandbox.js +120 -0
  218. package/dist/src/extensions/code/extension/lib/computer-use.d.ts +36 -0
  219. package/dist/src/extensions/code/extension/lib/computer-use.js +78 -0
  220. package/dist/src/extensions/code/extension/lib/connect-authentication.d.ts +7 -0
  221. package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -0
  222. package/dist/src/extensions/code/extension/lib/credentials.d.ts +13 -0
  223. package/dist/src/extensions/code/extension/lib/credentials.js +3 -0
  224. package/dist/src/extensions/code/extension/lib/diagnostics.d.ts +30 -0
  225. package/dist/src/extensions/code/extension/lib/diagnostics.js +6 -0
  226. package/dist/src/extensions/code/extension/lib/generated-paths.d.ts +18 -0
  227. package/dist/src/extensions/code/extension/lib/generated-paths.js +2 -0
  228. package/dist/src/extensions/code/extension/lib/github-shell-schema.d.ts +11 -0
  229. package/dist/src/extensions/code/extension/lib/github-shell-schema.js +1 -0
  230. package/dist/src/extensions/code/extension/lib/github-shell.d.ts +53 -0
  231. package/dist/src/extensions/code/extension/lib/github-shell.js +1 -0
  232. package/dist/src/extensions/code/extension/lib/grep-search.d.ts +61 -0
  233. package/dist/src/extensions/code/extension/lib/grep-search.js +6 -0
  234. package/dist/src/extensions/code/extension/lib/guidelines.d.ts +25 -0
  235. package/dist/src/extensions/code/extension/lib/guidelines.js +2 -0
  236. package/dist/src/extensions/code/extension/lib/patch.d.ts +35 -0
  237. package/dist/src/extensions/code/extension/lib/patch.js +20 -0
  238. package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +70 -0
  239. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -0
  240. package/dist/src/extensions/code/extension/lib/prwatch-registry.d.ts +27 -0
  241. package/dist/src/extensions/code/extension/lib/prwatch-registry.js +1 -0
  242. package/dist/src/extensions/code/extension/lib/prwatch.d.ts +2 -0
  243. package/dist/src/extensions/code/extension/lib/prwatch.js +1 -0
  244. package/dist/src/extensions/code/extension/lib/repository-root.d.ts +4 -0
  245. package/dist/src/extensions/code/extension/lib/repository-root.js +1 -0
  246. package/dist/src/extensions/code/extension/lib/sandbox.d.ts +12 -0
  247. package/dist/src/extensions/code/extension/lib/sandbox.js +2 -0
  248. package/dist/src/extensions/code/extension/lib/shell.d.ts +1 -0
  249. package/dist/src/extensions/code/extension/lib/shell.js +1 -0
  250. package/dist/src/extensions/code/extension/lib/signed-commit.d.ts +2 -0
  251. package/dist/src/extensions/code/extension/lib/signed-commit.js +130 -0
  252. package/dist/src/extensions/code/extension/lib/tooling.d.ts +27 -0
  253. package/dist/src/extensions/code/extension/lib/tooling.js +92 -0
  254. package/dist/src/extensions/code/extension/skills/investigate/SKILL.md +30 -0
  255. package/dist/src/extensions/code/extension/skills/lookup-agent-run/SKILL.md +29 -0
  256. package/dist/src/extensions/code/extension/skills/pr/SKILL.md +53 -0
  257. package/dist/src/extensions/code/extension/skills/review/SKILL.md +21 -0
  258. package/dist/src/extensions/code/extension/subagents/worker/agent.d.ts +17 -0
  259. package/dist/src/extensions/code/extension/subagents/worker/agent.js +1 -0
  260. package/dist/src/extensions/code/extension/subagents/worker/instructions.md +20 -0
  261. package/dist/src/extensions/code/extension/subagents/worker/sandbox.d.ts +2 -0
  262. package/dist/src/extensions/code/extension/subagents/worker/sandbox.js +1 -0
  263. package/dist/src/extensions/code/extension/subagents/worker/tools/glob.d.ts +1 -0
  264. package/dist/src/extensions/code/extension/subagents/worker/tools/glob.js +1 -0
  265. package/dist/src/extensions/code/extension/subagents/worker/tools/grep.d.ts +1 -0
  266. package/dist/src/extensions/code/extension/subagents/worker/tools/grep.js +1 -0
  267. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.d.ts +2 -0
  268. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.js +1 -0
  269. package/dist/src/extensions/code/extension/subagents/worker/tools/read_file.d.ts +1 -0
  270. package/dist/src/extensions/code/extension/subagents/worker/tools/read_file.js +1 -0
  271. package/dist/src/extensions/code/extension/subagents/worker/tools/web_fetch.d.ts +2 -0
  272. package/dist/src/extensions/code/extension/subagents/worker/tools/web_fetch.js +1 -0
  273. package/dist/src/extensions/code/extension/subagents/worker/tools/web_search.d.ts +2 -0
  274. package/dist/src/extensions/code/extension/subagents/worker/tools/web_search.js +1 -0
  275. package/dist/src/extensions/code/extension/subagents/worker/tools/write_file.d.ts +2 -0
  276. package/dist/src/extensions/code/extension/subagents/worker/tools/write_file.js +1 -0
  277. package/dist/src/extensions/code/extension/tools/apply_patch.d.ts +28 -0
  278. package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -0
  279. package/dist/src/extensions/code/extension/tools/computer_use.d.ts +400 -0
  280. package/dist/src/extensions/code/extension/tools/computer_use.js +1 -0
  281. package/dist/src/extensions/code/extension/tools/gh.d.ts +27 -0
  282. package/dist/src/extensions/code/extension/tools/gh.js +1 -0
  283. package/dist/src/extensions/code/extension/tools/grep.d.ts +28 -0
  284. package/dist/src/extensions/code/extension/tools/grep.js +1 -0
  285. package/dist/src/extensions/code/tools.d.ts +4 -0
  286. package/dist/src/extensions/code/tools.js +1 -0
  287. package/dist/src/framework/sources/registry.js +1 -1
  288. package/dist/src/harness/compaction-prompt.d.ts +0 -6
  289. package/dist/src/harness/compaction-prompt.js +2 -2
  290. package/dist/src/harness/compaction.js +1 -1
  291. package/dist/src/harness/final-output.js +1 -1
  292. package/dist/src/harness/hitl/approval-input-requests.d.ts +0 -2
  293. package/dist/src/harness/hitl/approval-input-requests.js +1 -1
  294. package/dist/src/harness/input-extraction.d.ts +4 -15
  295. package/dist/src/harness/input-extraction.js +1 -1
  296. package/dist/src/harness/input-request-class.d.ts +0 -20
  297. package/dist/src/harness/input-request-class.js +1 -1
  298. package/dist/src/harness/input-requests.d.ts +1 -1
  299. package/dist/src/harness/input-requests.js +1 -1
  300. package/dist/src/harness/pending-input-batches.d.ts +1 -1
  301. package/dist/src/harness/proxy-input-requests.d.ts +9 -1
  302. package/dist/src/harness/proxy-input-requests.js +1 -1
  303. package/dist/src/harness/stale-input-responses.d.ts +1 -2
  304. package/dist/src/harness/stale-input-responses.js +1 -1
  305. package/dist/src/harness/tool-loop.js +2 -2
  306. package/dist/src/harness/tools.d.ts +0 -9
  307. package/dist/src/harness/tools.js +1 -1
  308. package/dist/src/harness/types.d.ts +2 -9
  309. package/dist/src/internal/application/optional-package-import.d.ts +9 -0
  310. package/dist/src/internal/application/optional-package-import.js +1 -0
  311. package/dist/src/internal/application/optional-package-install.d.ts +1 -5
  312. package/dist/src/internal/application/optional-package-install.js +2 -2
  313. package/dist/src/internal/application/package.js +1 -1
  314. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  315. package/dist/src/internal/authored-module-loader.js +1 -1
  316. package/dist/src/internal/development-programmatic-source-loader.d.ts +6 -0
  317. package/dist/src/internal/development-programmatic-source-loader.js +1 -0
  318. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  319. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  320. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -0
  321. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
  322. package/dist/src/internal/nitro/host/dev-workspace-extensions.js +1 -1
  323. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +2 -0
  324. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  325. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  326. package/dist/src/internal/nitro/host/types.d.ts +3 -0
  327. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  328. package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -2
  329. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  330. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.7/node_modules/@vercel/cli-config/dist/index.js +21 -0
  331. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/envpath.js +1 -0
  332. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errors.js +2 -0
  333. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errutils.js +1 -0
  334. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/exec.js +1 -0
  335. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/fsutils.js +1 -0
  336. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/index.js +1 -0
  337. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/lookup.js +1 -0
  338. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/safety.js +1 -0
  339. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/authorization.js +1 -0
  340. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/connector.js +1 -0
  341. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/index.js +1 -0
  342. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/installation.js +1 -0
  343. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/base-url.js +1 -0
  344. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/default-scopes.js +1 -0
  345. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/env.js +1 -0
  346. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/url-validation.js +1 -0
  347. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/token.js +1 -0
  348. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/auth-errors.js +1 -0
  349. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +1 -0
  350. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-context.js +1 -0
  351. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +1 -0
  352. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +2 -0
  353. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/index.js +1 -0
  354. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/oauth.js +1 -0
  355. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-error.js +1 -0
  356. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-io.js +1 -0
  357. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-util.js +2 -0
  358. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token.js +1 -0
  359. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +1 -0
  360. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/version.js +1 -0
  361. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +1 -0
  362. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +1 -0
  363. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +1 -0
  364. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +1 -0
  365. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +1 -0
  366. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +1 -0
  367. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +1 -0
  368. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +1 -0
  369. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +2 -0
  370. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +1 -0
  371. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +1 -0
  372. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +1 -0
  373. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +1 -0
  374. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +1 -0
  375. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +1 -0
  376. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +1 -0
  377. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +1 -0
  378. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +1 -0
  379. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +1 -0
  380. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +1 -0
  381. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +1 -0
  382. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +1 -0
  383. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +1 -0
  384. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +1 -0
  385. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +1 -0
  386. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +1 -0
  387. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +1 -0
  388. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +1 -0
  389. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +1 -0
  390. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +1 -0
  391. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +1 -0
  392. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +1 -0
  393. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +1 -0
  394. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +1 -0
  395. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +1 -0
  396. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +1 -0
  397. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +1 -0
  398. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +1 -0
  399. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +1 -0
  400. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +1 -0
  401. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +1 -0
  402. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +1 -0
  403. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +1 -0
  404. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +1 -0
  405. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +1 -0
  406. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +1 -0
  407. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +1 -0
  408. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +1 -0
  409. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +1 -0
  410. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +1 -0
  411. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +1 -0
  412. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +1 -0
  413. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +1 -0
  414. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +1 -0
  415. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +1 -0
  416. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +1 -0
  417. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +1 -0
  418. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +1 -0
  419. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +1 -0
  420. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +1 -0
  421. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +1 -0
  422. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +1 -0
  423. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +1 -0
  424. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +1 -0
  425. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +1 -0
  426. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +1 -0
  427. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +1 -0
  428. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +1 -0
  429. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +1 -0
  430. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +1 -0
  431. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +1 -0
  432. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +1 -0
  433. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +1 -0
  434. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +1 -0
  435. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +1 -0
  436. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +1 -0
  437. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +1 -0
  438. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +1 -0
  439. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +1 -0
  440. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +1 -0
  441. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +1 -0
  442. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +1 -0
  443. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +1 -0
  444. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +1 -0
  445. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +1 -0
  446. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +1 -0
  447. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +1 -0
  448. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +1 -0
  449. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +1 -0
  450. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +1 -0
  451. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +1 -0
  452. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +1 -0
  453. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +1 -0
  454. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +1 -0
  455. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +1 -0
  456. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +1 -0
  457. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +1 -0
  458. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +1 -0
  459. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +1 -0
  460. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +1 -0
  461. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +1 -0
  462. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +1 -0
  463. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +1 -0
  464. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +1 -0
  465. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +1 -0
  466. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +1 -0
  467. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +1 -0
  468. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +1 -0
  469. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +1 -0
  470. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +1 -0
  471. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +1 -0
  472. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +1 -0
  473. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +1 -0
  474. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +1 -0
  475. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +1 -0
  476. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +2 -0
  477. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +1 -0
  478. package/dist/src/public/channels/github/checkout.d.ts +7 -2
  479. package/dist/src/public/channels/github/checkout.js +1 -1
  480. package/dist/src/public/channels/github/defaults.js +1 -1
  481. package/dist/src/public/channels/slack/api-errors.d.ts +33 -0
  482. package/dist/src/public/channels/slack/api-errors.js +1 -0
  483. package/dist/src/public/channels/slack/api.js +1 -1
  484. package/dist/src/public/channels/slack/interaction-cards.js +1 -1
  485. package/dist/src/public/channels/slack/interactions.js +1 -1
  486. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  487. package/dist/src/public/memory/file/provider.js +1 -1
  488. package/dist/src/public/sandbox/docker.d.ts +7 -0
  489. package/dist/src/public/sandbox/index.d.ts +1 -1
  490. package/dist/src/public/sandbox/microsandbox.d.ts +7 -0
  491. package/dist/src/public/sandbox/vercel.d.ts +7 -0
  492. package/dist/src/public/skills/index.d.ts +1 -2
  493. package/dist/src/public/tools/ask-question.d.ts +1 -1
  494. package/dist/src/public/tools/ask-question.js +1 -1
  495. package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
  496. package/dist/src/runtime/connections/mcp-client.d.ts +0 -7
  497. package/dist/src/runtime/connections/mcp-client.js +1 -1
  498. package/dist/src/runtime/connections/openapi-client.d.ts +0 -3
  499. package/dist/src/runtime/connections/openapi-client.js +1 -1
  500. package/dist/src/runtime/workspace/seed-files.js +1 -1
  501. package/dist/src/sandbox/providers/docker.d.ts +4 -4
  502. package/dist/src/sandbox/providers/just-bash.d.ts +2 -2
  503. package/dist/src/sandbox/providers/microsandbox.d.ts +4 -4
  504. package/dist/src/sandbox/providers/vercel.d.ts +4 -3
  505. package/dist/src/sandbox/state.d.ts +2 -0
  506. package/dist/src/self-modification/config.d.ts +6 -0
  507. package/dist/src/self-modification/extension/config-schema.d.ts +25 -0
  508. package/dist/src/self-modification/extension/config-schema.js +1 -0
  509. package/dist/src/self-modification/extension/extension.d.ts +3 -47
  510. package/dist/src/self-modification/extension/extension.js +1 -1
  511. package/dist/src/self-modification/extension/subagents/agent/instructions.js +6 -2
  512. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
  513. package/dist/src/self-modification/git-workspace.d.ts +5 -1
  514. package/dist/src/self-modification/git.d.ts +5 -1
  515. package/dist/src/services/dev-client/request-headers.d.ts +1 -1
  516. package/dist/src/services/dev-client/request-headers.js +1 -1
  517. package/dist/src/setup/flows/model.d.ts +0 -108
  518. package/dist/src/setup/flows/model.js +1 -1
  519. package/dist/src/setup/integrations/discord/api.js +1 -1
  520. package/dist/src/setup/integrations/discord/connect.js +1 -1
  521. package/dist/src/setup/integrations/github/connect.js +1 -1
  522. package/dist/src/setup/integrations/linear/connect.js +1 -1
  523. package/dist/src/setup/integrations/linq/connect.js +1 -1
  524. package/dist/src/setup/integrations/photon/connect.js +1 -1
  525. package/dist/src/setup/integrations/teams/connect.js +1 -1
  526. package/dist/src/setup/project-resolution.js +1 -1
  527. package/dist/src/setup/scaffold/create/project.js +1 -1
  528. package/dist/src/setup/slack-connect.d.ts +1 -1
  529. package/dist/src/setup/slack-connect.js +1 -1
  530. package/dist/src/setup/vercel-api-failure.js +1 -1
  531. package/dist/src/setup/vercel-deployment.js +1 -1
  532. package/dist/src/setup/vercel-project-api.d.ts +1 -1
  533. package/dist/src/setup/vercel-project-api.js +1 -1
  534. package/dist/src/setup/vercel-project-framework.js +1 -1
  535. package/dist/src/setup/vercel-project.js +0 -0
  536. package/dist/src/shared/connection-types.d.ts +0 -2
  537. package/dist/src/shared/input.d.ts +1 -6
  538. package/dist/src/shared/sandbox-network-policy.d.ts +5 -4
  539. package/dist/src/shared/sandbox-session.d.ts +0 -15
  540. package/dist/src/shared/skill-package.d.ts +3 -0
  541. package/dist/src/shared/skill-package.js +1 -1
  542. package/dist/src/subagents/hitl-proxy.d.ts +11 -1
  543. package/dist/src/subagents/hitl-proxy.js +1 -1
  544. package/dist/src/svelte/index.js +1 -1
  545. package/dist/src/svelte/use-eve-agent.js +1 -1
  546. package/dist/src/tasks/json.d.ts +72 -2
  547. package/dist/src/tasks/json.js +1 -1
  548. package/dist/src/tools/behavior.d.ts +2 -5
  549. package/dist/src/tools/definition.d.ts +23 -5
  550. package/dist/src/tools/framework/agent-contract.d.ts +7 -6
  551. package/dist/src/tools/framework/agent-contract.js +1 -1
  552. package/dist/src/tools/framework/agent.d.ts +4 -13
  553. package/dist/src/tools/framework/task-cancel.d.ts +1 -17
  554. package/dist/src/tools/framework/task-contract.d.ts +16 -137
  555. package/dist/src/tools/framework/task-contract.js +1 -1
  556. package/dist/src/tools/provided/ask-question.d.ts +18 -0
  557. package/dist/src/tools/provided/ask-question.js +1 -0
  558. package/dist/src/tools/provided/bash.d.ts +11 -12
  559. package/dist/src/tools/provided/bash.js +1 -1
  560. package/dist/src/tools/provided/glob.d.ts +13 -14
  561. package/dist/src/tools/provided/glob.js +1 -1
  562. package/dist/src/tools/provided/grep.d.ts +17 -18
  563. package/dist/src/tools/provided/grep.js +1 -1
  564. package/dist/src/tools/provided/read-file.d.ts +14 -15
  565. package/dist/src/tools/provided/read-file.js +1 -1
  566. package/dist/src/tools/provided/sleep.d.ts +2 -2
  567. package/dist/src/tools/provided/web-fetch.d.ts +13 -18
  568. package/dist/src/tools/provided/web-fetch.js +1 -1
  569. package/dist/src/tools/provided/workflow.js +1 -1
  570. package/dist/src/tools/provided/write-file.d.ts +10 -11
  571. package/dist/src/tools/provided/write-file.js +1 -1
  572. package/dist/src/tools/schema.d.ts +40 -10
  573. package/dist/src/tools/schema.js +1 -1
  574. package/dist/src/vue/index.js +1 -1
  575. package/dist/src/vue/use-eve-agent.js +1 -1
  576. package/docs/README.md +1 -1
  577. package/docs/agent-config.md +11 -11
  578. package/docs/channels/slack.mdx +1 -1
  579. package/docs/concepts/built-in-tools.md +16 -66
  580. package/docs/concepts/default-harness.md +1 -3
  581. package/docs/concepts/execution-model-and-durability.mdx +1 -1
  582. package/docs/concepts/sessions-runs-and-streaming.md +2 -2
  583. package/docs/connections/overview.mdx +1 -1
  584. package/docs/evals/assertions.mdx +2 -2
  585. package/docs/evals/judge.mdx +3 -3
  586. package/docs/extensions.md +4 -0
  587. package/docs/getting-started.mdx +2 -2
  588. package/docs/guides/deployment/vercel.mdx +6 -0
  589. package/docs/guides/dev-tui.md +2 -2
  590. package/docs/guides/dynamic-capabilities.md +2 -0
  591. package/docs/guides/evaluate.md +12 -9
  592. package/docs/guides/frontend/overview.mdx +1 -1
  593. package/docs/guides/hooks.md +6 -3
  594. package/docs/guides/instrumentation/agent-runs.mdx +101 -0
  595. package/docs/guides/instrumentation/instrumentation.mdx +2 -1
  596. package/docs/guides/instrumentation/meta.json +1 -1
  597. package/docs/guides/instrumentation/migration.md +5 -1
  598. package/docs/guides/instrumentation/otel.mdx +8 -27
  599. package/docs/guides/self-modification.md +37 -0
  600. package/docs/guides/session-context.md +11 -13
  601. package/docs/install-integrations.mdx +1 -1
  602. package/docs/meta.json +1 -0
  603. package/docs/reference/cli.md +10 -7
  604. package/docs/reference/typescript-api.md +42 -42
  605. package/docs/sandbox/index.mdx +11 -0
  606. package/docs/skills.mdx +5 -10
  607. package/docs/subagents/index.mdx +7 -5
  608. package/docs/tools/human-in-the-loop.md +22 -11
  609. package/docs/tools/overview.mdx +7 -1
  610. package/docs/tools/workflows.mdx +45 -20
  611. package/docs/tutorial/guard-the-spend.mdx +1 -1
  612. package/package.json +30 -9
  613. package/dist/src/cli/dev/tui/model-picker.d.ts +0 -50
  614. package/dist/src/cli/dev/tui/model-picker.js +0 -1
  615. package/dist/src/cli/dev/tui/todo-panel.d.ts +0 -44
  616. package/dist/src/cli/dev/tui/todo-panel.js +0 -1
  617. package/dist/src/compiled/@workflow/builders/index.d.ts +0 -62
  618. package/dist/src/compiled/@workflow/builders/index.js +0 -1
  619. package/dist/src/compiled/_chunks/client/errors-Cd0_QQdM.js +0 -2
  620. package/dist/src/compiled/_chunks/node/auth-DDrvYko5.js +0 -2
  621. package/dist/src/compiled/_chunks/node/schemas-g-rLPCNX.js +0 -50
  622. package/dist/src/compiled/_chunks/workflow/coerce-D0oqvQ_w.js +0 -1
  623. package/dist/src/compiled/_chunks/workflow/dist-DjECvUyK.js +0 -2
  624. package/dist/src/compiled/_chunks/workflow/frames-D_Q-7A1N.js +0 -3
  625. package/dist/src/compiled/_chunks/workflow/resume-hook-BhA_nDEV.js +0 -1
  626. package/dist/src/compiled/_chunks/workflow/schemas-4CmFgxN_.js +0 -50
  627. package/dist/src/compiled/_chunks/workflow/sleep-DB4AH9-A.js +0 -1
  628. package/dist/src/compiled/_chunks/workflow/token-util-pP4KRRl0.js +0 -27
  629. package/dist/src/compiled/_chunks/workflow/ws-transport-BpTMh40s.js +0 -1
  630. package/dist/src/execution/compaction.d.ts +0 -14
  631. package/dist/src/execution/compaction.js +0 -1
  632. package/dist/src/execution/tools/todo.d.ts +0 -91
  633. package/dist/src/execution/tools/todo.js +0 -2
  634. package/dist/src/harness/hitl/question-input-requests.d.ts +0 -15
  635. package/dist/src/harness/hitl/question-input-requests.js +0 -1
  636. package/dist/src/harness/request-input-tool.d.ts +0 -4
  637. package/dist/src/harness/request-input-tool.js +0 -1
  638. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/lib/primitives.js +0 -1
  639. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/lib/schemas.js +0 -1
  640. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/aclaction.js +0 -1
  641. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +0 -1
  642. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectblock.js +0 -1
  643. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectprojectsbranchmatcher.js +0 -1
  644. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +0 -1
  645. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/fp.js +0 -1
  646. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/primitives.js +0 -1
  647. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/rfcdate.js +0 -1
  648. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/smartUnion.js +0 -1
  649. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/unrecognized.js +0 -1
  650. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/index.js +0 -1
  651. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/ZodError.js +0 -1
  652. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/errors.js +0 -1
  653. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/external.js +0 -1
  654. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/errorUtil.js +0 -1
  655. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/parseUtil.js +0 -1
  656. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/util.js +0 -1
  657. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/index.js +0 -1
  658. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/locales/en.js +0 -1
  659. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/types.js +0 -1
  660. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/checks.js +0 -1
  661. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/coerce.js +0 -1
  662. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/compat.js +0 -1
  663. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/deep-partial.js +0 -1
  664. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/errors.js +0 -1
  665. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/external.js +0 -1
  666. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/from-json-schema.js +0 -1
  667. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/in-out.js +0 -1
  668. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/iso.js +0 -1
  669. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/parse.js +0 -1
  670. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/schemas.js +0 -1
  671. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/api.js +0 -1
  672. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/checks.js +0 -1
  673. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/compile.js +0 -2
  674. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/core.js +0 -1
  675. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/doc.js +0 -3
  676. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/errors.js +0 -2
  677. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/index.js +0 -1
  678. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema-generator.js +0 -1
  679. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema-processors.js +0 -1
  680. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema.js +0 -1
  681. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/memoizer.js +0 -1
  682. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/parse.js +0 -1
  683. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/regexes.js +0 -1
  684. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/registries.js +0 -1
  685. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/schemas.js +0 -46
  686. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/to-json-schema.js +0 -3
  687. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/util.js +0 -1
  688. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/versions.js +0 -1
  689. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/visit.js +0 -1
  690. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ar.js +0 -1
  691. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/az.js +0 -1
  692. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/be.js +0 -1
  693. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/bg.js +0 -1
  694. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/bn.js +0 -1
  695. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ca.js +0 -1
  696. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ckb.js +0 -1
  697. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/cs.js +0 -1
  698. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/da.js +0 -1
  699. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/de.js +0 -1
  700. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/el.js +0 -1
  701. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/en.js +0 -1
  702. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/eo.js +0 -1
  703. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/es.js +0 -1
  704. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fa.js +0 -1
  705. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fi.js +0 -1
  706. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fr-CA.js +0 -1
  707. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fr.js +0 -1
  708. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/gu.js +0 -1
  709. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/he.js +0 -1
  710. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hi.js +0 -1
  711. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hr.js +0 -1
  712. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hu.js +0 -1
  713. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hy.js +0 -1
  714. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/id.js +0 -1
  715. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/index.js +0 -1
  716. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/is.js +0 -1
  717. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/it.js +0 -1
  718. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ja.js +0 -1
  719. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ka.js +0 -1
  720. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/kh.js +0 -1
  721. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/km.js +0 -1
  722. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/kn.js +0 -1
  723. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ko.js +0 -1
  724. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/lt.js +0 -1
  725. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/mk.js +0 -1
  726. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ms.js +0 -1
  727. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ne.js +0 -1
  728. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/nl.js +0 -1
  729. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/nn.js +0 -1
  730. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/no.js +0 -1
  731. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ota.js +0 -1
  732. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pl.js +0 -1
  733. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ps.js +0 -1
  734. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pt-BR.js +0 -1
  735. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pt.js +0 -1
  736. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ro.js +0 -1
  737. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ru.js +0 -1
  738. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sk.js +0 -1
  739. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sl.js +0 -1
  740. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sv.js +0 -1
  741. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ta.js +0 -1
  742. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/th.js +0 -1
  743. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/tk.js +0 -1
  744. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/tr.js +0 -1
  745. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ua.js +0 -1
  746. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/uk.js +0 -1
  747. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ur.js +0 -1
  748. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/uz.js +0 -1
  749. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/vi.js +0 -1
  750. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/yo.js +0 -1
  751. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/zh-CN.js +0 -1
  752. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/zh-TW.js +0 -1
  753. package/dist/src/public/tools/todo.d.ts +0 -3
  754. package/dist/src/public/tools/todo.js +0 -1
  755. package/dist/src/runtime/skills/sandbox-access.d.ts +0 -22
  756. package/dist/src/runtime/skills/sandbox-access.js +0 -1
  757. package/dist/src/shared/skill-types.d.ts +0 -22
  758. package/dist/src/shared/skill-types.js +0 -1
  759. package/dist/src/tools/framework/ask-question.d.ts +0 -38
  760. package/dist/src/tools/framework/ask-question.js +0 -1
  761. package/dist/src/tools/provided/todo.d.ts +0 -8
  762. package/dist/src/tools/provided/todo.js +0 -2
  763. /package/dist/src/{node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/typeAliases.js → compiler/normalize-manifest-types.js} +0 -0
@@ -2,12 +2,6 @@ import type { ModelMessage } from "ai";
2
2
  export declare const COMPACTION_CHECKPOINT_MARKER = "Summary of our conversation so far:";
3
3
  /** Synthetic resumption prompt used when no real user message can be replayed. */
4
4
  export declare const COMPACTION_RESUMPTION_MESSAGE = "Continue.";
5
- /**
6
- * Label line of the framework-injected todo preservation message. Owned here
7
- * so compaction can recognize the message as synthetic when picking a user
8
- * message to replay after compaction.
9
- */
10
- export declare const TODO_COMPACTION_PRESERVATION_LABEL = "[Your task list was preserved across context compaction]";
11
5
  export interface CompactionPrompt {
12
6
  readonly prompt: string;
13
7
  readonly system: string;
@@ -1,4 +1,4 @@
1
- import{estimateTokens}from"#harness/token-estimate.js";const COMPACTION_CHECKPOINT_MARKER=`Summary of our conversation so far:`,COMPACTION_RESUMPTION_MESSAGE=`Continue.`,TODO_COMPACTION_PRESERVATION_LABEL=`[Your task list was preserved across context compaction]`,COMPACTION_SYSTEM_PROMPT=`You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM that will resume the task.
1
+ import{estimateTokens}from"#harness/token-estimate.js";const COMPACTION_CHECKPOINT_MARKER=`Summary of our conversation so far:`,COMPACTION_RESUMPTION_MESSAGE=`Continue.`,COMPACTION_SYSTEM_PROMPT=`You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM that will resume the task.
2
2
 
3
3
  Include:
4
4
 
@@ -23,4 +23,4 @@ Make completed work explicit so the next model does not repeat it. Keep complete
23
23
  Large tool outputs are the main thing to compress: reduce each to the findings the next model needs — what was searched or read, what it established, and the exact identifiers involved — rather than reproducing the output. The next model cannot see the originals, so nothing it would need to act on may be lost.`}function formatCompactionTranscript(e){let t=e.filter(e=>e.content.trim().length>0).map(e=>`### ${e.role}\n${e.content.trim()}`);return t.length===0?`(empty)`:t.join(`
24
24
 
25
25
  `)}function renderCompactionMessageContent(e,t){return typeof e.content==`string`?renderConversationText(e.content,t):e.content.map(e=>renderCompactionContentPart(e,t)).filter(e=>e.length>0).join(`
26
- `).trim()}function renderCompactionContentPart(e,t){switch(e.type){case`text`:return renderConversationText(e.text,t);case`reasoning`:return``;case`file`:return renderAttachedFileStub(e.filename,e.mediaType);case`tool-call`:return renderTranscriptToolCall(e,t);case`tool-result`:return renderTranscriptToolResult(e,t);default:return``}}const TRANSCRIPT_PAYLOAD_LIMIT=2e3;function renderTranscriptToolCall(e,t){return renderToolCall(e,t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280)}function renderTranscriptToolResult(e,t){let n=t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280,r=e.isError?`errored`:`returned`,i=renderToolResultOutput(e.output,n);return i?`Tool ${e.toolName} ${r} ${i}`:`Tool ${e.toolName} ${r}`}function renderToolResultOutput(e,t){let n=contentToolOutputParts(e);return n===void 0?renderPayload(e,t):capText(n.map(e=>renderContentToolOutputPart(e,t)).filter(e=>e.length>0).join(` `),t)}function contentToolOutputParts(e){if(typeof e!=`object`||!e)return;let t=e;return t.type===`content`&&Array.isArray(t.value)?t.value:void 0}function stubContentOutputFileParts(e){let t=contentToolOutputParts(e);if(t===void 0)return e;let n=!1,r=t.map(e=>{if(typeof e!=`object`||!e)return e;let t=e;return t.type!==`file`&&t.type!==`media`?e:(n=!0,{text:renderAttachedFileStub(typeof t.filename==`string`?t.filename:void 0,typeof t.mediaType==`string`?t.mediaType:`unknown`),type:`text`})});return n?{type:`content`,value:r}:e}function renderContentToolOutputPart(e,t){if(typeof e!=`object`||!e)return renderPayload(e,t);let n=e;return n.type===`text`&&typeof n.text==`string`?n.text:n.type===`file`||n.type===`media`?renderAttachedFileStub(typeof n.filename==`string`?n.filename:void 0,typeof n.mediaType==`string`?n.mediaType:`unknown`):renderPayload(e,t)}function renderToolCall(e,t){let n=renderPayload(e.input,t);return n?`Called ${e.toolName} with ${n}`:`Called ${e.toolName}`}function renderPayload(e,t){return e===void 0?``:capText(JSON.stringify(e)??``,t)}function renderAttachedFileStub(e,t){return`Attached file ${e??`attachment`} (${t})`}function renderConversationText(e,t){return t===void 0?e.trim():capText(e,t)}function sliceUtf16Safe(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=t,r=e.charCodeAt(n-1);return r>=55296&&r<=56319&&--n,e.slice(0,n)}function capText(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${sliceUtf16Safe(n,t).trimEnd()}…`}export{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TODO_COMPACTION_PRESERVATION_LABEL,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts};
26
+ `).trim()}function renderCompactionContentPart(e,t){switch(e.type){case`text`:return renderConversationText(e.text,t);case`reasoning`:return``;case`file`:return renderAttachedFileStub(e.filename,e.mediaType);case`tool-call`:return renderTranscriptToolCall(e,t);case`tool-result`:return renderTranscriptToolResult(e,t);default:return``}}const TRANSCRIPT_PAYLOAD_LIMIT=2e3;function renderTranscriptToolCall(e,t){return renderToolCall(e,t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280)}function renderTranscriptToolResult(e,t){let n=t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280,r=e.isError?`errored`:`returned`,i=renderToolResultOutput(e.output,n);return i?`Tool ${e.toolName} ${r} ${i}`:`Tool ${e.toolName} ${r}`}function renderToolResultOutput(e,t){let n=contentToolOutputParts(e);return n===void 0?renderPayload(e,t):capText(n.map(e=>renderContentToolOutputPart(e,t)).filter(e=>e.length>0).join(` `),t)}function contentToolOutputParts(e){if(typeof e!=`object`||!e)return;let t=e;return t.type===`content`&&Array.isArray(t.value)?t.value:void 0}function stubContentOutputFileParts(e){let t=contentToolOutputParts(e);if(t===void 0)return e;let n=!1,r=t.map(e=>{if(typeof e!=`object`||!e)return e;let t=e;return t.type!==`file`&&t.type!==`media`?e:(n=!0,{text:renderAttachedFileStub(typeof t.filename==`string`?t.filename:void 0,typeof t.mediaType==`string`?t.mediaType:`unknown`),type:`text`})});return n?{type:`content`,value:r}:e}function renderContentToolOutputPart(e,t){if(typeof e!=`object`||!e)return renderPayload(e,t);let n=e;return n.type===`text`&&typeof n.text==`string`?n.text:n.type===`file`||n.type===`media`?renderAttachedFileStub(typeof n.filename==`string`?n.filename:void 0,typeof n.mediaType==`string`?n.mediaType:`unknown`):renderPayload(e,t)}function renderToolCall(e,t){let n=renderPayload(e.input,t);return n?`Called ${e.toolName} with ${n}`:`Called ${e.toolName}`}function renderPayload(e,t){return e===void 0?``:capText(JSON.stringify(e)??``,t)}function renderAttachedFileStub(e,t){return`Attached file ${e??`attachment`} (${t})`}function renderConversationText(e,t){return t===void 0?e.trim():capText(e,t)}function sliceUtf16Safe(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=t,r=e.charCodeAt(n-1);return r>=55296&&r<=56319&&--n,e.slice(0,n)}function capText(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${sliceUtf16Safe(n,t).trimEnd()}…`}export{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts};
@@ -1 +1 @@
1
- import{generateText}from"ai";import{createFrameworkUserMessage,isFrameworkUserMessage}from"#harness/messages.js";import{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts}from"#harness/compaction-prompt.js";import{estimateTokens}from"#harness/token-estimate.js";const COMPACTION_PROMPT_OVERHEAD_TOKENS=estimateTokens([{content:COMPACTION_PROMPT_ENVELOPE.system,role:`system`},createFrameworkUserMessage(`context.compaction`,COMPACTION_PROMPT_ENVELOPE.prompt)]);function getInputTokenCount(e,t,n=0,r=0){let i=t.lastKnownInputTokens,a=t.lastKnownPromptMessageCount;return i===void 0||a===void 0||!Number.isInteger(a)||a<0||a>e.length?estimateTokens(e)+n:i+estimateTokens(e.slice(a))+Math.max(0,n-r)}function shouldCompact(e,t,n=0,r=0){return e.length>0&&getInputTokenCount(e,t,n,r)+COMPACTION_PROMPT_OVERHEAD_TOKENS>t.threshold}async function resolveCompactionModel(e){let t=e.compactionModelReference??e.modelReference;return{model:t===e.modelReference?e.model:await e.resolveModel(t),providerOptions:t.providerOptions}}const COMPACTION_HEURISTICS=[toolResultCapHeuristic];function toolResultCapHeuristic(e){let t=withResumptionGuard([...e.previousCheckpoint===void 0?[]:[createFrameworkUserMessage(`context.compaction`,COMPACTION_CHECKPOINT_MARKER),{content:e.previousCheckpoint,role:`assistant`}],...capToolResults(e.older),...e.recent],e.conversation,e.config.threshold);return evaluateThreshold(t,e.config,`should-compact`,e.tokenEstimateAdjustment).type===`within-limit`?{messages:t,type:`within-limit`}:{type:`insufficient`}}function evaluateThreshold(e,t,n,r=0){let i=n===`should-compact`?COMPACTION_PROMPT_OVERHEAD_TOKENS:0,a=estimateTokens(e)+i+r;return{estimatedTokens:a,type:a<=t.threshold?`within-limit`:`over-limit`}}async function compactMessages(e,t,n,r,i,a,o,s=!1,c){let{conversation:l,previousCheckpoint:u}=extractPreviousCheckpoint(e),d=selectRecentWindowSize(l,s?{...n,recentWindowSize:1}:n);if(!s){let{older:t,recent:r}=splitMessagesForCompaction(l,d);if(t.length===0&&u===void 0)return keepNonToolResultMessages(r);let i=Math.max(0,(c??getInputTokenCount(e,n))-estimateTokens(e));for(let e of COMPACTION_HEURISTICS){let a=e({config:n,conversation:l,older:t,previousCheckpoint:u,recent:r,tokenEstimateAdjustment:i});if(a.type===`within-limit`)return a.messages}}for(;;){let{older:e,recent:s}=splitMessagesForCompaction(l,d),c=createCompactionPrompt({messages:e,previousCheckpoint:u,transcriptBudgetTokens:n.threshold}),f=await generateText({abortSignal:o,headers:a,messages:[createFrameworkUserMessage(`context.compaction`,c.prompt)],model:t,providerOptions:r,system:c.system,telemetry:i?{...i,functionId:`eve.compaction`}:void 0,temperature:0});if(f.text.trim().length===0)throw Error(`The compaction model returned an empty summary. Finish reason: ${f.finishReason}.`);let p=[createFrameworkUserMessage(`context.compaction`,COMPACTION_CHECKPOINT_MARKER),{content:f.text,role:`assistant`}],m=withResumptionGuard([...p,...s],l,n.threshold);if(evaluateThreshold(m,n,`estimate`).type===`within-limit`)return m;let h=withResumptionGuard([...p,...keepNonToolResultMessages(s)],l,n.threshold);if(evaluateThreshold(h,n,`estimate`).type===`within-limit`||d===0)return h;--d}}function capToolResults(e){return e.map(e=>{if(e.role!==`tool`||typeof e.content==`string`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-result`)return e;let n=stubContentOutputFileParts(e.output),r=JSON.stringify(n)??``;return r.length<=TRANSCRIPT_PAYLOAD_LIMIT?n===e.output?e:(t=!0,{...e,output:n}):(t=!0,{...e,output:{type:`text`,value:`[Truncated by eve: tool result reduced during context compaction. Re-run the tool if you need the full output.]\n\n${sliceUtf16Safe(r,TRANSCRIPT_PAYLOAD_LIMIT)}`}})});return t?{...e,content:n}:e})}function withResumptionGuard(e,t,n){let r=e.at(-1)?.role,i=findLastRealUserMessage(t),a=i!==void 0&&e.some(e=>e.role===`user`&&e.content===i.content);return r!==void 0&&r!==`assistant`?r===`tool`&&i!==void 0&&!a&&estimateTokens([i])<=n?[...e,i]:e:[...e,i!==void 0&&!a?i:createFrameworkUserMessage(`execution.continuation`,COMPACTION_RESUMPTION_MESSAGE)]}function findLastRealUserMessage(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`&&typeof n.content==`string`&&!isFrameworkUserMessage(n))return n}}function extractPreviousCheckpoint(e){let t=e[0],n=e[1];return t?.role!==`user`||t.content!==COMPACTION_CHECKPOINT_MARKER||n?.role!==`assistant`?{conversation:[...e],previousCheckpoint:void 0}:{conversation:e.slice(2),previousCheckpoint:assistantMessageText(n)}}function keepNonToolResultMessages(e){let t=[];for(let n of e)if(n.role!==`tool`){if(n.role===`assistant`){let e=assistantMessageText(n);e.length>0&&t.push({content:e,role:`assistant`});continue}t.push(n)}return t}function assistantMessageText(e){return typeof e.content==`string`?e.content.trim():e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim()}function selectRecentWindowSize(e,t){let n=Math.min(t.recentWindowSize,Math.max(e.length-1,0)),r=resolveCompactionSummaryReserve(t),i=0,a=0;for(let o=e.length-1;o>=0&&i<n;--o){let n=e[o];if(n===void 0)continue;let s=estimateTokens([n]);if(a+s+r>t.threshold)break;a+=s,i+=1}return i}function resolveCompactionSummaryReserve(e){return Math.min(2048,Math.max(64,Math.floor(e.threshold/4)))}function splitMessagesForCompaction(e,t){if(t<=0)return{older:[...e],recent:[]};let n=e.length-t;for(;n<e.length&&e[n]?.role===`tool`;)n+=1;return{older:e.slice(0,n),recent:e.slice(n)}}export{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact};
1
+ import{generateText}from"ai";import{createFrameworkUserMessage,isFrameworkUserMessage}from"#harness/messages.js";import{estimateTokens}from"#harness/token-estimate.js";import{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts}from"#harness/compaction-prompt.js";const COMPACTION_PROMPT_OVERHEAD_TOKENS=estimateTokens([{content:COMPACTION_PROMPT_ENVELOPE.system,role:`system`},createFrameworkUserMessage(`context.compaction`,COMPACTION_PROMPT_ENVELOPE.prompt)]);function getInputTokenCount(e,t,n=0,r=0){let i=t.lastKnownInputTokens,a=t.lastKnownPromptMessageCount;return i===void 0||a===void 0||!Number.isInteger(a)||a<0||a>e.length?estimateTokens(e)+n:i+estimateTokens(e.slice(a))+Math.max(0,n-r)}function shouldCompact(e,t,n=0,r=0){return e.length>0&&getInputTokenCount(e,t,n,r)+COMPACTION_PROMPT_OVERHEAD_TOKENS>t.threshold}async function resolveCompactionModel(e){let t=e.compactionModelReference??e.modelReference;return{model:t===e.modelReference?e.model:await e.resolveModel(t),providerOptions:t.providerOptions}}const COMPACTION_HEURISTICS=[toolResultCapHeuristic];function toolResultCapHeuristic(e){let t=withResumptionGuard([...e.previousCheckpoint===void 0?[]:[createFrameworkUserMessage(`context.compaction`,COMPACTION_CHECKPOINT_MARKER),{content:e.previousCheckpoint,role:`assistant`}],...capToolResults(e.older),...e.recent],e.conversation,e.config.threshold);return evaluateThreshold(t,e.config,`should-compact`,e.tokenEstimateAdjustment).type===`within-limit`?{messages:t,type:`within-limit`}:{type:`insufficient`}}function evaluateThreshold(e,t,n,r=0){let i=n===`should-compact`?COMPACTION_PROMPT_OVERHEAD_TOKENS:0,a=estimateTokens(e)+i+r;return{estimatedTokens:a,type:a<=t.threshold?`within-limit`:`over-limit`}}async function compactMessages(e,t,n,r,i,a,o,s=!1,c){let{conversation:l,previousCheckpoint:u}=extractPreviousCheckpoint(e),d=selectRecentWindowSize(l,s?{...n,recentWindowSize:1}:n);if(!s){let{older:t,recent:r}=splitMessagesForCompaction(l,d);if(t.length===0&&u===void 0)return keepNonToolResultMessages(r);let i=Math.max(0,(c??getInputTokenCount(e,n))-estimateTokens(e));for(let e of COMPACTION_HEURISTICS){let a=e({config:n,conversation:l,older:t,previousCheckpoint:u,recent:r,tokenEstimateAdjustment:i});if(a.type===`within-limit`)return a.messages}}for(;;){let{older:e,recent:s}=splitMessagesForCompaction(l,d),c=createCompactionPrompt({messages:e,previousCheckpoint:u,transcriptBudgetTokens:n.threshold}),f=await generateText({abortSignal:o,headers:a,messages:[createFrameworkUserMessage(`context.compaction`,c.prompt)],model:t,providerOptions:r,system:c.system,telemetry:i?{...i,functionId:`eve.compaction`}:void 0});if(f.text.trim().length===0)throw Error(`The compaction model returned an empty summary. Finish reason: ${f.finishReason}.`);let p=[createFrameworkUserMessage(`context.compaction`,COMPACTION_CHECKPOINT_MARKER),{content:f.text,role:`assistant`}],m=withResumptionGuard([...p,...s],l,n.threshold);if(evaluateThreshold(m,n,`estimate`).type===`within-limit`)return m;let h=withResumptionGuard([...p,...keepNonToolResultMessages(s)],l,n.threshold);if(evaluateThreshold(h,n,`estimate`).type===`within-limit`||d===0)return h;--d}}function capToolResults(e){return e.map(e=>{if(e.role!==`tool`||typeof e.content==`string`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-result`)return e;let n=stubContentOutputFileParts(e.output),r=JSON.stringify(n)??``;return r.length<=TRANSCRIPT_PAYLOAD_LIMIT?n===e.output?e:(t=!0,{...e,output:n}):(t=!0,{...e,output:{type:`text`,value:`[Truncated by eve: tool result reduced during context compaction. Re-run the tool if you need the full output.]\n\n${sliceUtf16Safe(r,TRANSCRIPT_PAYLOAD_LIMIT)}`}})});return t?{...e,content:n}:e})}function withResumptionGuard(e,t,n){let r=e.at(-1)?.role,i=findLastRealUserMessage(t),a=i!==void 0&&e.some(e=>e.role===`user`&&e.content===i.content);return r!==void 0&&r!==`assistant`?r===`tool`&&i!==void 0&&!a&&estimateTokens([i])<=n?[...e,i]:e:[...e,i!==void 0&&!a?i:createFrameworkUserMessage(`execution.continuation`,COMPACTION_RESUMPTION_MESSAGE)]}function findLastRealUserMessage(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`&&typeof n.content==`string`&&!isFrameworkUserMessage(n))return n}}function extractPreviousCheckpoint(e){let t=e[0],n=e[1];return t?.role!==`user`||t.content!==COMPACTION_CHECKPOINT_MARKER||n?.role!==`assistant`?{conversation:[...e],previousCheckpoint:void 0}:{conversation:e.slice(2),previousCheckpoint:assistantMessageText(n)}}function keepNonToolResultMessages(e){let t=[];for(let n of e)if(n.role!==`tool`){if(n.role===`assistant`){let e=assistantMessageText(n);e.length>0&&t.push({content:e,role:`assistant`});continue}t.push(n)}return t}function assistantMessageText(e){return typeof e.content==`string`?e.content.trim():e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim()}function selectRecentWindowSize(e,t){let n=Math.min(t.recentWindowSize,Math.max(e.length-1,0)),r=resolveCompactionSummaryReserve(t),i=0,a=0;for(let o=e.length-1;o>=0&&i<n;--o){let n=e[o];if(n===void 0)continue;let s=estimateTokens([n]);if(a+s+r>t.threshold)break;a+=s,i+=1}return i}function resolveCompactionSummaryReserve(e){return Math.min(2048,Math.max(64,Math.floor(e.threshold/4)))}function splitMessagesForCompaction(e,t){if(t<=0)return{older:[...e],recent:[]};let n=e.length-t;for(;n<e.length&&e[n]?.role===`tool`;)n+=1;return{older:e.slice(0,n),recent:e.slice(n)}}export{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact};
@@ -1 +1 @@
1
- import{toInputSchema}from"#tools/schema.js";const FINAL_OUTPUT_TOOL_NAME=`final_output`;function buildFinalOutputTool(e){let t=toInputSchema(e);return{description:`Deliver your final answer in the required structure by calling this tool. Call it exactly once, when you are done; do not answer in prose.`,inputSchema:t,outputSchema:t}}export{FINAL_OUTPUT_TOOL_NAME,buildFinalOutputTool};
1
+ import{defineJsonSchema,toModelSchema}from"#tools/schema.js";const FINAL_OUTPUT_TOOL_NAME=`final_output`;function buildFinalOutputTool(e){let t=toModelSchema(defineJsonSchema(e),`input`);return{description:`Deliver your final answer in the required structure by calling this tool. Call it exactly once, when you are done; do not answer in prose.`,inputSchema:t,outputSchema:t}}export{FINAL_OUTPUT_TOOL_NAME,buildFinalOutputTool};
@@ -5,8 +5,6 @@ import type { HarnessSession } from "#harness/types.js";
5
5
  export type RejectedActionBatch = ResolvedInputActionBatch;
6
6
  export declare function findAnsweredApprovalBatches(batches: readonly PendingInputBatch[], responses: readonly InputResponse[]): PendingInputBatch[];
7
7
  export declare function resolveApprovalInputBatches(input: InputDomainResolverInput & {
8
- readonly approvalBatches: readonly PendingInputBatch[];
9
- readonly questionBatches: readonly PendingInputBatch[];
10
8
  readonly resolveApprovalKey?: (request: InputRequest) => string | undefined;
11
9
  }): ResolvePendingInputResult;
12
10
  /** Returns recorded approval keys that have no matching request still pending. */
@@ -1 +1 @@
1
- import{getPendingInputBatches,queueDeferredStepInput,removePendingInputBatches}from"#harness/pending-input-batches.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{TOOL_EXECUTION_DENIED_MESSAGE,buildResolvedInputBatch,resolveApprovalOutcome}from"#harness/input-request-resolution.js";import{appendResolvedBatchTranscript,compactStepInput,finishResolvedInput,responsesForBatches}from"#harness/hitl/pending-input-resolution.js";import{buildQuestionToolResponsePart,findAnsweredQuestionBatches,resolveQuestionBatches}from"#harness/hitl/question-input-requests.js";const APPROVED_TOOLS_KEY=`eve.runtime.hitl.approvedTools`;function findAnsweredApprovalBatches(e,t){let n=new Set(t.map(e=>e.requestId));return e.filter(e=>e.requests.every(e=>!isApprovalRequest(e)||n.has(e.requestId)))}function resolveApprovalInputBatches(e){let t=new Set(findAnsweredApprovalBatches(e.approvalBatches,e.responses)),n=new Set(findAnsweredQuestionBatches(e.questionBatches,e.responses)),r=e.batches.filter(e=>t.has(e)||n.has(e)),i=r.findIndex(e=>e.requests.some(e=>isApprovalRequest(e)));i>=0&&(r=r.slice(0,i+1));let a=e.batches.filter(e=>!r.includes(e)),o=responsesForBatches(e.responses,a);if(r.length===0){if(e.resolvedStepInput?.message===void 0)return{outcome:`unresolved`,messages:[...e.baseHistory],session:queueDeferredStepInput(e.session,compactStepInput(e.resolvedStepInput))};let t=o.length===0?e.session:queueDeferredStepInput(e.session,{inputResponses:o});return{consumedMessage:e.resolvedStepInput.messageConsumed,outcome:`continue`,messages:[...e.baseHistory],session:t}}let s=r.find(e=>e.requests.some(e=>isApprovalRequest(e))),c=r.filter(e=>e!==s),l=resolveQuestionBatches({batches:c,messages:[...e.baseHistory],responses:e.responses}),u=s===void 0?{messages:l,session:e.session}:resolveApprovalBatch({batch:s,messages:l,resolveApprovalKey:e.resolveApprovalKey,responses:e.responses,session:e.session});return finishResolvedInput({deferTurnInput:s!==void 0||e.deferTurnInput,leftoverResponses:o,messages:u.messages,rejectedActions:u.rejectedActions,resolvedInputs:r.flatMap(t=>{let n=buildResolvedInputBatch(t,e.responses);return n===void 0?[]:[n]}),resolvedStepInput:e.resolvedStepInput,session:removePendingInputBatches(u.session,r)})}function getApprovedTools(e,t){let n=readRecordedApprovedTools(e);for(let r of getPendingInputBatches(e.state))for(let e of r.requests)isApprovalRequest(e)&&n.delete(t?.(e)??e.action.toolName);return n}function readRecordedApprovedTools(e){let t=e.state?.[APPROVED_TOOLS_KEY];return Array.isArray(t)?new Set(t):new Set}function resolveApprovalBatch(e){let t=recordApprovedTools({pendingBatch:e.batch,resolveApprovalKey:e.resolveApprovalKey,responses:e.responses,session:e.session}),n=buildApprovalBatchToolResponseParts(e.batch,e.responses);appendResolvedBatchTranscript(e.messages,e.batch,n);let r=buildRejectedActionBatch(e.batch,e.responses);return{messages:e.messages,rejectedActions:r===void 0?void 0:[r],session:t}}function recordApprovedTools(e){let t=new Set(e.responses.filter(e=>e.optionId===`approve`).map(e=>e.requestId)),n=e.pendingBatch.requests.filter(e=>isApprovalRequest(e)&&t.has(e.requestId)).map(t=>e.resolveApprovalKey?.(t)??t.action.toolName);if(n.length===0)return e.session;let r={...e.session.state};return r[APPROVED_TOOLS_KEY]=[...new Set([...readRecordedApprovedTools(e.session),...n])],{...e.session,state:r}}function buildRejectedActionBatch(e,t){if(e.event===void 0)return;let n=new Map(t.map(e=>[e.requestId,e])),r=[];for(let t of e.requests){if(!isApprovalRequest(t))continue;let{approved:e,reason:i,status:a}=resolveApprovalOutcome(n.get(t.requestId));e||r.push({callId:t.action.callId,isError:!0,kind:`tool-result`,output:{approval:{requestId:t.requestId,status:a},code:`TOOL_EXECUTION_DENIED`,message:i??TOOL_EXECUTION_DENIED_MESSAGE,tool:{result:`not_run`}},toolName:t.action.toolName})}return r.length>0?{event:e.event,results:r}:void 0}function buildApprovalBatchToolResponseParts(e,t){let n=new Map(t.map(e=>[e.requestId,e])),r=[];for(let t of e.requests){let e=n.get(t.requestId);switch(t.kind){case`tool-approval`:r.push(...buildApprovalToolResponseParts(t,e));break;case`question`:r.push(buildQuestionToolResponsePart(t,e));break;case`session-limit`:throw TypeError(`Session-limit pending input batches must contain only session-limit requests.`);default:{let e=t.kind;throw TypeError(`Unhandled pending input request kind: ${String(e)}`)}}}return r}function buildApprovalToolResponseParts(e,t){let{approved:n,reason:r}=resolveApprovalOutcome(t),i=[{approvalId:e.requestId,approved:n,reason:r,type:`tool-approval-response`}];return n||i.push({output:{type:`execution-denied`,reason:r},toolCallId:e.action.callId,toolName:e.action.toolName,type:`tool-result`}),i}export{findAnsweredApprovalBatches,getApprovedTools,resolveApprovalInputBatches};
1
+ import{getPendingInputBatches,queueDeferredStepInput,removePendingInputBatches}from"#harness/pending-input-batches.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{TOOL_EXECUTION_DENIED_MESSAGE,buildResolvedInputBatch,resolveApprovalOutcome}from"#harness/input-request-resolution.js";import{appendResolvedBatchTranscript,compactStepInput,finishResolvedInput,responsesForBatches}from"#harness/hitl/pending-input-resolution.js";const APPROVED_TOOLS_KEY=`eve.runtime.hitl.approvedTools`;function findAnsweredApprovalBatches(e,t){let n=new Set(t.map(e=>e.requestId));return e.filter(e=>e.requests.every(e=>!isApprovalRequest(e)||n.has(e.requestId)))}function resolveApprovalInputBatches(e){let t=new Set(findAnsweredApprovalBatches(e.batches,e.responses)),n=e.batches.find(e=>t.has(e)),r=e.batches.filter(e=>e!==n),i=responsesForBatches(e.responses,r);if(n===void 0){if(e.resolvedStepInput?.message===void 0)return{outcome:`unresolved`,messages:[...e.baseHistory],session:queueDeferredStepInput(e.session,compactStepInput(e.resolvedStepInput))};let t=i.length===0?e.session:queueDeferredStepInput(e.session,{inputResponses:i});return{consumedMessage:e.resolvedStepInput.messageConsumed,outcome:`continue`,messages:[...e.baseHistory],session:t}}let a=resolveApprovalBatch({batch:n,messages:[...e.baseHistory],resolveApprovalKey:e.resolveApprovalKey,responses:e.responses,session:e.session}),o=buildResolvedInputBatch(n,e.responses);return finishResolvedInput({deferTurnInput:!0,leftoverResponses:i,messages:a.messages,rejectedActions:a.rejectedActions,resolvedInputs:o===void 0?[]:[o],resolvedStepInput:e.resolvedStepInput,session:removePendingInputBatches(a.session,[n])})}function getApprovedTools(e,t){let n=readRecordedApprovedTools(e);for(let r of getPendingInputBatches(e.state))for(let e of r.requests)isApprovalRequest(e)&&n.delete(t?.(e)??e.action.toolName);return n}function readRecordedApprovedTools(e){let t=e.state?.[APPROVED_TOOLS_KEY];return Array.isArray(t)?new Set(t):new Set}function resolveApprovalBatch(e){let t=recordApprovedTools({pendingBatch:e.batch,resolveApprovalKey:e.resolveApprovalKey,responses:e.responses,session:e.session}),n=buildApprovalBatchToolResponseParts(e.batch,e.responses);appendResolvedBatchTranscript(e.messages,e.batch,n);let r=buildRejectedActionBatch(e.batch,e.responses);return{messages:e.messages,rejectedActions:r===void 0?void 0:[r],session:t}}function recordApprovedTools(e){let t=new Set(e.responses.filter(e=>e.optionId===`approve`).map(e=>e.requestId)),n=e.pendingBatch.requests.filter(e=>isApprovalRequest(e)&&t.has(e.requestId)).map(t=>e.resolveApprovalKey?.(t)??t.action.toolName);if(n.length===0)return e.session;let r={...e.session.state};return r[APPROVED_TOOLS_KEY]=[...new Set([...readRecordedApprovedTools(e.session),...n])],{...e.session,state:r}}function buildRejectedActionBatch(e,t){if(e.event===void 0)return;let n=new Map(t.map(e=>[e.requestId,e])),r=[];for(let t of e.requests){if(!isApprovalRequest(t))continue;let{approved:e,reason:i,status:a}=resolveApprovalOutcome(n.get(t.requestId));e||r.push({callId:t.action.callId,isError:!0,kind:`tool-result`,output:{approval:{requestId:t.requestId,status:a},code:`TOOL_EXECUTION_DENIED`,message:i??TOOL_EXECUTION_DENIED_MESSAGE,tool:{result:`not_run`}},toolName:t.action.toolName})}return r.length>0?{event:e.event,results:r}:void 0}function buildApprovalBatchToolResponseParts(e,t){let n=new Map(t.map(e=>[e.requestId,e])),r=[];for(let t of e.requests){let e=n.get(t.requestId);switch(t.kind){case`tool-approval`:r.push(...buildApprovalToolResponseParts(t,e));break;case`question`:case`session-limit`:throw TypeError(`Approval pending input batches cannot contain a "${t.kind}" request.`);default:{let e=t.kind;throw TypeError(`Unhandled pending input request kind: ${String(e)}`)}}}return r}function buildApprovalToolResponseParts(e,t){let{approved:n,reason:r}=resolveApprovalOutcome(t),i=[{approvalId:e.requestId,approved:n,reason:r,type:`tool-approval-response`}];return n||i.push({output:{type:`execution-denied`,reason:r},toolCallId:e.action.callId,toolName:e.action.toolName,type:`tool-result`}),i}export{findAnsweredApprovalBatches,getApprovedTools,resolveApprovalInputBatches};
@@ -1,15 +1,5 @@
1
- import type { ContentPart, ModelMessage, ToolSet, TypedToolCall } from "ai";
2
- import type { HarnessToolMap } from "#harness/types.js";
1
+ import type { ContentPart, ModelMessage, ToolSet } from "ai";
3
2
  import type { InputRequest } from "#shared/input.js";
4
- /**
5
- * Extracts question input requests from tool calls that target the
6
- * `ask_question` framework tool.
7
- */
8
- export declare function extractQuestionInputRequests(input: {
9
- readonly excludedCallIds: ReadonlySet<string>;
10
- readonly toolCalls: readonly TypedToolCall<ToolSet>[];
11
- readonly tools: HarnessToolMap;
12
- }): InputRequest[];
13
3
  /**
14
4
  * Extracts tool approval input requests from AI SDK content parts that
15
5
  * contain `tool-approval-request` entries.
@@ -19,12 +9,11 @@ export declare function extractToolApprovalInputRequests(input: {
19
9
  readonly excludedCallIds?: ReadonlySet<string>;
20
10
  }): InputRequest[];
21
11
  /**
22
- * Recovers request metadata for submitted input response IDs from model
23
- * history. The newest occurrence wins so compacted or repeated history does
24
- * not replace the request that is closest to the current turn.
12
+ * Recovers approval request metadata for submitted input response IDs from
13
+ * model history. The newest occurrence wins so compacted or repeated history
14
+ * does not replace the request that is closest to the current turn.
25
15
  */
26
16
  export declare function extractHistoricalInputRequests(input: {
27
17
  readonly history: readonly ModelMessage[];
28
18
  readonly requestIds: ReadonlySet<string>;
29
- readonly tools: HarnessToolMap;
30
19
  }): ReadonlyMap<string, InputRequest>;
@@ -1 +1 @@
1
- import{boolean,literal,object,string,unknown}from"../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/schemas.js";import"../node_modules/.pnpm/zod@4.5.4/node_modules/zod/index.js";import{createRuntimeToolCallActionFromToolCall}from"#harness/tool-call-action.js";const ToolCallDescriptorSchema=object({input:unknown(),toolCallId:string(),toolName:string()}),PersistedToolCallSchema=ToolCallDescriptorSchema.extend({type:literal(`tool-call`)}),ToolApprovalRequestSchema=object({approvalId:string(),isAutomatic:boolean().optional().catch(void 0),toolCall:ToolCallDescriptorSchema.optional().catch(void 0),toolCallId:string().optional().catch(void 0),type:literal(`tool-approval-request`)});function extractQuestionInputRequests(e){return extractQuestionRequests(e)}function extractQuestionRequests(e){let t=[];for(let n of e.toolCalls){let r=e.tools.get(n.toolName)?.behavior?.handling;if(r?.kind!==`request-input`||r.request!==`question`||e.excludedCallIds.has(n.toolCallId))continue;let i=createRuntimeToolCallActionFromToolCall({toolCall:n}),a=i.input,o={action:i,display:`text`,kind:`question`,prompt:String(a.prompt),requestId:i.callId};a.allowFreeform!==void 0&&(o.allowFreeform=a.allowFreeform),a.options!==void 0&&(o.options=a.options,o.display=`select`),t.push(o)}return t}function extractToolApprovalInputRequests(e){return extractApprovalRequests(e)}function extractApprovalRequests(e){let t=[],n=new Map;for(let t of e.content){let e=PersistedToolCallSchema.safeParse(t);e.success&&n.set(e.data.toolCallId,e.data)}for(let r of e.content){let i=ToolApprovalRequestSchema.safeParse(r);if(!i.success)continue;let a=i.data;if(e.includedRequestIds!==void 0&&!e.includedRequestIds.has(a.approvalId)||a.isAutomatic===!0)continue;let o=a.toolCall??(a.toolCallId===void 0?void 0:n.get(a.toolCallId));o!==void 0&&(e.excludedCallIds?.has(o.toolCallId)||t.push({action:createRuntimeToolCallActionFromToolCall({toolCall:o}),allowFreeform:!1,display:`confirmation`,kind:`tool-approval`,options:[{id:`approve`,label:`Approve`},{id:`cancel`,label:`Cancel`}],prompt:`Approve tool call: ${o.toolName}`,requestId:a.approvalId}))}return t}function extractHistoricalInputRequests(e){let t=new Map;for(let n=e.history.length-1;n>=0;--n){let r=e.history[n];if(r?.role!==`assistant`||!Array.isArray(r.content))continue;let i=r.content.flatMap(t=>{let n=PersistedToolCallSchema.safeParse(t);return n.success&&e.requestIds.has(n.data.toolCallId)?[n.data]:[]}),a=[...extractQuestionRequests({excludedCallIds:new Set,toolCalls:i,tools:e.tools}),...extractApprovalRequests({content:r.content,includedRequestIds:e.requestIds})];for(let n of a)e.requestIds.has(n.requestId)&&!t.has(n.requestId)&&t.set(n.requestId,n);if(t.size===e.requestIds.size)break}return t}export{extractHistoricalInputRequests,extractQuestionInputRequests,extractToolApprovalInputRequests};
1
+ import{z}from"#compiled/zod/index.js";import{createRuntimeToolCallActionFromToolCall}from"#harness/tool-call-action.js";const ToolCallDescriptorSchema=z.object({input:z.unknown(),toolCallId:z.string(),toolName:z.string()}),PersistedToolCallSchema=ToolCallDescriptorSchema.extend({type:z.literal(`tool-call`)}),ToolApprovalRequestSchema=z.object({approvalId:z.string(),isAutomatic:z.boolean().optional().catch(void 0),toolCall:ToolCallDescriptorSchema.optional().catch(void 0),toolCallId:z.string().optional().catch(void 0),type:z.literal(`tool-approval-request`)});function extractToolApprovalInputRequests(e){return extractApprovalRequests(e)}function extractApprovalRequests(e){let t=[],n=new Map;for(let t of e.content){let e=PersistedToolCallSchema.safeParse(t);e.success&&n.set(e.data.toolCallId,e.data)}for(let r of e.content){let i=ToolApprovalRequestSchema.safeParse(r);if(!i.success)continue;let a=i.data;if(e.includedRequestIds!==void 0&&!e.includedRequestIds.has(a.approvalId)||a.isAutomatic===!0)continue;let o=a.toolCall??(a.toolCallId===void 0?void 0:n.get(a.toolCallId));o!==void 0&&(e.excludedCallIds?.has(o.toolCallId)||t.push({action:createRuntimeToolCallActionFromToolCall({toolCall:o}),allowFreeform:!1,display:`confirmation`,kind:`tool-approval`,options:[{id:`approve`,label:`Approve`},{id:`cancel`,label:`Cancel`}],prompt:`Approve tool call: ${o.toolName}`,requestId:a.approvalId}))}return t}function extractHistoricalInputRequests(e){let t=new Map;for(let n=e.history.length-1;n>=0;--n){let r=e.history[n];if(r?.role!==`assistant`||!Array.isArray(r.content))continue;let i=extractApprovalRequests({content:r.content,includedRequestIds:e.requestIds});for(let n of i)e.requestIds.has(n.requestId)&&!t.has(n.requestId)&&t.set(n.requestId,n);if(t.size===e.requestIds.size)break}return t}export{extractHistoricalInputRequests,extractToolApprovalInputRequests};
@@ -1,23 +1,3 @@
1
- /**
2
- * Shape and behavior classification for pending input requests, shared by
3
- * the harness resolution path and protocol clients (e.g. the dev TUI's
4
- * rendering decisions).
5
- */
6
1
  import type { InputRequest } from "#shared/input.js";
7
2
  /** Returns true when the request gates an AI SDK tool call. */
8
3
  export declare function isApprovalRequest(request: InputRequest): boolean;
9
- /**
10
- * Behavioral class of a pending input request.
11
- *
12
- * `"required"` — the request must be explicitly answered before the turn can
13
- * move on. While one is unanswered, any other arriving input is queued and
14
- * replayed on the step after the answer. The pending batch never churns, so
15
- * the request ids the user is answering stay valid.
16
- *
17
- * `"dismissable"` — a plain follow-up message counts as the user moving on.
18
- * The request resolves as a real `tool-result` with `status: "ignored"` and
19
- * the model continues with the message in the same step.
20
- */
21
- export type InputRequestClass = "dismissable" | "required";
22
- /** Classifies one pending request; see {@link InputRequestClass}. */
23
- export declare function classifyInputRequest(request: InputRequest): InputRequestClass;
@@ -1 +1 @@
1
- function isApprovalRequest(e){return e.kind===`tool-approval`}function classifyInputRequest(e){switch(e.kind){case`tool-approval`:return`required`;case`session-limit`:return`required`;case`question`:return`dismissable`;default:return e.kind}}export{classifyInputRequest,isApprovalRequest};
1
+ function isApprovalRequest(e){return e.kind===`tool-approval`}export{isApprovalRequest};
@@ -21,7 +21,7 @@ export declare function hasPendingApprovalBatch(session: HarnessSession): boolea
21
21
  *
22
22
  * Ordered batches remain independently answerable. Session-limit prompts own
23
23
  * resolution while open; approval batches preserve AI SDK's tail-message
24
- * requirement; question-only batches retain dismiss-and-continue behavior.
24
+ * requirement.
25
25
  */
26
26
  export declare function resolvePendingInput(input: {
27
27
  /** The turn currently advancing through the harness tool loop. */
@@ -1 +1 @@
1
- import{readClientContext}from"#internal/client-context.js";import{resolveTextToResponses}from"#channel/resolve-text.js";import{appendPendingInputBatch,consumeDeferredStepInput,getDeferredStepInput,getPendingInputBatches,getPendingInputRequestIds,hasDeferredStepInput,hasPendingInputBatch,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{resolveToolCallInputObject}from"#harness/coordination.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{compactStepInput}from"#harness/hitl/pending-input-resolution.js";import{findAnsweredQuestionBatches,resolveQuestionOnlyInputBatches}from"#harness/hitl/question-input-requests.js";import{hasTailApprovalResponse}from"#harness/current-messages.js";import{findAnsweredApprovalBatches,getApprovedTools,resolveApprovalInputBatches}from"#harness/hitl/approval-input-requests.js";import{clearPendingSessionLimitPrompt,isSessionLimitInputBatch,resolveSessionLimitInput}from"#harness/hitl/session-limit-input-requests.js";function hasStepInput(e){return e===void 0?!1:e.message!==void 0||(e.inputResponses?.length??0)>0}function hasRunnableDeferredStepInput(e){let t=getDeferredStepInput(e);if(t===void 0)return!1;if(t.message!==void 0||(t.context?.length??0)>0||readClientContext(t)!==void 0||t.outputSchema!==void 0||(t.runtimeActionResults?.length??0)>0)return!0;let n=[...t.inputResponses??[],...(t.attributedInputResponses??[]).map(({response:e})=>e)];if(n.length===0)return!1;let r=getPendingInputBatches(e.state),i=routePendingInput(r);switch(i.kind){case`session-limit`:return i.batch.requests.every(e=>n.some(t=>t.requestId===e.requestId));case`with-approvals`:return findAnsweredApprovalBatches(i.approvalBatches,n).length>0||findAnsweredQuestionBatches(i.questionBatches,n).length>0;case`questions-only`:return findAnsweredQuestionBatches(r,n).length>0}}function hasPendingApprovalBatch(e){return getPendingInputBatches(e.state).some(e=>e.requests.some(e=>isApprovalRequest(e)))}function resolvePendingInput(e){let t=[...e.history??e.session.history],n=getPendingInputBatches(e.session.state);if(n.length===0)return{outcome:`continue`,messages:t,session:e.session};let r=routePendingInput(n),i=hasTailApprovalResponse(t),a=r.kind===`session-limit`?r.batch:n.length===1?n[0]:void 0,o=a===void 0?e.stepInput:resolveTextMessageInput(a,e.stepInput),s=canonicalizeInputResponses(o?.inputResponses??[]);if(e.internalStep===!0&&canContinuePastHistoricalInput({activeTurnId:e.activeTurnId,batches:n,responses:s,route:r})&&o?.message===void 0)return{outcome:`continue`,messages:t,session:o===void 0?e.session:queueDeferredStepInput(e.session,compactStepInput(o))};if(r.kind===`with-approvals`&&e.deferMessagesWhileApprovalsPending===!0&&o?.message!==void 0&&findAnsweredApprovalBatches(r.approvalBatches,s).length===0)return{deferredMessage:!0,outcome:`unresolved`,messages:t,session:queueDeferredStepInput(e.session,compactStepInput(o))};if(s.length===0&&o?.message===void 0){let n=compactStepInput(o);return{outcome:`unresolved`,messages:t,session:n.context!==void 0||readClientContext(n)!==void 0||n.outputSchema!==void 0?queueDeferredStepInput(e.session,n):e.session}}let c={baseHistory:t,batches:n,deferTurnInput:i,resolvedStepInput:o,responses:s,session:e.session};switch(r.kind){case`session-limit`:return resolveSessionLimitInput({...c,pendingBatch:r.batch});case`with-approvals`:return resolveApprovalInputBatches({...c,approvalBatches:r.approvalBatches,questionBatches:r.questionBatches,resolveApprovalKey:e.resolveApprovalKey});case`questions-only`:return resolveQuestionOnlyInputBatches(c)}}function canContinuePastHistoricalInput(e){return e.activeTurnId===void 0||e.route.kind===`session-limit`||e.responses.length>0&&(e.route.kind!==`with-approvals`||findAnsweredApprovalBatches(e.route.approvalBatches,e.responses).length>0||findAnsweredQuestionBatches(e.route.questionBatches,e.responses).length>0)?!1:e.batches.every(t=>t.event!==void 0&&t.event.turnId!==e.activeTurnId)}function routePendingInput(e){let t=e.map(e=>({batch:e,domain:classifyPendingInputBatch(e)})),n=t.find(({domain:e})=>e===`session-limit`)?.batch;if(n!==void 0)return{batch:n,kind:`session-limit`};let r=t.filter(({domain:e})=>e===`approval`).map(({batch:e})=>e);if(r.length>0){let t=new Set(r);return{approvalBatches:r,kind:`with-approvals`,questionBatches:e.filter(e=>!t.has(e))}}return{kind:`questions-only`}}function classifyPendingInputBatch(e){for(let t of e.requests)switch(t.kind){case`question`:case`session-limit`:case`tool-approval`:break;default:{let e=t.kind;throw TypeError(`Unhandled pending input request kind: ${String(e)}`)}}return isSessionLimitInputBatch(e)?`session-limit`:e.requests.some(e=>isApprovalRequest(e))?`approval`:`question`}function canonicalizeInputResponses(e){let t=new Map;for(let n of e)t.set(n.requestId,n);return[...t.values()]}function resolveTextMessageInput(e,t){if(typeof t?.message!=`string`)return t;let n=new Set(e.requests.map(e=>e.requestId));if(t.inputResponses?.some(e=>n.has(e.requestId)))return t;let r=new Set(e.responseAuthRequiredRequestIds??[]),i=e.requests.filter(e=>!r.has(e.requestId)),a=resolveTextToResponses(t.message,i);return a.length===0?t:compactStepInput({...t,inputResponses:[...t.inputResponses??[],...a],messageConsumed:!0,message:void 0})}function createRuntimeToolCallActionFromToolCall(e){return{callId:e.toolCall.toolCallId,input:resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName}),kind:`tool-call`,toolName:e.toolCall.toolName}}export{appendPendingInputBatch,clearPendingSessionLimitPrompt,consumeDeferredStepInput,createRuntimeToolCallActionFromToolCall,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasPendingInputBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput};
1
+ import{readClientContext}from"#internal/client-context.js";import{resolveTextToResponses}from"#channel/resolve-text.js";import{appendPendingInputBatch,consumeDeferredStepInput,getDeferredStepInput,getPendingInputBatches,getPendingInputRequestIds,hasDeferredStepInput,hasPendingInputBatch,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{resolveToolCallInputObject}from"#harness/coordination.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{compactStepInput}from"#harness/hitl/pending-input-resolution.js";import{hasTailApprovalResponse}from"#harness/current-messages.js";import{findAnsweredApprovalBatches,getApprovedTools,resolveApprovalInputBatches}from"#harness/hitl/approval-input-requests.js";import{clearPendingSessionLimitPrompt,isSessionLimitInputBatch,resolveSessionLimitInput}from"#harness/hitl/session-limit-input-requests.js";function hasStepInput(e){return e===void 0?!1:e.message!==void 0||(e.inputResponses?.length??0)>0}function hasRunnableDeferredStepInput(e){let t=getDeferredStepInput(e);if(t===void 0)return!1;if(t.message!==void 0||(t.context?.length??0)>0||readClientContext(t)!==void 0||t.outputSchema!==void 0||(t.runtimeActionResults?.length??0)>0)return!0;let n=[...t.inputResponses??[],...(t.attributedInputResponses??[]).map(({response:e})=>e)];if(n.length===0)return!1;let r=getPendingInputBatches(e.state),i=routePendingInput(r);switch(i.kind){case`session-limit`:return i.batch.requests.every(e=>n.some(t=>t.requestId===e.requestId));case`approvals`:return findAnsweredApprovalBatches(r,n).length>0}}function hasPendingApprovalBatch(e){return getPendingInputBatches(e.state).some(e=>e.requests.some(e=>isApprovalRequest(e)))}function resolvePendingInput(e){let t=[...e.history??e.session.history],n=getPendingInputBatches(e.session.state);if(n.length===0)return{outcome:`continue`,messages:t,session:e.session};let r=routePendingInput(n),i=hasTailApprovalResponse(t),a=r.kind===`session-limit`?r.batch:n.length===1?n[0]:void 0,o=a===void 0?e.stepInput:resolveTextMessageInput(a,e.stepInput),s=canonicalizeInputResponses(o?.inputResponses??[]);if(e.internalStep===!0&&canContinuePastHistoricalInput({activeTurnId:e.activeTurnId,batches:n,responses:s,route:r})&&o?.message===void 0)return{outcome:`continue`,messages:t,session:o===void 0?e.session:queueDeferredStepInput(e.session,compactStepInput(o))};if(r.kind===`approvals`&&e.deferMessagesWhileApprovalsPending===!0&&o?.message!==void 0&&findAnsweredApprovalBatches(n,s).length===0)return{deferredMessage:!0,outcome:`unresolved`,messages:t,session:queueDeferredStepInput(e.session,compactStepInput(o))};if(s.length===0&&o?.message===void 0){let n=compactStepInput(o);return{outcome:`unresolved`,messages:t,session:n.context!==void 0||readClientContext(n)!==void 0||n.outputSchema!==void 0?queueDeferredStepInput(e.session,n):e.session}}let c={baseHistory:t,batches:n,deferTurnInput:i,resolvedStepInput:o,responses:s,session:e.session};switch(r.kind){case`session-limit`:return resolveSessionLimitInput({...c,pendingBatch:r.batch});case`approvals`:return resolveApprovalInputBatches({...c,resolveApprovalKey:e.resolveApprovalKey})}}function canContinuePastHistoricalInput(e){return e.activeTurnId===void 0||e.route.kind===`session-limit`||e.responses.length>0&&findAnsweredApprovalBatches(e.batches,e.responses).length>0?!1:e.batches.every(t=>t.event!==void 0&&t.event.turnId!==e.activeTurnId)}function routePendingInput(e){let t=e.find(e=>isSessionLimitInputBatch(e));if(t!==void 0)return{batch:t,kind:`session-limit`};for(let t of e)for(let e of t.requests)if(!isApprovalRequest(e))throw TypeError(`Unhandled pending input request kind: ${e.kind}`);return{kind:`approvals`}}function canonicalizeInputResponses(e){let t=new Map;for(let n of e)t.set(n.requestId,n);return[...t.values()]}function resolveTextMessageInput(e,t){if(typeof t?.message!=`string`)return t;let n=new Set(e.requests.map(e=>e.requestId));if(t.inputResponses?.some(e=>n.has(e.requestId)))return t;let r=new Set(e.responseAuthRequiredRequestIds??[]),i=e.requests.filter(e=>!r.has(e.requestId)),a=resolveTextToResponses(t.message,i);return a.length===0?t:compactStepInput({...t,inputResponses:[...t.inputResponses??[],...a],messageConsumed:!0,message:void 0})}function createRuntimeToolCallActionFromToolCall(e){return{callId:e.toolCall.toolCallId,input:resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName}),kind:`tool-call`,toolName:e.toolCall.toolName}}export{appendPendingInputBatch,clearPendingSessionLimitPrompt,consumeDeferredStepInput,createRuntimeToolCallActionFromToolCall,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasPendingInputBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput};
@@ -23,7 +23,7 @@ export interface PendingInputBatch {
23
23
  }
24
24
  /**
25
25
  * Returns true when the session holds at least one pending HITL batch
26
- * (tool approvals or `ask_question` prompts).
26
+ * (tool approvals or a session-limit continuation prompt).
27
27
  */
28
28
  export declare function hasPendingInputBatch(state: SessionStateMap | undefined): boolean;
29
29
  /**
@@ -1,6 +1,6 @@
1
1
  import type { SubagentInputRequestHookPayload } from "#channel/types.js";
2
2
  import type { HarnessSession, SessionStateMap } from "#harness/types.js";
3
- import type { InputRequestKind } from "#shared/input.js";
3
+ import { type InputOption, type InputRequestKind } from "#shared/input.js";
4
4
  import { type SessionInboxAddress } from "#execution/session-inbox/address.js";
5
5
  /**
6
6
  * Marks a continuation token as a bare hook a workflow tool run created for one
@@ -8,6 +8,14 @@ import { type SessionInboxAddress } from "#execution/session-inbox/address.js";
8
8
  */
9
9
  export interface AnswerHookRoute {
10
10
  readonly runId: string;
11
+ /** Present for a `ctx.ask()` question: what a plain-text message may answer or dismiss. */
12
+ readonly question?: AnswerHookQuestion;
13
+ }
14
+ /** The parts of a `ctx.ask()` request a plain-text message is resolved against. */
15
+ export interface AnswerHookQuestion {
16
+ readonly allowFreeform?: boolean;
17
+ readonly dismissible?: boolean;
18
+ readonly options?: readonly InputOption[];
11
19
  }
12
20
  /** Routing and control metadata for one descendant-owned input request. */
13
21
  export interface ProxyInputRequest {
@@ -1 +1 @@
1
- import{isLoopbackHostname}from"#shared/network-address.js";import{isSessionInboxAddress}from"#execution/session-inbox/address.js";const PROXY_INPUT_REQUESTS_KEY=`eve.runtime.proxyInputRequests`,PROXY_INPUT_REQUEST_KINDS={question:!0,"session-limit":!0,"tool-approval":!0};function createTaskInputRequestId(e,t){return`${e}:${t}`}function getProxyInputRequests(e){return new Map(Object.entries(readMap(e)))}function hasProxyInputRequests(e){for(let t of Object.keys(readMap(e)))return!0;return!1}function upsertProxyInputRequests(e){return{...e.session,state:upsertProxyInputRequestState({entries:e.entries,forChildContinuationToken:e.forChildContinuationToken,state:e.session.state})}}function upsertProxyInputRequestState(e){let t={};for(let[n,r]of Object.entries(readMap(e.state)))r.childContinuationToken!==e.forChildContinuationToken&&(t[n]=r);for(let[n,r]of e.entries)t[n]=r;let n={...e.state};return Object.keys(t).length===0?delete n[PROXY_INPUT_REQUESTS_KEY]:n[PROXY_INPUT_REQUESTS_KEY]=t,Object.keys(n).length>0?n:void 0}function clearProxyInputRequestsForChild(e,t){return clearProxyInputRequestsWhere(e,e=>e.childContinuationToken===t)}function clearProxyInputRequestsWhere(e,t){let n=readMap(e.state),r={},i=!1;for(let[e,a]of Object.entries(n)){if(t(a)){i=!0;continue}r[e]=a}return i?writeMap(e,r):e}function retireProxyInputRequests(e,t){let n={...readMap(e.state)},r=!1;for(let e of t)Object.hasOwn(n,e)&&(delete n[e],r=!0);return r?writeMap(e,n):e}function clearProxyInputRequestsForTask(e,t){return clearProxyInputRequestsWhere(e,e=>e.taskId===t)}function clearAllProxyInputRequests(e){return hasProxyInputRequests(e.state)?writeMap(e,{}):e}function toProxyInputRequestEntries(e,t){let n={approvalRequestIds:e.event.requests.flatMap(e=>e.kind===`tool-approval`?[e.requestId]:[]),requestIds:e.event.requests.map(e=>e.requestId)};return e.event.requests.map(r=>{let i={batch:n,childContinuationToken:e.childContinuationToken,kind:r.kind};return t!==void 0&&(i.taskId=t),e.childSessionInbox?.sessionId===e.childSessionId&&(i.childSessionInbox=e.childSessionInbox),[r.requestId,i]})}function readMap(e){let t=e?.[PROXY_INPUT_REQUESTS_KEY];if(typeof t!=`object`||!t||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){let t=parseProxyInputRequest(r,e);t!==void 0&&(n[e]=t)}return n}function writeMap(e,t){let n={...e.state};return Object.keys(t).length===0?(delete n[PROXY_INPUT_REQUESTS_KEY],{...e,state:Object.keys(n).length>0?n:void 0}):(n[PROXY_INPUT_REQUESTS_KEY]=t,{...e,state:n})}function parseProxyInputRequest(e,t){if(typeof e!=`object`||!e||Array.isArray(e)||!(`childContinuationToken`in e)||!(`kind`in e)||typeof e.childContinuationToken!=`string`||!isInputRequestKind(e.kind))return;let n=`taskId`in e?e.taskId:void 0,r=`childRequestId`in e?e.childRequestId:void 0,i=`childResponseUrl`in e?e.childResponseUrl:void 0;if(n!==void 0&&(typeof n!=`string`||n.length===0)||r!==void 0&&(typeof r!=`string`||r.length===0)||n===void 0!=(r===void 0)||i!==void 0&&(typeof i!=`string`||!isAllowedChildResponseUrl(i)))return;let a=`batch`in e?parseProxyInputRequestBatch(e.batch):void 0,o=`answerHook`in e?parseAnswerHookRoute(e.answerHook):void 0;if(`answerHook`in e&&o===void 0)return;let s=`childSessionInbox`in e?e.childSessionInbox:void 0;if(s!==void 0&&!isSessionInboxAddress(s))return;let c={childContinuationToken:e.childContinuationToken,kind:e.kind};return o!==void 0&&(c.answerHook=o),s!==void 0&&(c.childSessionInbox=s),a!==void 0&&a.requestIds.includes(t)&&(c.batch=a),typeof r==`string`&&(c.childRequestId=r),typeof i==`string`&&(c.childResponseUrl=i),typeof n==`string`&&(c.taskId=n),c}function parseAnswerHookRoute(e){if(typeof e==`object`&&e&&`runId`in e)return typeof e.runId==`string`&&e.runId.length>0?{runId:e.runId}:void 0}function parseProxyInputRequestBatch(e){if(typeof e!=`object`||!e||Array.isArray(e)||!(`approvalRequestIds`in e)||!(`requestIds`in e)||!isStringArray(e.approvalRequestIds)||!isStringArray(e.requestIds))return;let t=new Set(e.requestIds);if(!(t.size!==e.requestIds.length||e.approvalRequestIds.some(e=>!t.has(e))))return{approvalRequestIds:e.approvalRequestIds,requestIds:e.requestIds}}function isStringArray(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function isAllowedChildResponseUrl(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`https:`||t.protocol===`http:`&&isLoopbackHostname(t.hostname)}function isInputRequestKind(e){return typeof e==`string`&&Object.hasOwn(PROXY_INPUT_REQUEST_KINDS,e)}export{clearAllProxyInputRequests,clearProxyInputRequestsForChild,clearProxyInputRequestsForTask,clearProxyInputRequestsWhere,createTaskInputRequestId,getProxyInputRequests,hasProxyInputRequests,retireProxyInputRequests,toProxyInputRequestEntries,upsertProxyInputRequestState,upsertProxyInputRequests};
1
+ import{isLoopbackHostname}from"#shared/network-address.js";import{isSessionInboxAddress}from"#execution/session-inbox/address.js";import{inputOptionSchema}from"#shared/input.js";const PROXY_INPUT_REQUESTS_KEY=`eve.runtime.proxyInputRequests`,PROXY_INPUT_REQUEST_KINDS={question:!0,"session-limit":!0,"tool-approval":!0};function createTaskInputRequestId(e,t){return`${e}:${t}`}function getProxyInputRequests(e){return new Map(Object.entries(readMap(e)))}function hasProxyInputRequests(e){for(let t of Object.keys(readMap(e)))return!0;return!1}function upsertProxyInputRequests(e){return{...e.session,state:upsertProxyInputRequestState({entries:e.entries,forChildContinuationToken:e.forChildContinuationToken,state:e.session.state})}}function upsertProxyInputRequestState(e){let t={};for(let[n,r]of Object.entries(readMap(e.state)))r.childContinuationToken!==e.forChildContinuationToken&&(t[n]=r);for(let[n,r]of e.entries)t[n]=r;let n={...e.state};return Object.keys(t).length===0?delete n[PROXY_INPUT_REQUESTS_KEY]:n[PROXY_INPUT_REQUESTS_KEY]=t,Object.keys(n).length>0?n:void 0}function clearProxyInputRequestsForChild(e,t){return clearProxyInputRequestsWhere(e,e=>e.childContinuationToken===t)}function clearProxyInputRequestsWhere(e,t){let n=readMap(e.state),r={},i=!1;for(let[e,a]of Object.entries(n)){if(t(a)){i=!0;continue}r[e]=a}return i?writeMap(e,r):e}function retireProxyInputRequests(e,t){let n={...readMap(e.state)},r=!1;for(let e of t)Object.hasOwn(n,e)&&(delete n[e],r=!0);return r?writeMap(e,n):e}function clearProxyInputRequestsForTask(e,t){return clearProxyInputRequestsWhere(e,e=>e.taskId===t)}function clearAllProxyInputRequests(e){return hasProxyInputRequests(e.state)?writeMap(e,{}):e}function toProxyInputRequestEntries(e,t){let n={approvalRequestIds:e.event.requests.flatMap(e=>e.kind===`tool-approval`?[e.requestId]:[]),requestIds:e.event.requests.map(e=>e.requestId)};return e.event.requests.map(r=>{let i={batch:n,childContinuationToken:e.childContinuationToken,kind:r.kind};return t!==void 0&&(i.taskId=t),e.childSessionInbox?.sessionId===e.childSessionId&&(i.childSessionInbox=e.childSessionInbox),[r.requestId,i]})}function readMap(e){let t=e?.[PROXY_INPUT_REQUESTS_KEY];if(typeof t!=`object`||!t||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){let t=parseProxyInputRequest(r,e);t!==void 0&&(n[e]=t)}return n}function writeMap(e,t){let n={...e.state};return Object.keys(t).length===0?(delete n[PROXY_INPUT_REQUESTS_KEY],{...e,state:Object.keys(n).length>0?n:void 0}):(n[PROXY_INPUT_REQUESTS_KEY]=t,{...e,state:n})}function parseProxyInputRequest(e,t){if(typeof e!=`object`||!e||Array.isArray(e)||!(`childContinuationToken`in e)||!(`kind`in e)||typeof e.childContinuationToken!=`string`||!isInputRequestKind(e.kind))return;let n=`taskId`in e?e.taskId:void 0,r=`childRequestId`in e?e.childRequestId:void 0,i=`childResponseUrl`in e?e.childResponseUrl:void 0;if(n!==void 0&&(typeof n!=`string`||n.length===0)||r!==void 0&&(typeof r!=`string`||r.length===0)||n===void 0!=(r===void 0)||i!==void 0&&(typeof i!=`string`||!isAllowedChildResponseUrl(i)))return;let a=`batch`in e?parseProxyInputRequestBatch(e.batch):void 0,o=`answerHook`in e?parseAnswerHookRoute(e.answerHook):void 0;if(`answerHook`in e&&o===void 0)return;let s=`childSessionInbox`in e?e.childSessionInbox:void 0;if(s!==void 0&&!isSessionInboxAddress(s))return;let c={childContinuationToken:e.childContinuationToken,kind:e.kind};return o!==void 0&&(c.answerHook=o),s!==void 0&&(c.childSessionInbox=s),a!==void 0&&a.requestIds.includes(t)&&(c.batch=a),typeof r==`string`&&(c.childRequestId=r),typeof i==`string`&&(c.childResponseUrl=i),typeof n==`string`&&(c.taskId=n),c}function parseAnswerHookRoute(e){if(typeof e!=`object`||!e||!(`runId`in e)||typeof e.runId!=`string`||e.runId.length===0)return;if(!(`question`in e)||e.question===void 0)return{runId:e.runId};let t=parseAnswerHookQuestion(e.question);return t===void 0?void 0:{question:t,runId:e.runId}}function parseAnswerHookQuestion(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t={};for(let n of[`allowFreeform`,`dismissible`]){let r=Reflect.get(e,n);if(r!==void 0){if(typeof r!=`boolean`)return;t[n]=r}}let n=Reflect.get(e,`options`);if(n!==void 0){let e=inputOptionSchema.array().safeParse(n);if(!e.success)return;t.options=e.data}return t}function parseProxyInputRequestBatch(e){if(typeof e!=`object`||!e||Array.isArray(e)||!(`approvalRequestIds`in e)||!(`requestIds`in e)||!isStringArray(e.approvalRequestIds)||!isStringArray(e.requestIds))return;let t=new Set(e.requestIds);if(!(t.size!==e.requestIds.length||e.approvalRequestIds.some(e=>!t.has(e))))return{approvalRequestIds:e.approvalRequestIds,requestIds:e.requestIds}}function isStringArray(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function isAllowedChildResponseUrl(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`https:`||t.protocol===`http:`&&isLoopbackHostname(t.hostname)}function isInputRequestKind(e){return typeof e==`string`&&Object.hasOwn(PROXY_INPUT_REQUEST_KINDS,e)}export{clearAllProxyInputRequests,clearProxyInputRequestsForChild,clearProxyInputRequestsForTask,clearProxyInputRequestsWhere,createTaskInputRequestId,getProxyInputRequests,hasProxyInputRequests,retireProxyInputRequests,toProxyInputRequestEntries,upsertProxyInputRequestState,upsertProxyInputRequests};
@@ -1,5 +1,5 @@
1
1
  import type { ModelMessage, UserContent } from "ai";
2
- import type { HarnessToolMap, StepInput } from "#harness/types.js";
2
+ import type { StepInput } from "#harness/types.js";
3
3
  type StaleResponseConversion = {
4
4
  readonly kind: "unchanged";
5
5
  readonly stepInput?: StepInput;
@@ -40,6 +40,5 @@ export declare function convertStaleResponsesToUserMessage(input: {
40
40
  readonly history: readonly ModelMessage[];
41
41
  readonly pendingRequestIds: ReadonlySet<string>;
42
42
  readonly stepInput?: StepInput;
43
- readonly tools: HarnessToolMap;
44
43
  }): StaleResponseConversion;
45
44
  export {};
@@ -1,3 +1,3 @@
1
- import{appendUserContent,normalizeUserContent}from"#harness/messages.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{isSessionLimitContinuationRequestId}from"#harness/session-limit-continuation.js";import{extractHistoricalInputRequests}from"#harness/input-extraction.js";function dropStaleSessionLimitContinuationResponses(e){if(e.stepInput===void 0)return;let t=e.stepInput.inputResponses??[],n=e.stepInput.attributedInputResponses??[],keep=t=>e.pendingRequestIds.has(t)||!isSessionLimitContinuationRequestId(t),r=t.filter(e=>keep(e.requestId)),i=n.filter(({response:e})=>keep(e.requestId));if(r.length===t.length&&i.length===n.length)return e.stepInput;let{attributedInputResponses:a,inputResponses:o,...s}=e.stepInput,c=s;return r.length>0&&(c.inputResponses=r),i.length>0&&(c.attributedInputResponses=i),c}function convertStaleResponsesToUserMessage(e){if(e.stepInput===void 0)return{kind:`unchanged`};let t=e.stepInput.inputResponses??[],n=e.stepInput.attributedInputResponses??[];if(t.length===0&&n.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let r=[],i=[],a=[];for(let n of t)(e.pendingRequestIds.has(n.requestId)?r:a).push(n);for(let t of n)e.pendingRequestIds.has(t.response.requestId)?i.push(t):a.push(t.response);if(a.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let o=extractHistoricalInputRequests({history:e.history,requestIds:new Set(a.map(e=>e.requestId)),tools:e.tools}),s=appendOptionalUserContent(e.stepInput.message,formatModelMessage(a,o)),c=appendOptionalUserContent(e.stepInput.message,formatDisplayMessage(a,o)),{attributedInputResponses:l,inputResponses:u,...d}=e.stepInput,f={...d,message:s};return r.length>0&&(f.inputResponses=r),i.length>0&&(f.attributedInputResponses=i),{displayMessage:c,kind:`converted`,stepInput:f}}function formatModelMessage(e,t){let n=e.map(e=>{let n=t.get(e.requestId),r=n?.options?.find(t=>t.id===e.optionId),i={};if(e.optionId!==void 0&&(i.optionId=e.optionId),r!==void 0){let e={id:r.id,label:r.label};r.description!==void 0&&(e.description=r.description),i.selectedOption=e}e.text!==void 0&&(i.text=e.text);let a={requestId:e.requestId,response:i};return n!==void 0&&(a.prompt=n.prompt,a.requestType=isApprovalRequest(n)?`approval`:`question`),a});return[`The user submitted the following response to an earlier interactive prompt.`,`Treat it as new input at the current point in the conversation and decide whether it is still relevant.${e.some(e=>{let n=t.get(e.requestId);return n===void 0||isApprovalRequest(n)})?` This does not authorize an earlier action; request approval again if that action is still needed.`:``}`,JSON.stringify(n,null,2)].join(`
1
+ import{appendUserContent,normalizeUserContent}from"#harness/messages.js";import{isSessionLimitContinuationRequestId}from"#harness/session-limit-continuation.js";import{extractHistoricalInputRequests}from"#harness/input-extraction.js";function dropStaleSessionLimitContinuationResponses(e){if(e.stepInput===void 0)return;let t=e.stepInput.inputResponses??[],n=e.stepInput.attributedInputResponses??[],keep=t=>e.pendingRequestIds.has(t)||!isSessionLimitContinuationRequestId(t),r=t.filter(e=>keep(e.requestId)),i=n.filter(({response:e})=>keep(e.requestId));if(r.length===t.length&&i.length===n.length)return e.stepInput;let{attributedInputResponses:a,inputResponses:o,...s}=e.stepInput,c=s;return r.length>0&&(c.inputResponses=r),i.length>0&&(c.attributedInputResponses=i),c}function convertStaleResponsesToUserMessage(e){if(e.stepInput===void 0)return{kind:`unchanged`};let t=e.stepInput.inputResponses??[],n=e.stepInput.attributedInputResponses??[];if(t.length===0&&n.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let r=[],i=[],a=[];for(let n of t)(e.pendingRequestIds.has(n.requestId)?r:a).push(n);for(let t of n)e.pendingRequestIds.has(t.response.requestId)?i.push(t):a.push(t.response);if(a.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let o=extractHistoricalInputRequests({history:e.history,requestIds:new Set(a.map(e=>e.requestId))}),s=appendOptionalUserContent(e.stepInput.message,formatModelMessage(a,o)),c=appendOptionalUserContent(e.stepInput.message,formatDisplayMessage(a,o)),{attributedInputResponses:l,inputResponses:u,...d}=e.stepInput,f={...d,message:s};return r.length>0&&(f.inputResponses=r),i.length>0&&(f.attributedInputResponses=i),{displayMessage:c,kind:`converted`,stepInput:f}}function formatModelMessage(e,t){let n=e.map(e=>{let n=t.get(e.requestId),r=n?.options?.find(t=>t.id===e.optionId),i={};if(e.optionId!==void 0&&(i.optionId=e.optionId),r!==void 0){let e={id:r.id,label:r.label};r.description!==void 0&&(e.description=r.description),i.selectedOption=e}e.text!==void 0&&(i.text=e.text);let a={requestId:e.requestId,response:i};return n!==void 0&&(a.prompt=n.prompt,a.requestType=`approval`),a});return[`The user submitted the following response to an earlier interactive prompt.`,`Treat it as new input at the current point in the conversation and decide whether it is still relevant. This does not authorize an earlier action; request approval again if that action is still needed.`,JSON.stringify(n,null,2)].join(`
2
2
  `)}function formatDisplayMessage(e,t){return e.map(e=>e.text!==void 0&&e.text.length>0?e.text:t.get(e.requestId)?.options?.find(t=>t.id===e.optionId)?.label??e.optionId??`Response to an earlier interactive prompt`).join(`
3
3
  `)}function appendOptionalUserContent(e,t){let n=normalizeUserContent(e);return n===void 0?t:appendUserContent({appended:t,existing:n})}export{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses};
@@ -1,3 +1,3 @@
1
- import{ToolLoopAgent,isStepCount}from"ai";import{readClientContext}from"#internal/client-context.js";import{createErrorId,createLogger,formatError,logError}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{AuthKey,HistoryStateKey,ParentSessionKey,ScheduleIdKey,SessionCallbackKey,StaticModelReferenceKey,TaskDeliveryPolicyKey,TurnTaskDeliveryKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createApprovalCandidateEvent,createApprovalSettledEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createContextClearedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageCompletedEvent,createResultCompletedEvent,createSessionWaitingEvent,createStepStartedEvent}from"#protocol/message.js";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{resolveProviderHeaders}from"#internal/gateway.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{createFrameworkUserMessage,createTurnInputMessages,createUserMessage,frameworkMessageKindForStepInput,normalizeModelMessages,normalizeUserContent,resolveAssistantStepText,validateHarnessModelMessages}from"#harness/messages.js";import{getEffectiveModelSelection}from"#context/effective-model.js";import{buildDynamicTools,buildResponseAuthorizationTools}from"#context/build-dynamic-tools.js";import{BoundaryHookError}from"#shared/boundary-hook-error.js";import{drainMemoryCommit,prepareMemoryCompaction,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{canonicalizeMemoryRecords,clearMemorySessionState,shouldCanonicalizeMemory}from"#shared/memory-state.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{projectParkedAgentHandles,resolveAgentsAnnouncement}from"#subagents/handles/prompt.js";import{renderPendingApprovalsInstruction,renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{setTimeout}from"node:timers/promises";import{getPendingInputBatches,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{createCoordinationRequestFromToolCall,getPendingCoordinationBatch,resolvePendingCoordination,setPendingCoordinationBatch}from"#harness/coordination.js";import{getAgentHandleStore}from"#subagents/handles/store.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{activeTurnId}from"#harness/active-turn-id.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput as consumeDeferredStepInput$1,getApprovedTools,getPendingInputRequestIds,hasPendingApprovalBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{resolveInitiatingTaskContext}from"#tasks/delivery-context.js";import{BackgroundToolExecutorKey,createBackgroundToolCallBatch}from"#harness/background-tools.js";import{createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{estimateTokens}from"#harness/token-estimate.js";import{clearTurnClientContextState,getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{EMPTY_DELIVERY_SENTINEL,hasEmptyDeliverySentinel}from"#shared/empty-delivery.js";import{getInvalidToolCallInputError,isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{ContentFilteredModelResponseError,EmptyModelResponseError,classifyModelCallError,extractModelCallErrorDetails,extractUnsupportedProviderToolTypes,extractUpstreamRejectionMessage,isNoOutputGeneratedError}from"#harness/model-call-error.js";import{interruptStreamOnFailure}from"#harness/interruptible-stream.js";import{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{createCurrentMessages}from"#harness/current-messages.js";import{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{requireSessionModelReference}from"#harness/types.js";import{GenerationSteering}from"#harness/generation-steering.js";import{estimateRequestEnvelope,getRequestEnvelopeTokens,setRequestEnvelopeTokens}from"#harness/request-envelope.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionUsageLimit}from"#harness/session-limit-enforcement.js";import{coordinateApprovalDelivery,shouldPrepareApprovalReplayTools}from"#harness/approval-delivery-coordinator.js";import{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses}from"#harness/stale-input-responses.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";import{resolveDeliveryPolicy}from"#tasks/delivery-policy.js";import{extractWorkflowStreamWriteErrorDetails}from"#harness/workflow-stream-error.js";import{getAdvertisedTools}from"#harness/advertised-tools.js";import{resolveFrameworkToolFromUpstreamType}from"#harness/provider-tools.js";import{buildStepHooks,emitStepActions,readGatewayGenerationId}from"#harness/step-hooks.js";import{buildToolApproval,buildToolSetFromDefinitions,buildToolSetWithProviderTools}from"#harness/tools.js";import{FINAL_OUTPUT_TOOL_NAME,buildFinalOutputTool}from"#harness/final-output.js";const environment=process.env.NODE_ENV??`unknown`,eveVersion=resolveInstalledPackageInfo().version,log=createLogger(`harness.tool-loop`);function logToolExecutionError(e){e.toolOutput.type===`tool-error`&&logError(log,`tool execution failed`,e.toolOutput.error,{toolName:e.toolCall.toolName,toolCallId:e.toolCall.toolCallId})}function mergeSystemInstructions(e){if(e.length===0)return;if(e.length===1)return{...e[0]};let t;for(let n of e)n.providerOptions!==void 0&&(t={...t,...n.providerOptions});let n={role:`system`,content:e.map(e=>e.content).join(`
1
+ import{ToolLoopAgent,isStepCount}from"ai";import{readClientContext}from"#internal/client-context.js";import{createErrorId,createLogger,formatError,logError}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{AuthKey,HistoryStateKey,ParentSessionKey,ScheduleIdKey,SessionCallbackKey,StaticModelReferenceKey,TaskDeliveryPolicyKey,TurnTaskDeliveryKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createApprovalCandidateEvent,createApprovalSettledEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createContextClearedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageCompletedEvent,createResultCompletedEvent,createSessionWaitingEvent,createStepStartedEvent}from"#protocol/message.js";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{toModelSchema}from"#tools/schema.js";import{resolveProviderHeaders}from"#internal/gateway.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{createFrameworkUserMessage,createTurnInputMessages,createUserMessage,frameworkMessageKindForStepInput,normalizeModelMessages,normalizeUserContent,resolveAssistantStepText,validateHarnessModelMessages}from"#harness/messages.js";import{getEffectiveModelSelection}from"#context/effective-model.js";import{buildDynamicTools,buildResponseAuthorizationTools}from"#context/build-dynamic-tools.js";import{BoundaryHookError}from"#shared/boundary-hook-error.js";import{drainMemoryCommit,prepareMemoryCompaction,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{canonicalizeMemoryRecords,clearMemorySessionState,shouldCanonicalizeMemory}from"#shared/memory-state.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{projectParkedAgentHandles,resolveAgentsAnnouncement}from"#subagents/handles/prompt.js";import{renderPendingApprovalsInstruction,renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{setTimeout}from"node:timers/promises";import{getPendingInputBatches,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{createCoordinationRequestFromToolCall,getPendingCoordinationBatch,resolvePendingCoordination,setPendingCoordinationBatch}from"#harness/coordination.js";import{getAgentHandleStore}from"#subagents/handles/store.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{activeTurnId}from"#harness/active-turn-id.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput as consumeDeferredStepInput$1,getApprovedTools,getPendingInputRequestIds,hasPendingApprovalBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{resolveInitiatingTaskContext}from"#tasks/delivery-context.js";import{BackgroundToolExecutorKey,createBackgroundToolCallBatch}from"#harness/background-tools.js";import{createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{estimateTokens}from"#harness/token-estimate.js";import{clearTurnClientContextState,getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{EMPTY_DELIVERY_SENTINEL,hasEmptyDeliverySentinel}from"#shared/empty-delivery.js";import{getInvalidToolCallInputError,isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{ContentFilteredModelResponseError,EmptyModelResponseError,classifyModelCallError,extractModelCallErrorDetails,extractUnsupportedProviderToolTypes,extractUpstreamRejectionMessage,isNoOutputGeneratedError}from"#harness/model-call-error.js";import{interruptStreamOnFailure}from"#harness/interruptible-stream.js";import{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{createCurrentMessages}from"#harness/current-messages.js";import{extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{requireSessionModelReference}from"#harness/types.js";import{GenerationSteering}from"#harness/generation-steering.js";import{estimateRequestEnvelope,getRequestEnvelopeTokens,setRequestEnvelopeTokens}from"#harness/request-envelope.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionUsageLimit}from"#harness/session-limit-enforcement.js";import{coordinateApprovalDelivery,shouldPrepareApprovalReplayTools}from"#harness/approval-delivery-coordinator.js";import{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses}from"#harness/stale-input-responses.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";import{resolveDeliveryPolicy}from"#tasks/delivery-policy.js";import{extractWorkflowStreamWriteErrorDetails}from"#harness/workflow-stream-error.js";import{getAdvertisedTools}from"#harness/advertised-tools.js";import{resolveFrameworkToolFromUpstreamType}from"#harness/provider-tools.js";import{buildStepHooks,emitStepActions,readGatewayGenerationId}from"#harness/step-hooks.js";import{buildToolApproval,buildToolSetFromDefinitions,buildToolSetWithProviderTools}from"#harness/tools.js";import{FINAL_OUTPUT_TOOL_NAME,buildFinalOutputTool}from"#harness/final-output.js";const environment=process.env.NODE_ENV??`unknown`,eveVersion=resolveInstalledPackageInfo().version,log=createLogger(`harness.tool-loop`);function logToolExecutionError(e){e.toolOutput.type===`tool-error`&&logError(log,`tool execution failed`,e.toolOutput.error,{toolName:e.toolCall.toolName,toolCallId:e.toolCall.toolCallId})}function mergeSystemInstructions(e){if(e.length===0)return;if(e.length===1)return{...e[0]};let t;for(let n of e)n.providerOptions!==void 0&&(t={...t,...n.providerOptions});let n={role:`system`,content:e.map(e=>e.content).join(`
2
2
 
3
- `)};return t!==void 0&&(n.providerOptions=t),n}function buildGatewayAttributionHeaders(e,t){let n=resolveProviderHeaders(e);if(n===void 0)return;let r=t?.agentName??t?.agentId,i=process.env.VERCEL_PROJECT_PRODUCTION_URL||process.env.VERCEL_URL,a=i?`https://${i}`:void 0,o={...n};return r&&(o[`x-title`]=r),a&&(o[`http-referer`]=a),o}async function resolveEffectiveRuntimeModel(e){if(e.ctx===void 0){let t=e.session.agent.modelReference;if(t===void 0)throw Error(`Dynamic model selection is unavailable outside an eve runtime context.`);return{model:await e.config.resolveModel(t),session:e.session}}let t=getEffectiveModelSelection(e.ctx);if(t===null)throw Error(`Dynamic model selection is required before model-dependent work begins. Add a matching resolver handler that returns a concrete model.`);return{model:t.model===void 0?await e.config.resolveModel(t.reference):t.model,session:updateSessionModelReference(e.session,t.reference)}}function updateSessionModelReference(e,t){return e.agent.modelReference===t?e:{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t})}}function updateCompactionThresholdForModelReference(e){return e.modelReference.contextWindowTokens===void 0?e.compaction:{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*(e.compaction.thresholdPercent??.9)))}}function buildHarnessToolsWithDynamicSubagents(e,t){let n=new Map(e);if(t===void 0)return n;for(let e of buildDynamicSubagentTools(t)){if(n.has(e.name))throw Error(`Dynamic subagent "${e.name}" collides with another runtime-visible tool name.`);n.set(e.name,e)}return n}function createToolLoopHarness(e){e.instrumentation?.installAiSdkWarningLogger();let t=e.handleEvent;async function runStep(t,n){let executeStep=async r=>{let i=r?.session??t,a=new GenerationSteering({abortSignal:e.abortSignal,steeringSignal:e.steeringSignal,outputStarted:getHarnessEmissionState(i.state).assistantOutputStarted});try{return await executeStepBody(i,a,n,r)}finally{a.dispose()}};return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},executeStep)??executeStep()}async function executeStepBody(n,r,i,a){let o=n,s=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});s(o.history,o.state);let projectHistory=(e,t)=>s(e,t).messages,c=getHarnessEmissionState(o.state),l=contextStorage.getStore();l!==void 0&&!l.has(StaticModelReferenceKey)&&l.setVirtualContext(StaticModelReferenceKey,o.agent.dynamicModel===!0?null:o.agent.modelReference??null);let u=l?.get(ParentSessionKey),d=l?.get(SessionCallbackKey),f=u!==void 0||d!==void 0,p,m=a?.createHandleEvent({getAttemptScope:()=>p,handleEvent:t,turnId:activeTurnId(c)})??t,h=m===void 0?void 0:async(e,t)=>{r.beforeEvent(e),await m(e,t)},failModelSelection=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),a?.recordError(t),!h)throw t;let r=createErrorId(),i=toErrorMessage(t);return log.error(`model selection failed terminally`,{error:t,errorId:r,sessionId:o.sessionId,turnId:n.turnId}),await emitFailedStep(h,n,{code:`MODEL_SELECTION_FAILED`,details:{errorId:r},message:i,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:i}:{done:!0,output:``},session:o}},failBoundaryEvent=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(t,n);if(!h||e.mode!==`conversation`||!(t instanceof BoundaryHookError))throw t;a?.recordError(t);let r=createErrorId(),i=toErrorMessage(t);return log.error(`turn boundary handler failed — parking session`,{error:t,errorId:r,sessionId:o.sessionId,turnId:n.turnId}),c=await emitRecoverableFailedTurn(h,n,{code:`EVENT_HANDLER_FAILED`,continuationToken:o.continuationToken,details:{errorId:r},message:i}),{next:null,session:setHarnessEmissionState({...o,outputSchema:void 0},c),settledTurn:{isError:!0,output:i}}},preparePreambleTrace=async()=>await a?.preparePreamble({sequence:c.sequence,sessionStarted:c.sessionStarted,traceContext:a?.traceContext,turnId:activeTurnId(c)});if(e.clearOnly===!0)return o={...o,state:clearMemorySessionState(o.state)},o=replaceSessionHistory(o,[]),await h?.(createContextClearedEvent({sequence:c.sequence,sessionId:o.sessionId,turnId:activeTurnId(c)})),await h?.(createSessionWaitingEvent()),{next:null,session:o};if(e.compactOnly===!0){if(o.history.length>0)try{let t=contextStorage.getStore(),n=await resolveEffectiveRuntimeModel({config:e,ctx:t,session:o});o=n.session,o=(await maybeCompact({abortSignal:e.abortSignal,auth:t?.get(AuthKey)??null,emit:h,emissionState:{...c,turnId:activeTurnId(c)},force:!0,historyProjector:e.historyProjector,messages:[...o.history],model:n.model,onCompaction:e.onCompaction,requestEnvelopeTokens:getRequestEnvelopeTokens(o),resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()})).session}catch(e){logError(log,`manual session compaction failed`,e,{sessionId:o.sessionId})}return await h?.(createSessionWaitingEvent()),{next:null,session:o}}let g=consumeDeferredStepInput$1({input:i,preferCurrentInput:e.mode!==`conversation`&&i!==void 0&&hasPendingApprovalBatch(o),session:o});o=g.session;let _=getPendingCoordinationBatch(o.state),v=await resolvePendingCoordination({emit:h,session:o,stepInput:g.input,tools:e.tools});if(v.outcome===`unresolved`)return{next:null,session:v.session};o=v.session;let y=getPendingInputRequestIds(o.state),b=convertStaleResponsesToUserMessage({history:v.messages,pendingRequestIds:y,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:y,stepInput:g.input}),tools:e.tools}),x=b.stepInput,S=b.kind===`converted`?{...x,message:b.displayMessage}:x,C=contextStorage.getStore();C!==void 0&&e.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalReplayTools({session:o,stepInput:x})&&await e.resolveStepDynamicTools({ctx:C,event:createStepStartedEvent({modelId:o.agent.modelReference?.id??`dynamic`,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}),messages:projectHistory(v.messages,o.state)});let w=shouldPrepareApprovalReplayTools({session:o,stepInput:x})?buildResponseAuthorizationTools({authoredTools:e.tools,context:C}):e.tools,T=await coordinateApprovalDelivery({session:o,stepInput:x,tools:w});if(o=T.session,h){for(let e of T.feedback)await h(createMessageCompletedEvent({message:e,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}));let e=getApprovalAuditState(o.state);for(let t of e.activeCandidates.filter(e=>e.pendingEventEmitted!==!0))await h(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:`pending`,requestId:t.requestId,responderPrincipalId:t.responder.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.candidateHistory.filter(e=>e.eventEmitted!==!0&&e.status!==`allowed`))await h(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:t.status,requestId:t.requestId,responderPrincipalId:t.responder.principalId,reason:t.reason,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.settlements.filter(e=>e.eventEmitted!==!0))await h(createApprovalSettledEvent({outcome:t.outcome===`allowed`?`approved`:`cancelled`,requestId:t.requestId,responderPrincipalId:t.actor.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:o.state})}}if(T.kind===`park`)return{next:null,session:o};if(T.kind===`continue-coordination`)return{next:runStep,session:T.stepInput===void 0?o:queueDeferredStepInput(o,T.stepInput)};if(T.challenges.length>0){if(h)for(let e of T.challenges)await h(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId,webhookUrl:e.hookUrl}));let e=T.stepInput===void 0?o:queueDeferredStepInput(o,T.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:T.challenges})}}}let E=resolvePendingInput({activeTurnId:_?.event.turnId??activeTurnId(c),deferMessagesWhileApprovalsPending:e.mode!==`conversation`,history:v.messages,internalStep:!isHarnessBetweenTurns(o),resolveApprovalKey:resolveApprovalKeyFromTools(w),session:o,stepInput:T.stepInput});if(E.outcome===`unresolved`){let t=v.outcome===`resolved`?{...E.session,history:validateHarnessModelMessages(v.messages)}:E.session;if(h&&e.mode===`conversation`&&E.deferredMessage===!0&&hasStepInput(i)){let n=createTurnInputMessages(x);l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(t.history,t.state)),prepareMemoryPreamble(l,{history:t.history,input:n,projector:e.historyProjector,state:t.state}));let r=[],i;try{let r=await preparePreambleTrace();c=await emitTurnPreamble(h,S??{},c,projectHistory([...t.history,...n],t.state),e.runtimeIdentity,r)}catch(e){return r=l===void 0?[]:drainDynamicInstructionUserMessages(l),i=l===void 0?void 0:drainMemoryCommit(l),t={...t,history:validateHarnessModelMessages([...i?.history??t.history,...r]),state:i?.state??t.state},o=t,failBoundaryEvent(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:activeTurnId(c)})}return r=l===void 0?[]:drainDynamicInstructionUserMessages(l),i=l===void 0?void 0:drainMemoryCommit(l),t={...t,history:validateHarnessModelMessages([...i?.history??t.history,...r]),state:i?.state??t.state},c=await emitTurnEpilogue(h,c,e.mode),{next:null,session:setHarnessEmissionState(t,c)}}return v.outcome===`resolved`?(h&&e.mode===`conversation`&&(c=await emitTurnEpilogue(h,c,e.mode),t=setHarnessEmissionState(t,c)),{next:null,session:t}):{next:null,session:E.session}}if(E.resolvedInputs!==void 0)for(let e of E.resolvedInputs)await a?.publishInputResolutions({batch:e,sessionId:o.sessionId}),h&&await h(createInputResolvedEvent({resolutions:e.inputs.map(e=>{let t={kind:e.request.kind,outcome:e.outcome,requestId:e.request.requestId};return e.response===void 0?t:{...t,response:e.response}}),sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));if(h&&E.rejectedActions)for(let e of E.rejectedActions)for(let t of e.results)await h(createActionResultEvent({rejected:!0,result:t,sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));let D=activeTurnId(c),O=getTurnClientContextState(E.session.state,D),k=E.deferredContext===!0?void 0:readClientContext(x),A=(k??O?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],j=[];if(x?.context!==void 0&&E.deferredContext!==!0)for(let e of x.context)j.push(createFrameworkUserMessage(`context.instruction`,e));let M=frameworkMessageKindForStepInput(x),N=normalizeUserContent(x?.message),P=N!==void 0&&!E.deferredMessage&&!E.consumedMessage?await stageAttachmentsToSandbox(N):void 0;P!==void 0&&j.push(M===void 0?createUserMessage(`user`,P):createFrameworkUserMessage(M,P));let F=[],I;if(h&&(hasStepInput(x)||hasStepInput(T.stepInput))){l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(E.session.history,E.session.state)),prepareMemoryPreamble(l,{history:E.messages,input:[...A,...j],projector:e.historyProjector,state:E.session.state}));try{let t=await preparePreambleTrace();c=await emitTurnPreamble(h,S??{},c,projectHistory([...E.messages,...A,...j],E.session.state),e.runtimeIdentity,t)}catch(e){return F=l===void 0?[]:drainDynamicInstructionUserMessages(l),I=l===void 0?void 0:drainMemoryCommit(l),o={...E.session,history:validateHarnessModelMessages([...I?.history??E.session.history,...F]),state:I?.state??E.session.state},failBoundaryEvent(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:activeTurnId(c)})}F=l===void 0?[]:drainDynamicInstructionUserMessages(l),I=l===void 0?void 0:drainMemoryCommit(l),a?.setTurnId(c.turnId)}let ee=I?.history??E.session.history,te=E.session.history.length;o=setHarnessEmissionState({...E.session,history:validateHarnessModelMessages([...ee,...F]),state:I?.state??E.session.state},c);let L=validateHarnessModelMessages([...I?.history??E.messages.slice(0,te),...F,...I===void 0?E.messages.slice(te):[]]),R=await applySessionLimitContinuation({config:e,emit:h,emissionState:c,limitContinuation:E.limitContinuation,session:o});if(R.result!==null)return R.result;o=R.session;let ne=getAgentHandleStore(o.state);if(!hasUnansweredToolCall(L)){let e=await l?.get(BackgroundToolExecutorKey)?.readAgentViews?.(),t=e===void 0||e.length===0?void 0:[...projectParkedAgentHandles(ne??{handles:[]}).map(e=>({availability:`available`,id:e.identity.id,name:e.identity.name,statusLine:e.phase===`parked`?e.lastStatus:void 0})),...e],n=resolveAgentsAnnouncement({agentViews:t,messages:projectHistory(L,o.state),store:ne});n!==void 0&&L.push(createFrameworkUserMessage(`context.state`,n))}let z=O;k!==void 0&&(z={insertionIndex:O?.insertionIndex??L.length,messages:k,turnId:D}),z!==void 0&&(o=setTurnClientContextState(o,z)),L=[...L,...j];let createModelMessages=e=>{if(z===void 0||z.messages.length===0)return[...e];let t=Math.min(Math.max(0,z.insertionIndex),e.length);return[...e.slice(0,t),...z.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...e.slice(t)]},B=validateHarnessModelMessages(projectHistory(createModelMessages(L),o.state)),V=l,H;try{V!==void 0&&e.dispatchDynamicModelEvent!==void 0&&await e.dispatchDynamicModelEvent({ctx:V,event:{data:{sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId},type:`step.started`},messages:B}),H=await resolveEffectiveRuntimeModel({config:e,ctx:V,session:o})}catch(e){return failModelSelection(e,c)}o=H.session;let U=H.model,W=detectPromptCachePath(U),G=W.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,re=buildGatewayAttributionHeaders(U,e.runtimeIdentity);if(B=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(L),o.state))),h)try{await emitStepStarted(h,c,requireSessionModelReference(o).id,B)}catch(e){return failBoundaryEvent(e,c)}let ie=getApprovedTools(o,resolveApprovalKeyFromTools(buildResponseAuthorizationTools({authoredTools:e.tools,context:V}))),ae=c.sequence===0,oe=ae&&V?.get(ScheduleIdKey)!==void 0,se=resolveDeliveryPolicy({hasScheduleProvenance:oe,hasOutputSchema:o.outputSchema!==void 0,isChild:V?.get(ParentSessionKey)!==void 0,isFirstTurn:ae,taskDeliveryPhase:V?.get(TurnTaskDeliveryKey),taskDeliveryPolicy:V?.get(TaskDeliveryPolicyKey)}),createRequestMessages=()=>{let e=createCurrentMessages(L,{historyState:V?.get(HistoryStateKey),currentTurnMessages:j,projectedMessages:B});V!==void 0&&e.addSystem(buildDynamicInstructionMessages(V));let t=V?.get(TurnTaskDeliveryKey)===`initiating`?resolveInitiatingTaskContext({state:o.state,turnId:D}):void 0;e.addAnnouncements({availableSkills:V?.get(PendingSkillAnnouncementKey),taskState:t?.context,deliveryInstruction:se.instruction});let n=renderPendingApprovalsInstruction(getPendingInputBatches(o.state).flatMap(e=>e.requests));return n!==void 0&&e.add(n,`context.state`,{cacheFriendly:!1}),e},K=createRequestMessages(),q,finishSteeredStep=()=>(throwIfTurnAborted(e.abortSignal),V?.set(HistoryStateKey,K.historyState),q!==void 0&&(o=setTurnUsageState(o,accumulateTurnUsage({previous:getTurnUsageState(o.state),turnId:c.turnId,usage:q}))),{steered:!0,next:runStep,session:setHarnessEmissionState({...o,history:[...K.history]},advanceStep(c))}),J=[],withTrailingUserNote=(e,t)=>t?[...e,createFrameworkUserMessage(`execution.retry`,t)]:[...e],prepareModelInstructions=e=>{let t=e?[{role:`system`,content:e}]:[],n=o.agent.system?[{role:`system`,content:o.agent.system}]:[],r=K.systemMessages.length>0||t.length>0?[...t,...n,...K.systemMessages]:void 0,i=r!==void 0&&G?applySystemCacheBreakpoint(r,G):r;return i===void 0?o.agent.system??void 0:mergeSystemInstructions(i)},prepareModelCallInput=e=>{let t=prepareModelInstructions(e);return{instructions:t,telemetryRuntimeContext:a?.resolveRuntimeContext({eveVersion,emissionState:c,environment,modelInput:{instructions:t,messages:J},session:o})}},ce=e.tools,Y=0,X,throwIfCompactionFailed=()=>{if(X!==void 0)throw X.error},prepareModelTools=async t=>{let n=buildHarnessToolsWithDynamicSubagents(e.tools,V),i=createBackgroundToolCallBatch(),a=getAdvertisedTools({session:o,tools:n});ce=a;let s=await buildToolSetWithProviderTools({approvedTools:ie,backgroundBatch:i,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,modelReference:requireSessionModelReference(o),tools:a});if(V!==void 0){let n=getAdvertisedTools({session:o,tools:buildDynamicTools(V)}),r=buildToolSetFromDefinitions({approvedTools:ie,backgroundBatch:i,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r)){let n=a.get(e);if(n?.runtimeAction!==void 0||n?.workflowId!==void 0)throw Error(`Dynamic tool "${e}" collides with a coordination-visible deferred tool.`);s[e]=t}}o.outputSchema!==void 0&&(s[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(o.outputSchema));let c=await getAdvertisedTools({modelTools:s,session:o,tools:a});o=c.session;let l=c.modelTools,u=G?applyLastToolCacheBreakpoint(l,G):l;for(let e of Object.values(u)){let t=e.execute;t!==void 0&&(e.execute=(...e)=>(r.protectToolExecution(),t(...e)));let n=e.onInputAvailable;n!==void 0&&(e.onInputAvailable=(...e)=>(r.protectToolExecution(),n(...e)))}return{effectiveTools:u,backgroundBatch:i,advertisedHarnessTools:a,modelTools:l}},runSingleModelCall=async t=>{let{effectiveTools:n,backgroundBatch:i,advertisedHarnessTools:s,modelTools:l}=await prepareModelTools(t);K=createRequestMessages(),Y=await estimateRequestEnvelope({history:B,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n});let u=z===void 0?void 0:Math.max(0,L.length-z.insertionIndex),d=await(async()=>{try{return await maybeCompact({abortSignal:e.abortSignal,auth:V?.get(AuthKey)??null,emit:h,emissionState:c,historyProjector:e.historyProjector,messages:[...L],model:U,onCompaction:e.onCompaction,promptMessages:createModelMessages(L),requestEnvelopeTokens:Y,resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()})}catch(e){throw X={error:e},e}})();o=d.session,d.compacted&&(L=d.messages,z!==void 0&&u!==void 0&&(z={...z,insertionIndex:Math.max(0,L.length-u)},o=setTurnClientContextState(o,z)),o={...o,compaction:{recentWindowSize:o.compaction.recentWindowSize,threshold:o.compaction.threshold,thresholdPercent:o.compaction.thresholdPercent}},B=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(L),o.state))),K=createRequestMessages(),{effectiveTools:n,backgroundBatch:i,advertisedHarnessTools:s,modelTools:l}=await prepareModelTools(t),Y=await estimateRequestEnvelope({history:B,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n})),Y=Math.max(0,Y-(estimateTokens(K.history)-estimateTokens(L))),r.begin(),J=await hydrateSandboxAttachments(K.nonSystemMessages);let{instructions:f,telemetryRuntimeContext:m={}}=prepareModelCallInput(t.extraSystemNote);t.retryReason&&(m[`eve.retry.reason`]=t.retryReason);let g=withTrailingUserNote(J,t.trailingUserNote),_=activeTurnId(c),v=a?.prepareAttempt({attemptIndex:t.attemptIndex,runtimeContext:m,stepIndex:c.stepIndex,turnId:_});p=v?.scope;let y=buildStepHooks({auth:V?.get(AuthKey)??null,cachePath:W,emit:h,emissionState:c,emitStepStarted:t.suppressStepStartedEmission!==!0,marker:G,session:o}),b={headers:re,instructions:f,model:U,onLanguageModelCallEnd(e){if(!r.interrupted){q=extractTokenUsageDelta({usage:e.usage,costUsd:extractGatewayCostUsd(e.providerMetadata)});for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||i.register({callId:t.toolCallId,input:t.input,toolName:t.toolName})}},onToolExecutionEnd:logToolExecutionError,onError(e){r.interrupted||summarizeKnownError(e.error)?.tags.includes(`config`)!==!0&&logError(log,`tool-loop stream error`,e.error)},onStepEnd:y.onStepEnd,onStepStart:y.onStepStart,prepareStep:y.prepareStep,reasoning:o.agent.modelReference?.reasoning??o.agent.reasoning,runtimeContext:m,stopWhen:isStepCount(1),telemetry:v?.telemetry,toolApproval:buildToolApproval(l,r.signal),tools:n},x=new ToolLoopAgent(b),executeModelCall=async()=>{if(h){let t=[...e.tools].filter(([e,t])=>t.runtimeAction!==void 0&&s.get(e)===void 0).map(([e])=>e),n=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...t]),i=await x.stream({abortSignal:r.signal,messages:g}),{emittedActionCallIds:a,handledInlineToolResultCallIds:o,invalidInputToolCallIds:l,inlineAuthorizationResults:u,trailingInlineToolResultParts:d}=await emitStreamContent(h,c,interruptStreamOnFailure(i.fullStream,r.signal),{excludedActionToolNames:n,tools:s});throwIfTurnAborted(e.abortSignal),r.check();let[f,p]=await Promise.all([y.stepResult,i.responseMessages]);if(f.finishReason===`content-filter`)throw new ContentFilteredModelResponseError(readGatewayGenerationId(f.providerMetadata));if(isEmptyModelResponse(f)&&extractToolResultCallIds(p).size===0&&u.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(h,c,f,{emittedActionCallIds:a,excludedActionCallIds:l,excludedActionToolNames:n,handledInlineToolResultCallIds:o,tools:s});let m=f.toolResults,_=new Map(m.map(e=>[e.toolCallId,e]));for(let e of u)_.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:l,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:p}),stepResult:f,toolResults:[..._.values()]})}let t=await x.generate({abortSignal:r.signal,messages:g});throwIfTurnAborted(e.abortSignal),r.check();let n=await y.stepResult;if(n.finishReason===`content-filter`)throw new ContentFilteredModelResponseError(readGatewayGenerationId(n.providerMetadata));if(isEmptyModelResponse(n)&&extractToolResultCallIds(t.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:t.responseMessages,stepResult:n})};try{let e=await executeModelCall();return await v?.complete(),e}catch(e){return r.interrupted?await v?.complete():await v?.fail(e),r.check(),rethrowNoOutputAsEmptyResponse(e)}},le=0,runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,attemptIndex:le++,suppressStepStartedEmission:t!==1||e.suppressStepStartedEmission}),{sessionId:o.sessionId,turnId:c.turnId,canRetry:()=>X===void 0},r.signal),ue=await enforceSessionUsageLimit({config:e,emit:h,emissionState:c,messages:B,session:o});if(ue!==null)return ue;let Z;try{Z=await runOneModelCall({suppressStepStartedEmission:!0})}catch(t){if(throwIfCompactionFailed(),throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();let n=await runModelCallRecoveryPipeline({error:t,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:se.allowsEmptyDelivery,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId})]});if(throwIfCompactionFailed(),throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();if(n.outcome===`recovered`)Z=n.result;else{let t=n.error;if(a?.recordError(t),!h)throw t;let r=extractWorkflowStreamWriteErrorDetails(t);if(r!==null){let e=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...r,errorId:e,error:t,sessionId:o.sessionId,turnId:c.turnId}),c=await emitRecoverableFailedTurn(h,c,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:o.continuationToken,details:{...r,errorId:e},message:toErrorMessage(t)}),{next:null,session:setHarnessEmissionState(o,c)}}let i=classifyModelCallError(t),s=createErrorId(),l=summarizeKnownError(t),u=l===null?extractUpstreamRejectionMessage(t):null,d=l?.message??u?.message??toErrorMessage(t),p=l?.hint===void 0?d:`${d} ${l.hint}`,m=extractModelCallErrorDetails(t),g=buildModelCallFailureDetails({catalogSummary:l,error:t,errorId:s,modelCallDetails:m,upstreamRejection:u}),_=buildModelCallFailureLogFields({error:t,errorId:s,modelCallDetails:m,recognized:l!==null||u!==null,sessionId:o.sessionId,turnId:c.turnId});if(i===`terminal`)return l===null?log.error(u?.message??`model call failed terminally`,_):log.error(`${l.name}: ${l.message}`,{errorId:s,hint:l.hint,sessionId:o.sessionId,turnId:c.turnId}),await emitFailedStep(h,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:p}:{done:!0,output:``},session:o};if(e.mode===`task`){if(i===`recoverable`&&!(t instanceof EmptyModelResponseError)&&!(t instanceof ContentFilteredModelResponseError))throw log.warn(u?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,_),t;return log.error(u?.message??`model call failed; failing the task run`,_),await emitFailedStep(h,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:{done:!0,isError:!0,output:p},session:o}}log.error(u?.message??`model call failed — parking session for retry by the user`,_),c=await emitRecoverableFailedTurn(h,c,{code:`MODEL_CALL_FAILED`,continuationToken:o.continuationToken,details:g,message:d});let v={isError:!0,output:p};return o={...o,outputSchema:void 0},{next:null,session:setHarnessEmissionState(o,c),settledTurn:v}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(o.state),turnId:c.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});o=setTurnUsageState(o,Q),q=void 0;let $;try{$=formatLanguageModelGatewayId(U)}catch{$=void 0}await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":e.tools.size});let de;try{r.check(),de=await handleStepResult({config:e,emit:h,emissionState:r.outputStarted?{...c,assistantOutputStarted:!0}:c,requestEnvelopeTokens:Y,durableModelPromptMessageCount:z===void 0||z.messages.length===0?J.length:void 0,promptMessages:K.history,result:Z,runStep,session:o,coordinationTools:ce})}catch(t){if(throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();throw t}return V?.set(HistoryStateKey,K.historyState),de}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(t!==void 0||e.costUsd!==void 0)return{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 readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:n,errorId:r,modelCallDetails:i,upstreamRejection:a}=e;if(t!==null){let e={errorId:r,message:t.message,name:t.name,semanticErrorId:t.id,...i};return t.hint!==void 0&&(e.hint=t.hint),e}return a===null?{...formatError(n,r),...i}:{errorId:r,message:toErrorMessage(n),name:a.name,...i}}function buildModelCallFailureLogFields(e){let t={errorId:e.errorId,sessionId:e.sessionId,turnId:e.turnId};return e.recognized?{...t,details:e.modelCallDetails}:{...t,error:e.error}}async function runModelCallRecoveryPipeline(e){let t=e.error,n;for(let r of e.stages){let e=await r({error:t,retryCallOptions:n});if(e.outcome===`recovered`)return e;e.outcome===`failed`&&(t=e.error,n=e.retryCallOptions)}return{outcome:`failed`,error:t}}function withAccumulatedResponseMessages(e){let{stepResult:t}=e;return{content:t.content,finishReason:t.finishReason,...e.invalidInputToolCallIds===void 0?{}:{invalidInputToolCallIds:e.invalidInputToolCallIds},providerMetadata:t.providerMetadata,response:{...t.response,messages:[...e.responseMessages]},text:t.text,toolCalls:t.toolCalls,toolResults:e.toolResults===void 0?t.toolResults:[...e.toolResults],usage:t.usage}}function appendMissingToolResultMessages(e){let t=extractToolResultCallIds(e.responseMessages),n=e.append.filter(e=>!t.has(e.toolCallId));return[...e.responseMessages,...n.length>0?[{role:`tool`,content:[...n]}]:[]]}function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===FINAL_OUTPUT_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}function extractToolResultCallIds(e){let t=new Set;for(let n of e)if(Array.isArray(n.content))for(let e of n.content)typeof e==`object`&&e&&e.type===`tool-result`&&t.add(e.toolCallId);return t}function hasUnansweredToolCall(e){let t=new Set,n=new Set;for(let r of e)if(Array.isArray(r.content))for(let e of r.content)typeof e==`object`&&e&&(e.type===`tool-call`&&t.add(e.toolCallId),e.type===`tool-result`&&n.add(e.toolCallId));for(let e of t)if(!n.has(e))return!0;return!1}async function attemptUnsupportedProviderToolRecovery(e){let t=extractUnsupportedProviderToolTypes(e.error);if(t.length===0)return{outcome:`skipped`};let n=[];for(let e of t){let t=resolveFrameworkToolFromUpstreamType(e);t!==null&&!n.includes(t)&&n.push(t)}if(n.length===0)return{outcome:`skipped`};log.warn(`disabling unsupported provider tool(s); retrying step once`,{disabled:n,sessionId:e.sessionId,turnId:e.turnId,upstreamTypes:t});let r={disabledProviderTools:new Set(n),extraSystemNote:buildDisabledToolNote(n)};try{return{outcome:`recovered`,result:await e.runOneModelCall({...r,suppressStepStartedEmission:!0})}}catch(e){return{outcome:`failed`,error:e,retryCallOptions:r}}}function buildDisabledToolNote(e){let t=e.join(`, `);return`The following ${e.length===1?`tool is`:`tools are`} not available with the current model and has been removed: ${t}. Proceed using the remaining tools or your training knowledge.`}function isEmptyModelResponse(e){return e.toolCalls.length===0&&e.toolResults.length===0&&resolveAssistantStepText(e.response.messages,e.text)===null}function rethrowNoOutputAsEmptyResponse(e){throw isNoOutputGeneratedError(e)?new EmptyModelResponseError({cause:e}):e}const EMPTY_RESPONSE_NUDGE=`Your previous reply was empty and was not delivered. Answer now from the tool results above; do not re-run tools or mention this notice.`;function buildEmptyResponseNudge(e){return e?`${EMPTY_RESPONSE_NUDGE} If the current task explicitly requires conditional delivery and there is nothing to report, reply with exactly ${EMPTY_DELIVERY_SENTINEL}.`:EMPTY_RESPONSE_NUDGE}async function attemptEmptyResponseRecovery(e){if(!(e.error instanceof EmptyModelResponseError))return{outcome:`skipped`};log.warn(`empty model response; reissuing the model call once`,{sessionId:e.sessionId,turnId:e.turnId});try{return{outcome:`recovered`,result:await e.runOneModelCall({...e.retryCallOptions,retryReason:`empty-response`,suppressStepStartedEmission:!0,trailingUserNote:buildEmptyResponseNudge(e.emptyDeliveryEnabled)})}}catch(t){return{outcome:`failed`,error:t,retryCallOptions:e.retryCallOptions}}}async function handleStepResult(e){let{config:t,emit:n,promptMessages:r,result:i,runStep:a}=e,{emissionState:o,session:s}=e,c=resolveAssistantStepText(i.response.messages,i.text),l=i.finishReason!==`tool-calls`&&i.toolCalls.length===0&&hasEmptyDeliverySentinel(c),u=getInvalidToolCallInputErrors({toolCalls:i.toolCalls}),d=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),f=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),p=l?null:c,m=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&m.add(e.toolCallId);let h=normalizeProviderToolHistory({messages:f,providerExecutedOutcomeIds:m}),g=h.messages,_=setRequestEnvelopeTokens({...s,compaction:createNextCompactionConfig(s.compaction,e.durableModelPromptMessageCount,i)},i.usage?.inputTokens!==void 0&&e.durableModelPromptMessageCount!==void 0?e.requestEnvelopeTokens:void 0),v=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),y=new Set(v.map(e=>e.action.callId)),b=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...d,...y]),tools:e.coordinationTools}),x=[...v,...b],S=renderPendingApprovalsSnippet(v),C=g.findIndex(e=>e.role!==`tool`),w=C===-1?g:g.slice(0,C),T=g.slice(w.length),E=validateHarnessModelMessages([...r,...w,...S===void 0?[]:[createFrameworkUserMessage(`context.state`,S)]]),D=getAdvertisedTools({session:_,tools:e.coordinationTools}),O=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>isDeferredHarnessTool(e.coordinationTools.get(t.toolName))).filter(e=>isDeferredHarnessTool(D.get(e.toolName))?!0:(log.warn(`deferred tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1)).map(e=>createCoordinationRequestFromToolCall({toolCall:e,tools:D}));if(O.length>0){let e=O.flatMap(e=>e.kind===`runtime-action`?[e.request]:[]),t=O.flatMap(e=>e.kind===`task`?[e.request]:[]);if(x.length===0)return{next:null,session:setHarnessEmissionState(setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:validateHarnessModelMessages(r)}}),advanceStep(o))};let i=setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:T,session:{..._,history:E}});return i=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseMessages:[],session:i}),n&&await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(i,advanceStep(o))}}if(x.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseAuthRequiredRequestIds:v.filter(t=>{let n=e.get(t.action.toolName)?.approval;return n!==void 0&&typeof n!=`function`&&n.response!==void 0}).map(e=>e.requestId),responseMessages:T,session:{..._,history:E}});return n&&(await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode),r=setHarnessEmissionState(r,o))),{next:hasRunnableDeferredStepInput(r)?a:null,session:r}}let k=resolveInlineAuthorizationInterrupt({messages:[...r,...g],toolResults:i.toolResults});if(k){let{challenges:e,history:r}=k;if(n){for(let t of getSupersededAuthorizationChallenges(_.state,e))await n(createAuthorizationCompletedEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,outcome:`failed`,reason:`Superseded by a newer authorization attempt.`,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));for(let t of e)await n(createAuthorizationRequiredEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,description:t.challenge.instructions??`Authorization required for ${t.name}`,webhookUrl:t.hookUrl,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode))}return{next:null,session:setHarnessEmissionState({..._,history:validateHarnessModelMessages(r),state:setPendingAuthorization(_.state,{challenges:e})},o)}}let A=g,j=validateHarnessModelMessages([...r,...A]),M={..._,history:j};return(M.outputSchema===void 0||extractFinalOutput(i)===void 0)&&(A.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasRunnableDeferredStepInput(M))?(n&&(o=advanceStep(o),M=setHarnessEmissionState(M,o)),{next:a,session:M}):t.mode===`task`&&contextStorage.getStore()?.get(ScheduleIdKey)!==void 0&&contextStorage.getStore()?.get(BackgroundToolExecutorKey)?.hasPendingTasks?.()===!0?deferTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:M.outputSchema,session:M,stepOutput:p}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:M.outputSchema,session:M,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:M.outputSchema,session:M,stepOutput:p})}async function deferTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;s=clearTurnClientContextState(s);let c=i===void 0?void 0:extractFinalOutput(r);return c!==void 0&&(s={...persistStructuredAssistantTurn(s,n,c),outputSchema:i}),t&&(o=await emitTurnEpilogue(t,o,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c??a??``}}}function isDeferredHarnessTool(e){return e?.runtimeAction!==void 0||e?.workflowId!==void 0&&e.execution!==`background`}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===FINAL_OUTPUT_TOOL_NAME&&!isInvalidToolCall(e))?.input}function persistStructuredAssistantTurn(e,t,n){return{...e,history:[...t,{content:JSON.stringify(n),role:`assistant`}],outputSchema:void 0}}async function emitStructuredResult(e,t,n,r){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t,r)}async function finishTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(s=clearTurnClientContextState(s),i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`task`),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(s={...s,outputSchema:void 0},t&&await emitFailedStep(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,sessionId:s.sessionId}),{next:{done:!0,isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message},session:s}):(s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`task`),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(s=clearTurnClientContextState(s),i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:a??``}};let c=extractFinalOutput(r);if(c===void 0){s={...s,outputSchema:void 0},t&&(o=await emitRecoverableFailedTurn(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:s.continuationToken}),s=setHarnessEmissionState(s,o));let e={isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message};return{next:null,session:s,settledTurn:e}}return s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c}}}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}function replaceSessionHistory(e,t){return contextStorage.getStore()?.delete(HistoryStateKey),{...e,history:t,compaction:{recentWindowSize:e.compaction.recentWindowSize,threshold:e.compaction.threshold,thresholdPercent:e.compaction.thresholdPercent}}}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session,a=e.promptMessages??r,o=validateHarnessModelMessages(e.historyProjector?.({messages:a,state:i.state})??a),s=e.force===!0||shouldCompact(o,i.compaction,e.requestEnvelopeTokens,getRequestEnvelopeTokens(i)),c=shouldCanonicalizeMemory(r);if(!s&&!c)return{compacted:!1,messages:r,session:i};let l=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),u=i.agent.compactionModelReference??requireSessionModelReference(i),d=mergeProviderSafetyIdentifier(u,l.providerOptions,e.auth);if(t){let a=contextStorage.getStore();a!==void 0&&prepareMemoryCompaction(a,{history:r,state:i.state}),await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(o,i.compaction,e.requestEnvelopeTokens,getRequestEnvelopeTokens(i))}),o)}let f=canonicalizeMemoryRecords(r),p=validateHarnessModelMessages(e.historyProjector?.({messages:f.ordinary,state:i.state})??f.ordinary),m=e.requestEnvelopeTokens??0,h={...i.compaction,threshold:Math.max(1,i.compaction.threshold-m),lastKnownInputTokens:i.compaction.lastKnownInputTokens===void 0?void 0:Math.max(0,i.compaction.lastKnownInputTokens-Math.min(getRequestEnvelopeTokens(i)??0,m))},g=s?await compactMessages([...p],l.model,h,d,e.telemetry,buildGatewayAttributionHeaders(l.model,e.runtimeIdentity),e.abortSignal,e.force===!0,e.requestEnvelopeTokens===void 0?void 0:Math.max(0,getInputTokenCount(o,i.compaction,m,getRequestEnvelopeTokens(i))-m)):[...p];if(r=validateHarnessModelMessages([...f.memory,...g]),e.onCompaction)for(let t of e.onCompaction())r.push(t);if(t){let a=contextStorage.getStore();if(a!==void 0&&prepareMemoryCompaction(a,{history:r,state:i.state}),await t(createCompactionCompletedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId}),e.historyProjector?.({messages:r,state:i.state})??r),a!==void 0){let e=drainMemoryCommit(a);e!==void 0&&(r=validateHarnessModelMessages(e.history),i={...i,state:e.state})}}return{compacted:!0,messages:r,session:replaceSessionHistory(i,r)}}function resolveApprovalKeyFromTools(e){return t=>{let n=e.get(t.action.toolName);if(n?.approvalKey!==void 0)return n.approvalKey(t.action.input)}}async function runModelCallWithRetries(e,t,n){for(let r=1;;r++){n.throwIfAborted();try{return await e(r)}catch(e){if(n.throwIfAborted(),t.canRetry?.()===!1||r===3||classifyModelCallError(e)!==`retry`)throw e;let i=500*2**(r-1)+Math.floor(Math.random()*250);log.warn(`model call failed transiently — retrying`,{attempt:r,delayMs:i,sessionId:t.sessionId,turnId:t.turnId,error:e}),await setTimeout(i,void 0,{signal:n})}}}export{appendMissingToolResultMessages,createToolLoopHarness};
3
+ `)};return t!==void 0&&(n.providerOptions=t),n}function buildGatewayAttributionHeaders(e,t){let n=resolveProviderHeaders(e);if(n===void 0)return;let r=t?.agentName??t?.agentId,i=process.env.VERCEL_PROJECT_PRODUCTION_URL||process.env.VERCEL_URL,a=i?`https://${i}`:void 0,o={...n};return r&&(o[`x-title`]=r),a&&(o[`http-referer`]=a),o}async function resolveEffectiveRuntimeModel(e){if(e.ctx===void 0){let t=e.session.agent.modelReference;if(t===void 0)throw Error(`Dynamic model selection is unavailable outside an eve runtime context.`);return{model:await e.config.resolveModel(t),session:e.session}}let t=getEffectiveModelSelection(e.ctx);if(t===null)throw Error(`Dynamic model selection is required before model-dependent work begins. Add a matching resolver handler that returns a concrete model.`);return{model:t.model===void 0?await e.config.resolveModel(t.reference):t.model,session:updateSessionModelReference(e.session,t.reference)}}function updateSessionModelReference(e,t){return e.agent.modelReference===t?e:{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t})}}function updateCompactionThresholdForModelReference(e){return e.modelReference.contextWindowTokens===void 0?e.compaction:{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*(e.compaction.thresholdPercent??.9)))}}function buildHarnessToolsWithDynamicSubagents(e,t){let n=new Map(e);if(t===void 0)return n;for(let e of buildDynamicSubagentTools(t)){if(n.has(e.name))throw Error(`Dynamic subagent "${e.name}" collides with another runtime-visible tool name.`);n.set(e.name,e)}return n}function createToolLoopHarness(e){e.instrumentation?.installAiSdkWarningLogger();let t=e.handleEvent;async function runStep(t,n){let executeStep=async r=>{let i=r?.session??t,a=new GenerationSteering({abortSignal:e.abortSignal,steeringSignal:e.steeringSignal,outputStarted:getHarnessEmissionState(i.state).assistantOutputStarted});try{return await executeStepBody(i,a,n,r)}finally{a.dispose()}};return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},executeStep)??executeStep()}async function executeStepBody(n,r,i,a){let o=n,s=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});s(o.history,o.state);let projectHistory=(e,t)=>s(e,t).messages,c=getHarnessEmissionState(o.state),l=contextStorage.getStore();l!==void 0&&!l.has(StaticModelReferenceKey)&&l.setVirtualContext(StaticModelReferenceKey,o.agent.dynamicModel===!0?null:o.agent.modelReference??null);let u=l?.get(ParentSessionKey),d=l?.get(SessionCallbackKey),f=u!==void 0||d!==void 0,p,m=a?.createHandleEvent({getAttemptScope:()=>p,handleEvent:t,turnId:activeTurnId(c)})??t,h=m===void 0?void 0:async(e,t)=>{r.beforeEvent(e),await m(e,t)},failModelSelection=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),a?.recordError(t),!h)throw t;let r=createErrorId(),i=toErrorMessage(t);return log.error(`model selection failed terminally`,{error:t,errorId:r,sessionId:o.sessionId,turnId:n.turnId}),await emitFailedStep(h,n,{code:`MODEL_SELECTION_FAILED`,details:{errorId:r},message:i,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:i}:{done:!0,output:``},session:o}},failBoundaryEvent=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(t,n);if(!h||e.mode!==`conversation`||!(t instanceof BoundaryHookError))throw t;a?.recordError(t);let r=createErrorId(),i=toErrorMessage(t);return log.error(`turn boundary handler failed — parking session`,{error:t,errorId:r,sessionId:o.sessionId,turnId:n.turnId}),c=await emitRecoverableFailedTurn(h,n,{code:`EVENT_HANDLER_FAILED`,continuationToken:o.continuationToken,details:{errorId:r},message:i}),{next:null,session:setHarnessEmissionState({...o,outputSchema:void 0},c),settledTurn:{isError:!0,output:i}}},preparePreambleTrace=async()=>await a?.preparePreamble({sequence:c.sequence,sessionStarted:c.sessionStarted,traceContext:a?.traceContext,turnId:activeTurnId(c)});if(e.clearOnly===!0)return o={...o,state:clearMemorySessionState(o.state)},o=replaceSessionHistory(o,[]),await h?.(createContextClearedEvent({sequence:c.sequence,sessionId:o.sessionId,turnId:activeTurnId(c)})),await h?.(createSessionWaitingEvent()),{next:null,session:o};if(e.compactOnly===!0){if(o.history.length>0)try{let t=contextStorage.getStore(),n=await resolveEffectiveRuntimeModel({config:e,ctx:t,session:o});o=n.session,o=(await maybeCompact({abortSignal:e.abortSignal,auth:t?.get(AuthKey)??null,emit:h,emissionState:{...c,turnId:activeTurnId(c)},force:!0,historyProjector:e.historyProjector,messages:[...o.history],model:n.model,requestEnvelopeTokens:getRequestEnvelopeTokens(o),resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()})).session}catch(e){logError(log,`manual session compaction failed`,e,{sessionId:o.sessionId})}return await h?.(createSessionWaitingEvent()),{next:null,session:o}}let g=consumeDeferredStepInput$1({input:i,preferCurrentInput:e.mode!==`conversation`&&i!==void 0&&hasPendingApprovalBatch(o),session:o});o=g.session;let _=getPendingCoordinationBatch(o.state),v=await resolvePendingCoordination({emit:h,session:o,stepInput:g.input,tools:e.tools});if(v.outcome===`unresolved`)return{next:null,session:v.session};o=v.session;let y=getPendingInputRequestIds(o.state),b=convertStaleResponsesToUserMessage({history:v.messages,pendingRequestIds:y,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:y,stepInput:g.input})}),x=b.stepInput,S=b.kind===`converted`?{...x,message:b.displayMessage}:x,C=contextStorage.getStore();C!==void 0&&e.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalReplayTools({session:o,stepInput:x})&&await e.resolveStepDynamicTools({ctx:C,event:createStepStartedEvent({modelId:o.agent.modelReference?.id??`dynamic`,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}),messages:projectHistory(v.messages,o.state)});let w=shouldPrepareApprovalReplayTools({session:o,stepInput:x})?buildResponseAuthorizationTools({authoredTools:e.tools,context:C}):e.tools,T=await coordinateApprovalDelivery({session:o,stepInput:x,tools:w});if(o=T.session,h){for(let e of T.feedback)await h(createMessageCompletedEvent({message:e,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}));let e=getApprovalAuditState(o.state);for(let t of e.activeCandidates.filter(e=>e.pendingEventEmitted!==!0))await h(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:`pending`,requestId:t.requestId,responderPrincipalId:t.responder.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.candidateHistory.filter(e=>e.eventEmitted!==!0&&e.status!==`allowed`))await h(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:t.status,requestId:t.requestId,responderPrincipalId:t.responder.principalId,reason:t.reason,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.settlements.filter(e=>e.eventEmitted!==!0))await h(createApprovalSettledEvent({outcome:t.outcome===`allowed`?`approved`:`cancelled`,requestId:t.requestId,responderPrincipalId:t.actor.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:o.state})}}if(T.kind===`park`)return{next:null,session:o};if(T.kind===`continue-coordination`)return{next:runStep,session:T.stepInput===void 0?o:queueDeferredStepInput(o,T.stepInput)};if(T.challenges.length>0){if(h)for(let e of T.challenges)await h(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId,webhookUrl:e.hookUrl}));let e=T.stepInput===void 0?o:queueDeferredStepInput(o,T.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:T.challenges})}}}let E=resolvePendingInput({activeTurnId:_?.event.turnId??activeTurnId(c),deferMessagesWhileApprovalsPending:e.mode!==`conversation`,history:v.messages,internalStep:!isHarnessBetweenTurns(o),resolveApprovalKey:resolveApprovalKeyFromTools(w),session:o,stepInput:T.stepInput});if(E.outcome===`unresolved`){let t=v.outcome===`resolved`?{...E.session,history:validateHarnessModelMessages(v.messages)}:E.session;if(h&&e.mode===`conversation`&&E.deferredMessage===!0&&hasStepInput(i)){let n=createTurnInputMessages(x);l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(t.history,t.state)),prepareMemoryPreamble(l,{history:t.history,input:n,projector:e.historyProjector,state:t.state}));let r=[],i;try{let r=await preparePreambleTrace();c=await emitTurnPreamble(h,S??{},c,projectHistory([...t.history,...n],t.state),e.runtimeIdentity,r)}catch(e){return r=l===void 0?[]:drainDynamicInstructionUserMessages(l),i=l===void 0?void 0:drainMemoryCommit(l),t={...t,history:validateHarnessModelMessages([...i?.history??t.history,...r]),state:i?.state??t.state},o=t,failBoundaryEvent(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:activeTurnId(c)})}return r=l===void 0?[]:drainDynamicInstructionUserMessages(l),i=l===void 0?void 0:drainMemoryCommit(l),t={...t,history:validateHarnessModelMessages([...i?.history??t.history,...r]),state:i?.state??t.state},c=await emitTurnEpilogue(h,c,e.mode),{next:null,session:setHarnessEmissionState(t,c)}}return v.outcome===`resolved`?(h&&e.mode===`conversation`&&(c=await emitTurnEpilogue(h,c,e.mode),t=setHarnessEmissionState(t,c)),{next:null,session:t}):{next:null,session:E.session}}if(E.resolvedInputs!==void 0)for(let e of E.resolvedInputs)await a?.publishInputResolutions({batch:e,sessionId:o.sessionId}),h&&await h(createInputResolvedEvent({resolutions:e.inputs.map(e=>{let t={kind:e.request.kind,outcome:e.outcome,requestId:e.request.requestId};return e.response===void 0?t:{...t,response:e.response}}),sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));if(h&&E.rejectedActions)for(let e of E.rejectedActions)for(let t of e.results)await h(createActionResultEvent({rejected:!0,result:t,sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));let D=activeTurnId(c),O=getTurnClientContextState(E.session.state,D),k=E.deferredContext===!0?void 0:readClientContext(x),A=(k??O?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],j=[];if(x?.context!==void 0&&E.deferredContext!==!0)for(let e of x.context)j.push(createFrameworkUserMessage(`context.instruction`,e));let ee=frameworkMessageKindForStepInput(x),te=normalizeUserContent(x?.message),M=te!==void 0&&!E.deferredMessage&&!E.consumedMessage?await stageAttachmentsToSandbox(te):void 0;M!==void 0&&j.push(ee===void 0?createUserMessage(`user`,M):createFrameworkUserMessage(ee,M));let N=[],P;if(h&&(hasStepInput(x)||hasStepInput(T.stepInput))){l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(E.session.history,E.session.state)),prepareMemoryPreamble(l,{history:E.messages,input:[...A,...j],projector:e.historyProjector,state:E.session.state}));try{let t=await preparePreambleTrace();c=await emitTurnPreamble(h,S??{},c,projectHistory([...E.messages,...A,...j],E.session.state),e.runtimeIdentity,t)}catch(e){return N=l===void 0?[]:drainDynamicInstructionUserMessages(l),P=l===void 0?void 0:drainMemoryCommit(l),o={...E.session,history:validateHarnessModelMessages([...P?.history??E.session.history,...N]),state:P?.state??E.session.state},failBoundaryEvent(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:activeTurnId(c)})}N=l===void 0?[]:drainDynamicInstructionUserMessages(l),P=l===void 0?void 0:drainMemoryCommit(l),a?.setTurnId(c.turnId)}let ne=P?.history??E.session.history,re=E.session.history.length;o=setHarnessEmissionState({...E.session,history:validateHarnessModelMessages([...ne,...N]),state:P?.state??E.session.state},c);let F=validateHarnessModelMessages([...P?.history??E.messages.slice(0,re),...N,...P===void 0?E.messages.slice(re):[]]),I=await applySessionLimitContinuation({config:e,emit:h,emissionState:c,limitContinuation:E.limitContinuation,session:o});if(I.result!==null)return I.result;o=I.session;let ie=getAgentHandleStore(o.state);if(!hasUnansweredToolCall(F)){let e=await l?.get(BackgroundToolExecutorKey)?.readAgentViews?.(),t=e===void 0||e.length===0?void 0:[...projectParkedAgentHandles(ie??{handles:[]}).map(e=>({availability:`available`,id:e.identity.id,name:e.identity.name,statusLine:e.phase===`parked`?e.lastStatus:void 0})),...e],n=resolveAgentsAnnouncement({agentViews:t,messages:projectHistory(F,o.state),store:ie});n!==void 0&&F.push(createFrameworkUserMessage(`context.state`,n))}let L=O;k!==void 0&&(L={insertionIndex:O?.insertionIndex??F.length,messages:k,turnId:D}),L!==void 0&&(o=setTurnClientContextState(o,L)),F=[...F,...j];let createModelMessages=e=>{if(L===void 0||L.messages.length===0)return[...e];let t=Math.min(Math.max(0,L.insertionIndex),e.length);return[...e.slice(0,t),...L.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...e.slice(t)]},R=validateHarnessModelMessages(projectHistory(createModelMessages(F),o.state)),z=l,B;try{z!==void 0&&e.dispatchDynamicModelEvent!==void 0&&await e.dispatchDynamicModelEvent({ctx:z,event:{data:{sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId},type:`step.started`},messages:R}),B=await resolveEffectiveRuntimeModel({config:e,ctx:z,session:o})}catch(e){return failModelSelection(e,c)}o=B.session;let V=B.model,ae=detectPromptCachePath(V),H=ae.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,oe=buildGatewayAttributionHeaders(V,e.runtimeIdentity);if(R=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(F),o.state))),h)try{await emitStepStarted(h,c,requireSessionModelReference(o).id,R)}catch(e){return failBoundaryEvent(e,c)}let U=getApprovedTools(o,resolveApprovalKeyFromTools(buildResponseAuthorizationTools({authoredTools:e.tools,context:z}))),W=c.sequence===0,se=W&&z?.get(ScheduleIdKey)!==void 0,G=resolveDeliveryPolicy({hasScheduleProvenance:se,hasOutputSchema:o.outputSchema!==void 0,isChild:z?.get(ParentSessionKey)!==void 0,isFirstTurn:W,taskDeliveryPhase:z?.get(TurnTaskDeliveryKey),taskDeliveryPolicy:z?.get(TaskDeliveryPolicyKey)}),createRequestMessages=()=>{let e=createCurrentMessages(F,{historyState:z?.get(HistoryStateKey),currentTurnMessages:j,projectedMessages:R});z!==void 0&&e.addSystem(buildDynamicInstructionMessages(z));let t=z?.get(TurnTaskDeliveryKey)===`initiating`?resolveInitiatingTaskContext({state:o.state,turnId:D}):void 0;e.addAnnouncements({availableSkills:z?.get(PendingSkillAnnouncementKey),taskState:t?.context,deliveryInstruction:G.instruction});let n=renderPendingApprovalsInstruction(getPendingInputBatches(o.state).flatMap(e=>e.requests));return n!==void 0&&e.add(n,`context.state`,{cacheFriendly:!1}),e},K=createRequestMessages(),q,finishSteeredStep=()=>(throwIfTurnAborted(e.abortSignal),z?.set(HistoryStateKey,K.historyState),q!==void 0&&(o=setTurnUsageState(o,accumulateTurnUsage({previous:getTurnUsageState(o.state),turnId:c.turnId,usage:q}))),{steered:!0,next:runStep,session:setHarnessEmissionState({...o,history:[...K.history]},advanceStep(c))}),J=[],withTrailingUserNote=(e,t)=>t?[...e,createFrameworkUserMessage(`execution.retry`,t)]:[...e],prepareModelInstructions=e=>{let t=e?[{role:`system`,content:e}]:[],n=o.agent.system?[{role:`system`,content:o.agent.system}]:[],r=K.systemMessages.length>0||t.length>0?[...t,...n,...K.systemMessages]:void 0,i=r!==void 0&&H?applySystemCacheBreakpoint(r,H):r;return i===void 0?o.agent.system??void 0:mergeSystemInstructions(i)},prepareModelCallInput=e=>{let t=prepareModelInstructions(e);return{instructions:t,telemetryRuntimeContext:a?.resolveRuntimeContext({eveVersion,emissionState:c,environment,modelInput:{instructions:t,messages:J},session:o})}},ce=e.tools,Y=0,X,throwIfCompactionFailed=()=>{if(X!==void 0)throw X.error},prepareModelTools=async t=>{let n=buildHarnessToolsWithDynamicSubagents(e.tools,z),i=createBackgroundToolCallBatch(),a=getAdvertisedTools({session:o,tools:n});ce=a;let s=await buildToolSetWithProviderTools({approvedTools:U,backgroundBatch:i,disabledProviderTools:t.disabledProviderTools,modelReference:requireSessionModelReference(o),tools:a});if(z!==void 0){let e=getAdvertisedTools({session:o,tools:buildDynamicTools(z)}),n=buildToolSetFromDefinitions({approvedTools:U,backgroundBatch:i,disabledProviderTools:t.disabledProviderTools,tools:e});for(let[e,t]of Object.entries(n)){let n=a.get(e);if(n?.runtimeAction!==void 0||n?.workflowId!==void 0)throw Error(`Dynamic tool "${e}" collides with a coordination-visible deferred tool.`);s[e]=t}}o.outputSchema!==void 0&&(s[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(o.outputSchema));let c=await getAdvertisedTools({modelTools:s,session:o,tools:a});o=c.session;let l=c.modelTools,u=H?applyLastToolCacheBreakpoint(l,H):l;for(let e of Object.values(u)){e.inputSchema=toModelSchema(e.inputSchema,`input`),e.outputSchema!==void 0&&(e.outputSchema=toModelSchema(e.outputSchema,`output`));let t=e.execute;t!==void 0&&(e.execute=(...e)=>(r.protectToolExecution(),t(...e)));let n=e.onInputAvailable;n!==void 0&&(e.onInputAvailable=(...e)=>(r.protectToolExecution(),n(...e)))}return{effectiveTools:u,backgroundBatch:i,advertisedHarnessTools:a,modelTools:l}},runSingleModelCall=async t=>{let{effectiveTools:n,backgroundBatch:i,advertisedHarnessTools:s,modelTools:l}=await prepareModelTools(t);K=createRequestMessages(),Y=await estimateRequestEnvelope({history:R,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n});let u=L===void 0?void 0:Math.max(0,F.length-L.insertionIndex),d=await(async()=>{try{return await maybeCompact({abortSignal:e.abortSignal,auth:z?.get(AuthKey)??null,emit:h,emissionState:c,historyProjector:e.historyProjector,messages:[...F],model:V,promptMessages:createModelMessages(F),requestEnvelopeTokens:Y,resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()})}catch(e){throw X={error:e},e}})();o=d.session,d.compacted&&(F=d.messages,L!==void 0&&u!==void 0&&(L={...L,insertionIndex:Math.max(0,F.length-u)},o=setTurnClientContextState(o,L)),o={...o,compaction:{recentWindowSize:o.compaction.recentWindowSize,threshold:o.compaction.threshold,thresholdPercent:o.compaction.thresholdPercent}},R=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(F),o.state))),K=createRequestMessages(),{effectiveTools:n,backgroundBatch:i,advertisedHarnessTools:s,modelTools:l}=await prepareModelTools(t),Y=await estimateRequestEnvelope({history:R,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n})),Y=Math.max(0,Y-(estimateTokens(K.history)-estimateTokens(F))),r.begin(),J=await hydrateSandboxAttachments(K.nonSystemMessages);let{instructions:f,telemetryRuntimeContext:m={}}=prepareModelCallInput(t.extraSystemNote);t.retryReason&&(m[`eve.retry.reason`]=t.retryReason);let g=withTrailingUserNote(J,t.trailingUserNote),_=activeTurnId(c),v=a?.prepareAttempt({attemptIndex:t.attemptIndex,runtimeContext:m,stepIndex:c.stepIndex,turnId:_});p=v?.scope;let y=buildStepHooks({auth:z?.get(AuthKey)??null,cachePath:ae,emit:h,emissionState:c,emitStepStarted:t.suppressStepStartedEmission!==!0,marker:H,session:o}),b={headers:oe,instructions:f,model:V,onLanguageModelCallEnd(e){if(!r.interrupted){q=extractTokenUsageDelta({usage:e.usage,costUsd:extractGatewayCostUsd(e.providerMetadata)});for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||i.register({callId:t.toolCallId,input:t.input,toolName:t.toolName})}},onToolExecutionEnd:logToolExecutionError,onError(e){r.interrupted||summarizeKnownError(e.error)?.tags.includes(`config`)!==!0&&logError(log,`tool-loop stream error`,e.error)},onStepEnd:y.onStepEnd,onStepStart:y.onStepStart,prepareStep:y.prepareStep,reasoning:o.agent.modelReference?.reasoning??o.agent.reasoning,runtimeContext:m,stopWhen:isStepCount(1),telemetry:v?.telemetry,toolApproval:buildToolApproval(l,r.signal),tools:n},x=new ToolLoopAgent(b),executeModelCall=async()=>{if(h){let t=[...e.tools].filter(([e,t])=>t.runtimeAction!==void 0&&s.get(e)===void 0).map(([e])=>e),n=new Set([FINAL_OUTPUT_TOOL_NAME,...t]),i=await x.stream({abortSignal:r.signal,messages:g}),{emittedActionCallIds:a,handledInlineToolResultCallIds:o,invalidInputToolCallIds:l,inlineAuthorizationResults:u,trailingInlineToolResultParts:d}=await emitStreamContent(h,c,interruptStreamOnFailure(i.fullStream,r.signal),{excludedActionToolNames:n,tools:s});throwIfTurnAborted(e.abortSignal),r.check();let[f,p]=await Promise.all([y.stepResult,i.responseMessages]);if(f.finishReason===`content-filter`)throw new ContentFilteredModelResponseError(readGatewayGenerationId(f.providerMetadata));if(isEmptyModelResponse(f)&&extractToolResultCallIds(p).size===0&&u.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(h,c,f,{emittedActionCallIds:a,excludedActionCallIds:l,excludedActionToolNames:n,handledInlineToolResultCallIds:o,tools:s});let m=f.toolResults,_=new Map(m.map(e=>[e.toolCallId,e]));for(let e of u)_.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:l,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:p}),stepResult:f,toolResults:[..._.values()]})}let t=await x.generate({abortSignal:r.signal,messages:g});throwIfTurnAborted(e.abortSignal),r.check();let n=await y.stepResult;if(n.finishReason===`content-filter`)throw new ContentFilteredModelResponseError(readGatewayGenerationId(n.providerMetadata));if(isEmptyModelResponse(n)&&extractToolResultCallIds(t.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:t.responseMessages,stepResult:n})};try{let e=await executeModelCall();return await v?.complete(),e}catch(e){return r.interrupted?await v?.complete():await v?.fail(e),r.check(),rethrowNoOutputAsEmptyResponse(e)}},le=0,runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,attemptIndex:le++,suppressStepStartedEmission:t!==1||e.suppressStepStartedEmission}),{sessionId:o.sessionId,turnId:c.turnId,canRetry:()=>X===void 0},r.signal),ue=await enforceSessionUsageLimit({config:e,emit:h,emissionState:c,messages:R,session:o});if(ue!==null)return ue;let Z;try{Z=await runOneModelCall({suppressStepStartedEmission:!0})}catch(t){if(throwIfCompactionFailed(),throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();let n=await runModelCallRecoveryPipeline({error:t,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:G.allowsEmptyDelivery,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId})]});if(throwIfCompactionFailed(),throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();if(n.outcome===`recovered`)Z=n.result;else{let t=n.error;if(a?.recordError(t),!h)throw t;let r=extractWorkflowStreamWriteErrorDetails(t);if(r!==null){let e=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...r,errorId:e,error:t,sessionId:o.sessionId,turnId:c.turnId}),c=await emitRecoverableFailedTurn(h,c,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:o.continuationToken,details:{...r,errorId:e},message:toErrorMessage(t)}),{next:null,session:setHarnessEmissionState(o,c)}}let i=classifyModelCallError(t),s=createErrorId(),l=summarizeKnownError(t),u=l===null?extractUpstreamRejectionMessage(t):null,d=l?.message??u?.message??toErrorMessage(t),p=l?.hint===void 0?d:`${d} ${l.hint}`,m=extractModelCallErrorDetails(t),g=buildModelCallFailureDetails({catalogSummary:l,error:t,errorId:s,modelCallDetails:m,upstreamRejection:u}),_=buildModelCallFailureLogFields({error:t,errorId:s,modelCallDetails:m,recognized:l!==null||u!==null,sessionId:o.sessionId,turnId:c.turnId});if(i===`terminal`)return l===null?log.error(u?.message??`model call failed terminally`,_):log.error(`${l.name}: ${l.message}`,{errorId:s,hint:l.hint,sessionId:o.sessionId,turnId:c.turnId}),await emitFailedStep(h,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:p}:{done:!0,output:``},session:o};if(e.mode===`task`){if(i===`recoverable`&&!(t instanceof EmptyModelResponseError)&&!(t instanceof ContentFilteredModelResponseError))throw log.warn(u?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,_),t;return log.error(u?.message??`model call failed; failing the task run`,_),await emitFailedStep(h,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:{done:!0,isError:!0,output:p},session:o}}log.error(u?.message??`model call failed — parking session for retry by the user`,_),c=await emitRecoverableFailedTurn(h,c,{code:`MODEL_CALL_FAILED`,continuationToken:o.continuationToken,details:g,message:d});let v={isError:!0,output:p};return o={...o,outputSchema:void 0},{next:null,session:setHarnessEmissionState(o,c),settledTurn:v}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(o.state),turnId:c.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});o=setTurnUsageState(o,Q),q=void 0;let $;try{$=formatLanguageModelGatewayId(V)}catch{$=void 0}await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":e.tools.size});let de;try{r.check(),de=await handleStepResult({config:e,emit:h,emissionState:r.outputStarted?{...c,assistantOutputStarted:!0}:c,requestEnvelopeTokens:Y,durableModelPromptMessageCount:L===void 0||L.messages.length===0?J.length:void 0,promptMessages:K.history,result:Z,runStep,session:o,coordinationTools:ce})}catch(t){if(throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();throw t}return z?.set(HistoryStateKey,K.historyState),de}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(t!==void 0||e.costUsd!==void 0)return{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 readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:n,errorId:r,modelCallDetails:i,upstreamRejection:a}=e;if(t!==null){let e={errorId:r,message:t.message,name:t.name,semanticErrorId:t.id,...i};return t.hint!==void 0&&(e.hint=t.hint),e}return a===null?{...formatError(n,r),...i}:{errorId:r,message:toErrorMessage(n),name:a.name,...i}}function buildModelCallFailureLogFields(e){let t={errorId:e.errorId,sessionId:e.sessionId,turnId:e.turnId};return e.recognized?{...t,details:e.modelCallDetails}:{...t,error:e.error}}async function runModelCallRecoveryPipeline(e){let t=e.error,n;for(let r of e.stages){let e=await r({error:t,retryCallOptions:n});if(e.outcome===`recovered`)return e;e.outcome===`failed`&&(t=e.error,n=e.retryCallOptions)}return{outcome:`failed`,error:t}}function withAccumulatedResponseMessages(e){let{stepResult:t}=e;return{content:t.content,finishReason:t.finishReason,...e.invalidInputToolCallIds===void 0?{}:{invalidInputToolCallIds:e.invalidInputToolCallIds},providerMetadata:t.providerMetadata,response:{...t.response,messages:[...e.responseMessages]},text:t.text,toolCalls:t.toolCalls,toolResults:e.toolResults===void 0?t.toolResults:[...e.toolResults],usage:t.usage}}function appendMissingToolResultMessages(e){let t=extractToolResultCallIds(e.responseMessages),n=e.append.filter(e=>!t.has(e.toolCallId));return[...e.responseMessages,...n.length>0?[{role:`tool`,content:[...n]}]:[]]}function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===FINAL_OUTPUT_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}function extractToolResultCallIds(e){let t=new Set;for(let n of e)if(Array.isArray(n.content))for(let e of n.content)typeof e==`object`&&e&&e.type===`tool-result`&&t.add(e.toolCallId);return t}function hasUnansweredToolCall(e){let t=new Set,n=new Set;for(let r of e)if(Array.isArray(r.content))for(let e of r.content)typeof e==`object`&&e&&(e.type===`tool-call`&&t.add(e.toolCallId),e.type===`tool-result`&&n.add(e.toolCallId));for(let e of t)if(!n.has(e))return!0;return!1}async function attemptUnsupportedProviderToolRecovery(e){let t=extractUnsupportedProviderToolTypes(e.error);if(t.length===0)return{outcome:`skipped`};let n=[];for(let e of t){let t=resolveFrameworkToolFromUpstreamType(e);t!==null&&!n.includes(t)&&n.push(t)}if(n.length===0)return{outcome:`skipped`};log.warn(`disabling unsupported provider tool(s); retrying step once`,{disabled:n,sessionId:e.sessionId,turnId:e.turnId,upstreamTypes:t});let r={disabledProviderTools:new Set(n),extraSystemNote:buildDisabledToolNote(n)};try{return{outcome:`recovered`,result:await e.runOneModelCall({...r,suppressStepStartedEmission:!0})}}catch(e){return{outcome:`failed`,error:e,retryCallOptions:r}}}function buildDisabledToolNote(e){let t=e.join(`, `);return`The following ${e.length===1?`tool is`:`tools are`} not available with the current model and has been removed: ${t}. Proceed using the remaining tools or your training knowledge.`}function isEmptyModelResponse(e){return e.toolCalls.length===0&&e.toolResults.length===0&&resolveAssistantStepText(e.response.messages,e.text)===null}function rethrowNoOutputAsEmptyResponse(e){throw isNoOutputGeneratedError(e)?new EmptyModelResponseError({cause:e}):e}const EMPTY_RESPONSE_NUDGE=`Your previous reply was empty and was not delivered. Answer now from the tool results above; do not re-run tools or mention this notice.`;function buildEmptyResponseNudge(e){return e?`${EMPTY_RESPONSE_NUDGE} If the current task explicitly requires conditional delivery and there is nothing to report, reply with exactly ${EMPTY_DELIVERY_SENTINEL}.`:EMPTY_RESPONSE_NUDGE}async function attemptEmptyResponseRecovery(e){if(!(e.error instanceof EmptyModelResponseError))return{outcome:`skipped`};log.warn(`empty model response; reissuing the model call once`,{sessionId:e.sessionId,turnId:e.turnId});try{return{outcome:`recovered`,result:await e.runOneModelCall({...e.retryCallOptions,retryReason:`empty-response`,suppressStepStartedEmission:!0,trailingUserNote:buildEmptyResponseNudge(e.emptyDeliveryEnabled)})}}catch(t){return{outcome:`failed`,error:t,retryCallOptions:e.retryCallOptions}}}async function handleStepResult(e){let{config:t,emit:n,promptMessages:r,result:i,runStep:a}=e,{emissionState:o,session:s}=e,c=resolveAssistantStepText(i.response.messages,i.text),l=i.finishReason!==`tool-calls`&&i.toolCalls.length===0&&hasEmptyDeliverySentinel(c),u=getInvalidToolCallInputErrors({toolCalls:i.toolCalls}),d=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),f=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),p=l?null:c,m=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&m.add(e.toolCallId);let h=normalizeProviderToolHistory({messages:f,providerExecutedOutcomeIds:m}),g=h.messages,_=setRequestEnvelopeTokens({...s,compaction:createNextCompactionConfig(s.compaction,e.durableModelPromptMessageCount,i)},i.usage?.inputTokens!==void 0&&e.durableModelPromptMessageCount!==void 0?e.requestEnvelopeTokens:void 0),v=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),y=v,b=renderPendingApprovalsSnippet(v),x=g.findIndex(e=>e.role!==`tool`),S=x===-1?g:g.slice(0,x),C=g.slice(S.length),w=validateHarnessModelMessages([...r,...S,...b===void 0?[]:[createFrameworkUserMessage(`context.state`,b)]]),T=getAdvertisedTools({session:_,tools:e.coordinationTools}),E=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>isDeferredHarnessTool(e.coordinationTools.get(t.toolName))).filter(e=>isDeferredHarnessTool(T.get(e.toolName))?!0:(log.warn(`deferred tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1)).map(e=>createCoordinationRequestFromToolCall({toolCall:e,tools:T}));if(E.length>0){let e=E.flatMap(e=>e.kind===`runtime-action`?[e.request]:[]),t=E.flatMap(e=>e.kind===`task`?[e.request]:[]);if(y.length===0)return{next:null,session:setHarnessEmissionState(setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:validateHarnessModelMessages(r)}}),advanceStep(o))};let i=setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:C,session:{..._,history:w}});return i=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:y,responseMessages:[],session:i}),n&&await n(createInputRequestedEvent({requests:y,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(i,advanceStep(o))}}if(y.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:y,responseAuthRequiredRequestIds:v.filter(t=>{let n=e.get(t.action.toolName)?.approval;return n!==void 0&&typeof n!=`function`&&n.response!==void 0}).map(e=>e.requestId),responseMessages:C,session:{..._,history:w}});return n&&(await n(createInputRequestedEvent({requests:y,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode),r=setHarnessEmissionState(r,o))),{next:hasRunnableDeferredStepInput(r)?a:null,session:r}}let D=resolveInlineAuthorizationInterrupt({messages:[...r,...g],toolResults:i.toolResults});if(D){let{challenges:e,history:r}=D;if(n){for(let t of getSupersededAuthorizationChallenges(_.state,e))await n(createAuthorizationCompletedEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,outcome:`failed`,reason:`Superseded by a newer authorization attempt.`,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));for(let t of e)await n(createAuthorizationRequiredEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,description:t.challenge.instructions??`Authorization required for ${t.name}`,webhookUrl:t.hookUrl,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode))}return{next:null,session:setHarnessEmissionState({..._,history:validateHarnessModelMessages(r),state:setPendingAuthorization(_.state,{challenges:e})},o)}}let O=g,k=validateHarnessModelMessages([...r,...O]),A={..._,history:k};return(A.outputSchema===void 0||extractFinalOutput(i)===void 0)&&(O.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasRunnableDeferredStepInput(A))?(n&&(o=advanceStep(o),A=setHarnessEmissionState(A,o)),{next:a,session:A}):t.mode===`task`&&contextStorage.getStore()?.get(ScheduleIdKey)!==void 0&&contextStorage.getStore()?.get(BackgroundToolExecutorKey)?.hasPendingTasks?.()===!0?deferTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:A.outputSchema,session:A,stepOutput:p}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:A.outputSchema,session:A,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:A.outputSchema,session:A,stepOutput:p})}async function deferTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;s=clearTurnClientContextState(s);let c=i===void 0?void 0:extractFinalOutput(r);return c!==void 0&&(s={...persistStructuredAssistantTurn(s,n,c),outputSchema:i}),t&&(o=await emitTurnEpilogue(t,o,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c??a??``}}}function isDeferredHarnessTool(e){return e?.runtimeAction!==void 0||e?.workflowId!==void 0&&e.execution!==`background`}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===FINAL_OUTPUT_TOOL_NAME&&!isInvalidToolCall(e))?.input}function persistStructuredAssistantTurn(e,t,n){return{...e,history:[...t,{content:JSON.stringify(n),role:`assistant`}],outputSchema:void 0}}async function emitStructuredResult(e,t,n,r){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t,r)}async function finishTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(s=clearTurnClientContextState(s),i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`task`),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(s={...s,outputSchema:void 0},t&&await emitFailedStep(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,sessionId:s.sessionId}),{next:{done:!0,isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message},session:s}):(s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`task`),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(s=clearTurnClientContextState(s),i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:a??``}};let c=extractFinalOutput(r);if(c===void 0){s={...s,outputSchema:void 0},t&&(o=await emitRecoverableFailedTurn(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:s.continuationToken}),s=setHarnessEmissionState(s,o));let e={isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message};return{next:null,session:s,settledTurn:e}}return s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c}}}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}function replaceSessionHistory(e,t){return contextStorage.getStore()?.delete(HistoryStateKey),{...e,history:t,compaction:{recentWindowSize:e.compaction.recentWindowSize,threshold:e.compaction.threshold,thresholdPercent:e.compaction.thresholdPercent}}}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session,a=e.promptMessages??r,o=validateHarnessModelMessages(e.historyProjector?.({messages:a,state:i.state})??a),s=e.force===!0||shouldCompact(o,i.compaction,e.requestEnvelopeTokens,getRequestEnvelopeTokens(i)),c=shouldCanonicalizeMemory(r);if(!s&&!c)return{compacted:!1,messages:r,session:i};let l=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),u=i.agent.compactionModelReference??requireSessionModelReference(i),d=mergeProviderSafetyIdentifier(u,l.providerOptions,e.auth);if(t){let a=contextStorage.getStore();a!==void 0&&prepareMemoryCompaction(a,{history:r,state:i.state}),await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(o,i.compaction,e.requestEnvelopeTokens,getRequestEnvelopeTokens(i))}),o)}let f=canonicalizeMemoryRecords(r),p=validateHarnessModelMessages(e.historyProjector?.({messages:f.ordinary,state:i.state})??f.ordinary),m=e.requestEnvelopeTokens??0,h={...i.compaction,threshold:Math.max(1,i.compaction.threshold-m),lastKnownInputTokens:i.compaction.lastKnownInputTokens===void 0?void 0:Math.max(0,i.compaction.lastKnownInputTokens-Math.min(getRequestEnvelopeTokens(i)??0,m))},g=s?await compactMessages([...p],l.model,h,d,e.telemetry,buildGatewayAttributionHeaders(l.model,e.runtimeIdentity),e.abortSignal,e.force===!0,e.requestEnvelopeTokens===void 0?void 0:Math.max(0,getInputTokenCount(o,i.compaction,m,getRequestEnvelopeTokens(i))-m)):[...p];if(r=validateHarnessModelMessages([...f.memory,...g]),t){let a=contextStorage.getStore();if(a!==void 0&&prepareMemoryCompaction(a,{history:r,state:i.state}),await t(createCompactionCompletedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId}),e.historyProjector?.({messages:r,state:i.state})??r),a!==void 0){let e=drainMemoryCommit(a);e!==void 0&&(r=validateHarnessModelMessages(e.history),i={...i,state:e.state})}}return{compacted:!0,messages:r,session:replaceSessionHistory(i,r)}}function resolveApprovalKeyFromTools(e){return t=>{let n=e.get(t.action.toolName);if(n?.approvalKey!==void 0)return n.approvalKey(t.action.input)}}async function runModelCallWithRetries(e,t,n){for(let r=1;;r++){n.throwIfAborted();try{return await e(r)}catch(e){if(n.throwIfAborted(),t.canRetry?.()===!1||r===3||classifyModelCallError(e)!==`retry`)throw e;let i=500*2**(r-1)+Math.floor(Math.random()*250);log.warn(`model call failed transiently — retrying`,{attempt:r,delayMs:i,sessionId:t.sessionId,turnId:t.turnId,error:e}),await setTimeout(i,void 0,{signal:n})}}}export{appendMissingToolResultMessages,createToolLoopHarness};