eve 0.6.0-beta.9 → 0.7.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 (587) hide show
  1. package/CHANGELOG.md +266 -0
  2. package/README.md +9 -6
  3. package/dist/docs/public/README.md +1 -1
  4. package/dist/docs/public/advanced/auth-and-route-protection.md +3 -1
  5. package/dist/docs/public/advanced/default-harness.md +2 -2
  6. package/dist/docs/public/advanced/dev-tui.md +9 -11
  7. package/dist/docs/public/advanced/instrumentation.md +1 -1
  8. package/dist/docs/public/advanced/meta.json +0 -1
  9. package/dist/docs/public/advanced/security-model.md +1 -1
  10. package/dist/docs/public/advanced/session-context.md +1 -1
  11. package/dist/docs/public/agent-config.md +1 -1
  12. package/dist/docs/public/channels/eve.mdx +1 -1
  13. package/dist/docs/public/channels/slack.mdx +14 -2
  14. package/dist/docs/public/connections.mdx +3 -1
  15. package/dist/docs/public/evals/assertions.mdx +108 -0
  16. package/dist/docs/public/evals/cases.mdx +143 -0
  17. package/dist/docs/public/evals/judge.mdx +94 -0
  18. package/dist/docs/public/evals/meta.json +4 -0
  19. package/dist/docs/public/evals/overview.mdx +118 -0
  20. package/dist/docs/public/evals/reporters.mdx +62 -0
  21. package/dist/docs/public/evals/running.mdx +63 -0
  22. package/dist/docs/public/evals/targets.mdx +54 -0
  23. package/dist/docs/public/frontend/nextjs.mdx +13 -4
  24. package/dist/docs/public/frontend/nuxt.mdx +4 -4
  25. package/dist/docs/public/frontend/sveltekit.mdx +2 -2
  26. package/dist/docs/public/getting-started.mdx +25 -13
  27. package/dist/docs/public/meta.json +1 -0
  28. package/dist/docs/public/reference/cli.md +34 -18
  29. package/dist/docs/public/reference/typescript-api.md +6 -2
  30. package/dist/docs/public/tools.mdx +0 -4
  31. package/dist/docs/public/tutorial/connect-a-warehouse.mdx +1 -1
  32. package/dist/docs/public/tutorial/first-agent.mdx +5 -2
  33. package/dist/src/chunks/{use-eve-agent-DCZbkLG7.js → use-eve-agent-DErQj5hs.js} +125 -37
  34. package/dist/src/chunks/{use-eve-agent-DoheC4_o.js → use-eve-agent-DoR8C4i6.js} +125 -37
  35. package/dist/src/cli/banner.d.ts +7 -0
  36. package/dist/src/cli/banner.js +1 -0
  37. package/dist/src/cli/commands/channel-add-conflicts.d.ts +1 -1
  38. package/dist/src/cli/commands/channels.d.ts +9 -6
  39. package/dist/src/cli/commands/channels.js +1 -1
  40. package/dist/src/cli/commands/deploy.d.ts +21 -0
  41. package/dist/src/cli/commands/deploy.js +1 -0
  42. package/dist/src/cli/commands/init-git.d.ts +15 -0
  43. package/dist/src/cli/commands/init-git.js +1 -0
  44. package/dist/src/cli/commands/init.d.ts +29 -0
  45. package/dist/src/cli/commands/init.js +1 -0
  46. package/dist/src/cli/commands/link.d.ts +21 -0
  47. package/dist/src/cli/commands/link.js +1 -0
  48. package/dist/src/cli/commands/preconditions.d.ts +7 -0
  49. package/dist/src/cli/commands/preconditions.js +1 -0
  50. package/dist/src/cli/commands/register-project-commands.d.ts +12 -0
  51. package/dist/src/cli/commands/register-project-commands.js +1 -0
  52. package/dist/src/cli/dev/tui/agent-header.d.ts +15 -9
  53. package/dist/src/cli/dev/tui/agent-header.js +1 -1
  54. package/dist/src/cli/dev/tui/blocks.d.ts +1 -1
  55. package/dist/src/cli/dev/tui/blocks.js +3 -2
  56. package/dist/src/cli/dev/tui/command-typeahead.d.ts +47 -0
  57. package/dist/src/cli/dev/tui/command-typeahead.js +1 -0
  58. package/dist/src/cli/dev/tui/dev-rebuild-status.d.ts +21 -0
  59. package/dist/src/cli/dev/tui/dev-rebuild-status.js +1 -0
  60. package/dist/src/cli/dev/tui/errors.d.ts +18 -0
  61. package/dist/src/cli/dev/tui/errors.js +1 -1
  62. package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +14 -0
  63. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -0
  64. package/dist/src/cli/dev/tui/prompt-commands.d.ts +54 -0
  65. package/dist/src/cli/dev/tui/prompt-commands.js +2 -0
  66. package/dist/src/cli/dev/tui/runner.d.ts +62 -5
  67. package/dist/src/cli/dev/tui/runner.js +1 -1
  68. package/dist/src/cli/dev/tui/setup-commands.d.ts +48 -0
  69. package/dist/src/cli/dev/tui/setup-commands.js +2 -0
  70. package/dist/src/cli/dev/tui/setup-flow.d.ts +35 -0
  71. package/dist/src/cli/dev/tui/setup-issues.d.ts +40 -0
  72. package/dist/src/cli/dev/tui/setup-issues.js +1 -0
  73. package/dist/src/cli/dev/tui/setup-panel.d.ts +103 -0
  74. package/dist/src/cli/dev/tui/setup-panel.js +1 -0
  75. package/dist/src/cli/dev/tui/status-line.d.ts +25 -0
  76. package/dist/src/cli/dev/tui/status-line.js +1 -0
  77. package/dist/src/cli/dev/tui/stream-format.d.ts +16 -1
  78. package/dist/src/cli/dev/tui/stream-format.js +1 -1
  79. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +32 -3
  80. package/dist/src/cli/dev/tui/terminal-renderer.js +5 -2
  81. package/dist/src/cli/dev/tui/test/index.d.ts +3 -1
  82. package/dist/src/cli/dev/tui/test/index.js +1 -1
  83. package/dist/src/cli/dev/tui/test/mock-terminal.d.ts +1 -0
  84. package/dist/src/cli/dev/tui/test/mock-terminal.js +1 -1
  85. package/dist/src/cli/dev/tui/theme.d.ts +10 -0
  86. package/dist/src/cli/dev/tui/theme.js +1 -1
  87. package/dist/src/cli/dev/tui/tui-prompter.d.ts +20 -0
  88. package/dist/src/cli/dev/tui/tui-prompter.js +1 -0
  89. package/dist/src/cli/dev/tui/tui.d.ts +6 -8
  90. package/dist/src/cli/dev/tui/tui.js +1 -1
  91. package/dist/src/cli/dev/tui/types.d.ts +4 -3
  92. package/dist/src/cli/dev/tui/vercel-status.d.ts +47 -0
  93. package/dist/src/cli/dev/tui/vercel-status.js +1 -0
  94. package/dist/src/cli/run.d.ts +9 -18
  95. package/dist/src/cli/run.js +2 -2
  96. package/dist/src/client/client.d.ts +8 -0
  97. package/dist/src/client/client.js +1 -1
  98. package/dist/src/client/file-parts.d.ts +18 -0
  99. package/dist/src/client/file-parts.js +1 -0
  100. package/dist/src/client/index.d.ts +3 -2
  101. package/dist/src/client/index.js +1 -1
  102. package/dist/src/client/message-response.js +1 -1
  103. package/dist/src/client/open-stream.d.ts +6 -0
  104. package/dist/src/client/open-stream.js +1 -1
  105. package/dist/src/client/session-utils.d.ts +5 -0
  106. package/dist/src/client/session-utils.js +1 -1
  107. package/dist/src/client/session.js +1 -1
  108. package/dist/src/client/types.d.ts +9 -2
  109. package/dist/src/compiled/.vendor-stamp.json +8 -8
  110. package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +56 -31
  111. package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
  112. package/dist/src/compiled/@ai-sdk/google/index.js +1 -1
  113. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  114. package/dist/src/compiled/@ai-sdk/openai/index.d.ts +16 -9
  115. package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
  116. package/dist/src/compiled/@ai-sdk/otel/index.js +2 -2
  117. package/dist/src/compiled/@vercel/sandbox/index.js +1 -1
  118. package/dist/src/compiled/@workflow/core/index.js +2 -2
  119. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +4 -2
  120. package/dist/src/compiled/@workflow/core/runtime/wait-until.d.ts +18 -0
  121. package/dist/src/compiled/@workflow/core/runtime.d.ts +3 -1
  122. package/dist/src/compiled/@workflow/core/runtime.js +28 -28
  123. package/dist/src/compiled/@workflow/core/serialization.d.ts +41 -0
  124. package/dist/src/compiled/@workflow/core/util.d.ts +0 -5
  125. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  126. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  127. package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
  128. package/dist/src/compiled/@workflow/world/queue.d.ts +28 -2
  129. package/dist/src/compiled/_chunks/workflow/{dist-gEXVSMPU.js → dist-CkMRLaRV.js} +1 -1
  130. package/dist/src/compiled/_chunks/workflow/functions-DuPjIvMH.js +1 -0
  131. package/dist/src/compiled/_chunks/workflow/resume-hook-CEAS3opc.js +12 -0
  132. package/dist/src/compiled/_chunks/workflow/sleep-Cup6vPoA.js +1 -0
  133. package/dist/src/compiled/_chunks/workflow/{symbols-BWCAoPHE.js → symbols-BUTtwS7j.js} +1 -1
  134. package/dist/src/compiled/just-bash/index.d.ts +4 -4
  135. package/dist/src/compiler/artifacts.js +1 -1
  136. package/dist/src/compiler/manifest.d.ts +8 -8
  137. package/dist/src/compiler/normalize-agent-config.js +1 -1
  138. package/dist/src/compiler/normalize-channel.d.ts +2 -1
  139. package/dist/src/compiler/normalize-channel.js +1 -1
  140. package/dist/src/compiler/normalize-connection.d.ts +2 -1
  141. package/dist/src/compiler/normalize-connection.js +1 -1
  142. package/dist/src/compiler/normalize-helpers.d.ts +5 -0
  143. package/dist/src/compiler/normalize-helpers.js +1 -1
  144. package/dist/src/compiler/normalize-instructions.d.ts +3 -2
  145. package/dist/src/compiler/normalize-instructions.js +1 -1
  146. package/dist/src/compiler/normalize-manifest.js +2 -2
  147. package/dist/src/compiler/normalize-sandbox.d.ts +2 -1
  148. package/dist/src/compiler/normalize-sandbox.js +1 -1
  149. package/dist/src/compiler/normalize-schedule.d.ts +2 -1
  150. package/dist/src/compiler/normalize-schedule.js +1 -1
  151. package/dist/src/compiler/normalize-skill.d.ts +2 -1
  152. package/dist/src/compiler/normalize-skill.js +1 -1
  153. package/dist/src/compiler/normalize-subagent.d.ts +4 -1
  154. package/dist/src/compiler/normalize-subagent.js +1 -1
  155. package/dist/src/compiler/normalize-tool.d.ts +2 -1
  156. package/dist/src/compiler/normalize-tool.js +1 -1
  157. package/dist/src/compiler/workspace-resources.js +1 -1
  158. package/dist/src/context/node.d.ts +1 -1
  159. package/dist/src/evals/assertions/collector.d.ts +43 -0
  160. package/dist/src/evals/assertions/collector.js +1 -0
  161. package/dist/src/evals/assertions/run.d.ts +72 -0
  162. package/dist/src/evals/assertions/run.js +2 -0
  163. package/dist/src/evals/autoevals-client.js +2 -0
  164. package/dist/src/evals/cli/eval-client.d.ts +22 -0
  165. package/dist/src/evals/cli/eval-client.js +1 -0
  166. package/dist/src/evals/cli/eval.d.ts +8 -5
  167. package/dist/src/evals/cli/eval.js +1 -1
  168. package/dist/src/evals/context.d.ts +19 -0
  169. package/dist/src/evals/context.js +1 -0
  170. package/dist/src/evals/define-eval-config.d.ts +16 -0
  171. package/dist/src/evals/define-eval-config.js +1 -0
  172. package/dist/src/evals/define-eval.d.ts +20 -0
  173. package/dist/src/evals/define-eval.js +1 -0
  174. package/dist/src/evals/expect/index.d.ts +25 -0
  175. package/dist/src/evals/expect/index.js +1 -0
  176. package/dist/src/evals/index.d.ts +6 -2
  177. package/dist/src/evals/index.js +1 -1
  178. package/dist/src/evals/judge.d.ts +20 -0
  179. package/dist/src/evals/judge.js +1 -0
  180. package/dist/src/evals/{checks/match.d.ts → match.d.ts} +17 -18
  181. package/dist/src/evals/match.js +1 -0
  182. package/dist/src/evals/reporters/index.d.ts +1 -0
  183. package/dist/src/evals/reporters/index.js +1 -1
  184. package/dist/src/evals/requirements.d.ts +3 -0
  185. package/dist/src/evals/requirements.js +1 -0
  186. package/dist/src/evals/runner/artifacts.d.ts +7 -6
  187. package/dist/src/evals/runner/artifacts.js +3 -3
  188. package/dist/src/evals/runner/discover.d.ts +31 -10
  189. package/dist/src/evals/runner/discover.js +1 -1
  190. package/dist/src/evals/runner/execute-eval.d.ts +25 -0
  191. package/dist/src/evals/runner/execute-eval.js +1 -0
  192. package/dist/src/evals/runner/execute-task.d.ts +31 -0
  193. package/dist/src/evals/runner/execute-task.js +1 -0
  194. package/dist/src/evals/runner/reporters/braintrust.d.ts +7 -5
  195. package/dist/src/evals/runner/reporters/braintrust.js +2 -2
  196. package/dist/src/evals/runner/reporters/console.d.ts +4 -4
  197. package/dist/src/evals/runner/reporters/console.js +1 -1
  198. package/dist/src/evals/runner/reporters/junit.d.ts +10 -0
  199. package/dist/src/evals/runner/reporters/junit.js +4 -0
  200. package/dist/src/evals/runner/reporters/types.d.ts +14 -8
  201. package/dist/src/evals/runner/run-evals.d.ts +38 -0
  202. package/dist/src/evals/runner/run-evals.js +1 -0
  203. package/dist/src/evals/runner/verdict.d.ts +10 -15
  204. package/dist/src/evals/runner/verdict.js +1 -1
  205. package/dist/src/evals/session.d.ts +52 -0
  206. package/dist/src/evals/session.js +1 -0
  207. package/dist/src/evals/target.d.ts +23 -0
  208. package/dist/src/evals/target.js +1 -0
  209. package/dist/src/evals/types.d.ts +294 -219
  210. package/dist/src/execution/compaction.d.ts +14 -0
  211. package/dist/src/execution/compaction.js +1 -0
  212. package/dist/src/execution/delegated-parent-notification.js +1 -1
  213. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  214. package/dist/src/execution/node-step.js +1 -1
  215. package/dist/src/execution/sandbox/bash-tool.d.ts +6 -6
  216. package/dist/src/execution/sandbox/bash-tool.js +1 -1
  217. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  218. package/dist/src/execution/sandbox/glob-tool.js +3 -3
  219. package/dist/src/execution/sandbox/grep-tool.js +3 -3
  220. package/dist/src/execution/sandbox/read-file-tool.js +1 -1
  221. package/dist/src/execution/subagent-adapter.js +1 -1
  222. package/dist/src/execution/tool-auth.js +1 -1
  223. package/dist/src/execution/turn-workflow.js +1 -1
  224. package/dist/src/execution/workflow-runtime.d.ts +2 -2
  225. package/dist/src/execution/workflow-runtime.js +1 -1
  226. package/dist/src/execution/workflow-steps.js +1 -1
  227. package/dist/src/harness/action-result-helpers.js +1 -1
  228. package/dist/src/harness/authorization.d.ts +26 -0
  229. package/dist/src/harness/authorization.js +1 -1
  230. package/dist/src/harness/code-mode-lifecycle.js +1 -1
  231. package/dist/src/harness/emission.d.ts +12 -5
  232. package/dist/src/harness/emission.js +1 -1
  233. package/dist/src/harness/model-call-error.d.ts +35 -6
  234. package/dist/src/harness/model-call-error.js +1 -1
  235. package/dist/src/harness/step-hooks.d.ts +10 -4
  236. package/dist/src/harness/step-hooks.js +1 -1
  237. package/dist/src/harness/tool-loop.js +1 -1
  238. package/dist/src/harness/tools.d.ts +4 -6
  239. package/dist/src/harness/tools.js +1 -1
  240. package/dist/src/harness/turn-tag-state.d.ts +4 -0
  241. package/dist/src/harness/turn-tag-state.js +1 -1
  242. package/dist/src/harness/types.d.ts +4 -15
  243. package/dist/src/internal/application/cache-metadata.js +1 -1
  244. package/dist/src/internal/application/compiled-artifacts.js +1 -1
  245. package/dist/src/internal/application/package.js +1 -1
  246. package/dist/src/internal/application/paths.js +1 -1
  247. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  248. package/dist/src/internal/authored-module-loader.d.ts +4 -1
  249. package/dist/src/internal/authored-module-loader.js +2 -2
  250. package/dist/src/internal/authored-module-map-loader.js +1 -1
  251. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  252. package/dist/src/internal/nitro/host/build-application.js +1 -1
  253. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  254. package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -3
  255. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  256. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  257. package/dist/src/internal/nitro/host/dev-watcher-log.d.ts +37 -0
  258. package/dist/src/internal/nitro/host/dev-watcher-log.js +1 -0
  259. package/dist/src/internal/nitro/host/ports.d.ts +8 -0
  260. package/dist/src/internal/nitro/host/ports.js +1 -0
  261. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  262. package/dist/src/internal/nitro/host/server-external-packages.d.ts +1 -1
  263. package/dist/src/internal/nitro/host/server-external-packages.js +1 -1
  264. package/dist/src/internal/nitro/host/start-development-server.js +1 -1
  265. package/dist/src/internal/nitro/host/start-production-server.js +1 -1
  266. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.d.ts +5 -0
  267. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -0
  268. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +31 -2
  269. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  270. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.d.ts +13 -0
  271. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -1
  272. package/dist/src/internal/nitro/routes/info.d.ts +2 -2
  273. package/dist/src/internal/nitro/routes/info.js +1 -1
  274. package/dist/src/internal/workflow/queue-namespace.d.ts +5 -0
  275. package/dist/src/internal/workflow/queue-namespace.js +1 -0
  276. package/dist/src/internal/workflow-bundle/builder-support.js +2 -2
  277. package/dist/src/internal/workflow-bundle/builder.js +3 -5
  278. package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
  279. package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +1 -1
  280. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  281. package/dist/src/node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js +4 -4
  282. package/dist/src/protocol/message.d.ts +15 -0
  283. package/dist/src/protocol/message.js +2 -2
  284. package/dist/src/public/channels/slack/api.d.ts +8 -0
  285. package/dist/src/public/channels/slack/api.js +1 -1
  286. package/dist/src/public/channels/slack/connections.d.ts +26 -18
  287. package/dist/src/public/channels/slack/connections.js +1 -1
  288. package/dist/src/public/channels/slack/defaults.d.ts +5 -2
  289. package/dist/src/public/channels/slack/defaults.js +1 -1
  290. package/dist/src/public/channels/slack/index.d.ts +1 -1
  291. package/dist/src/public/channels/slack/slackChannel.d.ts +65 -5
  292. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  293. package/dist/src/public/channels/teams/defaults.js +1 -1
  294. package/dist/src/public/connections/errors.d.ts +8 -0
  295. package/dist/src/public/definitions/tool.d.ts +0 -33
  296. package/dist/src/public/next/index.d.ts +7 -1
  297. package/dist/src/public/next/index.js +1 -1
  298. package/dist/src/public/next/server.d.ts +1 -0
  299. package/dist/src/public/next/server.js +1 -1
  300. package/dist/src/public/nuxt/dev-server.js +1 -1
  301. package/dist/src/public/sveltekit/dev-server.js +1 -1
  302. package/dist/src/public/sveltekit/index.d.ts +1 -1
  303. package/dist/src/public/tools/defaults.d.ts +2 -4
  304. package/dist/src/public/tools/defaults.js +1 -1
  305. package/dist/src/public/tools/define-bash-tool.d.ts +3 -3
  306. package/dist/src/public/tools/define-bash-tool.js +1 -1
  307. package/dist/src/public/tools/define-read-file-tool.d.ts +0 -6
  308. package/dist/src/public/tools/define-read-file-tool.js +1 -1
  309. package/dist/src/public/tools/index.d.ts +2 -2
  310. package/dist/src/public/tools/index.js +1 -1
  311. package/dist/src/public/tools/internal.js +1 -1
  312. package/dist/src/runtime/actions/types.d.ts +11 -11
  313. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  314. package/dist/src/runtime/agent/mock-model-fixtures.js +3 -2
  315. package/dist/src/runtime/agent/mock-model-skill-selection.js +3 -4
  316. package/dist/src/runtime/connections/callback-route.js +1 -1
  317. package/dist/src/runtime/connections/mcp-client.js +1 -1
  318. package/dist/src/runtime/connections/scoped-authorization.d.ts +21 -5
  319. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  320. package/dist/src/runtime/connections/types.d.ts +33 -0
  321. package/dist/src/runtime/connections/validate-authorization.js +1 -1
  322. package/dist/src/runtime/framework-tools/bash.d.ts +3 -3
  323. package/dist/src/runtime/framework-tools/bash.js +1 -1
  324. package/dist/src/runtime/framework-tools/connection-search-dynamic.d.ts +1 -1
  325. package/dist/src/runtime/framework-tools/connection-search-dynamic.js +1 -1
  326. package/dist/src/runtime/framework-tools/file-state.d.ts +3 -3
  327. package/dist/src/runtime/framework-tools/index.js +1 -1
  328. package/dist/src/runtime/framework-tools/read-file.js +2 -2
  329. package/dist/src/runtime/framework-tools/todo.d.ts +7 -0
  330. package/dist/src/runtime/framework-tools/todo.js +2 -2
  331. package/dist/src/runtime/governance/auth/http-basic.js +1 -1
  332. package/dist/src/runtime/input/types.d.ts +1 -1
  333. package/dist/src/runtime/resolve-tool.d.ts +2 -2
  334. package/dist/src/runtime/resolve-tool.js +1 -1
  335. package/dist/src/runtime/sandbox/keys.js +1 -1
  336. package/dist/src/runtime/session-callback-route.js +1 -1
  337. package/dist/src/runtime/types.d.ts +1 -7
  338. package/dist/src/services/dev-client/client-options.d.ts +8 -0
  339. package/dist/src/services/dev-client/client-options.js +1 -0
  340. package/dist/src/services/dev-client/runtime-artifacts.d.ts +13 -0
  341. package/dist/src/services/dev-client/runtime-artifacts.js +1 -0
  342. package/dist/src/services/dev-client.d.ts +13 -46
  343. package/dist/src/services/dev-client.js +1 -1
  344. package/dist/src/setup/ask.d.ts +205 -0
  345. package/dist/src/setup/ask.js +1 -0
  346. package/dist/src/setup/boxes/add-channels.d.ts +100 -16
  347. package/dist/src/setup/boxes/add-channels.js +2 -1
  348. package/dist/src/setup/boxes/add-connections.d.ts +13 -23
  349. package/dist/src/setup/boxes/add-connections.js +1 -1
  350. package/dist/src/setup/boxes/apply-ai-gateway-credential.d.ts +2 -2
  351. package/dist/src/setup/boxes/apply-ai-gateway-credential.js +1 -1
  352. package/dist/src/setup/boxes/deploy-project.d.ts +46 -14
  353. package/dist/src/setup/boxes/deploy-project.js +1 -1
  354. package/dist/src/setup/boxes/detect-ai-gateway.d.ts +10 -3
  355. package/dist/src/setup/boxes/detect-ai-gateway.js +1 -1
  356. package/dist/src/setup/boxes/link-project.d.ts +3 -3
  357. package/dist/src/setup/boxes/link-project.js +1 -1
  358. package/dist/src/setup/boxes/one-shot-next-steps.d.ts +18 -0
  359. package/dist/src/setup/boxes/one-shot-next-steps.js +2 -0
  360. package/dist/src/setup/boxes/preflight.d.ts +14 -6
  361. package/dist/src/setup/boxes/preflight.js +1 -1
  362. package/dist/src/setup/boxes/resolve-provisioning.d.ts +36 -8
  363. package/dist/src/setup/boxes/resolve-provisioning.js +1 -1
  364. package/dist/src/setup/boxes/resolve-target.d.ts +25 -8
  365. package/dist/src/setup/boxes/resolve-target.js +1 -1
  366. package/dist/src/setup/boxes/scaffold.d.ts +12 -6
  367. package/dist/src/setup/boxes/scaffold.js +1 -1
  368. package/dist/src/setup/boxes/select-channels.d.ts +38 -9
  369. package/dist/src/setup/boxes/select-channels.js +1 -1
  370. package/dist/src/setup/boxes/select-chat.d.ts +15 -11
  371. package/dist/src/setup/boxes/select-chat.js +1 -1
  372. package/dist/src/setup/boxes/select-connections.d.ts +30 -0
  373. package/dist/src/setup/boxes/select-connections.js +1 -0
  374. package/dist/src/setup/boxes/select-model.d.ts +18 -14
  375. package/dist/src/setup/boxes/select-model.js +1 -1
  376. package/dist/src/setup/boxes/select-setup-mode.d.ts +32 -0
  377. package/dist/src/setup/boxes/select-setup-mode.js +1 -0
  378. package/dist/src/setup/channel-add-conflicts.d.ts +28 -0
  379. package/dist/src/setup/channel-add-conflicts.js +1 -0
  380. package/dist/src/setup/cli/channel-setup-prompter.d.ts +23 -0
  381. package/dist/src/setup/cli/channel-setup-prompter.js +1 -0
  382. package/dist/src/setup/cli/connection-add-prompter.d.ts +8 -0
  383. package/dist/src/setup/cli/connection-add-prompter.js +1 -0
  384. package/dist/src/setup/{scaffold/cli → cli}/index.d.ts +4 -3
  385. package/dist/src/setup/cli/index.js +1 -0
  386. package/dist/src/setup/{scaffold/cli → cli}/prompt-ui.d.ts +39 -15
  387. package/dist/src/setup/cli/prompt-ui.js +5 -0
  388. package/dist/src/setup/{scaffold/cli → cli}/rail-log.d.ts +2 -0
  389. package/dist/src/setup/{scaffold/cli → cli}/rail-log.js +2 -2
  390. package/dist/src/setup/{scaffold/cli → cli}/select-component.d.ts +18 -3
  391. package/dist/src/setup/cli/select-component.js +1 -0
  392. package/dist/src/setup/cli/select-option-codec.d.ts +12 -0
  393. package/dist/src/setup/cli/select-option-codec.js +1 -0
  394. package/dist/src/setup/{scaffold/cli → cli}/select-state.d.ts +13 -1
  395. package/dist/src/setup/cli/select-state.js +1 -0
  396. package/dist/src/setup/cli/whimsy.d.ts +16 -0
  397. package/dist/src/setup/cli/whimsy.js +1 -0
  398. package/dist/src/setup/{scaffold/steps/setup-connection.d.ts → connection-connector.d.ts} +3 -2
  399. package/dist/src/setup/connection-connector.js +1 -0
  400. package/dist/src/setup/flows/channels.d.ts +43 -0
  401. package/dist/src/setup/flows/channels.js +1 -0
  402. package/dist/src/setup/flows/deploy.d.ts +40 -0
  403. package/dist/src/setup/flows/deploy.js +1 -0
  404. package/dist/src/setup/flows/in-project.d.ts +16 -0
  405. package/dist/src/setup/flows/in-project.js +1 -0
  406. package/dist/src/setup/flows/link.d.ts +43 -0
  407. package/dist/src/setup/flows/link.js +1 -0
  408. package/dist/src/setup/flows/model.d.ts +112 -0
  409. package/dist/src/setup/flows/model.js +1 -0
  410. package/dist/src/setup/flows/vercel.d.ts +31 -0
  411. package/dist/src/setup/flows/vercel.js +2 -0
  412. package/dist/src/setup/gateway-models.js +1 -1
  413. package/dist/src/setup/headless.d.ts +1 -1
  414. package/dist/src/setup/index.d.ts +10 -4
  415. package/dist/src/setup/index.js +1 -1
  416. package/dist/src/setup/onboarding.d.ts +7 -4
  417. package/dist/src/setup/onboarding.js +1 -1
  418. package/dist/src/setup/package-manager.d.ts +27 -0
  419. package/dist/src/setup/package-manager.js +1 -0
  420. package/dist/src/setup/primitives/index.d.ts +3 -0
  421. package/dist/src/setup/primitives/index.js +1 -0
  422. package/dist/src/setup/primitives/pm/bun.d.ts +10 -0
  423. package/dist/src/setup/primitives/pm/bun.js +1 -0
  424. package/dist/src/setup/primitives/pm/index.d.ts +11 -0
  425. package/dist/src/setup/primitives/pm/index.js +1 -0
  426. package/dist/src/setup/primitives/pm/npm.d.ts +10 -0
  427. package/dist/src/setup/primitives/pm/npm.js +1 -0
  428. package/dist/src/setup/primitives/pm/pnpm.d.ts +27 -0
  429. package/dist/src/setup/primitives/pm/pnpm.js +8 -0
  430. package/dist/src/setup/primitives/pm/run.d.ts +23 -0
  431. package/dist/src/setup/primitives/pm/run.js +1 -0
  432. package/dist/src/setup/primitives/pm/shared.d.ts +8 -0
  433. package/dist/src/setup/primitives/pm/shared.js +1 -0
  434. package/dist/src/setup/primitives/pm/types.d.ts +37 -0
  435. package/dist/src/setup/primitives/pm/types.js +1 -0
  436. package/dist/src/setup/primitives/pm/yarn.d.ts +10 -0
  437. package/dist/src/setup/primitives/pm/yarn.js +1 -0
  438. package/dist/src/setup/primitives/run-pnpm.d.ts +1 -0
  439. package/dist/src/setup/primitives/run-pnpm.js +1 -0
  440. package/dist/src/setup/{scaffold/primitives → primitives}/run-vercel.d.ts +7 -0
  441. package/dist/src/setup/primitives/run-vercel.js +1 -0
  442. package/dist/src/setup/project-name.d.ts +4 -0
  443. package/dist/src/setup/project-name.js +1 -0
  444. package/dist/src/setup/project-resolution.d.ts +54 -0
  445. package/dist/src/setup/project-resolution.js +1 -0
  446. package/dist/src/setup/prompter.d.ts +52 -4
  447. package/dist/src/setup/prompter.js +1 -1
  448. package/dist/src/setup/quit-guard.d.ts +1 -1
  449. package/dist/src/setup/run-vercel-link.d.ts +1 -1
  450. package/dist/src/setup/run-vercel-link.js +1 -1
  451. package/dist/src/setup/runner.d.ts +5 -4
  452. package/dist/src/setup/runner.js +1 -1
  453. package/dist/src/setup/scaffold/channels-catalog.d.ts +3 -3
  454. package/dist/src/setup/scaffold/channels-catalog.js +1 -1
  455. package/dist/src/setup/scaffold/create/add-to-project.d.ts +26 -0
  456. package/dist/src/setup/scaffold/create/add-to-project.js +1 -0
  457. package/dist/src/setup/scaffold/create/project.d.ts +54 -0
  458. package/dist/src/setup/scaffold/create/project.js +80 -0
  459. package/dist/src/setup/scaffold/index.d.ts +4 -4
  460. package/dist/src/setup/scaffold/index.js +1 -1
  461. package/dist/src/setup/scaffold/{channels.d.ts → update/channels.d.ts} +11 -0
  462. package/dist/src/setup/scaffold/update/channels.js +7 -0
  463. package/dist/src/setup/scaffold/{connections.d.ts → update/connections.d.ts} +1 -1
  464. package/dist/src/setup/scaffold/update/connections.js +21 -0
  465. package/dist/src/setup/scaffold/version-tokens.d.ts +11 -0
  466. package/dist/src/setup/scaffold/version-tokens.js +1 -0
  467. package/dist/src/setup/{scaffold/steps/setup-slackbot.d.ts → slackbot.d.ts} +24 -20
  468. package/dist/src/setup/slackbot.js +1 -0
  469. package/dist/src/setup/state.d.ts +62 -15
  470. package/dist/src/setup/state.js +1 -1
  471. package/dist/src/setup/step.d.ts +9 -18
  472. package/dist/src/setup/vercel-project.d.ts +15 -8
  473. package/dist/src/setup/vercel-project.js +1 -1
  474. package/dist/src/shared/agent-definition.d.ts +5 -3
  475. package/dist/src/shared/default-agent-model.d.ts +5 -0
  476. package/dist/src/shared/default-agent-model.js +1 -0
  477. package/dist/src/source-change/apply-model-name.d.ts +25 -0
  478. package/dist/src/source-change/apply-model-name.js +2 -0
  479. package/dist/src/source-change/static-source-change.d.ts +36 -0
  480. package/dist/src/source-change/static-source-change.js +1 -0
  481. package/dist/src/svelte/index.js +1 -1
  482. package/dist/src/svelte/use-eve-agent.js +1 -1
  483. package/dist/src/vue/index.js +1 -1
  484. package/dist/src/vue/use-eve-agent.js +1 -1
  485. package/package.json +22 -42
  486. package/dist/docs/evals-v2-plan.md +0 -939
  487. package/dist/docs/public/advanced/evals.md +0 -158
  488. package/dist/src/cli/commands/setup.d.ts +0 -55
  489. package/dist/src/cli/commands/setup.js +0 -1
  490. package/dist/src/cli/dev/repl/input-requests.d.ts +0 -38
  491. package/dist/src/cli/dev/repl/input-requests.js +0 -1
  492. package/dist/src/cli/dev/repl/input.d.ts +0 -19
  493. package/dist/src/cli/dev/repl/input.js +0 -1
  494. package/dist/src/cli/dev/repl/repl.d.ts +0 -62
  495. package/dist/src/cli/dev/repl/repl.js +0 -2
  496. package/dist/src/cli/dev/repl/terminal.d.ts +0 -21
  497. package/dist/src/cli/dev/repl/terminal.js +0 -5
  498. package/dist/src/compiled/_chunks/workflow/resume-hook-0Zk0zSvq.js +0 -12
  499. package/dist/src/compiled/_chunks/workflow/sleep-DXZr2BgM.js +0 -1
  500. package/dist/src/evals/checks/checks.d.ts +0 -66
  501. package/dist/src/evals/checks/checks.js +0 -2
  502. package/dist/src/evals/checks/index.d.ts +0 -21
  503. package/dist/src/evals/checks/index.js +0 -1
  504. package/dist/src/evals/checks/match.js +0 -1
  505. package/dist/src/evals/define-eval-suite.d.ts +0 -18
  506. package/dist/src/evals/define-eval-suite.js +0 -1
  507. package/dist/src/evals/runner/execute-case.d.ts +0 -23
  508. package/dist/src/evals/runner/execute-case.js +0 -1
  509. package/dist/src/evals/runner/execute-suite.d.ts +0 -24
  510. package/dist/src/evals/runner/execute-suite.js +0 -1
  511. package/dist/src/evals/scorers/autoevals-client.js +0 -2
  512. package/dist/src/evals/scorers/autoevals.d.ts +0 -58
  513. package/dist/src/evals/scorers/autoevals.js +0 -1
  514. package/dist/src/evals/scorers/json.d.ts +0 -10
  515. package/dist/src/evals/scorers/json.js +0 -1
  516. package/dist/src/evals/scorers/model-marker.d.ts +0 -12
  517. package/dist/src/evals/scorers/model-marker.js +0 -1
  518. package/dist/src/evals/scorers/run.d.ts +0 -24
  519. package/dist/src/evals/scorers/run.js +0 -1
  520. package/dist/src/evals/scorers/sql.d.ts +0 -9
  521. package/dist/src/evals/scorers/sql.js +0 -1
  522. package/dist/src/evals/scorers/text.d.ts +0 -18
  523. package/dist/src/evals/scorers/text.js +0 -1
  524. package/dist/src/evals/scores/index.d.ts +0 -72
  525. package/dist/src/evals/scores/index.js +0 -1
  526. package/dist/src/execution/tool-compaction.d.ts +0 -9
  527. package/dist/src/execution/tool-compaction.js +0 -1
  528. package/dist/src/services/dev-client/stream.d.ts +0 -5
  529. package/dist/src/services/dev-client/stream.js +0 -1
  530. package/dist/src/services/dev-client/url.d.ts +0 -11
  531. package/dist/src/services/dev-client/url.js +0 -1
  532. package/dist/src/setup/channel-setup-prompter.d.ts +0 -8
  533. package/dist/src/setup/channel-setup-prompter.js +0 -1
  534. package/dist/src/setup/scaffold/channels.js +0 -7
  535. package/dist/src/setup/scaffold/cli/channel-add-prompter.d.ts +0 -12
  536. package/dist/src/setup/scaffold/cli/channel-add-prompter.js +0 -1
  537. package/dist/src/setup/scaffold/cli/channel-setup-prompter.d.ts +0 -56
  538. package/dist/src/setup/scaffold/cli/connection-add-prompter.d.ts +0 -44
  539. package/dist/src/setup/scaffold/cli/connection-add-prompter.js +0 -1
  540. package/dist/src/setup/scaffold/cli/index.js +0 -1
  541. package/dist/src/setup/scaffold/cli/prompt-ui.js +0 -5
  542. package/dist/src/setup/scaffold/cli/select-component.js +0 -1
  543. package/dist/src/setup/scaffold/cli/select-state.js +0 -1
  544. package/dist/src/setup/scaffold/connections.js +0 -21
  545. package/dist/src/setup/scaffold/pnpm-workspace.d.ts +0 -3
  546. package/dist/src/setup/scaffold/pnpm-workspace.js +0 -11
  547. package/dist/src/setup/scaffold/primitives/detect-deployment.d.ts +0 -13
  548. package/dist/src/setup/scaffold/primitives/detect-deployment.js +0 -1
  549. package/dist/src/setup/scaffold/primitives/index.d.ts +0 -3
  550. package/dist/src/setup/scaffold/primitives/index.js +0 -1
  551. package/dist/src/setup/scaffold/primitives/pnpm-invocation.d.ts +0 -12
  552. package/dist/src/setup/scaffold/primitives/pnpm-invocation.js +0 -1
  553. package/dist/src/setup/scaffold/primitives/run-pnpm.d.ts +0 -17
  554. package/dist/src/setup/scaffold/primitives/run-pnpm.js +0 -1
  555. package/dist/src/setup/scaffold/primitives/run-vercel.js +0 -1
  556. package/dist/src/setup/scaffold/project.d.ts +0 -21
  557. package/dist/src/setup/scaffold/project.js +0 -80
  558. package/dist/src/setup/scaffold/steps/deploy-to-vercel.d.ts +0 -17
  559. package/dist/src/setup/scaffold/steps/deploy-to-vercel.js +0 -1
  560. package/dist/src/setup/scaffold/steps/index.d.ts +0 -4
  561. package/dist/src/setup/scaffold/steps/index.js +0 -1
  562. package/dist/src/setup/scaffold/steps/project-resolution.d.ts +0 -19
  563. package/dist/src/setup/scaffold/steps/project-resolution.js +0 -1
  564. package/dist/src/setup/scaffold/steps/run-add-connection.d.ts +0 -40
  565. package/dist/src/setup/scaffold/steps/run-add-connection.js +0 -1
  566. package/dist/src/setup/scaffold/steps/run-add-to-agent.d.ts +0 -81
  567. package/dist/src/setup/scaffold/steps/run-add-to-agent.js +0 -2
  568. package/dist/src/setup/scaffold/steps/setup-connection.js +0 -1
  569. package/dist/src/setup/scaffold/steps/setup-slackbot.js +0 -1
  570. /package/dist/src/{setup/scaffold/cli/channel-setup-prompter.js → cli/dev/tui/setup-flow.js} +0 -0
  571. /package/dist/src/evals/{scorers/autoevals-client.d.ts → autoevals-client.d.ts} +0 -0
  572. /package/dist/src/setup/{scaffold/cli → cli}/command-output.d.ts +0 -0
  573. /package/dist/src/setup/{scaffold/cli → cli}/command-output.js +0 -0
  574. /package/dist/src/setup/{scaffold/human-action.d.ts → human-action.d.ts} +0 -0
  575. /package/dist/src/setup/{scaffold/human-action.js → human-action.js} +0 -0
  576. /package/dist/src/setup/{scaffold/primitives → primitives}/process-output.d.ts +0 -0
  577. /package/dist/src/setup/{scaffold/primitives → primitives}/process-output.js +0 -0
  578. /package/dist/src/setup/scaffold/{web-template.d.ts → create/web-template.d.ts} +0 -0
  579. /package/dist/src/setup/scaffold/{web-template.js → create/web-template.js} +0 -0
  580. /package/dist/src/setup/scaffold/{module-files.d.ts → update/module-files.d.ts} +0 -0
  581. /package/dist/src/setup/scaffold/{module-files.js → update/module-files.js} +0 -0
  582. /package/dist/src/setup/scaffold/{package-json.d.ts → update/package-json.d.ts} +0 -0
  583. /package/dist/src/setup/scaffold/{package-json.js → update/package-json.js} +0 -0
  584. /package/dist/src/setup/scaffold/{primitives → update}/update-connection-connector.d.ts +0 -0
  585. /package/dist/src/setup/scaffold/{primitives → update}/update-connection-connector.js +0 -0
  586. /package/dist/src/setup/scaffold/{primitives → update}/update-slack-channel.d.ts +0 -0
  587. /package/dist/src/setup/scaffold/{primitives → update}/update-slack-channel.js +0 -0
