eve 0.81.1 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (687) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/NOTICE +1 -1
  3. package/dist/src/channel/channel-address.d.ts +21 -2
  4. package/dist/src/channel/channel-address.js +1 -1
  5. package/dist/src/channel/channel-operations.d.ts +32 -1
  6. package/dist/src/channel/channel-operations.js +1 -1
  7. package/dist/src/channel/delivery-idempotency.d.ts +4 -0
  8. package/dist/src/channel/delivery-idempotency.js +1 -0
  9. package/dist/src/channel/pending-authorization.d.ts +5 -0
  10. package/dist/src/channel/pending-authorization.js +1 -1
  11. package/dist/src/channel/routes.d.ts +6 -0
  12. package/dist/src/channel/session.d.ts +7 -0
  13. package/dist/src/channel/session.js +1 -1
  14. package/dist/src/channel/types.d.ts +19 -11
  15. package/dist/src/chunks/{use-eve-agent-DLkjJIm3.js → use-eve-agent-3-WRmJkd.js} +76 -5
  16. package/dist/src/chunks/{use-eve-agent-Bp6nbhfV.js → use-eve-agent-Ci5dr0aR.js} +76 -5
  17. package/dist/src/cli/dev/command-options.d.ts +1 -0
  18. package/dist/src/cli/dev/diagnostic-dump.js +1 -1
  19. package/dist/src/cli/dev/local-server-child.js +1 -1
  20. package/dist/src/cli/dev/local-server-cleanup.js +1 -1
  21. package/dist/src/cli/dev/tui/question-panel.d.ts +4 -1
  22. package/dist/src/cli/dev/tui/question-panel.js +1 -1
  23. package/dist/src/cli/dev/tui/terminal-renderer.js +4 -4
  24. package/dist/src/cli/run.d.ts +1 -0
  25. package/dist/src/cli/run.js +1 -1
  26. package/dist/src/client/eve-agent-store.d.ts +1 -1
  27. package/dist/src/client/eve-agent-store.js +1 -1
  28. package/dist/src/client/index.d.ts +2 -1
  29. package/dist/src/client/message-reducer-types.d.ts +7 -3
  30. package/dist/src/client/message-reducer.js +1 -1
  31. package/dist/src/client/session-controls.d.ts +6 -0
  32. package/dist/src/client/session-controls.js +1 -1
  33. package/dist/src/client/session.d.ts +4 -0
  34. package/dist/src/client/session.js +1 -1
  35. package/dist/src/client/transcript-reducer.d.ts +6 -3
  36. package/dist/src/client/transcript-reducer.js +1 -1
  37. package/dist/src/compiled/.vendor-stamp.json +8 -8
  38. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  39. package/dist/src/compiled/@workflow/core/events-consumer.d.ts +2 -0
  40. package/dist/src/compiled/@workflow/core/index.js +2 -2
  41. package/dist/src/compiled/@workflow/core/private.d.ts +5 -3
  42. package/dist/src/compiled/@workflow/core/private.js +1 -1
  43. package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +1 -37
  44. package/dist/src/compiled/@workflow/core/runtime/event-limit-warning.d.ts +32 -0
  45. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +5 -6
  46. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  47. package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +8 -0
  48. package/dist/src/compiled/@workflow/core/runtime/start.d.ts +16 -0
  49. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +15 -18
  50. package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +20 -0
  51. package/dist/src/compiled/@workflow/core/runtime.js +4 -4
  52. package/dist/src/compiled/@workflow/core/seeded-nanoid.d.ts +2 -0
  53. package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +14 -3
  54. package/dist/src/compiled/@workflow/core/serialization.d.ts +1 -1
  55. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  56. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +0 -18
  57. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  58. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  59. package/dist/src/compiled/@workflow/errors/index.d.ts +48 -0
  60. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  61. package/dist/src/compiled/@workflow/world/env-config.d.ts +24 -0
  62. package/dist/src/compiled/@workflow/world/events.d.ts +126 -7
  63. package/dist/src/compiled/@workflow/world/index.d.ts +3 -3
  64. package/dist/src/compiled/@workflow/world/interfaces.d.ts +59 -8
  65. package/dist/src/compiled/@workflow/world/queue.d.ts +71 -9
  66. package/dist/src/compiled/@workflow/world/recovery.d.ts +6 -0
  67. package/dist/src/compiled/@workflow/world/test-support/duplicate-event-fixtures.d.ts +3 -0
  68. package/dist/src/compiled/@workflow/world/test-support/in-band-fence-conformance.d.ts +46 -0
  69. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  70. package/dist/src/compiled/@workflow/world-vercel/index.js +18 -18
  71. package/dist/src/compiled/_chunks/workflow/{attribute-changes-BW-kbMMn.js → attribute-changes-7se_SE2q.js} +3 -3
  72. package/dist/src/compiled/_chunks/workflow/dist-CcnNPAp4.js +1 -0
  73. package/dist/src/compiled/_chunks/workflow/dist-S9cZRway.js +3 -0
  74. package/dist/src/compiled/_chunks/workflow/helpers-CxNRXH0a.js +1 -0
  75. package/dist/src/compiled/_chunks/workflow/private-DLYTSBbu.js +1 -0
  76. package/dist/src/compiled/_chunks/workflow/resume-hook-CPiIfe8r.js +1 -0
  77. package/dist/src/compiled/_chunks/workflow/{run-DzdAqdb1.js → run-BJSLCXR4.js} +6 -6
  78. package/dist/src/compiled/_chunks/workflow/serialization-B9gneT9Z.js +15 -0
  79. package/dist/src/compiled/_chunks/workflow/sleep-BL0oQs3R.js +1 -0
  80. package/dist/src/compiled/_chunks/workflow/{wait-until-xbRRDuUf.js → wait-until-BPou0RGO.js} +1 -1
  81. package/dist/src/compiled/_chunks/workflow/workflow-routes-BaljomCk.js +1 -0
  82. package/dist/src/compiled/{@ai-sdk/code-mode → run}/LICENSE +1 -1
  83. package/dist/src/compiled/run/index.d.ts +384 -0
  84. package/dist/src/compiled/run/index.js +650 -0
  85. package/dist/src/compiler/extension-compatibility.d.ts +28 -20
  86. package/dist/src/compiler/extension-compatibility.js +1 -1
  87. package/dist/src/compiler/load-binding-namespace.d.ts +2 -0
  88. package/dist/src/compiler/load-binding-namespace.js +1 -1
  89. package/dist/src/compiler/manifest.js +1 -1
  90. package/dist/src/compiler/module-lifecycle.d.ts +1 -1
  91. package/dist/src/compiler/module-lifecycle.js +1 -1
  92. package/dist/src/compiler/module-map.js +1 -1
  93. package/dist/src/compiler/normalize-agent-config.js +1 -1
  94. package/dist/src/compiler/normalize-manifest.js +1 -1
  95. package/dist/src/compiler/normalize-sandbox.js +1 -1
  96. package/dist/src/compiler/project-sources.d.ts +6 -0
  97. package/dist/src/compiler/project-sources.js +1 -1
  98. package/dist/src/compiler/workspace-resources.js +1 -1
  99. package/dist/src/context/build-callback-context.js +1 -1
  100. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  101. package/dist/src/context/keys.d.ts +2 -0
  102. package/dist/src/context/keys.js +1 -1
  103. package/dist/src/context/providers/sandbox.js +1 -1
  104. package/dist/src/discover/extension-specifier.d.ts +1 -0
  105. package/dist/src/discover/extension-specifier.js +1 -1
  106. package/dist/src/evals/cli/eval-state-directory.d.ts +7 -0
  107. package/dist/src/evals/cli/eval-state-directory.js +1 -0
  108. package/dist/src/evals/cli/eval.js +2 -2
  109. package/dist/src/evals/runner/artifacts.js +1 -1
  110. package/dist/src/evals/runner/derive-run-facts.d.ts +12 -0
  111. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  112. package/dist/src/evals/runner/execute-task.js +1 -1
  113. package/dist/src/evals/types.d.ts +3 -2
  114. package/dist/src/eve-channel/index.js +1 -1
  115. package/dist/src/eve-channel/request.d.ts +0 -1
  116. package/dist/src/eve-channel/request.js +2 -2
  117. package/dist/src/eve-channel/support.d.ts +2 -0
  118. package/dist/src/eve-channel/support.js +1 -1
  119. package/dist/src/eve-channel/types.d.ts +7 -0
  120. package/dist/src/execution/agent-sessions/context.d.ts +3 -14
  121. package/dist/src/execution/agent-sessions/context.js +1 -1
  122. package/dist/src/execution/agent-sessions/runtime-overrides.d.ts +5 -0
  123. package/dist/src/execution/agent-sessions/session.d.ts +2 -2
  124. package/dist/src/execution/agent-sessions/session.js +1 -1
  125. package/dist/src/execution/agent-sessions/steps.d.ts +2 -0
  126. package/dist/src/execution/agent-sessions/steps.js +1 -1
  127. package/dist/src/execution/coordination-dispatch-shared.d.ts +8 -5
  128. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  129. package/dist/src/execution/coordination-dispatch-step.d.ts +17 -2
  130. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  131. package/dist/src/execution/create-session-step.d.ts +5 -2
  132. package/dist/src/execution/create-session-step.js +1 -1
  133. package/dist/src/execution/deliver-payloads.js +1 -1
  134. package/dist/src/execution/durable-session-store.d.ts +0 -1
  135. package/dist/src/execution/dynamic-connection-recovery.js +1 -1
  136. package/dist/src/execution/dynamic-workflow/program-step.d.ts +7 -7
  137. package/dist/src/execution/dynamic-workflow/program-step.js +1 -1
  138. package/dist/src/execution/dynamic-workflow/schema.d.ts +18 -11
  139. package/dist/src/execution/dynamic-workflow/schema.js +1 -1
  140. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  141. package/dist/src/execution/dynamic-workflow/workflow.js +1 -1
  142. package/dist/src/execution/effective-agent-config.d.ts +8 -2
  143. package/dist/src/execution/effective-agent-config.js +1 -1
  144. package/dist/src/execution/eve-workflow-attributes.d.ts +3 -1
  145. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  146. package/dist/src/execution/install-workflow-deployment-id.d.ts +3 -0
  147. package/dist/src/execution/install-workflow-deployment-id.js +1 -0
  148. package/dist/src/execution/invoke-tool.js +1 -1
  149. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  150. package/dist/src/execution/node-step.d.ts +1 -0
  151. package/dist/src/execution/node-step.js +1 -1
  152. package/dist/src/execution/runtime-context.d.ts +2 -0
  153. package/dist/src/execution/runtime-context.js +1 -1
  154. package/dist/src/execution/sandbox/abort-bound-session.js +1 -1
  155. package/dist/src/execution/sandbox/active-connections.d.ts +28 -0
  156. package/dist/src/execution/sandbox/active-connections.js +1 -0
  157. package/dist/src/execution/sandbox/bindings/docker-cli.d.ts +10 -2
  158. package/dist/src/execution/sandbox/bindings/docker-cli.js +2 -2
  159. package/dist/src/execution/sandbox/bindings/docker-connection.d.ts +15 -0
  160. package/dist/src/execution/sandbox/bindings/docker-connection.js +2 -0
  161. package/dist/src/execution/sandbox/bindings/docker-container.d.ts +2 -0
  162. package/dist/src/execution/sandbox/bindings/docker-container.js +1 -1
  163. package/dist/src/execution/sandbox/bindings/docker-network.d.ts +5 -0
  164. package/dist/src/execution/sandbox/bindings/docker-network.js +1 -1
  165. package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
  166. package/dist/src/execution/sandbox/bindings/docker.d.ts +12 -15
  167. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  168. package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +19 -29
  169. package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
  170. package/dist/src/execution/sandbox/bindings/just-bash.d.ts +2 -4
  171. package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
  172. package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +0 -20
  173. package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -1
  174. package/dist/src/execution/sandbox/bindings/local.d.ts +4 -6
  175. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  176. package/dist/src/execution/sandbox/bindings/vercel-base-runtime.d.ts +2 -0
  177. package/dist/src/execution/sandbox/bindings/vercel-base-runtime.js +2 -2
  178. package/dist/src/execution/sandbox/bindings/vercel-errors.js +2 -2
  179. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.d.ts +7 -5
  180. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.js +1 -1
  181. package/dist/src/execution/sandbox/bindings/vercel.d.ts +5 -11
  182. package/dist/src/execution/sandbox/bindings/vercel.js +1 -2
  183. package/dist/src/execution/sandbox/development-cleanup.d.ts +0 -1
  184. package/dist/src/execution/sandbox/development-cleanup.js +1 -1
  185. package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -1
  186. package/dist/src/execution/sandbox/development-run.d.ts +0 -2
  187. package/dist/src/execution/sandbox/development-run.js +1 -1
  188. package/dist/src/execution/sandbox/dockerfile.d.ts +0 -4
  189. package/dist/src/execution/sandbox/dockerfile.js +1 -1
  190. package/dist/src/execution/sandbox/ensure.d.ts +23 -11
  191. package/dist/src/execution/sandbox/ensure.js +1 -1
  192. package/dist/src/execution/sandbox/glob-tool.js +3 -3
  193. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  194. package/dist/src/execution/sandbox/logging-session.js +1 -1
  195. package/dist/src/execution/sandbox/prewarm.d.ts +23 -3
  196. package/dist/src/execution/sandbox/prewarm.js +2 -1
  197. package/dist/src/execution/sandbox/read-file.js +1 -1
  198. package/dist/src/execution/sandbox/require-sandbox.d.ts +3 -2
  199. package/dist/src/execution/sandbox/require-sandbox.js +1 -1
  200. package/dist/src/execution/sandbox/ripgrep-probe.js +1 -1
  201. package/dist/src/execution/sandbox/session.d.ts +10 -20
  202. package/dist/src/execution/sandbox/session.js +2 -2
  203. package/dist/src/execution/session/active-turn.js +1 -1
  204. package/dist/src/execution/session/admission.js +1 -1
  205. package/dist/src/execution/session/checkpoint-migrations.js +1 -1
  206. package/dist/src/execution/session/entry-input.d.ts +5 -6
  207. package/dist/src/execution/session/entry.js +1 -1
  208. package/dist/src/execution/session/finalization.js +1 -1
  209. package/dist/src/execution/session/handoff-state.d.ts +5 -0
  210. package/dist/src/execution/session/handoff-state.js +1 -0
  211. package/dist/src/execution/session/handoff-steps.d.ts +0 -5
  212. package/dist/src/execution/session/handoff-steps.js +1 -1
  213. package/dist/src/execution/session/handoff.d.ts +7 -9
  214. package/dist/src/execution/session/handoff.js +1 -1
  215. package/dist/src/execution/session/input-queue.d.ts +8 -1
  216. package/dist/src/execution/session/input-queue.js +1 -1
  217. package/dist/src/execution/session/next-input.d.ts +3 -0
  218. package/dist/src/execution/session/next-input.js +1 -1
  219. package/dist/src/execution/session/pending-history.d.ts +5 -0
  220. package/dist/src/execution/session/pending-history.js +1 -0
  221. package/dist/src/execution/session/pending-turn-state.js +1 -1
  222. package/dist/src/execution/session/program.d.ts +1 -1
  223. package/dist/src/execution/session/program.js +1 -1
  224. package/dist/src/execution/session/timeout-control.d.ts +22 -4
  225. package/dist/src/execution/session/timeout-control.js +1 -1
  226. package/dist/src/execution/session/timeout.d.ts +1 -2
  227. package/dist/src/execution/session/timeout.js +1 -1
  228. package/dist/src/execution/session/turn-control.d.ts +5 -2
  229. package/dist/src/execution/session/turn-control.js +1 -1
  230. package/dist/src/execution/session/turn-event-handler.js +1 -1
  231. package/dist/src/execution/session/turn-step-result.js +1 -1
  232. package/dist/src/execution/session/turn-step.js +1 -1
  233. package/dist/src/execution/session/turn-waiting-step.js +1 -1
  234. package/dist/src/execution/session/turn.js +1 -1
  235. package/dist/src/execution/session-inbox/inbox.d.ts +9 -1
  236. package/dist/src/execution/session-inbox/inbox.js +1 -1
  237. package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
  238. package/dist/src/execution/session-inbox/protocol.js +1 -1
  239. package/dist/src/execution/session-inbox/resume.d.ts +2 -1
  240. package/dist/src/execution/session-inbox/resume.js +1 -1
  241. package/dist/src/execution/session-prewarm.d.ts +8 -0
  242. package/dist/src/execution/session-prewarm.js +1 -0
  243. package/dist/src/execution/session.d.ts +0 -12
  244. package/dist/src/execution/session.js +2 -2
  245. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  246. package/dist/src/execution/skills/instructions.js +1 -1
  247. package/dist/src/execution/tasks/model-step.js +1 -1
  248. package/dist/src/execution/tasks/start.d.ts +4 -4
  249. package/dist/src/execution/tasks/start.js +1 -1
  250. package/dist/src/execution/tasks/steps.js +1 -1
  251. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  252. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  253. package/dist/src/execution/tools/workflow/body.d.ts +2 -2
  254. package/dist/src/execution/tools/workflow/body.js +1 -1
  255. package/dist/src/execution/tools/workflow/step-context.d.ts +11 -0
  256. package/dist/src/execution/tools/workflow/step-execution.js +1 -1
  257. package/dist/src/execution/tools/workflow/step.js +1 -1
  258. package/dist/src/execution/workflow-runtime.d.ts +5 -1
  259. package/dist/src/execution/workflow-runtime.js +1 -1
  260. package/dist/src/extensions/git/extension/lib/github-shell-schema.js +1 -1
  261. package/dist/src/framework/sources/modules/sandbox.d.ts +1 -1
  262. package/dist/src/harness/attachment-staging.d.ts +0 -7
  263. package/dist/src/harness/attachment-staging.js +1 -1
  264. package/dist/src/harness/hitl/approvals.js +1 -1
  265. package/dist/src/harness/hitl/budget-request.d.ts +12 -6
  266. package/dist/src/harness/hitl/budget-request.js +1 -1
  267. package/dist/src/harness/hitl/budget.d.ts +7 -1
  268. package/dist/src/harness/hitl/budget.js +1 -1
  269. package/dist/src/harness/hitl/coordinator.js +1 -1
  270. package/dist/src/harness/hitl/delivery.d.ts +1 -1
  271. package/dist/src/harness/hitl/delivery.js +1 -1
  272. package/dist/src/harness/hitl/index.d.ts +2 -1
  273. package/dist/src/harness/hitl/index.js +1 -1
  274. package/dist/src/harness/hitl/intake.d.ts +2 -2
  275. package/dist/src/harness/hitl/intake.js +1 -1
  276. package/dist/src/harness/hitl/view.d.ts +1 -0
  277. package/dist/src/harness/hitl/view.js +1 -0
  278. package/dist/src/harness/messages.d.ts +5 -0
  279. package/dist/src/harness/messages.js +1 -1
  280. package/dist/src/harness/model-call/call.d.ts +2 -2
  281. package/dist/src/harness/model-call/request.d.ts +2 -2
  282. package/dist/src/harness/model-call/run.js +1 -1
  283. package/dist/src/harness/semantic-errors/rules/sandbox.d.ts +3 -5
  284. package/dist/src/harness/semantic-errors/rules/sandbox.js +1 -1
  285. package/dist/src/harness/session-machine/transitions.d.ts +3 -1
  286. package/dist/src/harness/session-machine/transitions.js +1 -1
  287. package/dist/src/harness/step/context.d.ts +3 -0
  288. package/dist/src/harness/step/context.js +1 -1
  289. package/dist/src/harness/step/intake.d.ts +5 -2
  290. package/dist/src/harness/step/intake.js +1 -1
  291. package/dist/src/harness/step/prompt.js +1 -1
  292. package/dist/src/harness/tool-history-repair.d.ts +9 -0
  293. package/dist/src/harness/tool-history-repair.js +1 -0
  294. package/dist/src/harness/tool-loop.js +1 -1
  295. package/dist/src/harness/tool-model-output.d.ts +19 -3
  296. package/dist/src/harness/tool-model-output.js +1 -1
  297. package/dist/src/harness/turn-tag-state.d.ts +7 -26
  298. package/dist/src/harness/turn-tag-state.js +1 -1
  299. package/dist/src/harness/types.d.ts +10 -25
  300. package/dist/src/internal/application/build-profile.d.ts +3 -0
  301. package/dist/src/internal/application/build-profile.js +1 -1
  302. package/dist/src/internal/application/compiled-artifacts.js +10 -6
  303. package/dist/src/internal/application/dev-environment.d.ts +13 -0
  304. package/dist/src/internal/application/dev-environment.js +1 -1
  305. package/dist/src/internal/application/optional-package-import.d.ts +10 -0
  306. package/dist/src/internal/application/optional-package-import.js +1 -1
  307. package/dist/src/internal/application/stamped-package-version.js +1 -1
  308. package/dist/src/internal/attachments/limited-read.d.ts +2 -2
  309. package/dist/src/internal/authored-definition/core.js +1 -1
  310. package/dist/src/internal/authored-module-build-options.d.ts +13 -0
  311. package/dist/src/internal/authored-module-build-options.js +1 -0
  312. package/dist/src/internal/authored-module-cache.d.ts +10 -0
  313. package/dist/src/internal/authored-module-cache.js +1 -0
  314. package/dist/src/internal/authored-module-graph.d.ts +13 -0
  315. package/dist/src/internal/authored-module-graph.js +1 -0
  316. package/dist/src/internal/authored-module-loader.d.ts +22 -1
  317. package/dist/src/internal/authored-module-loader.js +1 -3
  318. package/dist/src/internal/authored-module.d.ts +7 -0
  319. package/dist/src/internal/authored-module.js +1 -1
  320. package/dist/src/internal/authored-package-boundary.js +1 -1
  321. package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
  322. package/dist/src/internal/bundler/nitro-rolldown.d.ts +8 -2
  323. package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
  324. package/dist/src/internal/bundler/pseudo-packages.d.ts +11 -0
  325. package/dist/src/internal/bundler/pseudo-packages.js +1 -0
  326. package/dist/src/internal/development-programmatic-source-loader.d.ts +1 -0
  327. package/dist/src/internal/development-programmatic-source-loader.js +1 -1
  328. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  329. package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -1
  330. package/dist/src/internal/nitro/host/build-application.js +1 -1
  331. package/dist/src/internal/nitro/host/build-deployment-id.d.ts +8 -0
  332. package/dist/src/internal/nitro/host/build-deployment-id.js +1 -0
  333. package/dist/src/internal/nitro/host/build-extension.d.ts +6 -0
  334. package/dist/src/internal/nitro/host/build-extension.js +2 -2
  335. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.d.ts +3 -1
  336. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.js +3 -5
  337. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +2 -3
  338. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  339. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -0
  340. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
  341. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  342. package/dist/src/internal/nitro/host/dev-build-host.d.ts +83 -0
  343. package/dist/src/internal/nitro/host/dev-build-host.js +1 -0
  344. package/dist/src/internal/nitro/host/dev-build-operations.d.ts +6 -0
  345. package/dist/src/internal/nitro/host/dev-build-operations.js +1 -0
  346. package/dist/src/internal/nitro/host/dev-build-process.d.ts +1 -0
  347. package/dist/src/internal/nitro/host/dev-build-process.js +1 -0
  348. package/dist/src/internal/nitro/host/dev-server-state.js +1 -1
  349. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.d.ts +4 -1
  350. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.js +3 -2
  351. package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +13 -0
  352. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
  353. package/dist/src/internal/nitro/host/optional-engine-dependency-plugin.js +1 -1
  354. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +3 -0
  355. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  356. package/dist/src/internal/nitro/host/sandbox-shutdown-plugin.js +1 -1
  357. package/dist/src/internal/nitro/host/skill-server-assets.js +1 -1
  358. package/dist/src/internal/nitro/host/stage-build-deployment-id.d.ts +2 -0
  359. package/dist/src/internal/nitro/host/stage-build-deployment-id.js +1 -0
  360. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  361. package/dist/src/internal/nitro/host/start-production-server.d.ts +1 -0
  362. package/dist/src/internal/nitro/host/start-production-server.js +3 -3
  363. package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.js +1 -1
  364. package/dist/src/internal/nitro/host.js +1 -1
  365. package/dist/src/internal/nitro/routes/schedule-task.d.ts +3 -0
  366. package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
  367. package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
  368. package/dist/src/internal/programmatic-source-loader.js +1 -1
  369. package/dist/src/internal/schedules/disabled.d.ts +2 -0
  370. package/dist/src/internal/schedules/disabled.js +1 -0
  371. package/dist/src/internal/workflow/development-world-server.js +1 -1
  372. package/dist/src/internal/workflow/local-world-data-directory.d.ts +2 -1
  373. package/dist/src/internal/workflow/local-world-data-directory.js +1 -1
  374. package/dist/src/internal/workflow/local-world-delivery-auth.d.ts +17 -0
  375. package/dist/src/internal/workflow/local-world-delivery-auth.js +1 -0
  376. package/dist/src/internal/workflow/queue-namespace.d.ts +2 -0
  377. package/dist/src/internal/workflow/queue-namespace.js +1 -1
  378. package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -1
  379. package/dist/src/internal/workflow-bundle/builder-support.js +2 -2
  380. package/dist/src/internal/workflow-bundle/builder.js +2 -2
  381. package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +1 -1
  382. package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
  383. package/dist/src/protocol/message.d.ts +27 -1
  384. package/dist/src/protocol/message.js +2 -2
  385. package/dist/src/protocol/prewarm-session.d.ts +14 -0
  386. package/dist/src/protocol/prewarm-session.js +1 -0
  387. package/dist/src/protocol/routes.d.ts +2 -2
  388. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +13 -0
  389. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
  390. package/dist/src/public/channels/chat-sdk/fetch-message.d.ts +10 -0
  391. package/dist/src/public/channels/chat-sdk/fetch-message.js +1 -0
  392. package/dist/src/public/channels/chat-sdk/index.d.ts +1 -1
  393. package/dist/src/public/channels/chat-sdk/reply-context.d.ts +15 -0
  394. package/dist/src/public/channels/chat-sdk/reply-context.js +2 -0
  395. package/dist/src/public/channels/discord/authorization.d.ts +45 -0
  396. package/dist/src/public/channels/discord/authorization.js +3 -0
  397. package/dist/src/public/channels/discord/defaults.d.ts +14 -3
  398. package/dist/src/public/channels/discord/defaults.js +2 -2
  399. package/dist/src/public/channels/discord/discordChannel.d.ts +18 -1
  400. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  401. package/dist/src/public/channels/discord/gateway/connection.d.ts +26 -0
  402. package/dist/src/public/channels/discord/gateway/connection.js +1 -0
  403. package/dist/src/public/channels/discord/gateway/forwarder.d.ts +14 -0
  404. package/dist/src/public/channels/discord/gateway/forwarder.js +1 -0
  405. package/dist/src/public/channels/discord/gateway/index.d.ts +59 -0
  406. package/dist/src/public/channels/discord/gateway/index.js +1 -0
  407. package/dist/src/public/channels/discord/inbound.d.ts +10 -3
  408. package/dist/src/public/channels/discord/inbound.js +2 -2
  409. package/dist/src/public/channels/discord/index.d.ts +3 -2
  410. package/dist/src/public/channels/discord/index.js +1 -1
  411. package/dist/src/public/channels/discord/messages.d.ts +116 -0
  412. package/dist/src/public/channels/discord/messages.js +2 -0
  413. package/dist/src/public/channels/github/checkout.js +1 -1
  414. package/dist/src/public/channels/github/dispatch.js +1 -1
  415. package/dist/src/public/channels/github/githubChannel.d.ts +3 -0
  416. package/dist/src/public/channels/imessage-tapbacks.d.ts +74 -0
  417. package/dist/src/public/channels/imessage-tapbacks.js +1 -0
  418. package/dist/src/public/channels/index.d.ts +2 -1
  419. package/dist/src/public/channels/index.js +1 -1
  420. package/dist/src/public/channels/linear/linearChannel.d.ts +3 -0
  421. package/dist/src/public/channels/linear/linearChannel.js +1 -1
  422. package/dist/src/public/channels/linq/inboundContent.d.ts +7 -0
  423. package/dist/src/public/channels/linq/inboundContent.js +1 -1
  424. package/dist/src/public/channels/linq/index.d.ts +1 -0
  425. package/dist/src/public/channels/linq/index.js +1 -1
  426. package/dist/src/public/channels/linq/linqChannel.d.ts +21 -2
  427. package/dist/src/public/channels/linq/linqChannel.js +1 -1
  428. package/dist/src/public/channels/photon/inboundContent.d.ts +7 -0
  429. package/dist/src/public/channels/photon/inboundContent.js +2 -1
  430. package/dist/src/public/channels/photon/index.d.ts +1 -0
  431. package/dist/src/public/channels/photon/index.js +1 -1
  432. package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +17 -1
  433. package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
  434. package/dist/src/public/channels/same-environment-oidc.d.ts +7 -0
  435. package/dist/src/public/channels/same-environment-oidc.js +1 -0
  436. package/dist/src/public/channels/slack/api.d.ts +6 -0
  437. package/dist/src/public/channels/slack/api.js +1 -1
  438. package/dist/src/public/channels/slack/model-context.d.ts +7 -0
  439. package/dist/src/public/channels/slack/model-context.js +1 -1
  440. package/dist/src/public/channels/slack/reply-delivery.d.ts +5 -0
  441. package/dist/src/public/channels/slack/reply-delivery.js +1 -1
  442. package/dist/src/public/channels/slack/slackChannel.d.ts +17 -3
  443. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  444. package/dist/src/public/channels/teams/teamsChannel.d.ts +3 -0
  445. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  446. package/dist/src/public/channels/telegram/telegramChannel.d.ts +3 -0
  447. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  448. package/dist/src/public/definitions/agent.d.ts +1 -1
  449. package/dist/src/public/definitions/channel.d.ts +2 -2
  450. package/dist/src/public/definitions/channel.js +1 -1
  451. package/dist/src/public/definitions/hook.d.ts +1 -0
  452. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  453. package/dist/src/public/index.d.ts +1 -1
  454. package/dist/src/public/next/server.js +1 -1
  455. package/dist/src/public/sandbox/docker-sandbox.d.ts +6 -1
  456. package/dist/src/public/sandbox/docker.d.ts +1 -8
  457. package/dist/src/public/sandbox/index.d.ts +3 -3
  458. package/dist/src/public/sandbox/just-bash-sandbox.d.ts +87 -7
  459. package/dist/src/public/sandbox/just-bash.d.ts +1 -1
  460. package/dist/src/public/sandbox/provider.d.ts +5 -1
  461. package/dist/src/public/sandbox/provider.js +1 -1
  462. package/dist/src/public/sandbox/vercel-sandbox.d.ts +16 -9
  463. package/dist/src/public/sandbox/vercel.d.ts +0 -1
  464. package/dist/src/public/sandbox/vercel.js +1 -1
  465. package/dist/src/public/tools/agent.d.ts +8 -1
  466. package/dist/src/public/tools/agent.js +1 -1
  467. package/dist/src/public/tools/index.d.ts +1 -1
  468. package/dist/src/react/use-eve-agent.d.ts +1 -1
  469. package/dist/src/runtime/agent/resolve-model.d.ts +4 -0
  470. package/dist/src/runtime/agent/resolve-model.js +1 -1
  471. package/dist/src/runtime/connections/openapi-client.d.ts +2 -0
  472. package/dist/src/runtime/connections/openapi-client.js +1 -1
  473. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  474. package/dist/src/runtime/resolve-agent.js +1 -1
  475. package/dist/src/runtime/resolve-channel.js +1 -1
  476. package/dist/src/runtime/resolve-sandbox.js +1 -1
  477. package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
  478. package/dist/src/runtime/sandbox/registry.d.ts +2 -0
  479. package/dist/src/runtime/sandbox/registry.js +1 -1
  480. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  481. package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -1
  482. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  483. package/dist/src/runtime/subagents/workflow.d.ts +6 -0
  484. package/dist/src/runtime/subagents/workflow.js +1 -1
  485. package/dist/src/runtime/types.d.ts +3 -2
  486. package/dist/src/runtime/workspace/seed-files.d.ts +9 -12
  487. package/dist/src/runtime/workspace/seed-files.js +1 -1
  488. package/dist/src/runtime/workspace/spec.d.ts +1 -1
  489. package/dist/src/runtime/workspace/spec.js +1 -1
  490. package/dist/src/runtime/workspace/types.d.ts +2 -6
  491. package/dist/src/sandbox/provider.d.ts +185 -0
  492. package/dist/src/sandbox/provider.js +1 -0
  493. package/dist/src/sandbox/providers/default.d.ts +20 -19
  494. package/dist/src/sandbox/providers/default.js +1 -1
  495. package/dist/src/sandbox/providers/docker.d.ts +5 -2
  496. package/dist/src/sandbox/providers/docker.js +1 -1
  497. package/dist/src/sandbox/providers/just-bash.d.ts +4 -3
  498. package/dist/src/sandbox/providers/just-bash.js +1 -1
  499. package/dist/src/sandbox/providers/vercel.d.ts +4 -10
  500. package/dist/src/sandbox/providers/vercel.js +1 -1
  501. package/dist/src/sandbox/providers.d.ts +0 -1
  502. package/dist/src/sandbox/providers.js +1 -1
  503. package/dist/src/sandbox/state.d.ts +44 -0
  504. package/dist/src/sandbox/state.js +1 -1
  505. package/dist/src/self-modification/deployed-sandbox.d.ts +4 -9
  506. package/dist/src/self-modification/deployed-sandbox.js +1 -1
  507. package/dist/src/self-modification/filesystem.d.ts +3 -3
  508. package/dist/src/self-modification/remote/config.d.ts +2 -2
  509. package/dist/src/self-modification/remote/config.js +1 -1
  510. package/dist/src/self-modification/setup.d.ts +0 -1
  511. package/dist/src/self-modification/setup.js +8 -8
  512. package/dist/src/setup/integrations/discord/api.d.ts +7 -0
  513. package/dist/src/setup/integrations/discord/api.js +1 -1
  514. package/dist/src/setup/integrations/discord/daemon.d.ts +18 -0
  515. package/dist/src/setup/integrations/discord/daemon.js +21 -0
  516. package/dist/src/setup/integrations/discord/setup.d.ts +24 -4
  517. package/dist/src/setup/integrations/discord/setup.js +5 -4
  518. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  519. package/dist/src/setup/scaffold/create/project.js +1 -1
  520. package/dist/src/setup/scaffold/update/web-options.js +1 -1
  521. package/dist/src/setup/scaffold/version-tokens.d.ts +0 -1
  522. package/dist/src/setup/scaffold/version-tokens.js +1 -1
  523. package/dist/src/shared/agent-definition.d.ts +33 -42
  524. package/dist/src/shared/built-server-start-failure.d.ts +12 -0
  525. package/dist/src/shared/built-server-start-failure.js +3 -0
  526. package/dist/src/shared/framework-eve-server.d.ts +2 -0
  527. package/dist/src/shared/framework-eve-server.js +2 -2
  528. package/dist/src/shared/sandbox-environment.d.ts +4 -10
  529. package/dist/src/shared/sandbox-environment.js +1 -1
  530. package/dist/src/shared/sandbox-network-policy.d.ts +45 -9
  531. package/dist/src/shared/sandbox-provider.d.ts +0 -103
  532. package/dist/src/shared/sandbox-provider.js +1 -1
  533. package/dist/src/shared/sandbox-recorded-data-error.d.ts +4 -0
  534. package/dist/src/shared/sandbox-recorded-data-error.js +1 -0
  535. package/dist/src/shared/sandbox-session-gone-error.d.ts +12 -0
  536. package/dist/src/shared/sandbox-session-gone-error.js +1 -0
  537. package/dist/src/shared/sandbox-session.d.ts +97 -83
  538. package/dist/src/shared/sandbox-template-error.d.ts +19 -4
  539. package/dist/src/shared/sandbox-template-error.js +1 -1
  540. package/dist/src/shared/sandbox-tool-session-error.d.ts +4 -0
  541. package/dist/src/shared/sandbox-tool-session-error.js +1 -0
  542. package/dist/src/shared/session-history.d.ts +22 -0
  543. package/dist/src/shared/session-history.js +1 -0
  544. package/dist/src/shared/skill-package.js +1 -1
  545. package/dist/src/shared/skill-paths.d.ts +4 -5
  546. package/dist/src/shared/skill-paths.js +2 -2
  547. package/dist/src/shared/workflow-sandbox.d.ts +4 -41
  548. package/dist/src/shared/workflow-sandbox.js +1 -1
  549. package/dist/src/subagents/tool.d.ts +1 -3
  550. package/dist/src/subagents/tool.js +1 -1
  551. package/dist/src/svelte/index.js +1 -1
  552. package/dist/src/svelte/use-eve-agent.d.ts +1 -1
  553. package/dist/src/svelte/use-eve-agent.js +1 -1
  554. package/dist/src/tools/model-output.d.ts +23 -5
  555. package/dist/src/tools/model-output.js +1 -1
  556. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  557. package/dist/src/tools/provided/glob.js +1 -1
  558. package/dist/src/tools/provided/grep.js +1 -1
  559. package/dist/src/tools/provided/read-file.js +1 -1
  560. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  561. package/dist/src/tools/provided/workflow.js +1 -1
  562. package/dist/src/tools/provided/write-file.js +1 -1
  563. package/dist/src/tools/workflow-definition.d.ts +33 -5
  564. package/dist/src/tracing/eve/conversation-context.d.ts +4 -1
  565. package/dist/src/tracing/eve/conversation-context.js +1 -1
  566. package/dist/src/tracing/eve/invoke-tool-span.js +1 -1
  567. package/dist/src/tracing/eve/operation-input.d.ts +0 -5
  568. package/dist/src/tracing/eve/operation-input.js +1 -1
  569. package/dist/src/tracing/eve/otel-registration.js +1 -1
  570. package/dist/src/tracing/eve/session.d.ts +3 -2
  571. package/dist/src/tracing/eve/session.js +1 -1
  572. package/dist/src/vue/index.js +1 -1
  573. package/dist/src/vue/use-eve-agent.d.ts +1 -1
  574. package/dist/src/vue/use-eve-agent.js +1 -1
  575. package/docs/agent-config.md +86 -65
  576. package/docs/channels/chat-sdk.mdx +6 -1
  577. package/docs/channels/custom.mdx +41 -9
  578. package/docs/channels/discord.mdx +279 -7
  579. package/docs/channels/eve.mdx +58 -1
  580. package/docs/channels/linq.mdx +53 -2
  581. package/docs/channels/mcp.mdx +2 -2
  582. package/docs/channels/overview.mdx +1 -1
  583. package/docs/channels/photon.mdx +65 -1
  584. package/docs/channels/slack.mdx +4 -2
  585. package/docs/concepts/built-in-tools.md +32 -9
  586. package/docs/concepts/execution-model-and-durability.mdx +15 -103
  587. package/docs/concepts/security-model.md +2 -0
  588. package/docs/concepts/sessions-runs-and-streaming.md +52 -43
  589. package/docs/connections/openapi.mdx +2 -0
  590. package/docs/connections/overview.mdx +1 -1
  591. package/docs/evals/reporters.mdx +1 -1
  592. package/docs/evals/running.mdx +1 -1
  593. package/docs/experimental/dynamic-schedules.mdx +186 -0
  594. package/docs/experimental/meta.json +4 -0
  595. package/docs/guides/client/messages.mdx +1 -1
  596. package/docs/guides/client/streaming.mdx +1 -0
  597. package/docs/guides/deployment/overview.md +4 -4
  598. package/docs/guides/deployment/self-hosting.md +53 -1
  599. package/docs/guides/dev-tui.md +1 -1
  600. package/docs/guides/dynamic-capabilities.md +1 -1
  601. package/docs/guides/frontend/overview.mdx +26 -6
  602. package/docs/guides/hooks.md +21 -1
  603. package/docs/guides/instrumentation/agent-runs.mdx +16 -0
  604. package/docs/guides/self-modification.md +1 -1
  605. package/docs/guides/session-context.md +1 -1
  606. package/docs/instructions.mdx +1 -1
  607. package/docs/memory/overview.mdx +2 -1
  608. package/docs/patterns/dynamic-scheduling.md +3 -1
  609. package/docs/reference/agent-files.md +3 -3
  610. package/docs/reference/cli.md +21 -9
  611. package/docs/reference/typescript-api.md +9 -3
  612. package/docs/sandbox/custom-providers.mdx +254 -0
  613. package/docs/sandbox/default.mdx +71 -4
  614. package/docs/sandbox/docker.mdx +15 -3
  615. package/docs/sandbox/index.mdx +27 -103
  616. package/docs/sandbox/just-bash.mdx +54 -0
  617. package/docs/sandbox/meta.json +9 -1
  618. package/docs/sandbox/troubleshooting.mdx +215 -0
  619. package/docs/sandbox/vercel.mdx +48 -7
  620. package/docs/schedules.mdx +2 -0
  621. package/docs/skills.mdx +1 -1
  622. package/docs/subagents/index.mdx +3 -1
  623. package/docs/tools/overview.mdx +21 -1
  624. package/docs/tools/tasks-upgrade.md +12 -7
  625. package/docs/tools/tasks.md +10 -6
  626. package/docs/tools/workflows.mdx +109 -10
  627. package/docs/tutorial/connect-a-warehouse.mdx +1 -1
  628. package/docs/tutorial/run-analysis.mdx +3 -3
  629. package/package.json +14 -20
  630. package/dist/src/compiled/@ai-sdk/code-mode/_run.d.ts +0 -1
  631. package/dist/src/compiled/@ai-sdk/code-mode/index.d.ts +0 -325
  632. package/dist/src/compiled/@ai-sdk/code-mode/index.js +0 -660
  633. package/dist/src/compiled/_chunks/workflow/dist-CyBgVS7g.js +0 -1
  634. package/dist/src/compiled/_chunks/workflow/dist-T5NnW-0k.js +0 -3
  635. package/dist/src/compiled/_chunks/workflow/helpers-DlLD3ov_.js +0 -1
  636. package/dist/src/compiled/_chunks/workflow/private-tQUuwBoQ.js +0 -1
  637. package/dist/src/compiled/_chunks/workflow/resume-hook-DMsV_b4n.js +0 -1
  638. package/dist/src/compiled/_chunks/workflow/serialization-DPdYS_w2.js +0 -16
  639. package/dist/src/compiled/_chunks/workflow/sleep-BY6leHh8.js +0 -1
  640. package/dist/src/compiled/_chunks/workflow/workflow-routes-CwqB063q.js +0 -1
  641. package/dist/src/execution/run-session-limits.d.ts +0 -12
  642. package/dist/src/execution/run-session-limits.js +0 -1
  643. package/dist/src/execution/sandbox/active-handles.d.ts +0 -32
  644. package/dist/src/execution/sandbox/active-handles.js +0 -1
  645. package/dist/src/execution/sandbox/bindings/docker-session.d.ts +0 -6
  646. package/dist/src/execution/sandbox/bindings/docker-session.js +0 -2
  647. package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -15
  648. package/dist/src/execution/sandbox/bindings/immutable-resources.js +0 -2
  649. package/dist/src/execution/sandbox/bindings/microsandbox-create.d.ts +0 -12
  650. package/dist/src/execution/sandbox/bindings/microsandbox-create.js +0 -1
  651. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -42
  652. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +0 -1
  653. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.d.ts +0 -29
  654. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.js +0 -1
  655. package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +0 -18
  656. package/dist/src/execution/sandbox/bindings/microsandbox-network.js +0 -1
  657. package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -37
  658. package/dist/src/execution/sandbox/bindings/microsandbox-options.js +0 -1
  659. package/dist/src/execution/sandbox/bindings/microsandbox-platform.d.ts +0 -21
  660. package/dist/src/execution/sandbox/bindings/microsandbox-platform.js +0 -21
  661. package/dist/src/execution/sandbox/bindings/microsandbox-process.d.ts +0 -3
  662. package/dist/src/execution/sandbox/bindings/microsandbox-process.js +0 -1
  663. package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.d.ts +0 -11
  664. package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.js +0 -1
  665. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.d.ts +0 -82
  666. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +0 -1
  667. package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -12
  668. package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +0 -1
  669. package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +0 -16
  670. package/dist/src/execution/sandbox/bindings/microsandbox.js +0 -1
  671. package/dist/src/execution/sandbox/provider-host-development.d.ts +0 -2
  672. package/dist/src/execution/sandbox/provider-host-development.js +0 -1
  673. package/dist/src/execution/sandbox/provider-host.d.ts +0 -2
  674. package/dist/src/execution/sandbox/provider-host.js +0 -1
  675. package/dist/src/execution/tool-session/sandbox.d.ts +0 -22
  676. package/dist/src/execution/tool-session/sandbox.js +0 -1
  677. package/dist/src/harness/session-usage-limits.d.ts +0 -49
  678. package/dist/src/harness/session-usage-limits.js +0 -1
  679. package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +0 -48
  680. package/dist/src/public/sandbox/microsandbox.d.ts +0 -9
  681. package/dist/src/public/sandbox/microsandbox.js +0 -1
  682. package/dist/src/sandbox/providers/microsandbox.d.ts +0 -12
  683. package/dist/src/sandbox/providers/microsandbox.js +0 -1
  684. package/dist/src/subagents/token-budget.d.ts +0 -15
  685. package/dist/src/subagents/token-budget.js +0 -1
  686. package/docs/sandbox/microsandbox.mdx +0 -31
  687. /package/dist/src/{public/sandbox/microsandbox-sandbox.js → execution/agent-sessions/runtime-overrides.js} +0 -0
