eve 0.51.1 → 0.52.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 (123) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/src/cli/dev/boot-progress.d.ts +3 -0
  3. package/dist/src/cli/dev/boot-progress.js +1 -0
  4. package/dist/src/cli/run.d.ts +4 -0
  5. package/dist/src/cli/run.js +3 -3
  6. package/dist/src/cli/telemetry/command.d.ts +9 -0
  7. package/dist/src/cli/telemetry/command.js +1 -0
  8. package/dist/src/cli/telemetry/flush.d.ts +2 -0
  9. package/dist/src/cli/telemetry/flush.js +1 -0
  10. package/dist/src/cli/telemetry/identity.d.ts +13 -0
  11. package/dist/src/cli/telemetry/identity.js +1 -0
  12. package/dist/src/cli/telemetry/index.d.ts +25 -0
  13. package/dist/src/cli/telemetry/index.js +3 -0
  14. package/dist/src/cli/telemetry/preference.d.ts +9 -0
  15. package/dist/src/cli/telemetry/preference.js +1 -0
  16. package/dist/src/client/types.d.ts +3 -2
  17. package/dist/src/compiled/.vendor-stamp.json +2 -2
  18. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  19. package/dist/src/compiled/@modelcontextprotocol/server/index.d.ts +1 -0
  20. package/dist/src/compiler/extension-compatibility.d.ts +22 -4
  21. package/dist/src/compiler/extension-compatibility.js +1 -1
  22. package/dist/src/compiler/manifest.js +1 -1
  23. package/dist/src/compiler/normalize-channel.js +1 -1
  24. package/dist/src/compiler/normalize-schedule.js +1 -1
  25. package/dist/src/compiler/normalize-tool.js +1 -1
  26. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  27. package/dist/src/execution/activity-collector.js +1 -1
  28. package/dist/src/execution/continuation-conflict-step.js +1 -1
  29. package/dist/src/execution/coordination-dispatch-shared.d.ts +2 -2
  30. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  31. package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +1 -1
  32. package/dist/src/execution/inline-turn.d.ts +2 -2
  33. package/dist/src/execution/inline-turn.js +1 -1
  34. package/dist/src/execution/tasks/child/steps.d.ts +11 -1
  35. package/dist/src/execution/tasks/child/steps.js +1 -1
  36. package/dist/src/execution/tasks/child/workflow.js +1 -1
  37. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  38. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  39. package/dist/src/execution/tools/subagent/invoke-agent.d.ts +1 -7
  40. package/dist/src/execution/tools/subagent/invoke-agent.js +1 -1
  41. package/dist/src/execution/tools/workflow/ask.d.ts +1 -2
  42. package/dist/src/execution/tools/workflow/ask.js +1 -1
  43. package/dist/src/execution/tools/workflow/body.d.ts +6 -1
  44. package/dist/src/execution/tools/workflow/body.js +1 -1
  45. package/dist/src/execution/tools/workflow/cancel.js +1 -1
  46. package/dist/src/execution/tools/workflow/messages.d.ts +9 -8
  47. package/dist/src/execution/tools/workflow/messages.js +1 -1
  48. package/dist/src/execution/tools/workflow/owner-inbox.d.ts +2 -2
  49. package/dist/src/execution/tools/workflow/owner-inbox.js +1 -1
  50. package/dist/src/execution/tools/workflow/owner.d.ts +5 -11
  51. package/dist/src/execution/tools/workflow/owner.js +1 -1
  52. package/dist/src/execution/tools/workflow/run-control.d.ts +0 -4
  53. package/dist/src/execution/tools/workflow/run-control.js +1 -1
  54. package/dist/src/execution/tools/workflow/start.d.ts +5 -14
  55. package/dist/src/execution/tools/workflow/start.js +1 -1
  56. package/dist/src/execution/tools/workflow/workflow.d.ts +1 -1
  57. package/dist/src/execution/tools/workflow/workflow.js +1 -1
  58. package/dist/src/execution/turn-dispatch.js +1 -1
  59. package/dist/src/execution/turn-workflow-tool-run.d.ts +2 -8
  60. package/dist/src/execution/turn-workflow-tool-run.js +1 -1
  61. package/dist/src/execution/turn-workflow.d.ts +1 -0
  62. package/dist/src/execution/turn-workflow.js +1 -1
  63. package/dist/src/execution/wire/session-inbox-resume.js +1 -1
  64. package/dist/src/execution/workflow-runtime.js +1 -1
  65. package/dist/src/execution/workflow-steps.js +1 -1
  66. package/dist/src/harness/emission-state.js +1 -1
  67. package/dist/src/harness/tool-loop.js +2 -2
  68. package/dist/src/harness/turn-client-context.d.ts +9 -0
  69. package/dist/src/harness/turn-client-context.js +1 -0
  70. package/dist/src/harness/workflow-tool-runs.d.ts +0 -1
  71. package/dist/src/harness/workflow-tool-runs.js +1 -1
  72. package/dist/src/internal/application/package.js +1 -1
  73. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  74. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  75. package/dist/src/internal/mcp/streamable-http-server.d.ts +29 -1
  76. package/dist/src/internal/mcp/streamable-http-server.js +1 -1
  77. package/dist/src/internal/nitro/host/build-application.js +1 -1
  78. package/dist/src/internal/workflow/runtime.d.ts +6 -0
  79. package/dist/src/internal/workflow/runtime.js +1 -1
  80. package/dist/src/internal/workflow-bundle/authored-workflow-directives.d.ts +1 -3
  81. package/dist/src/internal/workflow-bundle/authored-workflow-directives.js +1 -1
  82. package/dist/src/internal/workflow-bundle/authored-workflow-modules.d.ts +1 -2
  83. package/dist/src/internal/workflow-bundle/authored-workflow-modules.js +1 -1
  84. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
  85. package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -2
  86. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  87. package/dist/src/internal/workflow-bundle/workflow-transformer.js +1 -1
  88. package/dist/src/protocol/message.d.ts +3 -2
  89. package/dist/src/public/channels/mcp.js +1 -1
  90. package/dist/src/public/models/openai/chatgpt/model.js +2 -2
  91. package/dist/src/public/models/openai/chatgpt/transport.js +1 -1
  92. package/dist/src/public/tools/index.d.ts +3 -1
  93. package/dist/src/public/tools/index.js +1 -1
  94. package/dist/src/setup/scaffold/create/project.js +1 -1
  95. package/dist/src/shared/workflow-tool-context.d.ts +2 -0
  96. package/dist/src/shared/workflow-tool-context.js +1 -0
  97. package/dist/src/tasks/types.d.ts +17 -1
  98. package/dist/src/tasks/types.js +1 -1
  99. package/dist/src/tools/behavior.d.ts +5 -0
  100. package/dist/src/tools/definition.d.ts +16 -12
  101. package/dist/src/tools/definition.js +1 -1
  102. package/dist/src/tools/dynamic.d.ts +2 -2
  103. package/dist/src/tools/provided/sleep.d.ts +2 -2
  104. package/dist/src/tools/provided/sleep.js +1 -1
  105. package/dist/src/tools/task.d.ts +28 -80
  106. package/dist/src/tools/task.js +1 -1
  107. package/dist/src/tools/workflow-definition.d.ts +60 -0
  108. package/dist/src/tools/workflow-definition.js +1 -0
  109. package/docs/channels/mcp.mdx +25 -3
  110. package/docs/concepts/execution-model-and-durability.mdx +13 -2
  111. package/docs/guides/client/messages.mdx +1 -1
  112. package/docs/guides/deployment/vercel.mdx +2 -0
  113. package/docs/guides/frontend/overview.mdx +1 -1
  114. package/docs/memory/overview.mdx +40 -11
  115. package/docs/reference/cli.md +31 -33
  116. package/docs/reference/meta.json +1 -4
  117. package/docs/reference/telemetry.md +56 -0
  118. package/docs/reference/typescript-api.md +38 -35
  119. package/docs/tools/overview.mdx +59 -18
  120. package/docs/tools/workflows.mdx +146 -70
  121. package/package.json +1 -7
  122. package/dist/src/public/workflow/index.d.ts +0 -5
  123. package/dist/src/public/workflow/index.js +0 -1
