eve 0.37.0 → 0.38.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 (410) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/src/channel/routes.d.ts +13 -3
  3. package/dist/src/channel/routes.js +1 -1
  4. package/dist/src/channel/session-callback.js +1 -1
  5. package/dist/src/channel/session.d.ts +2 -1
  6. package/dist/src/channel/session.js +1 -1
  7. package/dist/src/channel/types.d.ts +41 -0
  8. package/dist/src/chunks/{use-eve-agent-COmP-H8R.js → use-eve-agent-BbSsu99c.js} +79 -32
  9. package/dist/src/chunks/{use-eve-agent-CnppTEFk.js → use-eve-agent-Dt8Y5QtW.js} +78 -31
  10. package/dist/src/cli/acp/command.d.ts +2 -1
  11. package/dist/src/cli/acp/command.js +2 -2
  12. package/dist/src/cli/application-command.d.ts +8 -0
  13. package/dist/src/cli/application-command.js +1 -0
  14. package/dist/src/cli/application-root.d.ts +8 -0
  15. package/dist/src/cli/application-root.js +1 -0
  16. package/dist/src/cli/commands/build.d.ts +2 -1
  17. package/dist/src/cli/commands/build.js +1 -1
  18. package/dist/src/cli/commands/init-git.js +1 -1
  19. package/dist/src/cli/commands/init-recovery.d.ts +3 -0
  20. package/dist/src/cli/commands/init-recovery.js +3 -0
  21. package/dist/src/cli/commands/init-repl.js +1 -1
  22. package/dist/src/cli/commands/init-target.d.ts +21 -0
  23. package/dist/src/cli/commands/init-target.js +1 -0
  24. package/dist/src/cli/commands/init.js +1 -1
  25. package/dist/src/cli/commands/register-integration-commands.d.ts +2 -1
  26. package/dist/src/cli/commands/register-integration-commands.js +1 -1
  27. package/dist/src/cli/commands/register-project-commands.d.ts +2 -1
  28. package/dist/src/cli/commands/register-project-commands.js +1 -1
  29. package/dist/src/cli/commands/register-registry-commands.d.ts +2 -1
  30. package/dist/src/cli/commands/register-registry-commands.js +4 -1
  31. package/dist/src/cli/commands/registry-recovery.d.ts +14 -0
  32. package/dist/src/cli/commands/registry-recovery.js +1 -0
  33. package/dist/src/cli/commands/registry.d.ts +2 -5
  34. package/dist/src/cli/commands/registry.js +1 -1
  35. package/dist/src/cli/dev/diagnostic-dump.js +1 -1
  36. package/dist/src/cli/dev/environment.js +1 -1
  37. package/dist/src/cli/dev/tui/runner.d.ts +8 -0
  38. package/dist/src/cli/dev/tui/runner.js +1 -1
  39. package/dist/src/cli/dev/tui/subagent-pump.d.ts +27 -22
  40. package/dist/src/cli/dev/tui/subagent-pump.js +1 -1
  41. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +16 -0
  42. package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
  43. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  44. package/dist/src/cli/invoke/command.d.ts +3 -2
  45. package/dist/src/cli/invoke/command.js +1 -1
  46. package/dist/src/cli/run.d.ts +3 -2
  47. package/dist/src/cli/run.js +3 -3
  48. package/dist/src/client/eve-agent-store.d.ts +15 -3
  49. package/dist/src/client/eve-agent-store.js +2 -2
  50. package/dist/src/client/message-response.d.ts +10 -2
  51. package/dist/src/client/message-response.js +1 -1
  52. package/dist/src/client/open-stream.d.ts +2 -0
  53. package/dist/src/client/open-stream.js +1 -1
  54. package/dist/src/client/session.js +1 -1
  55. package/dist/src/compiled/.vendor-stamp.json +5 -1
  56. package/dist/src/compiled/@ai-sdk/otel/index.js +3 -3
  57. package/dist/src/compiled/@chat-adapter/slack/index.js +25 -25
  58. package/dist/src/compiled/@modelcontextprotocol/server/LICENSE +216 -0
  59. package/dist/src/compiled/@modelcontextprotocol/server/index.d.ts +98 -0
  60. package/dist/src/compiled/@modelcontextprotocol/server/index.js +80 -0
  61. package/dist/src/compiled/@opentelemetry/api/index.js +1 -1
  62. package/dist/src/compiled/@opentelemetry/otlp-transformer/index.js +1 -1
  63. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +61 -61
  64. package/dist/src/compiled/@vercel/oidc/index.js +14 -14
  65. package/dist/src/compiled/@vercel/otel/index.js +1 -1
  66. package/dist/src/compiled/@vercel/sandbox/index.js +1 -1
  67. package/dist/src/compiled/@workflow/core/index.js +1 -1
  68. package/dist/src/compiled/@workflow/core/private.js +1 -1
  69. package/dist/src/compiled/@workflow/core/runtime.js +2 -2
  70. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  71. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  72. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  73. package/dist/src/compiled/@workflow/world-vercel/index.js +13 -13
  74. package/dist/src/compiled/_chunks/workflow/{attribute-changes-BoH7JsWp.js → attribute-changes-DZtQkszH.js} +1 -1
  75. package/dist/src/compiled/_chunks/workflow/chunk-5MU5Z6L3-B_3nkJFi.js +1 -0
  76. package/dist/src/compiled/_chunks/workflow/{chunk-NWCAEW5Y-Oxw40oRR.js → chunk-NWCAEW5Y-BgbcH0OK.js} +1 -1
  77. package/dist/src/compiled/_chunks/workflow/{dist-DlFv0aHY.js → dist-CPlyFOVo.js} +1 -1
  78. package/dist/src/compiled/_chunks/workflow/{dist-tJoQXAF6.js → dist-DpYyXbJv.js} +1 -1
  79. package/dist/src/compiled/_chunks/workflow/{dist-CRTn4Sg8.js → dist-xQXN70ED.js} +1 -1
  80. package/dist/src/compiled/_chunks/workflow/esm-seIr7a6j.js +1 -0
  81. package/dist/src/compiled/_chunks/workflow/{frames-CTpeJYEQ.js → frames-BBs-9k1d.js} +2 -2
  82. package/dist/src/compiled/_chunks/workflow/{functions-CeeNvKsq.js → functions-DAYiHNti.js} +1 -1
  83. package/dist/src/compiled/_chunks/workflow/{getMachineId-bsd-WEBNKY2R-CEYkx6Nv.js → getMachineId-bsd-WEBNKY2R-BTaxrQ52.js} +1 -1
  84. package/dist/src/compiled/_chunks/workflow/{getMachineId-darwin-LT47KAXP-DPwWlhif.js → getMachineId-darwin-LT47KAXP-DhYmwE_R.js} +1 -1
  85. package/dist/src/compiled/_chunks/workflow/{getMachineId-linux-LTVQO6VW-DAFXHwZp.js → getMachineId-linux-LTVQO6VW-Dru_L5ru.js} +1 -1
  86. package/dist/src/compiled/_chunks/workflow/{getMachineId-unsupported-UKWBA27G-BZKOI8mG.js → getMachineId-unsupported-UKWBA27G-DGfoqVW1.js} +1 -1
  87. package/dist/src/compiled/_chunks/workflow/{getMachineId-win-NLJKOPY6-r7_CJB5o.js → getMachineId-win-NLJKOPY6-CLM98q4X.js} +1 -1
  88. package/dist/src/compiled/_chunks/workflow/{private-tvMBynnC.js → private-UQtz8ZcW.js} +1 -1
  89. package/dist/src/compiled/_chunks/workflow/{resume-hook-BPQHjeY5.js → resume-hook-CYtSorp6.js} +1 -1
  90. package/dist/src/compiled/_chunks/workflow/{rolldown-runtime-DaDcL9Zw.js → rolldown-runtime-8V8biNmG.js} +1 -1
  91. package/dist/src/compiled/_chunks/workflow/{run-DQ5dOyjm.js → run-Cjo0A3NO.js} +1 -1
  92. package/dist/src/compiled/_chunks/workflow/{signal-exit-C8vsI6zj.js → signal-exit-o3IPQwwv.js} +1 -1
  93. package/dist/src/compiled/_chunks/workflow/sleep-C1P0OWBm.js +1 -0
  94. package/dist/src/compiled/_chunks/workflow/{token-DHD-q-fS.js → token-DGzfw-Vb.js} +1 -1
  95. package/dist/src/compiled/_chunks/workflow/{token-DtCUEpJs.js → token-DNbxVpeq.js} +1 -1
  96. package/dist/src/compiled/_chunks/workflow/token-util-BneBe0g5.js +27 -0
  97. package/dist/src/compiled/_chunks/workflow/{token-util-Ldar52H7.js → token-util-DjMgNdXS.js} +1 -1
  98. package/dist/src/compiled/_chunks/workflow/{undici-CUIybhQ2.js → undici-BBG5cZTy.js} +1 -1
  99. package/dist/src/compiled/_chunks/workflow/{wait-until-DK2lnH6U.js → wait-until-CT1ve8qB.js} +3 -3
  100. package/dist/src/compiled/_chunks/workflow/{wrapper-CMGju7QA.js → wrapper-CQNxP9mU.js} +3 -3
  101. package/dist/src/compiled/_chunks/workflow/{ws-transport-Csi6Cydc.js → ws-transport-beXxD0s_.js} +1 -1
  102. package/dist/src/compiled/env-runner/node-worker.js +1 -1
  103. package/dist/src/compiled/jose/index.js +1 -1
  104. package/dist/src/compiled/shadcn-registry/index.js +403 -403
  105. package/dist/src/compiler/artifacts.js +1 -1
  106. package/dist/src/compiler/compile-agent.js +2 -2
  107. package/dist/src/compiler/extension-compatibility.d.ts +20 -10
  108. package/dist/src/compiler/extension-compatibility.js +1 -1
  109. package/dist/src/compiler/manifest.js +1 -1
  110. package/dist/src/compiler/normalize-agent-config.js +1 -1
  111. package/dist/src/compiler/normalize-extension.d.ts +8 -5
  112. package/dist/src/compiler/normalize-extension.js +1 -1
  113. package/dist/src/compiler/normalize-manifest.js +1 -1
  114. package/dist/src/compiler/normalize-subagent.d.ts +1 -1
  115. package/dist/src/compiler/normalize-subagent.js +1 -1
  116. package/dist/src/context/serialized-dynamic-model-selection.d.ts +2 -0
  117. package/dist/src/context/serialized-dynamic-model-selection.js +1 -0
  118. package/dist/src/discover/discover-agent.js +1 -1
  119. package/dist/src/discover/extensions.d.ts +0 -6
  120. package/dist/src/discover/extensions.js +1 -1
  121. package/dist/src/evals/cli/eval.d.ts +1 -1
  122. package/dist/src/evals/cli/eval.js +1 -1
  123. package/dist/src/execution/agent-handle-dispatch.d.ts +15 -1
  124. package/dist/src/execution/agent-handle-dispatch.js +1 -1
  125. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  126. package/dist/src/execution/delegated-parent-notification.d.ts +17 -0
  127. package/dist/src/execution/delegated-parent-notification.js +1 -1
  128. package/dist/src/execution/deliver-payloads.js +1 -1
  129. package/dist/src/execution/dispatch-runtime-actions-shared.d.ts +155 -0
  130. package/dist/src/execution/dispatch-runtime-actions-shared.js +1 -0
  131. package/dist/src/execution/dispatch-runtime-actions-step.d.ts +18 -14
  132. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  133. package/dist/src/execution/dispatch-workflow-runtime-actions-step.d.ts +7 -2
  134. package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +1 -1
  135. package/dist/src/execution/effective-output-schema.d.ts +21 -0
  136. package/dist/src/execution/effective-output-schema.js +1 -0
  137. package/dist/src/execution/eve-workflow-attributes.d.ts +2 -0
  138. package/dist/src/execution/node-step.js +1 -1
  139. package/dist/src/execution/parked-delivery-wait.d.ts +8 -12
  140. package/dist/src/execution/parked-delivery-wait.js +1 -1
  141. package/dist/src/execution/{route-proxied-deliver-step.d.ts → proxied-deliver-step.d.ts} +7 -4
  142. package/dist/src/execution/proxied-deliver-step.js +1 -0
  143. package/dist/src/execution/remote-agent-dispatch.d.ts +32 -0
  144. package/dist/src/execution/remote-agent-dispatch.js +1 -1
  145. package/dist/src/execution/remote-agent-route-url.d.ts +2 -0
  146. package/dist/src/execution/remote-agent-route-url.js +1 -0
  147. package/dist/src/execution/route-child-delivery.d.ts +2 -1
  148. package/dist/src/execution/route-child-delivery.js +1 -1
  149. package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
  150. package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
  151. package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
  152. package/dist/src/execution/sandbox/prewarm.js +1 -1
  153. package/dist/src/execution/session-callback-step.d.ts +11 -0
  154. package/dist/src/execution/session-callback-step.js +1 -1
  155. package/dist/src/execution/session-command-wire.js +1 -1
  156. package/dist/src/execution/session-state-cursor.d.ts +25 -0
  157. package/dist/src/execution/session-state-cursor.js +1 -0
  158. package/dist/src/execution/settle-cancelled-turn-step.d.ts +2 -0
  159. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  160. package/dist/src/execution/subagent-event-proxy-step.d.ts +15 -0
  161. package/dist/src/execution/subagent-event-proxy-step.js +1 -1
  162. package/dist/src/execution/subagent-hitl-proxy.d.ts +14 -7
  163. package/dist/src/execution/subagent-hitl-proxy.js +1 -1
  164. package/dist/src/execution/subagent-start-local.d.ts +29 -0
  165. package/dist/src/execution/subagent-start-local.js +1 -0
  166. package/dist/src/execution/subagent-start-remote.d.ts +23 -0
  167. package/dist/src/execution/subagent-start-remote.js +1 -0
  168. package/dist/src/execution/task-event-callback.d.ts +13 -0
  169. package/dist/src/execution/task-event-callback.js +1 -0
  170. package/dist/src/execution/task-input-capability.d.ts +4 -0
  171. package/dist/src/execution/task-input-capability.js +1 -0
  172. package/dist/src/execution/tasks/child/steps.d.ts +46 -0
  173. package/dist/src/execution/tasks/child/steps.js +1 -0
  174. package/dist/src/execution/tasks/child/workflow.d.ts +31 -0
  175. package/dist/src/execution/tasks/child/workflow.js +1 -0
  176. package/dist/src/execution/tasks/parent/agent-identity.d.ts +13 -0
  177. package/dist/src/execution/tasks/parent/agent-identity.js +1 -0
  178. package/dist/src/execution/tasks/parent/agent-views.d.ts +6 -0
  179. package/dist/src/execution/tasks/parent/agent-views.js +1 -0
  180. package/dist/src/execution/tasks/parent/continuation-dispatch.d.ts +37 -0
  181. package/dist/src/execution/tasks/parent/continuation-dispatch.js +1 -0
  182. package/dist/src/execution/tasks/parent/control-shared.d.ts +36 -0
  183. package/dist/src/execution/tasks/parent/control-shared.js +1 -0
  184. package/dist/src/execution/tasks/parent/delegate.d.ts +70 -0
  185. package/dist/src/execution/tasks/parent/delegate.js +1 -0
  186. package/dist/src/execution/tasks/parent/dispatch-task-step.d.ts +19 -0
  187. package/dist/src/execution/tasks/parent/dispatch-task-step.js +1 -0
  188. package/dist/src/execution/tasks/parent/dispatch.d.ts +33 -0
  189. package/dist/src/execution/tasks/parent/dispatch.js +1 -0
  190. package/dist/src/execution/tasks/parent/hitl-proxy-steps.d.ts +29 -0
  191. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -0
  192. package/dist/src/execution/tasks/parent/run-parent.d.ts +72 -0
  193. package/dist/src/execution/tasks/parent/run-parent.js +1 -0
  194. package/dist/src/execution/tasks/parent/send.d.ts +25 -0
  195. package/dist/src/execution/tasks/parent/send.js +1 -0
  196. package/dist/src/execution/tasks/workflow-target.d.ts +2 -0
  197. package/dist/src/execution/tasks/workflow-target.js +1 -0
  198. package/dist/src/execution/terminate-child-sessions-step.d.ts +1 -0
  199. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  200. package/dist/src/execution/turn-control-receiver.d.ts +10 -0
  201. package/dist/src/execution/turn-control-receiver.js +1 -1
  202. package/dist/src/execution/turn-dispatch.d.ts +2 -0
  203. package/dist/src/execution/turn-dispatch.js +1 -1
  204. package/dist/src/execution/turn-execution-cursor.d.ts +2 -8
  205. package/dist/src/execution/turn-execution-cursor.js +1 -1
  206. package/dist/src/execution/turn-workflow.js +1 -1
  207. package/dist/src/execution/workflow-callback-url.d.ts +5 -0
  208. package/dist/src/execution/workflow-callback-url.js +1 -1
  209. package/dist/src/execution/workflow-entry.js +1 -1
  210. package/dist/src/execution/workflow-runtime.d.ts +9 -0
  211. package/dist/src/execution/workflow-runtime.js +1 -1
  212. package/dist/src/execution/workflow-steps.d.ts +7 -21
  213. package/dist/src/execution/workflow-steps.js +1 -1
  214. package/dist/src/harness/advertised-tools.js +1 -1
  215. package/dist/src/harness/authorization.js +1 -1
  216. package/dist/src/harness/execute-tool.d.ts +7 -0
  217. package/dist/src/harness/handles/prompt.d.ts +12 -0
  218. package/dist/src/harness/handles/prompt.js +2 -1
  219. package/dist/src/harness/handles/query.js +1 -1
  220. package/dist/src/harness/handles/store.d.ts +9 -2
  221. package/dist/src/harness/handles/store.js +1 -1
  222. package/dist/src/harness/handles/transitions.d.ts +10 -1
  223. package/dist/src/harness/handles/transitions.js +1 -1
  224. package/dist/src/harness/instrumentation/providers.js +1 -1
  225. package/dist/src/harness/instrumentation/runtime-context.d.ts +2 -0
  226. package/dist/src/harness/instrumentation/runtime-context.js +1 -1
  227. package/dist/src/harness/instrumentation/runtime.d.ts +3 -1
  228. package/dist/src/harness/proxy-input-requests.d.ts +21 -4
  229. package/dist/src/harness/proxy-input-requests.js +1 -1
  230. package/dist/src/harness/runtime-actions.d.ts +2 -0
  231. package/dist/src/harness/runtime-actions.js +1 -1
  232. package/dist/src/harness/session-limit-enforcement.js +1 -1
  233. package/dist/src/harness/tool-loop.js +2 -2
  234. package/dist/src/harness/workflow-runtime-action-state.js +1 -1
  235. package/dist/src/internal/application/cache-metadata.js +1 -1
  236. package/dist/src/internal/application/compiled-artifacts.js +2 -2
  237. package/dist/src/internal/application/optional-package-install.js +1 -1
  238. package/dist/src/internal/application/output-publication-lock.js +1 -1
  239. package/dist/src/internal/application/package.js +1 -1
  240. package/dist/src/internal/application/paths.js +1 -1
  241. package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
  242. package/dist/src/internal/authored-definition/core.js +1 -1
  243. package/dist/src/internal/authored-module-evaluation-error.js +4 -4
  244. package/dist/src/internal/authored-module-loader.js +3 -3
  245. package/dist/src/internal/authored-package-boundary.js +1 -1
  246. package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
  247. package/dist/src/internal/bundler/extension-scope-plugin.js +1 -1
  248. package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
  249. package/dist/src/internal/instrumentation-layout.js +1 -1
  250. package/dist/src/internal/invocation/agent-invocation.d.ts +54 -0
  251. package/dist/src/internal/invocation/agent-invocation.js +1 -0
  252. package/dist/src/internal/invocation/attributes.d.ts +2 -0
  253. package/dist/src/internal/invocation/attributes.js +1 -0
  254. package/dist/src/internal/invocation/metadata.d.ts +9 -0
  255. package/dist/src/internal/invocation/metadata.js +1 -0
  256. package/dist/src/internal/invocation/workflow-execution.d.ts +32 -0
  257. package/dist/src/internal/invocation/workflow-execution.js +1 -0
  258. package/dist/src/internal/materialized-authored-modules.js +1 -1
  259. package/dist/src/internal/mcp/http-security.d.ts +12 -0
  260. package/dist/src/internal/mcp/http-security.js +1 -0
  261. package/dist/src/internal/mcp/protected-resource.d.ts +9 -0
  262. package/dist/src/internal/mcp/protected-resource.js +1 -0
  263. package/dist/src/internal/mcp/streamable-http-server.d.ts +51 -0
  264. package/dist/src/internal/mcp/streamable-http-server.js +1 -0
  265. package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -1
  266. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  267. package/dist/src/internal/nitro/dev-runtime-source-snapshot-copy.js +1 -1
  268. package/dist/src/internal/nitro/dev-runtime-source-snapshot-local-roots.js +1 -1
  269. package/dist/src/internal/nitro/dev-runtime-source-snapshot.js +1 -1
  270. package/dist/src/internal/nitro/host/application-route-registry.d.ts +88 -0
  271. package/dist/src/internal/nitro/host/application-route-registry.js +1 -0
  272. package/dist/src/internal/nitro/host/build-application.js +1 -1
  273. package/dist/src/internal/nitro/host/build-extension.js +1 -1
  274. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  275. package/dist/src/internal/nitro/host/channel-routes.d.ts +4 -11
  276. package/dist/src/internal/nitro/host/channel-routes.js +3 -3
  277. package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -3
  278. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  279. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  280. package/dist/src/internal/nitro/host/dev-runner.js +1 -1
  281. package/dist/src/internal/nitro/host/dev-workspace-extensions.js +1 -1
  282. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  283. package/dist/src/internal/nitro/host/local-tracing-runtime-plugin.js +1 -1
  284. package/dist/src/internal/nitro/host/nitro-bundler-config.js +1 -1
  285. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  286. package/dist/src/internal/nitro/host/start-production-server.js +2 -2
  287. package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
  288. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  289. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +14 -0
  290. package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
  291. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +2 -0
  292. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  293. package/dist/src/internal/process/pnpm.js +1 -1
  294. package/dist/src/internal/vercel-agent-summary.d.ts +1 -1
  295. package/dist/src/internal/workflow/development-world-client.js +1 -1
  296. package/dist/src/internal/workflow/development-world-server.js +1 -1
  297. package/dist/src/internal/workflow-bundle/builder-support.d.ts +12 -8
  298. package/dist/src/internal/workflow-bundle/builder-support.js +8 -7
  299. package/dist/src/internal/workflow-bundle/builder.d.ts +1 -1
  300. package/dist/src/internal/workflow-bundle/builder.js +2 -3
  301. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  302. package/dist/src/protocol/message.d.ts +28 -0
  303. package/dist/src/protocol/message.js +2 -2
  304. package/dist/src/protocol/routes.d.ts +14 -0
  305. package/dist/src/protocol/routes.js +1 -1
  306. package/dist/src/public/channels/auth.d.ts +36 -0
  307. package/dist/src/public/channels/auth.js +1 -1
  308. package/dist/src/public/channels/discord/discordChannel.d.ts +2 -0
  309. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  310. package/dist/src/public/channels/eve.d.ts +2 -0
  311. package/dist/src/public/channels/eve.js +1 -1
  312. package/dist/src/public/channels/github/dispatch.js +1 -1
  313. package/dist/src/public/channels/github/githubChannel.d.ts +2 -0
  314. package/dist/src/public/channels/linear/linearChannel.d.ts +2 -0
  315. package/dist/src/public/channels/linear/linearChannel.js +1 -1
  316. package/dist/src/public/channels/mcp.d.ts +19 -0
  317. package/dist/src/public/channels/mcp.js +1 -0
  318. package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +2 -0
  319. package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
  320. package/dist/src/public/channels/slack/slackChannel.d.ts +3 -1
  321. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  322. package/dist/src/public/channels/teams/teamsChannel.d.ts +2 -0
  323. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  324. package/dist/src/public/channels/telegram/telegramChannel.d.ts +2 -0
  325. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  326. package/dist/src/public/channels/twilio/twilioChannel.d.ts +2 -0
  327. package/dist/src/public/channels/twilio/twilioChannel.js +1 -1
  328. package/dist/src/public/definitions/channel.d.ts +2 -2
  329. package/dist/src/public/definitions/channel.js +1 -1
  330. package/dist/src/public/instrumentation/index.d.ts +9 -3
  331. package/dist/src/public/next/server.js +1 -1
  332. package/dist/src/public/nuxt/dev-server.js +1 -1
  333. package/dist/src/public/sveltekit/dev-server.js +1 -1
  334. package/dist/src/react/use-eve-agent.d.ts +4 -4
  335. package/dist/src/react/use-eve-agent.js +1 -1
  336. package/dist/src/runtime/actions/types.d.ts +9 -0
  337. package/dist/src/runtime/actions/types.js +1 -1
  338. package/dist/src/runtime/agent/bootstrap.js +1 -1
  339. package/dist/src/runtime/connections/authorization-complete-page.js +70 -28
  340. package/dist/src/runtime/framework-channels/index.js +1 -1
  341. package/dist/src/runtime/framework-tools/index.js +1 -1
  342. package/dist/src/runtime/framework-tools/tasks.d.ts +95 -0
  343. package/dist/src/runtime/framework-tools/tasks.js +1 -0
  344. package/dist/src/runtime/prompt/compose.d.ts +1 -0
  345. package/dist/src/runtime/prompt/compose.js +1 -1
  346. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  347. package/dist/src/runtime/resolve-agent.js +1 -1
  348. package/dist/src/runtime/session-callback-route.js +1 -1
  349. package/dist/src/runtime/task-input-response-route.d.ts +5 -0
  350. package/dist/src/runtime/task-input-response-route.js +1 -0
  351. package/dist/src/services/inspect-application.js +1 -1
  352. package/dist/src/setup/primitives/pm/pnpm.js +2 -2
  353. package/dist/src/setup/primitives/run-vercel.js +1 -1
  354. package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
  355. package/dist/src/setup/scaffold/create/extension.js +1 -1
  356. package/dist/src/setup/scaffold/create/project.js +1 -1
  357. package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
  358. package/dist/src/setup/scaffold/create/web-template.js +8 -86
  359. package/dist/src/setup/scaffold/version-tokens.js +1 -1
  360. package/dist/src/setup/scaffold/workspace-root.js +1 -1
  361. package/dist/src/shared/agent-definition.d.ts +7 -0
  362. package/dist/src/svelte/index.js +1 -1
  363. package/dist/src/svelte/use-eve-agent.d.ts +3 -3
  364. package/dist/src/svelte/use-eve-agent.js +1 -1
  365. package/dist/src/tasks/json.d.ts +88 -0
  366. package/dist/src/tasks/json.js +1 -0
  367. package/dist/src/tasks/session-index.d.ts +48 -0
  368. package/dist/src/tasks/session-index.js +1 -0
  369. package/dist/src/tasks/task-id.d.ts +34 -0
  370. package/dist/src/tasks/task-id.js +1 -0
  371. package/dist/src/tasks/transitions.d.ts +23 -0
  372. package/dist/src/tasks/transitions.js +1 -0
  373. package/dist/src/tasks/types.d.ts +295 -0
  374. package/dist/src/tasks/types.js +1 -0
  375. package/dist/src/tasks/wire.d.ts +26 -0
  376. package/dist/src/tasks/wire.js +1 -0
  377. package/dist/src/tracing/install-instrumentation-runtime.d.ts +2 -1
  378. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  379. package/dist/src/tracing/otel-declaration.d.ts +32 -3
  380. package/dist/src/tracing/otel-declaration.js +1 -1
  381. package/dist/src/tracing/otel-registration.js +1 -1
  382. package/dist/src/vue/index.js +1 -1
  383. package/dist/src/vue/use-eve-agent.d.ts +3 -3
  384. package/dist/src/vue/use-eve-agent.js +1 -1
  385. package/docs/channels/custom.mdx +1 -1
  386. package/docs/channels/discord.mdx +1 -1
  387. package/docs/channels/eve.mdx +15 -2
  388. package/docs/channels/github.mdx +1 -1
  389. package/docs/channels/linear.mdx +1 -1
  390. package/docs/channels/overview.mdx +1 -1
  391. package/docs/channels/photon.mdx +1 -1
  392. package/docs/channels/slack.mdx +1 -1
  393. package/docs/channels/teams.mdx +1 -1
  394. package/docs/channels/telegram.mdx +1 -1
  395. package/docs/channels/twilio.mdx +1 -1
  396. package/docs/extensions.md +10 -6
  397. package/docs/guides/client/streaming.mdx +7 -6
  398. package/docs/guides/frontend/overview.mdx +10 -8
  399. package/docs/guides/frontend/use-eve-agent-svelte.mdx +10 -10
  400. package/docs/guides/frontend/use-eve-agent-vue.mdx +10 -10
  401. package/docs/install-integrations.mdx +4 -0
  402. package/docs/reference/cli.md +1 -1
  403. package/docs/schedules.mdx +2 -2
  404. package/docs/tools/human-in-the-loop.md +3 -1
  405. package/package.json +7 -1
  406. package/dist/src/compiled/_chunks/workflow/chunk-5MU5Z6L3-CaJgXkVg.js +0 -1
  407. package/dist/src/compiled/_chunks/workflow/sleep-CzdoBiqy.js +0 -1
  408. package/dist/src/compiled/_chunks/workflow/src-Cj3P1ChQ.js +0 -1
  409. package/dist/src/compiled/_chunks/workflow/token-util-DNwIAn_u.js +0 -27
  410. package/dist/src/execution/route-proxied-deliver-step.js +0 -1