@@ -1,18 +1,17 @@
1
1
  import type { SandboxSession } from "#shared/sandbox-session.js";
2
2
  export declare const MODEL_SKILL_ROOT = "$HOME/.agents/skills";
3
- export declare const FALLBACK_SKILL_ROOT = "/workspace/skills";
4
3
  /**
5
4
  * Resolves where skills live in the sandbox: under the probed home when it has
6
- * one, and under {@link FALLBACK_SKILL_ROOT} when it does not.
5
+ * one, and under `skills/` in the workspace root when it does not.
7
6
  */
8
7
  export declare function resolveSandboxSkillRoot(input: {
9
8
  readonly sandbox: SandboxSession;
10
9
  }): Promise<string>;
11
10
  /**
12
11
  * Resolves a leading `$HOME` in a model-supplied sandbox path without
13
- * evaluating any other shell syntax. Skill paths retain their documented
14
- * `/workspace/skills` fallback when the sandbox does not expose a usable
15
- * home directory.
12
+ * evaluating any other shell syntax. Skill paths fall back to `skills/` in
13
+ * the workspace root when the sandbox does not expose a usable home
14
+ * directory.
16
15
  */
17
16
  export declare function resolveSandboxModelPath(input: {
18
17
  readonly path: string;
@@ -1,2 +1,2 @@
1
- const MODEL_HOME_ROOT=`$HOME`,MODEL_SKILL_ROOT=`${MODEL_HOME_ROOT}/.agents/skills`,FALLBACK_SKILL_ROOT=`/workspace/skills`,sandboxHomeCache=new WeakMap;async function resolveSandboxSkillRoot(e){return await resolveSandboxModelPath({path:MODEL_SKILL_ROOT,sandbox:e.sandbox})}async function resolveSandboxModelPath(e){if(!isModelHomePath(e.path))return e.path;let t=await resolveSandboxHome(e.sandbox);if(t!==null){let n=e.path.slice(5);return n.length===0?t:`${t===`/`?``:t}${n}`}return isModelSkillPath(e.path)?`${FALLBACK_SKILL_ROOT}${e.path.slice(MODEL_SKILL_ROOT.length)}`:e.path}async function resolveSandboxSkillWritePath(e){return formatSkillPath({name:e.name,relativePath:e.relativePath,root:await resolveSandboxSkillRoot({sandbox:e.sandbox})})}function formatSkillPath(e){return`${e.root}/${e.name}/${e.relativePath}`}async function resolveSandboxHome(e){let t=sandboxHomeCache.get(e);if(t!==void 0)return await t;let n=probeSandboxHome(e);return sandboxHomeCache.set(e,n),await n}async function probeSandboxHome(e){try{let t=await e.run({command:`printf '%s\\n' "$HOME"`});if(t.exitCode!==0)return null;let n=t.stdout.trim();return isUsableSandboxHome(n)?normalizeSandboxHome(n):null}catch{return null}}function isModelHomePath(e){return e===MODEL_HOME_ROOT||e.startsWith(`${MODEL_HOME_ROOT}/`)}function isModelSkillPath(e){return e===MODEL_SKILL_ROOT||e.startsWith(`${MODEL_SKILL_ROOT}/`)}function isUsableSandboxHome(e){return e.length>0&&e.startsWith(`/`)&&!e.includes(`\0`)&&!e.includes(`
2
- `)&&!e.includes(`\r`)}function normalizeSandboxHome(e){return e===`/`?e:e.replace(/\/+$/,``)}export{FALLBACK_SKILL_ROOT,MODEL_SKILL_ROOT,resolveSandboxModelPath,resolveSandboxSkillRoot,resolveSandboxSkillWritePath};
1
+ const MODEL_HOME_ROOT=`$HOME`,MODEL_SKILL_ROOT=`${MODEL_HOME_ROOT}/.agents/skills`,sandboxHomeCache=new WeakMap;async function resolveSandboxSkillRoot(e){return await resolveSandboxModelPath({path:MODEL_SKILL_ROOT,sandbox:e.sandbox})}async function resolveSandboxModelPath(e){if(!isModelHomePath(e.path))return e.path;let t=await resolveSandboxHome(e.sandbox);if(t!==null){let n=e.path.slice(5);return n.length===0?t:`${t===`/`?``:t}${n}`}return isModelSkillPath(e.path)?e.sandbox.resolvePath(`skills${e.path.slice(MODEL_SKILL_ROOT.length)}`):e.path}async function resolveSandboxSkillWritePath(e){return formatSkillPath({name:e.name,relativePath:e.relativePath,root:await resolveSandboxSkillRoot({sandbox:e.sandbox})})}function formatSkillPath(e){return`${e.root}/${e.name}/${e.relativePath}`}async function resolveSandboxHome(e){let t=sandboxHomeCache.get(e);if(t!==void 0)return await t;let n=probeSandboxHome(e);return sandboxHomeCache.set(e,n),await n}async function probeSandboxHome(e){try{let t=await e.run({command:`printf '%s\\n' "$HOME"`});if(t.exitCode!==0)return null;let n=t.stdout.trim();return isUsableSandboxHome(n)?normalizeSandboxHome(n):null}catch{return null}}function isModelHomePath(e){return e===MODEL_HOME_ROOT||e.startsWith(`${MODEL_HOME_ROOT}/`)}function isModelSkillPath(e){return e===MODEL_SKILL_ROOT||e.startsWith(`${MODEL_SKILL_ROOT}/`)}function isUsableSandboxHome(e){return e.length>0&&e.startsWith(`/`)&&!e.includes(`\0`)&&!e.includes(`
2
+ `)&&!e.includes(`\r`)}function normalizeSandboxHome(e){return e===`/`?e:e.replace(/\/+$/,``)}export{MODEL_SKILL_ROOT,resolveSandboxModelPath,resolveSandboxSkillRoot,resolveSandboxSkillWritePath};
@@ -1,43 +1,6 @@
1
- import type { FlexibleSchema, ToolSet } from "ai";
2
- import type * as CodeModeModule from "#compiled/@ai-sdk/code-mode/index.js";
3
- type WorkflowSandboxModule = {
4
- readonly CodeModeToolError: typeof CodeModeModule.CodeModeToolError;
5
- readonly continueCodeModeInterrupt: typeof CodeModeModule.experimental_continueCodeModeInterrupt;
6
- readonly createCodeModeTool: typeof CodeModeModule.experimental_createCodeModeTool;
7
- readonly requestCodeModeInterrupt: typeof CodeModeModule.experimental_requestCodeModeInterrupt;
8
- readonly unwrapCodeModeResult: typeof CodeModeModule.experimental_unwrapCodeModeResult;
9
- };
10
- export type WorkflowSandboxInterrupt = CodeModeModule.CodeModeInterrupt;
11
- export type WorkflowSandboxContinuationSecurity = CodeModeModule.CodeModeContinuationSecurityOptions;
1
+ import type * as RunModule from "#compiled/run/index.js";
2
+ type WorkflowSandboxModule = Pick<typeof RunModule, "createRunner" | "createSignedContinuationCodec" | "getHostFunctionContext" | "RunError">;
12
3
  export declare function installWorkflowSandboxModule(module: WorkflowSandboxModule): void;
13
- export declare function createWorkflowSandboxTool(input: {
14
- readonly bridgeRequestLimit: number;
15
- readonly continuationSecurity: WorkflowSandboxContinuationSecurity;
16
- readonly hostTools: ToolSet;
17
- }): Promise<ToolSet[string]>;
18
- export declare function continueWorkflowSandboxInterrupt(input: {
19
- readonly bridgeRequestLimit: number;
20
- readonly continuationSecurity: WorkflowSandboxContinuationSecurity;
21
- readonly interrupt: WorkflowSandboxInterrupt;
22
- readonly resolution: unknown;
23
- readonly tools: ToolSet;
24
- }): Promise<unknown>;
25
- export declare function unwrapWorkflowSandboxResult(value: unknown, continuationSecurity: WorkflowSandboxContinuationSecurity): Promise<{
26
- readonly output: unknown;
27
- readonly status: "completed";
28
- } | {
29
- readonly interrupt: WorkflowSandboxInterrupt;
30
- readonly status: "interrupted";
31
- }>;
32
- /** A host tool that parks on first call and consumes its resolution on replay. */
33
- export declare function createParkingHostTool(input: {
34
- readonly description: string;
35
- readonly inputSchema: FlexibleSchema;
36
- readonly outputSchema?: FlexibleSchema | null;
37
- readonly interrupt: (toolInput: unknown) => {
38
- readonly kind: string;
39
- } & Record<string, unknown>;
40
- }): ToolSet[string];
41
- /** Reconstructs every unresolved interruption from the authenticated continuation. */
42
- export declare function getWorkflowSandboxPendingInterrupts(interrupt: WorkflowSandboxInterrupt): WorkflowSandboxInterrupt[];
4
+ /** Returns the vendored `run` runtime that executes generated workflow programs. */
5
+ export declare function loadWorkflowSandboxModule(): Promise<WorkflowSandboxModule>;
43
6
  export {};
@@ -1 +1 @@
1
- const WORKFLOW_SANDBOX_MODULE_KEY=Symbol.for(`eve.workflowSandbox.module`),WORKFLOW_SANDBOX_MODULE_SPECIFIER=[`#compiled`,`@ai-sdk`,`code-mode`,`index.js`].join(`/`);let workflowSandboxModulePromise;function installWorkflowSandboxModule(e){globalThis[WORKFLOW_SANDBOX_MODULE_KEY]=e}async function createWorkflowSandboxTool(e){let{createCodeModeTool:t}=await loadWorkflowSandboxModule();return t(e.hostTools,createWorkflowSandboxOptions(e.bridgeRequestLimit,e.continuationSecurity))}async function continueWorkflowSandboxInterrupt(e){let{continueCodeModeInterrupt:t}=await loadWorkflowSandboxModule();return t({interrupt:e.interrupt,options:createWorkflowSandboxOptions(e.bridgeRequestLimit,e.continuationSecurity),resolution:e.resolution,tools:e.tools})}async function unwrapWorkflowSandboxResult(e,t){let{unwrapCodeModeResult:n}=await loadWorkflowSandboxModule();return n(e,t)}function createParkingHostTool(e){return{description:e.description,inputSchema:e.inputSchema,outputSchema:e.outputSchema??void 0,execute:async(t,n)=>{let r=await loadWorkflowSandboxModule(),i=readWorkflowProgramResolution(n);if(i?.status===`failed`)throw new r.CodeModeToolError(i.error);return i?.status===`completed`?i.output:r.requestCodeModeInterrupt(e.interrupt(t))}}}function readWorkflowProgramResolution(e){if(typeof e!=`object`||!e)return;let t=e.codeModeInterrupt;if(typeof t!=`object`||!t)return;let n=t.resolution;if(typeof n!=`object`||!n)return;let r=n.status;return r===`completed`||r===`failed`?n:void 0}function getWorkflowSandboxPendingInterrupts(e){let t=e.continuation,n=new Set(t.resolutions.map(e=>e.runInterruptionId));return t.pendingInterruptions.flatMap(e=>n.has(e.runInterruptionId)?[]:[{continuation:t,input:e.input,interruptId:e.interruptId,outerToolCallId:t.outerToolCallId,payload:e.payload,toolCallId:e.toolCallId,toolName:e.toolName,type:`code-mode-interrupt`}])}function createWorkflowSandboxOptions(e,t){return{continuationSecurity:t,executionPolicy:{maxBridgeRequests:e,maxInFlightBridgeRequests:e}}}async function loadWorkflowSandboxModule(){let e=globalThis[WORKFLOW_SANDBOX_MODULE_KEY];return e===void 0?(workflowSandboxModulePromise??=importWorkflowSandboxModule(WORKFLOW_SANDBOX_MODULE_SPECIFIER),await workflowSandboxModulePromise):e}async function importWorkflowSandboxModule(e){let t=await import(e);return{CodeModeToolError:t.CodeModeToolError,continueCodeModeInterrupt:t.experimental_continueCodeModeInterrupt,createCodeModeTool:t.experimental_createCodeModeTool,requestCodeModeInterrupt:t.experimental_requestCodeModeInterrupt,unwrapCodeModeResult:t.experimental_unwrapCodeModeResult}}export{continueWorkflowSandboxInterrupt,createParkingHostTool,createWorkflowSandboxTool,getWorkflowSandboxPendingInterrupts,installWorkflowSandboxModule,unwrapWorkflowSandboxResult};
1
+ const WORKFLOW_SANDBOX_MODULE_KEY=Symbol.for(`eve.workflowSandbox.module`),WORKFLOW_SANDBOX_MODULE_SPECIFIER=[`#compiled`,`run`,`index.js`].join(`/`);let workflowSandboxModulePromise;function installWorkflowSandboxModule(e){globalThis[WORKFLOW_SANDBOX_MODULE_KEY]=e}async function loadWorkflowSandboxModule(){let e=globalThis[WORKFLOW_SANDBOX_MODULE_KEY];return e===void 0?(workflowSandboxModulePromise??=import(WORKFLOW_SANDBOX_MODULE_SPECIFIER),await workflowSandboxModulePromise):e}export{installWorkflowSandboxModule,loadWorkflowSandboxModule};
@@ -1,5 +1,5 @@
1
1
  import { type SubagentParentContext } from "#subagents/invocation.js";
2
- import type { ChannelInstrumentationProjection, RunSessionLimits, SessionAuthContext, SessionCapabilities, RunInput } from "#channel/types.js";
2
+ import type { ChannelInstrumentationProjection, SessionAuthContext, SessionCapabilities, RunInput } from "#channel/types.js";
3
3
  import type { HarnessSession } from "#harness/types.js";
4
4
  import type { RuntimeSubagentDispatchRequest } from "#shared/action-types.js";
5
5
  import type { ConversationContext } from "#shared/conversation-context.js";
@@ -62,8 +62,6 @@ export declare function buildSubagentRunInput(input: {
62
62
  /** Durable session identity of the sandbox currently used by the parent. */
63
63
  readonly sandboxSessionId?: string;
64
64
  readonly selfAgent: boolean;
65
- /** Session token limits the child inherits. */
66
- readonly limits: RunSessionLimits;
67
65
  readonly parent: SubagentParentContext;
68
66
  readonly session: Pick<HarnessSession, "continuationToken" | "sandboxState" | "sessionId">;
69
67
  readonly source: SubagentInputSource;
@@ -1 +1 @@
1
- import{formatSubagentInput}from"#subagents/invocation.js";import{mintSubagentContinuationToken}from"#execution/session.js";import{SUBAGENT_ADAPTER_KIND}from"#subagents/adapter-state.js";function buildSubagentRunInput(e){let{action:t,auth:n,capabilities:r,channelMetadata:i,inheritedConversation:a,initiatorAuth:o,session:s,source:c}=e,l=mintSubagentContinuationToken(e.continuationKey),u={callId:t.callId,parentContinuationToken:e.parent.continuationToken??s.continuationToken,parentSessionId:s.sessionId,subagentName:t.subagentName};return(e.graph?.nodesByNodeId.get(t.nodeId)?.sandboxRegistry.sandbox?.definition.kind===`parent`||e.selfAgent)&&(s.sandboxState!==void 0&&(u.parentSandboxState=s.sandboxState),u.sandboxSessionId=e.sandboxSessionId??s.sessionId),{childContinuationToken:l,runInput:{adapter:{kind:SUBAGENT_ADAPTER_KIND,state:u},auth:n,capabilities:r,schedule:e.schedule,channelMetadata:i,inheritedConversation:a,continuationToken:l,initiatorAuth:o,input:{message:formatSubagentCallInputMessage({action:t,source:c}),outputSchema:t.input.outputSchema},limits:e.limits,conversationId:e.parent.conversationId,parent:e.parent.lineage,parentTraceContext:e.parent.traceContext,traceRoot:e.parent.traceRoot}}}function formatSubagentCallInputMessage(e){let{message:t}=e.action.input;switch(e.source.type){case`local`:return formatSubagentInput({description:e.source.description,message:t,name:e.action.subagentName,type:`local`}).message;case`runtime`:return formatSubagentInput({message:t,name:e.action.subagentName,type:`runtime`}).message;default:return e.source}}export{buildSubagentRunInput};
1
+ import{formatSubagentInput}from"#subagents/invocation.js";import{mintSubagentContinuationToken}from"#execution/session.js";import{SUBAGENT_ADAPTER_KIND}from"#subagents/adapter-state.js";function buildSubagentRunInput(e){let{action:t,auth:n,capabilities:r,channelMetadata:i,inheritedConversation:a,initiatorAuth:o,session:s,source:c}=e,l=mintSubagentContinuationToken(e.continuationKey),u={callId:t.callId,parentContinuationToken:e.parent.continuationToken??s.continuationToken,parentSessionId:s.sessionId,subagentName:t.subagentName};return(e.graph?.nodesByNodeId.get(t.nodeId)?.sandboxRegistry.sandbox?.definition.kind===`parent`||e.selfAgent)&&(s.sandboxState!==void 0&&(u.parentSandboxState=s.sandboxState),u.sandboxSessionId=e.sandboxSessionId??s.sessionId),{childContinuationToken:l,runInput:{adapter:{kind:SUBAGENT_ADAPTER_KIND,state:u},auth:n,capabilities:r,schedule:e.schedule,channelMetadata:i,inheritedConversation:a,continuationToken:l,initiatorAuth:o,input:{message:formatSubagentCallInputMessage({action:t,source:c}),outputSchema:t.input.outputSchema},conversationId:e.parent.conversationId,parent:e.parent.lineage,parentTraceContext:e.parent.traceContext,traceRoot:e.parent.traceRoot}}}function formatSubagentCallInputMessage(e){let{message:t}=e.action.input;switch(e.source.type){case`local`:return formatSubagentInput({description:e.source.description,message:t,name:e.action.subagentName,type:`local`}).message;case`runtime`:return formatSubagentInput({message:t,name:e.action.subagentName,type:`runtime`}).message;default:return e.source}}export{buildSubagentRunInput};
@@ -1,4 +1,4 @@
1
- import { a as conversationProjection, i as openConversationInputs, n as conversationReducer, o as callStatus, r as defaultMessageReducer, t as useEveAgent } from "../chunks/use-eve-agent-DLkjJIm3.js";
1
+ import { a as conversationProjection, i as openConversationInputs, n as conversationReducer, o as callStatus, r as defaultMessageReducer, t as useEveAgent } from "../chunks/use-eve-agent-3-WRmJkd.js";
2
2
 
3
3
  //#region src/client/tool-call-state.ts
4
4
  function toolCallState(conversation, callId, options = {}) {
@@ -110,7 +110,7 @@ export interface UseEveAgentOptions<TData> extends EveAgentStoreCallbacks<TData>
110
110
  * on the next send, answer, or resume. @default true
111
111
  */
112
112
  readonly followIdle?: boolean;
113
- /** Prewarm an owned session on mount and after reset. @default false */
113
+ /** Create a session or prepare its existing idle owner on mount and after reset. @default false */
114
114
  readonly prewarm?: boolean;
115
115
  /**
116
116
  * Projects stream events into `TData`. Defaults to the conversation reducer.
@@ -1,3 +1,3 @@
1
- import { t as useEveAgent } from "../chunks/use-eve-agent-DLkjJIm3.js";
1
+ import { t as useEveAgent } from "../chunks/use-eve-agent-3-WRmJkd.js";
2
2
 
3
3
  export { useEveAgent };
@@ -20,20 +20,28 @@ export type ToolModelOutput = {
20
20
  /**
21
21
  * One part of a `content` {@link ToolModelOutput}. Mirrors the AI SDK's
22
22
  * `ToolResultOutput` content parts narrowed to the JSON-safe subset:
23
- * file data is the SDK's tagged `FileData` union restricted to
24
- * `{ type: "data" }` with a base64 string, so persisted tool results
25
- * survive the durable JSON boundary. Use the `toolOutputPart` builders
26
- * from `eve/tools` to construct parts without hand-writing the nesting.
23
+ * file data is the SDK's tagged `FileData` union restricted to a base64
24
+ * `{ type: "data" }` payload or an `https:` `{ type: "url" }` string, so
25
+ * persisted tool results survive the durable JSON boundary. Use the
26
+ * `toolOutputPart` builders from `eve/tools` to construct parts without
27
+ * hand-writing the nesting.
27
28
  */
28
29
  export type ToolModelOutputPart = {
29
30
  readonly type: "text";
30
31
  readonly text: string;
31
32
  } | {
32
33
  readonly type: "file";
33
- /** Tagged file data; only JSON-safe base64 payloads are accepted. */
34
+ /**
35
+ * Tagged file data: a base64 payload, or an `https:` URL the
36
+ * provider fetches itself. A URL must stay readable for the whole
37
+ * session because every later model call sends it again.
38
+ */
34
39
  readonly data: {
35
40
  readonly type: "data";
36
41
  readonly data: string;
42
+ } | {
43
+ readonly type: "url";
44
+ readonly url: string;
37
45
  };
38
46
  /** IANA media type, e.g. `image/png`. */
39
47
  readonly mediaType: string;
@@ -90,4 +98,14 @@ export declare const toolOutputPart: {
90
98
  readonly mediaType: string;
91
99
  readonly filename?: string;
92
100
  }): ToolModelOutputPart;
101
+ /**
102
+ * Builds a file part from an `https:` URL, e.g. a presigned object
103
+ * storage link. The provider fetches the file, so eve neither downloads
104
+ * it nor stores its bytes in session history. Every later model call
105
+ * sends the URL again, so it must not expire before the session ends.
106
+ */
107
+ fileUrl(url: string, options: {
108
+ readonly mediaType: string;
109
+ readonly filename?: string;
110
+ }): ToolModelOutputPart;
93
111
  };
@@ -1 +1 @@
1
- const toolOutput={text(e){return{type:`text`,value:e}},json(e){return{type:`json`,value:e}},content(e){return{type:`content`,value:e}}},toolOutputPart={text(e){return{type:`text`,text:e}},file(e,t){let n={type:`file`,data:{type:`data`,data:e},mediaType:t.mediaType};return t.filename!==void 0&&(n.filename=t.filename),n}};export{toolOutput,toolOutputPart};
1
+ const toolOutput={text(e){return{type:`text`,value:e}},json(e){return{type:`json`,value:e}},content(e){return{type:`content`,value:e}}},toolOutputPart={text(e){return{type:`text`,text:e}},file(e,t){return filePart({type:`data`,data:e},t)},fileUrl(e,t){return filePart({type:`url`,url:e},t)}};function filePart(e,t){return t.filename===void 0?{type:`file`,data:e,mediaType:t.mediaType}:{type:`file`,data:e,mediaType:t.mediaType,filename:t.filename}}export{toolOutput,toolOutputPart};
@@ -1 +1 @@
1
- async function executeAskQuestionTool(e,t){"use workflow";return toAskQuestionOutput(await t.ask(toAskQuestionRequest(e)))}function toAskQuestionRequest(e){let t=e.options?.map(e=>({description:e.description,id:e.label,label:e.label}));return{allowFreeform:!0,display:t===void 0?`text`:`select`,prompt:e.question,...t!==void 0&&{options:t}}}function toAskQuestionOutput(e){switch(e.status){case`answered`:return{answer:e.optionId??e.text??``,status:`answered`};case`cancelled`:return{interrupted:!0};case`unavailable`:return{status:`unavailable`}}}executeAskQuestionTool.workflowId=`workflow//eve@0.81.1//executeAskQuestionTool`;export{executeAskQuestionTool,toAskQuestionOutput,toAskQuestionRequest};
1
+ async function executeAskQuestionTool(e,t){"use workflow";return toAskQuestionOutput(await t.ask(toAskQuestionRequest(e)))}function toAskQuestionRequest(e){let t=e.options?.map(e=>({description:e.description,id:e.label,label:e.label}));return{allowFreeform:!0,display:t===void 0?`text`:`select`,prompt:e.question,...t!==void 0&&{options:t}}}function toAskQuestionOutput(e){switch(e.status){case`answered`:return{answer:e.optionId??e.text??``,status:`answered`};case`cancelled`:return{interrupted:!0};case`unavailable`:return{status:`unavailable`}}}executeAskQuestionTool.workflowId=`workflow//eve@0.83.0//executeAskQuestionTool`;export{executeAskQuestionTool,toAskQuestionOutput,toAskQuestionRequest};
@@ -1,2 +1,2 @@
1
- import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeGlobOnSandbox}from"#execution/sandbox/glob-tool.js";const GLOB_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{limit:{type:`integer`,minimum:1,maximum:1e3,description:`Maximum number of results to return. Defaults to 100.`},path:{type:`string`,description:`The directory to search in. Defaults to /workspace. Must be an absolute path or begin with $HOME/. Omit to use the default.`},pattern:{type:`string`,description:`The glob pattern to match files against (e.g. "**/*.ts", "src/**/*.js").`}},required:[`pattern`],additionalProperties:!1}),GLOB_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},count:{type:`integer`},path:{type:`string`},truncated:{type:`boolean`}},required:[`content`,`count`,`path`,`truncated`],additionalProperties:!1}),glob=frameworkTool(defineTool({label:{start:e=>toolLabel(`Find`,e.pattern)},description:[`Fast file pattern matching tool that works with any codebase size.`,``,`Usage:`,`- Supports glob patterns like "**/*.js" or "src/**/*.ts".`,`- Returns matching file paths.`,`- Call this tool in parallel when you know there are multiple patterns to search for.`].join(`
1
+ import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeGlobOnSandbox}from"#execution/sandbox/glob-tool.js";const GLOB_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{limit:{type:`integer`,minimum:1,maximum:1e3,description:`Maximum number of results to return. Defaults to 100.`},path:{type:`string`,description:`The directory to search in: absolute, relative to the workspace root, or beginning with $HOME/. Omit to search the workspace root.`},pattern:{type:`string`,description:`The glob pattern to match files against (e.g. "**/*.ts", "src/**/*.js").`}},required:[`pattern`],additionalProperties:!1}),GLOB_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},count:{type:`integer`},path:{type:`string`},truncated:{type:`boolean`}},required:[`content`,`count`,`path`,`truncated`],additionalProperties:!1}),glob=frameworkTool(defineTool({label:{start:e=>toolLabel(`Find`,e.pattern)},description:[`Fast file pattern matching tool that works with any codebase size.`,``,`Usage:`,`- Supports glob patterns like "**/*.js" or "src/**/*.ts".`,`- Returns matching file paths.`,`- Call this tool in parallel when you know there are multiple patterns to search for.`].join(`
2
2
  `),async execute(e,t){return await executeGlobOnSandbox(await t.getSandbox(),e)},inputSchema:GLOB_INPUT_SCHEMA,outputSchema:GLOB_OUTPUT_SCHEMA}));export{GLOB_INPUT_SCHEMA,GLOB_OUTPUT_SCHEMA,glob as default,glob};
@@ -1,2 +1,2 @@
1
- import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeGrepOnSandbox}from"#execution/sandbox/grep-tool.js";const GREP_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{context:{type:`integer`,minimum:0,description:`Number of surrounding context lines to include before and after each match. Defaults to 0.`},glob:{type:`string`,description:`Filter files by glob pattern (e.g. "*.ts", "*.{ts,tsx}").`},ignoreCase:{type:`boolean`,description:`Perform case-insensitive search. Defaults to false.`},limit:{type:`integer`,minimum:1,maximum:1e3,description:`Maximum number of matches to return per file. Defaults to 100.`},literal:{type:`boolean`,description:`Treat the pattern as a literal string instead of a regular expression. Defaults to false.`},path:{type:`string`,description:`The directory or file to search in. Defaults to /workspace. Must be an absolute path or begin with $HOME/. Omit to use the default.`},pattern:{type:`string`,description:`The regex pattern to search for in file contents (e.g. "log.*Error", "function\\s+\\w+").`}},required:[`pattern`],additionalProperties:!1}),GREP_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},matchCount:{type:`integer`},path:{type:`string`},truncated:{type:`boolean`}},required:[`content`,`matchCount`,`path`,`truncated`],additionalProperties:!1}),grep=frameworkTool(defineTool({label:{start:e=>toolLabel(`Search`,e.pattern)},description:[`Fast content search tool that works with any codebase size.`,``,`Usage:`,`- Searches file contents using regular expressions.`,`- Supports full regex syntax (e.g. "log.*Error", "function\\s+\\w+").`,`- Filter files by pattern with the glob parameter (e.g. "*.js", "*.{ts,tsx}").`,`- Returns matching lines with file paths and line numbers.`,`- Call this tool in parallel when you have multiple independent searches.`,`- Any line longer than 2000 characters is truncated.`].join(`
1
+ import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeGrepOnSandbox}from"#execution/sandbox/grep-tool.js";const GREP_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{context:{type:`integer`,minimum:0,description:`Number of surrounding context lines to include before and after each match. Defaults to 0.`},glob:{type:`string`,description:`Filter files by glob pattern (e.g. "*.ts", "*.{ts,tsx}").`},ignoreCase:{type:`boolean`,description:`Perform case-insensitive search. Defaults to false.`},limit:{type:`integer`,minimum:1,maximum:1e3,description:`Maximum number of matches to return per file. Defaults to 100.`},literal:{type:`boolean`,description:`Treat the pattern as a literal string instead of a regular expression. Defaults to false.`},path:{type:`string`,description:`The directory or file to search in: absolute, relative to the workspace root, or beginning with $HOME/. Omit to search the workspace root.`},pattern:{type:`string`,description:`The regex pattern to search for in file contents (e.g. "log.*Error", "function\\s+\\w+").`}},required:[`pattern`],additionalProperties:!1}),GREP_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},matchCount:{type:`integer`},path:{type:`string`},truncated:{type:`boolean`}},required:[`content`,`matchCount`,`path`,`truncated`],additionalProperties:!1}),grep=frameworkTool(defineTool({label:{start:e=>toolLabel(`Search`,e.pattern)},description:[`Fast content search tool that works with any codebase size.`,``,`Usage:`,`- Searches file contents using regular expressions.`,`- Supports full regex syntax (e.g. "log.*Error", "function\\s+\\w+").`,`- Filter files by pattern with the glob parameter (e.g. "*.js", "*.{ts,tsx}").`,`- Returns matching lines with file paths and line numbers.`,`- Call this tool in parallel when you have multiple independent searches.`,`- Any line longer than 2000 characters is truncated.`].join(`
2
2
  `),async execute(e,t){return await executeGrepOnSandbox(await t.getSandbox(),e)},inputSchema:GREP_INPUT_SCHEMA,outputSchema:GREP_OUTPUT_SCHEMA}));export{GREP_INPUT_SCHEMA,GREP_OUTPUT_SCHEMA,grep as default,grep};
