eve 0.56.0 → 0.57.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 (559) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/src/channel/adapter-context.d.ts +1 -1
  3. package/dist/src/channel/adapter.d.ts +2 -2
  4. package/dist/src/channel/channel-address.js +1 -1
  5. package/dist/src/channel/session.d.ts +4 -3
  6. package/dist/src/channel/session.js +1 -1
  7. package/dist/src/channel/types.d.ts +7 -4
  8. package/dist/src/chunks/{use-eve-agent-RUGSwq8b.js → use-eve-agent-C2APNCdP.js} +45 -12
  9. package/dist/src/chunks/{use-eve-agent-CMdMlS7Y.js → use-eve-agent-D0YnDLi_.js} +45 -12
  10. package/dist/src/cli/commands/init.d.ts +2 -6
  11. package/dist/src/cli/commands/init.js +1 -1
  12. package/dist/src/cli/commands/trace-detail.js +1 -1
  13. package/dist/src/cli/dev/environment.js +1 -1
  14. package/dist/src/cli/dev/run-interactive-ui.js +1 -1
  15. package/dist/src/cli/dev/tui/agent-header.js +1 -1
  16. package/dist/src/cli/dev/tui/blocks.d.ts +1 -6
  17. package/dist/src/cli/dev/tui/blocks.js +1 -1
  18. package/dist/src/cli/dev/tui/command-typeahead.js +1 -1
  19. package/dist/src/cli/dev/tui/message-queue.d.ts +11 -7
  20. package/dist/src/cli/dev/tui/message-queue.js +1 -1
  21. package/dist/src/cli/dev/tui/model-editor.d.ts +1 -1
  22. package/dist/src/cli/dev/tui/model-editor.js +1 -1
  23. package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +0 -3
  24. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  25. package/dist/src/cli/dev/tui/prompt-commands.d.ts +1 -1
  26. package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
  27. package/dist/src/cli/dev/tui/question-panel.js +1 -1
  28. package/dist/src/cli/dev/tui/remote-auth-result.js +1 -1
  29. package/dist/src/cli/dev/tui/remote-auth.js +1 -1
  30. package/dist/src/cli/dev/tui/remote-startup.d.ts +10 -0
  31. package/dist/src/cli/dev/tui/remote-startup.js +1 -0
  32. package/dist/src/cli/dev/tui/runner.d.ts +12 -18
  33. package/dist/src/cli/dev/tui/runner.js +3 -1
  34. package/dist/src/cli/dev/tui/setup-commands.d.ts +7 -13
  35. package/dist/src/cli/dev/tui/setup-commands.js +2 -2
  36. package/dist/src/cli/dev/tui/setup-issues.d.ts +1 -1
  37. package/dist/src/cli/dev/tui/setup-issues.js +1 -1
  38. package/dist/src/cli/dev/tui/setup-panel.d.ts +5 -17
  39. package/dist/src/cli/dev/tui/setup-panel.js +5 -6
  40. package/dist/src/cli/dev/tui/status-line.d.ts +1 -8
  41. package/dist/src/cli/dev/tui/status-line.js +1 -1
  42. package/dist/src/cli/dev/tui/steering-stream.d.ts +15 -0
  43. package/dist/src/cli/dev/tui/steering-stream.js +1 -0
  44. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -2
  45. package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
  46. package/dist/src/cli/dev/tui/test/mock-terminal.d.ts +2 -2
  47. package/dist/src/cli/dev/tui/test/mock-terminal.js +1 -1
  48. package/dist/src/cli/dev/tui/theme.d.ts +0 -2
  49. package/dist/src/cli/dev/tui/theme.js +1 -1
  50. package/dist/src/cli/dev/tui/vercel-status.d.ts +4 -2
  51. package/dist/src/cli/dev/tui/vercel-status.js +1 -1
  52. package/dist/src/cli/run.js +1 -1
  53. package/dist/src/cli/telemetry/index.d.ts +1 -1
  54. package/dist/src/cli/telemetry/index.js +1 -1
  55. package/dist/src/client/agent-info-schema.d.ts +2 -0
  56. package/dist/src/client/agent-info-schema.js +1 -1
  57. package/dist/src/client/eve-agent-store-state.d.ts +19 -0
  58. package/dist/src/client/eve-agent-store.js +1 -1
  59. package/dist/src/client/ndjson.d.ts +2 -0
  60. package/dist/src/client/ndjson.js +3 -3
  61. package/dist/src/client/open-stream.d.ts +1 -0
  62. package/dist/src/client/open-stream.js +1 -1
  63. package/dist/src/compiled/.vendor-stamp.json +1 -1
  64. package/dist/src/compiled/@workflow/core/index.js +2 -2
  65. package/dist/src/compiled/@workflow/core/private.js +1 -1
  66. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -0
  67. package/dist/src/compiled/@workflow/core/runtime.js +2 -2
  68. package/dist/src/compiled/@workflow/core/serialization.js +1 -0
  69. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  70. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  71. package/dist/src/compiled/@workflow/world-vercel/index.js +2 -2
  72. package/dist/src/compiled/_chunks/workflow/attribute-changes-DTFAjP0J.js +6 -0
  73. package/dist/src/compiled/_chunks/workflow/{dist-PLkAQ-U7.js → dist-C5KCXSdI.js} +1 -1
  74. package/dist/src/compiled/_chunks/workflow/{frames-BvATzM2t.js → frames-DJw9L4rO.js} +3 -3
  75. package/dist/src/compiled/_chunks/workflow/global-DFW-hO6M.js +1 -0
  76. package/dist/src/compiled/_chunks/workflow/helpers-ClCA9Lmc.js +1 -0
  77. package/dist/src/compiled/_chunks/workflow/logger-D6vwIEf9.js +13 -0
  78. package/dist/src/compiled/_chunks/workflow/resume-hook-_baK8jaT.js +1 -0
  79. package/dist/src/compiled/_chunks/workflow/run-CRdL17z4.js +1 -0
  80. package/dist/src/compiled/_chunks/workflow/serialization-CWYPL4Eq.js +3 -0
  81. package/dist/src/compiled/_chunks/workflow/sleep-BL0kgJnT.js +1 -0
  82. package/dist/src/compiled/_chunks/workflow/wait-until-DyIt9lEx.js +1 -0
  83. package/dist/src/compiled/_chunks/workflow/{ws-transport-CVezyWwZ.js → ws-transport-Dl5FG4Sw.js} +1 -1
  84. package/dist/src/compiler/extension-compatibility.d.ts +15 -6
  85. package/dist/src/compiler/extension-compatibility.js +1 -1
  86. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  87. package/dist/src/context/keys.d.ts +3 -1
  88. package/dist/src/context/keys.js +1 -1
  89. package/dist/src/eve-channel/index.js +1 -1
  90. package/dist/src/eve-channel/request.js +4 -3
  91. package/dist/src/execution/activity-cohort.js +1 -1
  92. package/dist/src/execution/activity-collector.js +1 -1
  93. package/dist/src/execution/authorization-callback-match.d.ts +2 -1
  94. package/dist/src/execution/authorization-callback-match.js +1 -1
  95. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  96. package/dist/src/execution/cancel-indexed-session-tasks-step.js +1 -1
  97. package/dist/src/execution/cancelled-model-call-batch.d.ts +1 -1
  98. package/dist/src/execution/connections/callback-route.d.ts +1 -11
  99. package/dist/src/execution/connections/callback-route.js +1 -1
  100. package/dist/src/execution/continuation-conflict-step.d.ts +0 -1
  101. package/dist/src/execution/continuation-conflict-step.js +1 -1
  102. package/dist/src/execution/coordination-dispatch-shared.d.ts +1 -1
  103. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  104. package/dist/src/execution/create-session-step.d.ts +1 -1
  105. package/dist/src/execution/durable-session-store.d.ts +10 -48
  106. package/dist/src/execution/durable-session-store.js +1 -1
  107. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  108. package/dist/src/execution/eve-workflow-attributes.d.ts +0 -16
  109. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  110. package/dist/src/execution/hook-ownership.d.ts +2 -4
  111. package/dist/src/execution/hook-ownership.js +1 -1
  112. package/dist/src/execution/legacy-session/authorization.d.ts +9 -0
  113. package/dist/src/execution/legacy-session/authorization.js +1 -0
  114. package/dist/src/execution/legacy-session/completion-step.d.ts +10 -0
  115. package/dist/src/execution/legacy-session/completion-step.js +1 -0
  116. package/dist/src/execution/legacy-session/inbox.d.ts +24 -0
  117. package/dist/src/execution/legacy-session/inbox.js +1 -0
  118. package/dist/src/execution/legacy-session/input.d.ts +19 -0
  119. package/dist/src/execution/legacy-session/input.js +1 -0
  120. package/dist/src/execution/legacy-session/interrupt-step.d.ts +3 -0
  121. package/dist/src/execution/legacy-session/interrupt-step.js +1 -0
  122. package/dist/src/execution/legacy-session/prepare-step.d.ts +24 -0
  123. package/dist/src/execution/legacy-session/prepare-step.js +1 -0
  124. package/dist/src/execution/legacy-session/snapshot.d.ts +12 -0
  125. package/dist/src/execution/legacy-session/snapshot.js +1 -0
  126. package/dist/src/execution/legacy-session/turn-workflow.d.ts +8 -0
  127. package/dist/src/execution/legacy-session/turn-workflow.js +1 -0
  128. package/dist/src/execution/model-call-batching.d.ts +1 -0
  129. package/dist/src/execution/model-call-batching.js +1 -1
  130. package/dist/src/execution/node-step.d.ts +1 -0
  131. package/dist/src/execution/node-step.js +1 -1
  132. package/dist/src/execution/proxied-deliver-step.d.ts +2 -20
  133. package/dist/src/execution/proxied-deliver-step.js +1 -1
  134. package/dist/src/execution/reconcile-session-continuation-token.d.ts +1 -1
  135. package/dist/src/execution/report-dropped-wire-payload-step.d.ts +1 -1
  136. package/dist/src/execution/route-child-delivery.d.ts +2 -2
  137. package/dist/src/execution/route-child-delivery.js +1 -1
  138. package/dist/src/execution/runtime-context.js +1 -1
  139. package/dist/src/execution/sandbox/bindings/eve-image.js +1 -1
  140. package/dist/src/execution/session/accepted-deployment.d.ts +3 -0
  141. package/dist/src/execution/session/accepted-deployment.js +1 -0
  142. package/dist/src/execution/session/admission.d.ts +38 -0
  143. package/dist/src/execution/session/admission.js +1 -0
  144. package/dist/src/execution/session/entry-input.d.ts +42 -0
  145. package/dist/src/execution/session/entry-input.js +1 -0
  146. package/dist/src/execution/session/entry.d.ts +13 -0
  147. package/dist/src/execution/session/entry.js +1 -0
  148. package/dist/src/execution/session/event-sink.d.ts +31 -0
  149. package/dist/src/execution/session/event-sink.js +1 -0
  150. package/dist/src/execution/session/finalization.d.ts +33 -0
  151. package/dist/src/execution/session/finalization.js +1 -0
  152. package/dist/src/execution/session/handoff-steps.d.ts +22 -0
  153. package/dist/src/execution/session/handoff-steps.js +1 -0
  154. package/dist/src/execution/session/handoff.d.ts +69 -0
  155. package/dist/src/execution/session/handoff.js +1 -0
  156. package/dist/src/execution/session/hook-tokens.d.ts +11 -0
  157. package/dist/src/execution/session/hook-tokens.js +1 -0
  158. package/dist/src/execution/session/input-queue.d.ts +72 -0
  159. package/dist/src/execution/session/input-queue.js +1 -0
  160. package/dist/src/execution/session/next-input.d.ts +32 -0
  161. package/dist/src/execution/session/next-input.js +1 -0
  162. package/dist/src/execution/{pending-turn-state.d.ts → session/pending-turn-state.d.ts} +0 -1
  163. package/dist/src/execution/{pending-turn-state.js → session/pending-turn-state.js} +1 -1
  164. package/dist/src/execution/session/program.d.ts +47 -0
  165. package/dist/src/execution/session/program.js +1 -0
  166. package/dist/src/execution/session/route-selected-delivery.d.ts +9 -0
  167. package/dist/src/execution/session/route-selected-delivery.js +1 -0
  168. package/dist/src/execution/session/state-cursor.d.ts +31 -0
  169. package/dist/src/execution/session/state-cursor.js +1 -0
  170. package/dist/src/execution/{session-timeout-control.d.ts → session/timeout-control.d.ts} +1 -1
  171. package/dist/src/execution/session/timeout-control.js +1 -0
  172. package/dist/src/execution/{session-timeout-steps.d.ts → session/timeout-steps.d.ts} +3 -2
  173. package/dist/src/execution/session/timeout-steps.js +1 -0
  174. package/dist/src/execution/{session-timeout-workflow.d.ts → session/timeout-workflow.d.ts} +3 -1
  175. package/dist/src/execution/session/timeout-workflow.js +1 -0
  176. package/dist/src/execution/session/timeout.d.ts +3 -0
  177. package/dist/src/execution/session/timeout.js +1 -0
  178. package/dist/src/execution/session/turn-step-result.d.ts +4 -0
  179. package/dist/src/execution/session/turn-step-result.js +1 -0
  180. package/dist/src/execution/session/turn-step-types.d.ts +68 -0
  181. package/dist/src/execution/session/turn-step-types.js +1 -0
  182. package/dist/src/execution/{workflow-steps.d.ts → session/turn-step.d.ts} +1 -2
  183. package/dist/src/execution/session/turn-step.js +1 -0
  184. package/dist/src/execution/session/turn.d.ts +31 -0
  185. package/dist/src/execution/session/turn.js +1 -0
  186. package/dist/src/execution/session-inbox/address.d.ts +21 -0
  187. package/dist/src/execution/session-inbox/address.js +1 -0
  188. package/dist/src/execution/session-inbox/inbox.d.ts +54 -0
  189. package/dist/src/execution/session-inbox/inbox.js +1 -0
  190. package/dist/src/execution/session-inbox/protocol.d.ts +10 -0
  191. package/dist/src/execution/session-inbox/protocol.js +1 -0
  192. package/dist/src/execution/session-inbox/release-step.d.ts +5 -0
  193. package/dist/src/execution/session-inbox/release-step.js +1 -0
  194. package/dist/src/execution/session-inbox/resume.d.ts +21 -0
  195. package/dist/src/execution/session-inbox/resume.js +1 -0
  196. package/dist/src/execution/{turn-workflow-tool-run.d.ts → session-workflow-tool-run.d.ts} +2 -2
  197. package/dist/src/execution/session-workflow-tool-run.js +1 -0
  198. package/dist/src/execution/settle-cancelled-turn-step.d.ts +2 -2
  199. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  200. package/dist/src/execution/skills/instructions.js +1 -1
  201. package/dist/src/execution/stable-workflow-names.d.ts +1 -1
  202. package/dist/src/execution/stable-workflow-names.js +1 -1
  203. package/dist/src/execution/task-input-response-route.js +1 -1
  204. package/dist/src/execution/tasks/child/steps.d.ts +1 -1
  205. package/dist/src/execution/tasks/child/steps.js +1 -1
  206. package/dist/src/execution/tasks/child/workflow.js +1 -1
  207. package/dist/src/execution/tasks/parent/delegate.js +1 -1
  208. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  209. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  210. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  211. package/dist/src/execution/terminal-session-completion-step.d.ts +1 -1
  212. package/dist/src/execution/terminal-session-event.d.ts +1 -1
  213. package/dist/src/execution/terminal-session-event.js +1 -1
  214. package/dist/src/execution/terminal-session-failure-step.d.ts +1 -1
  215. package/dist/src/execution/terminal-session-failure-step.js +1 -1
  216. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  217. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  218. package/dist/src/execution/tools/subagent/accept-event-step.js +1 -1
  219. package/dist/src/execution/tools/subagent/emit-called-step.d.ts +1 -1
  220. package/dist/src/execution/tools/subagent/emit-called-step.js +1 -1
  221. package/dist/src/execution/tools/subagent/invoke-agent.d.ts +1 -1
  222. package/dist/src/execution/tools/subagent/invoke-agent.js +1 -1
  223. package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +6 -0
  224. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
  225. package/dist/src/execution/tools/subagent/invoke-step.js +1 -1
  226. package/dist/src/execution/tools/subagent/steer.d.ts +13 -0
  227. package/dist/src/execution/tools/subagent/steer.js +1 -0
  228. package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +1 -1
  229. package/dist/src/execution/tools/subagent/task-agent-requests.js +1 -1
  230. package/dist/src/execution/tools/subagent/task-cancel.js +1 -1
  231. package/dist/src/execution/tools/workflow/ask.d.ts +0 -9
  232. package/dist/src/execution/tools/workflow/ask.js +1 -1
  233. package/dist/src/execution/tools/workflow/body.d.ts +0 -2
  234. package/dist/src/execution/tools/workflow/body.js +1 -1
  235. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.d.ts +1 -1
  236. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.js +1 -1
  237. package/dist/src/execution/tools/workflow/messages.d.ts +0 -1
  238. package/dist/src/execution/tools/workflow/messages.js +1 -1
  239. package/dist/src/execution/tools/workflow/owner.d.ts +3 -1
  240. package/dist/src/execution/tools/workflow/owner.js +1 -1
  241. package/dist/src/execution/tools/workflow/resume-hook-step.d.ts +1 -1
  242. package/dist/src/execution/tools/workflow/step-context.d.ts +0 -1
  243. package/dist/src/execution/tools/workflow/step-execution.js +1 -1
  244. package/dist/src/execution/tools/workflow/step.js +1 -1
  245. package/dist/src/execution/tools/workflow/workflow.js +1 -1
  246. package/dist/src/execution/workflow-runtime.d.ts +15 -18
  247. package/dist/src/execution/workflow-runtime.js +1 -1
  248. package/dist/src/harness/authorization.d.ts +5 -37
  249. package/dist/src/harness/authorization.js +1 -1
  250. package/dist/src/harness/compaction.js +1 -1
  251. package/dist/src/harness/coordination.js +1 -1
  252. package/dist/src/harness/emission-state.d.ts +1 -0
  253. package/dist/src/harness/emission.js +1 -1
  254. package/dist/src/harness/generation-steering.d.ts +22 -0
  255. package/dist/src/harness/generation-steering.js +1 -0
  256. package/dist/src/harness/messages.d.ts +1 -1
  257. package/dist/src/harness/messages.js +1 -1
  258. package/dist/src/harness/prompt-cache.js +1 -1
  259. package/dist/src/harness/proxy-input-requests.d.ts +1 -1
  260. package/dist/src/harness/proxy-input-requests.js +1 -1
  261. package/dist/src/harness/semantic-errors/rules/gateway.js +1 -1
  262. package/dist/src/harness/semantic-errors/signals.js +1 -1
  263. package/dist/src/harness/session-limit-enforcement.js +1 -1
  264. package/dist/src/harness/tool-loop.js +2 -2
  265. package/dist/src/harness/types.d.ts +2 -0
  266. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  267. package/dist/src/instrumentation/channel-delivery.js +1 -1
  268. package/dist/src/instrumentation/lifecycle.d.ts +1 -0
  269. package/dist/src/instrumentation/native-events.js +1 -1
  270. package/dist/src/internal/application/compiled-artifacts.js +3 -2
  271. package/dist/src/internal/application/package.js +1 -1
  272. package/dist/src/internal/gateway.d.ts +1 -0
  273. package/dist/src/internal/gateway.js +1 -1
  274. package/dist/src/internal/model-auth/api-key.d.ts +7 -0
  275. package/dist/src/internal/model-auth/api-key.js +1 -0
  276. package/dist/src/internal/model-auth/available-models.d.ts +2 -0
  277. package/dist/src/internal/model-auth/available-models.js +1 -0
  278. package/dist/src/internal/model-auth/development-broker-client.d.ts +3 -0
  279. package/dist/src/internal/model-auth/development-broker-client.js +1 -0
  280. package/dist/src/internal/model-auth/development-broker-protocol.d.ts +12 -0
  281. package/dist/src/internal/model-auth/development-broker-protocol.js +1 -0
  282. package/dist/src/internal/model-auth/development-broker-server.d.ts +4 -0
  283. package/dist/src/internal/model-auth/development-broker-server.js +1 -0
  284. package/dist/src/internal/model-auth/gateway-credential.d.ts +2 -0
  285. package/dist/src/internal/model-auth/gateway-credential.js +1 -0
  286. package/dist/src/internal/model-auth/store.d.ts +16 -0
  287. package/dist/src/internal/model-auth/store.js +1 -0
  288. package/dist/src/internal/model-auth/transport.d.ts +6 -0
  289. package/dist/src/internal/model-auth/transport.js +1 -0
  290. package/dist/src/internal/model-auth/vercel-cli.d.ts +7 -0
  291. package/dist/src/internal/model-auth/vercel-cli.js +1 -0
  292. package/dist/src/internal/model-auth/vercel-team.d.ts +3 -0
  293. package/dist/src/internal/model-auth/vercel-team.js +1 -0
  294. package/dist/src/internal/model-auth/vercel.d.ts +13 -0
  295. package/dist/src/internal/model-auth/vercel.js +1 -0
  296. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  297. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
  298. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  299. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  300. package/dist/src/internal/nitro/routes/info.js +1 -1
  301. package/dist/src/internal/resolve-model-endpoint-status.d.ts +2 -0
  302. package/dist/src/internal/resolve-model-endpoint-status.js +1 -1
  303. package/dist/src/internal/vercel/api-resource.d.ts +4 -0
  304. package/dist/src/internal/vercel/api-resource.js +1 -0
  305. package/dist/src/internal/vercel/eve-service-contribution.js +1 -1
  306. package/dist/src/internal/vercel/vercel-services-config.d.ts +2 -0
  307. package/dist/src/internal/vercel/vercel-services-config.js +1 -1
  308. package/dist/src/internal/workflow/development-world-client.js +1 -1
  309. package/dist/src/internal/workflow/development-world-server.js +1 -1
  310. package/dist/src/internal/workflow/local-world-delivery-timeouts.d.ts +1 -1
  311. package/dist/src/internal/workflow/runtime.d.ts +1 -6
  312. package/dist/src/internal/workflow/runtime.js +1 -1
  313. package/dist/src/internal/workflow/vercel-world-defaults.d.ts +4 -0
  314. package/dist/src/internal/workflow/vercel-world-defaults.js +1 -0
  315. package/dist/src/protocol/activity.js +1 -1
  316. package/dist/src/protocol/message.d.ts +8 -0
  317. package/dist/src/protocol/message.js +2 -2
  318. package/dist/src/protocol/routes.d.ts +0 -2
  319. package/dist/src/protocol/routes.js +1 -1
  320. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  321. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  322. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  323. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  324. package/dist/src/public/definitions/channel.d.ts +1 -1
  325. package/dist/src/public/definitions/channel.js +1 -1
  326. package/dist/src/public/models/anthropic/index.d.ts +3 -0
  327. package/dist/src/public/models/anthropic/index.js +1 -0
  328. package/dist/src/public/models/openai/chatgpt/codex-app-server.js +1 -1
  329. package/dist/src/public/models/openai/chatgpt/credential-store.js +1 -1
  330. package/dist/src/public/models/openai/chatgpt/oauth.js +1 -1
  331. package/dist/src/public/models/openai/chatgpt/transport.js +1 -1
  332. package/dist/src/public/models/openai/index.d.ts +4 -2
  333. package/dist/src/public/models/openai/index.js +1 -1
  334. package/dist/src/public/sandbox/docker-sandbox.d.ts +1 -1
  335. package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +1 -1
  336. package/dist/src/public/sandbox/vercel-sandbox.d.ts +1 -1
  337. package/dist/src/public/vercel/index.d.ts +2 -1
  338. package/dist/src/public/vercel/index.js +1 -1
  339. package/dist/src/runtime/agent/resolve-model.js +1 -1
  340. package/dist/src/runtime/prompt/compose.js +1 -1
  341. package/dist/src/runtime/tools/registry.js +1 -1
  342. package/dist/src/self-modification/agent.js +1 -1
  343. package/dist/src/self-modification/setup.d.ts +9 -3
  344. package/dist/src/self-modification/setup.js +2 -2
  345. package/dist/src/setup/cli/option-row.d.ts +2 -1
  346. package/dist/src/setup/cli/option-row.js +1 -1
  347. package/dist/src/setup/cli/prompt-ui.d.ts +2 -0
  348. package/dist/src/setup/cli/prompt-ui.js +1 -1
  349. package/dist/src/setup/cli/select-state.d.ts +1 -1
  350. package/dist/src/setup/cli/select-state.js +1 -1
  351. package/dist/src/setup/flows/chatgpt-auth.js +1 -1
  352. package/dist/src/setup/flows/deploy.d.ts +4 -9
  353. package/dist/src/setup/flows/deploy.js +1 -1
  354. package/dist/src/setup/flows/ensure-vercel-project.js +1 -1
  355. package/dist/src/setup/flows/install-vercel-cli.d.ts +2 -3
  356. package/dist/src/setup/flows/login.d.ts +3 -1
  357. package/dist/src/setup/flows/login.js +1 -1
  358. package/dist/src/setup/flows/model-login-connection.d.ts +36 -0
  359. package/dist/src/setup/flows/model-login-connection.js +1 -0
  360. package/dist/src/setup/flows/model-login-progress.d.ts +7 -0
  361. package/dist/src/setup/flows/model-login-progress.js +1 -0
  362. package/dist/src/setup/flows/model-login.d.ts +22 -0
  363. package/dist/src/setup/flows/model-login.js +1 -0
  364. package/dist/src/setup/flows/model-source-change.d.ts +7 -0
  365. package/dist/src/setup/flows/model-source-change.js +1 -1
  366. package/dist/src/setup/flows/model.d.ts +6 -24
  367. package/dist/src/setup/flows/model.js +1 -1
  368. package/dist/src/setup/flows/registry.d.ts +3 -19
  369. package/dist/src/setup/flows/registry.js +1 -1
  370. package/dist/src/setup/flows/vercel-model-login.d.ts +5 -0
  371. package/dist/src/setup/flows/vercel-model-login.js +1 -0
  372. package/dist/src/setup/integrations/self-modification/setup.d.ts +2 -0
  373. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  374. package/dist/src/setup/project-resolution.js +1 -1
  375. package/dist/src/setup/prompter.d.ts +3 -1
  376. package/dist/src/setup/provider-settings.d.ts +19 -6
  377. package/dist/src/setup/provider-settings.js +1 -1
  378. package/dist/src/setup/scaffold/create/project.js +1 -1
  379. package/dist/src/setup/vercel-project.js +0 -0
  380. package/dist/src/setup/with-spinner.d.ts +1 -1
  381. package/dist/src/setup/with-spinner.js +1 -1
  382. package/dist/src/shared/action-types.js +1 -1
  383. package/dist/src/shared/agent-definition.d.ts +6 -4
  384. package/dist/src/shared/chatgpt-model.d.ts +2 -2
  385. package/dist/src/shared/chatgpt-model.js +1 -1
  386. package/dist/src/shared/model-connection.d.ts +17 -0
  387. package/dist/src/shared/model-connection.js +1 -0
  388. package/dist/src/shared/model-endpoint-status.d.ts +2 -1
  389. package/dist/src/shared/model-helper.d.ts +26 -0
  390. package/dist/src/shared/model-helper.js +1 -0
  391. package/dist/src/shared/package-version.d.ts +2 -0
  392. package/dist/src/shared/package-version.js +1 -0
  393. package/dist/src/shared/vercel-services.d.ts +1 -0
  394. package/dist/src/shared/vercel-services.js +1 -1
  395. package/dist/src/source-change/agent-config-ast.d.ts +6 -0
  396. package/dist/src/source-change/agent-config-ast.js +1 -1
  397. package/dist/src/source-change/apply-model-selection.d.ts +3 -1
  398. package/dist/src/source-change/apply-model-selection.js +1 -2
  399. package/dist/src/source-change/static-source-change.js +1 -1
  400. package/dist/src/subagents/callback-route.js +1 -1
  401. package/dist/src/subagents/event-proxy-step.d.ts +3 -3
  402. package/dist/src/subagents/event-proxy-step.js +1 -1
  403. package/dist/src/subagents/handle-dispatch.d.ts +12 -2
  404. package/dist/src/subagents/handle-dispatch.js +1 -1
  405. package/dist/src/subagents/handles/operation-id.d.ts +1 -1
  406. package/dist/src/subagents/handles/query.d.ts +0 -6
  407. package/dist/src/subagents/handles/query.js +1 -1
  408. package/dist/src/subagents/handles/state-key.d.ts +1 -1
  409. package/dist/src/subagents/handles/store.d.ts +1 -1
  410. package/dist/src/subagents/handles/store.js +1 -1
  411. package/dist/src/subagents/hitl-proxy.d.ts +1 -1
  412. package/dist/src/subagents/parent-notification.d.ts +2 -2
  413. package/dist/src/subagents/parent-result.d.ts +1 -1
  414. package/dist/src/subagents/remote-dispatch.d.ts +1 -1
  415. package/dist/src/subagents/remote-dispatch.js +1 -1
  416. package/dist/src/subagents/start-local.js +1 -1
  417. package/dist/src/subagents/tool.js +1 -1
  418. package/dist/src/svelte/index.js +1 -1
  419. package/dist/src/svelte/use-eve-agent.js +1 -1
  420. package/dist/src/tasks/session-index.js +1 -1
  421. package/dist/src/tasks/types.d.ts +1 -1
  422. package/dist/src/tracing/agent-otel-provider.js +2 -2
  423. package/dist/src/tracing/agent-otel-usage.js +1 -1
  424. package/dist/src/tracing/agent-span-contract.d.ts +1 -0
  425. package/dist/src/tracing/agent-span-contract.js +1 -1
  426. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  427. package/dist/src/vue/index.js +1 -1
  428. package/dist/src/vue/use-eve-agent.js +1 -1
  429. package/docs/agent-config.md +22 -22
  430. package/docs/channels/chat-sdk.mdx +4 -2
  431. package/docs/channels/custom.mdx +16 -10
  432. package/docs/channels/eve.mdx +3 -1
  433. package/docs/channels/linq.mdx +1 -1
  434. package/docs/channels/overview.mdx +4 -2
  435. package/docs/channels/photon.mdx +4 -1
  436. package/docs/channels/slack.mdx +3 -1
  437. package/docs/concepts/execution-model-and-durability.mdx +62 -13
  438. package/docs/concepts/sessions-runs-and-streaming.md +14 -5
  439. package/docs/getting-started.mdx +7 -3
  440. package/docs/guides/deployment/vercel.mdx +1 -1
  441. package/docs/guides/dev-tui.md +54 -27
  442. package/docs/guides/frontend/overview.mdx +3 -1
  443. package/docs/guides/instrumentation/meta.json +1 -0
  444. package/docs/memory/custom-provider.md +1 -1
  445. package/docs/protocols/acp.md +1 -1
  446. package/docs/reference/cli.md +2 -2
  447. package/docs/reference/telemetry.md +1 -1
  448. package/docs/reference/typescript-api.md +12 -5
  449. package/docs/sandbox.mdx +3 -3
  450. package/docs/subagents/index.mdx +2 -2
  451. package/docs/tools/workflows.mdx +1 -1
  452. package/docs/tutorial/how-it-runs.mdx +1 -1
  453. package/package.json +6 -1
  454. package/dist/src/cli/commands/init-repl.d.ts +0 -80
  455. package/dist/src/cli/commands/init-repl.js +0 -1
  456. package/dist/src/cli/commands/init-self-modification.d.ts +0 -7
  457. package/dist/src/cli/commands/init-self-modification.js +0 -1
  458. package/dist/src/cli/dev/tui/prompt-placeholder.d.ts +0 -12
  459. package/dist/src/cli/dev/tui/prompt-placeholder.js +0 -1
  460. package/dist/src/cli/dev/tui/remote-auth-command.d.ts +0 -11
  461. package/dist/src/cli/dev/tui/remote-auth-command.js +0 -3
  462. package/dist/src/compiled/_chunks/workflow/attribute-changes-BAcgmlXp.js +0 -20
  463. package/dist/src/compiled/_chunks/workflow/private-CFJkQA7R.js +0 -1
  464. package/dist/src/compiled/_chunks/workflow/resume-hook-BEHe0Uut.js +0 -1
  465. package/dist/src/compiled/_chunks/workflow/run-ChHLjaCt.js +0 -1
  466. package/dist/src/compiled/_chunks/workflow/sleep-BB2HuVie.js +0 -1
  467. package/dist/src/execution/accepted-delivery-deployment.d.ts +0 -7
  468. package/dist/src/execution/accepted-delivery-deployment.js +0 -1
  469. package/dist/src/execution/dispatch-turn-step.d.ts +0 -5
  470. package/dist/src/execution/dispatch-turn-step.js +0 -1
  471. package/dist/src/execution/durable-session-migrations/chain.d.ts +0 -38
  472. package/dist/src/execution/durable-session-migrations/chain.js +0 -1
  473. package/dist/src/execution/durable-session-migrations/snapshot.d.ts +0 -6
  474. package/dist/src/execution/durable-session-migrations/snapshot.js +0 -1
  475. package/dist/src/execution/durable-session-migrations/turn-workflow-v0-to-v1.d.ts +0 -12
  476. package/dist/src/execution/durable-session-migrations/turn-workflow-v0-to-v1.js +0 -1
  477. package/dist/src/execution/durable-session-migrations/turn-workflow-v1-to-v2.d.ts +0 -2
  478. package/dist/src/execution/durable-session-migrations/turn-workflow-v1-to-v2.js +0 -1
  479. package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +0 -88
  480. package/dist/src/execution/durable-session-migrations/turn-workflow.js +0 -1
  481. package/dist/src/execution/forward-turn-cancellation-step.d.ts +0 -6
  482. package/dist/src/execution/forward-turn-cancellation-step.js +0 -1
  483. package/dist/src/execution/forward-turn-delivery-step.d.ts +0 -6
  484. package/dist/src/execution/forward-turn-delivery-step.js +0 -1
  485. package/dist/src/execution/inline-turn.d.ts +0 -31
  486. package/dist/src/execution/inline-turn.js +0 -1
  487. package/dist/src/execution/next-driver-action.d.ts +0 -85
  488. package/dist/src/execution/parked-delivery-wait.d.ts +0 -54
  489. package/dist/src/execution/parked-delivery-wait.js +0 -1
  490. package/dist/src/execution/session-command-inbox.d.ts +0 -52
  491. package/dist/src/execution/session-command-inbox.js +0 -1
  492. package/dist/src/execution/session-command-token.d.ts +0 -6
  493. package/dist/src/execution/session-command-token.js +0 -1
  494. package/dist/src/execution/session-state-cursor.d.ts +0 -25
  495. package/dist/src/execution/session-state-cursor.js +0 -1
  496. package/dist/src/execution/session-timeout-control.js +0 -1
  497. package/dist/src/execution/session-timeout-steps.js +0 -1
  498. package/dist/src/execution/session-timeout-workflow.js +0 -1
  499. package/dist/src/execution/session-timeout.d.ts +0 -2
  500. package/dist/src/execution/session-timeout.js +0 -1
  501. package/dist/src/execution/turn-cancellation-control.d.ts +0 -30
  502. package/dist/src/execution/turn-cancellation-control.js +0 -1
  503. package/dist/src/execution/turn-cancellation-token.d.ts +0 -10
  504. package/dist/src/execution/turn-cancellation-token.js +0 -1
  505. package/dist/src/execution/turn-control-protocol.d.ts +0 -36
  506. package/dist/src/execution/turn-control-protocol.js +0 -1
  507. package/dist/src/execution/turn-control-receiver.d.ts +0 -54
  508. package/dist/src/execution/turn-control-receiver.js +0 -1
  509. package/dist/src/execution/turn-dispatch.d.ts +0 -39
  510. package/dist/src/execution/turn-dispatch.js +0 -1
  511. package/dist/src/execution/turn-execution-cursor.d.ts +0 -49
  512. package/dist/src/execution/turn-execution-cursor.js +0 -1
  513. package/dist/src/execution/turn-workflow-tool-run.js +0 -1
  514. package/dist/src/execution/turn-workflow.d.ts +0 -13
  515. package/dist/src/execution/turn-workflow.js +0 -1
  516. package/dist/src/execution/wire/session-inbox-contract.d.ts +0 -38
  517. package/dist/src/execution/wire/session-inbox-contract.js +0 -1
  518. package/dist/src/execution/wire/session-inbox-encoder.d.ts +0 -47
  519. package/dist/src/execution/wire/session-inbox-encoder.js +0 -1
  520. package/dist/src/execution/wire/session-inbox-resume.d.ts +0 -12
  521. package/dist/src/execution/wire/session-inbox-resume.js +0 -1
  522. package/dist/src/execution/wire/session-inbox-wire.d.ts +0 -29
  523. package/dist/src/execution/wire/session-inbox-wire.js +0 -1
  524. package/dist/src/execution/wire/session-inbox-wire.v0.d.ts +0 -5
  525. package/dist/src/execution/wire/session-inbox-wire.v0.js +0 -1
  526. package/dist/src/execution/wire/session-inbox-wire.v1.d.ts +0 -237
  527. package/dist/src/execution/wire/session-inbox-wire.v1.js +0 -1
  528. package/dist/src/execution/wire/session-inbox-wire.v2-migration.d.ts +0 -2
  529. package/dist/src/execution/wire/session-inbox-wire.v2-migration.js +0 -1
  530. package/dist/src/execution/wire/session-inbox-wire.v2.d.ts +0 -478
  531. package/dist/src/execution/wire/session-inbox-wire.v2.js +0 -1
  532. package/dist/src/execution/wire/session-inbox-wire.v2.migration.d.ts +0 -3
  533. package/dist/src/execution/wire/session-inbox-wire.v2.migration.js +0 -1
  534. package/dist/src/execution/wire/session-inbox-wire.v3.d.ts +0 -480
  535. package/dist/src/execution/wire/session-inbox-wire.v3.js +0 -1
  536. package/dist/src/execution/wire/session-inbox-wire.v3.migration.d.ts +0 -3
  537. package/dist/src/execution/wire/session-inbox-wire.v3.migration.js +0 -1
  538. package/dist/src/execution/wire/session-inbox-wire.v4.d.ts +0 -267
  539. package/dist/src/execution/wire/session-inbox-wire.v4.js +0 -1
  540. package/dist/src/execution/wire/session-inbox-wire.v4.migration.d.ts +0 -3
  541. package/dist/src/execution/wire/session-inbox-wire.v4.migration.js +0 -1
  542. package/dist/src/execution/wire/session-inbox-wire.v5.d.ts +0 -341
  543. package/dist/src/execution/wire/session-inbox-wire.v5.js +0 -1
  544. package/dist/src/execution/wire/session-inbox-wire.v5.migration.d.ts +0 -3
  545. package/dist/src/execution/wire/session-inbox-wire.v5.migration.js +0 -1
  546. package/dist/src/execution/wire/session-inbox-wire.v6.d.ts +0 -341
  547. package/dist/src/execution/wire/session-inbox-wire.v6.js +0 -1
  548. package/dist/src/execution/wire/session-inbox-wire.v7.d.ts +0 -342
  549. package/dist/src/execution/wire/session-inbox-wire.v7.js +0 -1
  550. package/dist/src/execution/workflow-entry-crash.d.ts +0 -39
  551. package/dist/src/execution/workflow-entry-crash.js +0 -1
  552. package/dist/src/execution/workflow-entry-finalization.d.ts +0 -28
  553. package/dist/src/execution/workflow-entry-finalization.js +0 -1
  554. package/dist/src/execution/workflow-entry.d.ts +0 -37
  555. package/dist/src/execution/workflow-entry.js +0 -1
  556. package/dist/src/execution/workflow-steps.js +0 -1
  557. package/dist/src/subagents/handles/rebase.d.ts +0 -4
  558. package/dist/src/subagents/handles/rebase.js +0 -1
  559. /package/dist/src/{execution/next-driver-action.js → client/eve-agent-store-state.js} +0 -0
