eve 0.52.4 → 0.53.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.
- package/CHANGELOG.md +28 -0
- package/dist/src/cli/commands/init-agent-workspace.d.ts +2 -0
- package/dist/src/cli/commands/init-agent-workspace.js +1 -1
- package/dist/src/cli/commands/init-install.d.ts +8 -0
- package/dist/src/cli/commands/init-install.js +1 -0
- package/dist/src/cli/commands/init.d.ts +3 -4
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/dev/tui/message-queue.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
- package/dist/src/cli/run.js +2 -2
- package/dist/src/cli/telemetry/index.d.ts +3 -0
- package/dist/src/cli/telemetry/index.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +17 -16
- package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +23 -2
- package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -4
- package/dist/src/compiled/@ai-sdk/google/index.d.ts +145 -33
- package/dist/src/compiled/@ai-sdk/google/index.js +10 -7
- package/dist/src/compiled/@ai-sdk/mcp/index.d.ts +176 -7
- package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/openai/index.d.ts +71 -40
- package/dist/src/compiled/@ai-sdk/openai/index.js +8 -8
- package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/provider/index.d.ts +225 -3
- package/dist/src/compiled/@ai-sdk/provider-utils/index.d.ts +220 -151
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +3 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +59 -7
- package/dist/src/compiled/@workflow/core/runtime/run.d.ts +42 -0
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +31 -1
- package/dist/src/compiled/@workflow/core/runtime.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/runtime.js +2 -2
- package/dist/src/compiled/@workflow/core/serialization.d.ts +22 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +37 -3
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/attributes-validation.d.ts +68 -0
- package/dist/src/compiled/@workflow/world/index.d.ts +1 -1
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +21 -0
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +3 -3
- package/dist/src/compiled/_chunks/workflow/attribute-changes-C6H-fRVP.js +20 -0
- package/dist/src/compiled/_chunks/workflow/dist-DDeH-1ER.js +40 -0
- package/dist/src/compiled/_chunks/workflow/dist-DhncQSl7.js +74 -0
- package/dist/src/compiled/_chunks/workflow/{dist-BIO9Inoc.js → dist-xTushGCp.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/frames-DsEqSDes.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{private-aXEeo0fU.js → private-CFJkQA7R.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-BRDLAb67.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-BM2OFphk.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-6cG0F99-.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{ws-transport-M7uk8HV8.js → ws-transport-DuK82LLz.js} +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +7 -6
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/context/dynamic-model-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +11 -2
- package/dist/src/context/keys.js +1 -1
- package/dist/src/evals/mock-model.js +1 -1
- package/dist/src/evals/runner/run-evals.d.ts +1 -1
- package/dist/src/evals/runner/run-evals.js +1 -1
- package/dist/src/execution/activity-cohort.d.ts +20 -0
- package/dist/src/execution/activity-cohort.js +1 -0
- package/dist/src/execution/authorization-callback-match.d.ts +1 -0
- package/dist/src/execution/authorization-callback-match.js +1 -1
- package/dist/src/execution/cancelled-model-call-batch.d.ts +15 -0
- package/dist/src/execution/cancelled-model-call-batch.js +1 -0
- package/dist/src/execution/coordination-dispatch-shared.js +1 -1
- package/dist/src/execution/model-call-batching.d.ts +11 -0
- package/dist/src/execution/model-call-batching.js +1 -0
- package/dist/src/execution/parked-delivery-wait.js +1 -1
- package/dist/src/execution/session-activity-projection.d.ts +2 -0
- package/dist/src/execution/session-activity-projection.js +1 -1
- package/dist/src/execution/skills/instructions.js +1 -1
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/subagent/invoke-agent.d.ts +5 -5
- package/dist/src/execution/tools/subagent/invoke-agent.js +1 -1
- package/dist/src/execution/tools/subagent/start.js +1 -1
- package/dist/src/execution/tools/workflow/body.js +1 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/wire/session-inbox-resume.js +1 -1
- package/dist/src/execution/workflow-steps.d.ts +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/approval-delivery-coordinator.js +1 -1
- package/dist/src/harness/authorization.d.ts +1 -0
- package/dist/src/harness/authorization.js +1 -1
- package/dist/src/harness/compaction.js +1 -1
- package/dist/src/harness/current-messages.d.ts +8 -2
- package/dist/src/harness/current-messages.js +1 -1
- package/dist/src/harness/hitl/approval-input-requests.js +1 -1
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +4 -0
- package/dist/src/harness/pending-input-batches.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/turn-client-context.d.ts +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/mock-model-identity.d.ts +2 -0
- package/dist/src/internal/mock-model-identity.js +1 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/workflow-bundle/authored-workflow-directives.js +1 -1
- package/dist/src/public/tools/index.d.ts +1 -0
- package/dist/src/public/tools/index.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/self-modification/agent.d.ts +2 -2
- package/dist/src/self-modification/agent.js +1 -1
- package/dist/src/self-modification/config.d.ts +15 -0
- package/dist/src/self-modification/config.js +1 -1
- package/dist/src/self-modification/extension/extension.d.ts +3 -0
- package/dist/src/self-modification/extension/extension.js +1 -1
- package/dist/src/self-modification/setup.d.ts +3 -0
- package/dist/src/self-modification/setup.js +25 -4
- package/dist/src/setup/integrations/self-modification/setup.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +2 -2
- package/dist/src/setup/scaffold/update/web-options.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +11 -2
- package/dist/src/tasks/delivery-context.d.ts +2 -2
- package/dist/src/tasks/delivery-context.js +2 -18
- package/dist/src/tasks/delivery-policy.js +1 -1
- package/dist/src/tools/durable-callbacks.d.ts +18 -1
- package/dist/src/tools/durable-callbacks.js +1 -1
- package/dist/src/tools/workflow-definition.d.ts +38 -4
- package/docs/agent-config.md +44 -8
- package/docs/channels/overview.mdx +2 -0
- package/docs/channels/slack.mdx +2 -0
- package/docs/concepts/execution-model-and-durability.mdx +20 -2
- package/docs/evals/running.mdx +3 -1
- package/docs/guides/dev-tui.md +11 -11
- package/docs/guides/dynamic-capabilities.md +36 -1
- package/docs/guides/instrumentation.md +3 -2
- package/docs/instructions.mdx +1 -1
- package/docs/reference/cli.md +1 -1
- package/docs/reference/telemetry.md +1 -1
- package/docs/reference/typescript-api.md +36 -35
- package/docs/subagents/index.mdx +1 -1
- package/docs/tools/overview.mdx +4 -2
- package/docs/tools/workflows.mdx +15 -10
- package/package.json +17 -17
- package/dist/src/compiled/_chunks/workflow/attribute-changes-DpruylJZ.js +0 -20
- package/dist/src/compiled/_chunks/workflow/dist-ChzQSWQA.js +0 -65
- package/dist/src/compiled/_chunks/workflow/dist-veFIAdWV.js +0 -40
- package/dist/src/compiled/_chunks/workflow/frames-DKxlMf3X.js +0 -3
- package/dist/src/compiled/_chunks/workflow/resume-hook-DWDi_wCN.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-vsAdI41O.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-BKxoNDRv.js +0 -1
package/docs/evals/running.mdx
CHANGED
|
@@ -16,7 +16,7 @@ eve eval --timeout 60000 # per-eval timeout in milliseconds
|
|
|
16
16
|
eve eval --max-concurrency 4 # cap concurrent eval executions (default 8)
|
|
17
17
|
eve eval --junit .eve/junit.xml # write JUnit XML
|
|
18
18
|
eve eval --list # print discovered evals without running
|
|
19
|
-
eve eval --verbose # stream per-eval
|
|
19
|
+
eve eval --verbose # stream per-eval logs and workflow run IDs
|
|
20
20
|
eve eval --json # machine-readable output
|
|
21
21
|
eve eval --skip-report # skip config and eval-defined reporters (e.g. Braintrust)
|
|
22
22
|
```
|
|
@@ -37,6 +37,8 @@ An eval that calls `t.skip(reason)` is reported as skipped, does not count as pa
|
|
|
37
37
|
|
|
38
38
|
`eve eval --json` flushes the complete report before exiting, including when stdout is piped to another process or redirected to a file.
|
|
39
39
|
|
|
40
|
+
With `--verbose`, eve prefixes each line with its eval ID. It streams authored `t.log()` lines as they occur, then prints the workflow run ID for every captured primary and secondary session. Use those `wrun_...` IDs to find the corresponding runs in your workflow provider.
|
|
41
|
+
|
|
40
42
|
## Artifacts
|
|
41
43
|
|
|
42
44
|
Each run drops artifacts under `.eve/evals/<timestamp>/`: a run `summary.json`, a `results.jsonl` index, and per-eval assertion results, verdicts, captured event streams, and `t.log` lines under `evals/`. The console output stays tight on purpose; when an eval fails, the artifact has the full story.
|
package/docs/guides/dev-tui.md
CHANGED
|
@@ -59,17 +59,17 @@ The UI installs planner selections in order and offers deployment once after the
|
|
|
59
59
|
|
|
60
60
|
Type a message and press `Enter` to send it. When the agent asks a question or requests tool approval, respond in the prompt shown by the UI. Connection authorization can open a browser; keep local `eve dev` running until the browser returns to it.
|
|
61
61
|
|
|
62
|
-
While a turn is running, `Enter` queues a follow-up message. Press `Esc` or `Ctrl+C` to cancel the turn; when messages are queued, this uses the oldest queued message as the next turn instead. At an idle prompt, press `Ctrl+C` twice to exit.
|
|
63
|
-
|
|
64
|
-
| Key | Action
|
|
65
|
-
| ------------- |
|
|
66
|
-
| `Enter` | Send the current message or answer.
|
|
67
|
-
| `Shift+Enter` | Insert a newline. Requires a terminal that reports modified keys.
|
|
68
|
-
| `Esc` | Cancel a running turn, or steer with the oldest queued message.
|
|
69
|
-
| `Ctrl+C` | Cancel or steer during a turn;
|
|
70
|
-
| `↑` / `↓` | Move through input lines or sent-message history.
|
|
71
|
-
| `Ctrl+L` | Cycle log display modes.
|
|
72
|
-
| `Ctrl+R` | Redraw the screen.
|
|
62
|
+
While a turn is running, `Enter` queues a follow-up message. Press `Esc` or `Ctrl+C` to cancel the turn; when messages are queued, this uses the oldest queued message as the next turn instead. If a direct cancellation requested with `/cancel` or `Ctrl+C` does not settle, press `Ctrl+C` to stop waiting. The UI then returns to the prompt and asks you to press `Ctrl+C` again to exit. At an idle prompt, press `Ctrl+C` twice to exit.
|
|
63
|
+
|
|
64
|
+
| Key | Action |
|
|
65
|
+
| ------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
66
|
+
| `Enter` | Send the current message or answer. |
|
|
67
|
+
| `Shift+Enter` | Insert a newline. Requires a terminal that reports modified keys. |
|
|
68
|
+
| `Esc` | Cancel a running turn, or steer with the oldest queued message. |
|
|
69
|
+
| `Ctrl+C` | Cancel or steer during a turn; stop a pending cancellation, then exit on the next press; press twice to exit when idle. |
|
|
70
|
+
| `↑` / `↓` | Move through input lines or sent-message history. |
|
|
71
|
+
| `Ctrl+L` | Cycle log display modes. |
|
|
72
|
+
| `Ctrl+R` | Redraw the screen. |
|
|
73
73
|
|
|
74
74
|
## Logs and traces
|
|
75
75
|
|
|
@@ -253,7 +253,42 @@ Write callback properties as inline function expressions, arrows, method shortha
|
|
|
253
253
|
|
|
254
254
|
Closure values must be JSON-serializable. Plain objects, arrays, strings, finite numbers, booleans, and `null` are supported; `undefined` object properties are omitted. Functions, class instances, `Date`, `Map`, symbols, non-finite numbers, and cyclic values fail resolution with the tool name and callback phase instead of being serialized lossily.
|
|
255
255
|
|
|
256
|
-
Call expressions such as `execute: makeExecutor()` are not transformed. Put the callback body directly in `defineTool()` inside an authored module; eve
|
|
256
|
+
Call expressions such as `execute: makeExecutor()` are not transformed. Put the callback body directly in `defineTool()` inside an authored module; eve rejects a dynamic tool if a callback lacks durable metadata.
|
|
257
|
+
|
|
258
|
+
### Create dynamic tools in a package
|
|
259
|
+
|
|
260
|
+
Prefer an [extension](../extensions) for reusable eve integrations. Extensions contribute a namespaced set of capabilities that consumers can override. Author the final `defineTool()` calls in the extension source. Then build the package with `eve extension build` so eve transforms its callbacks.
|
|
261
|
+
|
|
262
|
+
Use `defineDurableCallback` when a provider package must return dynamic `defineTool()` values directly. eve cannot transform callback code inside an installed dependency. Put every per-tool value in the helper's `closure`. The callback receives that snapshot as its first argument. The closure follows the same JSON-serializability rules as transformed captures.
|
|
263
|
+
|
|
264
|
+
```ts title="provider-package/search.ts"
|
|
265
|
+
import { defineDurableCallback, defineTool } from "eve/tools";
|
|
266
|
+
import { z } from "zod";
|
|
267
|
+
|
|
268
|
+
interface SearchInput {
|
|
269
|
+
query: string;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export function createSearchTool(baseUrl: string) {
|
|
273
|
+
return defineTool({
|
|
274
|
+
description: "Search the provider catalog.",
|
|
275
|
+
inputSchema: z.object({ query: z.string() }),
|
|
276
|
+
execute: defineDurableCallback({
|
|
277
|
+
closure: { baseUrl },
|
|
278
|
+
callback: async ({ baseUrl }, { query }: SearchInput) => {
|
|
279
|
+
const response = await fetch(`${baseUrl}/search?q=${encodeURIComponent(query)}`);
|
|
280
|
+
return response.json();
|
|
281
|
+
},
|
|
282
|
+
}),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Wrap every callback property with the helper. This includes labels, approval policies, `approvalKey`, `execute`, and `toModelOutput`.
|
|
288
|
+
|
|
289
|
+
`closure` is the callback's only durable snapshot. Store the identifiers and configuration needed to reproduce the call there. Reconstruct clients or look up live runtime state when the callback runs. The callback may call stable imported functions, but it must not capture runtime objects outside `closure`. Those values disappear on a cold start.
|
|
290
|
+
|
|
291
|
+
eve-provided factories, including [memory provider tools](../memory), use the same durable callback mechanism.
|
|
257
292
|
|
|
258
293
|
### Identity and redeploys
|
|
259
294
|
|
|
@@ -69,8 +69,9 @@ Instrumentation providers receive `channel.delivery.started` followed by
|
|
|
69
69
|
`channel.delivery.failed` for every inbound channel operation. The lifecycle
|
|
70
70
|
covers durable processing through the terminal state of the resulting turn, not
|
|
71
71
|
messages an adapter sends back to Slack, Telegram, Twilio, or another platform.
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
Adjacent queued messages with matching authenticated identities and authorization
|
|
73
|
+
attributes can share a turn while retaining separate lifecycle pairs. An adapter
|
|
74
|
+
can also consume a delivery without starting a turn.
|
|
74
75
|
|
|
75
76
|
Each operation has a framework-owned `deliveryId` distinct from its optional
|
|
76
77
|
platform request ID. Metadata-only providers receive identity, channel, session,
|
package/docs/instructions.mdx
CHANGED
|
@@ -86,7 +86,7 @@ See [Dynamic capabilities](./guides/dynamic-capabilities) for examples and failu
|
|
|
86
86
|
|
|
87
87
|
[Compaction](./concepts/sessions-runs-and-streaming#compact-clear-and-reset) treats user-role instructions like ordinary conversation history, so a summary may replace their original text. Clear removes them with the rest of model-message history and does not rerun static or dynamic instructions. System-role instructions remain because they are outside history.
|
|
88
88
|
|
|
89
|
-
Keep system-role content stable and place it before frequently changing context when practical. That gives providers the best opportunity to reuse a prompt prefix, but cache behavior and billing remain provider-specific. User-role instructions preserve the normal append-only message prefix. Framework
|
|
89
|
+
Keep system-role content stable and place it before frequently changing context when practical. That gives providers the best opportunity to reuse a prompt prefix, but cache behavior and billing remain provider-specific. User-role instructions preserve the normal append-only message prefix. Framework announcements about available skills and background tasks are retained in user-role history: changed snapshots append after earlier steps instead of replacing the context sent with those steps. Unchanged announcements are skipped until history is cleared or compacted. eve does not promise a cache hit.
|
|
90
90
|
|
|
91
91
|
## Disclaimer
|
|
92
92
|
|
package/docs/reference/cli.md
CHANGED
|
@@ -372,7 +372,7 @@ Runs all discovered evals when no eval ids are given; ids match exactly or by di
|
|
|
372
372
|
| `--json` | flag | off | Output results as JSON |
|
|
373
373
|
| `--junit <path>` | string | none | Write JUnit XML results to a file |
|
|
374
374
|
| `--skip-report` | flag | off | Skip eval-defined reporters (e.g. Braintrust) |
|
|
375
|
-
| `--verbose` | flag | off | Stream per-eval
|
|
375
|
+
| `--verbose` | flag | off | Stream per-eval logs and workflow run IDs to stdout |
|
|
376
376
|
|
|
377
377
|
See [Evals](../evals/overview) for authoring evals.
|
|
378
378
|
|
|
@@ -12,7 +12,7 @@ eve collects usage data from its CLI to help improve its commands and developmen
|
|
|
12
12
|
eve sends the following information to Vercel:
|
|
13
13
|
|
|
14
14
|
- The eve version, operating system, CPU architecture, and whether stdin is a terminal.
|
|
15
|
-
- The command you ran, its outcome, and setup or onboarding steps when applicable.
|
|
15
|
+
- The command you ran, its outcome, and setup or onboarding steps when applicable. When setup or onboarding fails, eve sends a bounded failure category such as target resolution, scaffolding, package-manager startup, workspace probing, dependency installation, Git initialization, handoff, or onboarding. It does not send the underlying error.
|
|
16
16
|
- For `eve dev`, whether you connected to a local or remote agent and whether the UI was interactive or headless.
|
|
17
17
|
- Random identifiers for the CLI session, installation, and project, plus whether the installation and project identifiers are ephemeral or persistent.
|
|
18
18
|
|
|
@@ -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
|
+
| `defineDurableCallback` | `eve/tools` | provider-package dynamic tool factories | [Dynamic capabilities](../guides/dynamic-capabilities) |
|
|
37
38
|
| `defineWorkflowTool` | `eve/tools` | `agent/tools/<name>.ts` | [Workflow tools](../tools/workflows) |
|
|
38
39
|
| `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) |
|
|
39
40
|
| `defineMcpClientConnection` | `eve/connections` | `agent/connections/<name>.ts` | [MCP connections](../connections/mcp) |
|
|
@@ -54,7 +55,7 @@ export default defineTool({
|
|
|
54
55
|
| `mockModel` | `eve/evals` | Deterministic fixture agent models | [Evals](../evals/overview) |
|
|
55
56
|
| `useEveAgent` | `eve/react`, `eve/vue`, `eve/svelte` | frontend | [Frontend](../guides/frontend/overview) |
|
|
56
57
|
|
|
57
|
-
Tool-wide authoring helpers and types such as `defineTool`, `defineWorkflowTool`, `defineDynamic`, `disableTool`, and `ToolLabelDefinition` 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`.
|
|
58
|
+
Tool-wide authoring helpers and types such as `defineTool`, `defineWorkflowTool`, `defineDurableCallback`, `defineDynamic`, `disableTool`, and `ToolLabelDefinition` 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`.
|
|
58
59
|
|
|
59
60
|
`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`.
|
|
60
61
|
|
|
@@ -108,40 +109,40 @@ import template from "../../prompts/template.txt?raw";
|
|
|
108
109
|
|
|
109
110
|
## Imports at a glance
|
|
110
111
|
|
|
111
|
-
| Import | Holds
|
|
112
|
-
| --------------------------------------------------------------------------- |
|
|
113
|
-
| `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types
|
|
114
|
-
| `eve/tools` | `defineTool`, `defineWorkflowTool`, `defineDynamic`, `disableTool`,
|
|
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
|
|
112
|
+
| Import | Holds |
|
|
113
|
+
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
114
|
+
| `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types |
|
|
115
|
+
| `eve/tools` | `defineTool`, `defineWorkflowTool`, `defineDurableCallback`, `defineDynamic`, `disableTool`, tool types |
|
|
116
|
+
| `eve/tools/{bash,read_file,write_file,todo,web_fetch,load_skill,glob,grep}` | Individual reusable tool definitions |
|
|
117
|
+
| `eve/tools/approval` | Approval types and `always`, `once`, `never` |
|
|
118
|
+
| `eve/tools/web_search` | Provider-managed `webSearch` configuration |
|
|
119
|
+
| `eve/tools/workflow` | Experimental `Workflow` tool definition |
|
|
120
|
+
| `eve/tools/sleep` | Opt-in durable `sleep` tool |
|
|
121
|
+
| `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection`, `defineDynamic` |
|
|
122
|
+
| `eve/channels` | `defineChannel`, `disableRoute`, route verbs |
|
|
123
|
+
| `eve/channels/eve` | `eveChannel` |
|
|
124
|
+
| `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth` |
|
|
125
|
+
| `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories |
|
|
126
|
+
| `eve/hooks` | `defineHook` |
|
|
127
|
+
| `eve/schedules` | `defineSchedule` |
|
|
128
|
+
| `eve/skills` | `defineSkill`, `defineDynamic` |
|
|
129
|
+
| `eve/instructions` | `defineInstructions`, `defineDynamic` |
|
|
130
|
+
| `eve/memory` | `defineMemory`, `defineMemoryProvider`, provider and lifecycle types |
|
|
131
|
+
| `eve/memory/scope` | `byPrincipal` and memory scope helpers |
|
|
132
|
+
| `eve/memory/file` | `fileMemory`, `inMemory`, and the conditional document backend contract |
|
|
133
|
+
| `eve/memory/file/vercel` | `vercelBlob` and Vercel Blob backend options |
|
|
134
|
+
| `eve/context` | `defineState`, session and state types |
|
|
135
|
+
| `eve/sandbox` | `defineSandbox`, backends |
|
|
136
|
+
| `eve/instrumentation` | `defineInstrumentation`, `isChannel` |
|
|
137
|
+
| `eve/local-dev` | `getLocalDevCapability`, `LocalDevCapability` |
|
|
138
|
+
| `eve/models/openai` | `chatgpt`, deprecated `experimental_chatgpt` |
|
|
139
|
+
| `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types |
|
|
140
|
+
| `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
|
|
141
|
+
| `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
|
|
142
|
+
| `eve/evals/loaders` | `loadJson`, `loadYaml` |
|
|
143
|
+
| `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
|
|
144
|
+
| `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
|
|
145
|
+
| [`eve/client`](../guides/client/overview) | `Client`, `ClientSession`, health and agent-info schemas, response errors |
|
|
145
146
|
|
|
146
147
|
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.
|
|
147
148
|
|
package/docs/subagents/index.mdx
CHANGED
|
@@ -183,7 +183,7 @@ Each delegated subagent spins up its own child session and stream. The parent st
|
|
|
183
183
|
|
|
184
184
|
A background task that was already admitted survives cancellation of the turn that started it; background work that has not yet been admitted is rejected with the cancelled step. Use `task_cancel` to stop an admitted task. Cancellation delivers the task's final notification to an active parent even if the task must be stopped forcibly. Parent-session finalization cancels remaining live tasks.
|
|
185
185
|
|
|
186
|
-
Subagent model calls automatically retry classified transient provider failures, including overload errors delivered after a stream starts. eve makes at most three fresh model-call attempts, repeating only the current uncommitted call so completed earlier steps, tool results, and sandbox work remain available to the child. Other recoverable task errors fall back to Workflow's durable step retry from the last committed session snapshot. Exhausting the transient model-call attempts or the dedicated empty-response reissue returns one failed task result instead of stacking both retry budgets; terminal errors fail immediately.
|
|
186
|
+
Subagent model calls automatically retry classified transient provider failures, including overload errors delivered after a stream starts. eve makes at most three fresh model-call attempts, repeating only the current uncommitted call by default so completed earlier Workflow steps, tool results, and sandbox work remain available to the child. A declared subagent that opts into [Workflow checkpoint batching](./agent-config#workflow-checkpoint-batching) can instead repeat the uncommitted calls and inline tool executions in its current batch. Other recoverable task errors fall back to Workflow's durable step retry from the last committed session snapshot. Exhausting the transient model-call attempts or the dedicated empty-response reissue returns one failed task result instead of stacking both retry budgets; terminal errors fail immediately.
|
|
187
187
|
|
|
188
188
|
## Agent messaging
|
|
189
189
|
|
package/docs/tools/overview.mdx
CHANGED
|
@@ -138,9 +138,11 @@ After the initiating turn accepts background tasks, eve supplies runtime-authore
|
|
|
138
138
|
cohort and instructs the model to acknowledge that the work started without waiting for results.
|
|
139
139
|
[Schedule](/docs/schedules)-initiated turns are the exception: no user prompted them, so their
|
|
140
140
|
launches keep conditional delivery and send no acknowledgement.
|
|
141
|
-
Later task-triggered parent turns receive fresh state for the same cohort.
|
|
142
|
-
to keep related intermediate results silent while any task remains pending. Once every related
|
|
141
|
+
Later task-triggered parent turns receive fresh state for the same cohort. Once every related
|
|
143
142
|
task is terminal, the state includes their outputs so the model can combine the useful results.
|
|
143
|
+
eve does not instruct the model to stay silent while sibling tasks are pending; a new user
|
|
144
|
+
question can receive an answer while background work continues. [Completion batching](/docs/subagents#completion-batching)
|
|
145
|
+
combines successful results already queued for the parent.
|
|
144
146
|
|
|
145
147
|
### Yield and return
|
|
146
148
|
|
package/docs/tools/workflows.mdx
CHANGED
|
@@ -102,9 +102,9 @@ the build with the missing import in the error.
|
|
|
102
102
|
### Migrate an existing workflow tool
|
|
103
103
|
|
|
104
104
|
Replace `defineTool` with `defineWorkflowTool`, keep the executor's `"use workflow"` directive,
|
|
105
|
-
and replace `agent(ctx, input)` and `ask(ctx, request)` with `ctx.agent(input)` and
|
|
106
|
-
The `eve/workflow` entry point has been removed. Import `WorkflowToolContext`,
|
|
107
|
-
`ToolInputRequest`, and `ToolInputResponse` from `eve/tools` when you need explicit types.
|
|
105
|
+
and replace `agent(ctx, input)` and `ask(ctx, request)` with `ctx.agent(target, input)` and
|
|
106
|
+
`ctx.ask(request)`. The `eve/workflow` entry point has been removed. Import `WorkflowToolContext`,
|
|
107
|
+
`AgentInput`, `ToolInputRequest`, and `ToolInputResponse` from `eve/tools` when you need explicit types.
|
|
108
108
|
|
|
109
109
|
## Wait or run in the background
|
|
110
110
|
|
|
@@ -250,17 +250,22 @@ and can only show the model's input. Both compose: `approval` before the run, `c
|
|
|
250
250
|
Workflow tools can call a visible subagent and wait for its result:
|
|
251
251
|
|
|
252
252
|
```ts
|
|
253
|
-
const result = await ctx.agent({
|
|
254
|
-
key: "security-review",
|
|
255
|
-
target: "reviewer",
|
|
253
|
+
const result = await ctx.agent("reviewer", {
|
|
256
254
|
message: "Review the deployment plan for security risks.",
|
|
255
|
+
outputSchema: {
|
|
256
|
+
type: "object",
|
|
257
|
+
properties: {
|
|
258
|
+
findings: { type: "array", items: { type: "string" } },
|
|
259
|
+
},
|
|
260
|
+
required: ["findings"],
|
|
261
|
+
},
|
|
257
262
|
});
|
|
258
263
|
```
|
|
259
264
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
`
|
|
265
|
+
The first argument is the model-visible subagent name. eve assigns each call a replay-stable
|
|
266
|
+
invocation identity, including repeated and parallel calls to the same subagent. Pass `agentId` to
|
|
267
|
+
continue an existing child. An inline `outputSchema` requires structured output and determines the
|
|
268
|
+
return type, so `result` in the example is typed as `{ findings: string[] }`.
|
|
264
269
|
|
|
265
270
|
## Report progress: `yield`
|
|
266
271
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.53.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -442,14 +442,14 @@
|
|
|
442
442
|
},
|
|
443
443
|
"devDependencies": {
|
|
444
444
|
"@agentclientprotocol/sdk": "1.3.0",
|
|
445
|
-
"@ai-sdk/anthropic": "^4.0.
|
|
446
|
-
"@ai-sdk/code-mode": "1.0.
|
|
447
|
-
"@ai-sdk/google": "^4.0.
|
|
448
|
-
"@ai-sdk/mcp": "^2.0.
|
|
449
|
-
"@ai-sdk/openai": "^4.0.
|
|
450
|
-
"@ai-sdk/otel": "^1.0.
|
|
451
|
-
"@ai-sdk/provider": "^4.0.
|
|
452
|
-
"@ai-sdk/provider-utils": "^5.0.
|
|
445
|
+
"@ai-sdk/anthropic": "^4.0.49",
|
|
446
|
+
"@ai-sdk/code-mode": "^1.0.50",
|
|
447
|
+
"@ai-sdk/google": "^4.0.64",
|
|
448
|
+
"@ai-sdk/mcp": "^2.0.45",
|
|
449
|
+
"@ai-sdk/openai": "^4.0.60",
|
|
450
|
+
"@ai-sdk/otel": "^1.0.93",
|
|
451
|
+
"@ai-sdk/provider": "^4.0.10",
|
|
452
|
+
"@ai-sdk/provider-utils": "^5.0.36",
|
|
453
453
|
"@chat-adapter/slack": "4.34.0",
|
|
454
454
|
"@chat-adapter/state-memory": "4.34.0",
|
|
455
455
|
"@chat-adapter/twilio": "4.34.0",
|
|
@@ -476,15 +476,15 @@
|
|
|
476
476
|
"@vercel/sandbox": "3.2.1",
|
|
477
477
|
"@vercel/sandbox-drives": "npm:@vercel/sandbox@3.1.0-beta.1",
|
|
478
478
|
"@vercel/sdk": "1.28.8",
|
|
479
|
-
"@workflow/builders": "5.0.0-beta.
|
|
480
|
-
"@workflow/core": "5.0.0-beta.
|
|
481
|
-
"@workflow/errors": "5.0.0-beta.
|
|
479
|
+
"@workflow/builders": "5.0.0-beta.50",
|
|
480
|
+
"@workflow/core": "5.0.0-beta.50",
|
|
481
|
+
"@workflow/errors": "5.0.0-beta.21",
|
|
482
482
|
"@workflow/serde": "5.0.0-beta.2",
|
|
483
483
|
"@workflow/utils": "5.0.0-beta.10",
|
|
484
|
-
"@workflow/world": "5.0.0-beta.
|
|
485
|
-
"@workflow/world-local": "5.0.0-beta.
|
|
486
|
-
"@workflow/world-vercel": "5.0.0-beta.
|
|
487
|
-
"ai": "^7.0.
|
|
484
|
+
"@workflow/world": "5.0.0-beta.34",
|
|
485
|
+
"@workflow/world-local": "5.0.0-beta.43",
|
|
486
|
+
"@workflow/world-vercel": "5.0.0-beta.45",
|
|
487
|
+
"ai": "^7.0.93",
|
|
488
488
|
"autoevals": "0.0.132",
|
|
489
489
|
"chat": "4.34.0",
|
|
490
490
|
"chokidar": "5.0.0",
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
},
|
|
518
518
|
"peerDependencies": {
|
|
519
519
|
"@opentelemetry/api": "^1.0.0",
|
|
520
|
-
"ai": "^7.0.
|
|
520
|
+
"ai": "^7.0.93",
|
|
521
521
|
"braintrust": "^3.0.0",
|
|
522
522
|
"dd-trace": "^6.13.0",
|
|
523
523
|
"just-bash": "^3.1.0",
|