@@ -34,6 +34,15 @@ All fields are optional.
34
34
  | `eveBuildCommand` | `string` | `"eve build"` | Build command for the generated Eve Vercel service. Use it when the Eve service needs project-specific prework, without changing the Next.js build. |
35
35
  | `configureVercelOutput` | `boolean` | `true` | Set to `false` to skip creating or updating `.vercel/output/config.json`. By default `withEve` writes the `experimentalServices` entries for both apps. |
36
36
  | `servicePrefix` | `string` | `"/_eve_internal/eve"` | Private Vercel route namespace for the Eve service. Must match the Eve service's mount in your Vercel Build Output config when you set it manually. |
37
+ | `devServerTimeoutMs` | `number` | `180000` | Maximum time to wait for the Eve development server to become available. |
38
+
39
+ For unusually slow cold starts, increase the development timeout:
40
+
41
+ ```ts
42
+ export default withEve(nextConfig, {
43
+ devServerTimeoutMs: 300_000,
44
+ });
45
+ ```
37
46
 
38
47
  ## Call the hook
39
48
 
@@ -51,25 +60,25 @@ Before deploying a user-facing app, add `agent/channels/eve.ts` so production re
51
60
 
52
61
  ## Dev vs deploy topology
53
62
 
54
- - **Local dev.** `pnpm dev` boots the Eve dev server next to `next dev` and rewrites the Eve routes over to it. The browser only ever talks to the Next.js origin.
63
+ - **Local dev.** `npm run dev` boots the Eve dev server next to `next dev` and rewrites the Eve routes over to it. The browser only ever talks to the Next.js origin.
55
64
  - **Vercel.** The web app and the Eve runtime deploy as a single project. The web app stays public; the Eve runtime sits behind it on the same site origin. When the agent needs its own build step, set `eveBuildCommand`:
56
65
 
57
66
  ```ts
58
67
  export default withEve(nextConfig, {
59
- eveBuildCommand: "pnpm build:eve",
68
+ eveBuildCommand: "npm run build:eve",
60
69
  });
61
70
  ```
62
71
 
63
72
  - **Local production build.** `next build && next start` proxies Eve routes to `http://127.0.0.1:4274`. Change the port with `EVE_NEXT_PRODUCTION_PORT`:
64
73
 
65
74
  ```bash
66
- EVE_NEXT_PRODUCTION_PORT=5000 pnpm build && pnpm start
75
+ EVE_NEXT_PRODUCTION_PORT=5000 npm run build && npm start
67
76
  ```
68
77
 
69
78
  - **Non-Vercel hosts.** If the Eve service lives on a separate origin, tell Next.js where to find it with `EVE_NEXT_PRODUCTION_ORIGIN`:
70
79
 
71
80
  ```bash
72
- EVE_NEXT_PRODUCTION_ORIGIN=https://agent.example.com pnpm build
81
+ EVE_NEXT_PRODUCTION_ORIGIN=https://agent.example.com npm run build
73
82
  ```
74
83
 
75
84
  ## What to read next
@@ -56,14 +56,14 @@ Out of the box the module gives Eve a framework default channel. When you want t
56
56
 