@@ -70,12 +70,12 @@ Each route receives these operation surfaces:
70
70
 
71
71
  Event handlers receive `(eventData, channel, ctx)`. `ctx.session.id` identifies
72
72
  the exact session, while `channel.continuation` exposes the current address and
73
- `rekey()` when this channel needs to move it. `session.failed` receives only
74
- `(eventData, channel)` because it runs outside session context; its event data
75
- contains `sessionId` directly.
73
+ `alias()` when this channel needs to add another address. `session.failed`
74
+ receives only `(eventData, channel)` because it runs outside session context;
75
+ its event data contains `sessionId` directly.
76
76
 
77
77
  `channel.continuation.token` is always the channel-local address accepted by
78
- `from()`, `resolveSession()`, and `rekey()`. Framework namespace prefixes are not
78
+ `from()`, `resolveSession()`, and `alias()`. Framework namespace prefixes are not
79
79
  part of the authored channel API.
80
80
 
81
81
  ## Channel operations and session handles
@@ -127,7 +127,11 @@ const inputResponses = parseInputResponses(decodedResponses);
127
127
  await source.respond(inputResponses, { auth });
128
128
  ```
129
129
 
130
- Message sends use the channel's `turnPolicy`, which defaults to `"steer"`. An accepted message arriving during an active turn is durably buffered before eve cancels that turn and starts the message as a replacement turn. Configure `turnPolicy: "queue"` on `defineChannel(...)` when active turns should finish in order, or override one send:
130
+ Message sends use the channel's `turnPolicy`, which defaults to `"steer"`. Before assistant answer output or local tool execution begins, steering interrupts pending model generation and applies the correction in the same turn. Executing tools finish and checkpoint their results first. After answer output starts, steering waits for the next committed workflow boundary. Reasoning and search progress do not count as answer output, and interrupted provider-managed search may run again. The turn ID stays the same.
131
+
132
+ A sent delivery can interrupt generation before your `deliver` hook runs. If the hook ignores the correction, eve resumes the original request with its original auth, delivery provenance, and channel state. Filter events before `send(...)` when they should never interrupt generation.
133
+
134
+ Configure `turnPolicy: "queue"` on `defineChannel(...)` when messages should wait for the active turn to finish, or override one send:
131
135
 
132
136
  ```ts