@@ -1,43 +1,48 @@
1
1
  ---
2
2
  title: "CLI"
3
- description: "Reference for every eve CLI command: init, set, info, build, start, dev, logs, trace, link, deploy, eval, channels, and extension."
3
+ description: "Reference for every eve CLI command: init, set, info, build, start, dev, logs, traces, link, deploy, eval, channels, extension, and telemetry."
4
4
  ---
5
5
 
6
- Relevant `eve` commands can run from the application root or any directory beneath it. In an `agents/` workspace, agent-specific commands accept `--agent <name>` and otherwise open a picker when more than one agent exists. Non-interactive runs must pass `--agent`. Running `eve` with no command runs `eve init` when the current directory is not an eve project, or `eve dev` when it is.
6
+ Relevant `eve` commands can run from the application root or any directory beneath it. Running `eve` with no command runs `eve init` when the current directory is not an eve project, or `eve dev` when it is.
7
7
 
8
8
  ## Commands
9
9
 
10
- | Command | Description |
11
- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
12
- | `eve` | Initialize the current directory, or start development when it is already an eve project |
13
- | `eve init [target]` | Create a new agent, or add an agent to an existing project |
14
- | `eve info` | Print the resolved application, including static instructions and discovered capabilities, routes, artifact paths, and diagnostics |
15
- | `eve build` | Compile `.eve/` artifacts and build the host output; prints the output directory |
16
- | `eve start` | Serve the built `.output/` app; prints the listening URL |
17
- | `eve dev` | Start the local dev server and open the terminal UI |
18
- | `eve dev <url>` | Connect the UI to an existing server URL (e.g. a remote deployment) instead of booting a local server |
19
- | `eve acp [url]` | Serve the local application or an existing eve server URL as a stable ACP v1 agent over stdio |
20
- | `eve logs [logid]` | Print an `eve dev` diagnostic log (the most recent when `logid` is omitted) |
21
- | `eve logs ls` | List `eve dev` diagnostic logs, most recent first |
22
- | `eve traces ls` | List locally captured agent traces, most recent first |
23
- | `eve traces [trace]` | Show a local span tree (the most recent when omitted) |
24
- | `eve link` | Link the directory to a Vercel project and pull AI Gateway credentials |
25
- | `eve deploy` | Deploy the agent to Vercel production (links first if needed) |
26
- | `eve eval` | Run evals against the local app or a remote target |
27
- | `eve channels list` | List user-authored channels |
28
- | `eve extension init [target]` | Create a new extension package |
29
- | `eve extension build` | Build the current package as an extension |
30
- | `eve set` | Change the root agent's model and reasoning effort |
31
- | `eve add <item>` | Install an item from the official or a configured shadcn registry |
10
+ | Command | Description |
11
+ | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
12
+ | `eve` | Initialize the current directory, or start development when it is already an eve project |
13
+ | `eve init [target]` | Create a new agent, or add an agent to an existing project |
14
+ | `eve info` | Print the resolved application, including static instructions and discovered capabilities, routes, artifact paths, and diagnostics |
15
+ | `eve build` | Compile `.eve/` artifacts and build the host output; prints the output directory |
16
+ | `eve start` | Serve the built `.output/` app; prints the listening URL |
17
+ | `eve dev` | Start the local dev server and open the terminal UI |
18
+ | `eve dev <url>` | Connect the UI to an existing server URL (e.g. a remote deployment) instead of booting a local server |
19
+ | `eve acp [url]` | Serve the local application or an existing eve server URL as a stable ACP v1 agent over stdio |
20
+ | `eve logs [logid]` | Print an `eve dev` diagnostic log (the most recent when `logid` is omitted) |
21
+ | `eve logs ls` | List `eve dev` diagnostic logs, most recent first |
22
+ | `eve traces ls` | List locally captured agent traces, most recent first |
23
+ | `eve traces [trace]` | Show a local span tree (the most recent when omitted) |
24
+ | `eve telemetry <command>` | Show, enable, or disable CLI telemetry collection |
25
+ | `eve link` | Link the directory to a Vercel project and pull AI Gateway credentials |
26
+ | `eve deploy` | Deploy the agent to Vercel production (links first if needed) |
27
+ | `eve eval` | Run evals against the local app or a remote target |
28
+ | `eve channels list` | List user-authored channels |
29
+ | `eve extension init [target]` | Create a new extension package |
30
+ | `eve extension build` | Build the current package as an extension |
31
+ | `eve set` | Change the root agent's model and reasoning effort |
32
+ | `eve add <item>` | Install an item from the official or a configured shadcn registry |
32
33
  | `eve integration setup <kind>` | Run a built-in setup flow directly after its registry files are installed |