@@ -1,2 +1,2 @@
1
- import{frameworkTool}from"./framework-tool.js";import{contextStorage}from"#context/container.js";import{SandboxKey}from"#context/keys.js";import{basename}from"node:path";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{resolveAbsoluteFilePath}from"#execution/sandbox/require-sandbox.js";import{toolLabel}from"#tools/tool-label.js";import{toolOutput,toolOutputPart}from"#tools/model-output.js";import{executeReadFileOnSandbox}from"#execution/sandbox/read-file.js";const READ_FILE_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{filePath:{type:`string`,description:`The absolute path to the file to read. A leading $HOME is supported.`},limit:{type:`integer`,minimum:1,description:`Maximum number of lines to return. Defaults to 2000.`},offset:{type:`integer`,minimum:1,description:`1-based line number to start from. Defaults to 1.`}},required:[`filePath`],additionalProperties:!1}),READ_FILE_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},file:{type:`object`,properties:{height:{type:`integer`,minimum:1},mediaType:{type:`string`},pages:{type:`integer`,minimum:1},size:{type:`integer`,minimum:0},width:{type:`integer`,minimum:1}},required:[`mediaType`,`size`],additionalProperties:!1},nextOffset:{type:`integer`,minimum:1},path:{type:`string`},totalLines:{type:`integer`,minimum:0},truncated:{type:`boolean`}},required:[`content`,`path`,`totalLines`,`truncated`],additionalProperties:!1}),readFile=frameworkTool(defineTool({label:{start:e=>toolLabel(`Read`,e.filePath)},description:[`Read a file from the local filesystem. If the path does not exist, an error is returned.`,``,`Usage:`,`- The filePath parameter should be an absolute path or begin with $HOME/.`,`- By default, this tool returns up to 2000 lines from the start of the file.`,`- The offset parameter is the line number to start from (1-indexed).`,`- To read later sections, call this tool again with a larger offset.`,'- Contents are returned with each line prefixed by its line number as `<line>: <content>`. For example, if a file has contents "foo\\n", you will receive "1: foo\\n".',`- Any line longer than 2000 characters is truncated.`,"- PNG, JPEG, GIF, and WebP images up to 3 MiB and PDFs up to 20 MiB are shown to you as files, including files named in `Attached file <path>` references.",`- Call this tool in parallel when you know there are multiple files you want to read.`,`- Avoid tiny repeated slices (30 line chunks). If you need more context, read a larger window.`].join(`
1
+ import{frameworkTool}from"./framework-tool.js";import{contextStorage}from"#context/container.js";import{SandboxKey}from"#context/keys.js";import{basename}from"node:path";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{resolveAbsoluteFilePath}from"#execution/sandbox/require-sandbox.js";import{toolLabel}from"#tools/tool-label.js";import{toolOutput,toolOutputPart}from"#tools/model-output.js";import{executeReadFileOnSandbox}from"#execution/sandbox/read-file.js";const READ_FILE_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{filePath:{type:`string`,description:`The path to the file to read: absolute, relative to the workspace root, or beginning with $HOME/.`},limit:{type:`integer`,minimum:1,description:`Maximum number of lines to return. Defaults to 2000.`},offset:{type:`integer`,minimum:1,description:`1-based line number to start from. Defaults to 1.`}},required:[`filePath`],additionalProperties:!1}),READ_FILE_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`},file:{type:`object`,properties:{height:{type:`integer`,minimum:1},mediaType:{type:`string`},pages:{type:`integer`,minimum:1},size:{type:`integer`,minimum:0},width:{type:`integer`,minimum:1}},required:[`mediaType`,`size`],additionalProperties:!1},nextOffset:{type:`integer`,minimum:1},path:{type:`string`},totalLines:{type:`integer`,minimum:0},truncated:{type:`boolean`}},required:[`content`,`path`,`totalLines`,`truncated`],additionalProperties:!1}),readFile=frameworkTool(defineTool({label:{start:e=>toolLabel(`Read`,e.filePath)},description:[`Read a file from the local filesystem. If the path does not exist, an error is returned.`,``,`Usage:`,"- The filePath parameter is an absolute path, a path relative to the workspace root (where `bash` commands start), or a path beginning with $HOME/.",`- By default, this tool returns up to 2000 lines from the start of the file.`,`- The offset parameter is the line number to start from (1-indexed).`,`- To read later sections, call this tool again with a larger offset.`,'- Contents are returned with each line prefixed by its line number as `<line>: <content>`. For example, if a file has contents "foo\\n", you will receive "1: foo\\n".',`- Any line longer than 2000 characters is truncated.`,"- PNG, JPEG, GIF, and WebP images up to 3 MiB and PDFs up to 20 MiB are shown to you as files, including files named in `Attached file <path>` references.",`- Call this tool in parallel when you know there are multiple files you want to read.`,`- Avoid tiny repeated slices (30 line chunks). If you need more context, read a larger window.`].join(`
2
2
  `),async execute(e,t){return await executeReadFileOnSandbox(await t.getSandbox(),e)},inputSchema:READ_FILE_INPUT_SCHEMA,outputSchema:READ_FILE_OUTPUT_SCHEMA,async toModelOutput(e){if(e.file===void 0)return toolOutput.json(e);let t=await contextStorage.getStore()?.get(SandboxKey)?.get(),n=t==null?null:await t.readBinaryFile({path:await resolveAbsoluteFilePath(t,e.path)});return n===null?toolOutput.text(`${e.content} The file could not be loaded.`):n.byteLength===e.file.size?toolOutput.content([toolOutputPart.text(e.content),toolOutputPart.file(Buffer.from(n).toString(`base64`),{filename:basename(e.path),mediaType:e.file.mediaType})]):toolOutput.text(`${e.content} The file changed after it was read; read it again.`)}}));export{READ_FILE_INPUT_SCHEMA,READ_FILE_OUTPUT_SCHEMA,readFile as default,readFile};
