eve 0.67.1 → 0.67.2

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 (562) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/src/channel/channel-address.d.ts +2 -2
  3. package/dist/src/channel/compiled-channel.d.ts +3 -2
  4. package/dist/src/channel/cross-channel-receive.d.ts +1 -18
  5. package/dist/src/channel/cross-channel-receive.js +1 -1
  6. package/dist/src/channel/forwarded-principal.d.ts +3 -2
  7. package/dist/src/channel/resolve-text.d.ts +2 -1
  8. package/dist/src/channel/schedule.d.ts +2 -2
  9. package/dist/src/channel/session-callback.d.ts +2 -1
  10. package/dist/src/channel/types.d.ts +0 -7
  11. package/dist/src/cli/acp/command.d.ts +2 -1
  12. package/dist/src/cli/agent-command.d.ts +2 -1
  13. package/dist/src/cli/agent-detection.d.ts +0 -1
  14. package/dist/src/cli/agent-detection.js +1 -1
  15. package/dist/src/cli/application-command.d.ts +2 -1
  16. package/dist/src/cli/application-root.d.ts +3 -6
  17. package/dist/src/cli/application-root.js +1 -1
  18. package/dist/src/cli/commands/init-target.d.ts +1 -1
  19. package/dist/src/cli/commands/init-telemetry.d.ts +2 -1
  20. package/dist/src/cli/commands/registry-declared-setups.d.ts +2 -1
  21. package/dist/src/cli/commands/registry-install-transaction.d.ts +0 -13
  22. package/dist/src/cli/commands/registry-install-transaction.js +1 -1
  23. package/dist/src/cli/commands/registry-pnpm-build-policy-flow.d.ts +1 -1
  24. package/dist/src/cli/commands/registry-presentation.d.ts +0 -1
  25. package/dist/src/cli/commands/registry-presentation.js +1 -1
  26. package/dist/src/cli/commands/registry-project.d.ts +2 -1
  27. package/dist/src/cli/commands/registry.d.ts +0 -4
  28. package/dist/src/cli/commands/registry.js +1 -1
  29. package/dist/src/cli/commands/setup-headless.d.ts +2 -1
  30. package/dist/src/cli/commands/vercel-non-interactive.d.ts +2 -1
  31. package/dist/src/cli/dev/diagnostic-dump.d.ts +0 -2
  32. package/dist/src/cli/dev/diagnostic-dump.js +1 -1
  33. package/dist/src/cli/dev/diagnostic-sink.d.ts +3 -2
  34. package/dist/src/cli/dev/tui/agent-header.d.ts +2 -1
  35. package/dist/src/cli/dev/tui/argument-typeahead.d.ts +2 -1
  36. package/dist/src/cli/dev/tui/dev-rebuild-status.d.ts +2 -1
  37. package/dist/src/cli/dev/tui/diagnostic-presentation.d.ts +2 -1
  38. package/dist/src/cli/dev/tui/errors.d.ts +2 -7
  39. package/dist/src/cli/dev/tui/errors.js +1 -1
  40. package/dist/src/cli/dev/tui/flow-drawer.d.ts +2 -1
  41. package/dist/src/cli/dev/tui/line-editor.d.ts +1 -1
  42. package/dist/src/cli/dev/tui/mcp-connection-status.d.ts +2 -1
  43. package/dist/src/cli/dev/tui/message-queue.d.ts +4 -3
  44. package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +2 -1
  45. package/dist/src/cli/dev/tui/provider-picker.d.ts +3 -2
  46. package/dist/src/cli/dev/tui/question-panel.d.ts +2 -1
  47. package/dist/src/cli/dev/tui/registry-result-message.d.ts +3 -4
  48. package/dist/src/cli/dev/tui/registry-result-message.js +1 -1
  49. package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +3 -2
  50. package/dist/src/cli/dev/tui/setup-panel.d.ts +2 -2
  51. package/dist/src/cli/dev/tui/setup-selection-input.d.ts +2 -2
  52. package/dist/src/cli/dev/tui/status-line.d.ts +2 -1
  53. package/dist/src/cli/dev/tui/stream-format.d.ts +3 -2
  54. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -2
  55. package/dist/src/cli/dev/tui/theme.d.ts +1 -1
  56. package/dist/src/cli/dev/tui/tool-block-groups.d.ts +3 -2
  57. package/dist/src/cli/dev/tui/tool-presentation.d.ts +2 -1
  58. package/dist/src/cli/dev/tui/traces/trace-content.d.ts +0 -9
  59. package/dist/src/cli/dev/tui/traces/trace-content.js +1 -1
  60. package/dist/src/cli/dev/tui/traces/trace-view.d.ts +3 -2
  61. package/dist/src/cli/dev/tui/traces/trace-viewer-session.d.ts +2 -1
  62. package/dist/src/cli/dev/tui/traces/trace-viewer-state.d.ts +2 -3
  63. package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
  64. package/dist/src/cli/dev/ui-options.d.ts +3 -2
  65. package/dist/src/cli/dev/url-target.d.ts +2 -1
  66. package/dist/src/cli/invoke/command.d.ts +0 -11
  67. package/dist/src/cli/invoke/command.js +1 -1
  68. package/dist/src/cli/invoke/result.d.ts +1 -1
  69. package/dist/src/cli/telemetry/index.d.ts +0 -6
  70. package/dist/src/cli/telemetry/preference.d.ts +2 -1
  71. package/dist/src/cli/ui/alt-screen.d.ts +3 -2
  72. package/dist/src/cli/ui/live-region.d.ts +3 -2
  73. package/dist/src/cli/ui/output.d.ts +1 -1
  74. package/dist/src/client/eve-agent-store-helpers.d.ts +0 -1
  75. package/dist/src/client/eve-agent-store-helpers.js +1 -1
  76. package/dist/src/client/message-action-parts.d.ts +2 -1
  77. package/dist/src/client/session-utils.d.ts +3 -2
  78. package/dist/src/compiled/.vendor-stamp.json +6 -6
  79. package/dist/src/compiled/@workflow/core/index.js +2 -2
  80. package/dist/src/compiled/@workflow/core/private.js +1 -1
  81. package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +4 -3
  82. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +23 -0
  83. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  84. package/dist/src/compiled/@workflow/core/runtime/hook-wake.d.ts +69 -36
  85. package/dist/src/compiled/@workflow/core/runtime/lifecycle-hooks.d.ts +25 -22
  86. package/dist/src/compiled/@workflow/core/runtime/run-spec-version.d.ts +16 -0
  87. package/dist/src/compiled/@workflow/core/runtime/start.d.ts +59 -1
  88. package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +3 -2
  89. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +34 -12
  90. package/dist/src/compiled/@workflow/core/runtime.js +4 -4
  91. package/dist/src/compiled/@workflow/core/serialization.d.ts +7 -2
  92. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  93. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +29 -0
  94. package/dist/src/compiled/@workflow/core/types.d.ts +1 -0
  95. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  96. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  97. package/dist/src/compiled/@workflow/errors/index.d.ts +13 -0
  98. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  99. package/dist/src/compiled/@workflow/world/events.d.ts +14 -4
  100. package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
  101. package/dist/src/compiled/@workflow/world/interfaces.d.ts +2 -1
  102. package/dist/src/compiled/@workflow/world/shared.d.ts +24 -0
  103. package/dist/src/compiled/@workflow/world/spec-version.d.ts +23 -0
  104. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  105. package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
  106. package/dist/src/compiled/_chunks/workflow/{attribute-changes-DzJovO_f.js → attribute-changes-D721NpZv.js} +3 -3
  107. package/dist/src/compiled/_chunks/workflow/{dist-BQSf8Hax.js → dist-BUFGAKRb.js} +1 -1
  108. package/dist/src/compiled/_chunks/workflow/dist-CaNNONeg.js +3 -0
  109. package/dist/src/compiled/_chunks/workflow/{frames-qKc30rjg.js → frames-Dr9fHWdo.js} +2 -2
  110. package/dist/src/compiled/_chunks/workflow/{global-BQnKzRXo.js → global-DKbOgrts.js} +1 -1
  111. package/dist/src/compiled/_chunks/workflow/helpers-DkKxg_yn.js +1 -0
  112. package/dist/src/compiled/_chunks/workflow/logger-D4GJNTk4.js +14 -0
  113. package/dist/src/compiled/_chunks/workflow/resume-hook-uTW-jBYz.js +1 -0
  114. package/dist/src/compiled/_chunks/workflow/run-5DmiMN9b.js +1 -0
  115. package/dist/src/compiled/_chunks/workflow/serialization-CNIYl1D3.js +3 -0
  116. package/dist/src/compiled/_chunks/workflow/sleep-DFKgN7UG.js +1 -0
  117. package/dist/src/compiled/_chunks/workflow/wait-until-3_1djUuL.js +1 -0
  118. package/dist/src/compiled/_chunks/workflow/{ws-transport-BrsMYqJg.js → ws-transport--rYOVIaf.js} +1 -1
  119. package/dist/src/compiler/artifacts.d.ts +4 -27
  120. package/dist/src/compiler/artifacts.js +1 -1
  121. package/dist/src/compiler/compile-agent.d.ts +2 -1
  122. package/dist/src/compiler/compile-agent.js +1 -1
  123. package/dist/src/compiler/diagnostics.d.ts +0 -11
  124. package/dist/src/compiler/diagnostics.js +1 -1
  125. package/dist/src/compiler/manifest.d.ts +0 -4
  126. package/dist/src/compiler/module-map.d.ts +1 -5
  127. package/dist/src/compiler/module-map.js +1 -1
  128. package/dist/src/compiler/normalize-agent-config.js +1 -1
  129. package/dist/src/compiler/normalize-connection.d.ts +2 -1
  130. package/dist/src/compiler/normalize-instructions.d.ts +2 -6
  131. package/dist/src/compiler/normalize-instructions.js +1 -1
  132. package/dist/src/compiler/normalize-manifest-helpers.d.ts +0 -1
  133. package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
  134. package/dist/src/compiler/normalize-manifest.js +1 -1
  135. package/dist/src/compiler/normalize-skill.d.ts +2 -1
  136. package/dist/src/compiler/project-sources.d.ts +0 -14
  137. package/dist/src/compiler/project-sources.js +1 -1
  138. package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
  139. package/dist/src/compiler/source-graph.d.ts +1 -2
  140. package/dist/src/compiler/source-graph.js +1 -1
  141. package/dist/src/context/build-base-tool-context.d.ts +2 -1
  142. package/dist/src/context/dynamic-tool-lifecycle.d.ts +0 -4
  143. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  144. package/dist/src/context/dynamic-tool-metadata.d.ts +0 -1
  145. package/dist/src/context/dynamic-tool-metadata.js +1 -1
  146. package/dist/src/context/memory-lifecycle.d.ts +0 -8
  147. package/dist/src/context/memory-lifecycle.js +1 -1
  148. package/dist/src/discover/connections.d.ts +0 -15
  149. package/dist/src/discover/connections.js +1 -1
  150. package/dist/src/discover/diagnostics.d.ts +0 -8
  151. package/dist/src/discover/diagnostics.js +1 -1
  152. package/dist/src/discover/discover-agent.js +1 -1
  153. package/dist/src/discover/discover-subagent.d.ts +0 -1
  154. package/dist/src/discover/discover-subagent.js +1 -1
  155. package/dist/src/discover/extensions.d.ts +3 -10
  156. package/dist/src/discover/extensions.js +1 -1
  157. package/dist/src/discover/filesystem.d.ts +5 -9
  158. package/dist/src/discover/filesystem.js +1 -1
  159. package/dist/src/discover/grammar.d.ts +0 -46
  160. package/dist/src/discover/grammar.js +1 -1
  161. package/dist/src/discover/manifest.d.ts +5 -4
  162. package/dist/src/discover/memory.d.ts +0 -1
  163. package/dist/src/discover/memory.js +1 -1
  164. package/dist/src/discover/named-source-directory.js +1 -1
  165. package/dist/src/discover/project-source.d.ts +2 -1
  166. package/dist/src/discover/project.js +1 -1
  167. package/dist/src/discover/sandbox.js +1 -1
  168. package/dist/src/discover/skills.d.ts +0 -4
  169. package/dist/src/discover/skills.js +1 -1
  170. package/dist/src/evals/cli/eval-client.d.ts +2 -1
  171. package/dist/src/evals/judge.d.ts +2 -1
  172. package/dist/src/evals/runner/execute-task.d.ts +1 -1
  173. package/dist/src/evals/types.d.ts +1 -1
  174. package/dist/src/eve-channel/support.d.ts +1 -3
  175. package/dist/src/eve-channel/support.js +1 -1
  176. package/dist/src/execution/dynamic-workflow/schema.d.ts +2 -1
  177. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  178. package/dist/src/execution/effective-agent-config.d.ts +2 -1
  179. package/dist/src/execution/eve-workflow-attributes.d.ts +3 -5
  180. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  181. package/dist/src/execution/history-view.d.ts +2 -1
  182. package/dist/src/execution/node-step.d.ts +3 -2
  183. package/dist/src/execution/sandbox/active-handles.d.ts +2 -4
  184. package/dist/src/execution/sandbox/active-handles.js +1 -1
  185. package/dist/src/execution/sandbox/bash.d.ts +2 -1
  186. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  187. package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -6
  188. package/dist/src/execution/sandbox/bindings/immutable-resources.js +1 -1
  189. package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +3 -2
  190. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -1
  191. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
  192. package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +1 -1
  193. package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -3
  194. package/dist/src/execution/sandbox/bindings/microsandbox-options.js +1 -1
  195. package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -1
  196. package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
  197. package/dist/src/execution/sandbox/bindings/vercel.d.ts +1 -1
  198. package/dist/src/execution/sandbox/dockerfile.d.ts +0 -1
  199. package/dist/src/execution/sandbox/dockerfile.js +1 -1
  200. package/dist/src/execution/sandbox/ensure.d.ts +2 -1
  201. package/dist/src/execution/sandbox/ensure.js +1 -1
  202. package/dist/src/execution/sandbox/prewarm.d.ts +1 -18
  203. package/dist/src/execution/sandbox/prewarm.js +1 -1
  204. package/dist/src/execution/sandbox/require-sandbox.d.ts +0 -11
  205. package/dist/src/execution/sandbox/require-sandbox.js +1 -1
  206. package/dist/src/execution/sandbox/truncate-output.d.ts +2 -5
  207. package/dist/src/execution/sandbox/truncate-output.js +2 -2
  208. package/dist/src/execution/session/admission.d.ts +3 -2
  209. package/dist/src/execution/session/event-sink.d.ts +2 -1
  210. package/dist/src/execution/session/finalization.d.ts +2 -1
  211. package/dist/src/execution/session/handoff.d.ts +3 -2
  212. package/dist/src/execution/session/route-selected-delivery.d.ts +2 -1
  213. package/dist/src/execution/session/timeout-control.d.ts +2 -1
  214. package/dist/src/execution/session-activity.d.ts +0 -3
  215. package/dist/src/execution/session-activity.js +1 -1
  216. package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
  217. package/dist/src/execution/session.d.ts +3 -2
  218. package/dist/src/execution/stable-workflow-names.d.ts +0 -6
  219. package/dist/src/execution/stable-workflow-names.js +1 -1
  220. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  221. package/dist/src/execution/tools/ask-question-workflow.js +1 -1
  222. package/dist/src/execution/tools/connection-search.js +1 -1
  223. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  224. package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +2 -1
  225. package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +4 -3
  226. package/dist/src/execution/tools/workflow/background.d.ts +2 -6
  227. package/dist/src/execution/tools/workflow/background.js +1 -1
  228. package/dist/src/execution/tools/workflow/owner-channels.d.ts +1 -1
  229. package/dist/src/execution/tools/workflow/workflow-owner-background.d.ts +2 -1
  230. package/dist/src/execution/web-fetch/execute.d.ts +2 -2
  231. package/dist/src/execution/web-fetch/request.d.ts +2 -1
  232. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.d.ts +0 -2
  233. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.js +57 -57
  234. package/dist/src/extensions/code/extension/lib/computer-use.d.ts +1 -1
  235. package/dist/src/extensions/code/extension/lib/generated-paths.d.ts +2 -1
  236. package/dist/src/extensions/code/extension/lib/grep-search.d.ts +5 -5
  237. package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
  238. package/dist/src/extensions/code/extension/lib/guidelines.d.ts +2 -1
  239. package/dist/src/extensions/code/extension/lib/patch.d.ts +3 -2
  240. package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +1 -2
  241. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
  242. package/dist/src/extensions/code/extension/lib/prwatch-registry.d.ts +2 -1
  243. package/dist/src/framework/host-inventory.d.ts +3 -2
  244. package/dist/src/harness/approval-candidates.d.ts +4 -3
  245. package/dist/src/harness/approval-delivery-coordinator.d.ts +2 -1
  246. package/dist/src/harness/compaction-prompt.d.ts +2 -1
  247. package/dist/src/harness/coordination.d.ts +0 -4
  248. package/dist/src/harness/coordination.js +1 -1
  249. package/dist/src/harness/input-requests.d.ts +1 -10
  250. package/dist/src/harness/input-requests.js +1 -1
  251. package/dist/src/harness/pending-input-batches.d.ts +0 -5
  252. package/dist/src/harness/pending-input-batches.js +1 -1
  253. package/dist/src/harness/provider-tools.d.ts +2 -1
  254. package/dist/src/harness/session-limit-continuation.d.ts +0 -4
  255. package/dist/src/harness/session-limit-continuation.js +1 -1
  256. package/dist/src/harness/session-usage-limits.d.ts +2 -1
  257. package/dist/src/harness/tool-loop.js +1 -1
  258. package/dist/src/harness/tool-model-output.d.ts +2 -1
  259. package/dist/src/harness/turn-client-context.d.ts +2 -1
  260. package/dist/src/instrumentation/state.d.ts +2 -2
  261. package/dist/src/internal/agent-name.d.ts +0 -2
  262. package/dist/src/internal/agent-name.js +1 -1
  263. package/dist/src/internal/application/build-profile.d.ts +2 -2
  264. package/dist/src/internal/application/dev-environment.d.ts +2 -8
  265. package/dist/src/internal/application/dev-environment.js +1 -1
  266. package/dist/src/internal/application/output-publication.d.ts +1 -1
  267. package/dist/src/internal/application/package.js +1 -1
  268. package/dist/src/internal/application/paths.d.ts +0 -5
  269. package/dist/src/internal/application/paths.js +1 -1
  270. package/dist/src/internal/application/tsconfig-dependencies.d.ts +0 -16
  271. package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
  272. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  273. package/dist/src/internal/authored-definition/source-identity.d.ts +1 -1
  274. package/dist/src/internal/authored-module-map-loader.js +1 -1
  275. package/dist/src/internal/bundler/extension-scope-plugin.d.ts +2 -1
  276. package/dist/src/internal/bundler/nitro-rolldown.d.ts +0 -11
  277. package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
  278. package/dist/src/internal/eve-project-root.d.ts +0 -3
  279. package/dist/src/internal/eve-project-root.js +1 -1
  280. package/dist/src/internal/external-resources-snapshot.d.ts +1 -1
  281. package/dist/src/internal/external-resources.d.ts +0 -1
  282. package/dist/src/internal/external-resources.js +1 -1
  283. package/dist/src/internal/helpers/markdown.js +1 -1
  284. package/dist/src/internal/invocation/metadata.d.ts +1 -1
  285. package/dist/src/internal/materialized-authored-modules.d.ts +2 -1
  286. package/dist/src/internal/mcp/protected-resource.d.ts +2 -1
  287. package/dist/src/internal/mcp/streamable-http-server.d.ts +4 -5
  288. package/dist/src/internal/mcp/streamable-http-server.js +1 -1
  289. package/dist/src/internal/model-catalog.d.ts +2 -1
  290. package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +0 -4
  291. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  292. package/dist/src/internal/nitro/dev-runtime-source-snapshot.d.ts +0 -1
  293. package/dist/src/internal/nitro/dev-runtime-source-snapshot.js +1 -1
  294. package/dist/src/internal/nitro/development-generation.d.ts +0 -1
  295. package/dist/src/internal/nitro/development-generation.js +1 -1
  296. package/dist/src/internal/nitro/host/channel-routes.d.ts +1 -1
  297. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -1
  298. package/dist/src/internal/nitro/host/dev-host-candidate.d.ts +2 -1
  299. package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +1 -1
  300. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  301. package/dist/src/internal/nitro/host/schedule-task-routes.d.ts +1 -1
  302. package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
  303. package/dist/src/internal/nitro/routes/channel-request-instrumentation.d.ts +2 -1
  304. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +1 -1
  305. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +2 -1
  306. package/dist/src/internal/resolve-model-endpoint-status.d.ts +2 -1
  307. package/dist/src/internal/vercel/assemble-eve-services.d.ts +3 -2
  308. package/dist/src/internal/vercel/eve-service-contribution.d.ts +2 -3
  309. package/dist/src/internal/vercel/eve-service-contribution.js +1 -1
  310. package/dist/src/internal/vercel/project-link.d.ts +2 -1
  311. package/dist/src/internal/vercel/project-link.js +1 -1
  312. package/dist/src/internal/workflow/development-world-codec.d.ts +2 -1
  313. package/dist/src/internal/workflow/world-compatibility.d.ts +2 -1
  314. package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -9
  315. package/dist/src/internal/workflow-bundle/builder-support.js +2 -3
  316. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.d.ts +0 -1
  317. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
  318. package/dist/src/protocol/activity.d.ts +3 -3
  319. package/dist/src/protocol/activity.js +1 -1
  320. package/dist/src/protocol/baggage.d.ts +2 -2
  321. package/dist/src/protocol/cancel-turn.d.ts +0 -2
  322. package/dist/src/protocol/event-dedupe.d.ts +2 -1
  323. package/dist/src/protocol/event-id.d.ts +0 -6
  324. package/dist/src/protocol/event-id.js +1 -1
  325. package/dist/src/protocol/traceparent.d.ts +2 -1
  326. package/dist/src/public/channels/chat-sdk/audience.d.ts +2 -4
  327. package/dist/src/public/channels/chat-sdk/audience.js +1 -1
  328. package/dist/src/public/channels/discord/discordChannel.d.ts +1 -1
  329. package/dist/src/public/channels/github/api.d.ts +2 -12
  330. package/dist/src/public/channels/github/api.js +1 -1
  331. package/dist/src/public/channels/github/auth.d.ts +0 -9
  332. package/dist/src/public/channels/github/auth.js +1 -1
  333. package/dist/src/public/channels/github/binding.d.ts +3 -2
  334. package/dist/src/public/channels/github/checkout.d.ts +3 -3
  335. package/dist/src/public/channels/github/defaults.d.ts +3 -2
  336. package/dist/src/public/channels/github/githubChannel.d.ts +1 -1
  337. package/dist/src/public/channels/github/limits.d.ts +0 -2
  338. package/dist/src/public/channels/github/limits.js +2 -2
  339. package/dist/src/public/channels/github/pr-context.d.ts +2 -3
  340. package/dist/src/public/channels/github/pr-context.js +1 -1
  341. package/dist/src/public/channels/github/state.d.ts +2 -1
  342. package/dist/src/public/channels/github/verify.d.ts +2 -1
  343. package/dist/src/public/channels/linear/defaults.d.ts +2 -1
  344. package/dist/src/public/channels/linear/inbound-images.d.ts +2 -1
  345. package/dist/src/public/channels/slack/app-manifest.d.ts +3 -4
  346. package/dist/src/public/channels/slack/app-manifest.js +1 -1
  347. package/dist/src/public/channels/slack/inbound.d.ts +2 -1
  348. package/dist/src/public/channels/slack/model-context.d.ts +0 -18
  349. package/dist/src/public/channels/slack/model-context.js +1 -1
  350. package/dist/src/public/channels/slack/privacy.d.ts +2 -1
  351. package/dist/src/public/channels/slack/verify.d.ts +1 -1
  352. package/dist/src/public/channels/teams/teamsChannel.d.ts +1 -1
  353. package/dist/src/public/channels/telegram/audience.d.ts +2 -3
  354. package/dist/src/public/channels/telegram/audience.js +1 -1
  355. package/dist/src/public/channels/telegram/telegramChannel.d.ts +1 -1
  356. package/dist/src/public/channels/twilio/defaults.d.ts +0 -7
  357. package/dist/src/public/channels/twilio/defaults.js +1 -1
  358. package/dist/src/public/channels/twilio/routing.d.ts +2 -1
  359. package/dist/src/public/channels/twilio/twilioChannel.d.ts +1 -1
  360. package/dist/src/public/definitions/channel.d.ts +1 -1
  361. package/dist/src/public/index.js +1 -1
  362. package/dist/src/public/memory/file/provider.js +1 -1
  363. package/dist/src/public/models/openai/chatgpt/model.d.ts +2 -1
  364. package/dist/src/public/models/openai/chatgpt/token-broker.d.ts +1 -1
  365. package/dist/src/public/nuxt/dev-server.d.ts +3 -2
  366. package/dist/src/public/skills/index.js +1 -1
  367. package/dist/src/public/sveltekit/dev-server.d.ts +3 -2
  368. package/dist/src/public/tools/index.js +1 -1
  369. package/dist/src/runtime/compiled-artifacts-source.d.ts +0 -4
  370. package/dist/src/runtime/compiled-artifacts-source.js +1 -1
  371. package/dist/src/runtime/connections/instance-identity.d.ts +0 -3
  372. package/dist/src/runtime/connections/instance-identity.js +1 -1
  373. package/dist/src/runtime/connections/mcp-tracing.d.ts +1 -6
  374. package/dist/src/runtime/connections/mcp-tracing.js +1 -1
  375. package/dist/src/runtime/connections/openapi-client.d.ts +1 -1
  376. package/dist/src/runtime/connections/scoped-authorization.d.ts +0 -9
  377. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  378. package/dist/src/runtime/hooks/registry.d.ts +0 -7
  379. package/dist/src/runtime/hooks/registry.js +1 -1
  380. package/dist/src/runtime/loaders/artifact-paths.d.ts +2 -1
  381. package/dist/src/runtime/loaders/bundled-artifacts.d.ts +0 -1
  382. package/dist/src/runtime/loaders/bundled-artifacts.js +1 -1
  383. package/dist/src/runtime/resolve-agent.d.ts +2 -2
  384. package/dist/src/runtime/resolve-agent.js +1 -1
  385. package/dist/src/runtime/resolve-dynamic-tool.d.ts +0 -16
  386. package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
  387. package/dist/src/runtime/sandbox/prepared-artifacts.d.ts +1 -2
  388. package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
  389. package/dist/src/runtime/schedules/register.d.ts +0 -4
  390. package/dist/src/runtime/schedules/register.js +1 -1
  391. package/dist/src/self-modification/credentials.d.ts +1 -4
  392. package/dist/src/self-modification/credentials.js +1 -1
  393. package/dist/src/self-modification/filesystem.d.ts +0 -1
  394. package/dist/src/self-modification/filesystem.js +1 -1
  395. package/dist/src/self-modification/git-workspace.d.ts +0 -3
  396. package/dist/src/self-modification/git-workspace.js +1 -1
  397. package/dist/src/self-modification/github-publisher.d.ts +2 -1
  398. package/dist/src/self-modification/migration.d.ts +0 -1
  399. package/dist/src/self-modification/migration.js +1 -1
  400. package/dist/src/self-modification/mode.d.ts +2 -1
  401. package/dist/src/self-modification/proposal.d.ts +0 -2
  402. package/dist/src/self-modification/proposal.js +2 -2
  403. package/dist/src/self-modification/setup.js +1 -1
  404. package/dist/src/services/dev-client/agent-info-probe.d.ts +2 -1
  405. package/dist/src/services/dev-client/request-headers.d.ts +1 -1
  406. package/dist/src/setup/ai-gateway-api-key.d.ts +2 -1
  407. package/dist/src/setup/append-env.d.ts +3 -2
  408. package/dist/src/setup/ask.d.ts +3 -3
  409. package/dist/src/setup/boxes/apply-ai-gateway-credential.d.ts +2 -1
  410. package/dist/src/setup/boxes/deploy-project.d.ts +4 -3
  411. package/dist/src/setup/boxes/link-project.d.ts +2 -1
  412. package/dist/src/setup/boxes/resolve-provisioning.d.ts +2 -1
  413. package/dist/src/setup/boxes/select-model.d.ts +0 -1
  414. package/dist/src/setup/boxes/select-model.js +1 -1
  415. package/dist/src/setup/cli/option-row.d.ts +1 -1
  416. package/dist/src/setup/cli/prompt-ui.d.ts +0 -10
  417. package/dist/src/setup/cli/prompt-ui.js +1 -1
  418. package/dist/src/setup/cli/rail-log.d.ts +0 -2
  419. package/dist/src/setup/cli/rail-log.js +2 -2
  420. package/dist/src/setup/connect-provisioning.d.ts +2 -1
  421. package/dist/src/setup/connection-connector.d.ts +2 -1
  422. package/dist/src/setup/flows/link.d.ts +2 -1
  423. package/dist/src/setup/flows/model-login.d.ts +1 -1
  424. package/dist/src/setup/flows/model-source-change.js +1 -1
  425. package/dist/src/setup/flows/registry-session.d.ts +3 -2
  426. package/dist/src/setup/integrations/discord/api.d.ts +2 -1
  427. package/dist/src/setup/integrations/discord/connect.d.ts +3 -3
  428. package/dist/src/setup/integrations/discord/connect.js +1 -1
  429. package/dist/src/setup/integrations/discord/setup.d.ts +2 -1
  430. package/dist/src/setup/integrations/file-memory/vercel.d.ts +1 -1
  431. package/dist/src/setup/integrations/github/connect.d.ts +3 -3
  432. package/dist/src/setup/integrations/github/connect.js +1 -1
  433. package/dist/src/setup/integrations/github/setup.d.ts +1 -1
  434. package/dist/src/setup/integrations/linear/connect.d.ts +2 -2
  435. package/dist/src/setup/integrations/linear/connect.js +1 -1
  436. package/dist/src/setup/integrations/linear/setup.d.ts +1 -1
  437. package/dist/src/setup/integrations/linq/connect.d.ts +3 -4
  438. package/dist/src/setup/integrations/linq/connect.js +1 -1
  439. package/dist/src/setup/integrations/linq/management.d.ts +2 -1
  440. package/dist/src/setup/integrations/linq/setup.d.ts +1 -9
  441. package/dist/src/setup/integrations/linq/setup.js +1 -1
  442. package/dist/src/setup/integrations/photon/connect.d.ts +5 -7
  443. package/dist/src/setup/integrations/photon/connect.js +1 -1
  444. package/dist/src/setup/integrations/photon/management.d.ts +5 -4
  445. package/dist/src/setup/integrations/photon/setup-flow.d.ts +2 -1
  446. package/dist/src/setup/integrations/registry.d.ts +0 -2
  447. package/dist/src/setup/integrations/registry.js +1 -1
  448. package/dist/src/setup/integrations/runner.d.ts +3 -2
  449. package/dist/src/setup/integrations/shared/scaffold.d.ts +2 -1
  450. package/dist/src/setup/integrations/shared/vercel-project.d.ts +2 -1
  451. package/dist/src/setup/integrations/shopify/setup.d.ts +2 -1
  452. package/dist/src/setup/integrations/teams/connect.d.ts +3 -3
  453. package/dist/src/setup/integrations/teams/connect.js +1 -1
  454. package/dist/src/setup/integrations/teams/setup.d.ts +2 -1
  455. package/dist/src/setup/integrations/web/setup.d.ts +2 -1
  456. package/dist/src/setup/primitives/pm/process-result.d.ts +2 -1
  457. package/dist/src/setup/primitives/pm/shared.d.ts +2 -1
  458. package/dist/src/setup/primitives/process-output.d.ts +2 -1
  459. package/dist/src/setup/quit-guard.d.ts +3 -2
  460. package/dist/src/setup/scaffold/create/add-to-project.d.ts +2 -1
  461. package/dist/src/setup/scaffold/create/project.js +1 -1
  462. package/dist/src/setup/scaffold/files.d.ts +2 -1
  463. package/dist/src/setup/scaffold/update/channels.d.ts +0 -1
  464. package/dist/src/setup/scaffold/workspace-glob.d.ts +0 -1
  465. package/dist/src/setup/scaffold/workspace-glob.js +1 -1
  466. package/dist/src/setup/scaffold/workspace-root.d.ts +2 -1
  467. package/dist/src/setup/slack-connect-create.d.ts +1 -1
  468. package/dist/src/setup/slack-connect-lifecycle.d.ts +5 -5
  469. package/dist/src/setup/slack-connect.d.ts +0 -4
  470. package/dist/src/setup/slack-connect.js +1 -1
  471. package/dist/src/setup/slackbot.d.ts +3 -3
  472. package/dist/src/setup/slackbot.js +1 -1
  473. package/dist/src/setup/vercel-project-api.d.ts +1 -1
  474. package/dist/src/setup/vercel-project.d.ts +3 -18
  475. package/dist/src/setup/vercel-project.js +0 -0
  476. package/dist/src/shared/action-types.d.ts +1 -58
  477. package/dist/src/shared/action-types.js +1 -1
  478. package/dist/src/shared/agent-definition.d.ts +0 -3
  479. package/dist/src/shared/agent-turn-outcome.d.ts +1 -3
  480. package/dist/src/shared/agent-turn-outcome.js +1 -1
  481. package/dist/src/shared/chatgpt-model.d.ts +0 -1
  482. package/dist/src/shared/chatgpt-model.js +1 -1
  483. package/dist/src/shared/conversation-context.d.ts +2 -1
  484. package/dist/src/shared/extension-package-contract.d.ts +2 -1
  485. package/dist/src/shared/forwarded-trace-policy.d.ts +3 -2
  486. package/dist/src/shared/gateway-service-tier.d.ts +2 -1
  487. package/dist/src/shared/memory-state.d.ts +0 -8
  488. package/dist/src/shared/memory-state.js +1 -1
  489. package/dist/src/shared/sandbox-environment.d.ts +0 -1
  490. package/dist/src/shared/sandbox-environment.js +1 -1
  491. package/dist/src/shared/skill-package.d.ts +0 -5
  492. package/dist/src/shared/skill-package.js +1 -1
  493. package/dist/src/shared/token-usage.d.ts +0 -7
  494. package/dist/src/shared/token-usage.js +1 -1
  495. package/dist/src/shared/ulid.d.ts +2 -8
  496. package/dist/src/shared/ulid.js +1 -1
  497. package/dist/src/shared/vercel-project.d.ts +2 -1
  498. package/dist/src/shared/vercel-services.d.ts +2 -2
  499. package/dist/src/shared/workflow-sandbox.d.ts +0 -7
  500. package/dist/src/source-change/agent-config-ast.d.ts +2 -1
  501. package/dist/src/source-change/agent-config-string-path.d.ts +2 -2
  502. package/dist/src/source-change/apply-agent-model-settings.d.ts +2 -1
  503. package/dist/src/source-change/apply-model-selection.d.ts +2 -1
  504. package/dist/src/source-change/static-source-change.d.ts +4 -3
  505. package/dist/src/subagents/invocation.d.ts +1 -1
  506. package/dist/src/subagents/tool.d.ts +2 -1
  507. package/dist/src/tools/definition.d.ts +0 -3
  508. package/dist/src/tools/durable-callbacks.d.ts +1 -2
  509. package/dist/src/tools/durable-callbacks.js +1 -1
  510. package/dist/src/tools/framework/agent.js +1 -1
  511. package/dist/src/tools/framework/task-cancel.d.ts +1 -1
  512. package/dist/src/tools/native-definition.d.ts +2 -1
  513. package/dist/src/tracing/agent-action-instrumentation.d.ts +2 -1
  514. package/dist/src/tracing/agent-memory-instrumentation.d.ts +2 -1
  515. package/dist/src/tracing/agent-otel-provider.d.ts +2 -1
  516. package/dist/src/tracing/agent-span-id-generator.d.ts +0 -1
  517. package/dist/src/tracing/agent-span-id-generator.js +1 -1
  518. package/dist/src/tracing/agent-tool-instrumentation.d.ts +2 -1
  519. package/dist/src/tracing/agent-tool-span-context.d.ts +3 -2
  520. package/dist/src/tracing/agent-trace-state.d.ts +0 -24
  521. package/dist/src/tracing/agent-trace-state.js +1 -1
  522. package/dist/src/tracing/batch-span-processor.d.ts +2 -1
  523. package/dist/src/tracing/local-trace-analysis.d.ts +4 -3
  524. package/dist/src/tracing/local-trace-discovery-index.d.ts +0 -2
  525. package/dist/src/tracing/local-trace-discovery-index.js +1 -1
  526. package/dist/src/tracing/local-trace-query.d.ts +2 -1
  527. package/dist/src/tracing/local-trace-retention.d.ts +4 -4
  528. package/dist/src/tracing/telemetry-budget.d.ts +0 -1
  529. package/dist/src/tracing/telemetry-budget.js +1 -1
  530. package/package.json +8 -8
  531. package/dist/src/cli/commands/channel-add-conflicts.d.ts +0 -21
  532. package/dist/src/cli/commands/channel-add-conflicts.js +0 -1
  533. package/dist/src/cli/commands/registry-search-presentation.d.ts +0 -16
  534. package/dist/src/cli/commands/registry-search-presentation.js +0 -6
  535. package/dist/src/compiled/_chunks/workflow/dist-BfMqXLK3.js +0 -3
  536. package/dist/src/compiled/_chunks/workflow/helpers-CNMO7zB1.js +0 -1
  537. package/dist/src/compiled/_chunks/workflow/logger-BCEj9caG.js +0 -14
  538. package/dist/src/compiled/_chunks/workflow/resume-hook-QS_cMwHn.js +0 -1
  539. package/dist/src/compiled/_chunks/workflow/run-CA5wWV2S.js +0 -1
  540. package/dist/src/compiled/_chunks/workflow/serialization-CJ265vSe.js +0 -3
  541. package/dist/src/compiled/_chunks/workflow/sleep-CBn94Ayv.js +0 -1
  542. package/dist/src/compiled/_chunks/workflow/wait-until-Bo2U6ON9.js +0 -1
  543. package/dist/src/compiler/compile-from-memory.d.ts +0 -44
  544. package/dist/src/compiler/compile-from-memory.js +0 -1
  545. package/dist/src/execution/connection-auth-tool-result.d.ts +0 -2
  546. package/dist/src/execution/connection-auth-tool-result.js +0 -1
  547. package/dist/src/internal/process/pnpm.d.ts +0 -28
  548. package/dist/src/internal/process/pnpm.js +0 -1
  549. package/dist/src/public/channels/slack/api-encoding.d.ts +0 -5
  550. package/dist/src/public/channels/slack/api-encoding.js +0 -1
  551. package/dist/src/public/definitions/instrumentation.d.ts +0 -1
  552. package/dist/src/public/definitions/instrumentation.js +0 -1
  553. package/dist/src/public/models/openai/chatgpt/unsigned-jwt.d.ts +0 -5
  554. package/dist/src/public/models/openai/chatgpt/unsigned-jwt.js +0 -1
  555. package/dist/src/sandbox/backends/probes.d.ts +0 -7
  556. package/dist/src/sandbox/backends/probes.js +0 -1
  557. package/dist/src/setup/channel-add-conflicts.d.ts +0 -28
  558. package/dist/src/setup/channel-add-conflicts.js +0 -1
  559. package/dist/src/setup/primitives/run-pnpm.d.ts +0 -1
  560. package/dist/src/setup/primitives/run-pnpm.js +0 -1
  561. package/dist/src/shared/dispatch-action.d.ts +0 -30
  562. package/dist/src/shared/dispatch-action.js +0 -1