33
- | `eve registry <command>` | Add sources and list, search, or view registry catalog items |
34
+ | `eve registry <command>` | Add sources and list, search, or view registry catalog items |
34
35
 
35
36
  When `eve build` fails on discovery errors, it prints the full diagnostics report (severity, message, source path) and the diagnostics artifact path.
36
37
 
38
+ ## CLI telemetry
39
+
40
+ eve collects CLI telemetry by default to improve the command-line interface. Run `eve telemetry disable` to disable it for this machine, or set `EVE_TELEMETRY_DISABLED=1` for one command. See [CLI telemetry](./telemetry) for the current data fields, exclusions, debug mode, notice, and local preference storage.
41
+
37
42
  ## `eve init`
38
43
 
39
44
  ```bash
40
- eve init [target] [--agents <name,...>] [--model <provider/model-id>] [--reasoning <effort>] [--channel-web-nextjs]
45
+ eve init [target] [--model <provider/model-id>] [--reasoning <effort>] [--channel-web-nextjs]
41
46
  ```
42
47
 
43
48
  Creates a new agent app or adds an agent to an existing app. Always installs dependencies. New directories also initialize Git.
@@ -48,8 +53,6 @@ Creates a new agent app or adds an agent to an existing app. Always installs dep
48
53
  | `eve init` or `eve init .` in an empty directory | Creates an agent project in the current directory |