@@ -1 +1 @@
1
- import{sleep}from"#compiled/@workflow/core/index.js";async function executeSleepTool(e,t){"use workflow";if(t.abortSignal.aborted)return{interrupted:!0};let n=new Promise(e=>t.abortSignal.addEventListener(`abort`,()=>e(`interrupted`),{once:!0})),r=sleep(Math.ceil(e.seconds*1e3)).then(()=>`elapsed`);return await Promise.race([r,n])===`elapsed`?{waitedSeconds:e.seconds}:{interrupted:!0}}executeSleepTool.workflowId=`workflow//eve@0.81.1//executeSleepTool`;export{executeSleepTool};
1
+ import{sleep}from"#compiled/@workflow/core/index.js";async function executeSleepTool(e,t){"use workflow";if(t.abortSignal.aborted)return{interrupted:!0};let n=new Promise(e=>t.abortSignal.addEventListener(`abort`,()=>e(`interrupted`),{once:!0})),r=sleep(Math.ceil(e.seconds*1e3)).then(()=>`elapsed`);return await Promise.race([r,n])===`elapsed`?{waitedSeconds:e.seconds}:{interrupted:!0}}executeSleepTool.workflowId=`workflow//eve@0.83.0//executeSleepTool`;export{executeSleepTool};
@@ -1 +1 @@
1
- import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineWorkflowTool}from"#tools/workflow-definition.js";import{DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS,parseWorkflowProgramOptions}from"#execution/dynamic-workflow/schema.js";import{attachWorkflowProgramOptions}from"#tools/workflow-program-input.js";import{runWorkflowProgramTask}from"#execution/dynamic-workflow/tool.js";const workflowProgramAgentContract=`Call ctx.agent(name, { message: string, outputSchema?: object }). Each call starts a new agent that does not see this conversation, so put everything it needs in message. It resolves directly to the agent's reply; when outputSchema is provided, the reply matches that schema. It does not return an agent metadata wrapper. The owning agent resolves the target and applies its existing availability and authorization checks.`,workflowInputSchema=defineJsonSchema({type:`object`,properties:{js:{type:`string`,description:`JavaScript statements executed inside an async function. Supply only the body, without a surrounding function declaration or arrow function. ${workflowProgramAgentContract} Return one JSON-serializable value.`}},required:[`js`],additionalProperties:!1});function workflow(e={}){let t=normalizeWorkflowToolOptions(e),n=[`Run an async JavaScript function body that invokes agents and returns one JSON-serializable value.`,workflowProgramAgentContract,`Supply the body directly, for example: return await ctx.agent("researcher", { message: "Describe the task" });`,`The program may invoke at most ${String(t.maxSubagents)} agents.`].join(` `);return attachWorkflowProgramOptions(frameworkTool(defineWorkflowTool({description:n,inputSchema:workflowInputSchema,task:runWorkflowProgramTask})),t)}function normalizeWorkflowToolOptions(e){if(typeof e!=`object`||!e)throw TypeError(`workflow options must be an object.`);return parseWorkflowProgramOptions({maxSubagents:e.maxSubagents??DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS})}export{workflow};
1
+ import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineWorkflowTool}from"#tools/workflow-definition.js";import{DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS,parseWorkflowProgramOptions}from"#execution/dynamic-workflow/schema.js";import{attachWorkflowProgramOptions}from"#tools/workflow-program-input.js";import{runWorkflowProgramTask}from"#execution/dynamic-workflow/tool.js";const workflowProgramAgentContract=`Call ctx.agent(name, { message: string, outputSchema?: object }). Each call starts a new agent that does not see this conversation, so put everything it needs in message. It resolves directly to the agent's reply; when outputSchema is provided, the reply matches that schema. It does not return an agent metadata wrapper. The owning agent resolves the target and applies its existing availability and authorization checks.`,workflowInputSchema=defineJsonSchema({type:`object`,properties:{js:{type:`string`,description:`JavaScript statements executed inside an async function. Supply only the body, without a surrounding function declaration or arrow function. ${workflowProgramAgentContract} Return one JSON-serializable value.`}},required:[`js`],additionalProperties:!1});function workflow(e={}){let t=normalizeWorkflowToolOptions(e),n=[`Run an async JavaScript function body that invokes agents and returns one JSON-serializable value.`,workflowProgramAgentContract,`Supply the body directly, for example: return await ctx.agent("researcher", { message: "Describe the task" });`,`Await every ctx.agent call before returning.`,`The program may invoke at most ${String(t.maxSubagents)} agents.`].join(` `);return attachWorkflowProgramOptions(frameworkTool(defineWorkflowTool({description:n,inputSchema:workflowInputSchema,task:runWorkflowProgramTask})),t)}function normalizeWorkflowToolOptions(e){if(typeof e!=`object`||!e)throw TypeError(`workflow options must be an object.`);return parseWorkflowProgramOptions({maxSubagents:e.maxSubagents??DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS})}export{workflow};
@@ -1,2 +1,2 @@
1
- import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeWriteFileOnSandbox}from"#execution/sandbox/write-file.js";const WRITE_FILE_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`,description:`Complete replacement file contents.`},filePath:{type:`string`,description:`The absolute path to the file to write. A leading $HOME is supported.`}},required:[`content`,`filePath`],additionalProperties:!1}),WRITE_FILE_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{existed:{type:`boolean`},path:{type:`string`}},required:[`existed`,`path`],additionalProperties:!1}),writeFile=frameworkTool(defineTool({label:{start:e=>toolLabel(`Write`,e.filePath)},description:[`Writes a file to the local filesystem.`,``,`Usage:`,`- This tool will overwrite the existing file if there is one at the provided path.`,`- If this is an existing file, you MUST use the read_file tool first to read the file's contents. This tool will fail if you did not read the file first.`,`- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.`,`- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.`,`- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`].join(`
1
+ import{frameworkTool}from"./framework-tool.js";import{defineJsonSchema}from"#tools/schema.js";import{defineTool}from"#tools/definition.js";import{toolLabel}from"#tools/tool-label.js";import{executeWriteFileOnSandbox}from"#execution/sandbox/write-file.js";const WRITE_FILE_INPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{content:{type:`string`,description:`Complete replacement file contents.`},filePath:{type:`string`,description:`The path to the file to write: absolute, relative to the workspace root, or beginning with $HOME/.`}},required:[`content`,`filePath`],additionalProperties:!1}),WRITE_FILE_OUTPUT_SCHEMA=defineJsonSchema({type:`object`,properties:{existed:{type:`boolean`},path:{type:`string`}},required:[`existed`,`path`],additionalProperties:!1}),writeFile=frameworkTool(defineTool({label:{start:e=>toolLabel(`Write`,e.filePath)},description:[`Writes a file to the local filesystem.`,``,`Usage:`,`- This tool will overwrite the existing file if there is one at the provided path.`,`- If this is an existing file, you MUST use the read_file tool first to read the file's contents. This tool will fail if you did not read the file first.`,`- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.`,`- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.`,`- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`].join(`
2
2
  `),async execute(e,t){return await executeWriteFileOnSandbox(await t.getSandbox(),e)},inputSchema:WRITE_FILE_INPUT_SCHEMA,outputSchema:WRITE_FILE_OUTPUT_SCHEMA}));export{WRITE_FILE_INPUT_SCHEMA,WRITE_FILE_OUTPUT_SCHEMA,writeFile as default,writeFile};