@@ -1,3 +1,3 @@
1
- import { t as useEveAgent } from "../chunks/use-eve-agent-CnppTEFk.js";
1
+ import { t as useEveAgent } from "../chunks/use-eve-agent-Dt8Y5QtW.js";
2
2
 
3
3
  export { useEveAgent };
@@ -7,7 +7,7 @@ When eve doesn't ship a channel for your surface, you build one. Custom channels
7
7
 
8
8
  ## File location and identity
9
9
 
10
- Custom channels live in `agent/channels/` at the root agent. Local subagents do not declare channels today.
10
+ Custom channels live in `agent/channels/` at the root agent or in an [extension](../extensions) mounted there. Local subagents do not declare channels today.
11
11
 
12
12
  The channel file stem becomes the channel id, so `agent/channels/internal-webhook.ts` is addressed as `internal-webhook`. Export the channel definition as the module's default export.
13
13
 
@@ -56,7 +56,7 @@ Then configure the public `https://…/eve/v1/discord` route as the application'
56
56
 
57
57
  ### Dispatch
58
58
 
59
- `onCommand(ctx, interaction)` decides whether to dispatch and under what `auth`. Return `{ auth }` to proceed or `null` to drop the interaction. By default, auth comes from the invoking user. Event handlers receive `(eventData, channel, ctx)`, with Discord platform handles on `channel.discord`:
59
+ `onCommand(ctx, interaction)` decides whether to dispatch and under what `auth`. Return `{ auth }` to proceed, `null` to drop the interaction, or `title` alongside `auth` to set the title when the dispatch starts a run. By default, auth comes from the invoking user. Event handlers receive `(eventData, channel, ctx)`, with Discord platform handles on `channel.discord`:
60
60
 