57
57
  ## Dev vs deploy topology
58
58
 
59
- - **Local dev.** `pnpm dev` starts the Eve dev server next to `nuxt dev` and proxies the Eve routes through it. As far as the browser knows, everything is the Nuxt origin.
59
+ - **Local dev.** `npm run dev` starts the Eve dev server next to `nuxt dev` and proxies the Eve routes through it. As far as the browser knows, everything is the Nuxt origin.
60
60
  - **Vercel.** A single Vercel project carries both the Nuxt app and the Eve runtime. The web app stays public; the runtime sits behind it on the same origin. Set `eveBuildCommand` when the agent needs its own build step:
61
61
 
62
62
  ```ts
63
63
  export default defineNuxtConfig({
64
64
  modules: ["eve/nuxt"],
65
65
  eve: {
66
- eveBuildCommand: "pnpm build:eve",
66
+ eveBuildCommand: "npm run build:eve",
67
67
  },
68
68
  });
69
69
  ```
@@ -71,8 +71,8 @@ Out of the box the module gives Eve a framework default channel. When you want t
71
71
  - **Non-Vercel hosts.** Point Nuxt at a separate Eve origin with `EVE_NUXT_PRODUCTION_ORIGIN`. To override the local port (it defaults to `4274`), use `EVE_NUXT_PRODUCTION_PORT`:
72
72
 
73
73
  ```bash
74
- EVE_NUXT_PRODUCTION_ORIGIN=https://agent.example.com pnpm build
75
- EVE_NUXT_PRODUCTION_PORT=5000 pnpm build && pnpm preview
74
+ EVE_NUXT_PRODUCTION_ORIGIN=https://agent.example.com npm run build
75
+ EVE_NUXT_PRODUCTION_PORT=5000 npm run build && npm run preview
76
76
  ```
77
77
 
78
78
  ## What to read next
@@ -65,14 +65,14 @@ Out of the box the plugin uses a framework default channel. To set the route aut
65
65
 
66
66
  ## Dev vs deploy topology
67
67
 
68
- - **Local dev.** `pnpm dev` boots the Eve dev server next to SvelteKit and proxies the Eve routes to it, so the browser only ever hits the SvelteKit origin. `pnpm build && pnpm preview` behaves the same: the preview server gets its own Eve route proxy and either reuses the shared Eve server or starts one.
68
+ - **Local dev.** `npm run dev` boots the Eve dev server next to SvelteKit and proxies the Eve routes to it, so the browser only ever hits the SvelteKit origin. `npm run build && npm run preview` behaves the same: the preview server gets its own Eve route proxy and either reuses the shared Eve server or starts one.
69
69
  - **Vercel.** The SvelteKit app and the Eve runtime deploy as a single project. The web app is public; the Eve runtime sits behind it on the same origin. Use `eveBuildCommand` for a project-specific agent build:
70
70
 
71
71
  ```ts
72
72
  export default defineConfig({
73
73
  plugins: [
74
74
  eveSvelteKit({
75
- eveBuildCommand: "pnpm build:eve",
75
+ eveBuildCommand: "npm run build:eve",
76
76
  }),
77
77
  sveltekit(),
78
78
  ],
@@ -8,24 +8,35 @@ Eve is a filesystem-first framework for durable agents: you write capabilities u
8
8
  ## Prerequisites
9
9
 
10
10
  - Node `24.x`
11
- - `pnpm`
11
+ - npm (bundled with Node)
12
12
 
13
13
  You also need a model credential. Set the provider or gateway key your model string requires (gateway ids like `anthropic/claude-opus-4.8` route through the Vercel AI Gateway), or link a Vercel project that supplies one.
14
14
 
15
15
  ## Create Your Agent
16
16
 
17
- The fastest path is the `create` CLI. It scaffolds the project, prompts for a model, and wires up an optional channel:
17
+ Run `eve init` with `npx` before Eve is installed locally:
18
18
 
19
19
  ```bash
20
- pnpm create eve@beta
20
+ npx eve@latest init my-agent
21
21
  ```
22
22
 
23
- The wizard asks for a model and which channel you want (Web Chat or Slack). You can skip both: every app ships the built-in HTTP channel (`agent/channels/eve.ts`) regardless. For a local chat it installs dependencies and starts the dev server for you.
23
+ The command creates an npm-managed child directory, uses Eve's default model,
24
+ installs dependencies, initializes Git, and starts the development server. Pass
25
+ `--channel-web-nextjs` to add the Web Chat application. Stop the server before
26
+ editing the generated agent. The command does not create a Vercel project or
27
+ deploy.
24
28
 
25
- To add Eve to an existing app instead:
29
+ The target can also be an existing project directory (`eve init .`): the
30
+ project must have a `package.json`, the `agent/` files must not exist yet, and
31
+ the missing `eve`, `ai`, and `zod` dependencies are added without touching
32
+ anything else the project owns. Either way the final handoff runs the `eve dev`
33
+ binary through the project's package manager, never the project's own `dev`
34
+ script.
35
+
36
+ To add only the dependency to an existing app instead:
26
37
 
27
38
  ```bash
28
- pnpm add eve@beta
39
+ npm install eve@latest
29
40
  ```
30
41
 
31
42
  ## What's In Your Project
@@ -38,13 +49,13 @@ The scaffold writes two files; you add tools as you need them.
38
49
  You are a concise assistant. Use tools when they are available.
39
50
  ```
40
51
 
41
- `agent/agent.ts` (generated; model comes from the wizard) holds runtime config:
52
+ `agent/agent.ts` holds runtime config:
42
53
 
43
54
  ```ts
44
55
  import { defineAgent } from "eve";
45
56
 
46
57
  export default defineAgent({
47
- model: "anthropic/claude-opus-4.8",
58
+ model: "anthropic/claude-sonnet-4.6",
48
59
  });
49
60
  ```
50
61
 
@@ -76,7 +87,7 @@ Tools run in your app runtime with full `process.env`, not inside the [sandbox](
76
87
  From the app root:
77
88
 
78
89
  ```bash
79
- pnpm dev
90
+ npm run dev
80
91
  ```
81
92
 
82
93
  Useful commands:
@@ -153,10 +164,10 @@ See [Sessions, runs & streaming](./advanced/sessions-runs-and-streaming) for the
153
164
 
154
165
  If a coding agent (Claude Code, Cursor, and the like) is doing the setup, hand it this prompt:
155
166
 
156
- <CopyPrompt text="Set up an Eve agent for the user. Eve is a filesystem-first TypeScript framework for durable agents, published as the npm package eve. Read its docs: once eve is installed they are bundled in the package at node_modules/eve/dist/docs/public; before eve is installed, read the published Introduction and Getting Started pages. If the project has no Eve app, scaffold one with `pnpm create eve@beta`; to add Eve to an existing app, run `pnpm add eve@beta`. Make sure agent/agent.ts (which sets the model) and agent/instructions.md exist, then add a first typed tool at agent/tools/get_weather.ts using defineTool from eve/tools with a Zod inputSchema and an inline execute. Run it locally with `pnpm dev` (or `eve dev`), then exercise the HTTP API: create a session with POST /eve/v1/session, attach to GET /eve/v1/session/:id/stream, and send a follow-up with the returned continuationToken. Verify with the project's typecheck, adapt model and provider choices to the project, and do not commit unless the user asks.">
167
+ <CopyPrompt text="Set up an Eve agent for the user. Eve is a filesystem-first TypeScript framework for durable agents, published as the npm package eve. Read its docs: once eve is installed they are bundled in the package at node_modules/eve/dist/docs/public; before eve is installed, read the published Introduction and Getting Started pages. If the project has no Eve app, scaffold one with `npx eve@latest init <name>`; add `--channel-web-nextjs` only when the user wants Web Chat. The init command installs dependencies, initializes Git, and starts the dev server, so run it in a controllable process and stop it before editing. To add Eve to an existing app, run `npm install eve@latest`. Make sure agent/agent.ts and agent/instructions.md exist, then add a first typed tool at agent/tools/get_weather.ts using defineTool from eve/tools with a Zod inputSchema and an inline execute. Start the dev server again, then exercise the HTTP API: create a session with POST /eve/v1/session, attach to GET /eve/v1/session/:id/stream, and send a follow-up with the returned continuationToken. Verify with the project's typecheck, adapt model and provider choices to the project, and do not commit unless the user asks.">
157
168
  Set up an Eve agent: read the Eve docs (bundled at node_modules/eve/dist/docs/public once eve is
158
- installed), scaffold with `pnpm create eve@beta` (or `pnpm add eve@beta` in an existing app), add
159
- a typed tool at agent/tools/get_weather.ts, run it with `pnpm dev`, then create a session, stream
169
+ installed), scaffold with `npx eve@latest init <name>` (or `npm install eve@latest` in an existing app), add
170
+ a typed tool at agent/tools/get_weather.ts, run it with `npm run dev`, then create a session, stream
160
171
  it, and send a follow-up.
161
172
  </CopyPrompt>
162
173
 
@@ -164,7 +175,8 @@ Once `eve` is a dependency, the full docs are bundled in the package, so the age
164
175
 
165
176
  - Docs: `node_modules/eve/dist/docs/public/`
166
177
 
167
- To scaffold a project end to end, `pnpm create eve@beta` collects the decisions (name, model, channels), runs setup, adds Slack interactively with `eve channels add slack`, and verifies the result with `eve info --json`.
178
+ `eve init <name>` creates the base agent; `eve init .` adds one to an existing project. Add `--channel-web-nextjs` for Web Chat, or run
179
+ `eve channels add slack` later from an interactive terminal.
168
180
 
169
181
  ## What to read next
170
182
 
@@ -12,6 +12,7 @@
12
12
  "sandbox",
13
13
  "subagents",
14
14
  "schedules",
15
+ "evals",
15
16
  "advanced",
16
17
  "frontend",
17
18
  "client",
@@ -14,7 +14,9 @@ The `eve` binary (`bin: eve`) runs from your app root, and every command loads `
14
14
  | `eve start` | Serve the built `.output/` app; prints the listening URL |
15
15
  | `eve dev` | Start the local dev server and open the terminal UI |
16
16
  | `eve dev <url>` | Connect the UI to an existing server URL (e.g. a remote deployment) instead of booting a local server |
17
- | `eve eval` | Run eval suites against the local app or a remote target |
17
+ | `eve link` | Link the directory to a Vercel project and pull AI Gateway credentials |
18
+ | `eve deploy` | Deploy the agent to Vercel production (links first if needed) |
19
+ | `eve eval` | Run evals against the local app or a remote target |
18
20
  | `eve channels add [kind]` | Scaffold a channel interactively, or by kind (`slack` \| `web`) |
19
21
  | `eve channels list` | List user-authored channels |
20
22
 
@@ -77,7 +79,6 @@ Pass a bare URL as the only argument and the UI connects to that server instead
77
79
  | `--host <host>` | Host interface to bind |
78
80
  | `--port <port>` | Port to listen on (defaults to `$PORT`, then `3000`) |
79
81
  | `-u, --url <url>` | Connect to an existing server URL instead of starting one |
80
- | `--repl` | Use the classic line-based REPL instead of the terminal UI |
81
82
  | `--no-ui` | Start the server without an interactive UI |
82
83
  | `--name <name>` | Title shown in the terminal UI (defaults to the app folder name) |
83
84
  | `--tools <mode>` | Tool-call rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
@@ -90,27 +91,42 @@ Pass a bare URL as the only argument and the UI connects to that server instead
90
91
 
91
92
  Local dev keeps immutable runtime source snapshots under `.eve/dev-runtime/snapshots/` so in-flight sessions keep a consistent code revision while new prompts pick up rebuilds. `eve dev` prunes stale runtime snapshots and old local sandbox templates in the background on startup; stopping `eve dev` and deleting `.eve/dev-runtime/snapshots/` or `.eve/sandbox-cache/local/templates/` is safe when you want a manual cleanup.
92
93
 
94
+ ## `eve link`
95
+
96
+ ```bash
97
+ eve link
98
+ ```
99
+
100
+ Links the current directory to a Vercel project through interactive team/project pickers, then pulls the project's environment so an AI Gateway credential (`VERCEL_OIDC_TOKEN` or `AI_GATEWAY_API_KEY`) lands in `.env.local`, and verifies one actually did. Running it again re-links: the pickers always run, and the new choice wins. Interactive only — in CI, use `vercel link --project <name> --yes` instead. A running `eve dev` reloads env files automatically, so no restart is needed after the pull.
101
+
102
+ ## `eve deploy`
103
+
104
+ ```bash
105
+ eve deploy
106
+ ```
107
+
108
+ Deploys the agent to Vercel production (`vercel deploy --prod`), installing dependencies first and pulling environment variables after. An already-linked project deploys with or without a TTY (non-interactive runs pass the non-interactive `vercel` flags); an unlinked directory walks the `eve link` pickers when a terminal is present, and exits with guidance otherwise.
109
+
93
110
  ## `eve eval`
94
111
 
95
112
  ```bash