@@ -1,6 +1,7 @@
1
1
  import type { StandardJSONSchemaV1, StandardSchemaV1 } from "#compiled/@standard-schema/spec/index.js";
2
2
  import type { ToolApproval } from "#approval/definition.js";
3
3
  import type { MessageResult, SendTurnOptions } from "#client/types.js";
4
+ import type { AgentModelOptionsDefinition, AgentReasoningDefinition } from "#shared/agent-definition.js";
4
5
  import type { JsonObject } from "#shared/json.js";
5
6
  import { type PublicToolDefinition, type ToolContext, type ToolInputRequest, type ToolInputRequestOptions, type ToolInputResponse } from "#tools/definition.js";
6
7
  import type { ToolModelOutput } from "#tools/model-output.js";
@@ -9,8 +10,31 @@ export type { WorkflowToolEntryPoint };
9
10
  export interface WorkflowAgentMetadata {
10
11
  readonly description: string;
11
12
  }
12
- /** Context capabilities available inside an authored `"use step"` helper. */
13
- export type WorkflowStepToolContext = Pick<ToolContext, "abortSignal" | "callId" | "session" | "toolName" | "getToken" | "requireAuth">;
13
+ /** A serializable model selection for a local `ctx.agent` session. */
14
+ export type AgentSessionModelSelection = string | {
15
+ readonly model: string;
16
+ readonly modelContextWindowTokens?: number;
17
+ readonly modelOptions?: AgentModelOptionsDefinition;
18
+ readonly reasoning?: AgentReasoningDefinition;
19
+ };
20
+ /** Options that bind to a `ctx.agent` session when it opens. */
21
+ export interface AgentSessionOptions {
22
+ /** Override the model for every turn in this local agent session. */
23
+ readonly model?: AgentSessionModelSelection;
24
+ }
25
+ /**
26
+ * Context capabilities available inside an authored `"use step"` helper.
27
+ *
28
+ * `getSandbox()` opens the sandbox of the session that made the call, the
29
+ * same sandbox its turns use. If the session had not recorded its sandbox
30
+ * when it called the tool, the step opens it with the sandbox definition of
31
+ * the session that owns it (the parent's, for a session that shares its
32
+ * parent's sandbox), so make that definition safe to run again. The step does not own the sandbox: eve lets go of the
33
+ * step's handle when the step ends and never stops or deletes the sandbox for
34
+ * it, and `stop()` and `delete()` throw. The session deletes it when the
35
+ * session ends. Steps can retry, so make sandbox writes safe to repeat.
36
+ */
37
+ export type WorkflowStepToolContext = Pick<ToolContext, "abortSignal" | "callId" | "session" | "toolName" | "getSandbox" | "getToken" | "requireAuth">;
14
38
  /** Options for one message to a `ctx.agent` session. */