61
61
  ```ts
62
62
  import { discordChannel } from "eve/channels/discord";
@@ -45,6 +45,20 @@ curl -X POST https://<deployment>/eve/v1/session \
45
45
  # {"ok":true,"sessionId":"wrun_A","status":"accepted"}
46
46
  ```
47
47
 
48
+ Authenticated callers that may retry a create request can pass their own `operationId` for
49
+ create-once semantics. The same operation under the same authenticated principal returns the
50
+ active session it already created instead of dispatching the input again. The first accepted
51
+ payload wins; retries with different input still return that first session. Anonymous callers
52
+ cannot use `operationId`, and operation ownership expires when the session is no longer resumable.
53
+
54
+ ```bash
55
+ curl -X POST https://<deployment>/eve/v1/session \
56
+ -H "Authorization: Bearer <token>" \
57
+ -H "Content-Type: application/json" \
58
+ -d '{"message":"What is the weather in Paris?","operationId":"order-4213-research"}'
59
+ # {"ok":true,"sessionId":"wrun_A","status":"accepted"} — retries return the same sessionId
60
+ ```
61
+
48
62
  The first request requires `message`. A follow-up request accepts exactly one of
49
63
  `message` or `inputResponses`; use the latter to answer a pending HITL request:
50
64
 
@@ -146,8 +160,7 @@ export default eveChannel({
146
160
  });