@@ -19,7 +19,7 @@ type LaunchAction = {
19
19
  type DriverAction = {
20
20
  action: string;
21
21
  } & Record<string, unknown>;
22
- export interface ComputerUseDriverRequest {
22
+ interface ComputerUseDriverRequest {
23
23
  action: DriverAction;
24
24
  screenshotPath: string;
25
25
  }
@@ -5,7 +5,7 @@
5
5
  * Generated files must change through the deterministic command that
6
6
  * generates them, never through model-authored patches.
7
7
  */
8
- export interface GeneratedPathMatch {
8
+ interface GeneratedPathMatch {
9
9
  readonly path: string;
10
10
  readonly label: string;
11
11
  readonly remedy: string;
@@ -16,3 +16,4 @@ export declare function patchTargetPaths(patchText: string): readonly string[];
16
16
  export declare function findGeneratedPatchTargets(patchText: string): readonly GeneratedPathMatch[];
17
17
  /** One actionable error message covering every generated target in the patch. */
18
18
  export declare function generatedPatchTargetsError(matches: readonly GeneratedPathMatch[]): string;
19
+ export {};
@@ -1,11 +1,10 @@
1
- export declare const DEFAULT_GREP_LIMIT = 50;
2
1
  export declare const MAX_GREP_LIMIT = 200;
3
2
  export declare const MAX_GREP_COMMAND_BYTES: number;
4
3
  export declare const MAX_GREP_LINE_BYTES: number;
5
4
  export declare const MAX_GREP_RETURN_BYTES: number;
6
5
  export declare const GREP_OUTPUT_MODES: readonly ["files_with_matches", "content", "count"];
7
- export type GrepOutputMode = (typeof GREP_OUTPUT_MODES)[number];
8
- export interface GrepCommandInput {
6
+ type GrepOutputMode = (typeof GREP_OUTPUT_MODES)[number];
7
+ interface GrepCommandInput {
9
8
  readonly contextLines: number;
10
9
  readonly glob: string | undefined;
11
10
  readonly ignoreCase: boolean;
@@ -22,7 +21,7 @@ export interface GrepSearchResult {
22
21
  readonly path: string;
23
22
  readonly truncated: boolean;
24
23
  }
25
- export interface GrepSandbox {
24
+ interface GrepSandbox {
26
25
  resolvePath(path: string): string;
27
26
  run(input: {
28
27
  abortSignal?: AbortSignal;
@@ -33,7 +32,7 @@ export interface GrepSandbox {
33
32
  stdout: string;
34
33
  }>;
35
34
  }
36
- export interface GrepToolInput {
35
+ interface GrepToolInput {
37
36
  readonly context?: number;
38
37
  readonly glob?: string;
39
38
  readonly ignoreCase?: boolean;
@@ -59,3 +58,4 @@ export declare function processGrepOutput(input: {
59
58
  readonly path: string;
60
59
  readonly stdout: string;
61
60
  }): GrepSearchResult;
61
+ export {};
@@ -1,6 +1,6 @@
1
- import{shellQuote}from"./shell.js";const DEFAULT_GREP_LIMIT=50,MAX_GREP_LIMIT=200,MAX_GREP_COMMAND_BYTES=262144,MAX_GREP_LINE_BYTES=8192,MAX_GREP_RETURN_BYTES=65536,REGEX_META=/[\\^$.*+?()[\]{}|]/u,GREP_OUTPUT_MODES=[`files_with_matches`,`content`,`count`];function shouldUseFixedStrings(e,t){return t===!0||t!==!1&&!REGEX_META.test(e)}function effectiveOutputMode(e){return e??`files_with_matches`}function effectiveLimit(e){return Math.min(Math.max(1,e??50),200)}function assertWorkspacePath(e,t){if(t!==void 0&&t.split(/[\\/]/u).includes(`..`))throw Error(`grep path must not contain '..'`);if(e!==`/workspace`&&!e.startsWith(`/workspace/`))throw Error(`grep path must stay under /workspace: ${e}`);if(e.split(`/`).includes(`..`))throw Error(`grep path must not contain '..'`);return e}async function executeGrepSearch(e,t,n){let r=assertWorkspacePath(t.resolvePath(e.path??`/workspace`),e.path),i=await sandboxRealPath(t,t.resolvePath(``),`sandbox workspace`,n),a=await sandboxRealPath(t,r,`grep path`,n);assertRealPathWithinWorkspace(a,i);let o=effectiveOutputMode(e.outputMode),s=effectiveLimit(e.limit),c=buildSearchCommand({contextLines:e.context??0,glob:e.glob,ignoreCase:e.ignoreCase===!0,limit:s,literal:shouldUseFixedStrings(e.pattern,e.literal),outputMode:o,path:a,pattern:e.pattern}),l=await t.run({abortSignal:n,command:c}),u=truncateUtf8(l.stdout,MAX_GREP_COMMAND_BYTES),d=u.truncated;if(l.exitCode!==0&&l.exitCode!==1||l.exitCode===1&&l.stderr.trim().length>0){let e=l.stderr.trim()||u.value.trim()||`no command output`;throw Error(`grep failed (exit ${l.exitCode}): ${truncateUtf8(e,MAX_GREP_LINE_BYTES).value}`)}return processGrepOutput({commandTruncated:d,limit:s,outputMode:o,path:r,stdout:u.value})}async function sandboxRealPath(e,t,n,r){let i=await e.run({abortSignal:r,command:`realpath -z -- ${shellQuote(t)}`});if(i.exitCode!==0){let e=i.stderr.trim()||i.stdout.trim()||`no command output`;throw Error(`${n} could not be resolved: ${truncateUtf8(e,MAX_GREP_LINE_BYTES).value}`)}let a=i.stdout.endsWith(`\0`)?i.stdout.slice(0,-1):i.stdout;if(a.length===0||a.includes(`\0`))throw Error(`${n} returned an invalid realpath`);return a}function assertRealPathWithinWorkspace(e,t){if(e!==t&&!e.startsWith(`${t}/`))throw Error(`grep path resolves outside /workspace: ${e}`)}function buildSearchCommand(e){return[`set -o pipefail`,`{`,` if command -v rg >/dev/null 2>&1; then`,` ${buildRipgrepCommand(e)}`,` else`,` ${buildPosixGrepCommand(e)}`,` fi`,`} 2>&1 | head -c 262145`,"search_status=${PIPESTATUS[0]}",`if [ "$search_status" -eq 141 ]; then exit 0; fi`,`exit "$search_status"`].join(`
1
+ import{shellQuote}from"./shell.js";const MAX_GREP_LIMIT=200,MAX_GREP_COMMAND_BYTES=262144,MAX_GREP_LINE_BYTES=8192,MAX_GREP_RETURN_BYTES=65536,REGEX_META=/[\\^$.*+?()[\]{}|]/u,GREP_OUTPUT_MODES=[`files_with_matches`,`content`,`count`];function shouldUseFixedStrings(e,t){return t===!0||t!==!1&&!REGEX_META.test(e)}function effectiveOutputMode(e){return e??`files_with_matches`}function effectiveLimit(e){return Math.min(Math.max(1,e??50),200)}function assertWorkspacePath(e,t){if(t!==void 0&&t.split(/[\\/]/u).includes(`..`))throw Error(`grep path must not contain '..'`);if(e!==`/workspace`&&!e.startsWith(`/workspace/`))throw Error(`grep path must stay under /workspace: ${e}`);if(e.split(`/`).includes(`..`))throw Error(`grep path must not contain '..'`);return e}async function executeGrepSearch(e,t,n){let r=assertWorkspacePath(t.resolvePath(e.path??`/workspace`),e.path),i=await sandboxRealPath(t,t.resolvePath(``),`sandbox workspace`,n),a=await sandboxRealPath(t,r,`grep path`,n);assertRealPathWithinWorkspace(a,i);let o=effectiveOutputMode(e.outputMode),s=effectiveLimit(e.limit),c=buildSearchCommand({contextLines:e.context??0,glob:e.glob,ignoreCase:e.ignoreCase===!0,limit:s,literal:shouldUseFixedStrings(e.pattern,e.literal),outputMode:o,path:a,pattern:e.pattern}),l=await t.run({abortSignal:n,command:c}),u=truncateUtf8(l.stdout,MAX_GREP_COMMAND_BYTES),d=u.truncated;if(l.exitCode!==0&&l.exitCode!==1||l.exitCode===1&&l.stderr.trim().length>0){let e=l.stderr.trim()||u.value.trim()||`no command output`;throw Error(`grep failed (exit ${l.exitCode}): ${truncateUtf8(e,MAX_GREP_LINE_BYTES).value}`)}return processGrepOutput({commandTruncated:d,limit:s,outputMode:o,path:r,stdout:u.value})}async function sandboxRealPath(e,t,n,r){let i=await e.run({abortSignal:r,command:`realpath -z -- ${shellQuote(t)}`});if(i.exitCode!==0){let e=i.stderr.trim()||i.stdout.trim()||`no command output`;throw Error(`${n} could not be resolved: ${truncateUtf8(e,MAX_GREP_LINE_BYTES).value}`)}let a=i.stdout.endsWith(`\0`)?i.stdout.slice(0,-1):i.stdout;if(a.length===0||a.includes(`\0`))throw Error(`${n} returned an invalid realpath`);return a}function assertRealPathWithinWorkspace(e,t){if(e!==t&&!e.startsWith(`${t}/`))throw Error(`grep path resolves outside /workspace: ${e}`)}function buildSearchCommand(e){return[`set -o pipefail`,`{`,` if command -v rg >/dev/null 2>&1; then`,` ${buildRipgrepCommand(e)}`,` else`,` ${buildPosixGrepCommand(e)}`,` fi`,`} 2>&1 | head -c 262145`,"search_status=${PIPESTATUS[0]}",`if [ "$search_status" -eq 141 ]; then exit 0; fi`,`exit "$search_status"`].join(`
2
2
  `)}function buildRipgrepCommand(e){let t=[`rg`,`--color=never`,`--hidden`,`--glob`,shellQuote(`!.git/*`)];switch(e.ignoreCase&&t.push(`--ignore-case`),e.literal&&t.push(`--fixed-strings`),e.glob!==void 0&&t.push(`--glob`,shellQuote(e.glob)),e.outputMode){case`files_with_matches`:t.push(`--files-with-matches`,`--max-count`,`1`);break;case`count`:t.push(`--count`);break;case`content`:t.push(`--line-number`,`--with-filename`,`--null`),e.contextLines>0&&t.push(`--context`,String(e.contextLines)),t.push(`--max-count`,String(e.limit))}return t.push(`--`,shellQuote(e.pattern),shellQuote(e.path)),t.join(` `)}function buildPosixGrepCommand(e){let t=[`grep`,`-r`,`--exclude-dir=.git`];switch(e.ignoreCase&&t.push(`-i`),e.literal?t.push(`-F`):t.push(`-E`),e.glob!==void 0&&t.push(`--include=${shellQuote(e.glob)}`),e.outputMode){case`files_with_matches`:t.push(`-l`);break;case`count`:t.push(`-c`);break;case`content`:t.push(`-n`,`-H`,`-Z`),e.contextLines>0&&t.push(`-C`,String(e.contextLines)),t.push(`-m`,String(e.limit))}return t.push(`-e`,shellQuote(e.pattern),shellQuote(e.path)),t.join(` `)}function processGrepOutput(e){let t=e.stdout.split(`
3
3
  `),n=[],r=`
4
4
 
5
5
  [Output truncated. Narrow path or glob, or lower context.]`,i=MAX_GREP_RETURN_BYTES-Buffer.byteLength(r),a=0,o=0,s=0,c=e.commandTruncated===!0,appendLine=e=>{let t=Buffer.byteLength(e)+(n.length===0?0:1);return a+t>i?!1:(n.push(e),a+=t,!0)};for(let r=0;r<t.length;r+=1){let i=t[r]??``;if(i.length===0&&r===t.length-1)continue;if(i===`--`){if(n.length>0&&!appendLine(i)){c=!0;break}continue}let a=i,l=e.outputMode!==`content`;if(e.outputMode===`content`){let e=normalizeContentLine(i);a=e.line,l=e.isMatch}let u=0;if(e.outputMode===`count`&&(u=parseCountLine(a),u===0))continue;if(s>=e.limit){c=!0;break}let d=truncateUtf8(a,MAX_GREP_LINE_BYTES);if(d.truncated&&(c=!0),!appendLine(d.value)){c=!0;break}s+=1,e.outputMode===`count`?o+=u:l&&(o+=1)}if(n.length===0)return{content:c?`[Output truncated. Narrow path or glob, or lower context.]`:`No matches found`,matchCount:0,outputMode:e.outputMode,path:e.path,truncated:c};let l=n.join(`
6
- `);return c&&(l+=r),{content:l,matchCount:o,outputMode:e.outputMode,path:e.path,truncated:c}}function normalizeContentLine(e){let t=e.lastIndexOf(`\0`);if(t===-1)return{isMatch:!1,line:e};let n=e.slice(0,t),r=e.slice(t+1),i=/^(\d+)([:-])(.*)$/u.exec(r);if(i===null)return{isMatch:!1,line:`${n}:${r}`};let[,a,o,s]=i;return{isMatch:o===`:`,line:`${n}${o}${a}${o}${s}`}}function parseCountLine(e){let t=e.lastIndexOf(`:`);if(t===-1)return 0;let n=Number(e.slice(t+1));return Number.isFinite(n)&&n>0?n:0}function truncateUtf8(e,t){if(Buffer.byteLength(e)<=t)return{truncated:!1,value:e};let n=0,r=``;for(let i of e){let e=Buffer.byteLength(i);if(n+e>t)break;r+=i,n+=e}return{truncated:!0,value:r}}export{DEFAULT_GREP_LIMIT,GREP_OUTPUT_MODES,MAX_GREP_COMMAND_BYTES,MAX_GREP_LIMIT,MAX_GREP_LINE_BYTES,MAX_GREP_RETURN_BYTES,assertWorkspacePath,buildPosixGrepCommand,buildRipgrepCommand,buildSearchCommand,effectiveLimit,effectiveOutputMode,executeGrepSearch,processGrepOutput,shouldUseFixedStrings};
6
+ `);return c&&(l+=r),{content:l,matchCount:o,outputMode:e.outputMode,path:e.path,truncated:c}}function normalizeContentLine(e){let t=e.lastIndexOf(`\0`);if(t===-1)return{isMatch:!1,line:e};let n=e.slice(0,t),r=e.slice(t+1),i=/^(\d+)([:-])(.*)$/u.exec(r);if(i===null)return{isMatch:!1,line:`${n}:${r}`};let[,a,o,s]=i;return{isMatch:o===`:`,line:`${n}${o}${a}${o}${s}`}}function parseCountLine(e){let t=e.lastIndexOf(`:`);if(t===-1)return 0;let n=Number(e.slice(t+1));return Number.isFinite(n)&&n>0?n:0}function truncateUtf8(e,t){if(Buffer.byteLength(e)<=t)return{truncated:!1,value:e};let n=0,r=``;for(let i of e){let e=Buffer.byteLength(i);if(n+e>t)break;r+=i,n+=e}return{truncated:!0,value:r}}export{GREP_OUTPUT_MODES,MAX_GREP_COMMAND_BYTES,MAX_GREP_LIMIT,MAX_GREP_LINE_BYTES,MAX_GREP_RETURN_BYTES,assertWorkspacePath,buildPosixGrepCommand,buildRipgrepCommand,buildSearchCommand,effectiveLimit,effectiveOutputMode,executeGrepSearch,processGrepOutput,shouldUseFixedStrings};
@@ -8,7 +8,7 @@ export interface SandboxLike {
8
8
  stderr: string;
9
9
  }>;
10
10
  }
11
- export interface RepoGuidelines {
11
+ interface RepoGuidelines {
12
12
  /** Repo-relative path of the root guideline file, or null when absent. */
13
13
  rootPath: string | null;
14
14
  /** Root guideline content (capped at {@link MAX_GUIDELINE_BYTES}). */
@@ -23,3 +23,4 @@ export interface RepoGuidelines {
23
23
  * AGENTS.md beats CLAUDE.md (CLAUDE.md is often just a pointer at it).
24
24
  */
25
25
  export declare function discoverGuidelines(sandbox: SandboxLike, dir: string): Promise<RepoGuidelines>;
26
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { SandboxSession } from "eve/sandbox";
2
- export type PatchHunk = {
2
+ type PatchHunk = {
3
3
  readonly type: "add";
4
4
  readonly path: string;
5
5
  readonly contents: string;
@@ -12,7 +12,7 @@ export type PatchHunk = {
12
12
  readonly movePath?: string;
13
13
  readonly chunks: readonly UpdateChunk[];
14
14
  };
15
- export interface UpdateChunk {
15
+ interface UpdateChunk {
16
16
  readonly oldLines: readonly string[];
17
17
  readonly newLines: readonly string[];
18
18
  readonly changeContext?: string;
@@ -33,3 +33,4 @@ export declare function applyPatchToSandbox(input: {
33
33
  }): Promise<AppliedPatchFile[]>;
34
34
  export declare function parsePatch(patchText: string): readonly PatchHunk[];
35
35
  export declare function deriveUpdatedContent(path: string, chunks: readonly UpdateChunk[], original: string): string;
36
+ export {};
@@ -1,5 +1,4 @@
1
1
  import { z } from "zod";
2
- export declare const RepoSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
3
2
  export declare const PullRequestWatchInputSchema: z.ZodObject<{
4
3
  repo: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
5
4
  pullRequestNumber: z.ZodNumber;
@@ -41,7 +40,7 @@ export interface PullRequestWatchSnapshot {
41
40
  readonly state: "open" | "closed" | "merged";
42
41
  readonly url: string;
43
42
  }
44
- export interface PullRequestWatchNotificationState {
43
+ interface PullRequestWatchNotificationState {
45
44
  readonly previousSnapshot: PullRequestWatchSnapshot | null;
46
45
  readonly redHeadPolls: number;
47
46
  readonly redHeadWakeSent: boolean;
@@ -1 +1 @@
1
- import extension_default from"../extension.js";import{deleteTokenCacheEntry,getToken}from"../../../../node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/token.js";import"../../../../node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/index.js";import{z}from"#compiled/zod/index.js";const RepoSchema=z.string().trim().regex(/^[A-Za-z0-9-]+\/[A-Za-z0-9._-]+$/u).transform(e=>e.toLowerCase()),PullRequestWatchInputSchema=z.object({repo:RepoSchema,pullRequestNumber:z.number().int().positive(),reviewOwner:z.string().trim().min(1),redHeadOid:z.string().regex(/^[0-9a-f]{40}$/iu).transform(e=>e.toLowerCase())}),PrwatchDeleteInputSchema=z.object({repo:RepoSchema,pullRequestNumber:z.number().int().positive()}),PullRequestSchema=z.object({head:z.object({sha:z.string().min(1)}),html_url:z.string().url(),merged:z.boolean().optional().default(!1),state:z.enum([`open`,`closed`])}),ReviewSchema=z.object({commit_id:z.string().nullable(),state:z.string(),submitted_at:z.string().nullable(),user:z.object({login:z.string()}).nullable()});function initialPullRequestWatchNotificationState(){return{previousSnapshot:null,redHeadPolls:0,redHeadWakeSent:!1}}function framePullRequestWatchWake(e){return`${e}\n\nThis is an internal watch wake, not a request for a progress report. Continue any necessary work. Send a user-facing response only when the original request is complete or a new blocker requires human input. Otherwise, finish by replying with exactly <eve-empty-delivery/> and no other text. Do not report that nothing changed or that work is still in progress.`}function reviewFingerprint(e){return e?.ownerReviewState===null||e===null?null:`${e.ownerReviewState}:${e.ownerReviewSubmittedAt??``}`}function advancePullRequestWatchNotification(e){let t=e.state.previousSnapshot,n=e.snapshot.headOid!==(t?.headOid??e.redHeadOid),r=t!==null&&reviewFingerprint(e.snapshot)!==reviewFingerprint(t),i=e.snapshot.headOid===e.redHeadOid,a=i?e.state.redHeadPolls+1:0,o=null;return n?o=`head_changed`:r?o=`owner_review_changed`:i&&!e.state.redHeadWakeSent&&a===e.staleAfterPolls&&(o=`red_head_stalled`),{state:{previousSnapshot:e.snapshot,redHeadPolls:a,redHeadWakeSent:e.state.redHeadWakeSent||o===`red_head_stalled`},wakeReason:o}}var RetryablePullRequestWatchError=class extends Error{},GitHubWatchResponseError=class extends Error{status;constructor(e,t){super(t),this.name=`GitHubWatchResponseError`,this.status=e}};function errorStatus(e){return typeof e!=`object`||!e||!(`status`in e)?null:typeof e.status==`number`?e.status:null}function shouldRefreshPullRequestWatchToken(e){return errorStatus(e)===401}function isRetryablePullRequestWatchError(e){let t=errorStatus(e);return t===429||t!==null&&t>=500||e instanceof RetryablePullRequestWatchError||e instanceof TypeError||e instanceof Error&&(/^GitHub watch (?:request|token request) failed:/u.test(e.message)||/\((?:429|5\d{2})\b/u.test(e.message))}function pullRequestWatchSnapshot(e){let t=e.reviewOwner.toLowerCase(),n=e.pullRequest.head.sha.toLowerCase(),r=e.reviews.filter(e=>e.commit_id?.toLowerCase()===n&&e.user?.login.toLowerCase()===t).at(-1);return{headOid:n,ownerApprovedCurrentHead:r?.state.toUpperCase()===`APPROVED`,ownerReviewState:r?.state.toUpperCase()??null,ownerReviewSubmittedAt:r?.submitted_at??null,state:e.pullRequest.merged?`merged`:e.pullRequest.state,url:e.pullRequest.html_url}}function repoParts(e){let[t,n]=e.split(`/`);if(t===void 0||n===void 0)throw Error(`Invalid GitHub repository: ${e}`);return{owner:t,name:n}}function repoFullName(e){let t=repoParts(e);return`${t.owner}/${t.name}`}function repoApiPath(e){let t=repoParts(e);return`/repos/${encodeURIComponent(t.owner)}/${encodeURIComponent(t.name)}`}function redactGithubToken(e,t){return t.length===0?e:e.split(t).join(`[redacted]`)}function githubHeaders(e){return{Accept:`application/vnd.github+json`,Authorization:`Bearer ${e}`,"X-GitHub-Api-Version":`2022-11-28`}}function githubTokenParams(e,t){return{authorizationDetails:[{org:e,repositories:[t],type:`github_app_installation`}],subject:{type:`app`}}}async function mintWatchToken(e){let t=extension_default.config.github;if(t===void 0)throw Error(`GitHub is not configured for this agent.`);let n=repoParts(e);if(n.owner!==t.org.toLowerCase())throw Error(`Repository ${e} is outside ${t.org}.`);let r=await getToken(t.connector,githubTokenParams(t.org,n.name));if(r.length===0)throw Error(`Connect returned an empty GitHub token for ${e}.`);return r}async function invalidateWatchToken(e){let t=extension_default.config.github;if(t===void 0)return;let n=repoParts(e);deleteTokenCacheEntry(t.connector,githubTokenParams(t.org,n.name))}async function githubJson(e,t){let n;try{n=await fetch(e,{headers:githubHeaders(t)})}catch(e){throw new RetryablePullRequestWatchError(`GitHub watch request failed: ${e instanceof Error?e.message:String(e)}`)}if(n.ok)return n.json();let r=await n.text().catch(()=>``),i=`GitHub request failed (${n.status} ${n.statusText})`+(r.length>0?`: ${redactGithubToken(r,t)}`:``);throw n.status===429||n.status>=500?new RetryablePullRequestWatchError(i):new GitHubWatchResponseError(n.status,i)}async function readPullRequestWatchSnapshotWithToken(e,t){let n=`https://api.github.com${repoApiPath(e.repo)}/pulls/${e.pullRequestNumber}`,r=PullRequestSchema.parse(await githubJson(n,t));if(r.state===`closed`||r.merged)return pullRequestWatchSnapshot({pullRequest:r,reviewOwner:e.reviewOwner,reviews:[]});let i=[];for(let r=1;r<=20;r+=1){let a=z.array(ReviewSchema).parse(await githubJson(`${n}/reviews?per_page=100&page=${r}`,t));if(i.push(...a),a.length<100)break;if(r===20)throw Error(`PR #${e.pullRequestNumber} has too many reviews to verify`)}return pullRequestWatchSnapshot({pullRequest:r,reviewOwner:e.reviewOwner,reviews:i})}async function readPullRequestWatchSnapshot(e){for(let t=0;t<2;t+=1){let n;try{n=await mintWatchToken(e.repo)}catch(e){throw isRetryablePullRequestWatchError(e)?new RetryablePullRequestWatchError(`GitHub watch token request failed: ${e instanceof Error?e.message:String(e)}`):e}try{return await readPullRequestWatchSnapshotWithToken(e,n)}catch(n){if(t>0||!shouldRefreshPullRequestWatchToken(n))throw n;await invalidateWatchToken(e.repo)}}throw Error(`Pull request watch token refresh exhausted unexpectedly.`)}export{PrwatchDeleteInputSchema,PullRequestWatchInputSchema,RepoSchema,advancePullRequestWatchNotification,framePullRequestWatchWake,initialPullRequestWatchNotificationState,isRetryablePullRequestWatchError,pullRequestWatchSnapshot,readPullRequestWatchSnapshot,repoFullName,shouldRefreshPullRequestWatchToken};
1
+ import extension_default from"../extension.js";import{deleteTokenCacheEntry,getToken}from"../../../../node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/token.js";import"../../../../node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/index.js";import{z}from"#compiled/zod/index.js";const RepoSchema=z.string().trim().regex(/^[A-Za-z0-9-]+\/[A-Za-z0-9._-]+$/u).transform(e=>e.toLowerCase()),PullRequestWatchInputSchema=z.object({repo:RepoSchema,pullRequestNumber:z.number().int().positive(),reviewOwner:z.string().trim().min(1),redHeadOid:z.string().regex(/^[0-9a-f]{40}$/iu).transform(e=>e.toLowerCase())}),PrwatchDeleteInputSchema=z.object({repo:RepoSchema,pullRequestNumber:z.number().int().positive()}),PullRequestSchema=z.object({head:z.object({sha:z.string().min(1)}),html_url:z.string().url(),merged:z.boolean().optional().default(!1),state:z.enum([`open`,`closed`])}),ReviewSchema=z.object({commit_id:z.string().nullable(),state:z.string(),submitted_at:z.string().nullable(),user:z.object({login:z.string()}).nullable()});function initialPullRequestWatchNotificationState(){return{previousSnapshot:null,redHeadPolls:0,redHeadWakeSent:!1}}function framePullRequestWatchWake(e){return`${e}\n\nThis is an internal watch wake, not a request for a progress report. Continue any necessary work. Send a user-facing response only when the original request is complete or a new blocker requires human input. Otherwise, finish by replying with exactly <eve-empty-delivery/> and no other text. Do not report that nothing changed or that work is still in progress.`}function reviewFingerprint(e){return e?.ownerReviewState===null||e===null?null:`${e.ownerReviewState}:${e.ownerReviewSubmittedAt??``}`}function advancePullRequestWatchNotification(e){let t=e.state.previousSnapshot,n=e.snapshot.headOid!==(t?.headOid??e.redHeadOid),r=t!==null&&reviewFingerprint(e.snapshot)!==reviewFingerprint(t),i=e.snapshot.headOid===e.redHeadOid,a=i?e.state.redHeadPolls+1:0,o=null;return n?o=`head_changed`:r?o=`owner_review_changed`:i&&!e.state.redHeadWakeSent&&a===e.staleAfterPolls&&(o=`red_head_stalled`),{state:{previousSnapshot:e.snapshot,redHeadPolls:a,redHeadWakeSent:e.state.redHeadWakeSent||o===`red_head_stalled`},wakeReason:o}}var RetryablePullRequestWatchError=class extends Error{},GitHubWatchResponseError=class extends Error{status;constructor(e,t){super(t),this.name=`GitHubWatchResponseError`,this.status=e}};function errorStatus(e){return typeof e!=`object`||!e||!(`status`in e)?null:typeof e.status==`number`?e.status:null}function shouldRefreshPullRequestWatchToken(e){return errorStatus(e)===401}function isRetryablePullRequestWatchError(e){let t=errorStatus(e);return t===429||t!==null&&t>=500||e instanceof RetryablePullRequestWatchError||e instanceof TypeError||e instanceof Error&&(/^GitHub watch (?:request|token request) failed:/u.test(e.message)||/\((?:429|5\d{2})\b/u.test(e.message))}function pullRequestWatchSnapshot(e){let t=e.reviewOwner.toLowerCase(),n=e.pullRequest.head.sha.toLowerCase(),r=e.reviews.filter(e=>e.commit_id?.toLowerCase()===n&&e.user?.login.toLowerCase()===t).at(-1);return{headOid:n,ownerApprovedCurrentHead:r?.state.toUpperCase()===`APPROVED`,ownerReviewState:r?.state.toUpperCase()??null,ownerReviewSubmittedAt:r?.submitted_at??null,state:e.pullRequest.merged?`merged`:e.pullRequest.state,url:e.pullRequest.html_url}}function repoParts(e){let[t,n]=e.split(`/`);if(t===void 0||n===void 0)throw Error(`Invalid GitHub repository: ${e}`);return{owner:t,name:n}}function repoFullName(e){let t=repoParts(e);return`${t.owner}/${t.name}`}function repoApiPath(e){let t=repoParts(e);return`/repos/${encodeURIComponent(t.owner)}/${encodeURIComponent(t.name)}`}function redactGithubToken(e,t){return t.length===0?e:e.split(t).join(`[redacted]`)}function githubHeaders(e){return{Accept:`application/vnd.github+json`,Authorization:`Bearer ${e}`,"X-GitHub-Api-Version":`2022-11-28`}}function githubTokenParams(e,t){return{authorizationDetails:[{org:e,repositories:[t],type:`github_app_installation`}],subject:{type:`app`}}}async function mintWatchToken(e){let t=extension_default.config.github;if(t===void 0)throw Error(`GitHub is not configured for this agent.`);let n=repoParts(e);if(n.owner!==t.org.toLowerCase())throw Error(`Repository ${e} is outside ${t.org}.`);let r=await getToken(t.connector,githubTokenParams(t.org,n.name));if(r.length===0)throw Error(`Connect returned an empty GitHub token for ${e}.`);return r}async function invalidateWatchToken(e){let t=extension_default.config.github;if(t===void 0)return;let n=repoParts(e);deleteTokenCacheEntry(t.connector,githubTokenParams(t.org,n.name))}async function githubJson(e,t){let n;try{n=await fetch(e,{headers:githubHeaders(t)})}catch(e){throw new RetryablePullRequestWatchError(`GitHub watch request failed: ${e instanceof Error?e.message:String(e)}`)}if(n.ok)return n.json();let r=await n.text().catch(()=>``),i=`GitHub request failed (${n.status} ${n.statusText})`+(r.length>0?`: ${redactGithubToken(r,t)}`:``);throw n.status===429||n.status>=500?new RetryablePullRequestWatchError(i):new GitHubWatchResponseError(n.status,i)}async function readPullRequestWatchSnapshotWithToken(e,t){let n=`https://api.github.com${repoApiPath(e.repo)}/pulls/${e.pullRequestNumber}`,r=PullRequestSchema.parse(await githubJson(n,t));if(r.state===`closed`||r.merged)return pullRequestWatchSnapshot({pullRequest:r,reviewOwner:e.reviewOwner,reviews:[]});let i=[];for(let r=1;r<=20;r+=1){let a=z.array(ReviewSchema).parse(await githubJson(`${n}/reviews?per_page=100&page=${r}`,t));if(i.push(...a),a.length<100)break;if(r===20)throw Error(`PR #${e.pullRequestNumber} has too many reviews to verify`)}return pullRequestWatchSnapshot({pullRequest:r,reviewOwner:e.reviewOwner,reviews:i})}async function readPullRequestWatchSnapshot(e){for(let t=0;t<2;t+=1){let n;try{n=await mintWatchToken(e.repo)}catch(e){throw isRetryablePullRequestWatchError(e)?new RetryablePullRequestWatchError(`GitHub watch token request failed: ${e instanceof Error?e.message:String(e)}`):e}try{return await readPullRequestWatchSnapshotWithToken(e,n)}catch(n){if(t>0||!shouldRefreshPullRequestWatchToken(n))throw n;await invalidateWatchToken(e.repo)}}throw Error(`Pull request watch token refresh exhausted unexpectedly.`)}export{PrwatchDeleteInputSchema,PullRequestWatchInputSchema,advancePullRequestWatchNotification,framePullRequestWatchWake,initialPullRequestWatchNotificationState,isRetryablePullRequestWatchError,pullRequestWatchSnapshot,readPullRequestWatchSnapshot,repoFullName,shouldRefreshPullRequestWatchToken};
@@ -5,7 +5,7 @@ export interface PrwatchTarget {
5
5
  export interface PrwatchRegistration extends PrwatchTarget {
6
6
  readonly callId: string;
7
7
  }
8
- export interface PrwatchRecord {
8
+ interface PrwatchRecord {
9
9
  readonly callId: string;
10
10
  readonly cancelled: boolean;
11
11
  }
@@ -25,3 +25,4 @@ export declare function registerActivePrwatch(input: PrwatchRegistration): Promi
25
25
  export declare function prwatchWasCancelled(input: PrwatchRegistration): Promise<boolean>;
26
26
  export declare function finishPrwatch(input: PrwatchRegistration): Promise<void>;
27
27
  export declare function deletePrwatch(input: PrwatchTarget): Promise<boolean>;
28
+ export {};
@@ -1,8 +1,9 @@
1
- export type HostHttpMethod = "ALL" | "GET" | "POST";
2
- export interface HostHttpRegistration {
1
+ type HostHttpMethod = "ALL" | "GET" | "POST";
2
+ interface HostHttpRegistration {
3
3
  readonly capability: "workflow" | "development" | "schedule";
4
4
  readonly method: HostHttpMethod;
5
5
  readonly path: string;
6
6
  readonly reservationOnly?: boolean;
7
7
  }
8
8
  export declare const HOST_HTTP_INVENTORY: readonly HostHttpRegistration[];
9
+ export {};
@@ -1,8 +1,8 @@
1
1
  import type { SessionAuthContext } from "#channel/types.js";
2
2
  import type { AuthorizationChallenge } from "#harness/authorization.js";
3
3
  import type { SessionStateMap } from "#harness/types.js";
4
- export type ApprovalCandidateStatus = "pending" | "authorization-required" | "allowed" | "rejected" | "failed" | "timed-out" | "stale";
5
- export interface ApprovalCandidateAuditRecord {
4
+ type ApprovalCandidateStatus = "pending" | "authorization-required" | "allowed" | "rejected" | "failed" | "timed-out" | "stale";
5
+ interface ApprovalCandidateAuditRecord {
6
6
  readonly candidateId: string;
7
7
  readonly requestId: string;
8
8
  readonly responder: ApprovalResponderIdentity;
@@ -37,7 +37,7 @@ export interface ActiveApprovalCandidate {
37
37
  readonly authorizationChallenges?: readonly AuthorizationChallenge[];
38
38
  readonly pendingEventEmitted?: boolean;
39
39
  }
40
- export interface ApprovalStateTransition {
40
+ interface ApprovalStateTransition {
41
41
  readonly changed: boolean;
42
42
  readonly state: SessionStateMap | undefined;
43
43
  }
@@ -107,3 +107,4 @@ export declare function getApprovalAuditState(state: SessionStateMap | undefined
107
107
  readonly candidateHistory: readonly ApprovalCandidateAuditRecord[];
108
108
  readonly settlements: readonly ApprovalSettlementAuditRecord[];
109
109
  };
110
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { type AuthorizationChallenge } from "#harness/authorization.js";
2
2
  import type { HarnessSession, HarnessToolMap, StepInput } from "#harness/types.js";
3
3
  import type { InputRequest } from "#shared/input.js";
4
- export interface ApprovalDeliveryResult {
4
+ interface ApprovalDeliveryResult {
5
5
  readonly challenges: readonly AuthorizationChallenge[];
6
6
  readonly feedback: readonly string[];
7
7
  readonly kind: "continue" | "continue-coordination" | "authorization-required" | "responses-completed" | "park";
@@ -33,3 +33,4 @@ export declare function coordinateApprovalDelivery(input: {
33
33
  readonly tools: HarnessToolMap;
34
34
  readonly prepareTools?: (request: InputRequest) => Promise<HarnessToolMap>;
35
35
  }): Promise<ApprovalDeliveryResult>;
36
+ export {};
@@ -2,7 +2,7 @@ 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
- export interface CompactionPrompt {
5
+ interface CompactionPrompt {
6
6
  readonly prompt: string;
7
7
  readonly system: string;
8
8
  }
@@ -34,3 +34,4 @@ export declare const TRANSCRIPT_PAYLOAD_LIMIT = 2000;
34
34
  */
35
35
  export declare function stubContentOutputFileParts(output: unknown): unknown;
36
36
  export declare function sliceUtf16Safe(value: string, limit: number): string;
37
+ export {};
@@ -39,10 +39,6 @@ interface ResolvePendingCoordinationResult {
39
39
  }
40
40
  /** Returns the pending coordination batch stored on the session, if any. */
41
41
  export declare function getPendingCoordinationBatch(state: SessionStateMap | undefined): PendingCoordinationBatch | undefined;
42
- /**
43
- * Returns true when the session is parked on pending task/control coordination.
44
- */
45
- export declare function hasPendingCoordinationBatch(state: SessionStateMap | undefined): boolean;
46
42
  export declare function clearPendingCoordinationBatch(session: HarnessSession): HarnessSession;
47
43
  /**
48
44
  * Stores one pending coordination batch on the session.
@@ -1 +1 @@
1
- import{parseJsonObject}from"#shared/json.js";import{createActionResultEvent}from"#protocol/message.js";import{findBlockingWorkflowToolRun,removeBlockingWorkflowToolRuns}from"#harness/workflow-tool-runs.js";import{clearProxyInputRequestsForChild,clearProxyInputRequestsWhere}from"#harness/proxy-input-requests.js";import{findRunningAgentHandle,isResultBoundToRunningHandle}from"#subagents/handles/query.js";import{accumulateSessionUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{settleAgentTurn}from"#subagents/handles/transitions.js";import{markRuntimeWorkflowToolAction}from"#shared/action-types.js";import{normalizeToolModelOutput}from"#harness/tool-model-output.js";const PENDING_COORDINATION_BATCH_KEY=`eve.runtime.pendingCoordinationBatch`;function readSubagentResultOutcome(e){return e.origin===`child`?e.outcome:void 0}function getPendingCoordinationBatch(e){let t=e?.[PENDING_COORDINATION_BATCH_KEY];if(typeof t!=`object`||!t)return;let n=t;if(Array.isArray(n.runtimeActions)&&Array.isArray(n.tasks)&&Array.isArray(n.responseMessages)&&typeof n.event==`object`&&n.event!==null)return n}function hasPendingCoordinationBatch(e){return getPendingCoordinationBatch(e)!==void 0}function clearPendingCoordinationBatch(e){if(e.state?.[PENDING_COORDINATION_BATCH_KEY]===void 0)return e;let t={...e.state};return delete t[PENDING_COORDINATION_BATCH_KEY],{...e,state:Object.keys(t).length>0?t:void 0}}function setPendingCoordinationBatch(e){assertUniqueCoordinationCallIds([...e.runtimeActions,...e.tasks]);let t={...e.session.state};return t[PENDING_COORDINATION_BATCH_KEY]={runtimeActions:[...e.runtimeActions],tasks:[...e.tasks],event:e.event,localFanoutSize:e.localFanoutSize,responseMessages:[...e.responseMessages]},{...e.session,state:t}}function assertUniqueCoordinationCallIds(e){let t=new Set;for(let n of e){if(t.has(n.callId))throw Error(`Coordination batch contains duplicate callId "${n.callId}".`);t.add(n.callId)}}function resolveReadyCoordinationResults(e){let t=getPendingCoordinationBatch(e.session.state);if(t!==void 0)return resolveResultsForCoordinationBatch({batch:t,results:e.results,state:e.session.state})}function resolveResultsForCoordinationBatch(e){return resolveRuntimeActionResultsForCallIds({pendingCallIds:[...e.batch.runtimeActions,...e.batch.tasks].map(e=>e.callId),results:e.results.filter(t=>isResultBoundToRunningHandle(e.state,t))})}async function resolvePendingCoordination(e){let t=getPendingCoordinationBatch(e.session.state);if(t===void 0)return{messages:[...e.session.history],outcome:`continue`,session:e.session};let n=resolveReadyCoordinationResults({results:e.stepInput?.runtimeActionResults??[],session:e.session});if(n===void 0)return{messages:[...e.session.history],outcome:`unresolved`,session:e.session};let r=e.session;for(let e of n){if(e.kind!==`subagent-result`||e.origin!==`child`||readBackgroundTaskReceipt(e)!==void 0)continue;let t=findRunningAgentHandle(r.state,{callId:e.callId});if(t===void 0)continue;let n=readSubagentResultOutcome(e);if(n===void 0)continue;n.kind===`terminal`&&`continuationToken`in t.address&&(r=clearProxyInputRequestsForChild(r,t.address.continuationToken));let i=settleAgentTurn(r,{operationId:t.operation.id,outcome:n});i.kind===`settled`&&(r=i.session)}for(let e of n){if(e.kind!==`tool-result`)continue;let n=findBlockingWorkflowToolRun(r.state,e.callId,t.event.turnId);n!==void 0&&(r=removeBlockingWorkflowToolRuns(clearProxyInputRequestsWhere(r,e=>e.answerHook?.runId===n.address.runId),t.event.turnId,n.callId))}let i={...r.state};delete i[PENDING_COORDINATION_BATCH_KEY],r={...r,state:Object.keys(i).length>0?i:void 0};for(let e of n){if(e.kind!==`subagent-result`)continue;let t=readSubagentResultOutcome(e);t!==void 0&&(r=setTurnUsageState(r,accumulateSessionUsage({previous:getTurnUsageState(r.state),usage:t.usageDelta})))}if(e.emit!==void 0)for(let r of n){if(r.kind===`subagent-result`&&r.origin===`child`&&r.outcome.result.kind===`succeeded`&&readBackgroundTaskReceipt(r)===void 0){let t={callId:r.callId,output:typeof r.output==`string`?r.output:JSON.stringify(r.output),subagentName:r.subagentName};await e.emit({data:t,type:`subagent.completed`})}await e.emit(createActionResultEvent({result:r,sequence:t.event.sequence,stepIndex:t.event.stepIndex,turnId:t.event.turnId}))}let a=[];for(let t of n){switch(t.kind){case`load-skill-result`:a.push({output:toToolResultOutput(t),toolCallId:t.callId,toolName:`load_skill`,type:`tool-result`});continue;case`subagent-result`:a.push({output:toToolResultOutput(t),toolCallId:t.callId,toolName:t.subagentName,type:`tool-result`});continue;case`tool-result`:a.push({output:await projectToolResultOutput(t,e.tools?.get(t.toolName)),toolCallId:t.callId,toolName:t.toolName,type:`tool-result`});continue}throw Error(`Unsupported runtime action result kind "${String(t)}".`)}let o=[...r.history,...t.responseMessages];return a.length>0&&o.push({content:a,role:`tool`}),{messages:o,outcome:`resolved`,session:r}}function readBackgroundTaskReceipt(e){return`backgroundTask`in e?e.backgroundTask:void 0}function createRuntimeActionRequestFromToolCall(e){let t=e.tools.get(e.toolCall.toolName),n=resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});if(t?.frameworkAction===`load-skill`)return{callId:e.toolCall.toolCallId,input:n,kind:`load-skill`};let r={callId:e.toolCall.toolCallId,input:n,kind:`tool-call`,toolName:e.toolCall.toolName};return t?.workflowId===void 0?r:markRuntimeWorkflowToolAction(r)}function createCoordinationRequestFromToolCall(e){let t=e.tools.get(e.toolCall.toolName),n=resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});if(t?.runtimeAction?.kind===`task-control`)return{kind:`runtime-action`,request:{callId:e.toolCall.toolCallId,input:n,kind:`tool-call`,toolName:e.toolCall.toolName}};if(t?.workflowId!==void 0)return{kind:`task`,request:{callId:e.toolCall.toolCallId,executeInput:t.executeInput?.(n),input:n,kind:`workflow-task`,toolName:e.toolCall.toolName,workflowId:t.workflowId}};throw Error(`Deferred tool "${e.toolCall.toolName}" has no task or runtime action.`)}function resolveToolCallInputObject(e,t){if(e==null||typeof e==`string`&&e.trim()===``)return{};try{return parseJsonObject(typeof e==`string`?parseJsonStringInput(e):e)}catch(e){let n=e instanceof Error?e.message:String(e);throw TypeError(`Failed to parse tool-call arguments for "${t.toolName}" (${t.callId}): ${n}`,{cause:e})}}function parseJsonStringInput(e){return JSON.parse(e)}async function projectToolResultOutput(e,t){return e.isError===!0||t?.toModelOutput===void 0?toToolResultOutput(e):normalizeToolModelOutput({output:await t.toModelOutput(e.output),toolCallId:e.callId,toolName:e.toolName})}function toToolResultOutput(e){return typeof e.output==`string`?e.isError===!0?{type:`error-text`,value:e.output}:{type:`text`,value:e.output}:e.isError===!0?{type:`error-json`,value:toMutableJsonValue(e.output)}:{type:`json`,value:toMutableJsonValue(e.output)}}function toMutableJsonValue(e){if(e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e))return e.map(e=>toMutableJsonValue(e));let t={};for(let[n,r]of Object.entries(e))t[n]=toMutableJsonValue(r);return t}export{assertUniqueCoordinationCallIds,clearPendingCoordinationBatch,createCoordinationRequestFromToolCall,createRuntimeActionRequestFromToolCall,getPendingCoordinationBatch,hasPendingCoordinationBatch,resolvePendingCoordination,resolveToolCallInputObject,setPendingCoordinationBatch};
1
+ import{parseJsonObject}from"#shared/json.js";import{createActionResultEvent}from"#protocol/message.js";import{findBlockingWorkflowToolRun,removeBlockingWorkflowToolRuns}from"#harness/workflow-tool-runs.js";import{clearProxyInputRequestsForChild,clearProxyInputRequestsWhere}from"#harness/proxy-input-requests.js";import{findRunningAgentHandle,isResultBoundToRunningHandle}from"#subagents/handles/query.js";import{accumulateSessionUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{settleAgentTurn}from"#subagents/handles/transitions.js";import{markRuntimeWorkflowToolAction}from"#shared/action-types.js";import{normalizeToolModelOutput}from"#harness/tool-model-output.js";const PENDING_COORDINATION_BATCH_KEY=`eve.runtime.pendingCoordinationBatch`;function readSubagentResultOutcome(e){return e.origin===`child`?e.outcome:void 0}function getPendingCoordinationBatch(e){let t=e?.[PENDING_COORDINATION_BATCH_KEY];if(typeof t!=`object`||!t)return;let n=t;if(Array.isArray(n.runtimeActions)&&Array.isArray(n.tasks)&&Array.isArray(n.responseMessages)&&typeof n.event==`object`&&n.event!==null)return n}function clearPendingCoordinationBatch(e){if(e.state?.[PENDING_COORDINATION_BATCH_KEY]===void 0)return e;let t={...e.state};return delete t[PENDING_COORDINATION_BATCH_KEY],{...e,state:Object.keys(t).length>0?t:void 0}}function setPendingCoordinationBatch(e){assertUniqueCoordinationCallIds([...e.runtimeActions,...e.tasks]);let t={...e.session.state};return t[PENDING_COORDINATION_BATCH_KEY]={runtimeActions:[...e.runtimeActions],tasks:[...e.tasks],event:e.event,localFanoutSize:e.localFanoutSize,responseMessages:[...e.responseMessages]},{...e.session,state:t}}function assertUniqueCoordinationCallIds(e){let t=new Set;for(let n of e){if(t.has(n.callId))throw Error(`Coordination batch contains duplicate callId "${n.callId}".`);t.add(n.callId)}}function resolveReadyCoordinationResults(e){let t=getPendingCoordinationBatch(e.session.state);if(t!==void 0)return resolveResultsForCoordinationBatch({batch:t,results:e.results,state:e.session.state})}function resolveResultsForCoordinationBatch(e){return resolveRuntimeActionResultsForCallIds({pendingCallIds:[...e.batch.runtimeActions,...e.batch.tasks].map(e=>e.callId),results:e.results.filter(t=>isResultBoundToRunningHandle(e.state,t))})}async function resolvePendingCoordination(e){let t=getPendingCoordinationBatch(e.session.state);if(t===void 0)return{messages:[...e.session.history],outcome:`continue`,session:e.session};let n=resolveReadyCoordinationResults({results:e.stepInput?.runtimeActionResults??[],session:e.session});if(n===void 0)return{messages:[...e.session.history],outcome:`unresolved`,session:e.session};let r=e.session;for(let e of n){if(e.kind!==`subagent-result`||e.origin!==`child`||readBackgroundTaskReceipt(e)!==void 0)continue;let t=findRunningAgentHandle(r.state,{callId:e.callId});if(t===void 0)continue;let n=readSubagentResultOutcome(e);if(n===void 0)continue;n.kind===`terminal`&&`continuationToken`in t.address&&(r=clearProxyInputRequestsForChild(r,t.address.continuationToken));let i=settleAgentTurn(r,{operationId:t.operation.id,outcome:n});i.kind===`settled`&&(r=i.session)}for(let e of n){if(e.kind!==`tool-result`)continue;let n=findBlockingWorkflowToolRun(r.state,e.callId,t.event.turnId);n!==void 0&&(r=removeBlockingWorkflowToolRuns(clearProxyInputRequestsWhere(r,e=>e.answerHook?.runId===n.address.runId),t.event.turnId,n.callId))}let i={...r.state};delete i[PENDING_COORDINATION_BATCH_KEY],r={...r,state:Object.keys(i).length>0?i:void 0};for(let e of n){if(e.kind!==`subagent-result`)continue;let t=readSubagentResultOutcome(e);t!==void 0&&(r=setTurnUsageState(r,accumulateSessionUsage({previous:getTurnUsageState(r.state),usage:t.usageDelta})))}if(e.emit!==void 0)for(let r of n){if(r.kind===`subagent-result`&&r.origin===`child`&&r.outcome.result.kind===`succeeded`&&readBackgroundTaskReceipt(r)===void 0){let t={callId:r.callId,output:typeof r.output==`string`?r.output:JSON.stringify(r.output),subagentName:r.subagentName};await e.emit({data:t,type:`subagent.completed`})}await e.emit(createActionResultEvent({result:r,sequence:t.event.sequence,stepIndex:t.event.stepIndex,turnId:t.event.turnId}))}let a=[];for(let t of n){switch(t.kind){case`load-skill-result`:a.push({output:toToolResultOutput(t),toolCallId:t.callId,toolName:`load_skill`,type:`tool-result`});continue;case`subagent-result`:a.push({output:toToolResultOutput(t),toolCallId:t.callId,toolName:t.subagentName,type:`tool-result`});continue;case`tool-result`:a.push({output:await projectToolResultOutput(t,e.tools?.get(t.toolName)),toolCallId:t.callId,toolName:t.toolName,type:`tool-result`});continue}throw Error(`Unsupported runtime action result kind "${String(t)}".`)}let o=[...r.history,...t.responseMessages];return a.length>0&&o.push({content:a,role:`tool`}),{messages:o,outcome:`resolved`,session:r}}function readBackgroundTaskReceipt(e){return`backgroundTask`in e?e.backgroundTask:void 0}function createRuntimeActionRequestFromToolCall(e){let t=e.tools.get(e.toolCall.toolName),n=resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});if(t?.frameworkAction===`load-skill`)return{callId:e.toolCall.toolCallId,input:n,kind:`load-skill`};let r={callId:e.toolCall.toolCallId,input:n,kind:`tool-call`,toolName:e.toolCall.toolName};return t?.workflowId===void 0?r:markRuntimeWorkflowToolAction(r)}function createCoordinationRequestFromToolCall(e){let t=e.tools.get(e.toolCall.toolName),n=resolveToolCallInputObject(e.toolCall.input,{callId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});if(t?.runtimeAction?.kind===`task-control`)return{kind:`runtime-action`,request:{callId:e.toolCall.toolCallId,input:n,kind:`tool-call`,toolName:e.toolCall.toolName}};if(t?.workflowId!==void 0)return{kind:`task`,request:{callId:e.toolCall.toolCallId,executeInput:t.executeInput?.(n),input:n,kind:`workflow-task`,toolName:e.toolCall.toolName,workflowId:t.workflowId}};throw Error(`Deferred tool "${e.toolCall.toolName}" has no task or runtime action.`)}function resolveToolCallInputObject(e,t){if(e==null||typeof e==`string`&&e.trim()===``)return{};try{return parseJsonObject(typeof e==`string`?parseJsonStringInput(e):e)}catch(e){let n=e instanceof Error?e.message:String(e);throw TypeError(`Failed to parse tool-call arguments for "${t.toolName}" (${t.callId}): ${n}`,{cause:e})}}function parseJsonStringInput(e){return JSON.parse(e)}async function projectToolResultOutput(e,t){return e.isError===!0||t?.toModelOutput===void 0?toToolResultOutput(e):normalizeToolModelOutput({output:await t.toModelOutput(e.output),toolCallId:e.callId,toolName:e.toolName})}function toToolResultOutput(e){return typeof e.output==`string`?e.isError===!0?{type:`error-text`,value:e.output}:{type:`text`,value:e.output}:e.isError===!0?{type:`error-json`,value:toMutableJsonValue(e.output)}:{type:`json`,value:toMutableJsonValue(e.output)}}function toMutableJsonValue(e){if(e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e))return e.map(e=>toMutableJsonValue(e));let t={};for(let[n,r]of Object.entries(e))t[n]=toMutableJsonValue(r);return t}export{assertUniqueCoordinationCallIds,clearPendingCoordinationBatch,createCoordinationRequestFromToolCall,createRuntimeActionRequestFromToolCall,getPendingCoordinationBatch,resolvePendingCoordination,resolveToolCallInputObject,setPendingCoordinationBatch};
@@ -1,5 +1,4 @@
1
1
  import type { ModelMessage } from "ai";
2
- import type { RuntimeToolCallActionRequest } from "#shared/action-types.js";
3
2
  import type { InputRequest } from "#shared/input.js";
4
3
  import { getApprovedTools } from "#harness/hitl/approval-input-requests.js";
5
4
  import type { RejectedActionBatch } from "#harness/hitl/approval-input-requests.js";
@@ -10,7 +9,7 @@ import type { HarnessSession, StepInput } from "#harness/types.js";
10
9
  export { getApprovedTools, clearPendingSessionLimitPrompt };
11
10
  export type { RejectedActionBatch };
12
11
  export type { ResolvedInputBatch } from "#harness/input-request-resolution.js";
13
- export { appendPendingInputBatch, consumeDeferredStepInput, getPendingInputRequestIds, hasDeferredStepInput, hasPendingInputBatch, } from "#harness/pending-input-batches.js";
12
+ export { appendPendingInputBatch, consumeDeferredStepInput, getPendingInputRequestIds, hasPendingInputBatch, } from "#harness/pending-input-batches.js";
14
13
  /** Returns true when the step input carries user-facing turn input. */
15
14
  export declare function hasStepInput(input?: StepInput): boolean;
16
15
  /** Stored partial answers are not runnable work until they can resolve a batch. */
@@ -34,11 +33,3 @@ export declare function resolvePendingInput(input: {
34
33
  readonly session: HarnessSession;
35
34
  readonly stepInput?: StepInput;
36
35
  }): ResolvePendingInputResult;
37
- /** Creates a runtime tool-call action shape from an AI SDK tool call. */
38
- export declare function createRuntimeToolCallActionFromToolCall(input: {
39
- readonly toolCall: {
40
- readonly input: unknown;
41
- readonly toolCallId: string;
42
- readonly toolName: string;
43
- };
44
- }): RuntimeToolCallActionRequest;
@@ -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{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 selectApprovalReplayBatch(e,t){let n=getPendingInputBatches(e.state);if(n.some(isSessionLimitInputBatch))return;let r=canonicalizeInputResponses((n.length===1?resolveTextMessageInput(n[0],t):t)?.inputResponses??[]),i=findAnsweredApprovalBatches(n,r)[0];return i?.requests.some(e=>isApprovalRequest(e)&&r.some(t=>t.requestId===e.requestId&&t.optionId===`approve`))?i:void 0}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(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,hasPendingInputBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput,selectApprovalReplayBatch};
1
+ import{readClientContext}from"#internal/client-context.js";import{resolveTextToResponses}from"#channel/resolve-text.js";import{appendPendingInputBatch,consumeDeferredStepInput,getDeferredStepInput,getPendingInputBatches,getPendingInputRequestIds,hasPendingInputBatch,queueDeferredStepInput}from"#harness/pending-input-batches.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 selectApprovalReplayBatch(e,t){let n=getPendingInputBatches(e.state);if(n.some(isSessionLimitInputBatch))return;let r=canonicalizeInputResponses((n.length===1?resolveTextMessageInput(n[0],t):t)?.inputResponses??[]),i=findAnsweredApprovalBatches(n,r)[0];return i?.requests.some(e=>isApprovalRequest(e)&&r.some(t=>t.requestId===e.requestId&&t.optionId===`approve`))?i:void 0}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(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})}export{appendPendingInputBatch,clearPendingSessionLimitPrompt,consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasPendingInputBatch,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput,selectApprovalReplayBatch};
@@ -75,10 +75,5 @@ export declare function consumeDeferredStepInput(input: {
75
75
  readonly input?: StepInput;
76
76
  readonly session: HarnessSession;
77
77
  };
78
- /**
79
- * Returns true when the session carries queued follow-up input for the next
80
- * internal harness step.
81
- */
82
- export declare function hasDeferredStepInput(session: HarnessSession): boolean;
83
78
  export declare function getDeferredStepInput(session: HarnessSession): StepInput | undefined;
84
79
  export declare function queueDeferredStepInput(session: HarnessSession, input: StepInput): HarnessSession;
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{ActivityRootTurnIdKey}from"#context/keys.js";import{coalesceTurnInputs}from"#harness/messages.js";const PENDING_INPUT_BATCHES_KEY=`eve.runtime.pendingInputBatches`,LEGACY_PENDING_INPUT_BATCH_KEY=`eve.runtime.pendingInputBatch`,DEFERRED_STEP_INPUT_KEY=`eve.runtime.deferredStepInput`;function hasPendingInputBatch(e){return getPendingInputBatches(e).length>0}function getPendingInputRequestIds(e){return new Set(getPendingInputBatches(e).flatMap(e=>e.requests.map(e=>e.requestId)))}function coercePendingInputBatch(e){if(typeof e!=`object`||!e)return;let t=e;if(Array.isArray(t.requests)&&Array.isArray(t.responseMessages))return t}function getPendingInputBatches(e){let t=e?.[PENDING_INPUT_BATCHES_KEY];if(Array.isArray(t)){let e=t.map(e=>coercePendingInputBatch(e)).filter(e=>e!==void 0);return assertUniqueRequestIds(e),e}let n=coercePendingInputBatch(e?.[LEGACY_PENDING_INPUT_BATCH_KEY]),r=n===void 0?[]:[n];return assertUniqueRequestIds(r),r}function assertUniqueRequestIds(e){let t=new Set;for(let n of e)for(let e of n.requests){if(t.has(e.requestId))throw TypeError(`Internal pending input invariant violated: requestId must be unique across all pending batches: ${JSON.stringify(e.requestId)}.`);t.add(e.requestId)}}function removePendingInputBatches(e,t){let n=new Set(t);return setPendingInputBatches(e,getPendingInputBatches(e.state).filter(e=>!n.has(e)))}function setPendingInputBatches(e,t){assertUniqueRequestIds(t);let n={...e.state};return delete n[LEGACY_PENDING_INPUT_BATCH_KEY],t.length===0?delete n[PENDING_INPUT_BATCHES_KEY]:n[PENDING_INPUT_BATCHES_KEY]=t.map(e=>({event:e.event,activityRootTurnId:e.activityRootTurnId,responseAuthRequiredRequestIds:e.responseAuthRequiredRequestIds,toolReplayIdentities:e.toolReplayIdentities,requests:[...e.requests],responseMessages:[...e.responseMessages]})),{...e,state:Object.keys(n).length>0?n:void 0}}function appendPendingInputBatch(e){return setPendingInputBatches(e.session,[...getPendingInputBatches(e.session.state),{event:e.event,activityRootTurnId:e.activityRootTurnId??contextStorage.getStore()?.get(ActivityRootTurnIdKey),responseAuthRequiredRequestIds:e.responseAuthRequiredRequestIds,toolReplayIdentities:e.toolReplayIdentities,requests:e.requests,responseMessages:e.responseMessages}])}function activityRootTurnIdForInputResponses(e,t){return getPendingInputBatches(e).find(e=>e.requests.some(e=>t.has(e.requestId)))?.activityRootTurnId}function activityRequestIdsForRootTurn(e,t){return getPendingInputBatches(e).flatMap(e=>e.activityRootTurnId===t?e.requests.map(e=>e.requestId):[])}function consumeDeferredStepInput(e){let t=getDeferredStepInput(e.session);if(t===void 0)return e;let n=clearDeferredStepInput(e.session);return e.input===void 0?{input:t,session:n}:{input:coalesceTurnInputs(t,e.input),session:n}}function hasDeferredStepInput(e){return getDeferredStepInput(e)!==void 0}function getDeferredStepInput(e){return e.state?.[DEFERRED_STEP_INPUT_KEY]}function queueDeferredStepInput(e,t){let n=getDeferredStepInput(e),r=n===void 0?t:coalesceTurnInputs(n,t),i={...e.state};return i[DEFERRED_STEP_INPUT_KEY]=r,{...e,state:i}}function clearDeferredStepInput(e){if(e.state?.[DEFERRED_STEP_INPUT_KEY]===void 0)return e;let t={...e.state};return delete t[DEFERRED_STEP_INPUT_KEY],{...e,state:Object.keys(t).length>0?t:void 0}}export{activityRequestIdsForRootTurn,activityRootTurnIdForInputResponses,appendPendingInputBatch,consumeDeferredStepInput,getDeferredStepInput,getPendingInputBatches,getPendingInputRequestIds,hasDeferredStepInput,hasPendingInputBatch,queueDeferredStepInput,removePendingInputBatches};
1
+ import{contextStorage}from"#context/container.js";import{ActivityRootTurnIdKey}from"#context/keys.js";import{coalesceTurnInputs}from"#harness/messages.js";const PENDING_INPUT_BATCHES_KEY=`eve.runtime.pendingInputBatches`,LEGACY_PENDING_INPUT_BATCH_KEY=`eve.runtime.pendingInputBatch`,DEFERRED_STEP_INPUT_KEY=`eve.runtime.deferredStepInput`;function hasPendingInputBatch(e){return getPendingInputBatches(e).length>0}function getPendingInputRequestIds(e){return new Set(getPendingInputBatches(e).flatMap(e=>e.requests.map(e=>e.requestId)))}function coercePendingInputBatch(e){if(typeof e!=`object`||!e)return;let t=e;if(Array.isArray(t.requests)&&Array.isArray(t.responseMessages))return t}function getPendingInputBatches(e){let t=e?.[PENDING_INPUT_BATCHES_KEY];if(Array.isArray(t)){let e=t.map(e=>coercePendingInputBatch(e)).filter(e=>e!==void 0);return assertUniqueRequestIds(e),e}let n=coercePendingInputBatch(e?.[LEGACY_PENDING_INPUT_BATCH_KEY]),r=n===void 0?[]:[n];return assertUniqueRequestIds(r),r}function assertUniqueRequestIds(e){let t=new Set;for(let n of e)for(let e of n.requests){if(t.has(e.requestId))throw TypeError(`Internal pending input invariant violated: requestId must be unique across all pending batches: ${JSON.stringify(e.requestId)}.`);t.add(e.requestId)}}function removePendingInputBatches(e,t){let n=new Set(t);return setPendingInputBatches(e,getPendingInputBatches(e.state).filter(e=>!n.has(e)))}function setPendingInputBatches(e,t){assertUniqueRequestIds(t);let n={...e.state};return delete n[LEGACY_PENDING_INPUT_BATCH_KEY],t.length===0?delete n[PENDING_INPUT_BATCHES_KEY]:n[PENDING_INPUT_BATCHES_KEY]=t.map(e=>({event:e.event,activityRootTurnId:e.activityRootTurnId,responseAuthRequiredRequestIds:e.responseAuthRequiredRequestIds,toolReplayIdentities:e.toolReplayIdentities,requests:[...e.requests],responseMessages:[...e.responseMessages]})),{...e,state:Object.keys(n).length>0?n:void 0}}function appendPendingInputBatch(e){return setPendingInputBatches(e.session,[...getPendingInputBatches(e.session.state),{event:e.event,activityRootTurnId:e.activityRootTurnId??contextStorage.getStore()?.get(ActivityRootTurnIdKey),responseAuthRequiredRequestIds:e.responseAuthRequiredRequestIds,toolReplayIdentities:e.toolReplayIdentities,requests:e.requests,responseMessages:e.responseMessages}])}function activityRootTurnIdForInputResponses(e,t){return getPendingInputBatches(e).find(e=>e.requests.some(e=>t.has(e.requestId)))?.activityRootTurnId}function activityRequestIdsForRootTurn(e,t){return getPendingInputBatches(e).flatMap(e=>e.activityRootTurnId===t?e.requests.map(e=>e.requestId):[])}function consumeDeferredStepInput(e){let t=getDeferredStepInput(e.session);if(t===void 0)return e;let n=clearDeferredStepInput(e.session);return e.input===void 0?{input:t,session:n}:{input:coalesceTurnInputs(t,e.input),session:n}}function getDeferredStepInput(e){return e.state?.[DEFERRED_STEP_INPUT_KEY]}function queueDeferredStepInput(e,t){let n=getDeferredStepInput(e),r=n===void 0?t:coalesceTurnInputs(n,t),i={...e.state};return i[DEFERRED_STEP_INPUT_KEY]=r,{...e,state:i}}function clearDeferredStepInput(e){if(e.state?.[DEFERRED_STEP_INPUT_KEY]===void 0)return e;let t={...e.state};return delete t[DEFERRED_STEP_INPUT_KEY],{...e,state:Object.keys(t).length>0?t:void 0}}export{activityRequestIdsForRootTurn,activityRootTurnIdForInputResponses,appendPendingInputBatch,consumeDeferredStepInput,getDeferredStepInput,getPendingInputBatches,getPendingInputRequestIds,hasPendingInputBatch,queueDeferredStepInput,removePendingInputBatches};
@@ -5,7 +5,7 @@ import type { WebSearchProvider } from "#shared/web-search.js";
5
5
  /**
6
6
  * The provider backend resolved for one web search tool invocation.
7
7
  */
8
- export type WebSearchBackend = "anthropic" | "exa" | "google" | "openai" | "parallel";
8
+ type WebSearchBackend = "anthropic" | "exa" | "google" | "openai" | "parallel";
9
9
  /**
10
10
  * Returns the framework tool name that produced an upstream provider tool
11
11
  * `type`, or `null` when the type is not one we know how to remove.
@@ -38,3 +38,4 @@ export declare function resolveWebSearchBackend(modelRef: RuntimeModelReference,
38
38
  * provider matching the current model is loaded.
39
39
  */
40
40
  export declare function resolveWebSearchProviderTool(backend: WebSearchBackend): Promise<ToolSet[string]>;
41
+ export {};
@@ -9,10 +9,6 @@
9
9
  */
10
10
  import type { InputRequest, InputResponse } from "#shared/input.js";
11
11
  import type { SessionUsageLimitViolation } from "#harness/turn-tag-state.js";
12
- /** Synthetic action tool name carried by session-limit continuation requests. */
13
- export declare const SESSION_LIMIT_CONTINUATION_TOOL_NAME = "session_limit_continuation";
14
- /** Option id that grants a fresh token budget window. */
15
- export declare const SESSION_LIMIT_CONTINUE_OPTION_ID = "continue";
16
12
  /** Option id that declines continuation and ends the session. */
17
13
  export declare const SESSION_LIMIT_STOP_OPTION_ID = "stop";
18
14
  /**
@@ -1 +1 @@
1
- const SESSION_LIMIT_CONTINUATION_TOOL_NAME=`session_limit_continuation`,SESSION_LIMIT_CONTINUE_OPTION_ID=`continue`,SESSION_LIMIT_STOP_OPTION_ID=`stop`;function createSessionLimitContinuationRequest(e){let{sessionId:t,violation:n}=e,r=n.kind===`token-cost`?n.usedCostUsd:n.usedTokens,i=`${t}:limit:${n.kind}:${String(r)}`;return{action:{callId:i,input:n.kind===`token-cost`?{kind:n.kind,limitUsd:n.limitUsd,usedCostUsd:n.usedCostUsd}:{kind:n.kind,limit:n.limit,usedTokens:n.usedTokens},kind:`tool-call`,toolName:SESSION_LIMIT_CONTINUATION_TOOL_NAME},allowFreeform:!1,display:`confirmation`,kind:`session-limit`,options:[{description:n.kind===`token-cost`?`Grant a fresh model token-cost budget`:`Grant a fresh token budget`,id:SESSION_LIMIT_CONTINUE_OPTION_ID,label:`Approve`,style:`primary`},{description:`Stop now`,id:SESSION_LIMIT_STOP_OPTION_ID,label:`Stop`,style:`danger`}],prompt:formatSessionLimitPrompt(n),requestId:i}}function formatCompactTokenCount(e){return e>=1e6?`${trimTrailingZero(e/1e6)}M`:e>=1e3?`${trimTrailingZero(e/1e3)}K`:String(e)}function trimTrailingZero(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function formatSessionLimitPrompt(e){return`This session has hit the ${e.kind===`token-cost`?`${formatUsd(e.limitUsd)} model token-cost limit per session`:`${e.kind}-token limit (${formatCompactTokenCount(e.limit)}) per session`}. This is a guardrail against defective long-running sessions. If session activity looks fine, just approve to keep going.`}function formatUsd(e){return`$${(e<1e-6?String(e):e.toFixed(6)).replace(/0+$/u,``).replace(/\.$/u,``)}`}function isSessionLimitContinuationRequest(e){return e.kind===`session-limit`}function isSessionLimitContinuationRequestId(e){return/:limit:(?:input|output):\d+$/u.test(e)||/:limit:token-cost:\d+(?:\.\d+)?(?:e[+-]?\d+)?$/iu.test(e)}function resolveSessionLimitContinuation(e){let t=e.requests.find(isSessionLimitContinuationRequest);if(t===void 0)return;let n=e.responses.find(e=>e.requestId===t.requestId);if(n!==void 0){if(n.optionId===`continue`)return{granted:!0};if(n.optionId===`stop`)return{granted:!1}}}export{SESSION_LIMIT_CONTINUATION_TOOL_NAME,SESSION_LIMIT_CONTINUE_OPTION_ID,SESSION_LIMIT_STOP_OPTION_ID,createSessionLimitContinuationRequest,isSessionLimitContinuationRequest,isSessionLimitContinuationRequestId,resolveSessionLimitContinuation};
1
+ const SESSION_LIMIT_CONTINUE_OPTION_ID=`continue`,SESSION_LIMIT_STOP_OPTION_ID=`stop`;function createSessionLimitContinuationRequest(e){let{sessionId:t,violation:n}=e,r=n.kind===`token-cost`?n.usedCostUsd:n.usedTokens,i=`${t}:limit:${n.kind}:${String(r)}`;return{action:{callId:i,input:n.kind===`token-cost`?{kind:n.kind,limitUsd:n.limitUsd,usedCostUsd:n.usedCostUsd}:{kind:n.kind,limit:n.limit,usedTokens:n.usedTokens},kind:`tool-call`,toolName:`session_limit_continuation`},allowFreeform:!1,display:`confirmation`,kind:`session-limit`,options:[{description:n.kind===`token-cost`?`Grant a fresh model token-cost budget`:`Grant a fresh token budget`,id:SESSION_LIMIT_CONTINUE_OPTION_ID,label:`Approve`,style:`primary`},{description:`Stop now`,id:SESSION_LIMIT_STOP_OPTION_ID,label:`Stop`,style:`danger`}],prompt:formatSessionLimitPrompt(n),requestId:i}}function formatCompactTokenCount(e){return e>=1e6?`${trimTrailingZero(e/1e6)}M`:e>=1e3?`${trimTrailingZero(e/1e3)}K`:String(e)}function trimTrailingZero(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function formatSessionLimitPrompt(e){return`This session has hit the ${e.kind===`token-cost`?`${formatUsd(e.limitUsd)} model token-cost limit per session`:`${e.kind}-token limit (${formatCompactTokenCount(e.limit)}) per session`}. This is a guardrail against defective long-running sessions. If session activity looks fine, just approve to keep going.`}function formatUsd(e){return`$${(e<1e-6?String(e):e.toFixed(6)).replace(/0+$/u,``).replace(/\.$/u,``)}`}function isSessionLimitContinuationRequest(e){return e.kind===`session-limit`}function isSessionLimitContinuationRequestId(e){return/:limit:(?:input|output):\d+$/u.test(e)||/:limit:token-cost:\d+(?:\.\d+)?(?:e[+-]?\d+)?$/iu.test(e)}function resolveSessionLimitContinuation(e){let t=e.requests.find(isSessionLimitContinuationRequest);if(t===void 0)return;let n=e.responses.find(e=>e.requestId===t.requestId);if(n!==void 0){if(n.optionId===SESSION_LIMIT_CONTINUE_OPTION_ID)return{granted:!0};if(n.optionId===`stop`)return{granted:!1}}}export{SESSION_LIMIT_STOP_OPTION_ID,createSessionLimitContinuationRequest,isSessionLimitContinuationRequest,isSessionLimitContinuationRequestId,resolveSessionLimitContinuation};
@@ -1,4 +1,4 @@
1
- export interface SessionUsageAmounts {
1
+ interface SessionUsageAmounts {
2
2
  readonly costUsd?: number;
3
3
  readonly inputTokens: number;
4
4
  readonly outputTokens: number;
@@ -46,3 +46,4 @@ export declare function findRuntimeUsageLimitViolation(input: {
46
46
  readonly runtime: SessionRuntimeUsageLimits;
47
47
  readonly usage: SessionUsageAmounts;
48
48
  }): SessionUsageLimitViolation | null;
49
+ export {};
@@ -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{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{resolveConversationId}from"#shared/conversation-identity.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{getPendingAuthorization,getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput as consumeDeferredStepInput$1,getApprovedTools,getPendingInputRequestIds,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput,selectApprovalReplayBatch}from"#harness/input-requests.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{resolveCallProviderOptions}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}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{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{resolveConversationId}from"#shared/conversation-identity.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{getPendingAuthorization,getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput as consumeDeferredStepInput$1,getApprovedTools,getPendingInputRequestIds,hasRunnableDeferredStepInput,hasStepInput,resolvePendingInput,selectApprovalReplayBatch}from"#harness/input-requests.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{resolveCallProviderOptions}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{buildDynamicTools,buildResponseAuthorizationTools}from"#context/build-dynamic-tools.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionUsageLimit}from"#harness/session-limit-enforcement.js";import{coordinateApprovalDelivery}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`||isTurnCancellation(e.toolOutput.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
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: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||!(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,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(),prepareApprovalTools=async t=>(t?.event!==void 0&&await e.prepareApprovalTurn?.(t.event),C!==void 0&&await e.resolveStepDynamicTools?.({ctx:C,event:createStepStartedEvent({modelId:o.agent.modelReference?.id??`dynamic`,...t?.event??c}),messages:projectHistory(v.messages,o.state)}),buildResponseAuthorizationTools({authoredTools:e.tools,context:C})),w=getPendingAuthorization(o.state)?.challenges??[],T=await coordinateApprovalDelivery({session:o,stepInput:x,tools:e.tools,prepareTools:async t=>{let n=getPendingInputBatches(o.state).find(e=>e.requests.some(e=>e.requestId===t.requestId)),r=await prepareApprovalTools(n),i=n?.toolReplayIdentities?.[t.requestId];if(i!==void 0&&e.toolReplayIdentity?.(t.action.toolName)!==i){let e=new Map(r);return e.delete(t.action.toolName),e}return r}});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 w)e.candidateHistory.some(e=>e.candidateId===t.candidateId&&e.status===`timed-out`&&e.eventEmitted!==!0)&&await h(createAuthorizationCompletedEvent({attemptId:t.attemptId,authorization:t.challenge,candidateId:t.candidateId,name:t.name,outcome:`failed`,reason:`The approval response expired. Please submit a new response.`,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}));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=selectApprovalReplayBatch(o,T.stepInput),D=E===void 0?e.tools:await prepareApprovalTools(E),O=resolvePendingInput({activeTurnId:_?.event.turnId??activeTurnId(c),history:v.messages,internalStep:!isHarnessBetweenTurns(o),resolveApprovalKey:resolveApprovalKeyFromTools(D),session:o,stepInput:T.stepInput});if(O.outcome===`unresolved`){let t=v.outcome===`resolved`?{...O.session,history:validateHarnessModelMessages(v.messages)}:O.session;if(h&&O.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),{next:null,session:setHarnessEmissionState(t,c)}}return v.outcome===`resolved`?(h&&(c=await emitTurnEpilogue(h,c),t=setHarnessEmissionState(t,c)),{next:null,session:t}):(T.kind===`responses-completed`&&isHarnessBetweenTurns(O.session)&&getPendingAuthorization(O.session.state)===void 0&&await h?.(createSessionWaitingEvent()),{next:null,session:O.session})}if(O.resolvedInputs!==void 0)for(let e of O.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&&O.rejectedActions)for(let e of O.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 k=activeTurnId(c),A=getTurnClientContextState(O.session.state,k),j=O.deferredContext===!0?void 0:readClientContext(x),ee=(j??A?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],M=[];if(x?.context!==void 0&&O.deferredContext!==!0)for(let e of x.context)M.push(createFrameworkUserMessage(`context.instruction`,e));let te=frameworkMessageKindForStepInput(x),ne=normalizeUserContent(x?.message),N=ne!==void 0&&!O.deferredMessage&&!O.consumedMessage?await stageAttachmentsToSandbox(ne):void 0;N!==void 0&&M.push(te===void 0?createUserMessage(`user`,N):createFrameworkUserMessage(te,N));let P=[],F;if(h&&(hasStepInput(x)||hasStepInput(T.stepInput))){l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(O.session.history,O.session.state)),prepareMemoryPreamble(l,{history:O.messages,input:[...ee,...M],projector:e.historyProjector,state:O.session.state}));try{let t=await preparePreambleTrace();c=await emitTurnPreamble(h,S??{},c,projectHistory([...O.messages,...ee,...M],O.session.state),e.runtimeIdentity,t)}catch(e){return P=l===void 0?[]:drainDynamicInstructionUserMessages(l),F=l===void 0?void 0:drainMemoryCommit(l),o={...O.session,history:validateHarnessModelMessages([...F?.history??O.session.history,...P]),state:F?.state??O.session.state},failBoundaryEvent(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:activeTurnId(c)})}P=l===void 0?[]:drainDynamicInstructionUserMessages(l),F=l===void 0?void 0:drainMemoryCommit(l),a?.setTurnId(c.turnId)}let re=F?.history??O.session.history,ie=O.session.history.length;o=setHarnessEmissionState({...O.session,history:validateHarnessModelMessages([...re,...P]),state:F?.state??O.session.state},c);let I=validateHarnessModelMessages([...F?.history??O.messages.slice(0,ie),...P,...F===void 0?O.messages.slice(ie):[]]),L=await applySessionLimitContinuation({config:e,emit:h,emissionState:c,limitContinuation:O.limitContinuation,session:o});if(L.result!==null)return L.result;o=L.session;let ae=getAgentHandleStore(o.state);if(!hasUnansweredToolCall(I)){let e=await l?.get(BackgroundToolExecutorKey)?.readAgentViews?.(),t=e===void 0||e.length===0?void 0:[...projectParkedAgentHandles(ae??{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(I,o.state),store:ae});n!==void 0&&I.push(createFrameworkUserMessage(`context.state`,n))}let R=A;j!==void 0&&(R={insertionIndex:A?.insertionIndex??I.length,messages:j,turnId:k}),R!==void 0&&(o=setTurnClientContextState(o,R)),I=[...I,...M];let createModelMessages=e=>{if(R===void 0||R.messages.length===0)return[...e];let t=Math.min(Math.max(0,R.insertionIndex),e.length);return[...e.slice(0,t),...R.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...e.slice(t)]},z=validateHarnessModelMessages(projectHistory(createModelMessages(I),o.state)),B=l,V;try{B!==void 0&&e.dispatchDynamicModelEvent!==void 0&&await e.dispatchDynamicModelEvent({ctx:B,event:{data:{sequence:c.sequence,stepIndex:c.stepIndex,turnId:activeTurnId(c)},type:`step.started`},messages:z}),V=await resolveEffectiveRuntimeModel({config:e,ctx:B,session:o})}catch(e){return failModelSelection(e,c)}o=V.session;let H=V.model,oe=detectPromptCachePath(H),U=oe.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,se=buildGatewayAttributionHeaders(H,e.runtimeIdentity);if(z=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(I),o.state))),h)try{await emitStepStarted(h,c,requireSessionModelReference(o).id,z)}catch(e){return failBoundaryEvent(e,c)}let ce=(O.resolvedInputs??[]).flatMap(e=>e.inputs.filter(e=>e.outcome===`approved`));if(ce.length>0){let t=buildResponseAuthorizationTools({authoredTools:e.tools,context:B});for(let{request:n,toolReplayIdentity:r}of ce){if(r!==void 0&&e.toolReplayIdentity?.(n.action.toolName)!==r)throw Error(`The connection for this tool call changed or is unavailable. Request a new tool call and approval.`);if(!t.has(n.action.toolName))throw Error(`The approved tool is no longer available. Request a new tool call and approval.`)}}let W=getApprovedTools(o,resolveApprovalKeyFromTools(buildResponseAuthorizationTools({authoredTools:e.tools,context:B}))),le=c.sequence===0,ue=le&&B?.get(ScheduleIdKey)!==void 0,G=resolveDeliveryPolicy({hasScheduleProvenance:ue,hasOutputSchema:o.outputSchema!==void 0,isChild:B?.get(ParentSessionKey)!==void 0,isFirstTurn:le,taskDeliveryPhase:B?.get(TurnTaskDeliveryKey),taskDeliveryPolicy:B?.get(TaskDeliveryPolicyKey)}),createRequestMessages=()=>{let e=createCurrentMessages(I,{historyState:B?.get(HistoryStateKey),currentTurnMessages:M,projectedMessages:z});B!==void 0&&e.addSystem(buildDynamicInstructionMessages(B));let t=B?.get(TurnTaskDeliveryKey)===`initiating`?resolveInitiatingTaskContext({state:o.state,turnId:k}):void 0;e.addAnnouncements({availableSkills:B?.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),B?.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&&U?applySystemCacheBreakpoint(r,U):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})}},de=e.tools,Y=0,X,throwIfCompactionFailed=()=>{if(X!==void 0)throw X.error},prepareModelTools=async t=>{let n=buildHarnessToolsWithDynamicSubagents(e.tools,B),i=createBackgroundToolCallBatch(),a=getAdvertisedTools({session:o,tools:n});de=a;let s=await buildToolSetWithProviderTools({approvedTools:W,backgroundBatch:i,disabledProviderTools:t.disabledProviderTools,modelReference:requireSessionModelReference(o),tools:a});if(B!==void 0){let e=getAdvertisedTools({session:o,tools:buildDynamicTools(B)}),n=buildToolSetFromDefinitions({approvedTools:W,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=U?applyLastToolCacheBreakpoint(l,U):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:z,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n});let u=R===void 0?void 0:Math.max(0,I.length-R.insertionIndex),d=await(async()=>{try{return await maybeCompact({abortSignal:e.abortSignal,auth:B?.get(AuthKey)??null,emit:h,emissionState:c,historyProjector:e.historyProjector,messages:[...I],model:H,promptMessages:createModelMessages(I),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&&(I=d.messages,R!==void 0&&u!==void 0&&(R={...R,insertionIndex:Math.max(0,I.length-u)},o=setTurnClientContextState(o,R)),o={...o,compaction:{recentWindowSize:o.compaction.recentWindowSize,threshold:o.compaction.threshold,thresholdPercent:o.compaction.thresholdPercent}},z=validateHarnessModelMessages(normalizeModelMessages(projectHistory(createModelMessages(I),o.state))),K=createRequestMessages(),{effectiveTools:n,backgroundBatch:i,advertisedHarnessTools:s,modelTools:l}=await prepareModelTools(t),Y=await estimateRequestEnvelope({history:z,instructions:prepareModelInstructions(t.extraSystemNote),messages:withTrailingUserNote(K.nonSystemMessages,t.trailingUserNote),tools:n})),Y=Math.max(0,Y-(estimateTokens(K.history)-estimateTokens(I))),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:B?.get(AuthKey)??null,cachePath:oe,emit:h,emissionState:c,emitStepStarted:t.suppressStepStartedEmission!==!0,marker:U,session:o}),b={headers:se,instructions:f,model:H,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)}},fe=0,runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,attemptIndex:fe++,suppressStepStartedEmission:t!==1||e.suppressStepStartedEmission}),{sessionId:o.sessionId,turnId:c.turnId,canRetry:()=>X===void 0},r.signal),pe=await enforceSessionUsageLimit({config:e,emit:h,emissionState:c,messages:z,session:o});if(pe!==null)return pe;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 e=n.error;if(a?.recordError(e),!h)throw e;let t=extractWorkflowStreamWriteErrorDetails(e);if(t!==null){let n=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...t,errorId:n,error:e,sessionId:o.sessionId,turnId:c.turnId}),c=await emitRecoverableFailedTurn(h,c,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:o.continuationToken,details:{...t,errorId:n},message:toErrorMessage(e)}),{next:null,session:setHarnessEmissionState(o,c)}}let r=classifyModelCallError(e),i=createErrorId(),s=summarizeKnownError(e),l=s===null?extractUpstreamRejectionMessage(e):null,u=s?.message??l?.message??toErrorMessage(e),d=s?.hint===void 0?u:`${u} ${s.hint}`,p=extractModelCallErrorDetails(e),m=buildModelCallFailureDetails({catalogSummary:s,error:e,errorId:i,modelCallDetails:p,upstreamRejection:l}),g=buildModelCallFailureLogFields({error:e,errorId:i,modelCallDetails:p,recognized:s!==null||l!==null,sessionId:o.sessionId,turnId:c.turnId});if(r===`terminal`)return s===null?log.error(l?.message??`model call failed terminally`,g):log.error(`${s.name}: ${s.message}`,{errorId:i,hint:s.hint,sessionId:o.sessionId,turnId:c.turnId}),await emitFailedStep(h,c,{code:`MODEL_CALL_FAILED`,details:m,message:u,sessionId:o.sessionId}),{next:f?{done:!0,isError:!0,output:d}:{done:!0,output:``},session:o};log.error(l?.message??`model call failed — parking session for retry by the user`,g),c=await emitRecoverableFailedTurn(h,c,{code:`MODEL_CALL_FAILED`,continuationToken:o.continuationToken,details:m,message:u});let _={isError:!0,output:d};return o={...o,outputSchema:void 0},{next:null,session:setHarnessEmissionState(o,c),settledTurn:_}}}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(H)}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 me;try{r.check(),me=await handleStepResult({config:e,emit:h,emissionState:r.outputStarted?{...c,assistantOutputStarted:!0}:c,requestEnvelopeTokens:Y,durableModelPromptMessageCount:R===void 0||R.messages.length===0?J.length:void 0,promptMessages:K.history,result:Z,runStep,session:o,coordinationTools:de})}catch(t){if(throwIfTurnAborted(e.abortSignal),r.interrupted)return finishSteeredStep();throw t}return B?.set(HistoryStateKey,K.historyState),me}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. Continue the current user request. Reuse completed results when they satisfy the request. If existing results are stale or insufficient, use the appropriate read tools to get fresh results. Do not repeat writes or other side effects that already completed. Do not 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]:[]),i=E.flatMap(e=>e.kind===`task`?[e.request]:[]);if(y.length===0)return{next:null,session:setHarnessEmissionState(setPendingCoordinationBatch({runtimeActions:e,tasks:i,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:validateHarnessModelMessages(r)}}),advanceStep(o))};let a=setPendingCoordinationBatch({runtimeActions:e,tasks:i,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:C,session:{..._,history:w}});return a=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:y,toolReplayIdentities:captureToolReplayIdentities(t,v),responseMessages:[],session:a}),n&&await n(createInputRequestedEvent({requests:y,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(a,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,toolReplayIdentities:captureToolReplayIdentities(t,v),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})),o=await emitTurnEpilogue(n,o),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:t}=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}));o=await emitTurnEpilogue(n,o)}return{next:null,session:setHarnessEmissionState({..._,history:validateHarnessModelMessages(t),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}):finishTurn({emissionState:o,emit:n,history:r,result:i,schema:A.outputSchema,session:A,stepOutput:p})}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){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t)}async function finishTurn(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),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),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=resolveCallProviderOptions({auth:e.auth,conversationId:resolveConversationId(i.rootSessionId??i.sessionId),model:l.model,modelReference:u,providerOptions:l.providerOptions});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,stepIndex:n.stepIndex,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,stepIndex:n.stepIndex,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 captureToolReplayIdentities(e,t){let n=t.flatMap(t=>{let n=e.toolReplayIdentity?.(t.action.toolName);return n===void 0?[]:[[t.requestId,n]]});return n.length===0?void 0:Object.fromEntries(n)}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};
@@ -6,7 +6,7 @@ import type { ToolModelOutputPart } from "#tools/definition.js";
6
6
  * `json` values are proven JSON-serializable and `content` arrays are
7
7
  * mutable so the value is assignable to the SDK's `ToolResultOutput`.
8
8
  */
9
- export type ToolModelOutputValue = {
9
+ type ToolModelOutputValue = {
10
10
  readonly type: "json";
11
11
  readonly value: JSONValue;
12
12
  } | {
@@ -38,3 +38,4 @@ export declare function normalizeToolModelOutput(input: {
38
38
  readonly toolCallId?: string;
39
39
  readonly toolName: string;
40
40
  }): ToolModelOutputValue;
41
+ export {};