15
39
  export interface AgentSendOptions<TOutput = unknown> {
16
40
  /** Structured output for the turn, as on the client's `send`. */
@@ -48,13 +72,17 @@ export interface AgentSession {
48
72
  */
49
73
  send<TOutput = unknown>(message: string, options?: AgentSendOptions<TOutput>): Promise<AgentResponse<TOutput>>;
50
74
  }
51
- /** Members the context of every workflow tool entry point shares. */
52
- export type WorkflowSharedContext = Pick<ToolContext, "session" | "toolName" | "getToken" | "requireAuth"> & {
75
+ /**
76
+ * Members the context of every workflow tool entry point shares.
77
+ * `getSandbox`, `getToken`, and `requireAuth` work only after `ctx` is passed
78
+ * to a `"use step"` helper; the workflow body throws when it calls them.
79
+ */
80
+ export type WorkflowSharedContext = Pick<ToolContext, "session" | "toolName" | "getSandbox" | "getToken" | "requireAuth"> & {
53
81
  /**
54
82
  * Returns a new session with the agent of this invocation name. Nothing
55
83
  * starts until the first `send`.
56
84
  */
57
- agent(name: string): AgentSession;
85
+ agent(name: string, options?: AgentSessionOptions): AgentSession;
58
86
  /** Metadata for agents callable by this workflow, including hidden agents. */
59
87
  agents: Readonly<Record<string, WorkflowAgentMetadata>>;
60
88
  /**
@@ -3,10 +3,13 @@ export declare function withConversationId(context: Context, conversationId: str
3
3
  interface OperationConversation {
4
4
  readonly rootSessionId?: string;
5
5
  readonly sessionId: string;
6
+ readonly traceSessionId?: string;
6
7
  }
8
+ export declare function traceSessionIdOf(scope: OperationConversation): string;
7
9
  export declare function operationConversationId(input: OperationConversation): string;
8
- export declare function withOperationConversation(context: Context, input: OperationConversation): Context;
10
+ export declare function withOperationTraceContext(context: Context, input: OperationConversation): Context;
9
11
  export declare function conversationIdFromContext(context: unknown): string | undefined;
12
+ export declare function traceSessionIdFromContext(context: unknown): string | undefined;
10
13
  export declare function readConversationBaggage(value: string | null): string | undefined;
11
14
  export declare function writeConversationBaggage(value: string | undefined, conversationId: string | undefined): string | undefined;
12
15
  export {};
@@ -1 +1 @@
1
- import{readBaggageMember,replaceBaggageMember}from"#protocol/baggage.js";import{readConversationId,resolveConversationId}from"#shared/conversation-identity.js";import{createContextKey}from"#compiled/@opentelemetry/api/index.js";const BAGGAGE_KEY=`eve.conversation.id`,CONVERSATION_KEY=createContextKey(`eve.trace.conversation.id`);function withConversationId(e,t){return e.setValue(CONVERSATION_KEY,t)}function operationConversationId(e){return resolveConversationId(e.rootSessionId??e.sessionId)}function withOperationConversation(e,t){return withConversationId(e,operationConversationId(t))}function conversationIdFromContext(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,`getValue`);return typeof t==`function`?readConversationId(Reflect.apply(t,e,[CONVERSATION_KEY])):void 0}function readConversationBaggage(e){let t=readBaggageMember(e,BAGGAGE_KEY);return typeof t==`string`?void 0:readConversationId(t.value)}function writeConversationBaggage(e,t){let n=readConversationId(t);return n===void 0?e:replaceBaggageMember(e,BAGGAGE_KEY,encodeURIComponent(n))}export{conversationIdFromContext,operationConversationId,readConversationBaggage,withConversationId,withOperationConversation,writeConversationBaggage};
1
+ import{readBaggageMember,replaceBaggageMember}from"#protocol/baggage.js";import{readConversationId,resolveConversationId}from"#shared/conversation-identity.js";import{createContextKey}from"#compiled/@opentelemetry/api/index.js";const BAGGAGE_KEY=`eve.conversation.id`,CONVERSATION_KEY=createContextKey(`eve.trace.conversation.id`),TRACE_SESSION_KEY=createContextKey(`eve.trace.session.id`);function withConversationId(e,t){return e.setValue(CONVERSATION_KEY,t)}function traceSessionIdOf(e){return e.traceSessionId??e.rootSessionId??e.sessionId}function operationConversationId(e){return resolveConversationId(e.rootSessionId??e.sessionId)}function withOperationTraceContext(e,t){return withConversationId(e,operationConversationId(t)).setValue(TRACE_SESSION_KEY,traceSessionIdOf(t))}function conversationIdFromContext(e){return readConversationId(readContextValue(e,CONVERSATION_KEY))}function traceSessionIdFromContext(e){let t=readContextValue(e,TRACE_SESSION_KEY);return typeof t==`string`&&t.length>0?t:void 0}function readContextValue(e,t){if(typeof e!=`object`||!e)return;let n=Reflect.get(e,`getValue`);if(typeof n==`function`)return Reflect.apply(n,e,[t])}function readConversationBaggage(e){let t=readBaggageMember(e,BAGGAGE_KEY);return typeof t==`string`?void 0:readConversationId(t.value)}function writeConversationBaggage(e,t){let n=readConversationId(t);return n===void 0?e:replaceBaggageMember(e,BAGGAGE_KEY,encodeURIComponent(n))}export{conversationIdFromContext,operationConversationId,readConversationBaggage,traceSessionIdFromContext,traceSessionIdOf,withConversationId,withOperationTraceContext,writeConversationBaggage};
@@ -1 +1 @@
1
- import{createLogger,formatError}from"#internal/logging.js";import{applyLiveDeliveryAudienceCeiling}from"#shared/forwarded-trace-policy.js";import{DIRECT_TOOL_CALL_ATTRIBUTE,DIRECT_TOOL_CALL_VALUE}from"#tracing/local/inspection.js";import{resolveInstrumentationEnvironment}from"#internal/application/dev-environment.js";import{operationConversationId}from"#tracing/eve/conversation-context.js";import{resolveTracePolicy}from"#shared/trace-policy.js";import{context}from"#compiled/@opentelemetry/api/index.js";import{buildConversationContext}from"#channel/conversation-context.js";import{markAgentTraceContext}from"#tracing/eve/agent-trace-context.js";import{toolCallIdempotencyKey}from"#instrumentation/lifecycle.js";import{contentAttribute,mcpLifecycle,withErrorContent}from"#compiled/@vercel/agent-runs/otel.js";import{otelTelemetry}from"#compiled/@vercel/agent-runs/index.js";import{getInstrumentationRuntime}from"#instrumentation/runtime-global.js";import{MCP_SERIALIZER}from"#tracing/eve/mcp.js";import{withChannelAudience}from"#tracing/eve/channel-audience-context.js";import{eveOutputMapping}from"#tracing/eve/profile.js";const log=createLogger(`invoke-tool`),agentTelemetry=()=>otelTelemetry({tracerName:`eve.agent`,mapping:eveOutputMapping()});async function withInvokeToolSpan(e,t){let n=withErrorContent(context.active(),!1);return await context.with(n,()=>traced(e,n,t))}async function traced(e,t,n){let r=getInstrumentationRuntime();if(r===void 0)return await n(silentObserver);let i=agentTelemetry(),a=buildConversationContext({adapter:e.origin?.adapter??{kind:`channel`},auth:e.auth,channelName:e.origin?.channelName},resolveInstrumentationEnvironment()),o=toolCallEvents(r.hooks.forTrace?.({agentName:e.agentName,...a})??r.hooks,{attemptId:e.callId,attemptIndex:0,channelAudience:a.audience,functionId:e.agentName,rootSessionId:e.sessionId,sessionId:e.sessionId,stepIndex:0,traceSessionId:e.sessionId,turnId:e.callId},e),s=r.otelSettings;if(s===void 0)return await n(o.observer(void 0));let c=resolveTracePolicy(s.tracePolicy,{agentName:e.agentName,...a},e=>log.warn(`tracePolicy threw; dropping the tool call's trace`,{error:formatError(e)}));if(c.action===`drop`)return await i.suppressed(()=>n(o.observer(void 0)));let l=applyLiveDeliveryAudienceCeiling({...c,recordInputs:s.recordInputs&&c.recordInputs,recordOutputs:s.recordOutputs&&c.recordOutputs},a.audience,void 0,a.environment),u=l.action===`record`&&l.recordInputs,d=l.action===`record`&&l.recordOutputs,f=`execute_tool ${e.toolName}`,p=withChannelAudience(t,a.audience),m={"agent.tool.is_framework":!1,"gen_ai.agent.name":e.agentName,"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.call.id":e.callId,"gen_ai.tool.name":e.toolName,"gen_ai.tool.type":`function`,[DIRECT_TOOL_CALL_ATTRIBUTE]:DIRECT_TOOL_CALL_VALUE,"operation.name":`execute_tool`,"resource.name":f,"agent.run.id":e.sessionId,"agent.trace.schema.version":4,"gen_ai.conversation.id":operationConversationId({sessionId:e.sessionId})};process.env.VERCEL_ENV!==void 0&&(m[`vercel.session_id`]=e.sessionId),e.origin!==void 0&&(m[`eve.channel.kind`]=a.channel.kind,m[`eve.channel.name`]=e.origin.channelName);let h=i.startSpan({type:`tool`,operationId:e.callId,name:f,kind:`INTERNAL`,attributes:m},{context:p}),g={emit:!0,recordInputs:u,recordOutputs:d},_=markAgentTraceContext(withErrorContent(p,d)),v=mcpLifecycle({serializer:MCP_SERIALIZER,...g,write:e=>setDefined(h,e),error:(e,t)=>h.fail(d?e:void 0,t)}),y,b=o.observer({failedWith:e=>{y={error:e}},recordInputs:u,span:h});try{let e=await i.run({type:`tool`,reference:h.reference,capture:g,mcp:v},()=>n(b),_);if(h.setAttribute(`eve.tool.outcome`,e.status),e.status===`completed`&&d){let t=contentAttribute(e.output);t!==void 0&&h.setAttribute(`gen_ai.tool.call.result`,t)}return e.status===`invalid-input`?h.fail(void 0,e.status):e.status===`failed`&&h.fail(d?y?.error:void 0,y===void 0?e.status:void 0),e}catch(e){throw h.fail(d?e:void 0),e}finally{h.end(),await r.forceFlush().catch(e=>{log.warn(`flushing a tool call's trace failed`,{error:formatError(e)})})}}const silentObserver={executed:async()=>{},executing:async()=>{},failedWith:()=>{}};function toolCallEvents(e,t,n){let r=e.capturesInputs??e.capturesContent,i=e.capturesOutputs??e.capturesContent,a=toolCallIdempotencyKey(t,n.callId,0);return{observer(o){return{async executing(i){if(o?.recordInputs){let e=contentAttribute(i);e!==void 0&&o.span.setAttribute(`gen_ai.tool.call.arguments`,e)}await e.publish(Object.freeze({callId:n.callId,idempotencyKey:a,input:r?i:void 0,scope:t,toolName:n.toolName,type:`tool.call.started`}))},async executed(n){o?.span.setAttribute(`gen_ai.execute_tool.duration`,n.durationMs/1e3);let r=n.type===`result`?i?{output:n.output,type:`result`}:{type:`result`}:i?{error:n.error,type:`error`}:{type:`error`};await e.publish(Object.freeze({durationMs:n.durationMs,idempotencyKey:a,output:Object.freeze(r),scope:t,type:`tool.call.completed`,outcome:n.type===`result`?`completed`:`failed`}))},failedWith(e){o?.failedWith(e)}}}}}function setDefined(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.setAttribute(n,r)}export{withInvokeToolSpan};
1
+ import{createLogger,formatError}from"#internal/logging.js";import{applyLiveDeliveryAudienceCeiling}from"#shared/forwarded-trace-policy.js";import{DIRECT_TOOL_CALL_ATTRIBUTE,DIRECT_TOOL_CALL_VALUE}from"#tracing/local/inspection.js";import{resolveInstrumentationEnvironment}from"#internal/application/dev-environment.js";import{operationConversationId,withOperationTraceContext}from"#tracing/eve/conversation-context.js";import{resolveTracePolicy}from"#shared/trace-policy.js";import{context}from"#compiled/@opentelemetry/api/index.js";import{buildConversationContext}from"#channel/conversation-context.js";import{markAgentTraceContext}from"#tracing/eve/agent-trace-context.js";import{toolCallIdempotencyKey}from"#instrumentation/lifecycle.js";import{contentAttribute,mcpLifecycle,withErrorContent}from"#compiled/@vercel/agent-runs/otel.js";import{otelTelemetry}from"#compiled/@vercel/agent-runs/index.js";import{getInstrumentationRuntime}from"#instrumentation/runtime-global.js";import{MCP_SERIALIZER}from"#tracing/eve/mcp.js";import{withChannelAudience}from"#tracing/eve/channel-audience-context.js";import{eveOutputMapping}from"#tracing/eve/profile.js";const log=createLogger(`invoke-tool`),agentTelemetry=()=>otelTelemetry({tracerName:`eve.agent`,mapping:eveOutputMapping()});async function withInvokeToolSpan(e,t){let n=withErrorContent(context.active(),!1);return await context.with(n,()=>traced(e,n,t))}async function traced(e,t,n){let r=getInstrumentationRuntime();if(r===void 0)return await n(silentObserver);let i=agentTelemetry(),a=buildConversationContext({adapter:e.origin?.adapter??{kind:`channel`},auth:e.auth,channelName:e.origin?.channelName},resolveInstrumentationEnvironment()),o=r.hooks.forTrace?.({agentName:e.agentName,...a})??r.hooks,s={attemptId:e.callId,attemptIndex:0,channelAudience:a.audience,functionId:e.agentName,rootSessionId:e.sessionId,sessionId:e.sessionId,stepIndex:0,traceSessionId:e.sessionId,turnId:e.callId},c=toolCallEvents(o,s,e),l=r.otelSettings;if(l===void 0)return await n(c.observer(void 0));let u=resolveTracePolicy(l.tracePolicy,{agentName:e.agentName,...a},e=>log.warn(`tracePolicy threw; dropping the tool call's trace`,{error:formatError(e)}));if(u.action===`drop`)return await i.suppressed(()=>n(c.observer(void 0)));let d=applyLiveDeliveryAudienceCeiling({...u,recordInputs:l.recordInputs&&u.recordInputs,recordOutputs:l.recordOutputs&&u.recordOutputs},a.audience,void 0,a.environment),f=d.action===`record`&&d.recordInputs,p=d.action===`record`&&d.recordOutputs,m=`execute_tool ${e.toolName}`,h=withOperationTraceContext(withChannelAudience(t,a.audience),s),g={"agent.tool.is_framework":!1,"gen_ai.agent.name":e.agentName,"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.call.id":e.callId,"gen_ai.tool.name":e.toolName,"gen_ai.tool.type":`function`,[DIRECT_TOOL_CALL_ATTRIBUTE]:DIRECT_TOOL_CALL_VALUE,"operation.name":`execute_tool`,"resource.name":m,"agent.run.id":e.sessionId,"agent.trace.schema.version":4,"gen_ai.conversation.id":operationConversationId({sessionId:e.sessionId})};process.env.VERCEL_ENV!==void 0&&(g[`vercel.session_id`]=e.sessionId),e.origin!==void 0&&(g[`eve.channel.kind`]=a.channel.kind,g[`eve.channel.name`]=e.origin.channelName);let _=i.startSpan({type:`tool`,operationId:e.callId,name:m,kind:`INTERNAL`,attributes:g},{context:h}),v={emit:!0,recordInputs:f,recordOutputs:p},y=markAgentTraceContext(withErrorContent(h,p)),b=mcpLifecycle({serializer:MCP_SERIALIZER,...v,write:e=>setDefined(_,e),error:(e,t)=>_.fail(p?e:void 0,t)}),x,S=c.observer({failedWith:e=>{x={error:e}},recordInputs:f,span:_});try{let e=await i.run({type:`tool`,reference:_.reference,capture:v,mcp:b},()=>n(S),y);if(_.setAttribute(`eve.tool.outcome`,e.status),e.status===`completed`&&p){let t=contentAttribute(e.output);t!==void 0&&_.setAttribute(`gen_ai.tool.call.result`,t)}return e.status===`invalid-input`?_.fail(void 0,e.status):e.status===`failed`&&_.fail(p?x?.error:void 0,x===void 0?e.status:void 0),e}catch(e){throw _.fail(p?e:void 0),e}finally{_.end(),await r.forceFlush().catch(e=>{log.warn(`flushing a tool call's trace failed`,{error:formatError(e)})})}}const silentObserver={executed:async()=>{},executing:async()=>{},failedWith:()=>{}};function toolCallEvents(e,t,n){let r=e.capturesInputs??e.capturesContent,i=e.capturesOutputs??e.capturesContent,a=toolCallIdempotencyKey(t,n.callId,0);return{observer(o){return{async executing(i){if(o?.recordInputs){let e=contentAttribute(i);e!==void 0&&o.span.setAttribute(`gen_ai.tool.call.arguments`,e)}await e.publish(Object.freeze({callId:n.callId,idempotencyKey:a,input:r?i:void 0,scope:t,toolName:n.toolName,type:`tool.call.started`}))},async executed(n){o?.span.setAttribute(`gen_ai.execute_tool.duration`,n.durationMs/1e3);let r=n.type===`result`?i?{output:n.output,type:`result`}:{type:`result`}:i?{error:n.error,type:`error`}:{type:`error`};await e.publish(Object.freeze({durationMs:n.durationMs,idempotencyKey:a,output:Object.freeze(r),scope:t,type:`tool.call.completed`,outcome:n.type===`result`?`completed`:`failed`}))},failedWith(e){o?.failedWith(e)}}}}}function setDefined(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.setAttribute(n,r)}export{withInvokeToolSpan};
@@ -1,10 +1,5 @@
1
1
  import type { AgentTraceStateStore } from "#tracing/eve/agent-trace-state.js";
2
2
  import { type AgentTelemetry, type AgentRun } from "#compiled/@vercel/agent-runs/index.js";
3
- export declare function traceSessionIdOf(scope: {
4
- readonly traceSessionId?: string;
5
- readonly rootSessionId?: string;
6
- readonly sessionId: string;
7
- }): string;
8
3
  export declare function checkpointContent(value: string | undefined): unknown;
9
4
  /** Identity of one eve turn within the shared tracing library. */
10
5
  export declare function eveTurnIdentity(input: {
@@ -1 +1 @@
1
- import{resolveConversationId}from"#shared/conversation-identity.js";import{createAgentRun}from"#compiled/@vercel/agent-runs/index.js";function traceSessionIdOf(e){return e.traceSessionId??e.rootSessionId??e.sessionId}function checkpointContent(e){if(e!==void 0)try{return JSON.parse(e)}catch{return}}function eveTurnIdentity(e){return{conversationId:resolveConversationId(e.rootSessionId??e.sessionId),runId:e.sessionId,turnId:e.turnId}}function createEveTracing(e){return createAgentRun({telemetry:e.telemetry,checkpointer:{get:t=>e.stateStore.get(`checkpoint`,t),set:(t,n)=>e.stateStore.set(`checkpoint`,t,n),delete:t=>e.stateStore.delete(`checkpoint`,t)}})}export{checkpointContent,createEveTracing,eveTurnIdentity,traceSessionIdOf};
1
+ import{resolveConversationId}from"#shared/conversation-identity.js";import{createAgentRun}from"#compiled/@vercel/agent-runs/index.js";function checkpointContent(e){if(e!==void 0)try{return JSON.parse(e)}catch{return}}function eveTurnIdentity(e){return{conversationId:resolveConversationId(e.rootSessionId??e.sessionId),runId:e.sessionId,turnId:e.turnId}}function createEveTracing(e){return createAgentRun({telemetry:e.telemetry,checkpointer:{get:t=>e.stateStore.get(`checkpoint`,t),set:(t,n)=>e.stateStore.set(`checkpoint`,t,n),delete:t=>e.stateStore.delete(`checkpoint`,t)}})}export{checkpointContent,createEveTracing,eveTurnIdentity};
@@ -1 +1 @@
1
- import{createRequire}from"node:module";import{conversationIdFromContext}from"#tracing/eve/conversation-context.js";import{SpanKind,context,metrics,propagation,trace}from"#compiled/@opentelemetry/api/index.js";import{invocationName}from"#compiled/@vercel/agent-runs/otel.js";import{AgentSpanIdGenerator}from"#compiled/@vercel/agent-runs/index.js";import{registerOTel}from"#compiled/@vercel/otel/index.js";const REGISTRATION_SPAN_NAME=`eve.otel.registration`,REPLAY_DEDUPLICATION_LIMIT=1e5,REPLAY_DEDUPLICATION_KEY=Symbol.for(`eve.otel.replay-deduplication`),require=createRequire(import.meta.url),replayDeduplicationGlobal=globalThis;var RegistrationMarkerPropagator=class{#e=!1;extract(e){return e}fields(){return[]}inject(){this.#e=!0}isInstalled(){return this.#e=!1,propagation.inject(context.active(),{},{set:()=>{}}),this.#e}},PrivateSpanFilteringProcessor=class{endedSpans;forwardedSpans=new Set;pendingByParent=new Map;pendingSpanCount=0;processors;startedSpans=new Set;constructor(e,t){this.processors=e,this.endedSpans=t}async forceFlush(){this.drainPendingSpans(),await Promise.all(this.processors.map(e=>e.forceFlush()))}onEnd(e){if(isRegistrationSpan(e))return;let t=spanIdentity(e);if(t!==void 0){if(this.endedSpans.has(t))return;if(this.endedSpans.size>=REPLAY_DEDUPLICATION_LIMIT){let e=this.endedSpans.values().next().value;e!==void 0&&this.endedSpans.delete(e)}this.endedSpans.add(t)}let n=parentIdentity(e);if(n!==void 0&&this.startedSpans.has(n)&&!this.forwardedSpans.has(n)){let t=this.pendingByParent.get(n)??[];t.push(e),this.pendingByParent.set(n,t),this.pendingSpanCount+=1,this.pendingSpanCount>1e4&&this.releaseOldestPendingParent();return}this.forward(e,t)}onStart(e,t){if(isRegistrationSpan(e))return;let n=conversationIdFromContext(t);n!==void 0&&e.attributes?.[`gen_ai.conversation.id`]===void 0&&e.setAttribute(`gen_ai.conversation.id`,n);let r=spanIdentity(e);r!==void 0&&addBounded(this.startedSpans,r);for(let n of this.processors)n.onStart(e,t)}async shutdown(){this.drainPendingSpans(),await Promise.all(this.processors.map(e=>e.shutdown()))}drainPendingSpans(){for(;this.pendingByParent.size>0;)this.releaseOldestPendingParent()}releaseOldestPendingParent(){let e=this.pendingByParent.keys().next().value;e!==void 0&&this.releaseChildren(e)}releaseChildren(e){let t=this.pendingByParent.get(e);if(t!==void 0){this.pendingByParent.delete(e),this.pendingSpanCount-=t.length;for(let e of t)this.forward(e,spanIdentity(e))}}forward(e,t){for(let t of this.processors)t.onEnd(e);t!==void 0&&(addBounded(this.forwardedSpans,t),this.releaseChildren(t))}};function registerOtelPipeline(e){let t=e.otel,n=captureOptionalPeerTracerProxy(),r=new AgentSpanIdGenerator,i=new RegistrationMarkerPropagator,a=privateSpanProcessors(t.spanProcessors),o={attributes:t.resource,autoDetectResources:!1,idGenerator:r,instrumentations:t.instrumentations??[],metricReaders:t.metricReaders,propagators:[...t.propagators??[`auto`],i],serviceName:e.serviceName,spanProcessors:a};registerOTel(t.sampler===void 0?o:{...o,traceSampler:t.sampler});let s=globalTracerUses(r),c=i.isInstalled();if((!s||!c)&&rollbackRegistration({ownsPropagator:c,ownsTracer:s}),!s)throw Error("eve could not register OpenTelemetry because another runtime already owns the global tracer provider. Remove the other `registerOTel` call, or move its exporters into eve's `otelIntegration({ spanProcessors: [...] })`.");if(!c)throw Error("eve could not register OpenTelemetry because another runtime already owns the global propagator. Remove the other global propagator registration and declare propagators through eve's `otel()` instead.");let l=runtimeTracerProvider();if(typeof l.forceFlush!=`function`||typeof l.shutdown!=`function`)throw rollbackRegistration({ownsPropagator:c,ownsTracer:s}),Error(`The registered OpenTelemetry tracer provider has no lifecycle methods.`);n?.setDelegate(l);let u=runtimeMeterProvider();return{provider:trace.getTracerProvider(),forceFlush:async()=>{await Promise.all([l.forceFlush(),u.forceFlush?.()])},idGenerator:r,samplesTrace:(e,t)=>samplerAdmitsTrace(r,e,t),shutdown:async()=>{disableInstrumentations(t.instrumentations),await Promise.all([l.shutdown(),u.shutdown?.()])}}}function privateSpanProcessors(e){let t=e.filter(isSpanProcessor);if(t.length===0)return[...e];let n=new PrivateSpanFilteringProcessor(t,replayDeduplicationRegistry()),r=[],i=!1;for(let t of e){if(!isSpanProcessor(t)){r.push(t);continue}i||(i=!0,r.push(n))}return r}function replayDeduplicationRegistry(){let e=replayDeduplicationGlobal[REPLAY_DEDUPLICATION_KEY];if(e!==void 0)return e;let t=new Set;return replayDeduplicationGlobal[REPLAY_DEDUPLICATION_KEY]=t,t}const registerOtel=registerOtelPipeline;function samplerAdmitsTrace(e,t,n={name:invocationName(void 0)}){return(e.withTraceId(t,()=>trace.getTracer(`eve.registration`).startSpan(n.name,{attributes:n.attributes,kind:SpanKind.INTERNAL,root:!0})).spanContext().traceFlags&1)==1}function rollbackRegistration(e){if(e.ownsPropagator&&propagation.disable(),!e.ownsTracer)return;let t=runtimeTracerProvider();if(typeof t.shutdown==`function`)try{t.shutdown().catch(()=>{})}catch{}trace.disable()}function runtimeTracerProvider(){let e=trace.getTracerProvider();return e.getDelegate?.()??e}function runtimeMeterProvider(){let e=metrics.getMeterProvider();return{forceFlush:typeof e?.forceFlush==`function`?()=>e.forceFlush():void 0,shutdown:typeof e?.shutdown==`function`?()=>e.shutdown():void 0}}function disableInstrumentations(e){for(let t of e??[]){let e=t?.disable;if(typeof e==`function`)try{e.call(t)}catch{}}}function globalTracerUses(e){let t=e.allocateSpanId();return e.withSpanId(t,()=>trace.getTracer(`eve.registration`).startSpan(REGISTRATION_SPAN_NAME)).spanContext().spanId===t}function isRegistrationSpan(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===REGISTRATION_SPAN_NAME||`instrumentationScope`in e&&e.instrumentationScope?.name===`eve.registration`)}function spanIdentity(e){if(typeof e!=`object`||!e||!(`spanContext`in e)||typeof e.spanContext!=`function`)return;let t=e.spanContext();return typeof t.traceId==`string`&&typeof t.spanId==`string`?`${t.traceId}:${t.spanId}`:void 0}function parentIdentity(e){if(typeof e!=`object`||!e||!(`parentSpanContext`in e))return;let t=e.parentSpanContext;return typeof t?.traceId==`string`&&typeof t.spanId==`string`?`${t.traceId}:${t.spanId}`:void 0}function addBounded(e,t){if(e.size>=REPLAY_DEDUPLICATION_LIMIT){let t=e.values().next().value;t!==void 0&&e.delete(t)}e.add(t)}function isSpanProcessor(e){return e!==`auto`}function captureOptionalPeerTracerProxy(){try{let e=require("@opentelemetry/api"),t=e.trace.getTracerProvider();return t instanceof e.ProxyTracerProvider?t:void 0}catch{return}}export{registerOtel,registerOtelPipeline};
1
+ import{createRequire}from"node:module";import{conversationIdFromContext,traceSessionIdFromContext}from"#tracing/eve/conversation-context.js";import{SpanKind,context,metrics,propagation,trace}from"#compiled/@opentelemetry/api/index.js";import{invocationName}from"#compiled/@vercel/agent-runs/otel.js";import{AgentSpanIdGenerator}from"#compiled/@vercel/agent-runs/index.js";import{registerOTel}from"#compiled/@vercel/otel/index.js";const REGISTRATION_SPAN_NAME=`eve.otel.registration`,REPLAY_DEDUPLICATION_LIMIT=1e5,REPLAY_DEDUPLICATION_KEY=Symbol.for(`eve.otel.replay-deduplication`),require=createRequire(import.meta.url),replayDeduplicationGlobal=globalThis;var RegistrationMarkerPropagator=class{#e=!1;extract(e){return e}fields(){return[]}inject(){this.#e=!0}isInstalled(){return this.#e=!1,propagation.inject(context.active(),{},{set:()=>{}}),this.#e}},PrivateSpanFilteringProcessor=class{endedSpans;forwardedSpans=new Set;pendingByParent=new Map;pendingSpanCount=0;processors;startedSpans=new Set;constructor(e,t){this.processors=e,this.endedSpans=t}async forceFlush(){this.drainPendingSpans(),await Promise.all(this.processors.map(e=>e.forceFlush()))}onEnd(e){if(isRegistrationSpan(e))return;let t=spanIdentity(e);if(t!==void 0){if(this.endedSpans.has(t))return;if(this.endedSpans.size>=REPLAY_DEDUPLICATION_LIMIT){let e=this.endedSpans.values().next().value;e!==void 0&&this.endedSpans.delete(e)}this.endedSpans.add(t)}let n=parentIdentity(e);if(n!==void 0&&this.startedSpans.has(n)&&!this.forwardedSpans.has(n)){let t=this.pendingByParent.get(n)??[];t.push(e),this.pendingByParent.set(n,t),this.pendingSpanCount+=1,this.pendingSpanCount>1e4&&this.releaseOldestPendingParent();return}this.forward(e,t)}onStart(e,t){if(isRegistrationSpan(e))return;let n=e,r=conversationIdFromContext(t);r!==void 0&&n.attributes?.[`gen_ai.conversation.id`]===void 0&&n.setAttribute(`gen_ai.conversation.id`,r);let i=traceSessionIdFromContext(t);process.env.VERCEL_ENV!==void 0&&i!==void 0&&n.attributes?.[`vercel.session_id`]===void 0&&n.setAttribute(`vercel.session_id`,i);let a=spanIdentity(e);a!==void 0&&addBounded(this.startedSpans,a);for(let n of this.processors)n.onStart(e,t)}async shutdown(){this.drainPendingSpans(),await Promise.all(this.processors.map(e=>e.shutdown()))}drainPendingSpans(){for(;this.pendingByParent.size>0;)this.releaseOldestPendingParent()}releaseOldestPendingParent(){let e=this.pendingByParent.keys().next().value;e!==void 0&&this.releaseChildren(e)}releaseChildren(e){let t=this.pendingByParent.get(e);if(t!==void 0){this.pendingByParent.delete(e),this.pendingSpanCount-=t.length;for(let e of t)this.forward(e,spanIdentity(e))}}forward(e,t){for(let t of this.processors)t.onEnd(e);t!==void 0&&(addBounded(this.forwardedSpans,t),this.releaseChildren(t))}};function registerOtelPipeline(e){let t=e.otel,n=captureOptionalPeerTracerProxy(),r=new AgentSpanIdGenerator,i=new RegistrationMarkerPropagator,a=privateSpanProcessors(t.spanProcessors),o={attributes:t.resource,autoDetectResources:!1,idGenerator:r,instrumentations:t.instrumentations??[],metricReaders:t.metricReaders,propagators:[...t.propagators??[`auto`],i],serviceName:e.serviceName,spanProcessors:a};registerOTel(t.sampler===void 0?o:{...o,traceSampler:t.sampler});let s=globalTracerUses(r),c=i.isInstalled();if((!s||!c)&&rollbackRegistration({ownsPropagator:c,ownsTracer:s}),!s)throw Error("eve could not register OpenTelemetry because another runtime already owns the global tracer provider. Remove the other `registerOTel` call, or move its exporters into eve's `otelIntegration({ spanProcessors: [...] })`.");if(!c)throw Error("eve could not register OpenTelemetry because another runtime already owns the global propagator. Remove the other global propagator registration and declare propagators through eve's `otel()` instead.");let l=runtimeTracerProvider();if(typeof l.forceFlush!=`function`||typeof l.shutdown!=`function`)throw rollbackRegistration({ownsPropagator:c,ownsTracer:s}),Error(`The registered OpenTelemetry tracer provider has no lifecycle methods.`);n?.setDelegate(l);let u=runtimeMeterProvider();return{provider:trace.getTracerProvider(),forceFlush:async()=>{await Promise.all([l.forceFlush(),u.forceFlush?.()])},idGenerator:r,samplesTrace:(e,t)=>samplerAdmitsTrace(r,e,t),shutdown:async()=>{disableInstrumentations(t.instrumentations),await Promise.all([l.shutdown(),u.shutdown?.()])}}}function privateSpanProcessors(e){let t=e.filter(isSpanProcessor);if(t.length===0)return[...e];let n=new PrivateSpanFilteringProcessor(t,replayDeduplicationRegistry()),r=[],i=!1;for(let t of e){if(!isSpanProcessor(t)){r.push(t);continue}i||(i=!0,r.push(n))}return r}function replayDeduplicationRegistry(){let e=replayDeduplicationGlobal[REPLAY_DEDUPLICATION_KEY];if(e!==void 0)return e;let t=new Set;return replayDeduplicationGlobal[REPLAY_DEDUPLICATION_KEY]=t,t}const registerOtel=registerOtelPipeline;function samplerAdmitsTrace(e,t,n={name:invocationName(void 0)}){return(e.withTraceId(t,()=>trace.getTracer(`eve.registration`).startSpan(n.name,{attributes:n.attributes,kind:SpanKind.INTERNAL,root:!0})).spanContext().traceFlags&1)==1}function rollbackRegistration(e){if(e.ownsPropagator&&propagation.disable(),!e.ownsTracer)return;let t=runtimeTracerProvider();if(typeof t.shutdown==`function`)try{t.shutdown().catch(()=>{})}catch{}trace.disable()}function runtimeTracerProvider(){let e=trace.getTracerProvider();return e.getDelegate?.()??e}function runtimeMeterProvider(){let e=metrics.getMeterProvider();return{forceFlush:typeof e?.forceFlush==`function`?()=>e.forceFlush():void 0,shutdown:typeof e?.shutdown==`function`?()=>e.shutdown():void 0}}function disableInstrumentations(e){for(let t of e??[]){let e=t?.disable;if(typeof e==`function`)try{e.call(t)}catch{}}}function globalTracerUses(e){let t=e.allocateSpanId();return e.withSpanId(t,()=>trace.getTracer(`eve.registration`).startSpan(REGISTRATION_SPAN_NAME)).spanContext().spanId===t}function isRegistrationSpan(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===REGISTRATION_SPAN_NAME||`instrumentationScope`in e&&e.instrumentationScope?.name===`eve.registration`)}function spanIdentity(e){if(typeof e!=`object`||!e||!(`spanContext`in e)||typeof e.spanContext!=`function`)return;let t=e.spanContext();return typeof t.traceId==`string`&&typeof t.spanId==`string`?`${t.traceId}:${t.spanId}`:void 0}function parentIdentity(e){if(typeof e!=`object`||!e||!(`parentSpanContext`in e))return;let t=e.parentSpanContext;return typeof t?.traceId==`string`&&typeof t.spanId==`string`?`${t.traceId}:${t.spanId}`:void 0}function addBounded(e,t){if(e.size>=REPLAY_DEDUPLICATION_LIMIT){let t=e.values().next().value;t!==void 0&&e.delete(t)}e.add(t)}function isSpanProcessor(e){return e!==`auto`}function captureOptionalPeerTracerProxy(){try{let e=require("@opentelemetry/api"),t=e.trace.getTracerProvider();return t instanceof e.ProxyTracerProvider?t:void 0}catch{return}}export{registerOtel,registerOtelPipeline};
@@ -1,9 +1,10 @@
1
+ import type { Context } from "#compiled/@opentelemetry/api/index.js";
1
2
  import { type InstrumentationSessionStartedEvent, type InstrumentationTraceSeed, type InstrumentationTurnStartedEvent, type InstrumentationTurnTerminalEvent, type InstrumentationSessionTransitionEvent } from "#instrumentation/lifecycle.js";
2
3
  import type { TraceCapturePolicy } from "#tracing/eve/otel-declaration.js";
3
4
  import type { AgentSessionTraceState, AgentTraceStateStore } from "#tracing/eve/agent-trace-state.js";
4
5
  import type { createEveCapturePolicy } from "#tracing/eve/policy.js";
5
6
  import type { ConversationEnvironment } from "#shared/conversation-context.js";
6
- import type { AgentSpanIdGenerator, AgentRun, ExecutionContext, TurnOperation } from "#compiled/@vercel/agent-runs/index.js";
7
+ import type { AgentSpanIdGenerator, AgentRun, TurnOperation } from "#compiled/@vercel/agent-runs/index.js";
7
8
  interface EveSessionTracingInput {
8
9
  readonly tracing: AgentRun;
9
10
  readonly idGenerator: AgentSpanIdGenerator;
@@ -19,7 +20,7 @@ interface EveSessionTracing {
19
20
  readonly prepareSessionTrace: (event: InstrumentationSessionStartedEvent) => Promise<InstrumentationTraceSeed>;
20
21
  readonly prepareTurnTrace: (event: InstrumentationTurnStartedEvent) => Promise<InstrumentationTraceSeed>;
21
22
  /** Hydrates a turn this process or an earlier one started. */
22
- turnFor(sessionId: string, turnId: string, context?: ExecutionContext): Promise<TurnOperation | undefined>;
23
+ turnFor(sessionId: string, turnId: string, context?: Context): Promise<TurnOperation | undefined>;
23
24
  /** Whether the trace policy dropped this turn, so its work must not record spans. */
24
25
  dropped(sessionId: string, turnId: string): Promise<boolean>;
25
26
  turnTerminal(event: InstrumentationTurnTerminalEvent): Promise<void>;
@@ -1 +1 @@
1
- import{normalizeChannelAudience}from"#shared/channel-audience.js";import{normalizeInstrumentationChannelKind}from"#internal/instrumentation.js";import{withOperationConversation}from"#tracing/eve/conversation-context.js";import{isSampledTrace,resolveTracePolicy,resolveTracePolicyDecision}from"#shared/trace-policy.js";import{ROOT_CONTEXT}from"#compiled/@opentelemetry/api/index.js";import"#instrumentation/lifecycle.js";import{readInstrumentationDecision}from"#shared/instrumentation-decision.js";import{applyPrincipalTraceDecision}from"#instrumentation/principal-summary.js";import{withChannelAudience}from"#tracing/eve/channel-audience-context.js";import{eveTurnIdentity,traceSessionIdOf}from"#tracing/eve/operation-input.js";import{eveActivationMetadata}from"#tracing/eve/metadata.js";function createEveSessionTracing(e){let ensureSessionContext=async t=>{let n=await e.stateStore.get(`session`,t.sessionId);if(n===void 0){let r=normalizeChannelAudience(t.channelAudience),i=resolveSessionTraceDecision(t,r,e.environment,e.tracePolicy);n={agentName:t.agentName,channelAudience:r,channelKind:t.channelKind,channelType:t.channelType,decision:i,context:initialSessionContext(e,t,i),parentLineage:t.parentLineage,rootSessionId:t.rootSessionId,traceSessionId:traceSessionIdOf(t),scheduleId:t.scheduleId,title:t.title},await e.stateStore.set(`session`,t.sessionId,n)}return n},prepareSessionTrace=async e=>{let t=await ensureSessionContext(e);return portableSpanContext(t.context,t.decision)},turnKey=(e,t)=>JSON.stringify([e,t]);async function turnFor(t,n,r){let i=await e.stateStore.get(`turn`,turnKey(t,n));if(i===void 0||!isSampledTrace(i.context))return;let a=await e.stateStore.get(`session`,t);return e.tracing.resume({identity:eveTurnIdentity({sessionId:t,rootSessionId:i.rootSessionId,turnId:n}),context:r??hostContext(a?.channelAudience,{sessionId:t,...i})})}async function dropped(t,n){let r=await e.stateStore.get(`turn`,turnKey(t,n));return r!==void 0&&!isSampledTrace(r.context)}let prepareTurnTrace=async t=>{let n=await e.stateStore.get(`turn`,turnKey(t.sessionId,t.turnId));if(n!==void 0){let r=await e.stateStore.get(`session`,t.sessionId);return portableSpanContext(n.context,r?.decision)}let r=await ensureSessionContext(t),i=t.sequence===0,a=i?t.parentTraceContext:void 0,o=r.decision?.action===`record`,s=a!==void 0&&!(`isRemote`in a&&a.isRemote===!0),c=i?{...r.context,traceId:s?a.traceId:r.context.traceId,isRemote:!1}:{traceId:e.idGenerator.deriveTraceId(`turn:${t.idempotencyKey}`),spanId:e.idGenerator.deriveSpanId(`turn:${t.idempotencyKey}`),traceFlags:+!!o,isRemote:!1},l=r.agentName??(t.parentLineage??r.parentLineage)?.subagentName,u={agentName:l,caller:a===void 0?void 0:adoptedSpanContext(a),context:c,currentPrincipal:applyPrincipalTraceDecision(t.currentPrincipal,r.decision),initiatorPrincipal:applyPrincipalTraceDecision(t.initiatorPrincipal,r.decision),parentLineage:t.parentLineage??r.parentLineage,rootSessionId:t.rootSessionId,traceSessionId:traceSessionIdOf(t),sequence:t.sequence,startTimeMs:Date.now(),subagentName:(t.parentLineage??r.parentLineage)?.subagentName};if(isSampledTrace(c)){let n=await e.tracing.turn({...eveActivationMetadata({session:r,turn:u,sessionId:t.sessionId}),agentName:l,identity:eveTurnIdentity({...t,sessionId:t.sessionId}),framework:{name:`eve`,version:e.frameworkVersion},capture:{emit:!0,...await e.capturePolicy.forOperation(t)},reference:c,parent:s?adoptedSpanContext(a):void 0,links:activationLinks(u),startTimeMs:u.startTimeMs,context:hostContext(r.channelAudience,t)});u={...u,context:{...c,traceFlags:n.reference.traceFlags}}}return await e.stateStore.set(`turn`,turnKey(t.sessionId,t.turnId),u),portableSpanContext(u.context,r.decision)};async function recordTerminal(t,n,r,i){await e.stateStore.update(`turn`,turnKey(t,n),e=>({...e,terminal:r.outcome===`failed`?{outcome:`failed`,errorName:i instanceof Error?i.name:void 0,errorMessage:i instanceof Error?i.message:void 0}:r}))}return{ensureSessionContext,prepareSessionTrace,prepareTurnTrace,turnFor,dropped,async turnTerminal(e){await recordTerminal(e.sessionId,e.turnId,{outcome:e.type===`turn.failed`?`failed`:e.type===`turn.cancelled`?`cancelled`:`completed`},e.type===`turn.failed`?e.error:void 0)},async sessionTransition(t){if(t.turnId===void 0)return;t.type===`session.failed`&&await recordTerminal(t.sessionId,t.turnId,{outcome:`failed`},t.error);let n=await e.stateStore.get(`turn`,turnKey(t.sessionId,t.turnId));if(n===void 0)return;let r=await e.stateStore.get(`session`,t.sessionId),i=await turnFor(t.sessionId,t.turnId);if(i!==void 0){let e=eveActivationMetadata({session:r,turn:n,sessionId:t.sessionId});i.attributes(e.attributes??{}),i.links(activationLinks(n)??[]);let a=n.terminal;if(a===void 0)await i.complete({outcomeUnknown:!0});else if(a.outcome===`failed`){let e=Error(a.errorMessage);e.name=a.errorName??`Error`,await i.complete({outcome:`failed`,failed:!0,error:e,errorType:a.errorName})}else await i.complete({outcome:a.outcome})}await e.stateStore.delete(`turn`,turnKey(t.sessionId,t.turnId))}}}function hostContext(e,t){return withOperationConversation(withChannelAudience(ROOT_CONTEXT,e),t)}function activationLinks(e){let t=[];return e.caller?.isRemote===!0&&t.push({context:e.caller,relationship:`agent.dispatch`}),e.channelDelivery?.requestTraceContext!==void 0&&t.push({context:e.channelDelivery.requestTraceContext,relationship:`channel.request`}),t.length===0?void 0:t}function portableSpanContext(e,t){return{decision:t,spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}}function adoptedSpanContext(e){return{isRemote:`isRemote`in e&&e.isRemote===!0,spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}}function initialSessionContext(e,t,n){let r=t.traceSeed;if(r!==void 0)return{...adoptedSpanContext(r),traceFlags:n.action===`drop`?0:r.traceFlags};let i=`session:${t.sessionId}`,a=t.parentTraceContext;return{traceId:a!==void 0&&!(`isRemote`in a&&a.isRemote===!0)?a.traceId:e.idGenerator.deriveTraceId(i),spanId:e.idGenerator.deriveSpanId(i),traceFlags:+(n.action===`record`)}}function resolveSessionTraceDecision(e,t,n,r){let i={audience:t,environment:n};return e.parentTraceContext!==void 0&&!isSampledTrace(e.parentTraceContext)?{action:`drop`}:e.traceSeed?.decision===void 0?e.traceSeed===void 0?e.parentTraceContext===void 0?e.agentName===void 0?r===void 0?resolveTracePolicyDecision(!0,i):{action:`drop`}:resolveTracePolicy(r,{agentName:e.agentName,audience:t,channel:{kind:normalizeInstrumentationChannelKind(e.channelKind??e.channelType)},environment:n,principalType:`unknown`}):resolveTracePolicyDecision(isSampledTrace(e.parentTraceContext),i):resolveTracePolicyDecision(isSampledTrace(e.traceSeed),i):readInstrumentationDecision(e.traceSeed.decision)??{action:`drop`}}export{createEveSessionTracing};
1
+ import{normalizeChannelAudience}from"#shared/channel-audience.js";import{normalizeInstrumentationChannelKind}from"#internal/instrumentation.js";import{traceSessionIdOf,withOperationTraceContext}from"#tracing/eve/conversation-context.js";import{isSampledTrace,resolveTracePolicy,resolveTracePolicyDecision}from"#shared/trace-policy.js";import{ROOT_CONTEXT}from"#compiled/@opentelemetry/api/index.js";import"#instrumentation/lifecycle.js";import{readInstrumentationDecision}from"#shared/instrumentation-decision.js";import{applyPrincipalTraceDecision}from"#instrumentation/principal-summary.js";import{withChannelAudience}from"#tracing/eve/channel-audience-context.js";import{eveTurnIdentity}from"#tracing/eve/operation-input.js";import{eveActivationMetadata}from"#tracing/eve/metadata.js";function createEveSessionTracing(e){let ensureSessionContext=async t=>{let n=await e.stateStore.get(`session`,t.sessionId);if(n===void 0){let r=normalizeChannelAudience(t.channelAudience),i=resolveSessionTraceDecision(t,r,e.environment,e.tracePolicy);n={agentName:t.agentName,channelAudience:r,channelKind:t.channelKind,channelType:t.channelType,decision:i,context:initialSessionContext(e,t,i),parentLineage:t.parentLineage,rootSessionId:t.rootSessionId,traceSessionId:traceSessionIdOf(t),scheduleId:t.scheduleId,title:t.title},await e.stateStore.set(`session`,t.sessionId,n)}return n},prepareSessionTrace=async e=>{let t=await ensureSessionContext(e);return portableSpanContext(t.context,t.decision)},turnKey=(e,t)=>JSON.stringify([e,t]);async function turnFor(t,n,r){let i=await e.stateStore.get(`turn`,turnKey(t,n));if(i===void 0||!isSampledTrace(i.context))return;let a=await e.stateStore.get(`session`,t);return e.tracing.resume({identity:eveTurnIdentity({sessionId:t,rootSessionId:i.rootSessionId,turnId:n}),context:withOperationTraceContext(r??withChannelAudience(ROOT_CONTEXT,a?.channelAudience),{sessionId:t,...i})})}async function dropped(t,n){let r=await e.stateStore.get(`turn`,turnKey(t,n));return r!==void 0&&!isSampledTrace(r.context)}let prepareTurnTrace=async t=>{let n=await e.stateStore.get(`turn`,turnKey(t.sessionId,t.turnId));if(n!==void 0){let r=await e.stateStore.get(`session`,t.sessionId);return portableSpanContext(n.context,r?.decision)}let r=await ensureSessionContext(t),i=t.sequence===0,a=i?t.parentTraceContext:void 0,o=r.decision?.action===`record`,s=a!==void 0&&!(`isRemote`in a&&a.isRemote===!0),c=i?{...r.context,traceId:s?a.traceId:r.context.traceId,isRemote:!1}:{traceId:e.idGenerator.deriveTraceId(`turn:${t.idempotencyKey}`),spanId:e.idGenerator.deriveSpanId(`turn:${t.idempotencyKey}`),traceFlags:+!!o,isRemote:!1},l=r.agentName??(t.parentLineage??r.parentLineage)?.subagentName,u={agentName:l,caller:a===void 0?void 0:adoptedSpanContext(a),context:c,currentPrincipal:applyPrincipalTraceDecision(t.currentPrincipal,r.decision),initiatorPrincipal:applyPrincipalTraceDecision(t.initiatorPrincipal,r.decision),parentLineage:t.parentLineage??r.parentLineage,rootSessionId:t.rootSessionId,traceSessionId:traceSessionIdOf(t),sequence:t.sequence,startTimeMs:Date.now(),subagentName:(t.parentLineage??r.parentLineage)?.subagentName};if(isSampledTrace(c)){let n=await e.tracing.turn({...eveActivationMetadata({session:r,turn:u,sessionId:t.sessionId}),agentName:l,identity:eveTurnIdentity({...t,sessionId:t.sessionId}),framework:{name:`eve`,version:e.frameworkVersion},capture:{emit:!0,...await e.capturePolicy.forOperation(t)},reference:c,parent:s?adoptedSpanContext(a):void 0,links:activationLinks(u),startTimeMs:u.startTimeMs,context:hostContext(r.channelAudience,t)});u={...u,context:{...c,traceFlags:n.reference.traceFlags}}}return await e.stateStore.set(`turn`,turnKey(t.sessionId,t.turnId),u),portableSpanContext(u.context,r.decision)};async function recordTerminal(t,n,r,i){await e.stateStore.update(`turn`,turnKey(t,n),e=>({...e,terminal:r.outcome===`failed`?{outcome:`failed`,errorName:i instanceof Error?i.name:void 0,errorMessage:i instanceof Error?i.message:void 0}:r}))}return{ensureSessionContext,prepareSessionTrace,prepareTurnTrace,turnFor,dropped,async turnTerminal(e){await recordTerminal(e.sessionId,e.turnId,{outcome:e.type===`turn.failed`?`failed`:e.type===`turn.cancelled`?`cancelled`:`completed`},e.type===`turn.failed`?e.error:void 0)},async sessionTransition(t){if(t.turnId===void 0)return;t.type===`session.failed`&&await recordTerminal(t.sessionId,t.turnId,{outcome:`failed`},t.error);let n=await e.stateStore.get(`turn`,turnKey(t.sessionId,t.turnId));if(n===void 0)return;let r=await e.stateStore.get(`session`,t.sessionId),i=await turnFor(t.sessionId,t.turnId);if(i!==void 0){let e=eveActivationMetadata({session:r,turn:n,sessionId:t.sessionId});i.attributes(e.attributes??{}),i.links(activationLinks(n)??[]);let a=n.terminal;if(a===void 0)await i.complete({outcomeUnknown:!0});else if(a.outcome===`failed`){let e=Error(a.errorMessage);e.name=a.errorName??`Error`,await i.complete({outcome:`failed`,failed:!0,error:e,errorType:a.errorName})}else await i.complete({outcome:a.outcome})}await e.stateStore.delete(`turn`,turnKey(t.sessionId,t.turnId))}}}function hostContext(e,t){return withOperationTraceContext(withChannelAudience(ROOT_CONTEXT,e),t)}function activationLinks(e){let t=[];return e.caller?.isRemote===!0&&t.push({context:e.caller,relationship:`agent.dispatch`}),e.channelDelivery?.requestTraceContext!==void 0&&t.push({context:e.channelDelivery.requestTraceContext,relationship:`channel.request`}),t.length===0?void 0:t}function portableSpanContext(e,t){return{decision:t,spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}}function adoptedSpanContext(e){return{isRemote:`isRemote`in e&&e.isRemote===!0,spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}}function initialSessionContext(e,t,n){let r=t.traceSeed;if(r!==void 0)return{...adoptedSpanContext(r),traceFlags:n.action===`drop`?0:r.traceFlags};let i=`session:${t.sessionId}`,a=t.parentTraceContext;return{traceId:a!==void 0&&!(`isRemote`in a&&a.isRemote===!0)?a.traceId:e.idGenerator.deriveTraceId(i),spanId:e.idGenerator.deriveSpanId(i),traceFlags:+(n.action===`record`)}}function resolveSessionTraceDecision(e,t,n,r){let i={audience:t,environment:n};return e.parentTraceContext!==void 0&&!isSampledTrace(e.parentTraceContext)?{action:`drop`}:e.traceSeed?.decision===void 0?e.traceSeed===void 0?e.parentTraceContext===void 0?e.agentName===void 0?r===void 0?resolveTracePolicyDecision(!0,i):{action:`drop`}:resolveTracePolicy(r,{agentName:e.agentName,audience:t,channel:{kind:normalizeInstrumentationChannelKind(e.channelKind??e.channelType)},environment:n,principalType:`unknown`}):resolveTracePolicyDecision(isSampledTrace(e.parentTraceContext),i):resolveTracePolicyDecision(isSampledTrace(e.traceSeed),i):readInstrumentationDecision(e.traceSeed.decision)??{action:`drop`}}export{createEveSessionTracing};
@@ -1,4 +1,4 @@
1
- import { a as conversationProjection, i as openConversationInputs, n as conversationReducer, o as callStatus, r as defaultMessageReducer, t as useEveAgent } from "../chunks/use-eve-agent-Bp6nbhfV.js";
1
+ import { a as conversationProjection, i as openConversationInputs, n as conversationReducer, o as callStatus, r as defaultMessageReducer, t as useEveAgent } from "../chunks/use-eve-agent-Ci5dr0aR.js";
2
2
 
3
3
  //#region src/client/tool-call-state.ts
4
4
  function toolCallState(conversation, callId, options = {}) {
@@ -110,7 +110,7 @@ export interface UseEveAgentOptions<TData> extends EveAgentStoreCallbacks<TData>
110
110
  * on the next send, answer, or resume. @default true
111
111
  */
112
112
  readonly followIdle?: boolean;
113
- /** Prewarm an owned session on mount and after reset. @default false */
113
+ /** Create a session or prepare its existing idle owner on mount and after reset. @default false */
114
114
  readonly prewarm?: boolean;
115
115
  /**
116
116
  * Projects stream events into `TData`.
@@ -1,3 +1,3 @@
1
- import { t as useEveAgent } from "../chunks/use-eve-agent-Bp6nbhfV.js";
1
+ import { t as useEveAgent } from "../chunks/use-eve-agent-Ci5dr0aR.js";
2
2
 
3
3
  export { useEveAgent };