49
54
  | `eve init` or `eve init .` in a non-empty directory without `package.json` | Asks whether to scaffold in the current directory or a named subdirectory. Using the current directory preserves unrelated files but overwrites files at generated paths |
50
55
  | `eve init .` in an existing project | Adds `agent/` plus missing `eve`, `ai`, and `zod` dependencies. Requires `package.json` and no existing `agent/` files |
51
- | `eve init my-project --agents foreman,researcher` | Creates a workspace with `agents/foreman/agent/` and `agents/researcher/agent/` |
52
- | `eve init billing` from an `agents/` workspace | Adds only `agents/billing/agent/`; the workspace keeps its existing package, dependencies, and TypeScript configuration |
53
56
 
54
57
  Coding-agent launches and non-interactive terminals cannot answer the location prompt and fail before writing. Pass a new directory name, such as `eve init my-agent`, in those environments.
55
58
 
@@ -57,7 +60,6 @@ After scaffolding, a human terminal usually continues into `eve dev`. If a codin
57
60
 
58
61
  | Flag | Type | Default | Description |
59
62
  | ---------------------- | ------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
60
- | `--agents <names>` | list | unset | Create an `agents/` workspace with one or more comma-separated agent names. |
61
63
  | `--model <model>` | string | `openai/gpt-5.6-luna-fast` | Set the root agent's AI Gateway model ID. |
62
64
  | `--reasoning <effort>` | enum | provider default | Set reasoning to `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. `provider-default` leaves the field unauthored. |
63
65
  | `--channel-web-nextjs` | flag | off | Add the Web Chat app (Next.js). Not for existing projects — run `eve add channel/web` there instead. |
@@ -122,8 +124,6 @@ Commands for installing and discovering [shadcn registry](https://ui.shadcn.com/
122
124
  eve add extension/agent-browser
123
125
  eve add linear
124
126
  eve add channel/slack --skip-install
125
- eve add memory/file
126
- eve integration setup file-memory
127
127
  eve add https://example.com/r/my-extension.json --overwrite
128
128
  eve registry add @acme=https://example.com/r/{name}.json
129
129
  eve registry search browser
@@ -139,8 +139,6 @@ Coding agents should use `eve add <item> --non-interactive`, adding `--yes` to a
139
139
 
140
140
  When setup is skipped, cancelled, or needs more input after installation, eve prints or returns the matching `eve add <item> --skip-install` continuation. It reruns the selected components' declared flows without reinstalling registry files.
141
141
 
142
- `eve integration setup file-memory` runs the storage setup directly without reinstalling `agent/memory/file.ts`. It authenticates through the Vercel CLI, resolves the linked project, reconciles the private Blob store, and pulls the environment. Use it to repair or verify a previous provisioning attempt; `eve add memory/file` also offers the normal deployment handoff after setup.
143
-
144
142
  `eve registry add` records configured sources in `package.json#registries`. `eve registry list` aggregates the official catalog and all configured sources by default. `eve registry search` also includes [skills.sh](https://skills.sh), available without configuration at `@skills`, and groups results by source with each source's available result count. Search returns up to 10 matches per source by default; pass `--limit <count>` to request between 1 and 100. Either command can browse one supplied URL or namespace. Official and other universal items with explicit file targets do not require shadcn project configuration.
145
143
 
146
144
  ## `eve info`