147
161
  ```
148
162
 
149
- `onMessage` must return an auth result. A successful canonical eve HTTP message
150
- always dispatches and therefore always produces or continues a session.
163
+ `onMessage` must return an auth result. Return `title` alongside `auth` to set the title when the dispatch starts a run. A successful canonical eve HTTP message always dispatches and therefore always produces or continues a session.
151
164
 
152
165
  ## Clients
153
166
 
@@ -66,7 +66,7 @@ Point the GitHub App webhook URL at `https://<deployment>/eve/v1/github`. For co
66
66
 
67
67
  ### Dispatch
68
68
 
69
- Inbound hooks return `{ auth }` to dispatch, or `null` to ignore. Use `defaultGitHubAuth(ctx)` to derive auth from the actor.
69
+ Inbound hooks return `{ auth }` to dispatch, or `null` to ignore. Return `title` alongside `auth` to set the title when the dispatch starts a run. Use `defaultGitHubAuth(ctx)` to derive auth from the actor.
70
70
 
71
71
  ```ts
72
72
  import { defaultGitHubAuth, githubChannel } from "eve/channels/github";
@@ -99,7 +99,7 @@ Event handlers receive `channel.linear`, which exposes `createActivity`, `listAc
99
99
 
100
100
  ## Custom hooks
101
101
 
102
- Return `{ auth }` to dispatch, or `null` to acknowledge without waking the agent.
102
+ Return `{ auth }` to dispatch, or `null` to acknowledge without waking the agent. Return `title` alongside `auth` to set the title when the dispatch starts a run.
103
103
 
104
104
  ```ts
105
105
  import { defaultLinearAuth, linearChannel } from "eve/channels/linear";
@@ -36,7 +36,7 @@ Each channel has its own provider terms, data flow, auth model, and user-consent
36
36
 
37
37
  ## Where channels live
38
38
 
39
- Channel files live under `agent/channels/` in the root agent. The file stem is the channel id: `agent/channels/intake.ts` is addressed as `intake`. Export the channel as the module's default export. Local subagents do not declare channels.
39
+ Channel files live under `agent/channels/` in the root agent or come from an [extension](../extensions) mounted there. The file stem is the channel id: `agent/channels/intake.ts` is addressed as `intake`. An extension mount prefixes its contributed channel IDs but does not change their route paths. Local subagents do not declare channels.
40
40
 
41
41
  ```text
42
42
  agent/
@@ -29,7 +29,7 @@ steers its replacement turn.
29
29
 
30
30
  Set `turnPolicy: "queue"` when every response should finish before Photon starts the next message.
31
31
 
32
- Customize inbound dispatch with `onMessage`. Return `null` to ignore a message:
32
+ Customize inbound dispatch with `onMessage`. Return `null` to ignore a message, or return `title` alongside `auth` to set the title when the dispatch starts a run:
33
33
 
34
34
  ```ts
35
35
  export default photonIMessageChannel({
@@ -125,7 +125,7 @@ Check the delivery path in order so you can identify where a Slack event stops:
125
125
 
126
126
  ### Message hooks
127
127
 
128
- Message hooks return `{ auth }` to dispatch, `null` to drop, or `{ auth, context }` to inject background into history.
128
+ Message hooks return `{ auth }` to dispatch, `null` to drop, or `{ auth, context }` to inject background into history. Return `title` alongside `auth` to set the title when the dispatch starts a run. When omitted, the title continues to use the triggering message text.
129
129
 
130
130
  - `onMessage(ctx, message)` handles Slack `message` events. eve drops messages authored by the installed app before this hook runs, preventing self-reply loops. Messages from other bots remain visible; check `message.author?.isBot` when those should also be ignored. `ctx.isBotMentioned()` and `ctx.isSubscribed()` support mention and active-thread policies.
131
131
  - `onAppMention(ctx, message)` handles only `app_mention` and takes precedence over `onMessage`. Its default derives workspace-scoped auth and posts `Thinking…`.
@@ -26,7 +26,7 @@ By default the channel mounts at `POST /eve/v1/teams`. Point your Azure Bot or T
26
26
 
27
27
  ### Dispatch
28
28
 
29
- The default `onMessage` handles two cases: personal-chat messages, and channel or group-chat messages that mention the bot directly. Ambient resource-specific-consent messages are dropped unless you override it. Before dispatch, eve strips the mention, adds a `<teams_context>` block, and scopes channel and group threads by root activity id (`replyToId ?? id`).
29
+ The default `onMessage` handles two cases: personal-chat messages, and channel or group-chat messages that mention the bot directly. Ambient resource-specific-consent messages are dropped unless you override it. Return `title` alongside `auth` to set the title when the dispatch starts a run. Before dispatch, eve strips the mention, adds a `<teams_context>` block, and scopes channel and group threads by root activity id (`replyToId ?? id`).
30
30
 
31
31
  For example, use the contextual `isSubscribed()` helper to continue active threads without requiring another mention:
32
32
 
@@ -39,7 +39,7 @@ In a private chat, text, captions, photos, and documents all go through. Groups
39
39
 
40
40
  Forum topics carry `message_thread_id` in the continuation token, so each topic stays on its own thread.
41
41
 
42
- To customize auth or filtering, override `onMessage`. Group privacy mode itself lives in BotFather, not here.
42
+ To customize auth or filtering, override `onMessage`. Return `title` alongside `auth` to set the title when the dispatch starts a run. Group privacy mode itself lives in BotFather, not here.
43
43
 
44
44
  ### Delivery
45
45
 
@@ -40,7 +40,7 @@ Point your Twilio number's Messaging webhook at `/messages` and Voice webhook at
40
40
  export default twilioChannel({ allowFrom: ["+15551234567", "+15557654321"] });
41
41
  ```
42
42
 
43
- `onText` and `onVoiceTranscription` decide dispatch and `auth`. Return `{ auth }` to proceed, or `null` to drop the message. `onVoice` fires the moment a call comes in. Return `null` to reject it, or return an object to override the spoken prompt, language, `<Say voice>`, and speech-recognition options.
43
+ `onText` and `onVoiceTranscription` decide dispatch and `auth`. Return `{ auth }` to proceed, `null` to drop the message, or `title` alongside `auth` to set the title when the dispatch starts a run. `onVoice` fires the moment a call comes in. Return `null` to reject it, or return an object to override the spoken prompt, language, `<Say voice>`, and speech-recognition options.
44
44
 
45
45
  ```ts
46
46
  export default twilioChannel({
@@ -3,7 +3,7 @@ title: "Extensions"
3
3
  description: "Package reusable eve capabilities and mount them from npm or a monorepo workspace."
4
4
  ---
5
5
 
6
- Extensions package eve tools, connections, skills, instruction fragments, and hooks. An author builds an extension package; each agent that uses it declares the package as a dependency and mounts it. The package can be published to a package registry or kept private inside a monorepo workspace.
6
+ Extensions package eve tools, channels, connections, skills, schedules, instruction fragments, and hooks. An author builds an extension package; each agent that uses it declares the package as a dependency and mounts it. The package can be published to a package registry or kept private inside a monorepo workspace.
7
7
 
8
8
  Ready-made extensions can also be distributed through an eve integration registry. See [Add Integrations](./install-integrations) to discover and add one with `eve add`; this page explains how extension packages are authored, mounted, configured, and overridden.
9
9
 
@@ -29,8 +29,10 @@ An extension uses the same file conventions as an agent for its contributions:
29
29
  extension/
30
30
  extension.ts
31
31
  tools/search.ts
32
+ channels/webhook.ts
32
33
  connections/api.ts
33
34
  skills/triage/SKILL.md
35
+ schedules/sync.ts
34
36
  instructions.md
35
37
  hooks/audit.ts
36
38
  lib/http.ts
@@ -38,9 +40,9 @@ An extension uses the same file conventions as an agent for its contributions:
38
40
 
39
41
  Each listed slot accepts the same authored forms as its agent counterpart. Static and dynamic tools, skills, and instructions all work in an extension: `extension/instructions.ts` is as valid as `extension/instructions.md`, and `extension/tools/` can contain `defineDynamic(...)`.
40
42
 
41
- Names come from paths, so call the tool `search`, not `crm_search`; the consumer's mount adds the `crm__` prefix. Keep shared code in `extension/lib/`.
43
+ Names come from paths, so call the tool `search`, not `crm_search`; the consumer's mount adds the `crm__` prefix. The same prefix applies to channel and schedule IDs, while channel route paths and schedule cron expressions stay unchanged. Keep shared code in `extension/lib/`.
42
44
 
43
- Keep agent configuration, sandboxes, schedules, and nested extensions in the consumer's agent.
45
+ Keep agent configuration, sandboxes, and nested extensions in the consumer's agent.
44
46
 
45
47
  ### Add configuration and contributions
46
48
 
@@ -58,7 +60,7 @@ export default defineExtension({
58
60
  });
59
61
  ```
60
62
 
61
- Contributions import that handle to read the validated configuration. Defaults have already been applied:
63
+ Contributions, including schedule handlers, can import that handle to read the validated configuration. Defaults have already been applied:
62
64
 
63
65
  ```ts title="extension/tools/search.ts"
64
66
  import { defineTool } from "eve/tools";
@@ -168,7 +170,7 @@ export default crm({ apiKey: process.env.CRM_API_KEY! });
168
170
 
169
171
  Set `CRM_API_KEY` in the consumer's environment, such as `.env.local` for local development.
170
172
 
171
- The mount adds `crm__` to named contributions: `tools/search.ts` becomes `crm__search`, and `connections/api.ts` becomes `crm__api`.
173
+ The mount adds `crm__` to named contributions: `tools/search.ts` becomes `crm__search`, `channels/webhook.ts` becomes `crm__webhook`, `schedules/sync.ts` becomes `crm__sync`, and `connections/api.ts` becomes `crm__api`. Channels keep their declared route paths, and schedules keep their cron expressions.
172
174
 
173
175
  For an extension with no configuration, mount its default export directly:
174
176
 
@@ -274,7 +276,7 @@ import crm from "@acme/crm";
274
276
  export default crm({ apiKey: process.env.CRM_API_KEY! });
275
277
  ```