133
137
  export default defineChannel({
@@ -358,11 +362,11 @@ twilioContinuationToken("+15551234567", "+15557654321"); // "+15551234567:+15557
358
362
 
359
363
  Custom channels write their own function that joins the identity fields. The framework derives nothing for you; the channel owns its token format.
360
364
 
361
- When the identity that should address a session is not known until later, re-key the live address with `channel.continuation?.rekey(rawToken)`. The runtime preserves the current channel namespace.
365
+ When another identity should address a session, add it with `channel.continuation?.alias(rawToken)`. The runtime preserves the current channel namespace and exposes the new token as `channel.continuation.token` for later handlers.
362
366
 
363
- Re-keying changes the address of the current session. `reset` is different: it terminally retires the current session and makes its existing address available to a later `send()`. `cancel` is narrower still: it stops only the active turn and leaves the session, history, and continuation-token ownership intact.
367
+ Aliasing adds an address to the current session. Earlier addresses continue to resolve to the same session and accept the same payloads. `reset` terminally retires the current session and makes all its addresses available to later `send()` calls. `cancel` stops only the active turn and leaves the session, history, and continuation-token ownership intact.
364
368
 
365
- The `context(state, session)` config option builds the per-step `channel` argument handed to every event handler. It receives the channel's live adapter `state` and a `SessionHandle`, and returns the channel-owned context (thread handles, API clients, late-bound callbacks). The framework injects [`ChannelContinuationOps`](#define-a-channel) and passes the result as the second positional argument to each handler. Closing over `session` lets the factory register callbacks that re-key the address later. State mutations made through the returned context are written back to adapter state.
369
+ The `context(state, session)` config option builds the per-step `channel` argument handed to every event handler. It receives the channel's live adapter `state` and a `SessionHandle`, and returns the channel-owned context (thread handles, API clients, late-bound callbacks). The framework injects [`ChannelContinuationOps`](#define-a-channel) and passes the result as the second positional argument to each handler. Closing over `session` lets the factory register callbacks that add an alias later. State mutations made through the returned context are written back to adapter state.
366
370
 
367
371
  ```ts
368
372
  import { defineChannel } from "eve/channels";
@@ -376,7 +380,7 @@ defineChannel<{ ref: string | null }>({
376
380
  state,
377
381
  registerAnchor(ref: string) {
378
382
  state.ref = ref;
379
- session.continuation?.rekey(ref);
383
+ session.continuation?.alias(ref);
380
384
  },
381
385
  };
382
386
  },
@@ -389,7 +393,9 @@ defineChannel<{ ref: string | null }>({
389
393
  });
390
394
  ```
391
395
 
392
- At the next workflow boundary, the runtime claims the new park hook before releasing the old token. If another active session already owns the new token, the re-keying session fails instead of taking it over. After a successful re-key, inbound deliveries still addressed to the old token are dropped, so coordinate with your senders to use the new token.
396
+ At the next workflow boundary, the runtime adds the new address to the session's merged inbox. If another active session already owns the new token, the aliasing session fails instead of taking it over. Every address claimed by the session remains active until the session ends or resets. Sessions with continuation addresses remain on their current deployment until Workflow supports atomic ownership transfer.
397
+
398
+ Tokens must be nonempty. A session supports up to 256 addresses, including its stable inbox; repeating an existing alias does not consume another address.
393
399
 
394
400
  ## File uploads
395
401
 
@@ -78,7 +78,9 @@ curl -X POST https://<deployment>/eve/v1/session/wrun_A \
78
78
  -d '{"inputResponses":[{"requestId":"req_A","optionId":"approve"}]}'
79
79
  ```
80
80
 
81
- Follow-up messages use `turnPolicy: "steer"` by default. If a turn is active, eve buffers the message before cooperatively cancelling that turn, then starts the follow-up as a replacement turn with a new turn ID. Set `turnPolicy: "queue"` on `eveChannel(...)` when follow-ups should wait for active turns to finish. `inputResponses` never steer.
81
+ Follow-up messages use `turnPolicy: "steer"` by default. Before assistant answer output or local tool execution begins, steering interrupts pending model generation and applies the correction in the same turn. Executing tools finish and checkpoint their results first. After answer output starts, steering waits for the next committed workflow boundary. Reasoning and search progress do not count as answer output; interrupted provider-managed search may run again. The turn ID stays the same.
82
+
83
+ Set `turnPolicy: "queue"` on `eveChannel(...)` when follow-ups should wait for active turns to finish. `inputResponses` answer their addressed requests.
82
84
 
83
85
  Sending a message to an unknown, terminal, or not-yet-active session ID returns `409` with
84
86
  `{"code":"session_not_active","error":"The session is no longer active.","ok":false}`.
@@ -16,7 +16,7 @@ export default linqChannel({
16
16
  });
17
17
  ```
18
18
 
19
- The default webhook route is `/eve/v1/linq`. The channel verifies forwarded webhooks with same-project Vercel OIDC by default, derives user auth from each message author, marks accepted messages as read, and continues the same eve session for every message in a Linq conversation. A new accepted message cooperatively cancels an active turn and steers its replacement turn.
19
+ The default webhook route is `/eve/v1/linq`. The channel verifies forwarded webhooks with same-project Vercel OIDC by default, derives user auth from each message author, marks accepted messages as read, and continues the same eve session for every message in a Linq conversation. A new accepted message steers the active turn. Before answer output or local tool execution begins, steering can interrupt pending model generation. Executing tools finish first; after answer output starts, steering waits for the next committed workflow boundary. See [Overlapping messages](./overview#overlapping-messages).
20
20
 
21
21
  Set `turnPolicy: "queue"` when every response should finish before Linq starts the next message.
22
22
 
@@ -28,7 +28,9 @@ own.
28
28
 
29
29
  ## Overlapping messages
30
30
 
31
- Channels default to `turnPolicy: "steer"`. When an accepted message arrives while a turn is active, eve first durably buffers the message, then cooperatively cancels the active turn and starts a replacement turn. The cancelled turn emits `turn.cancelled` followed by `session.waiting`; the replacement starts with a new turn ID. Output already streamed and completed side effects are not rolled back.
31
+ Channels default to `turnPolicy: "steer"`. Before assistant answer output or local tool execution begins, a message can interrupt pending model generation and continue the same turn with the correction. Executing tools finish and checkpoint their results before steering reaches the next model call. After answer output starts, steering waits for the next committed workflow boundary. The turn ID stays the same.
32
+
33
+ Reasoning and search progress do not count as answer output. Interrupted provider-managed search may run again; completed local tools are preserved.
32
34
 
33
35
  Set `turnPolicy: "queue"` on any built-in or custom channel when each turn must finish before the next message starts:
34
36
 
@@ -45,7 +47,7 @@ Adjacent queued messages can combine into one turn only when their full auth con
45
47
 
46
48
  `from(address).send(...)`, fixed `Session.send(...)`, cross-channel sends, and Chat SDK bridge sends also accept a per-send `turnPolicy` override. Pure `inputResponses` deliveries answer their pending request without steering. Explicit `cancel()` remains the stop-without-replacement operation.
47
49
 
48
- Channel admission still runs first. Ignored mentions, rejected signatures, duplicates, and any other dropped platform events never affect the active turn.
50
+ Events rejected before `send(...)`, such as invalid signatures or filtered mentions, never reach the active turn. A delivery already sent to the session can interrupt pending generation before the channel's `deliver` hook processes it. If that hook ignores the correction, eve resumes the original request with its original auth, delivery provenance, and channel state.
49
51
 
50
52
  Each channel has its own provider terms, data flow, auth model, and user-consent expectations. Before sending non-public, sensitive, regulated, or production data through a channel, confirm that the channel provider and your configured scopes, signature checks, route auth, and delivery behavior are appropriate for your use case.
51
53
 
@@ -25,7 +25,10 @@ The default webhook route is `/eve/v1/photon`. The channel verifies forwarded
25
25
  webhooks with same-project Vercel OIDC by default, derives user auth from each
26
26
  message author, marks accepted messages as read, and continues the same eve
27
27
  session for every message in an iMessage conversation. A new accepted message
28
- cooperatively cancels an active turn and steers its replacement turn.
28
+ steers the active turn. Steering can interrupt pending model generation before
29
+ answer output or local tool execution begins. Executing tools finish first;
30
+ after answer output starts, steering waits for the next committed workflow
31
+ boundary. See [Overlapping messages](./overview#overlapping-messages).
29
32
 
30
33
  Set `turnPolicy: "queue"` when every response should finish before Photon starts the next message.
31
34
 
@@ -294,7 +294,9 @@ export default slackChannel({
294
294
 
295
295
  #### Control overlapping turns
296
296
 
297
- Accepted Slack messages use cancellation-backed steering by default: eve buffers the new message, cancels the active turn, and starts a replacement turn. Admission happens first, so ignored mentions and messages rejected by your hooks never cancel work. Set `turnPolicy: "queue"` when every active turn should finish:
297
+ Accepted Slack messages steer by default. Before assistant answer output or local tool execution begins, steering interrupts pending model generation and continues the same turn with the correction. Executing tools finish and checkpoint their results first; after answer output starts, steering waits for the next committed workflow boundary. Reasoning and search progress do not count as answer output, and interrupted provider-managed search may run again.
298
+
299
+ Mentions and messages filtered before sending never reach the active turn. See [Overlapping messages](./overview#overlapping-messages) for deliveries ignored later by a channel's `deliver` hook. Set `turnPolicy: "queue"` when every active turn should finish:
298
300
 
299
301
  ```ts title="agent/channels/slack.ts"
300
302
  export default slackChannel({
@@ -13,7 +13,7 @@ Work nests in three levels:
13
13
  - **turn**: one user message and all the work it triggers (model calls, tool calls, reasoning) until the agent produces its response.
14
14
  - **step**: a durable checkpoint inside a turn. By default, it contains one model call and the inline tool calls that follow it.
15
15
 
16
- Every turn runs as a durable workflow, built on the open-source [Workflow SDK](https://workflow-sdk.dev/) (Vercel Workflow when you deploy on Vercel). eve checkpoints progress and serializes durable state at each step boundary. Your code runs inside a managed step, so tools, the sandbox, and subagents feel synchronous even though the session underneath them is durable.
16
+ Every session runs as one durable workflow, built on the open-source [Workflow SDK](https://workflow-sdk.dev/) (Vercel Workflow when you deploy on Vercel). The session workflow executes each turn and checkpoints progress at step boundaries. Your code runs inside a managed step, so tools, the sandbox, and subagents feel synchronous even though the session underneath them is durable.
17
17
 
18
18
  The experimental
19
19
  [`workflow.modelCallsPerStep`](../agent-config#workflow-checkpoint-batching)
@@ -21,9 +21,40 @@ agent setting can group several sequential model-and-tool cycles into one
21
21
  Workflow step. This reduces checkpoint overhead but makes the entire group one
22
22
  replay unit.
23
23
 
24
- The Workflow SDK is not inherently tied to Vercel. In local development and in a self-deployed `eve start` process, eve uses the SDK's local world by default; that world persists workflow runs on disk under `.eve/.workflow-data` and dispatches through the same Nitro-hosted workflow routes. On Vercel, the same workflow code runs against Vercel Workflow instead, which adds platform features such as latest production deployment routing and dashboard run metadata.
24
+ The Workflow SDK is not inherently tied to Vercel. In local development and in a self-deployed `eve start` process, eve uses the SDK's local world by default; that world persists workflow runs on disk under `.eve/.workflow-data` and dispatches through the same Nitro-hosted workflow routes. On Vercel, the same workflow code runs against Vercel Workflow instead, which adds deployment-aware routing and dashboard run metadata.
25
25
 
26
- When a Vercel production deployment changes, the next model turn in an existing session uses that deployment's current system-role instructions, model, and tools. Static user-role instructions stay pinned in the durable conversation history and are not seeded again. Identity-based channels such as Telegram private chats and Twilio phone-number conversations therefore adopt agent behavior updates without duplicating or rewriting their existing context.
26
+ When a Vercel production deployment changes, a new delivery to an idle session hands the session's settled state to the exact deployment that accepted the request. This applies whether the delivery arrives through the session ID or through any channel continuation address the session has claimed. The session keeps its original ID and event stream, while the next model turn uses that deployment's current system-role instructions, model, and tools. Static user-role instructions stay pinned in the durable conversation history and are not seeded again. A successful handoff restarts the session's original configured [`sessionTimeoutMs`](../agent-config#runtime-limits) duration; disabled timeouts stay disabled. Failed or skipped handoffs keep the existing deadline.
27
+
28
+ Before taking ownership, the target deployment validates the checkpoint's stored tasks and subagent handles and checks that no pending work remains. This includes settled tasks. If that validation fails, the previous owner recovers the session and processes the triggering delivery. Task and handle state preserve unknown metadata fields, while known fields and lifecycle rules must still be valid. Authored session state remains opaque to this validation.
29
+
30
+ eve does not move live work between deployments. A session with a running turn, pending human input or authorization, queued messages, or active tasks and subagents stays on its current deployment. After that work settles, a later delivery can move the idle session; the earlier deployment signal is not remembered.
31
+
32
+ ### Upgrading sessions from the former execution model
33
+
34
+ You can upgrade directly from a release that used a session driver and separate
35
+ turn workflows. When an existing driver next dispatches a turn to this deployment,
36
+ eve imports its committed conversation into the current runtime. The session
37
+ keeps its ID, history, authored state, usage, limits, and original event stream.
38
+ Subsequent turns use the new deployment's instructions, model, and tools.
39
+
40
+ This is a one-time interruption of pending work. Old tool calls, subagents,
41
+ input requests, and authorization attempts are abandoned; start that work again
42
+ if it is still needed. Messages already buffered exclusively inside the old
43
+ driver are not imported. The triggering message is preserved without repeating
44
+ committed tool effects.
45
+
46
+ Import supports drivers started on eve 0.45 or later. A session from an older
47
+ release reports itself inactive on its next message, and its channel starts a
48
+ fresh session.
49
+
50
+ Keep the original deployment available until these sessions end. Their old
51
+ drivers remain waiting to keep the original streams open; the current runtime
52
+ owns subsequent turns. Import restarts the original configured session timeout;
53
+ disabled timeouts stay disabled. A driver
54
+ that has not reached its next turn dispatch has not migrated yet.
55
+
56
+ Transparent rollback to the former execution model is unsupported. Retire and
57
+ restart affected sessions before rolling back.
27
58
 
28
59
  Nitro hosts the HTTP routes and workflow entrypoints. It does not supply the workflow state store or the sandbox runtime. Those are separate adapters: Workflow uses the active world implementation, and Sandbox uses the backend from `agent/sandbox` or `defaultBackend()`.
29
60
 
@@ -70,9 +101,9 @@ executions from the same batch. Approval, input, blocking coordination, and
70
101
  background-task boundaries still force a checkpoint before eve waits or
71
102
  acknowledges the work.
72
103
 
73
- Steering does not replay or discard the whole batch. eve aborts the active
74
- model-and-tool cycle, commits earlier completed cycles in the batch, and starts
75
- the replacement turn from that state in the next Workflow step.
104
+ Steering can interrupt pending model generation before assistant output begins.
105
+ An executing tool finishes safely, then the batch yields before another model
106
+ call so the owner can apply accepted steering within the same turn.
76
107
 
77
108
  Durability itself needs no configuration. eve owns the workflow lifecycle, and
78
109
  sessions are durable by default; checkpoint batching is an explicit
@@ -102,15 +133,33 @@ ID-addressed HTTP delivery and a channel-address delivery both target the
102
133
  session's current command inbox; neither is a general message queue.
103
134
 
104
135
  Only one active session can own a channel continuation token. A channel-created
105
- session commits both its stable session-ID alias and its channel alias before
106
- processing the first turn, and fails creation if another run already owns the
107
- channel alias. Rekeying replaces only that channel alias. An HTTP-created
108
- session has the stable ID alias and no channel continuation token. Competing
109
- channel input is not forwarded to the owner.
136
+ session claims both its stable session-ID inbox and its initial channel address
137
+ before processing the first turn, and fails creation if another run already
138
+ owns the channel address. Aliasing adds another continuation address to the
139
+ same session; every previously claimed address remains active until the session
140
+ ends or resets. An ID-only HTTP session has the stable inbox and no channel
141
+ continuation address. When cold starts race for the same address, the losing
142
+ candidate forwards its accepted message to the owner and exits.
143
+
144
+ Channel delivery attempts to resume the address before creating a session.
145
+ After Workflow accepts the delivery, eve resolves the stable session ID for
146
+ the returned handle. That identity lookup does not block workflow resumption.
147
+ ID-addressed delivery already knows the session ID and needs no hook metadata
148
+ lookup. An ambiguous delivery failure does not trigger session creation.
149
+
150
+ While a handoff is in progress, the session's addresses are briefly unowned.
151
+ The releasing owner leaves a short-lived marker for each address, so a
152
+ delivery that lands in that interval retries until the successor claims the
153
+ address instead of being reported as an inactive session. A channel therefore
154
+ never starts a replacement session for an address that is mid-handoff.
155
+
156
+ When a session is waiting, a delivery through its ID or any claimed channel address wakes it and starts the next turn. Message sends default to `turnPolicy: "steer"`. Before assistant output begins, the session owner signals pending model generation to stop, then applies the correction within the same turn and with the same turn ID. This includes model requests that perform provider-managed search before answering; interrupted search work may run again. Reasoning and search progress do not count as assistant output.
157
+
158
+ An executing eve tool finishes and commits its result before steering reaches the next model request. Steering does not cancel the turn or its background tasks. After assistant output starts, steering applies at the next committed workflow boundary and preserves streamed text. A message that reaches the boundary after the turn has settled starts another turn.
110
159
 
111
- When a session is waiting, a delivery through its ID or current channel address wakes it and starts the next turn. Message sends default to `turnPolicy: "steer"`: while a turn is active, the session driver durably buffers the replacement before requesting cooperative cancellation. The interrupted turn emits `turn.cancelled` followed by `session.waiting`, then the replacement starts with a new turn ID. Partial output and completed side effects are not rolled back.
160
+ Once eve publishes an input request or begins publishing turn completion or failure, eve finishes committing that boundary before applying new messages.
112
161
 
113
- `turnPolicy: "queue"` preserves the message until the active turn settles. If several deliveries are ready when the driver checks, eve may fold adjacent messages into the next turn while preserving their arrival order. Pure `inputResponses` deliveries do not steer; they remain available to the pending request they address.
162
+ `turnPolicy: "queue"` preserves the message until the active turn settles. If several deliveries are ready when the owner checks, eve may fold adjacent messages into the next turn while preserving their arrival order. Pure `inputResponses` deliveries do not steer; they remain available to the pending request they address.
114
163
 
115
164
  Every built-in and custom channel accepts a default `turnPolicy`, and imperative message sends can override it. The policy is part of the same durable delivery command as the message, so concurrent senders cannot separate replacement ownership from cancellation intent. Separate sessions still run independently.
116
165
 
@@ -11,15 +11,22 @@ The HTTP API and TypeScript client use one durable `sessionId` for messages,
11
11
  controls, and streams. Every operation targets that exact session; none follows
12
12
  or creates a replacement implicitly.
13
13
 
14
+ The session ID currently identifies the original Workflow run that owns the
15
+ event stream. A deployment handoff changes the executing run, not the session
16
+ ID or stream. Stream namespaces belong to a run; eve does not support
17
+ caller-assigned session IDs or globally addressed streams.
18
+
14
19
  Authored channels also have channel-local continuation tokens. A token addresses
15
20
  whichever session currently owns a platform conversation, such as a Slack thread.
16
21
  That identity stays behind the channel boundary and is never accepted or returned
17
22
  by the eve HTTP session API. See [Custom channels](../channels/custom#channel-operations-and-session-handles).
18
23
 
19
24
  Sessions last 30 days by default; configure `limits.sessionTimeoutMs` in
20
- `agent.ts`, or set it to `false` to disable the deadline. At expiration, eve
25
+ `agent.ts`, or set it to `false` to disable the deadline. A successful deployment
26
+ handoff or legacy-session import restarts the original configured duration.
27
+ Ordinary messages and process restarts keep the existing deadline. At expiration, eve
21
28
  lets an active turn settle, emits `session.completed`, and releases the
22
- continuation so the next qualifying channel message starts fresh. Stored
29
+ session's continuation addresses so the next qualifying channel message starts fresh. Stored
23
30
  session data is not deleted. See [Agent config](../agent-config#runtime-limits).
24
31
 
25
32
  React, Vue, and Svelte apps reach for [`useEveAgent()`](../guides/frontend/overview) instead of calling these routes by hand. Next.js and Nuxt apps can proxy them to the eve runtime from the same origin.
@@ -164,7 +171,7 @@ Three more things to know:
164
171
  - **Ids identify events, not intent.** Two events with identical payloads — the `step.failed` → `turn.failed` → `session.failed` cascade, or two identical text deltas in one step — are distinct events with distinct ids. Deduplicate on `meta.id` only; matching on content would drop real data.
165
172
  - **A subagent's event is re-emitted, not shared.** When a parent forwards a child's event onto its own stream, the parent's copy is a separate event with its own id. Correlate the two streams through `subagent.called.data.childSessionId`.
166
173
 
167
- Authored [hooks](../guides/hooks) receive the same envelope, but observe each event as it is emitted rather than as it is read — so a hook sees a retry as new events, and `meta.id` is a key for a stored row rather than a retry guard. Two things a hook does not have to defend against: a turn that parks for human input resumes without re-emitting anything it already sent, and a retried turn dispatch cannot double-stream a turn, because only one turn run can claim a session's turn inbox.
174
+ Authored [hooks](../guides/hooks) receive the same envelope, but observe each event as it is emitted rather than as it is read — so a hook sees a retry as new events, and `meta.id` is a key for a stored row rather than a retry guard. Two things a hook does not have to defend against: a turn that parks for human input resumes without re-emitting anything it already sent, and a retried turn dispatch cannot double-stream a turn, because one session owner executes it.
168
175
 
169
176
  ## Send a follow-up message
170
177
 
@@ -184,7 +191,7 @@ curl -X POST http://127.0.0.1:2000/eve/v1/session/<sessionId> \
184
191
  -d '{"inputResponses":[{"requestId":"req_A","optionId":"approve"}]}'
185
192
  ```
186
193
 
187
- Message sends default to cancellation-backed `"steer"`; if a turn is active, eve buffers the follow-up, cancels that turn, and starts the message under a new turn ID. Channels and TypeScript `Session.send(...)` calls can select `turnPolicy: "queue"` when active work should finish first. Structured `inputResponses` never steer.
194
+ Message sends default to `"steer"`. Before assistant output begins, eve interrupts pending model generation and continues the same turn with the correction. Reasoning and provider search progress do not count as assistant output. An executing eve tool finishes safely, and its result is preserved before the correction reaches the next model call. After assistant output starts, steering applies at the next committed workflow boundary; text already streamed remains visible. Channels and TypeScript `Session.send(...)` calls can select `turnPolicy: "queue"` when the active turn should finish first. Structured `inputResponses` answer their addressed requests.
188
195
 
189
196
  If the session is waiting on a human-in-the-loop approval, respond with the channel’s Approve or Cancel controls. Text messages do not decide an approval; unrelated text starts an ordinary turn while the approval stays pending and answerable. A later structured `inputResponses` answer keyed by its `requestId` still resumes the original tool call, even after intervening turns.
190
197
 
@@ -194,7 +201,7 @@ A structured response matches any currently pending request by ID, not only the
194
201
 
195
202
  One delivery can answer requests from several batches. eve resumes approval-bearing batches in durable order and carries later answers forward until each batch can resume.
196
203
 
197
- Multiple replacement messages retain their durable arrival order and may be folded into the same replacement turn when they arrive before cancellation settles. See [message delivery and steering](./execution-model-and-durability#message-delivery-and-steering) for the current runtime contract.
204
+ Multiple steering messages retain their durable arrival order and may be folded into one input at the next boundary. A message accepted after turn settlement starts the next turn. See [message delivery and steering](./execution-model-and-durability#message-delivery-and-steering).
198
205
 
199
206
  ## Cancel the in-flight turn
200
207
 
@@ -244,6 +251,8 @@ Reset terminally retires the exact session ID. A reset ID never becomes a new se
244
251
 
245
252
  The stream is durable. Every event is recorded before a step completes, so consumers can reconnect from their cursor when an HTTP connection ends. A nonnegative `startIndex` is an absolute event count: use it to pick up where you dropped off or pass `0` to rewind to the start.
246
253
 
254
+ When automatic reconnection is enabled and `startIndex` is nonnegative, the TypeScript client requests renewable leases over that durable stream. A server that supports leases sends transport heartbeats during quiet periods, then ends the response so the client reconnects from its current cursor. This bounds server-side stream readers even when a host does not report that the client disconnected. The lease renewal and heartbeats are transport details: they do not stop the run or appear as session events. Tail-relative reads and streams with reconnection disabled do not request leases.
255
+
247
256
  If a reconnect overlaps events you already handled, [`meta.id`](#the-event-envelope) identifies the duplicates: it is unchanged across reconnects and rewinds, so a consumer keyed on it can replay safely.
248
257
 
249
258
  ```bash
@@ -12,7 +12,7 @@ You need:
12
12
  - npm, which Node.js includes
13
13
  - A credential for the model your agent uses
14
14
 
15
- The default scaffolded model routes through the Vercel AI Gateway. Set `AI_GATEWAY_API_KEY`, or link a Vercel project to use `VERCEL_OIDC_TOKEN`. To use a model provider directly, install its AI SDK provider package and set the provider's API key.
15
+ Connect a ChatGPT subscription, a Vercel account, or an AI Gateway, OpenAI, or Anthropic API key in the terminal UI. You do not need a Vercel project to start chatting.
16
16
 
17
17
  Choose a model, provider, and channel that meet your data-processing and compliance requirements.
18
18
 
@@ -24,7 +24,11 @@ Run `eve init` with a project name:
24
24
  npx eve@latest init my-agent
25
25
  ```
26
26
 
27
- The command creates the project, installs dependencies, and initializes Git. After scaffolding, eve offers to start the development server or, if a supported coding agent is installed, to open the project in the coding agent.
27
+ The command creates the project, installs dependencies, initializes Git, and opens the terminal UI. eve reuses an available model connection or opens `/login`. Once connected, type your first message. Channel and integration setup is optional; use `/add` when you need it.
28
+
29
+ In `/add`, search by name or capability, such as `iMessage` or `SMS`. The picker matches item names, addresses, titles, and descriptions. Select an item to install it and complete its required setup.
30
+
31
+ During startup, the status line shows what eve is waiting for. If you choose a Vercel account, finish signing in in your browser and select a team when prompted. eve checks that team's AI Gateway access and applies the connection before returning to the composer. Changing only the account, team, or key does not rebuild your agent. Once connected, you can send your first message while the agent information refreshes in the background; no restart is required.
28
32
 
29
33
  To add eve to a project that already has a `package.json`, run this command from its root before you create any `agent/` files:
30
34
 
@@ -44,7 +48,7 @@ npx eve@latest init my-agent --model openai/gpt-5.6-terra --reasoning high
44
48
 
45
49
  ## Run the agent
46
50
 
47
- Choose **Start eve dev** after scaffolding, or run this from the project root:
51
+ The terminal UI opens after interactive initialization. To return later, run this from the project root:
48
52
 
49
53
  ```bash
50
54
  npm run dev
@@ -118,7 +118,7 @@ export default await withEve({
118
118
  });
119
119
  ```
120
120
 
121
- A Vercel project can use only one configuration source, so remove `vercel.json` when adopting `vercel.ts`. Keep `eve` in the root package dependencies so Vercel can import `eve/vercel` while evaluating the configuration. Pass `{ root: "/absolute/workspace/path" }` as the second argument only when `vercel.ts` is evaluated from somewhere other than the workspace root.
121
+ A Vercel project can use only one configuration source, so remove `vercel.json` when adopting `vercel.ts`. Keep `eve` in the root package dependencies so Vercel can import `eve/vercel` while evaluating the configuration. `withEve` discovers the workspace containing its evaluation directory, including Vercel's temporary `.vercel` configuration directory. Pass `{ root: "/absolute/workspace/path" }` as the second argument only when you need to select a specific workspace root.
122
122
 
123
123
  An authored eve service routed at `/eve/v1` already uses the protocol path; callbacks remain at `/eve/v1/callback/*`. A named mount such as `/support` adds that mount before the protocol path, giving `/support/eve/v1/callback/*`.
124
124
 
@@ -9,42 +9,65 @@ description: "Use eve locally or connect to a deployed agent from an interactive
9
9
  eve dev
10
10
  ```
11
11
 
12
+ The footer shows the active model and connection separated by dots. Vercel account connections show the team slug once it resolves; the local server port is omitted.
13
+
12
14
  The transcript remains in your terminal scrollback after you exit. Run `/help` in the UI to see the commands available in the current session.
13
15
 
14
16
  ## Commands
15
17
 
16
- | Command | Description |
17
- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
18
- | `/model` | Configure the model and its provider. Pass a model ID to set it directly: `/model provider/model-id`. |
19
- | `/add` | Select and install channels, MCP connections, extensions, and observability integrations. Pass an item address to confirm and install it directly: `/add channel/slack`. |
20
- | `/deploy` | Deploy the agent to Vercel production. Links the directory first if needed. |
21
- | `/vc:install` | Install the Vercel CLI. |
22
- | `/vc:login` | Log in to Vercel or restore access to a remote deployment. |
23
- | `/info` | Show the resolved application, compiled artifacts, discovery diagnostics, and messaging routes. |
24
- | `/loglevel` | Choose which server and agent logs appear in the transcript. |
25
- | `/traces` | Open the local trace viewer. Pass a trace ID prefix to open a specific trace. |
26
- | `/reset` | Start a fresh session. |
27
- | `/cancel` | Cancel the current turn without discarding settled context. |
28
- | `/clear` | Clear the session's model-message history. `/new` is an alias. |
29
- | `/compact` | Compact the current session's context. |
30
- | `/exit` | Quit the UI. |
31
- | `/help` | List available commands. |
32
-
33
- `/model`, `/add`, `/deploy`, `/info`, and `/traces` are available when `eve dev` runs locally. They are unavailable when the UI connects to a server with `--url`.
18
+ | Command | Description |
19
+ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
20
+ | `/login` | Connect a ChatGPT subscription, Vercel account, or provider API key. |
21
+ | `/model` | Choose the model and its settings. Pass a model ID to set it directly: `/model provider/model-id`. |
22
+ | `/add` | Select and install channels, MCP connections, extensions, and observability integrations. Pass an item address to install it directly: `/add channel/slack`. |
23
+ | `/deploy` | Deploy the agent to Vercel production. Installs the Vercel CLI, signs in, and links the directory if needed. |
24
+ | `/info` | Show the resolved application, compiled artifacts, discovery diagnostics, and messaging routes. |
25
+ | `/loglevel` | Choose which server and agent logs appear in the transcript. |
26
+ | `/traces` | Open the local trace viewer. Pass a trace ID prefix to open a specific trace. |
27
+ | `/reset` | Start a fresh session. |
28
+ | `/cancel` | Cancel the current turn without discarding settled context. |
29
+ | `/clear` | Clear the session's model-message history. `/new` is an alias. |
30
+ | `/compact` | Compact the current session's context. |
31
+ | `/exit` | Quit the UI. |
32
+ | `/help` | List available commands. |
33
+
34
+ `/login`, `/model`, `/add`, `/deploy`, `/info`, and `/traces` are available when `eve dev` runs locally. They are unavailable when the UI connects to a server with `--url`.
34
35
 
35
36
  ## Set up a new agent
36
37
 
37
- After `eve init`, the terminal UI guides you through **Model**, **Channels**, **Integrations**, and **Review** before the first chat prompt. The progress rail keeps the four steps visible throughout onboarding. Model setup can install or upgrade the Vercel CLI, open Vercel login, and resume project linking without leaving the flow.
38
+ After interactive `eve init`, the TUI opens directly. eve keeps the project's selected connection. For a new connection, it checks explicit environment credentials, the saved machine default, and then the Vercel CLI's current team. Existing project OIDC connections remain supported. Automatic Vercel reuse validates account access without creating or linking a project.
38
39
 
39
- Model and Vercel changes take effect when you complete Model, then onboarding continues to Channels. Channel and integration selections remain drafts until you finish Review. You can move back and forth between Channels, Integrations, and Review; use `/model` after onboarding to change the committed model configuration.
40
+ During startup, the composer stays visible while a progress indicator names the connection being checked and shows when eve is preparing your chat. Type a message and press `Enter` to queue it for when the agent is ready. A picker temporarily takes over input when a choice or API key is needed; your draft returns afterward. If setup is cancelled or fails, queued messages return to the draft.
40
41
 
41
- ## Add an integration
42
+ If no connection is ready, `/login` offers:
43
+
44
+ 1. Vercel Account
45
+ 2. Vercel AI Gateway API Key
46
+ 3. ChatGPT Subscription
47
+ 4. OpenAI API Key
48
+ 5. Anthropic API Key
49
+
50
+ Vercel account login opens a browser. When multiple teams are available, `/login` shows a searchable team picker with the current project or CLI team highlighted so you can switch teams. A sole available team is selected automatically. Automatic startup reuses the selected connection without opening this picker. Account-token access to Gateway depends on availability for your account and team; if it is unavailable, choose an API key or another connection.
51
+
52
+ Type to filter a menu, press `Enter` to select, or `Esc` to return to chat. Dismissing a setup menu adds no cancellation message to the transcript; completed work and failures still appear. Arrow navigation is also available. Cancelling login preserves your draft. If a connection fails, retry `/login`; eve does not silently switch providers.
53
+
54
+ ### Credentials and deployment
55
+
56
+ eve saves API keys and eve-owned OAuth refresh credentials in the OS secret store through just-secrets. It saves the last successful login as the machine default and records the project's connection and team separately as nonsecret metadata in `.eve/provider.json`. Newly entered keys are never written into project files. A key explicitly selected through `/login` takes precedence over another key for that provider in your shell; a project connected through environment credentials continues to use its environment. Vercel CLI retains ownership of its credentials and refresh tokens.
42
57
 
43
- Bare `/add` opens the standalone planner on **Channels**. It does not include model configuration. The progress rail shows selection counts as you move between **Channels**, **Integrations**, and **Review**.
58
+ Local discovery runs only in development. Deployments need explicitly provisioned `AI_GATEWAY_API_KEY`, `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, or supported project OIDC credentials. ChatGPT subscription models are local-only. `/login` does not link a deployment or authenticate a remote server; `/deploy` handles Vercel CLI installation and account login when needed.
44
59
 
45
- Press `Space` or `Enter` to toggle the highlighted item. Press `Right Arrow` to preserve the current selections and continue, `Left Arrow` to preserve them and go back, or `Esc` to cancel. Installation requires `Enter` on **Install and set up** from Review. During installation, `Esc` cancels only the active item and continues with the remaining selections. The final summary reports installed, cancelled, and failed items separately.
60
+ ### Models and settings
46
61
 
47
- Pass an item address to `/add` to confirm and install that exact address without opening the planner:
62
+ `/model` opens the model picker and settings. Each completed selection applies immediately and returns to chat; there is no final Done step. A successful login or model change takes effect on the next prompt.
63
+
64
+ OpenAI, ChatGPT, and Gateway connections default to `gpt-5.6-luna-fast`; Anthropic defaults to `claude-sonnet-5`. An explicitly authored compatible model stays selected. If a new default is unavailable, eve offers the connection's available models. Dynamic or custom model expressions must be edited in `agent.ts`.
65
+
66
+ ## Add an integration
67
+
68
+ `/add` opens one searchable catalog of channels, connections, extensions, and integrations. Type to filter and press `Enter` to install one item and run its required setup. The flow returns to chat afterward.
69
+
70
+ Pass an item address to install it directly:
48
71
 
49
72
  ```text
50
73
  /add channel/slack
@@ -53,13 +76,15 @@ Pass an item address to `/add` to confirm and install that exact address without
53
76
  /add @acme/analytics
54
77
  ```
55
78
 
56
- The UI installs planner selections in order and offers deployment once after the batch when an installed item requires it.
79
+ Required authorization or deployment setup still runs for the selected item. Press `Esc` to cancel setup; files already installed remain in the project.
57
80
 
58
81
  ## Work with the agent
59
82
 
60
83
  Type a message and press `Enter` to send it. When the agent asks a question or requests tool approval, respond in the prompt shown by the UI. Connection authorization can open a browser; keep local `eve dev` running until the browser returns to it.
61
84
 
62
- While a turn is running, `Enter` queues a follow-up message. Press `Esc` or `Ctrl+C` to cancel the turn; when messages are queued, this uses the oldest queued message as the next turn instead. If a direct cancellation requested with `/cancel` or `Ctrl+C` does not settle, press `Ctrl+C` to stop waiting. The UI then returns to the prompt and asks you to press `Ctrl+C` again to exit. At an idle prompt, press `Ctrl+C` twice to exit.
85
+ While a turn is running, `Enter` sends your message immediately as steering. Before assistant output begins, the runtime interrupts pending model generation and continues the same turn with your correction. Executing tools finish safely. After output begins, steering applies at the next workflow boundary and preserves streamed text.
86
+
87
+ Slash commands wait until the turn ends, except `/cancel`, which cancels directly. If the session does not support steering, messages queue for the next turn. Press `Esc` or `Ctrl+C` to cancel a turn with no queued messages. With queued messages, these keys select the oldest message for steering, or for the next turn if steering is unavailable. If a direct cancellation requested with `/cancel` or `Ctrl+C` does not settle, press `Ctrl+C` to stop waiting. The UI then returns to the prompt and asks you to press `Ctrl+C` again to exit. At an idle prompt, press `Ctrl+C` twice to exit.
63
88
 
64
89
  | Key | Action |
65
90
  | ------------- | ----------------------------------------------------------------------------------------------------------------------- |
@@ -104,7 +129,9 @@ eve dev https://user:pass@your-app.example.com
104
129
  eve dev https://your-app.example.com -H 'Authorization: Bearer your_token_here'
105
130
  ```
106
131
 
107
- For a Vercel deployment that needs authentication, run `/vc:login` and follow the prompt. Remote sessions do not modify the local project's Vercel link or `.env.local`.
132
+ Remote Vercel sessions reuse an existing authorized CLI session. They do not open an account login flow or modify the local project's Vercel link or `.env.local`.
133
+
134
+ When Deployment Protection blocks startup, eve verifies the target project and asks before adding a Trusted Sources rule for development access to that deployment's environment. After approval, eve applies the rule and checks access again before returning to chat. Cancelling preserves your draft; restart `eve dev <url>` to try again. If you cannot change the project's policy, provide `VERCEL_AUTOMATION_BYPASS_SECRET` or ask a project administrator to configure access in Deployment Protection settings.
108
135
 
109
136
  ## What to read next
110
137
 
@@ -107,7 +107,9 @@ await agent.send([
107
107
  ]);
108
108
  ```
109
109
 
110
- Assistant text, reasoning, tool calls, and tool results stream into `data` as they arrive, and a new turn moves `status` from `ready` to `submitted` to `streaming` and back. Resuming an attached session uses `resuming` while eve performs bounded catch-up. Disable message and HITL submission in that state. A settled tail moves directly to `ready`; an in-flight tail moves to `streaming` before eve follows it. To replace an active turn with a follow-up, send the message with `turnPolicy: "steer"`. eve accepts the message through the durable session, cancels the active turn, and keeps the hook attached through the replacement turn:
110
+ Assistant text, reasoning, tool calls, and tool results stream into `data` as they arrive, and a new turn moves `status` from `ready` to `submitted` to `streaming` and back. Resuming an attached session uses `resuming` while eve performs bounded catch-up. Disable message and HITL submission in that state. A settled tail moves directly to `ready`; an in-flight tail moves to `streaming` before eve follows it.
111
+
112
+ To steer an active turn with a follow-up, send the message with `turnPolicy: "steer"`. Before answer output or local tool execution begins, eve interrupts pending model generation and continues the same turn with the correction. Executing tools finish and checkpoint their results first; after answer output starts, steering waits for the next committed workflow boundary. Reasoning and search progress do not count as answer output. The hook stays attached through completion:
111
113
 
112
114
  ```tsx
113
115
  await agent.send(message, { turnPolicy: "steer" });
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "title": "Observability",
3
+ "defaultOpen": false,
3
4
  "pages": ["overview", "providers", "otel"]
4
5
  }
@@ -175,7 +175,7 @@ turn recalls the same data again.
175
175
  - A throwing or invalid `recall["turn.started"]` fails the turn before the
176
176
  model call. No slot's recall results are committed. If the turn's
177
177
  `abortSignal` is already aborted, eve treats the error as cancellation and
178
- continues with any queued steering replacement. An `AbortError` with an active
178
+ continues with any queued follow-up. An `AbortError` with an active
179
179
  signal still fails the turn.
180
180
  - A throwing `capture["compaction.requested"]` leaves history unchanged.
181
181
  - A throwing `recall["compaction.completed"]` fails an automatic turn. For
@@ -15,7 +15,7 @@ Without a URL, the client starts one process from the eve application root. It s
15
15
  eve acp https://agent.example.com
16
16
  ```
17
17
 
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. If login or a Trusted Sources change is required, run `eve dev <url>` and complete `/vc:login` before launching ACP. `VERCEL_AUTOMATION_BYPASS_SECRET` remains available for deployments configured with a Protection Bypass for Automation token.
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.
19
19
 
20
20
  ## Configure Zed
21
21
 
@@ -57,7 +57,7 @@ Creates a new agent app or adds an agent to an existing app. Always installs dep
57
57
 
58
58
  Existing packages do not need a target-selection prompt: run `eve init` from the project directory or `eve init path/to/app`. New projects in non-interactive environments need a new directory name, such as `eve init my-agent`.
59
59
 
60
- After scaffolding, a human terminal usually continues into `eve dev`. Enable the self-modification subagent to edit your agent from the dev session. Otherwise, if a coding-agent REPL is on `PATH`, you can launch it to make changes instead of opening the TUI. Fresh projects use the parent workspace's package manager when there is one; otherwise they use the manager that launched `eve init`.
60
+ After scaffolding in an interactive human terminal, eve opens the TUI directly. Noninteractive and coding-agent invocations return without starting an interactive session. Fresh projects use the parent workspace's package manager when there is one; otherwise they use the manager that launched `eve init`.
61
61
 
62
62
  | Flag | Type | Default | Description |
63
63
  | ---------------------- | ------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
@@ -234,7 +234,7 @@ Pass a bare URL and the UI connects to that server instead of booting a local on
234
234
 
235
235
  `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.
236
236
 
237
- A fresh `eve init` starts onboarding before the first prompt: the TUI installs the Vercel CLI if needed, asks you to log in if needed, guides you through model configuration, then lets you choose channels and integrations. Other `--input` text stays editable in the prompt.
237
+ 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.
238
238
 
239
239
  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:
240
240