eve 0.66.3 → 0.67.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 (287) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/src/channel/channel-address.d.ts +0 -2
  3. package/dist/src/channel/channel-address.js +1 -1
  4. package/dist/src/channel/channel-operations.d.ts +0 -5
  5. package/dist/src/channel/channel-operations.js +1 -1
  6. package/dist/src/channel/compiled-channel.d.ts +8 -0
  7. package/dist/src/channel/compiled-channel.js +2 -2
  8. package/dist/src/channel/conversation-context.js +1 -1
  9. package/dist/src/channel/routes.d.ts +1 -2
  10. package/dist/src/channel/schedule.d.ts +2 -2
  11. package/dist/src/channel/schedule.js +1 -1
  12. package/dist/src/channel/types.d.ts +8 -13
  13. package/dist/src/chunks/{use-eve-agent-PbSMyJ6e.js → use-eve-agent-DzdyI97Z.js} +0 -5
  14. package/dist/src/chunks/{use-eve-agent-Di1u2zKu.js → use-eve-agent-OCHP4s0z.js} +0 -5
  15. package/dist/src/cli/acp/command.js +3 -3
  16. package/dist/src/cli/commands/logs.d.ts +3 -3
  17. package/dist/src/cli/commands/logs.js +1 -1
  18. package/dist/src/cli/commands/register-integration-commands.js +1 -1
  19. package/dist/src/cli/commands/trace.js +1 -1
  20. package/dist/src/cli/dev/command.d.ts +9 -5
  21. package/dist/src/cli/dev/command.js +1 -3
  22. package/dist/src/cli/dev/run-interactive-ui.d.ts +0 -1
  23. package/dist/src/cli/dev/run-interactive-ui.js +1 -1
  24. package/dist/src/cli/dev/tui/blocks.js +1 -1
  25. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  26. package/dist/src/cli/dev/tui/question-panel.d.ts +4 -4
  27. package/dist/src/cli/dev/tui/question-panel.js +1 -1
  28. package/dist/src/cli/dev/tui/runner.js +2 -2
  29. package/dist/src/cli/dev/tui/terminal-renderer.js +8 -9
  30. package/dist/src/cli/dev/tui/theme.d.ts +1 -1
  31. package/dist/src/cli/dev/url-target.js +1 -1
  32. package/dist/src/cli/invoke/command.d.ts +2 -5
  33. package/dist/src/cli/invoke/command.js +1 -1
  34. package/dist/src/cli/invoke/invoke.d.ts +2 -2
  35. package/dist/src/cli/invoke/invoke.js +1 -1
  36. package/dist/src/cli/invoke/result.d.ts +14 -194
  37. package/dist/src/cli/invoke/result.js +1 -1
  38. package/dist/src/cli/run.d.ts +0 -4
  39. package/dist/src/cli/run.js +2 -2
  40. package/dist/src/cli/telemetry/index.js +1 -1
  41. package/dist/src/client/message-reducer.js +1 -1
  42. package/dist/src/compiled/.vendor-stamp.json +1 -1
  43. package/dist/src/compiler/compile-from-memory.d.ts +0 -1
  44. package/dist/src/compiler/compile-from-memory.js +1 -1
  45. package/dist/src/compiler/extension-compatibility.d.ts +25 -18
  46. package/dist/src/compiler/extension-compatibility.js +1 -1
  47. package/dist/src/compiler/manifest.d.ts +48 -14
  48. package/dist/src/compiler/manifest.js +1 -1
  49. package/dist/src/compiler/normalize-agent-config.js +1 -1
  50. package/dist/src/compiler/normalize-channel.js +1 -1
  51. package/dist/src/compiler/normalize-connection.js +1 -1
  52. package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
  53. package/dist/src/compiler/normalize-subagent.d.ts +0 -2
  54. package/dist/src/compiler/normalize-subagent.js +1 -1
  55. package/dist/src/compiler/remote-agent-node.d.ts +0 -2
  56. package/dist/src/compiler/remote-agent-node.js +1 -1
  57. package/dist/src/compiler/workspace-resources.js +1 -1
  58. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  59. package/dist/src/context/keys.d.ts +0 -3
  60. package/dist/src/context/keys.js +1 -1
  61. package/dist/src/context/memory-lifecycle.d.ts +1 -0
  62. package/dist/src/context/memory-lifecycle.js +1 -1
  63. package/dist/src/discover/project.js +1 -1
  64. package/dist/src/eve-channel/create-request.d.ts +0 -3
  65. package/dist/src/eve-channel/create-request.js +1 -1
  66. package/dist/src/eve-channel/index.js +1 -1
  67. package/dist/src/eve-channel/request.js +1 -1
  68. package/dist/src/eve-channel/types.d.ts +1 -1
  69. package/dist/src/execution/delegated-session-context.d.ts +2 -0
  70. package/dist/src/execution/delegated-session-context.js +1 -0
  71. package/dist/src/execution/dynamic-connections.d.ts +4 -1
  72. package/dist/src/execution/dynamic-connections.js +1 -1
  73. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  74. package/dist/src/execution/effective-agent-config.js +1 -1
  75. package/dist/src/execution/legacy-session/input.d.ts +0 -2
  76. package/dist/src/execution/legacy-session/input.js +1 -1
  77. package/dist/src/execution/legacy-session/prepare-step.d.ts +0 -1
  78. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  79. package/dist/src/execution/node-step.d.ts +4 -2
  80. package/dist/src/execution/node-step.js +1 -1
  81. package/dist/src/execution/proxied-deliver-step.js +1 -1
  82. package/dist/src/execution/publish-channel-event.d.ts +23 -0
  83. package/dist/src/execution/publish-channel-event.js +1 -0
  84. package/dist/src/execution/runtime-context.js +1 -1
  85. package/dist/src/execution/session/entry.js +1 -1
  86. package/dist/src/execution/session/event-sink.d.ts +1 -1
  87. package/dist/src/execution/session/event-sink.js +1 -1
  88. package/dist/src/execution/session/finalization.d.ts +1 -4
  89. package/dist/src/execution/session/finalization.js +1 -1
  90. package/dist/src/execution/session/handoff.d.ts +1 -3
  91. package/dist/src/execution/session/handoff.js +1 -1
  92. package/dist/src/execution/session/input-queue.d.ts +0 -1
  93. package/dist/src/execution/session/input-queue.js +1 -1
  94. package/dist/src/execution/session/next-input.d.ts +0 -1
  95. package/dist/src/execution/session/next-input.js +1 -1
  96. package/dist/src/execution/session/program.d.ts +0 -3
  97. package/dist/src/execution/session/program.js +1 -1
  98. package/dist/src/execution/session/turn-step-result.d.ts +1 -2
  99. package/dist/src/execution/session/turn-step-result.js +1 -1
  100. package/dist/src/execution/session/turn-step.js +1 -1
  101. package/dist/src/execution/session/turn.d.ts +2 -2
  102. package/dist/src/execution/session/turn.js +1 -1
  103. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  104. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  105. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  106. package/dist/src/execution/tools/agent-router.d.ts +0 -2
  107. package/dist/src/execution/tools/agent-router.js +1 -1
  108. package/dist/src/execution/tools/ask-question-workflow.js +1 -1
  109. package/dist/src/execution/tools/connection-search.d.ts +1 -0
  110. package/dist/src/execution/tools/connection-search.js +1 -1
  111. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  112. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
  113. package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -1
  114. package/dist/src/extensions/code/extension/lib/github-shell.js +1 -1
  115. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
  116. package/dist/src/framework/sources/registry.js +1 -1
  117. package/dist/src/harness/approval-delivery-coordinator.d.ts +3 -13
  118. package/dist/src/harness/approval-delivery-coordinator.js +1 -1
  119. package/dist/src/harness/emission.d.ts +2 -3
  120. package/dist/src/harness/emission.js +1 -1
  121. package/dist/src/harness/input-request-resolution.d.ts +2 -0
  122. package/dist/src/harness/input-request-resolution.js +1 -1
  123. package/dist/src/harness/input-requests.d.ts +3 -3
  124. package/dist/src/harness/input-requests.js +1 -1
  125. package/dist/src/harness/pending-input-batches.d.ts +3 -3
  126. package/dist/src/harness/pending-input-batches.js +1 -1
  127. package/dist/src/harness/proxy-input-requests.d.ts +2 -0
  128. package/dist/src/harness/proxy-input-requests.js +1 -1
  129. package/dist/src/harness/session-limit-enforcement.d.ts +2 -3
  130. package/dist/src/harness/session-limit-enforcement.js +1 -1
  131. package/dist/src/harness/tool-loop.js +2 -2
  132. package/dist/src/harness/tools.js +1 -1
  133. package/dist/src/harness/types.d.ts +11 -13
  134. package/dist/src/instrumentation/session-context.js +1 -1
  135. package/dist/src/instrumentation/session-init.js +1 -1
  136. package/dist/src/internal/application/package.js +1 -1
  137. package/dist/src/internal/authored-definition/core.js +1 -1
  138. package/dist/src/internal/authored-module-loader.js +1 -2
  139. package/dist/src/internal/authored-package-boundary.d.ts +0 -1
  140. package/dist/src/internal/authored-package-boundary.js +1 -1
  141. package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
  142. package/dist/src/internal/external-resources-snapshot.d.ts +46 -0
  143. package/dist/src/internal/external-resources-snapshot.js +1 -0
  144. package/dist/src/internal/external-resources.d.ts +20 -0
  145. package/dist/src/internal/external-resources.js +1 -0
  146. package/dist/src/internal/invocation/workflow-execution.d.ts +0 -2
  147. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  148. package/dist/src/internal/nitro/host/build-application.js +1 -1
  149. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  150. package/dist/src/internal/nitro/host/instrumentation-entry.d.ts +3 -0
  151. package/dist/src/internal/nitro/host/instrumentation-entry.js +2 -0
  152. package/dist/src/internal/nitro/host/start-development-server.d.ts +0 -8
  153. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  154. package/dist/src/internal/nitro/host.d.ts +1 -1
  155. package/dist/src/internal/nitro/host.js +1 -1
  156. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  157. package/dist/src/internal/nitro/routes/index.js +72 -3
  158. package/dist/src/node_modules/.pnpm/{@vercel_cli-config@0.2.7 → @vercel_cli-config@0.3.0}/node_modules/@vercel/cli-config/dist/index.js +1 -1
  159. package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/authorization.js +1 -1
  160. package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/connector.js +1 -0
  161. package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/installation.js +1 -1
  162. package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/token.js +1 -1
  163. package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-util.js +1 -1
  164. package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token.js +1 -1
  165. package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/version.js +1 -1
  166. package/dist/src/protocol/message.d.ts +4 -0
  167. package/dist/src/protocol/message.js +1 -1
  168. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +0 -1
  169. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
  170. package/dist/src/public/channels/mcp.js +1 -1
  171. package/dist/src/public/channels/slack/app-manifest.d.ts +9 -0
  172. package/dist/src/public/channels/slack/app-manifest.js +1 -0
  173. package/dist/src/public/channels/slack/inbound-content.js +6 -3
  174. package/dist/src/public/channels/slack/slackChannel.d.ts +4 -1
  175. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  176. package/dist/src/public/definitions/remote-agent.d.ts +0 -9
  177. package/dist/src/public/definitions/workspace-agent.d.ts +0 -3
  178. package/dist/src/public/definitions/workspace-agent.js +1 -1
  179. package/dist/src/runtime/agent/bootstrap.d.ts +0 -1
  180. package/dist/src/runtime/agent/bootstrap.js +1 -1
  181. package/dist/src/runtime/connections/mcp-client.js +1 -1
  182. package/dist/src/runtime/connections/mcp-tracing.d.ts +27 -0
  183. package/dist/src/runtime/connections/mcp-tracing.js +1 -0
  184. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  185. package/dist/src/runtime/resolve-agent.js +1 -1
  186. package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +0 -2
  187. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  188. package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +0 -2
  189. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  190. package/dist/src/runtime/types.d.ts +1 -2
  191. package/dist/src/services/dev-client/vercel-auth-error.d.ts +1 -1
  192. package/dist/src/setup/scaffold/create/project.js +1 -1
  193. package/dist/src/setup/verified-remote-agent.d.ts +1 -0
  194. package/dist/src/setup/verified-remote-agent.js +1 -1
  195. package/dist/src/shared/action-types.d.ts +2 -2
  196. package/dist/src/shared/agent-definition.d.ts +0 -9
  197. package/dist/src/shared/agent-turn-outcome.d.ts +1 -1
  198. package/dist/src/shared/channel-definition.d.ts +2 -2
  199. package/dist/src/shared/conversation-context.d.ts +0 -4
  200. package/dist/src/shared/conversation-context.js +1 -1
  201. package/dist/src/shared/validate-authorization.js +1 -1
  202. package/dist/src/shared/vercel-connect-metadata.d.ts +12 -0
  203. package/dist/src/shared/vercel-connect-metadata.js +1 -0
  204. package/dist/src/subagents/agent-handle-errors.d.ts +0 -4
  205. package/dist/src/subagents/agent-handle-errors.js +1 -1
  206. package/dist/src/subagents/callback-route.js +1 -1
  207. package/dist/src/subagents/callback-step.d.ts +0 -22
  208. package/dist/src/subagents/callback-step.js +1 -1
  209. package/dist/src/subagents/event-proxy-step.js +1 -1
  210. package/dist/src/subagents/hitl-proxy.d.ts +3 -5
  211. package/dist/src/subagents/hitl-proxy.js +1 -1
  212. package/dist/src/subagents/invocation.d.ts +5 -6
  213. package/dist/src/subagents/parent-notification.d.ts +1 -18
  214. package/dist/src/subagents/parent-notification.js +1 -1
  215. package/dist/src/subagents/remote-dispatch.js +1 -1
  216. package/dist/src/subagents/tool.d.ts +0 -3
  217. package/dist/src/subagents/tool.js +1 -1
  218. package/dist/src/svelte/index.js +1 -1
  219. package/dist/src/svelte/use-eve-agent.js +1 -1
  220. package/dist/src/tools/framework/agent-contract.d.ts +0 -2
  221. package/dist/src/tools/framework/agent-contract.js +1 -1
  222. package/dist/src/tracing/agent-action-instrumentation.js +1 -1
  223. package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
  224. package/dist/src/tracing/agent-memory-instrumentation.js +1 -1
  225. package/dist/src/tracing/agent-otel-provider.js +2 -2
  226. package/dist/src/tracing/agent-otel-session-context.js +1 -1
  227. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  228. package/dist/src/tracing/agent-tool-span-context.d.ts +15 -0
  229. package/dist/src/tracing/agent-tool-span-context.js +1 -0
  230. package/dist/src/tracing/otel-declaration.d.ts +4 -9
  231. package/dist/src/vue/index.js +1 -1
  232. package/dist/src/vue/use-eve-agent.js +1 -1
  233. package/docs/agent-config.md +12 -13
  234. package/docs/channels/chat-sdk.mdx +1 -1
  235. package/docs/channels/custom.mdx +1 -1
  236. package/docs/channels/eve.mdx +4 -4
  237. package/docs/channels/mcp.mdx +10 -10
  238. package/docs/channels/slack.mdx +1 -1
  239. package/docs/concepts/sessions-runs-and-streaming.md +5 -6
  240. package/docs/connections/overview.mdx +22 -0
  241. package/docs/guides/deployment/overview.md +1 -1
  242. package/docs/guides/deployment/self-hosting.md +1 -1
  243. package/docs/guides/deployment/vercel.mdx +2 -2
  244. package/docs/guides/dev-tui.md +6 -6
  245. package/docs/guides/dynamic-capabilities.md +2 -2
  246. package/docs/guides/frontend/overview.mdx +5 -3
  247. package/docs/guides/hooks.md +4 -2
  248. package/docs/guides/instrumentation/agent-runs.mdx +7 -7
  249. package/docs/guides/instrumentation/instrumentation.mdx +22 -5
  250. package/docs/guides/instrumentation/otel.mdx +30 -0
  251. package/docs/guides/remote-agents.md +3 -4
  252. package/docs/guides/self-modification.md +1 -1
  253. package/docs/memory/custom-provider.md +1 -1
  254. package/docs/protocols/acp.md +1 -1
  255. package/docs/reference/cli.md +91 -97
  256. package/docs/schedules.mdx +4 -5
  257. package/docs/subagents/index.mdx +5 -7
  258. package/docs/tools/human-in-the-loop.md +4 -0
  259. package/docs/tools/overview.mdx +2 -0
  260. package/docs/tools/workflows.mdx +1 -1
  261. package/docs/tutorial/remember-definitions.mdx +1 -1
  262. package/docs/tutorial/ship-it.mdx +1 -1
  263. package/package.json +3 -2
  264. package/dist/src/cli/commands/channels.d.ts +0 -9
  265. package/dist/src/cli/commands/channels.js +0 -1
  266. package/dist/src/execution/effective-output-schema.d.ts +0 -22
  267. package/dist/src/execution/effective-output-schema.js +0 -1
  268. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff/node_modules/@vercel/connect/dist/connector.js +0 -1
  269. package/dist/src/shared/run-mode.d.ts +0 -7
  270. package/dist/src/shared/run-mode.js +0 -1
  271. package/dist/src/subagents/parent-result.d.ts +0 -14
  272. package/dist/src/subagents/parent-result.js +0 -1
  273. /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/index.js +0 -0
  274. /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/base-url.js +0 -0
  275. /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/default-scopes.js +0 -0
  276. /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/env.js +0 -0
  277. /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_3fe44d656b2dcd93a04011e80966afff → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/url-validation.js +0 -0
  278. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/auth-errors.js +0 -0
  279. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -0
  280. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-context.js +0 -0
  281. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -0
  282. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -0
  283. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/index.js +0 -0
  284. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/oauth.js +0 -0
  285. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-error.js +0 -0
  286. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-io.js +0 -0
  287. /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -0