276
278
 
277
- A same-named consumer tool, connection, or skill wins. To adjust an extension tool, import it from the package's `./tools` export and define it again:
279
+ A same-named consumer channel, tool, connection, skill, or schedule wins. To adjust an extension tool, import it from the package's `./tools` export and define it again:
278
280
 
279
281
  ```ts title="agent/extensions/crm/tools/search.ts"
280
282
  import { search } from "@acme/crm/tools";
@@ -329,4 +331,6 @@ At build time, eve checks the extension's generated capability metadata. If the
329
331
  - [Instructions](/docs/instructions): static and TypeScript instructions
330
332
  - [Skills](/docs/skills): package procedures and supporting files
331
333
  - [Connections](/docs/connections): integrate external services
334
+ - [Channels](/docs/channels/overview): receive messages and expose routes
335
+ - [Schedules](/docs/schedules): run the agent on a cron cadence
332
336
  - [Hooks](/docs/guides/hooks): observe agent events
@@ -5,23 +5,24 @@ description: "Consume eve client stream events live, reconnect by event index, a
5
5
 
6
6
  Every `ClientSession.send()` call posts the turn, then reads the session's NDJSON (newline-delimited JSON) event stream. `MessageResponse` gives you two ways to consume that stream, aggregating it with `result()` or iterating it live.
7
7
 
8
- Once `send()` is accepted, the session exposes its assigned `sessionId` and can request cooperative cancellation with `session.cancel()`, even while the response stream is still running. The result status is `accepted` when the live session durably queued the command, including when a parked session consumes it as a no-op. An unknown or terminal session returns `no_active_turn`:
8
+ Once `send()` is accepted, `response.cancel()` requests cooperative cancellation of that exact turn. Start consuming the response first; cancellation waits for the stream to identify the turn, guards the request with its ID, and never targets a later turn. The result status is `accepted` when the live session durably queues the command. A response that settles before a turn starts returns `no_active_turn`:
9
9
 
10
10
  ```ts
11
- const { session, response } = await client.sessions.create({ message: "Run the long operation." });
11
+ const { response } = await client.sessions.create({ message: "Run the long operation." });
12
12
 
13
- const cancellation = await session.cancel();
13
+ const resultPromise = response.result();
14
+ const cancellation = await response.cancel();
14
15
  if (cancellation.status === "accepted") {
15
16
  console.log(cancellation.sessionId);
16
17
  }
17
18
 
18
- const result = await response.result();
19
+ const result = await resultPromise;
19
20
  ```
20
21
 
21
22
  The cancellation result is discriminated by `status`: only `accepted` includes
22
23
  `sessionId`; `no_active_turn` has no session identity field.
23
24
 
24
- Cancellation does not replace stream consumption. Continue reading the response to observe its terminal `turn.cancelled` and `session.waiting` boundary and to advance the client session cursor normally.
25
+ Cancellation does not replace stream consumption. Continue reading the response to observe its terminal `turn.cancelled` and `session.waiting` boundary and to advance the client session cursor normally. Use `session.cancel({ turnId })` instead when you have only a fixed session handle and an observed turn ID.
25
26
 
26
27
  Between turns, `session.compact()` queues context compaction without sending model input. An accepted request reports the session id; consume the durable stream through the following `session.waiting` boundary before sending the next turn. `compaction.completed` confirms that summarization succeeded; without it, eve preserves the previous history. A never-started session returns `no_active_session` as a successful no-op.
27
28
 
@@ -126,7 +127,7 @@ If you support refresh while an authorization prompt is pending, keep the sessio
126
127
 
127
128
  ## Reconnection
128
129
 
129
- HTTP connections can end before a run does. The client reconnects from the number of events already consumed, so long turns continue without replaying events. It stops at a turn boundary, when aborted, or when the stream can no longer make progress.
130
+ HTTP connections can end before a run does. The client reconnects from the number of events already consumed, so long turns continue without replaying events. By default, a turn response keeps reconnecting until it reaches a turn boundary or is aborted, including while the turn is paused for authorization. A manually opened `session.stream()` eventually stops after repeated empty streams when it can no longer make progress.
130
131
 
131
132
  If your consumer persists events, key on `event.meta.id`. It is stable across reconnects and rewinds, so an overlapping replay is safe to ingest twice. See [the event envelope](../../concepts/sessions-runs-and-streaming#the-event-envelope).
132
133
 
@@ -78,7 +78,7 @@ export function Chat() {
78
78
  | `session` | Serializable fixed session cursor (`sessionId`, `streamIndex`). |
79
79
  | `send` | Send text or a multi-part message, with per-turn options. |
80
80
  | `respond` | Answer pending HITL input requests, with per-turn options. |
81
- | `stop` | Abort the client's in-flight stream. The server-side turn keeps running. |
81
+ | `cancel` | Request durable cancellation of the active turn. |
82
82
  | `reset` | Clear local events, data, errors, and the local session cursor. |
83
83
 
84
84
  Most chat UIs only need `data.messages` and `status`. Drop down to `events` when you need the authoritative wire events directly, for example to persist an audit log or build a custom projection.
@@ -105,15 +105,17 @@ await agent.send([
105
105
  ]);
106
106
  ```
107
107
 
108
- Assistant text, reasoning, tool calls, and tool results stream into `data` as they arrive, and `status` moves from `ready` to `submitted` to `streaming` and back. Call `stop()` to abort the client's in-flight stream, and `reset()` to clear local state so the next send starts a fresh durable session.
108
+ Assistant text, reasoning, tool calls, and tool results stream into `data` as they arrive, and `status` moves from `ready` to `submitted` to `streaming` and back. Call `cancel()` to stop the durable server-side turn, and `reset()` to clear local state so the next send starts a fresh durable session.
109
109
 
110
- `stop()` is local: turns are resumable across disconnects, so detaching the stream never cancels the work — the turn keeps running and billing on the server. To stop the turn itself, POST the session's [cancel route](../../channels/eve#routes); the turn then settles on the stream as `turn.cancelled` followed by `session.waiting`.
110
+ `cancel()` can be called as soon as `status` is `"submitted"`; the hook waits for the active response to identify its turn when necessary, sends one guarded cancellation request, and keeps the event stream attached. The promise resolves when eve accepts the request or reports that no turn is active, and rejects if the cancellation request fails. The turn then settles on the same stream as `turn.cancelled` followed by `session.waiting`, so the session is safe to continue.
111
111
 
112
- A chat UI with a server-side Cancel button can use the `sessionId` exposed by the
113
- hook, attach a fixed `ClientSession`, and call `session.cancel({ turnId })` after
114
- observing that turn's `turn.started` event. The `turnId` guard makes a late click
115
- a harmless no-op instead of cancelling a newer turn. Keep the stream open until
116
- the cancellation boundary arrives; do not use `stop()` for this interaction.
112
+ ```tsx
113
+ if (agent.status === "submitted" || agent.status === "streaming") {
114
+ await agent.cancel();
115
+ }
116
+ ```
117
+
118
+ Unmounting the component or closing the page disconnects the local stream but does not cancel server execution. Call `cancel()` before detaching when the user intends to stop the durable turn.
117
119
 
118
120
  After eve confirms an attachment turn with `message.received`, the default reducer projects each
119
121
  received attachment as a `file` part on the user message. The part includes `mediaType`, optional
@@ -44,14 +44,14 @@ Call the binding once for a conversation and read its reactive getters directly.
44
44
 
45
45
  The state fields are reactive getters; the commands are ordinary methods:
46
46
 
47
- | Property | Svelte shape |
48
- | ---------------------------------- | --------------------------------- |
49
- | `data` | `TData` |
50
- | `status` | `UseEveAgentStatus` |
51
- | `error` | `Error \| undefined` |
52
- | `events` | `readonly MessageStreamEvent[]` |
53
- | `session` | `ClientSessionState \| undefined` |
54
- | `send`, `respond`, `stop`, `reset` | Methods |
47
+ | Property | Svelte shape |
48
+ | ------------------------------------ | --------------------------------- |
49
+ | `data` | `TData` |
50
+ | `status` | `UseEveAgentStatus` |
51
+ | `error` | `Error \| undefined` |
52
+ | `events` | `readonly MessageStreamEvent[]` |
53
+ | `session` | `ClientSessionState \| undefined` |
54
+ | `send`, `respond`, `cancel`, `reset` | Methods |
55
55
 