@@ -1,4 +1 @@
1
- {
2
- "title": "Reference",
3
- "pages": ["typescript-api", "cli"]
4
- }
1
+ { "title": "Reference", "pages": ["typescript-api", "cli", "telemetry"] }
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: "CLI Telemetry"
3
+ description: "Learn what eve CLI telemetry collects and how to control it."
4
+ ---
5
+
6
+ # CLI telemetry
7
+
8
+ eve collects usage data from its CLI to help improve its commands and development experience. You can turn telemetry off at any time.
9
+
10
+ ## What eve collects
11
+
12
+ eve sends the following information to Vercel:
13
+
14
+ - The eve version, operating system, CPU architecture, and whether stdin is a terminal.
15
+ - The command you ran and whether it succeeded, had a usage error, or failed.
16
+ - For `eve dev`, whether you connected to a local or remote agent and whether the UI was interactive or headless.
17
+ - Random identifiers for the CLI session, your eve installation, and the project.
18
+
19
+ The project identifier lets eve group usage from the same project without sending its name or location. eve derives it from the Git remote when available, otherwise `REPOSITORY_URL` or the working directory, and transforms that value before sending it.
20
+
21
+ ## What eve does not collect
22
+
23
+ eve does not collect command arguments, prompts, agent files, URLs, request headers, error messages, environment variables, file paths, or file contents.
24
+
25
+ ## View telemetry data
26
+
27
+ Set `EVE_TELEMETRY_DEBUG=1` to print the telemetry batch to stderr instead of sending it:
28
+
29
+ ```bash
30
+ EVE_TELEMETRY_DEBUG=1 eve info
31
+ ```
32
+
33
+ ## Turn telemetry off
34
+
35
+ Disable telemetry for this machine:
36
+
37
+ ```bash
38
+ eve telemetry disable
39
+ ```
40
+
41
+ Check its status or turn it back on:
42
+
43
+ ```bash
44
+ eve telemetry status
45
+ eve telemetry enable
46
+ ```
47
+
48
+ To disable telemetry for one command without changing the saved setting, set `EVE_TELEMETRY_DISABLED=1`:
49
+
50
+ ```bash
51
+ EVE_TELEMETRY_DISABLED=1 eve dev
52
+ ```
53
+
54
+ On an interactive terminal, eve displays this information once before it collects telemetry. eve saves your preference in your platform user configuration directory. In CI and Docker environments, eve uses fresh in-memory identifiers for each invocation instead of saving them.
55
+
56
+ Vercel handles CLI telemetry under the [Vercel Privacy Notice](https://vercel.com/legal/privacy-notice).
@@ -34,6 +34,7 @@ export default defineTool({
34
34
  | ----------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------ |
35
35
  | `defineAgent` | `eve` | `agent/agent.ts` | [agent.ts](../agent-config) |
36
36
  | `defineTool` | `eve/tools` | `agent/tools/<name>.ts` | [Tools](../tools) |
37
+ | `defineWorkflowTool` | `eve/tools` | `agent/tools/<name>.ts` | [Workflow tools](../tools/workflows) |
37
38
  | `defineDynamic` | `eve`, `eve/tools`, `eve/skills`, `eve/instructions`, `eve/connections` | dynamic model or subagent `agent.ts`; `agent/{tools,skills,instructions,connections}/` | [Dynamic capabilities](../guides/dynamic-capabilities) |
38
39
  | `defineMcpClientConnection` | `eve/connections` | `agent/connections/<name>.ts` | [MCP connections](../connections/mcp) |
39
40
  | `defineOpenAPIConnection` | `eve/connections` | `agent/connections/<name>.ts` | [OpenAPI connections](../connections/openapi) |
@@ -53,7 +54,7 @@ export default defineTool({
53
54
  | `mockModel` | `eve/evals` | Deterministic fixture agent models | [Evals](../evals/overview) |
54
55
  | `useEveAgent` | `eve/react`, `eve/vue`, `eve/svelte` | frontend | [Frontend](../guides/frontend/overview) |
55
56
 
56
- Tool-wide authoring helpers such as `defineTool`, `defineDynamic`, and `disableTool` come from `eve/tools`. Capability-specific definitions and helpers use their own subpaths (see [Built-in tools](../concepts/built-in-tools)): reusable definitions such as `bash` and `glob` come from `eve/tools/<name>`, `webSearch` comes from `eve/tools/web_search`, `experimental_workflow` comes from `eve/tools/workflow`, `sleep` comes from `eve/tools/sleep`, and approval policies and types come from `eve/tools/approval`. The route verbs `GET`/`HEAD`/`POST`/`PUT`/`PATCH`/`DELETE`/`OPTIONS`/`WS` plus `disableRoute` come from `eve/channels`, and the channel auth helpers `localDev`/`vercelOidc`/`placeholderAuth` come from `eve/channels/auth`.
57
+ Tool-wide authoring helpers such as `defineTool`, `defineWorkflowTool`, `defineDynamic`, and `disableTool` come from `eve/tools`. Capability-specific definitions and helpers use their own subpaths (see [Built-in tools](../concepts/built-in-tools)): reusable definitions such as `bash` and `glob` come from `eve/tools/<name>`, `webSearch` comes from `eve/tools/web_search`, `experimental_workflow` comes from `eve/tools/workflow`, `sleep` comes from `eve/tools/sleep`, and approval policies and types come from `eve/tools/approval`. The route verbs `GET`/`HEAD`/`POST`/`PUT`/`PATCH`/`DELETE`/`OPTIONS`/`WS` plus `disableRoute` come from `eve/channels`, and the channel auth helpers `localDev`/`vercelOidc`/`placeholderAuth` come from `eve/channels/auth`.
57
58
 
58
59
  `AgentReasoningDefinition` is exported from `eve` for the top-level `defineAgent({ reasoning })` setting. `AgentLimitsDefinition` is exported for `defineAgent({ limits })`. `AgentWorkflowDefinition` and `AgentWorkflowWorldDefinition` are exported from `eve` for the `defineAgent({ experimental: { workflow } })` config shape. `ExperimentalWorkflowToolInput` is exported from `eve/tools/workflow`; `WebSearchToolInput` and `WebSearchProvider` are exported from `eve/tools/web_search`.
59
60
 
@@ -107,40 +108,40 @@ import template from "../../prompts/template.txt?raw";
107
108
 
108
109
  ## Imports at a glance
109
110
 
110
- | Import | Holds |
111
- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
112
- | `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types |
113
- | `eve/tools` | `defineTool`, `defineDynamic`, `disableTool`, generic tool types |
114
- | `eve/tools/{bash,read_file,write_file,todo,web_fetch,load_skill,glob,grep}` | Individual reusable tool definitions |
115
- | `eve/tools/approval` | Approval types and `always`, `once`, `never` |
116
- | `eve/tools/web_search` | Provider-managed `webSearch` configuration |
117
- | `eve/tools/workflow` | Experimental `Workflow` tool definition |
118
- | `eve/tools/sleep` | Opt-in durable `sleep` tool |
119
- | `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection`, `defineDynamic` |
120
- | `eve/channels` | `defineChannel`, `disableRoute`, route verbs |
121
- | `eve/channels/eve` | `eveChannel` |
122
- | `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth` |
123
- | `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories |
124
- | `eve/hooks` | `defineHook` |
125
- | `eve/schedules` | `defineSchedule` |
126
- | `eve/skills` | `defineSkill`, `defineDynamic` |
127
- | `eve/instructions` | `defineInstructions`, `defineDynamic` |
128
- | `eve/memory` | `defineMemory`, `defineMemoryProvider`, provider and lifecycle types |
129
- | `eve/memory/scope` | `byPrincipal` and memory scope helpers |
130
- | `eve/memory/file` | `fileMemory`, `inMemory`, and the conditional document backend contract |
131
- | `eve/memory/file/vercel` | `vercelBlob` and Vercel Blob backend options |
132
- | `eve/context` | `defineState`, session and state types |
133
- | `eve/sandbox` | `defineSandbox`, backends |
134
- | `eve/instrumentation` | `defineInstrumentation`, `isChannel` |
135
- | `eve/local-dev` | `getLocalDevCapability`, `LocalDevCapability` |
136
- | `eve/models/openai` | `chatgpt`, deprecated `experimental_chatgpt` |
137
- | `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types |
138
- | `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
139
- | `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
140
- | `eve/evals/loaders` | `loadJson`, `loadYaml` |
141
- | `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
142
- | `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
143
- | [`eve/client`](../guides/client/overview) | `Client`, `ClientSession`, health and agent-info schemas, response errors |
111
+ | Import | Holds |
112
+ | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
113
+ | `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types |
114
+ | `eve/tools` | `defineTool`, `defineWorkflowTool`, `defineDynamic`, `disableTool`, generic tool types |
115
+ | `eve/tools/{bash,read_file,write_file,todo,web_fetch,load_skill,glob,grep}` | Individual reusable tool definitions |
116
+ | `eve/tools/approval` | Approval types and `always`, `once`, `never` |
117
+ | `eve/tools/web_search` | Provider-managed `webSearch` configuration |
118
+ | `eve/tools/workflow` | Experimental `Workflow` tool definition |
119
+ | `eve/tools/sleep` | Opt-in durable `sleep` tool |
120
+ | `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection`, `defineDynamic` |
121
+ | `eve/channels` | `defineChannel`, `disableRoute`, route verbs |
122
+ | `eve/channels/eve` | `eveChannel` |
123
+ | `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth` |
124
+ | `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories |
125
+ | `eve/hooks` | `defineHook` |
126
+ | `eve/schedules` | `defineSchedule` |
127
+ | `eve/skills` | `defineSkill`, `defineDynamic` |
128
+ | `eve/instructions` | `defineInstructions`, `defineDynamic` |
129
+ | `eve/memory` | `defineMemory`, `defineMemoryProvider`, provider and lifecycle types |
130
+ | `eve/memory/scope` | `byPrincipal` and memory scope helpers |
131
+ | `eve/memory/file` | `fileMemory`, `inMemory`, and the conditional document backend contract |
132
+ | `eve/memory/file/vercel` | `vercelBlob` and Vercel Blob backend options |
133
+ | `eve/context` | `defineState`, session and state types |
134
+ | `eve/sandbox` | `defineSandbox`, backends |
135
+ | `eve/instrumentation` | `defineInstrumentation`, `isChannel` |
136
+ | `eve/local-dev` | `getLocalDevCapability`, `LocalDevCapability` |
137
+ | `eve/models/openai` | `chatgpt`, deprecated `experimental_chatgpt` |
138
+ | `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types |
139
+ | `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
140
+ | `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
141
+ | `eve/evals/loaders` | `loadJson`, `loadYaml` |
142
+ | `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
143
+ | `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
144
+ | [`eve/client`](../guides/client/overview) | `Client`, `ClientSession`, health and agent-info schemas, response errors |
144
145
 
145
146
  Exported types ship from the same entrypoint as the helper they describe (for example `ToolDefinition` and `ToolContext` from `eve/tools`). The `exports` field in `packages/eve/package.json` lists every public entrypoint.
146
147
 
@@ -182,6 +183,8 @@ export default defineAgent({
182
183
 
183
184
  Pass another bare OpenAI model slug to override the default. `experimental_chatgpt()` remains as a deprecated alias.
184
185
 
186
+ `chatgpt()` uses stateless requests (`store: false`). eve retains reasoning summaries and encrypted reasoning in session history and replays them after tool calls and on later turns. You do not need to configure `reasoning.encrypted_content` explicitly.
187
+
185
188
  Authentication is delegated entirely to the Codex CLI:
186
189
 
187
190
  1. Install or upgrade `codex` and run `codex login`.
@@ -34,8 +34,8 @@ When a tool returns structured data, add an optional `outputSchema`. With Zod or
34
34
 
35
35
  ### Stream preliminary tool results
36
36
 
37
- An async generator lets a long-running tool stream complete output snapshots
38
- before it finishes. Each `yield` replaces the previous snapshot; the final
37
+ For a `defineTool` executor with the default execution mode, an async generator streams complete
38
+ output snapshots before it finishes. Each `yield` replaces the previous snapshot; the final
39
39
  yield is the normal tool result the model receives:
40
40
 
41
41
  ```ts title="agent/tools/build_report.ts"
@@ -54,22 +54,43 @@ eve publishes every earlier yield as an `action.partial` stream event. The
54
54
  snapshot is visible to channels, hooks, and clients but never enters model
55
55
  history or `toModelOutput`; only the final yield does. Treat snapshots as
56
56
  last-write-wins by tool call id, not append-only progress. The durable runtime
57
- can retry a step and replay overlapping snapshots.
57
+ can retry a step and replay overlapping snapshots. A generator `return` value is not used as
58
+ the result in this mode; yield the final output. Workflow and background generators have
59
+ different result rules, described under [yield and return](#yield-and-return).
58
60
 
59
61
  ### Background execution
60
62
 
61
- `defineTool({ execution: "background" })` receives a third `task` argument. Returning a normal
62
- value completes the durable task with that value. Returning `task.delegated({ executor, receipt })`
63
- returns a `working` receipt immediately while an external executor continues the task. Background
64
- tools are a normal execution mode and need no root-agent flag.
65
-
66
- Built-in, declared local, and remote subagents use this background task lifecycle automatically.
67
- After delegating, an
68
- in-process executor reports
69
- progress with `task.send({ kind: "update", message })` and the terminal result with
70
- `task.send({ kind: "complete", data })` (or `fail` / `cancel`). `send` is not restart-safe — an
71
- in-memory callback dies with the process — so the cross-process executor wire remains
72
- framework-owned and is not yet a stable authored-tool API.
63
+ Background execution controls how a tool delivers its result to the parent agent. Durable
64
+ suspension controls whether the executor can pause at a workflow wait and release compute.
65
+ These are independent choices: `execution: "background"` selects the task lifecycle;
66
+ `defineWorkflowTool` with a leading `"use workflow"` directive enables durable suspension.
67
+
68
+ | Definition | Durable waits inside `execute` | Result delivered to the model |
69
+ | ------------------------------------------------ | --------------------------------------------------------------- | ---------------------------------------------------------------------- |
70
+ | `defineTool` | No; the executor runs inside the initiating step. | Executor output after it finishes. |
71
+ | `defineTool` + `execution: "background"` | No; the initiating step still waits for the executor to finish. | Task receipt, followed by task notifications. |
72
+ | `defineWorkflowTool` | Yes; the tool call waits while the workflow can suspend. | Workflow output after it finishes. |
73
+ | `defineWorkflowTool` + `execution: "background"` | Yes; the workflow body can outlive the initiating step. | Task receipt before the body finishes, followed by task notifications. |
74
+
75
+ A background tool receives a third `task` argument. Its tool result is the receipt
76
+ `{ status: "working", taskId }`; its eventual output belongs to the task. Use a background
77
+ workflow tool when the conversation should continue while the body waits for a person,
78
+ webhook, or timer. Setting `execution: "background"` on an ordinary tool does not move its
79
+ executor into a separate workflow or make an ordinary Promise a durable wait.
80
+
81
+ For background tools, `outputSchema` and `toModelOutput` describe the fixed receipt. The body's
82
+ return value is available through the completed task's output.
83
+
84
+ `task.delegated()` has been removed. Move external work into a `defineWorkflowTool` executor and
85
+ return its result when it finishes. Rebuild extensions using the removed API after migrating.
86
+
87
+ `yield task.postMessage(message)` is the only yield that requests a parent-agent turn. Calling
88
+ `task.postMessage` only constructs the message descriptor; you must yield it to send it.
89
+ In a workflow body, keep values needed after a wait in local variables; workflow replay
90
+ reconstructs them across durable waits.
91
+ Use [`ctx.ask`](/docs/tools/workflows#ask-a-human-ctxask) when the body needs an answer from the human.
92
+ Background tools are a normal execution mode and need no root-agent flag. Built-in, declared local,
93
+ and remote subagents use this task lifecycle automatically.
73
94
 
74
95
  After the initiating turn accepts background tasks, eve supplies runtime-authored state for that
75
96
  cohort and instructs the model to acknowledge that the work started without waiting for results.
@@ -79,11 +100,31 @@ Later task-triggered parent turns receive fresh state for the same cohort. The m
79
100
  to keep related intermediate results silent while any task remains pending. Once every related
80
101
  task is terminal, the state includes their outputs so the model can combine the useful results.
81
102
 
103
+ ### Yield and return
104
+
105
+ `yield` hands a value to eve's generator consumer, which processes it and advances the generator.
106
+ It does not by itself create a durable wait for a person, timer, or external event. The value's
107
+ meaning depends on the tool's execution mode:
108
+
109
+ | Executor | Ordinary `yield value` | Final output |
110
+ | ------------------------------------------------ | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
111
+ | `defineTool`, default execution | Earlier values are `action.partial` snapshots; the final yield becomes the tool result. | Last yielded value; a generator `return` value is ignored. |
112
+ | `defineWorkflowTool`, default execution | Every yield is an `action.partial` snapshot. | Explicit return value; falls back to the last yield if the return is `null` or `undefined`, then to `null`. |
113
+ | Either definition with `execution: "background"` | Stream-only task progress; does not request a parent-agent turn. | Explicit return value becomes the task output; no return completes with `null`. The last yield is not a fallback. |
114
+
115
+ For either kind of background tool, `yield task.postMessage(message)` sends a message to the
116
+ parent agent while the task remains open. Return completes the task; throw fails it. These
117
+ notifications are separate from the original tool call's receipt.
118
+
119
+ Progress snapshots do not enter model history as intermediate tool results. For a default
120
+ executor, the final output selected by the rules above becomes the tool result. For a background
121
+ executor, task messages and completion notifications provide input to later parent-agent turns.
122
+
82
123
  ### Workflows as tools
83
124
 
84
- Put `"use workflow"` at the start of a tool's `execute` function to run each call as a durable
85
- Workflow run. The tool can wait for a person, webhook, or timer without holding compute, then return
86
- its result to the model. See [Workflows as tools](/docs/tools/workflows) for the authoring rules and
125
+ Use `defineWorkflowTool` from `eve/tools` to run each call as a durable Workflow run. Its
126
+ executor must start with `"use workflow"` and receives `ctx.agent` and `ctx.ask`. The tool can
127
+ wait for a person, webhook, or timer without holding compute, then return its result to the model. See [Workflows as tools](/docs/tools/workflows) for the authoring rules and
87
128
  examples.
88
129
 
89
130
  ### The `ctx` parameter