@@ -51,6 +51,11 @@ export default defineInstrumentation({
51
51
  `ctx.state` is JSON storage scoped to this file and operation. It survives
52
52
  durable suspension and is released after the terminal event.
53
53
 
54
+ Use `setup` for asynchronous initialization. In `eve dev` and built servers,
55
+ eve awaits every provider's setup before loading the server entry. A setup
56
+ failure stops startup. Modules imported by an instrumentation file load before
57
+ setup, so keep dependencies that need initialization out of those imports.
58
+
54
59
  ## Control inputs and outputs
55
60
 
56
61
  Each lifecycle file created with `defineInstrumentation(...)` has an
@@ -78,8 +83,8 @@ export default defineInstrumentation({
78
83
  });
79
84
  ```
80
85
 
81
- The function receives `agentName`, `channel`, `audience`, `mode`,
82
- `environment`, and `principalType`. `audience` is `"public"`, `"private"`, or
86
+ The function receives `agentName`, `channel`, `audience`, `environment`, and
87
+ `principalType`. `audience` is `"public"`, `"private"`, or
83
88
  `"unknown"`; `environment` is `"development"`, `"preview"`, or
84
89
  `"production"`.
85
90
 
@@ -146,9 +151,21 @@ Prefer `recordInputs: false` or `recordOutputs: false` when the destination does
146
151
 
147
152
  ## Lifecycle events
148
153
 
149
- Instrumentation can handle session, channel delivery, turn, model attempt,
150
- model call, action, input request, and tool call events. Start and terminal
151
- events share an `idempotencyKey`, which can serve as a destination row ID.
154
+ `defineInstrumentation({ events })` supports the following event names. A
155
+ start and its terminal event share an `idempotencyKey`; use it as a stable
156
+ operation key when upserting records across replays.
157
+
158
+ | Lifecycle | Events | Meaning |
159
+ | ---------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
160
+ | Session | `session.started`, `session.waiting`, `session.completed`, `session.failed` | Track a session from creation through suspension or termination. `session.waiting` is resumable; `session.completed` and `session.failed` are terminal. |
161
+ | Turn | `turn.started`, `turn.completed`, `turn.cancelled`, `turn.failed` | Track one turn. Cancellation is not a failure and commonly leaves the session waiting for another turn. |
162
+ | Channel delivery | `channel.delivery.started`, `channel.delivery.completed`, `channel.delivery.cancelled`, `channel.delivery.failed` | Track an inbound channel delivery while eve processes its turn. These events are emitted when the channel provides delivery metadata. |
163
+ | Step attempt | `step.attempt.started`, `step.attempt.completed`, `step.attempt.failed`, `step.attempt.metadata` | Track each model-step attempt; retries have separate attempts. `step.attempt.metadata` is emitted after a step only when the AI SDK supplies provider metadata. |
164
+ | Model call | `model.call.started`, `model.call.completed`, `model.call.failed` | Track an individual call to the model provider. Completion includes usage and finish reason; content fields follow the trace policy. |
165
+ | Action | `action.started`, `action.completed`, `action.failed` | Track eve's durable dispatch of a tool, skill load, local subagent, or remote agent. A failed event's `outcome` distinguishes failure, rejection, cancellation, and abandonment. |
166
+ | Tool call | `tool.call.started`, `tool.call.completed`, `tool.call.failed` | Track the AI SDK's in-process tool execution boundary, including its input and result when allowed by the trace policy. |
167
+ | User input | `input.requested`, `input.resolved` | Track a question, tool approval, or session-limit request and its resolution. The resolution includes an outcome such as `answered`, `approved`, `denied`, or `cancelled`. |
168
+ | Memory operation | `memory.operation.started`, `memory.operation.completed`, `memory.operation.failed` | Track a memory-store search or write. Events include the operation name, phase, and memory slot; completion may include a record count and records. |
152
169
 
153
170
  An ordinary tool emits both `action.*` and `tool.call.*` events. Use `action.*` for eve's durable dispatch lifecycle, including tools, skills, subagents, and remote agents. Use `tool.call.*` only when you need the AI SDK's in-process tool execution boundary.
154
171
 
@@ -38,6 +38,36 @@ does not affect lifecycle instrumentation created with `defineInstrumentation()`
38
38
  See [Audience](../channels/overview#audience) for how channels classify the
39
39
  conversation passed to this policy.
40
40
 
41
+ ## Instrument Node.js dependencies
42
+
43
+ Pass OpenTelemetry instrumentation instances to `otel({ instrumentations })`.
44
+ For example, install the PostgreSQL instrumentation alongside `pg`:
45
+
46
+ ```bash
47
+ pnpm add pg @opentelemetry/instrumentation-pg
48
+ ```
49
+
50
+ ```ts title="agent/instrumentation/otel.ts"
51
+ import { PgInstrumentation } from "@opentelemetry/instrumentation-pg";
52
+ import { otel } from "eve/instrumentation/otel";
53
+
54
+ export default otel({
55
+ instrumentations: [new PgInstrumentation()],
56
+ });
57
+ ```
58
+
59
+ Keep the instrumented package external so Node.js module hooks can intercept
60
+ it. Add `pg` to your agent's [build configuration](/docs/agent-config#other-defineagent-fields):
61
+
62
+ ```ts title="agent/agent.ts"
63
+ import { defineAgent } from "eve";
64
+
65
+ export default defineAgent({
66
+ model: "openai/gpt-5.4-mini",
67
+ build: { externalDependencies: ["pg"] },
68
+ });
69
+ ```
70
+
41
71
  ## Add an OpenTelemetry destination
42
72
 
43
73
  Use this section when sending traces to a third-party destination. Install
@@ -28,7 +28,6 @@ export default defineRemoteAgent({
28
28
  | `forwardPrincipal` | `boolean` | No | `false` | Forward the dispatching turn's session principal to the remote deployment (see [Forwarding the caller identity](#forwarding-the-caller-identity)). |
29
29
  | `headers` | `HeadersValue` | No | none | Static or lazily resolved request headers. |
30
30
  | `path` | `string` | No | `/eve/v1/session` | Route appended to `url` for the create-session request. |
31
- | `outputSchema` | `StandardSchema \| JSON Schema` | No | none | Structured return type for the first turn of each fresh remote session. A continuation may provide its own per-call schema. |
32
31
  | `tool` | `boolean` | No | `true` | Expose the remote agent as a tool to the parent model. Set `false` to allow only `ctx.agent()` calls from authored workflow tools. |
33
32
 
34
33
  ## Dynamic remote agents
@@ -81,9 +80,9 @@ The function may be async and must return a non-empty string. `auth` and `header
81
80
 
82
81
  ## Calling a remote agent
83
82
 
84
- By default, a remote agent is another subagent tool to the model. The model calls it the same way it calls a local subagent, with a `message` and an optional `outputSchema`. Set `tool: false` when an authored workflow tool should be the only model-facing routing surface; the workflow can still call the remote agent by its path-derived name through `ctx.agent()`. The message must carry the full task, including any context the remote agent needs, because it never receives the parent's conversation history.
83
+ By default, a remote agent is another subagent tool to the model. The model calls it the same way it calls a local subagent, with a `message` and an optional `agentId`. Set `tool: false` when an authored workflow tool should be the only model-facing routing surface; the workflow can still call the remote agent by its path-derived name through `ctx.agent()`. The message must carry the full task, including any context the remote agent needs, because it never receives the parent's conversation history.
85
84
 
86
- To require structured output, set an `outputSchema` on the agent definition for fresh delegations or on an individual call for that turn. The structured value arrives in the task's completion notification, and the remote child remains available for follow-up messages. See [Subagents](../subagents) for continuation behavior.
85
+ To require structured output, call the remote agent from an authored workflow tool with `ctx.agent(name, { message, outputSchema })`. The schema applies to that turn, the structured value is the call's result, and the remote child remains available for follow-up messages. See [Subagents](../subagents) for continuation behavior.
87
86
 
88
87
  ## Outbound auth
89
88
 
@@ -200,7 +199,7 @@ You can also steer a running remote background child by calling its subagent too
200
199
 
201
200
  When the parent session ends, eve sends an authenticated `POST /eve/v1/session/:childSessionId/reset` for each remote child. Reset retires the parked remote session and recursively cleans up its descendants. The request uses freshly resolved `headers` and `auth`; failures are logged so an unreachable remote cannot block parent finalization.
202
201
 
203
- A failed _start_ rejects admission before a task receipt is returned. After a remote starts, a terminal failure callback fails the task and notifies the parent with the remote's error (or `REMOTE_AGENT_FAILED` when none is supplied). Terminal callback delivery runs as a durable step on the underlying workflow engine (see [Execution model & durability](../concepts/execution-model-and-durability)). A failed callback POST is rethrown rather than marking the task complete, so the engine retries it.
202
+ A failed _start_ rejects admission before a task receipt is returned. After a remote starts, a terminal failure callback fails the task and notifies the parent with the remote's error. Terminal callback delivery runs as a durable step on the underlying workflow engine (see [Execution model & durability](../concepts/execution-model-and-durability)). A failed callback POST is rethrown rather than marking the task complete, so the engine retries it.
204
203
 
205
204
  ## What to read next
206
205
 
@@ -3,7 +3,7 @@ title: "Self-Modification"
3
3
  description: "Ask your agent to update its own instructions, tools, skills, and other authored files during local development."
4
4
  ---
5
5
 
6
- When `eve dev` starts a local server, it mounts the bundled self-modification extension by default. Ask your agent to change its instructions, tools, skills, or other files under `agent/`; eve delegates the source work to the `self-modification__agent` subagent. Connecting to an existing server with `eve dev <url>` does not add the bundled extension to that server.
6
+ When `eve dev` starts a local server, it mounts the bundled self-modification extension by default. Ask your agent to change its instructions, tools, skills, or other files under `agent/`; eve delegates the source work to the `self-modification__agent` subagent. Connecting to an existing server with `eve remote connect --url <url>` does not add the bundled extension to that server.
7
7
 
8
8
  The bundled extension is for local development and is not included in production builds.
9
9
 
@@ -95,7 +95,7 @@ Every handler receives a `MemoryOperationContext`:
95
95
  | `memory.scope.value` | The resolved scope string or tuple |
96
96
  | `memory.slot` | The path-derived slot name |
97
97
  | `messages` | Projected conversation history for this phase |
98
- | `operationId` | Stable per session, sequence, phase, and slot. Use it as an idempotency key. |
98
+ | `operationId` | Stable per session, turn, step, phase, and slot. Use it as an idempotency key. |
99
99
  | `abortSignal` | Cancellation for the operation |
100
100
  | `session` | Session ID, authentication, and other `SessionContext` fields |
101
101
 
@@ -12,7 +12,7 @@ eve acp
12
12
  Without a URL, the client starts one process from the eve application root. It supervises a local development server, and closing the ACP connection stops that owned server. To bridge ACP to a deployed eve agent, pass its URL:
13
13
 
14
14
  ```sh
15
- eve acp https://agent.example.com
15
+ eve acp --url https://agent.example.com
16
16
  ```
17
17
 
18
18
  For a recognized Vercel deployment, eve verifies the exact origin and resolves a short-lived project-scoped OIDC token from the local Vercel session. Remote access requires an existing authorized Vercel session; account login runs during local deployment. Configure required Trusted Sources access in the target project before launching ACP. `VERCEL_AUTOMATION_BYPASS_SECRET` remains available for deployments configured with a Protection Bypass for Automation token.
@@ -1,37 +1,30 @@
1
1
  ---
2
2
  title: "CLI"
3
- description: "Reference for every eve CLI command: init, set, info, build, start, dev, logs, traces, link, deploy, eval, channels, extension, and telemetry."
3
+ description: "Reference for every eve CLI command."
4
4
  ---
5
5
 
6
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
 
10
- | Command | Description |
11
- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
12
- | `eve` | Initialize the current directory, or start development when it is already an eve project |
13
- | `eve init [target]` | Create a new agent, or add an agent to an existing project |
14
- | `eve info` | Print the resolved application, including static instructions and discovered capabilities, routes, artifact paths, and diagnostics |
15
- | `eve build` | Compile `.eve/` artifacts and build the host output; prints the output directory |
16
- | `eve start` | Serve the built `.output/` app; prints the listening URL |
17
- | `eve dev` | Start the local dev server and open the terminal UI |
18
- | `eve dev <url>` | Connect the UI to an existing server URL (e.g. a remote deployment) instead of booting a local server |
19
- | `eve acp [url]` | Serve the local application or an existing eve server URL as a stable ACP v1 agent over stdio |
20
- | `eve logs [logid]` | Print an `eve dev` diagnostic log (the most recent when `logid` is omitted) |
21
- | `eve logs ls` | List `eve dev` diagnostic logs, most recent first |
22
- | `eve traces ls` | List locally captured agent traces, most recent first |
23
- | `eve traces [trace]` | Show a local span tree (the most recent when omitted) |
24
- | `eve telemetry <command>` | Show, enable, or disable CLI telemetry collection |
25
- | `eve link` | Link the directory to a Vercel project and pull AI Gateway credentials |
26
- | `eve deploy` | Deploy the agent to Vercel production (links first if needed) |
27
- | `eve eval` | Run evals against the local app or a remote target |
28
- | `eve channels list` | List user-authored channels |
29
- | `eve extension init [target]` | Create a new extension package |
30
- | `eve extension build` | Build the current package as an extension |
31
- | `eve set` | Change the root agent's model and reasoning effort |
32
- | `eve add <item>` | Install an item from the official or a configured shadcn registry |
33
- | `eve integration setup <kind>` | Run a built-in setup flow directly after its registry files are installed |
34
- | `eve registry <command>` | Add sources and list, search, or view registry catalog items |
10
+ | Command | Description |
11
+ | ---------------------------------------------- | ------------------------------------------------------ |
12
+ | `eve init [target]` | Create a new agent, or add one to an existing project |
13
+ | `eve dev` | Start the local development server and terminal UI |
14
+ | `eve remote connect --url <url>` | Open the terminal UI for an existing agent |
15
+ | `eve remote invoke --url <url> [prompt]` | Invoke an existing agent without a terminal UI |
16
+ | `eve remote info --url <url>` | Inspect an existing agent |
17
+ | `eve acp [url]` | Serve a local or existing agent through ACP over stdio |
18
+ | `eve info` | Inspect the local application |
19
+ | `eve set model [model] [--reasoning <effort>]` | Change model and reasoning settings |
20
+ | `eve build` / `eve start` | Build or serve the application |
21
+ | `eve logs show [logid]` / `eve logs list` | Inspect local diagnostic logs |
22
+ | `eve traces show [trace]` / `eve traces list` | Inspect local traces |
23
+ | `eve link` / `eve deploy` | Link or deploy a Vercel project |
24
+ | `eve eval` | Run evals against a local or remote target |
25
+ | `eve add [item]` / `eve registry <command>` | Install and browse registry items |
26
+ | `eve extension <command>` | Create and build extension packages |
27
+ | `eve telemetry <command>` | Manage CLI telemetry collection |
35
28
 
36
29
  When `eve build` fails on discovery errors, it prints the full diagnostics report (severity, message, source path) and the diagnostics artifact path.
37
30
 
@@ -101,19 +94,19 @@ Builds the complete agent-shaped extension tree into its configured dist root, e
101
94
  Change the root agent's AI Gateway model and reasoning effort without opening the dev TUI:
102
95
 
103
96
  ```bash
104
- eve set \
105
- --model openai/gpt-6-sol \
106
- --reasoning high
97
+ eve set model openai/gpt-6-sol --reasoning high
98
+ eve set model --reasoning medium
107
99
  ```
108
100
 
109
- Pass either flag by itself to change one setting. When you pass both, eve writes
110
- them to `agent/agent.ts` in one source edit. `--reasoning` accepts
101
+ Use `eve set model` to change the model, its reasoning effort, or both. Omit
102
+ the optional model argument to keep the current model. When you set both, eve
103
+ writes them to `agent/agent.ts` in one source edit. `--reasoning` accepts
111
104
  `provider-default`, `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`;
112
105
  `provider-default` removes the authored `reasoning` field.
113
106
 
114
107
  The command uses the same model ID validation and source editor as `/model` in
115
- the local dev TUI. It does not configure model credentials. The `--model` flag
116
- cannot rewrite models defined with `defineDynamic`, an environment expression,
108
+ the local dev TUI. It does not configure model credentials. The `model`
109
+ argument cannot rewrite models defined with `defineDynamic`, an environment expression,
117
110
  or a provider-authored SDK model; change those models in `agent.ts`.
118
111
  `--reasoning` can still update an editable root config when its model comes from
119
112
  an SDK call.
@@ -211,88 +204,99 @@ For self-hosted deployments, copy the app source, `.output/`, and installed depe
211
204
 
212
205
  ```bash
213
206
  eve dev [options]
214
- eve dev https://your-app.vercel.app
215
207
  ```
216
208
 
217
- Pass a bare URL and the UI connects to that server instead of booting a local one (same as `--url`), which lets you smoke-test a preview or production deployment. The interactive UI turns off in a non-TTY terminal.
218
-
219
- | Flag | Type | Default | Description |
220
- | ----------------------------------- | ------ | ------------------ | ----------------------------------------------------------------------------------------- |
221
- | `--host <host>` | string | all interfaces | Host interface to bind |
222
- | `--port <port>` | number | `$PORT`, then 2000 | Port to listen on |
223
- | `-u, --url <url>` | string | none | Connect to an existing server URL instead of starting one |
224
- | `-H, --header <header>` | string | none | Request header for a URL target, in `Name: value` form; repeat for multiple headers |
225
- | `--no-ui` | flag | UI on | Start the server without an interactive UI |
226
- | `--no-default-extensions` | flag | extensions on | Do not mount bundled development extensions |
227
- | `--name <name>` | string | app folder name | Title shown in the terminal UI |
228
- | `--input <text>` | string | none | Pre-fill the prompt input |
229
- | `--tools <mode>` | enum | `auto-collapsed` | Tool-call rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
230
- | `--reasoning <mode>` | enum | `full` | Reasoning rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
231
- | `--subagents <mode>` | enum | `auto-collapsed` | Subagent-section rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
232
- | `--connection-auth <mode>` | enum | `full` | Connection-authorization rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
233
- | `--assistant-response-stats <mode>` | enum | `tokensPerSecond` | Assistant header statistic: `tokens` \| `tokensPerSecond` |
234
- | `--context-size <tokens>` | number | none | Model context window size, shown as a usage percentage |
235
- | `--logs <mode>` | enum | `stderr` | Server/agent logs to show: `all` \| `stderr` \| `sandbox` \| `none` |
209
+ Starts a local development server and terminal UI. To connect the UI to an existing agent, use `eve remote connect --url <url>`.
210
+
211
+ | Flag | Type | Default | Description |
212
+ | ----------------------------------- | ------ | ------------------ | ------------------------------------------- |
213
+ | `--host <host>` | string | all interfaces | Host interface to bind |
214
+ | `--port <port>` | number | `$PORT`, then 2000 | Port to listen on |
215
+ | `--no-ui` | flag | UI on | Start the server without an interactive UI |
216
+ | `--no-default-extensions` | flag | extensions on | Do not mount bundled development extensions |
217
+ | `--name <name>` | string | app folder name | Title shown in the terminal UI |
218
+ | `--input <text>` | string | none | Pre-fill the prompt input |
219
+ | `--tools <mode>` | enum | `auto-collapsed` | Tool-call rendering |
220
+ | `--reasoning <mode>` | enum | `full` | Reasoning rendering |
221
+ | `--subagents <mode>` | enum | `auto-collapsed` | Subagent-section rendering |
222
+ | `--connection-auth <mode>` | enum | `full` | Connection-authorization rendering |
223
+ | `--assistant-response-stats <mode>` | enum | `tokensPerSecond` | Assistant header statistic |
224
+ | `--context-size <tokens>` | number | none | Model context window size |
225
+ | `--logs <mode>` | enum | `stderr` | Server and agent logs to show |
236
226
 
237
227
  Local development mounts bundled development extensions without adding files to your project. Pass `--no-default-extensions` to disable them. See [Self-Modification](../guides/self-modification) for details.
238
228
 
239
- `eve acp` reserves stdin and stdout for newline-delimited JSON-RPC and sends diagnostics to stderr. Without a URL, it supervises an isolated local development server. With a URL, it bridges ACP to that server's existing eve HTTP API and accepts the same URL credentials and request headers as `eve dev <url>`. Pass `--scope <team>` when the active Vercel scope does not own the deployment; `EVE_VERCEL_SCOPE` provides the same value for managed harnesses. See [Agent Client Protocol (ACP)](../protocols/acp) for client configuration and capability limits.
240
-
241
229
  A fresh `eve init` opens the TUI and reuses an available model connection or opens `/login`. No Vercel project, channels, integrations, or review step is required before chat. Use `/model` to change models and settings, and `/add` to install an addition. Other `--input` text stays editable in the prompt. See [Terminal UI](../guides/dev-tui) for credential precedence and login options.
242
230
 
243
- For a URL target protected by HTTP Basic auth, put the credentials in the URL. eve sends them as a Basic `Authorization` header and strips them from the server URL before connecting:
231
+ Local dev records the last ready URL per resolved app root in `.eve/dev-server-state.v1.json`. A second interactive `eve dev` reconnects only when that URL is loopback and healthy; each terminal UI creates a fresh client session while sharing the server process. A stale or malformed record is replaced when eve starts a new server. Passing `--host`, `--port`, or a `PORT` environment value skips reconnection and reports a healthy recorded server instead.
232
+
233
+ Local dev keeps immutable runtime generations under `.eve/dev-runtime/snapshots/` so in-flight turns hold a consistent code revision while new turns pick up rebuilds. Each generation contains the compiled authored module graph and runtime resources rather than a recursive copy of the app or workspace. The terminal REPL keeps its logical session across successful rebuilds, so the next turn continues the conversation on the latest generation; `/new` terminally retires that session before clearing the transcript, and the next prompt starts a fresh session with a new session-scoped sandbox on first sandbox use. After a generation is superseded, `eve dev` retains it for at least 30 minutes and also retains the five most recently superseded generations, regardless of the configured Workflow World. The active generation is never pruned. Old runtime snapshots and local sandbox templates are pruned in the background. For manual cleanup, stop `eve dev` before deleting `.eve/dev-runtime/snapshots/` or `.eve/sandbox-cache/local/templates/`. A turn that remains unfinished beyond the automatic retention window can no longer resume after its generation is pruned.
234
+
235
+ Local development records traces under `.eve/traces/` by default and bounds that store by age, size, and a keep-newest floor. Configure it with `EVE_TRACES*` in `.env.local`, or disable the destination with `agent/instrumentation/local.ts`; see [`eve traces`](#retention) for the rules and defaults.
236
+
237
+ `eve acp` reserves stdin and stdout for newline-delimited JSON-RPC and sends diagnostics to stderr. Without a URL, it supervises an isolated local development server. With a URL, it bridges ACP to that server's existing eve HTTP API. See [Agent Client Protocol (ACP)](../protocols/acp) for client configuration and capability limits.
238
+
239
+ ## `eve remote`
240
+
241
+ Use `eve remote` only with an explicit existing agent URL:
244
242
 
245
243
  ```bash
246
- eve dev https://user:pass@your-app.example.com
244
+ eve remote connect --url https://agent.example.com
245
+ eve remote invoke --url https://agent.example.com "Summarize station telemetry"
246
+ eve remote info --url https://agent.example.com
247
247
  ```
248
248
 
249
- For bearer tokens or custom schemes, pass explicit headers with `-H`.
249
+ `connect` opens the terminal UI. `info` verifies the target and prints its inspection response. Remote commands never start a local application.
250
+
251
+ ### `eve remote connect`
250
252
 
251
- ### `eve invoke`
253
+ ```bash
254
+ eve remote connect --url <url> [-H "Name: value"]
255
+ ```
252
256
 
253
- | Option | Type | Default | Description |
254
- | ----------------------- | ------ | ------- | ----------------------------------------------- |
255
- | `[prompt]` | string | none | Prompt, follow-up, or answer to a pending input |
256
- | `-u, --url <url>` | string | local | Invoke an existing server |
257
- | `-H, --header <header>` | string | none | Request header for a URL target; repeatable |
258
- | `--resume` | flag | off | Read a previous resumable result from stdin |
259
- | `--scope <team>` | string | current | Vercel team that owns the URL target |
260
- | `--json-schema` | flag | off | Print the result JSON Schema and exit |
257
+ Use `-H, --header <header>` for a bearer token or another custom request header; repeat it for multiple headers. For HTTP Basic authentication, put credentials in the URL. eve sends them as a Basic `Authorization` header and removes them from the target URL.
261
258
 
262
- Use `eve invoke` to submit a turn without opening the TUI. It emits JSON after the invocation completes or reaches a blocking input or authorization event.
259
+ ### `eve remote invoke`
263
260
 
264
261
  ```bash
265
- eve invoke "Summarize station telemetry"
266
- result=$(eve invoke "Deploy the application")
267
- printf '%s' "$result" | eve invoke --resume "approve"
268
- eve invoke --json-schema
262
+ eve remote invoke --url <url> [prompt] [--resume] [-H "Name: value"] [--scope <team>]
269
263
  ```
270
264
 
271
- `--resume` reads a complete previous result from stdin. Supply text for a `ready` follow-up or pending input; the agent harness resolves input text against all pending requests. A `ready` result includes the previous turn's completed or failed `outcome`. An `authorization-required` result lists every unresolved challenge in `authorizations`; complete them, then resume without text. Pass explicit headers again for protected remote servers. If the URL belongs to another Vercel team, pass its slug with `--scope`; this does not relink the current directory. Pass the scope again when resuming. Paused invocations exit `3`; failures exit `1`.
265
+ Invokes an existing agent without opening the terminal UI. It emits JSON after the invocation completes or reaches a blocking input or authorization event.
272
266
 
273
- Local callback-based connection authorization requires a persistent server. Run `eve dev`, then use `eve invoke --url <dev-url>` instead. If a waiting invocation receives `SIGINT` or `SIGTERM` after acceptance, it emits a final resumable `running` result before exiting.
267
+ | Option | Type | Default | Description |
268
+ | ----------------------- | ------ | -------- | ----------------------------------------------- |
269
+ | `<url>` | string | required | Existing eve agent URL |
270
+ | `[prompt]` | string | none | Prompt, follow-up, or answer to a pending input |
271
+ | `-H, --header <header>` | string | none | Request header for the URL target; repeatable |
272
+ | `--resume` | flag | off | Read a previous resumable result from stdin |
273
+ | `--scope <team>` | string | current | Vercel team that owns the URL target |
274
274
 
275
- Local dev records the last ready URL per resolved app root in `.eve/dev-server-state.v1.json`. A second interactive `eve dev` reconnects only when that URL is loopback and healthy; each terminal UI creates a fresh client session while sharing the server process. A stale or malformed record is replaced when eve starts a new server. Passing `--host`, `--port`, or a `PORT` environment value skips reconnection and reports a healthy recorded server instead.
275
+ `--resume` reads a complete previous result from stdin. Supply text for a `ready` follow-up or pending input. An `authorization-required` result lists every unresolved challenge; complete them, then resume without text. Pass headers and scope again when resuming. Paused invocations exit `3`; failures exit `1`. If a waiting invocation receives `SIGINT` or `SIGTERM` after acceptance, it emits a final resumable `running` result before exiting.
276
276
 
277
- Local dev keeps immutable runtime generations under `.eve/dev-runtime/snapshots/` so in-flight turns hold a consistent code revision while new turns pick up rebuilds. Each generation contains the compiled authored module graph and runtime resources rather than a recursive copy of the app or workspace. The terminal REPL keeps its logical session across successful rebuilds, so the next turn continues the conversation on the latest generation; `/new` terminally retires that session before clearing the transcript, and the next prompt starts a fresh session with a new session-scoped sandbox on first sandbox use. After a generation is superseded, `eve dev` retains it for at least 30 minutes and also retains the five most recently superseded generations, regardless of the configured Workflow World. The active generation is never pruned. Old runtime snapshots and local sandbox templates are pruned in the background. For manual cleanup, stop `eve dev` before deleting `.eve/dev-runtime/snapshots/` or `.eve/sandbox-cache/local/templates/`. A turn that remains unfinished beyond the automatic retention window can no longer resume after its generation is pruned.
277
+ ### `eve remote info`
278
278
 
279
- Local development records traces under `.eve/traces/` by default and bounds that store by age, size, and a keep-newest floor. Configure it with `EVE_TRACES*` in `.env.local`, or disable the destination with `agent/instrumentation/local.ts`; see [`eve traces`](#retention) for the rules and defaults.
279
+ ```bash
280
+ eve remote info --url <url> [-H "Name: value"] [--json]
281
+ ```
282
+
283
+ Verifies the existing agent and prints its inspection response. Use `-H, --header <header>` for protected targets; repeat it for multiple headers.
280
284
 
281
285
  ## `eve logs`
282
286
 
283
287
  ```bash
284
288
  eve logs # print the most recent diagnostic log
285
- eve logs ls # list logs, most recent first
286
- eve logs <logid> # print a specific log
289
+ eve logs list # list logs, most recent first
290
+ eve logs show <logid> # print a specific log
287
291
  eve logs --dump # prepend the log's environment dump
288
292
  eve logs --events # interleave session events from the local workflow store
289
293
  ```
290
294
 
291
295
  Each interactive `eve dev` process writes a private diagnostic log under `.eve/logs/` capturing stderr, stdout (including sandbox and rebuild lines), tool failures, workflow errors, and eve framework log records — regardless of what the transcript shows. The file is JSON Lines — every line is one JSON record with `at` and `source` fields. `eve logs` reads those files back.
292
296
 
293
- A log id is the file name without `.log` (for example `dev-2026-07-15T12-00-00.000Z-123`). `eve logs <logid>` also accepts the file name, the `.eve/logs/...` path printed in the dev transcript, or any unambiguous prefix of the id with or without the `dev-` lead — so `eve logs 2026-07-15` works when a single log matches. An ambiguous prefix fails and lists the candidates.
297
+ A log id is the file name without `.log` (for example `dev-2026-07-15T12-00-00.000Z-123`). `eve logs show <logid>` also accepts the file name, the `.eve/logs/...` path printed in the dev transcript, or any unambiguous prefix of the id with or without the `dev-` lead — so `eve logs 2026-07-15` works when a single log matches. An ambiguous prefix fails and lists the candidates.
294
298
 
295
- `eve logs` prints nothing but records — no path banner on either stream — so `eve logs 2>&1 | jq -c .` always parses. Discover ids and file paths with `eve logs ls`; `eve logs ls --json` emits a machine-readable array with `id`, `path`, `startedAt`, and `sizeBytes`.
299
+ `eve logs` prints nothing but records — no path banner on either stream — so `eve logs 2>&1 | jq -c .` always parses. Discover ids and file paths with `eve logs list`; `eve logs list --json` emits a machine-readable array with `id`, `path`, `startedAt`, and `sizeBytes`.
296
300
 
297
301
  `eve logs --events` resolves session events (`session.started`, `turn.failed`, message deltas, …) from the local workflow store (`.eve/.workflow-data`) at query time and interleaves them into the output by timestamp as `source: "event"` records — the log file itself never stores them, so nothing is duplicated at capture time. Selection is by the log's time window (its start through the next log's start), so events from concurrently running `eve dev` processes may appear.
298
302
 
@@ -301,10 +305,10 @@ Each log has a same-named `.dump` sibling holding environment diagnostics and se
301
305
  ## `eve traces`
302
306
 
303
307
  ```bash
304
- eve traces ls # list traces, most recent first
305
- eve traces ls --json # emit machine-readable trace summaries
306
- eve traces # show the most recent span tree
307
- eve traces <trace> # show one span tree
308
+ eve traces list # list traces, most recent first
309
+ eve traces list --json # emit machine-readable trace summaries
310
+ eve traces show # show the most recent span tree
311
+ eve traces show <trace> # show one span tree
308
312
  eve traces --verbose # expand every span with all attributes and events
309
313
  eve traces --json # dump the full trace as JSON
310
314
  ```
@@ -317,6 +321,8 @@ Every subagent activation starts its own trace. The first child's `invoke_agent`
317
321
 
318
322
  Each `agent()` call inside an authored workflow has its own `agent.action` caller span, including sequential, parallel, and background calls. A workflow tool that coordinates one of those calls has an enclosing `invoke_workflow <tool>` span; a workflow tool without agent calls remains `agent.action`. The tool also keeps its `execute_tool <tool>` span. Only agent execution uses `invoke_agent`.
319
323
 
324
+ Outbound MCP `tools/call` requests add MCP semantic attributes to the matching `execute_tool` span. When eve has no tool span to enrich, it creates a `CLIENT` `tools/call <tool>` span. Each `tools/list` discovery also has a `CLIENT` span. Configured OpenTelemetry propagation fields are injected into MCP `params._meta` for JSON-RPC bodies up to 1 MiB and propagation metadata up to 8 KiB; larger requests are sent unchanged. eve removes its audience and session-lineage baggage before forwarding, and keeps the input/output content-capture policy local.
325
+
320
326
  A durable conversation produces one bounded trace per turn. Worker replacements reuse the prepared context for the same turn, while a later turn or an independently replayed attempt starts a fresh trace. Passing the conversation ID shows every trace it produced, oldest first.
321
327
 
322
328
  Every span carries a real duration. A turn's root `invoke_agent` span is written when the turn settles, so a running turn shows only its steps.
@@ -383,18 +389,6 @@ Runs all discovered evals when no eval ids are given; ids match exactly or by di
383
389
 
384
390
  See [Evals](../evals/overview) for authoring evals.
385
391
 
386
- ## `eve channels list`
387
-
388
- ```bash
389
- eve channels list [--json]
390
- ```
391
-
392
- Lists the user-authored channels in the current project.
393
-
394
- | Flag | Type | Default | Description |
395
- | -------- | ---- | ------- | -------------- |
396
- | `--json` | flag | off | Output as JSON |
397
-
398
392
  ## Recommended loop
399
393
 
400
394
  1. Edit files under `agent/`.
@@ -14,7 +14,7 @@ Every schedule provides a `cron` and exactly one of `markdown` or `run`:
14
14
  ```ts
15
15
  interface ScheduleDefinition {
16
16
  cron: string;
17
- markdown?: string; // fire-and-forget prompt (task mode)
17
+ markdown?: string; // fire-and-forget prompt
18
18
  run?: (args: ScheduleHandlerArgs) => Promise<void> | void; // handler
19
19
  }
20
20
 
@@ -33,7 +33,7 @@ A TypeScript schedule with `markdown` is compile-only because eve stores the pro
33
33
 
34
34
  ## Markdown form (fire-and-forget)
35
35
 
36
- This is the minimal schedule. eve runs the agent on the prompt and throws away the output, though the agent can still call tools, write to backends, and log along the way. We call this task mode. A task-mode session runs to completion or fails, and cannot park to wait for a person or an OAuth sign-in.
36
+ This is the minimal schedule. eve runs the agent on the prompt and throws away the output, though the agent can still call tools, write to backends, and log along the way. The session has no channel, so it cannot ask a person for input, and nothing can send it a follow-up message. If the agent calls a tool that needs approval, the session fails instead of waiting for an answer. After its turn settles, the session parks like any other session until its [session timeout](./agent-config#runtime-limits) ends it.
37
37
 
38
38
  ```ts title="agent/schedules/heartbeat.ts"
39
39
  import { defineSchedule } from "eve/schedules";
@@ -86,7 +86,7 @@ The agent does not have to deliver a message on every run. When a prompt makes d
86
86
 
87
87
  The `auth` option controls which principal the session runs as. A handler may instead supply a user principal when scheduled work needs that user's grants; a session created by that dispatch still retains schedule provenance and conditional delivery behavior.
88
88
 
89
- A handler-form session runs on the same durable runtime engine as any other session, so it can park (durably suspend), for instance when the channel handoff is waiting for a Slack reply. Only markdown task mode is barred from waiting.
89
+ A handler-form session runs on the same durable runtime engine as any other session, so it can park (durably suspend), for instance when the channel handoff is waiting for a Slack reply. Markdown-form sessions park too, but no channel is attached, so they cannot receive follow-up messages.
90
90
 
91
91
  ## Background task results
92
92
 
@@ -118,8 +118,7 @@ its policy unless the send supplies an explicit value.
118
118
 
119
119
  Under `"auto"`, a model call may finish silently while related work is pending.
120
120
  Available results remain in the next reporting context so the parent can combine
121
- previously withheld outputs later. A scheduled task-mode session stays alive while
122
- it owns pending background tasks. See
121
+ previously withheld outputs later. See
123
122
  [Background task results](./channels/overview#background-task-results).
124
123
 
125
124
  ## Session continuity
@@ -51,9 +51,8 @@ The root session receives `agent` by default. The model calls it to delegate a t
51
51
 
52
52
  ```ts
53
53
  {
54
- message: string; // everything the child needs; it does not see the parent's history
55
- agentId?: string; // continue or steer an existing child
56
- outputSchema?: object; // require structured output for this turn
54
+ message: string; // everything the child needs; it does not see the parent's history
55
+ agentId?: string; // continue or steer an existing child
57
56
  }
58
57
  ```
59
58
 
@@ -239,7 +238,7 @@ The root built-in `agent` tool is the exception. Its children reuse the root's s
239
238
 
240
239
  ## What the parent sees
241
240
 
242
- eve lowers every tool-enabled subagent visible to the current agent (the root built-in copy, declared, or [remote](./guides/remote-agents)) into a model-visible tool with the same `{ message, agentId?, outputSchema? }` shape. The parent packs `message` with everything the child needs, since the child never sees the parent's history. Set `outputSchema` to require structured output for that turn; the child remains available for follow-up messages afterward.
241
+ eve lowers every tool-enabled subagent visible to the current agent (the root built-in copy, declared, or [remote](./guides/remote-agents)) into a model-visible tool with the same `{ message, agentId? }` shape. The parent packs `message` with everything the child needs, since the child never sees the parent's history. To require structured output from a child, call it from an authored workflow tool with [`ctx.agent(name, { message, outputSchema })`](./tools/workflows); the schema applies to that turn, and the child remains available for follow-up messages afterward.
243
242
 
244
243
  Declared subagents can call nested subagents defined under their own directories. eve does not apply a separate depth limit; nesting ends where the authored directory tree ends. The built-in `agent` follows the stricter root-only rule above, so `limits.maxSubagentDepth` no longer exists.
245
244
 
@@ -249,9 +248,8 @@ A directly declared subagent's tool name is the bare path-derived name, with no
249
248
 
250
249
  ```ts
251
250
  {
252
- message: string; // all context the child needs; it never sees the parent's history
253
- agentId?: string; // continue or steer an existing child
254
- outputSchema?: object; // require structured output for this turn
251
+ message: string; // all context the child needs; it never sees the parent's history
252
+ agentId?: string; // continue or steer an existing child
255
253
  }
256
254
  ```
257
255
 
@@ -121,6 +121,8 @@ The `response` policy receives:
121
121
 
122
122
  Return `{ status: "allowed" }` to accept the approval. Return `{ status: "rejected", reason }` to leave the shared request pending so another eligible responder can approve it.
123
123
 
124
+ When a response is refused without starting a turn, the session returns to `session.waiting`. The client finishes the submission and keeps the approval prompt answerable. Submitting an answer does not confirm approval: `approval.settled` or `input.resolved` records the server's decision. You can inspect `approval.candidate` events for the response policy's refusal reason.
125
+
124
126
  ### Skipping approval for schedule-dispatched turns
125
127
 
126
128
  `session.auth.current` identifies the caller of this turn. Markdown schedules use the app principal (`authenticator: "app"`, `principalId: "eve:app"`, `principalType: "runtime"`) automatically. A `run` schedule must pass its `appAuth` to `send(...)` for the child session to use that principal. Match all three fields to skip approval for automated turns while still prompting when a person calls the same tool:
@@ -197,6 +199,8 @@ Channels turn requests into native UI: the Slack adapter renders approvals as bu
197
199
 
198
200
  From your own frontend, scan all messages for pending requests and answer through the same session — see [Building a frontend](/docs/guides/frontend/overview#human-in-the-loop-prompts) for the client-side reducer and `inputResponses` shape.
199
201
 
202
+ The default message reducer waits for server confirmation before marking any input request answered. Use the store's `submitted` or `streaming` status to show that a response is being processed; submitting a response alone does not resolve an approval, question, or session-limit prompt. The `client.input.responded` event remains a submission notification for custom reducers, not confirmation that the server accepted the answer.
203
+
200
204
  ## What to read next
201
205
 
202
206
  - [Tools](/docs/tools): define the typed actions an approval gates
@@ -39,6 +39,8 @@ eve validates the model's input against `inputSchema` before `execute` runs:
39
39
  - eve treats `format` as an annotation and does not reject input for it.
40
40
  - When eve cannot evaluate a JSON Schema locally, for example because of an unknown `type` name or a `$ref` it cannot resolve, the model still receives the schema and eve passes the input to `execute` unvalidated.
41
41
 
42
+ Optional input fields remain optional for authored tools and connection tools. eve explicitly disables provider strict mode for function tools so providers such as OpenAI Responses do not implicitly require every property. Local input validation still follows the tool's schema.
43
+
42
44
  ### Hide a tool from delegated agents
43
45
 
44
46
  Set `availableInSubagents: false` when a tool should be callable only in a top-level root session:
@@ -441,7 +441,7 @@ import { agentRouter } from "eve/tools/agent-router";
441
441
  export default agentRouter();
442
442
  ```
443
443
 
444
- Its input is `{ message: string, outputSchema?: object }`. `agentRouter()` ignores entries without a non-empty description. With two or more described targets, it sends the message and effective descriptions to Jev, then invokes the selected name through `ctx.agent()`. It invokes a sole target without evaluation and forwards an optional `outputSchema` unchanged. In a top-level root session, the candidates include the root-copy `agent`; delegated root copies and declared subagent contexts include only their declared targets.
444
+ Its input is `{ message: string }`. `agentRouter()` ignores entries without a non-empty description. With two or more described targets, it sends the message and effective descriptions to Jev, then invokes the selected name through `ctx.agent()`. It invokes a sole target without evaluation. In a top-level root session, the candidates include the root-copy `agent`; delegated root copies and declared subagent contexts include only their declared targets.
445
445
 
446
446
  When an authored tool accepts a JSON Schema supplied by the model, represent that input with a permissive object such as `z.looseObject({})`. Avoid `z.record(z.string(), z.json())`: its generated JSON Schema uses `propertyNames`, which OpenAI does not support. Validate the supplied value at the point where your tool consumes it.
447
447
 
@@ -65,7 +65,7 @@ export default defineTool({
65
65
 
66
66
  The sample data has two high-value customers: Acme ($57) and Globex ($99). This definition works with the same fixed dataset whenever you run the tutorial. The second turn is a separate turn in the same session, yet the definition is still there. State checkpoints at step boundaries, so it's the same durability from [Step 2](./how-it-runs), now applied to your own data.
67
67
 
68
- State is scoped to a session and isolated per agent, so a subagent starts with fresh state and never sees the parent's. Need to reset something each turn? Call `update(() => fresh)` in a lifecycle hook. More in [State](../concepts/state).
68
+ State is scoped to a session and isolated per agent, so a subagent starts with fresh state and never sees the parent's. Need to clear the glossary each turn? Call `glossary.update(() => ({ terms: {} }))` in a lifecycle hook. More in [State](../concepts/state).
69
69
 
70
70
  → Next: [Team playbooks](./team-playbooks)
71
71
 
@@ -116,7 +116,7 @@ Open the HTTPS preview URL and enter the configured username and password. Creat
116
116
  The authenticated web app and eve runtime share the same origin, and the sandbox runs on Vercel Sandbox. You can also smoke-test the deployment through the authenticated CLI:
117
117
 
118
118
  ```bash
119
- npx eve dev https://your-analytics-app.vercel.app
119
+ npx eve remote connect --url https://your-analytics-app.vercel.app
120
120
  ```
121
121
 
122
122
  For a production deployment, add the username, password, and model credential to the Production environment too, then run `npx vercel@latest deploy --prod`. Missing Basic credentials keep browser access closed.