56
56
  Read the getters directly in templates, `$derived`, or `$effect`. The [shared returned-state reference](./overview#returned-state) describes what each value and command does.
57
57
 
@@ -104,9 +104,9 @@ Pending requests appear in `agent.data.messages`. Use the Svelte exports when na
104
104
 
105
105
  See [Human-in-the-loop prompts](./overview#human-in-the-loop-prompts) for request semantics and rendering guidance.
106
106
 
107
- ## Stop, reset, and resume
107
+ ## Cancel, reset, and resume
108
108
 
109
- Call `agent.stop()` to detach the browser stream without cancelling server-side work, and `agent.reset()` to clear local state and start a new session. Pass `initialSession` and `initialEvents` to restore a saved conversation. See [Resumable sessions](./overview#resumable-sessions) for the persistence contract and [Sending and streaming](./overview#sending-and-streaming) for cancellation behavior.
109
+ Call `agent.cancel()` to stop the durable server-side turn while the binding remains attached through settlement. Destroying the component only disconnects its local stream; it does not cancel server execution. Call `agent.reset()` to clear local state and start a new session. Pass `initialSession` and `initialEvents` to restore a saved conversation. See [Resumable sessions](./overview#resumable-sessions) for the persistence contract and [Sending and streaming](./overview#sending-and-streaming) for cancellation behavior.
110
110
 
111
111
  ## Custom host and credentials
112
112
 
@@ -43,14 +43,14 @@ async function handleSubmit() {
43
43
 
44
44
  The state fields are computed refs; the commands are ordinary methods:
45
45
 
46
- | Property | Vue shape |
47
- | ---------------------------------- | ---------------------------------------------- |
48
- | `data` | `ComputedRef<TData>` |
49
- | `status` | `ComputedRef<UseEveAgentStatus>` |
50
- | `error` | `ComputedRef<Error \| undefined>` |
51
- | `events` | `ComputedRef<readonly MessageStreamEvent[]>` |
52
- | `session` | `ComputedRef<ClientSessionState \| undefined>` |
53
- | `send`, `respond`, `stop`, `reset` | Methods |
46
+ | Property | Vue shape |
47
+ | ------------------------------------ | ---------------------------------------------- |
48
+ | `data` | `ComputedRef<TData>` |
49
+ | `status` | `ComputedRef<UseEveAgentStatus>` |
50
+ | `error` | `ComputedRef<Error \| undefined>` |
51
+ | `events` | `ComputedRef<readonly MessageStreamEvent[]>` |
52
+ | `session` | `ComputedRef<ClientSessionState \| undefined>` |
53
+ | `send`, `respond`, `cancel`, `reset` | Methods |
54
54
 
55
55
  Destructuring preserves reactivity because each state value remains a ref. Read refs with `.value` in `<script>` and without `.value` in a template. The [shared returned-state reference](./overview#returned-state) describes what each value and command does.
56
56
 
@@ -106,9 +106,9 @@ const pendingRequests = computed(() =>
106
106
 
107
107
  See [Human-in-the-loop prompts](./overview#human-in-the-loop-prompts) for request semantics and rendering guidance.
108
108
 
109
- ## Stop, reset, and resume
109
+ ## Cancel, reset, and resume
110
110
 
111
- Call `stop()` to detach the browser stream without cancelling server-side work, and `reset()` to clear local state and start a new session. Pass `initialSession` and `initialEvents` to restore a saved conversation. See [Resumable sessions](./overview#resumable-sessions) for the persistence contract and [Sending and streaming](./overview#sending-and-streaming) for cancellation behavior.
111
+ Call `cancel()` to stop the durable server-side turn while the composable remains attached through settlement. Disposing the component only disconnects its local stream; it does not cancel server execution. Call `reset()` to clear local state and start a new session. Pass `initialSession` and `initialEvents` to restore a saved conversation. See [Resumable sessions](./overview#resumable-sessions) for the persistence contract and [Sending and streaming](./overview#sending-and-streaming) for cancellation behavior.
112
112
 
113
113
  ## Custom host and credentials
114
114
 
@@ -16,6 +16,10 @@ eve add linear
16
16
  eve add instrumentation/braintrust
17
17
  ```
18
18
 
19
+ If an item is not found, `eve add` searches the available catalogs and prints close matches without installing anything.
20
+
21
+ If you do not know an item name yet, run `eve add` without an argument. Its help output shows how to search the registry with `eve registry search <query>`.
22
+
19
23
  Extensions may create a mount under `agent/extensions/`. Connections write their initial definition under `agent/connections/` and install `@vercel/connect` when required. Instrumentation providers write `agent/instrumentation.ts`; because an agent has one instrumentation file, compose multiple exporters there by hand. Configure generated files and required environment variables before running your agent.
20
24
 
21
25
  Some integrations package several independently installable components. For example, `eve add linear` lets you choose the Linear Channel, Linear MCP, or both; both are selected by default. The specific `eve add channel/linear-agent` and `eve add connection/linear` commands remain available.
@@ -3,7 +3,7 @@ title: "CLI"
3
3
  description: "Reference for every eve CLI command: init, set, info, build, start, dev, logs, trace, link, deploy, eval, channels, and extension."
4
4
  ---
5
5
 
6
- The `eve` binary (`bin: eve`) runs from your app root. Every command first loads `.env`/`.env.local` from that root. Running `eve` with no command runs `eve init` when the current directory is not an eve project, or `eve dev` when it is.
6
+ Relevant `eve` commands can run from the application root or any directory beneath it. Running `eve` with no command runs `eve init` when the current directory is not an eve project, or `eve dev` when it is.
7
7
 
8
8
  ## Commands
9
9
 
@@ -3,9 +3,9 @@ title: "Schedules"
3
3
  description: "Run an agent on a cron cadence, either a fire-and-forget prompt or a handler that hands work off to a channel."
4
4
  ---
5
5
 
6
- A schedule starts the agent on its own clock instead of waiting for an inbound message. Use one for daily digests, data syncs, cleanup sweeps, heartbeats, or anything that should fire on a cadence. Each one is a single file under `agent/schedules/` carrying a cron expression. Schedules are root-only, so declared subagents cannot have a `schedules/` directory.
6
+ A schedule starts the agent on its own clock instead of waiting for an inbound message. Use one for daily digests, data syncs, cleanup sweeps, heartbeats, or anything that should fire on a cadence. Root-authored schedules are single files under `agent/schedules/`, and mounted extensions can contribute them from `extension/schedules/`. Declared subagents cannot have a `schedules/` directory.
7
7
 
8
- The name comes from the path under `schedules/` (`agent/schedules/billing/sweep.ts` → `"billing/sweep"`), and nested directories are fine.
8
+ The name comes from the path under `schedules/` (`agent/schedules/billing/sweep.ts` → `"billing/sweep"`), and nested directories are fine. An extension mount prefixes that name (`extension/schedules/sweep.ts` mounted as `crm` → `"crm__sweep"`) without changing its cron expression.
9
9
 
10
10
  ## `defineSchedule`
11
11
 
@@ -109,7 +109,9 @@ semantics.
109
109
 
110
110
  The run picks back up exactly where it parked. Because the pause is durable, nothing is held in memory while it waits — the process can restart and the parked turn survives.
111
111
 
112
- For approval requests, unrelated follow-up text does not deny the tool call — and it does not wait behind it either. The message runs as an ordinary turn while the approval stays pending and answerable; a later structured answer still resolves the original tool call. Text that exactly matches an option (like `approve`) still resolves the request directly.
112
+ When a background subagent requests input, eve emits the same `input.requested` event on its parent session. Answering through that parent session routes the response directly to the blocked child without invoking the parent model.
113
+
114
+ For approval requests, unrelated follow-up text does not deny the tool call. eve keeps the approval pending and holds that text until the approval is answered, then replays it as the next message in the session.
113
115
 
114
116
  See [Sessions, runs & streaming](/docs/concepts/sessions-runs-and-streaming) for the full event and resume contract that this builds on.
115
117
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eve",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "private": false,
5
5
  "description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
6
6
  "keywords": [
@@ -231,6 +231,11 @@
231
231
  "import": "./dist/src/public/channels/auth.js",
232
232
  "default": "./dist/src/public/channels/auth.js"
233
233
  },
234
+ "./channels/mcp": {
235
+ "types": "./dist/src/public/channels/mcp.d.ts",
236
+ "import": "./dist/src/public/channels/mcp.js",
237
+ "default": "./dist/src/public/channels/mcp.js"
238
+ },
234
239
  "./channels/slack": {
235
240
  "types": "./dist/src/public/channels/slack/index.d.ts",
236
241
  "import": "./dist/src/public/channels/slack/index.js",
@@ -310,6 +315,7 @@
310
315
  "@chat-adapter/state-memory": "4.34.0",
311
316
  "@chat-adapter/twilio": "4.34.0",
312
317
  "@clack/core": "1.3.1",
318
+ "@modelcontextprotocol/server": "2.0.0",
313
319
  "@nuxt/kit": "^4.0.0",
314
320
  "@opentelemetry/context-async-hooks": "2.6.1",
315
321
  "@opentelemetry/core": "2.6.1",
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./src-Cj3P1ChQ.js";import{fileURLToPath as n}from"url";import{createRequire as r}from"module";import i from"path";var a=e(t(),1);const o=r(import.meta.url),s=n(import.meta.url);i.dirname(s);var c=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,m=(e=>typeof o<`u`?o:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof o<`u`?o:e)[t]}):e)(function(e){if(typeof o<`u`)return o.apply(this,arguments);throw Error(`Dynamic require of "`+e+`" is not supported`)}),h=(e,t)=>()=>(e&&(t=e(e=0)),t),g=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_=(e,t)=>{for(var n in t)l(e,n,{get:t[n],enumerable:!0})},v=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!p.call(e,i)&&i!==n&&l(e,i,{get:()=>t[i],enumerable:!(r=u(t,i))||r.enumerable});return e},y=(e,t,n)=>(v(e,t,`default`),n&&v(n,t,`default`)),b=(e,t,n)=>(n=e==null?{}:c(f(e)),v(t||!e||!e.__esModule?l(n,`default`,{value:e,enumerable:!0}):n,e)),x=e=>v(l({},`__esModule`,{value:!0}),e),S={},C=h(()=>{y(S,a)});export{_ as a,S as c,g as i,y as l,C as n,b as o,m as r,x as s,h as t};
@@ -1 +0,0 @@
1
- import{ar as e}from"./wait-until-DK2lnH6U.js";import{i as t}from"./attribute-changes-BoH7JsWp.js";async function n(r){let i=globalThis[e];return i||t(`sleep()`,`https://workflow-sdk.dev/docs/api-reference/workflow/sleep`,n),i(r)}export{n as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DaDcL9Zw.js";var t=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,e.VERSION=`1.9.1`})),n=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isCompatible=e._makeCompatibilityCheck=void 0;let n=t(),r=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function i(e){let t=new Set([e]),n=new Set,i=e.match(r);if(!i)return()=>!1;let a={major:+i[1],minor:+i[2],patch:+i[3],prerelease:i[4]};if(a.prerelease!=null)return function(t){return t===e};function o(e){return n.add(e),!1}function s(e){return t.add(e),!0}return function(e){if(t.has(e))return!0;if(n.has(e))return!1;let i=e.match(r);if(!i)return o(e);let c={major:+i[1],minor:+i[2],patch:+i[3],prerelease:i[4]};return c.prerelease!=null||a.major!==c.major?o(e):a.major===0?a.minor===c.minor&&a.patch<=c.patch?s(e):o(e):a.minor<=c.minor?s(e):o(e)}}e._makeCompatibilityCheck=i,e.isCompatible=i(n.VERSION)})),r=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.unregisterGlobal=e.getGlobal=e.registerGlobal=void 0;let r=t(),i=n(),a=r.VERSION.split(`.`)[0],o=Symbol.for(`opentelemetry.js.api.${a}`),s=typeof globalThis==`object`?globalThis:typeof self==`object`?self:typeof window==`object`?window:typeof global==`object`?global:{};function c(e,t,n,i=!1){let a=s[o]=s[o]??{version:r.VERSION};if(!i&&a[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return n.error(t.stack||t.message),!1}if(a.version!==r.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${a.version} for ${e} does not match previously registered API v${r.VERSION}`);return n.error(t.stack||t.message),!1}return a[e]=t,n.debug(`@opentelemetry/api: Registered a global for ${e} v${r.VERSION}.`),!0}e.registerGlobal=c;function l(e){let t=s[o]?.version;if(!(!t||!(0,i.isCompatible)(t)))return s[o]?.[e]}e.getGlobal=l;function u(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${r.VERSION}.`);let n=s[o];n&&delete n[e]}e.unregisterGlobal=u})),i=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DiagComponentLogger=void 0;let t=r();e.DiagComponentLogger=class{constructor(e){this._namespace=e.namespace||`DiagComponentLogger`}debug(...e){return n(`debug`,this._namespace,e)}error(...e){return n(`error`,this._namespace,e)}info(...e){return n(`info`,this._namespace,e)}warn(...e){return n(`warn`,this._namespace,e)}verbose(...e){return n(`verbose`,this._namespace,e)}};function n(e,n,r){let i=(0,t.getGlobal)(`diag`);if(i)return i[e](n,...r)}})),a=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DiagLogLevel=void 0,(function(e){e[e.NONE=0]=`NONE`,e[e.ERROR=30]=`ERROR`,e[e.WARN=50]=`WARN`,e[e.INFO=60]=`INFO`,e[e.DEBUG=70]=`DEBUG`,e[e.VERBOSE=80]=`VERBOSE`,e[e.ALL=9999]=`ALL`})(e.DiagLogLevel||={})})),o=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createLogLevelDiagLogger=void 0;let t=a();function n(e,n){e<t.DiagLogLevel.NONE?e=t.DiagLogLevel.NONE:e>t.DiagLogLevel.ALL&&(e=t.DiagLogLevel.ALL),n||={};function r(t,r){let i=n[t];return typeof i==`function`&&e>=r?i.bind(n):function(){}}return{error:r(`error`,t.DiagLogLevel.ERROR),warn:r(`warn`,t.DiagLogLevel.WARN),info:r(`info`,t.DiagLogLevel.INFO),debug:r(`debug`,t.DiagLogLevel.DEBUG),verbose:r(`verbose`,t.DiagLogLevel.VERBOSE)}}e.createLogLevelDiagLogger=n})),s=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DiagAPI=void 0;let t=i(),n=o(),s=a(),c=r();e.DiagAPI=class e{static instance(){return this._instance||=new e,this._instance}constructor(){function e(e){return function(...t){let n=(0,c.getGlobal)(`diag`);if(n)return n[e](...t)}}let r=this;r.setLogger=(e,t={logLevel:s.DiagLogLevel.INFO})=>{if(e===r){let e=Error(`Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation`);return r.error(e.stack??e.message),!1}typeof t==`number`&&(t={logLevel:t});let i=(0,c.getGlobal)(`diag`),a=(0,n.createLogLevelDiagLogger)(t.logLevel??s.DiagLogLevel.INFO,e);if(i&&!t.suppressOverrideMessage){let e=Error().stack??`<failed to generate stacktrace>`;i.warn(`Current logger will be overwritten from ${e}`),a.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,c.registerGlobal)(`diag`,a,r,!0)},r.disable=()=>{(0,c.unregisterGlobal)(`diag`,r)},r.createComponentLogger=e=>new t.DiagComponentLogger(e),r.verbose=e(`verbose`),r.debug=e(`debug`),r.info=e(`info`),r.warn=e(`warn`),r.error=e(`error`)}}})),c=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BaggageImpl=void 0,e.BaggageImpl=class e{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries())}setEntry(t,n){let r=new e(this._entries);return r._entries.set(t,n),r}removeEntry(t){let n=new e(this._entries);return n._entries.delete(t),n}removeEntries(...t){let n=new e(this._entries);for(let e of t)n._entries.delete(e);return n}clear(){return new e}}})),l=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.baggageEntryMetadataSymbol=void 0,e.baggageEntryMetadataSymbol=Symbol(`BaggageEntryMetadata`)})),u=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.baggageEntryMetadataFromString=e.createBaggage=void 0;let t=s(),n=c(),r=l(),i=t.DiagAPI.instance();function a(e={}){return new n.BaggageImpl(new Map(Object.entries(e)))}e.createBaggage=a;function o(e){return typeof e!=`string`&&(i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=``),{__TYPE__:r.baggageEntryMetadataSymbol,toString(){return e}}}e.baggageEntryMetadataFromString=o})),d=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ROOT_CONTEXT=e.createContextKey=void 0;function t(e){return Symbol.for(e)}e.createContextKey=t,e.ROOT_CONTEXT=new class e{constructor(t){let n=this;n._currentContext=t?new Map(t):new Map,n.getValue=e=>n._currentContext.get(e),n.setValue=(t,r)=>{let i=new e(n._currentContext);return i._currentContext.set(t,r),i},n.deleteValue=t=>{let r=new e(n._currentContext);return r._currentContext.delete(t),r}}}})),f=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DiagConsoleLogger=e._originalConsoleMethods=void 0;let t=[{n:`error`,c:`error`},{n:`warn`,c:`warn`},{n:`info`,c:`info`},{n:`debug`,c:`debug`},{n:`verbose`,c:`trace`}];if(e._originalConsoleMethods={},typeof console<`u`)for(let t of[`error`,`warn`,`info`,`debug`,`trace`,`log`])typeof console[t]==`function`&&(e._originalConsoleMethods[t]=console[t]);e.DiagConsoleLogger=class{constructor(){function n(t){return function(...n){let r=e._originalConsoleMethods[t];if(typeof r!=`function`&&(r=e._originalConsoleMethods.log),typeof r!=`function`&&console&&(r=console[t],typeof r!=`function`&&(r=console.log)),typeof r==`function`)return r.apply(console,n)}}for(let e=0;e<t.length;e++)this[t[e].n]=n(t[e].c)}}})),p=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createNoopMeter=e.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=e.NOOP_OBSERVABLE_GAUGE_METRIC=e.NOOP_OBSERVABLE_COUNTER_METRIC=e.NOOP_UP_DOWN_COUNTER_METRIC=e.NOOP_HISTOGRAM_METRIC=e.NOOP_GAUGE_METRIC=e.NOOP_COUNTER_METRIC=e.NOOP_METER=e.NoopObservableUpDownCounterMetric=e.NoopObservableGaugeMetric=e.NoopObservableCounterMetric=e.NoopObservableMetric=e.NoopHistogramMetric=e.NoopGaugeMetric=e.NoopUpDownCounterMetric=e.NoopCounterMetric=e.NoopMetric=e.NoopMeter=void 0;var t=class{constructor(){}createGauge(t,n){return e.NOOP_GAUGE_METRIC}createHistogram(t,n){return e.NOOP_HISTOGRAM_METRIC}createCounter(t,n){return e.NOOP_COUNTER_METRIC}createUpDownCounter(t,n){return e.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(t,n){return e.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(t,n){return e.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(t,n){return e.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}};e.NoopMeter=t;var n=class{};e.NoopMetric=n;var r=class extends n{add(e,t){}};e.NoopCounterMetric=r;var i=class extends n{add(e,t){}};e.NoopUpDownCounterMetric=i;var a=class extends n{record(e,t){}};e.NoopGaugeMetric=a;var o=class extends n{record(e,t){}};e.NoopHistogramMetric=o;var s=class{addCallback(e){}removeCallback(e){}};e.NoopObservableMetric=s;var c=class extends s{};e.NoopObservableCounterMetric=c;var l=class extends s{};e.NoopObservableGaugeMetric=l;var u=class extends s{};e.NoopObservableUpDownCounterMetric=u,e.NOOP_METER=new t,e.NOOP_COUNTER_METRIC=new r,e.NOOP_GAUGE_METRIC=new a,e.NOOP_HISTOGRAM_METRIC=new o,e.NOOP_UP_DOWN_COUNTER_METRIC=new i,e.NOOP_OBSERVABLE_COUNTER_METRIC=new c,e.NOOP_OBSERVABLE_GAUGE_METRIC=new l,e.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new u;function d(){return e.NOOP_METER}e.createNoopMeter=d})),m=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ValueType=void 0,(function(e){e[e.INT=0]=`INT`,e[e.DOUBLE=1]=`DOUBLE`})(e.ValueType||={})})),h=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.defaultTextMapSetter=e.defaultTextMapGetter=void 0,e.defaultTextMapGetter={get(e,t){if(e!=null)return e[t]},keys(e){return e==null?[]:Object.keys(e)}},e.defaultTextMapSetter={set(e,t,n){e!=null&&(e[t]=n)}}})),g=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NoopContextManager=void 0;let t=d();e.NoopContextManager=class{active(){return t.ROOT_CONTEXT}with(e,t,n,...r){return t.call(n,...r)}bind(e,t){return t}enable(){return this}disable(){return this}}})),_=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ContextAPI=void 0;let t=g(),n=r(),i=s(),a=`context`,o=new t.NoopContextManager;e.ContextAPI=class e{constructor(){}static getInstance(){return this._instance||=new e,this._instance}setGlobalContextManager(e){return(0,n.registerGlobal)(a,e,i.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,n,...r){return this._getContextManager().with(e,t,n,...r)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,n.getGlobal)(a)||o}disable(){this._getContextManager().disable(),(0,n.unregisterGlobal)(a,i.DiagAPI.instance())}}})),v=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TraceFlags=void 0,(function(e){e[e.NONE=0]=`NONE`,e[e.SAMPLED=1]=`SAMPLED`})(e.TraceFlags||={})})),y=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=void 0;let t=v();e.INVALID_SPANID=`0000000000000000`,e.INVALID_TRACEID=`00000000000000000000000000000000`,e.INVALID_SPAN_CONTEXT={traceId:e.INVALID_TRACEID,spanId:e.INVALID_SPANID,traceFlags:t.TraceFlags.NONE}})),b=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NonRecordingSpan=void 0;let t=y();e.NonRecordingSpan=class{constructor(e=t.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}addLink(e){return this}addLinks(e){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}})),x=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getSpanContext=e.setSpanContext=e.deleteSpan=e.setSpan=e.getActiveSpan=e.getSpan=void 0;let t=d(),n=b(),r=_(),i=(0,t.createContextKey)(`OpenTelemetry Context Key SPAN`);function a(e){return e.getValue(i)||void 0}e.getSpan=a;function o(){return a(r.ContextAPI.getInstance().active())}e.getActiveSpan=o;function s(e,t){return e.setValue(i,t)}e.setSpan=s;function c(e){return e.deleteValue(i)}e.deleteSpan=c;function l(e,t){return s(e,new n.NonRecordingSpan(t))}e.setSpanContext=l;function u(e){return a(e)?.spanContext()}e.getSpanContext=u})),S=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.wrapSpanContext=e.isSpanContextValid=e.isValidSpanId=e.isValidTraceId=void 0;let t=y(),n=b(),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function i(e,t){if(typeof e!=`string`||e.length!==t)return!1;let n=0;for(let t=0;t<e.length;t+=4)n+=(r[e.charCodeAt(t)]|0)+(r[e.charCodeAt(t+1)]|0)+(r[e.charCodeAt(t+2)]|0)+(r[e.charCodeAt(t+3)]|0);return n===t}function a(e){return i(e,32)&&e!==t.INVALID_TRACEID}e.isValidTraceId=a;function o(e){return i(e,16)&&e!==t.INVALID_SPANID}e.isValidSpanId=o;function s(e){return a(e.traceId)&&o(e.spanId)}e.isSpanContextValid=s;function c(e){return new n.NonRecordingSpan(e)}e.wrapSpanContext=c})),C=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NoopTracer=void 0;let t=_(),n=x(),r=b(),i=S(),a=t.ContextAPI.getInstance();e.NoopTracer=class{startSpan(e,t,s=a.active()){if(t?.root)return new r.NonRecordingSpan;let c=s&&(0,n.getSpanContext)(s);return o(c)&&(0,i.isSpanContextValid)(c)?new r.NonRecordingSpan(c):new r.NonRecordingSpan}startActiveSpan(e,t,r,i){let o,s,c;if(arguments.length<2)return;arguments.length===2?c=t:arguments.length===3?(o=t,c=r):(o=t,s=r,c=i);let l=s??a.active(),u=this.startSpan(e,o,l),d=(0,n.setSpan)(l,u);return a.with(d,c,void 0,u)}};function o(e){return typeof e==`object`&&!!e&&`spanId`in e&&typeof e.spanId==`string`&&`traceId`in e&&typeof e.traceId==`string`&&`traceFlags`in e&&typeof e.traceFlags==`number`}})),w=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ProxyTracer=void 0;let t=new(C()).NoopTracer;e.ProxyTracer=class{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}startSpan(e,t,n){return this._getTracer().startSpan(e,t,n)}startActiveSpan(e,t,n,r){let i=this._getTracer();return Reflect.apply(i.startActiveSpan,i,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):t}}})),T=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NoopTracerProvider=void 0;let t=C();e.NoopTracerProvider=class{getTracer(e,n,r){return new t.NoopTracer}}})),E=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ProxyTracerProvider=void 0;let t=w(),n=new(T()).NoopTracerProvider;e.ProxyTracerProvider=class{getTracer(e,n,r){return this.getDelegateTracer(e,n,r)??new t.ProxyTracer(this,e,n,r)}getDelegate(){return this._delegate??n}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,n){return this._delegate?.getTracer(e,t,n)}}})),D=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SamplingDecision=void 0,(function(e){e[e.NOT_RECORD=0]=`NOT_RECORD`,e[e.RECORD=1]=`RECORD`,e[e.RECORD_AND_SAMPLED=2]=`RECORD_AND_SAMPLED`})(e.SamplingDecision||={})})),O=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SpanKind=void 0,(function(e){e[e.INTERNAL=0]=`INTERNAL`,e[e.SERVER=1]=`SERVER`,e[e.CLIENT=2]=`CLIENT`,e[e.PRODUCER=3]=`PRODUCER`,e[e.CONSUMER=4]=`CONSUMER`})(e.SpanKind||={})})),k=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SpanStatusCode=void 0,(function(e){e[e.UNSET=0]=`UNSET`,e[e.OK=1]=`OK`,e[e.ERROR=2]=`ERROR`})(e.SpanStatusCode||={})})),A=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateValue=e.validateKey=void 0;let t=`[_0-9a-z-*/]`,n=RegExp(`^(?:${`[a-z]${t}{0,255}`}|${`[a-z0-9]${t}{0,240}@[a-z]${t}{0,13}`})$`),r=/^[ -~]{0,255}[!-~]$/,i=/,|=/;function a(e){return n.test(e)}e.validateKey=a;function o(e){return r.test(e)&&!i.test(e)}e.validateValue=o})),j=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TraceStateImpl=void 0;let t=A();e.TraceStateImpl=class e{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let n=this._clone();return n._internalState.has(e)&&n._internalState.delete(e),n._internalState.set(e,t),n}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return Array.from(this._internalState.keys()).reduceRight((e,t)=>(e.push(t+`=`+this.get(t)),e),[]).join(`,`)}_parse(e){e.length>512||(this._internalState=e.split(`,`).reduceRight((e,n)=>{let r=n.trim(),i=r.indexOf(`=`);if(i!==-1){let a=r.slice(0,i),o=r.slice(i+1,n.length);(0,t.validateKey)(a)&&(0,t.validateValue)(o)&&e.set(a,o)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let t=new e;return t._internalState=new Map(this._internalState),t}}})),M=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createTraceState=void 0;let t=j();function n(e){return new t.TraceStateImpl(e)}e.createTraceState=n})),N=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.context=void 0,e.context=_().ContextAPI.getInstance()})),P=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.diag=void 0,e.diag=s().DiagAPI.instance()})),F=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NOOP_METER_PROVIDER=e.NoopMeterProvider=void 0;let t=p();var n=class{getMeter(e,n,r){return t.NOOP_METER}};e.NoopMeterProvider=n,e.NOOP_METER_PROVIDER=new n})),I=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.MetricsAPI=void 0;let t=F(),n=r(),i=s(),a=`metrics`;e.MetricsAPI=class e{constructor(){}static getInstance(){return this._instance||=new e,this._instance}setGlobalMeterProvider(e){return(0,n.registerGlobal)(a,e,i.DiagAPI.instance())}getMeterProvider(){return(0,n.getGlobal)(a)||t.NOOP_METER_PROVIDER}getMeter(e,t,n){return this.getMeterProvider().getMeter(e,t,n)}disable(){(0,n.unregisterGlobal)(a,i.DiagAPI.instance())}}})),L=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.metrics=void 0,e.metrics=I().MetricsAPI.getInstance()})),R=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NoopTextMapPropagator=void 0,e.NoopTextMapPropagator=class{inject(e,t){}extract(e,t){return e}fields(){return[]}}})),z=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.deleteBaggage=e.setBaggage=e.getActiveBaggage=e.getBaggage=void 0;let t=_(),n=(0,d().createContextKey)(`OpenTelemetry Baggage Key`);function r(e){return e.getValue(n)||void 0}e.getBaggage=r;function i(){return r(t.ContextAPI.getInstance().active())}e.getActiveBaggage=i;function a(e,t){return e.setValue(n,t)}e.setBaggage=a;function o(e){return e.deleteValue(n)}e.deleteBaggage=o})),B=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.PropagationAPI=void 0;let t=r(),n=R(),i=h(),a=z(),o=u(),c=s(),l=`propagation`,d=new n.NoopTextMapPropagator;e.PropagationAPI=class e{constructor(){this.createBaggage=o.createBaggage,this.getBaggage=a.getBaggage,this.getActiveBaggage=a.getActiveBaggage,this.setBaggage=a.setBaggage,this.deleteBaggage=a.deleteBaggage}static getInstance(){return this._instance||=new e,this._instance}setGlobalPropagator(e){return(0,t.registerGlobal)(l,e,c.DiagAPI.instance())}inject(e,t,n=i.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,n)}extract(e,t,n=i.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,n)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,t.unregisterGlobal)(l,c.DiagAPI.instance())}_getGlobalPropagator(){return(0,t.getGlobal)(l)||d}}})),V=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.propagation=void 0,e.propagation=B().PropagationAPI.getInstance()})),H=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TraceAPI=void 0;let t=r(),n=E(),i=S(),a=x(),o=s(),c=`trace`;e.TraceAPI=class e{constructor(){this._proxyTracerProvider=new n.ProxyTracerProvider,this.wrapSpanContext=i.wrapSpanContext,this.isSpanContextValid=i.isSpanContextValid,this.deleteSpan=a.deleteSpan,this.getSpan=a.getSpan,this.getActiveSpan=a.getActiveSpan,this.getSpanContext=a.getSpanContext,this.setSpan=a.setSpan,this.setSpanContext=a.setSpanContext}static getInstance(){return this._instance||=new e,this._instance}setGlobalTracerProvider(e){let n=(0,t.registerGlobal)(c,this._proxyTracerProvider,o.DiagAPI.instance());return n&&this._proxyTracerProvider.setDelegate(e),n}getTracerProvider(){return(0,t.getGlobal)(c)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,t.unregisterGlobal)(c,o.DiagAPI.instance()),this._proxyTracerProvider=new n.ProxyTracerProvider}}})),U=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.trace=void 0,e.trace=H().TraceAPI.getInstance()})),W=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=u();Object.defineProperty(e,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return t.baggageEntryMetadataFromString}});var n=d();Object.defineProperty(e,"createContextKey",{enumerable:!0,get:function(){return n.createContextKey}}),Object.defineProperty(e,"ROOT_CONTEXT",{enumerable:!0,get:function(){return n.ROOT_CONTEXT}});var r=f();Object.defineProperty(e,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var i=a();Object.defineProperty(e,"DiagLogLevel",{enumerable:!0,get:function(){return i.DiagLogLevel}});var o=p();Object.defineProperty(e,"createNoopMeter",{enumerable:!0,get:function(){return o.createNoopMeter}});var s=m();Object.defineProperty(e,"ValueType",{enumerable:!0,get:function(){return s.ValueType}});var c=h();Object.defineProperty(e,"defaultTextMapGetter",{enumerable:!0,get:function(){return c.defaultTextMapGetter}}),Object.defineProperty(e,"defaultTextMapSetter",{enumerable:!0,get:function(){return c.defaultTextMapSetter}});var l=w();Object.defineProperty(e,"ProxyTracer",{enumerable:!0,get:function(){return l.ProxyTracer}});var g=E();Object.defineProperty(e,"ProxyTracerProvider",{enumerable:!0,get:function(){return g.ProxyTracerProvider}});var _=D();Object.defineProperty(e,"SamplingDecision",{enumerable:!0,get:function(){return _.SamplingDecision}});var b=O();Object.defineProperty(e,"SpanKind",{enumerable:!0,get:function(){return b.SpanKind}});var x=k();Object.defineProperty(e,"SpanStatusCode",{enumerable:!0,get:function(){return x.SpanStatusCode}});var C=v();Object.defineProperty(e,"TraceFlags",{enumerable:!0,get:function(){return C.TraceFlags}});var T=M();Object.defineProperty(e,"createTraceState",{enumerable:!0,get:function(){return T.createTraceState}});var A=S();Object.defineProperty(e,"isSpanContextValid",{enumerable:!0,get:function(){return A.isSpanContextValid}}),Object.defineProperty(e,"isValidTraceId",{enumerable:!0,get:function(){return A.isValidTraceId}}),Object.defineProperty(e,"isValidSpanId",{enumerable:!0,get:function(){return A.isValidSpanId}});var j=y();Object.defineProperty(e,"INVALID_SPANID",{enumerable:!0,get:function(){return j.INVALID_SPANID}}),Object.defineProperty(e,"INVALID_TRACEID",{enumerable:!0,get:function(){return j.INVALID_TRACEID}}),Object.defineProperty(e,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return j.INVALID_SPAN_CONTEXT}});let F=N();Object.defineProperty(e,"context",{enumerable:!0,get:function(){return F.context}});let I=P();Object.defineProperty(e,"diag",{enumerable:!0,get:function(){return I.diag}});let R=L();Object.defineProperty(e,"metrics",{enumerable:!0,get:function(){return R.metrics}});let z=V();Object.defineProperty(e,"propagation",{enumerable:!0,get:function(){return z.propagation}});let B=U();Object.defineProperty(e,"trace",{enumerable:!0,get:function(){return B.trace}}),e.default={context:F.context,diag:I.diag,metrics:R.metrics,propagation:z.propagation,trace:B.trace}}));export{W as t};