96
- eve eval [suiteId...] [--url <url>] [options]
113
+ eve eval [evalId...] [--url <url>] [options]
97
114
  ```
98
115
 
99
- Runs all discovered suites when no suite ids are given. Exits `0` when every case passed its checks, `1` when any case failed (a failed check, an execution error, or a `--strict` threshold miss), `2` on configuration errors.
100
-
101
- | Flag | Effect |
102
- | ----------------------- | ------------------------------------------------------ |
103
- | `--url <url>` | Remote agent URL (skip local host startup) |
104
- | `--tag <tag...>` | Run only cases (or suites) carrying a tag |
105
- | `--case <id...>` | Run only specific case ids |
106
- | `--strict` | Below-threshold scores also fail the exit code |
107
- | `--list` | Print discovered suites and cases without running them |
108
- | `--timeout <ms>` | Per-case timeout in milliseconds |
109
- | `--max-concurrency <n>` | Max concurrent case executions per suite |
110
- | `--json` | Output results as JSON |
111
- | `--skip-report` | Skip suite-defined reporters (e.g. Braintrust) |
112
-
113
- See [Evals](../advanced/evals) for authoring suites.
116
+ Runs all discovered evals when no eval ids are given; ids match exactly or by directory prefix (`eve eval weather` runs everything under `evals/weather/`). Exits `0` when every eval passed its checks, `1` when any eval failed (a failed check, an execution error, or a `--strict` threshold miss), `2` on configuration errors.
117
+
118
+ | Flag | Effect |
119
+ | ----------------------- | ---------------------------------------------- |
120
+ | `--url <url>` | Remote agent URL (skip local host startup) |
121
+ | `--tag <tag...>` | Run only evals carrying a tag |
122
+ | `--strict` | Below-threshold scores also fail the exit code |
123
+ | `--list` | Print discovered evals without running them |
124
+ | `--timeout <ms>` | Per-eval timeout in milliseconds |
125
+ | `--max-concurrency <n>` | Max concurrent eval executions (default 8) |
126
+ | `--json` | Output results as JSON |
127
+ | `--skip-report` | Skip eval-defined reporters (e.g. Braintrust) |
128
+
129
+ See [Evals](../evals/overview) for authoring evals.
114
130
 
115
131
  ## Recommended loop
116
132
 
@@ -46,7 +46,8 @@ export default defineTool({
46
46
  | `defineSandbox` | `eve/sandbox` | `agent/sandbox.ts` | [Sandbox](../sandbox) |
47
47
  | `defineInstrumentation` | `eve/instrumentation` | `agent/instrumentation.ts` | [instrumentation.ts](../advanced/instrumentation) |
48
48
  | `defineRemoteAgent` | `eve` | `agent/subagents/<id>/agent.ts` | [Remote agents](../advanced/remote-agents) |
49
- | `defineEvalSuite` | `eve/evals` | `agent/evals/*.eval.ts` | [Evals](../advanced/evals) |
49
+ | `defineEval` | `eve/evals` | `evals/*.eval.ts` | [Evals](../evals/overview) |
50
+ | `defineEvalConfig` | `eve/evals` | `evals/evals.config.ts` | [Evals](../evals/overview) |
50
51
  | `useEveAgent` | `eve/react`, `eve/vue`, `eve/svelte` | frontend | [Frontend](../frontend/overview) |
51
52
 
52
53
  A few non-`define*` helpers round out the set: `disableTool` and `ExperimentalWorkflow` from `eve/tools` (see [Default harness](../advanced/default-harness)), the route verbs `GET`/`POST`/`PUT`/`PATCH`/`DELETE`/`WS` from `eve/channels`, the approval predicates `always`/`once`/`never` from `eve/tools/approval`, and the channel auth helpers `localDev`/`vercelOidc`/`placeholderAuth` from `eve/channels/auth`. To wrap a built-in tool, import its default value from `eve/tools/defaults` (`bash`, `readFile`, `writeFile`, `glob`, `grep`, `webFetch`, `webSearch`, `todo`, `loadSkill`).
@@ -83,7 +84,10 @@ A few non-`define*` helpers round out the set: `disableTool` and `ExperimentalWo
83
84
  | `eve/context` | `defineState`, session and state types |
84
85
  | `eve/sandbox` | `defineSandbox`, backends |
85
86
  | `eve/instrumentation` | `defineInstrumentation`, `isChannel` |
86
- | `eve/evals` | `defineEvalSuite`, loaders, scorers, reporters |
87
+ | `eve/evals` | `defineEval`, `defineEvalConfig`, eval types |
88
+ | `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
89
+ | `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
90
+ | `eve/evals/loaders` | `loadJson`, `loadYaml` |
87
91
  | `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
88
92
  | `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
89
93
  | [`eve/client`](../client/overview) | `Client`, `ClientSession` |
@@ -99,10 +99,6 @@ toModelOutput(output) {
99
99
 
100
100
  It receives the full, typed `execute` return and only affects the model. Channel event handlers and hooks still get the full output on `action.result`, so a channel can render rich platform output (Slack Block Kit, say) the model never sees. Return `{ type: "text", value }` for a summary, or `{ type: "json", value }` for a smaller object.
101
101
 
102
- ## Survive compaction with `onCompact`
103
-
104
- When the harness [compacts history](./advanced/default-harness#compaction), it calls each tool's `onCompact(input, ctx)` in registration order and applies the merged result to the compacted session. Return nothing to leave things alone, `messages` to append to the compacted history, or a `sessionPatch` to shallow-merge into session state. It works on the projected output (what the model sees), and a throw fails the compaction step, so don't swallow errors.
105
-
106
102
  ## What to read next
107
103
 
108
104
  - [Skills](./skills): on-demand procedures the model loads when relevant
@@ -24,7 +24,7 @@ export default defineMcpClientConnection({
24
24
 
25
25
  `"warehouse"` is the UID you chose when registering the Connect client. By default this OAuth is user-scoped. Each end-user authorizes in their own browser, and Eve resolves that user's token before every tool call.
26
26
 
27
- Connect is in private beta. Once enabled: `pnpm add @vercel/connect`, create the Connect client (`vercel connect create <type> --name warehouse`), link it to your project, then `vercel link` and `vercel env pull` so `VERCEL_OIDC_TOKEN` is available locally. Full setup: [Connections](../connections).
27
+ Connect is in private beta. Once enabled: `npm install @vercel/connect`, create the Connect client (`vercel connect create <type> --name warehouse`), link it to your project, then `vercel link` and `vercel env pull` so `VERCEL_OIDC_TOKEN` is available locally. Full setup: [Connections](../connections).
28
28
 
29
29
  ## What the user sees
30
30
 
@@ -10,10 +10,13 @@ Step 1 gets it talking. The scaffold bundles a small sample dataset, so your fir
10
10
  ## Scaffold
11
11
 
12
12
  ```bash
13
- pnpm create eve@beta
13
+ npx eve@latest init analytics-assistant
14
14
  ```
15
15
 
16
- The wizard prompts for a model and which channels to add (Web Chat or Slack). Skip both for this tutorial: every app ships the built-in HTTP API channel (`agent/channels/eve.ts`). The wizard then installs dependencies and writes a starter `agent/`.
16
+ The command writes the starter agent with Eve's default model and built-in HTTP API
17
+ channel (`agent/channels/eve.ts`), installs dependencies, initializes Git, and
18
+ starts the development server. Stop the server before continuing with the edits
19
+ below. It does not create a Vercel project or deploy.
17
20
 
18
21
  ## Set the model
19
22
 
@@ -150,6 +150,11 @@ function deriveResultStatus(events) {
150
150
  if (boundary?.type === "session.failed") return "failed";
151
151
  return "completed";
152
152
  }
153
+ function extractInputRequests(events) {
154
+ const requests = [];
155
+ for (const event of events) if (event.type === "input.requested") requests.push(...event.data.requests);
156
+ return requests;
157
+ }
153
158
  function findBoundaryEvent(events) {
154
159
  for (let i = events.length - 1; i >= 0; i--) {
155
160
  const event = events[i];
@@ -178,6 +183,7 @@ var MessageResponse = class {
178
183
  return {
179
184
  data: extractCompletedResult(events),
180
185
  events,
186
+ inputRequests: extractInputRequests(events),
181
187
  message: extractCompletedMessage(events),
182
188
  sessionId: this.sessionId,
183
189
  status: deriveResultStatus(events)
@@ -253,24 +259,28 @@ function formatSearch(searchParams) {
253
259
 
254
260
  //#endregion
255
261
  //#region src/client/open-stream.ts
262
+ const STREAM_OPEN_RETRY_ATTEMPTS = 12;
263
+ const STREAM_OPEN_RETRY_DELAY_MS = 250;
264
+ const STREAM_OPEN_RETRYABLE_STATUS = new Set([
265
+ 404,
266
+ 409,
267
+ 425,
268
+ 500,
269
+ 502,
270
+ 503,
271
+ 504
272
+ ]);
256
273
  async function* openStreamIterable(input) {
257
274
  let startIndex = input.startIndex;
258
275
  let remainingReconnectAttempts = input.maxReconnectAttempts;
259
276
  while (true) {
260
- const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId), startIndex > 0 ? { startIndex: String(startIndex) } : void 0);
261
- const headers = await input.resolveHeaders();
262
- const response = await fetch(url, {
263
- headers,
264
- signal: input.signal ?? null
277
+ const body = await openStreamBody({
278
+ ...input,
279
+ startIndex
265
280
  });
266
- if (!response.ok) {
267
- const body = await response.text();
268
- throw new ClientError(response.status, body);
269
- }
270
- if (!response.body) throw new ClientError(response.status, "Response body is null.");
271
281
  let disconnected = false;
272
282
  try {
273
- for await (const event of readNdjsonStream(response.body)) {
283
+ for await (const event of readNdjsonStream(body)) {
274
284
  startIndex += 1;
275
285
  yield event;
276
286
  }
@@ -278,13 +288,39 @@ async function* openStreamIterable(input) {
278
288
  if (!isStreamDisconnectError(error)) throw error;
279
289
  disconnected = true;
280
290
  }
281
- if (!disconnected || remainingReconnectAttempts <= 0) return;
291
+ if (!disconnected || input.signal?.aborted || remainingReconnectAttempts <= 0) return;
282
292
  remainingReconnectAttempts -= 1;
283
293
  }
284
294
  }
295
+ async function openStreamBody(input) {
296
+ let lastStatus;
297
+ let lastBody;
298
+ for (let attempt = 0; attempt < STREAM_OPEN_RETRY_ATTEMPTS; attempt += 1) {
299
+ const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId), input.startIndex > 0 ? { startIndex: String(input.startIndex) } : void 0);
300
+ const headers = await input.resolveHeaders();
301
+ const response = await fetch(url, {
302
+ headers,
303
+ signal: input.signal ?? null
304
+ });
305
+ if (response.ok) {
306
+ if (!response.body) throw new ClientError(response.status, "Response body is null.");
307
+ return response.body;
308
+ }
309
+ lastStatus = response.status;
310
+ lastBody = await response.text();
311
+ if (!STREAM_OPEN_RETRYABLE_STATUS.has(response.status)) throw new ClientError(response.status, lastBody);
312
+ if (attempt < STREAM_OPEN_RETRY_ATTEMPTS - 1) await sleep$1(STREAM_OPEN_RETRY_DELAY_MS);
313
+ }
314
+ throw new ClientError(lastStatus ?? 0, lastBody ?? "Failed to open message stream.");
315
+ }
316
+ async function sleep$1(ms) {
317
+ await new Promise((resolve) => setTimeout(resolve, ms));
318
+ }
285
319
 
286
320
  //#endregion
287
321
  //#region src/client/session.ts
322
+ const DELIVER_RETRY_ATTEMPTS = 10;
323
+ const DELIVER_RETRY_DELAY_MS = 200;
288
324
  var ClientSession = class {
289
325
  #context;
290
326
  #state;
@@ -308,14 +344,7 @@ var ClientSession = class {
308
344
  stream(options) {
309
345
  const sessionId = this.#state.sessionId;
310
346
  if (!sessionId) throw new Error("Session has no session ID. Send a message first.");
311
- return openStreamIterable({
312
- host: this.#context.host,
313
- maxReconnectAttempts: this.#context.maxReconnectAttempts,
314
- resolveHeaders: () => this.#context.resolveHeaders(),
315
- sessionId,
316
- signal: options?.signal,
317
- startIndex: options?.startIndex ?? this.#state.streamIndex
318
- });
347
+ return this.#streamAndAdvance(sessionId, options);
319
348
  }
320
349
  async #postTurn(input, session) {
321
350
  const routePath = session.sessionId ? createEveContinueSessionRoutePath(session.sessionId) : EVE_CREATE_SESSION_ROUTE_PATH;
@@ -328,16 +357,13 @@ var ClientSession = class {
328
357
  session
329
358
  });
330
359
  if (body === null) throw new Error("Session.send requires a non-empty message, inputResponses, or both.");
331
- const response = await fetch(url, {
360
+ const response = await postTurnWithRetry({
332
361
  body: JSON.stringify(body),
333
362
  headers,
334
- method: "POST",
335
- signal: input.signal ?? null
363
+ mustDeliver: (input.inputResponses?.length ?? 0) > 0,
364
+ signal: input.signal,
365
+ url
336
366
  });
337
- if (!response.ok) {
338
- const responseBody = await response.text();
339
- throw new ClientError(response.status, responseBody);
340
- }
341
367
  const payload = await response.json();
342
368
  const sessionId = (typeof payload.sessionId === "string" ? payload.sessionId : void 0) ?? response.headers.get("x-eve-session-id")?.trim() ?? session.sessionId;
343
369
  if (!sessionId) throw new Error("Message route did not return a session id.");
@@ -368,6 +394,7 @@ var ClientSession = class {
368
394
  if (!isStreamDisconnectError(error)) throw error;
369
395
  }
370
396
  if (foundBoundary) break;
397
+ if (input.signal?.aborted) break;
371
398
  if (remainingReconnectAttempts <= 0) break;
372
399
  remainingReconnectAttempts -= 1;
373
400
  }
@@ -381,20 +408,69 @@ var ClientSession = class {
381
408
  }
382
409
  }
383
410
  async #openStreamBody(sessionId, startIndex, signal, headers) {
384
- const url = createClientUrl(this.#context.host, createEveMessageStreamRoutePath(sessionId), startIndex > 0 ? { startIndex: String(startIndex) } : void 0);
385
- const resolvedHeaders = await this.#context.resolveHeaders(headers);
386
- const response = await fetch(url, {
387
- headers: resolvedHeaders,
388
- signal: signal ?? null
411
+ return await openStreamBody({
412
+ host: this.#context.host,
413
+ resolveHeaders: () => this.#context.resolveHeaders(headers),
414
+ sessionId,
415
+ signal,
416
+ startIndex
389
417
  });
390
- if (!response.ok) {
391
- const responseBody = await response.text();
392
- throw new ClientError(response.status, responseBody);
418
+ }
419
+ async *#streamAndAdvance(sessionId, options) {
420
+ const initialState = this.#state;
421
+ const streamIndex = options?.startIndex ?? initialState.streamIndex;
422
+ const events = [];
423
+ try {
424
+ for await (const event of openStreamIterable({
425
+ host: this.#context.host,
426
+ maxReconnectAttempts: this.#context.maxReconnectAttempts,
427
+ resolveHeaders: () => this.#context.resolveHeaders(),
428
+ sessionId,
429
+ signal: options?.signal,
430
+ startIndex: streamIndex
431
+ })) {
432
+ events.push(event);
433
+ yield event;
434
+ }
435
+ } finally {
436
+ this.#state = advanceSession({
437
+ continuationToken: initialState.continuationToken,
438
+ events,
439
+ session: {
440
+ ...initialState,
441
+ sessionId,
442
+ streamIndex
443
+ },
444
+ sessionId
445
+ });
393
446
  }
394
- if (!response.body) throw new ClientError(response.status, "Response body is null.");
395
- return response.body;
396
447
  }
397
448
  };
449
+ async function postTurnWithRetry(input) {
450
+ const attempts = input.mustDeliver ? DELIVER_RETRY_ATTEMPTS : 1;
451
+ let lastStatus;
452
+ let lastBody;
453
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
454
+ const response = await fetch(input.url, {
455
+ body: input.body,
456
+ headers: input.headers,
457
+ method: "POST",
458
+ signal: input.signal ?? null
459
+ });
460
+ if (response.ok) return response;
461
+ lastStatus = response.status;
462
+ lastBody = await response.text();
463
+ if (!isRetryableDeliveryFailure(response.status, lastBody)) throw new ClientError(response.status, lastBody);
464
+ if (attempt < attempts - 1) await sleep(DELIVER_RETRY_DELAY_MS);
465
+ }
466
+ throw new ClientError(lastStatus ?? 0, lastBody ?? "Failed to deliver session turn.");
467
+ }
468
+ function isRetryableDeliveryFailure(status, body) {
469
+ return status === 500 && /target session was not found/i.test(body);
470
+ }
471
+ async function sleep(ms) {
472
+ await new Promise((resolve) => setTimeout(resolve, ms));
473
+ }
398
474
  function normalizeSendTurnInput(input) {
399
475
  return typeof input === "string" ? { message: input } : input;
400
476
  }
@@ -444,6 +520,14 @@ var Client = class {
444
520
  }
445
521
  return await response.json();
446
522
  }
523
+ async fetch(path, init = {}) {
524
+ const url = createClientUrl(this.#host, path);
525
+ const headers = await this.#resolveHeaders(headersInitToRecord(init.headers));
526
+ return await fetch(url, {
527
+ ...init,
528
+ headers
529
+ });
530
+ }
447
531
  session(state) {
448
532
  let resolved;
449
533
  if (typeof state === "string") resolved = {
@@ -488,6 +572,10 @@ async function resolveHeadersValue(value) {
488
572
  if (value === void 0) return {};
489
573
  return typeof value === "function" ? await value() : value;
490
574
  }
575
+ function headersInitToRecord(headers) {
576
+ if (headers === void 0) return {};
577
+ return Object.fromEntries(new Headers(headers).entries());
578
+ }
491
579
  function encodeBasicCredentials(username, password) {
492
580
  const bytes = new TextEncoder().encode(`${username}:${password}`);
493
581
  const binaryString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join("");