eve 0.64.1 → 0.65.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 +19 -0
- package/dist/src/channel/resolve-text.d.ts +11 -7
- package/dist/src/channel/resolve-text.js +1 -1
- package/dist/src/channel/types.d.ts +4 -5
- package/dist/src/chunks/{use-eve-agent-BdKlQF32.js → use-eve-agent-BIouJCii.js} +2 -10
- package/dist/src/chunks/{use-eve-agent-IIuxkn6y.js → use-eve-agent-BRvEh9sO.js} +2 -10
- package/dist/src/cli/dev/command-options.d.ts +1 -0
- package/dist/src/cli/dev/command.js +2 -2
- package/dist/src/cli/dev/local-server-process.js +1 -1
- package/dist/src/cli/dev/tui/blocks.d.ts +1 -1
- package/dist/src/cli/dev/tui/blocks.js +1 -1
- package/dist/src/cli/dev/tui/question-panel.d.ts +3 -2
- package/dist/src/cli/dev/tui/rail.d.ts +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +11 -12
- package/dist/src/cli/dev/tui/theme.d.ts +1 -1
- package/dist/src/cli/dev/tui/tool-presentation.d.ts +4 -4
- package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
- package/dist/src/client/agent-info-schema.d.ts +0 -2
- package/dist/src/client/agent-info-schema.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +1 -2
- package/dist/src/compiler/artifacts.d.ts +2 -0
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/bundled-extension.d.ts +17 -0
- package/dist/src/compiler/bundled-extension.js +1 -0
- package/dist/src/compiler/compile-agent.d.ts +4 -0
- package/dist/src/compiler/compile-agent.js +1 -1
- package/dist/src/compiler/compile-from-memory.js +1 -1
- package/dist/src/compiler/development-extensions.d.ts +23 -0
- package/dist/src/compiler/development-extensions.js +1 -0
- package/dist/src/compiler/extension-compatibility.d.ts +2 -2
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/load-binding-namespace.js +1 -1
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/compiler/normalize-manifest-types.d.ts +23 -0
- package/dist/src/compiler/normalize-manifest-types.js +1 -0
- package/dist/src/compiler/normalize-manifest.d.ts +2 -7
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/source-graph-paths.d.ts +2 -0
- package/dist/src/compiler/source-graph-paths.js +1 -0
- package/dist/src/compiler/source-graph.d.ts +4 -1
- package/dist/src/compiler/source-graph.js +1 -1
- package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
- package/dist/src/discover/bundled-extension.d.ts +11 -0
- package/dist/src/discover/bundled-extension.js +1 -0
- package/dist/src/discover/discover-agent.js +1 -1
- package/dist/src/discover/manifest.d.ts +5 -0
- package/dist/src/evals/assertions/collector.js +1 -1
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/evals/runner/artifacts.js +1 -1
- package/dist/src/evals/types.d.ts +2 -0
- package/dist/src/execution/coordination-dispatch-step.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/node-step.d.ts +2 -4
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/proxied-deliver-step.js +1 -1
- package/dist/src/execution/sandbox/glob-tool.js +1 -1
- package/dist/src/execution/sandbox/grep-tool.js +1 -1
- package/dist/src/execution/sandbox/read-file.js +1 -1
- package/dist/src/execution/session-workflow-tool-run.js +1 -1
- package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/ask-question-workflow.d.ts +11 -0
- package/dist/src/execution/tools/ask-question-workflow.js +1 -0
- package/dist/src/execution/tools/ask-question.d.ts +20 -0
- package/dist/src/execution/tools/ask-question.js +2 -0
- package/dist/src/execution/tools/file-state.d.ts +1 -7
- package/dist/src/execution/tools/file-state.js +1 -1
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/workflow/answer.d.ts +2 -0
- package/dist/src/execution/tools/workflow/answer.js +1 -1
- package/dist/src/execution/tools/workflow/ask.d.ts +3 -2
- package/dist/src/execution/tools/workflow/ask.js +1 -1
- package/dist/src/execution/tools/workflow/body.d.ts +5 -0
- package/dist/src/execution/tools/workflow/body.js +1 -1
- package/dist/src/execution/tools/workflow/cancel.d.ts +0 -4
- package/dist/src/execution/tools/workflow/cancel.js +1 -1
- package/dist/src/execution/tools/workflow/start.d.ts +1 -0
- package/dist/src/execution/tools/workflow/start.js +1 -1
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/compaction-prompt.d.ts +0 -6
- package/dist/src/harness/compaction-prompt.js +2 -2
- package/dist/src/harness/compaction.js +1 -1
- package/dist/src/harness/hitl/approval-input-requests.d.ts +0 -2
- package/dist/src/harness/hitl/approval-input-requests.js +1 -1
- package/dist/src/harness/input-extraction.d.ts +4 -15
- package/dist/src/harness/input-extraction.js +1 -1
- package/dist/src/harness/input-request-class.d.ts +0 -20
- package/dist/src/harness/input-request-class.js +1 -1
- package/dist/src/harness/input-requests.d.ts +1 -1
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +1 -1
- package/dist/src/harness/proxy-input-requests.d.ts +9 -1
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/stale-input-responses.d.ts +1 -2
- package/dist/src/harness/stale-input-responses.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tools.d.ts +0 -9
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/types.d.ts +2 -9
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module-loader.js +1 -1
- package/dist/src/internal/development-programmatic-source-loader.d.ts +6 -0
- package/dist/src/internal/development-programmatic-source-loader.js +1 -0
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -0
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
- package/dist/src/internal/nitro/host/dev-workspace-extensions.js +1 -1
- package/dist/src/internal/nitro/host/prepare-application-host.d.ts +2 -0
- package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host/types.d.ts +3 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -2
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/public/tools/ask-question.d.ts +1 -1
- package/dist/src/public/tools/ask-question.js +1 -1
- package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
- package/dist/src/self-modification/extension/subagents/agent/instructions.js +6 -2
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/shared/input.d.ts +1 -6
- package/dist/src/subagents/hitl-proxy.d.ts +11 -1
- package/dist/src/subagents/hitl-proxy.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/behavior.d.ts +2 -5
- package/dist/src/tools/definition.d.ts +23 -5
- package/dist/src/tools/provided/ask-question.d.ts +18 -0
- package/dist/src/tools/provided/ask-question.js +1 -0
- package/dist/src/tools/provided/sleep.d.ts +2 -2
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +11 -11
- package/docs/concepts/built-in-tools.md +16 -66
- package/docs/concepts/default-harness.md +1 -3
- package/docs/concepts/execution-model-and-durability.mdx +1 -1
- package/docs/concepts/sessions-runs-and-streaming.md +2 -2
- package/docs/evals/assertions.mdx +2 -2
- package/docs/evals/judge.mdx +3 -3
- package/docs/getting-started.mdx +1 -1
- package/docs/guides/dev-tui.md +1 -1
- package/docs/guides/evaluate.md +12 -9
- package/docs/guides/frontend/overview.mdx +1 -1
- package/docs/reference/cli.md +10 -7
- package/docs/reference/typescript-api.md +42 -41
- package/docs/skills.mdx +2 -0
- package/docs/subagents/index.mdx +7 -5
- package/docs/tools/human-in-the-loop.md +22 -11
- package/docs/tools/workflows.mdx +44 -19
- package/docs/tutorial/guard-the-spend.mdx +1 -1
- package/package.json +1 -9
- package/dist/src/cli/dev/tui/todo-panel.d.ts +0 -44
- package/dist/src/cli/dev/tui/todo-panel.js +0 -1
- package/dist/src/compiled/@workflow/builders/LICENSE.md +0 -201
- package/dist/src/compiled/@workflow/builders/index.d.ts +0 -62
- package/dist/src/compiled/@workflow/builders/index.js +0 -1
- package/dist/src/execution/compaction.d.ts +0 -14
- package/dist/src/execution/compaction.js +0 -1
- package/dist/src/execution/tools/todo.d.ts +0 -91
- package/dist/src/execution/tools/todo.js +0 -2
- package/dist/src/harness/hitl/question-input-requests.d.ts +0 -15
- package/dist/src/harness/hitl/question-input-requests.js +0 -1
- package/dist/src/harness/request-input-tool.d.ts +0 -4
- package/dist/src/harness/request-input-tool.js +0 -1
- package/dist/src/public/tools/todo.d.ts +0 -3
- package/dist/src/public/tools/todo.js +0 -1
- package/dist/src/tools/framework/ask-question.d.ts +0 -38
- package/dist/src/tools/framework/ask-question.js +0 -1
- package/dist/src/tools/provided/todo.d.ts +0 -8
- package/dist/src/tools/provided/todo.js +0 -2
package/docs/agent-config.md
CHANGED
|
@@ -13,13 +13,13 @@ A typical config selects a model:
|
|
|
13
13
|
import { defineAgent } from "eve";
|
|
14
14
|
|
|
15
15
|
export default defineAgent({
|
|
16
|
-
model: "anthropic/claude-opus-
|
|
16
|
+
model: "anthropic/claude-opus-5.5",
|
|
17
17
|
});
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
For a static AI Gateway model ID, you can make the same source change from the
|
|
21
|
-
project root with `eve set --model anthropic/claude-opus-
|
|
22
|
-
dev TUI with `/model anthropic/claude-opus-
|
|
21
|
+
project root with `eve set --model anthropic/claude-opus-5.5` or from the local
|
|
22
|
+
dev TUI with `/model anthropic/claude-opus-5.5`.
|
|
23
23
|
|
|
24
24
|
The root `agent.ts` can be omitted when no runtime config is needed. eve then selects its default `agent.ts` source at the same slot, configured with `spacexai/grok-4.7`; authoring the file replaces that source.
|
|
25
25
|
When `agent.ts` is present, `model` is required.
|
|
@@ -39,9 +39,9 @@ export default defineAgent({
|
|
|
39
39
|
});
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
`openai()` from `eve/models/openai` defaults to `gpt-
|
|
42
|
+
`openai()` from `eve/models/openai` defaults to `gpt-6-luna-fast`. Both helpers accept an optional native provider model ID and use `OPENAI_API_KEY` or `ANTHROPIC_API_KEY`. During local development they can also use credentials saved through `/login`. Deployments require their API key in the server environment.
|
|
43
43
|
|
|
44
|
-
For a local ChatGPT subscription, use `chatgpt()` from `eve/models/openai` and sign in with `/login`. It defaults to `gpt-
|
|
44
|
+
For a local ChatGPT subscription, use `chatgpt()` from `eve/models/openai` and sign in with `/login`. It defaults to `gpt-6-luna-fast` and cannot run in a deployment.
|
|
45
45
|
|
|
46
46
|
`/login` can switch a static Gateway string to an eve helper and manage its import. `/model` changes the selected model and settings immediately. Custom provider SDK calls and dynamic expressions retain their authored behavior and require manual source edits. You can still install an AI SDK provider package and pass its `LanguageModel` when you need provider-specific configuration.
|
|
47
47
|
|
|
@@ -77,7 +77,7 @@ export default defineAgent({
|
|
|
77
77
|
events: {
|
|
78
78
|
"session.started": (_event, ctx) => {
|
|
79
79
|
if (ctx.session.auth.initiator?.attributes.plan === "enterprise") {
|
|
80
|
-
return "anthropic/claude-opus-
|
|
80
|
+
return "anthropic/claude-opus-5.5";
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
return "anthropic/claude-sonnet-5";
|
|
@@ -141,7 +141,7 @@ Compaction summarizes older turns as you approach the context window. It's on by
|
|
|
141
141
|
|
|
142
142
|
```ts title="agent/agent.ts"
|
|
143
143
|
export default defineAgent({
|
|
144
|
-
model: "anthropic/claude-opus-
|
|
144
|
+
model: "anthropic/claude-opus-5.5",
|
|
145
145
|
compaction: {
|
|
146
146
|
thresholdPercent: 0.75, // default 0.9
|
|
147
147
|
},
|
|
@@ -158,7 +158,7 @@ provider-reported tokens or model token cost reaches a configured limit:
|
|
|
158
158
|
|
|
159
159
|
```ts title="agent/agent.ts"
|
|
160
160
|
export default defineAgent({
|
|
161
|
-
model: "anthropic/claude-opus-
|
|
161
|
+
model: "anthropic/claude-opus-5.5",
|
|
162
162
|
limits: {
|
|
163
163
|
maxInputTokensPerSession: 200_000,
|
|
164
164
|
maxOutputTokensPerSession: 20_000,
|
|
@@ -228,7 +228,7 @@ root `agent.ts`:
|
|
|
228
228
|
import { defineAgent } from "eve";
|
|
229
229
|
|
|
230
230
|
export default defineAgent({
|
|
231
|
-
model: "anthropic/claude-opus-
|
|
231
|
+
model: "anthropic/claude-opus-5.5",
|
|
232
232
|
experimental: {
|
|
233
233
|
workflow: {
|
|
234
234
|
world: "@workflow/world-postgres",
|
|
@@ -264,7 +264,7 @@ sequential model calls:
|
|
|
264
264
|
import { defineAgent } from "eve";
|
|
265
265
|
|
|
266
266
|
export default defineAgent({
|
|
267
|
-
model: "anthropic/claude-opus-
|
|
267
|
+
model: "anthropic/claude-opus-5.5",
|
|
268
268
|
experimental: {
|
|
269
269
|
workflow: {
|
|
270
270
|
modelCallsPerStep: 4,
|
|
@@ -302,7 +302,7 @@ finishes instead:
|
|
|
302
302
|
import { defineAgent } from "eve";
|
|
303
303
|
|
|
304
304
|
export default defineAgent({
|
|
305
|
-
model: "anthropic/claude-opus-
|
|
305
|
+
model: "anthropic/claude-opus-5.5",
|
|
306
306
|
experimental: {
|
|
307
307
|
workflow: {
|
|
308
308
|
retention: 0,
|
|
@@ -213,72 +213,6 @@ import { disableTool } from "eve/tools";
|
|
|
213
213
|
export default disableTool();
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
### `todo`
|
|
217
|
-
|
|
218
|
-
`todo` maintains a durable todo list for the session.
|
|
219
|
-
|
|
220
|
-
```sh
|
|
221
|
-
eve add tool/todo
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
```ts title="agent/tools/todo.ts"
|
|
225
|
-
export { default } from "eve/tools/todo";
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
Override it. Spreading the definition preserves its durable state key:
|
|
229
|
-
|
|
230
|
-
```ts title="agent/tools/todo.ts"
|
|
231
|
-
import { defineTool } from "eve/tools";
|
|
232
|
-
import { todo } from "eve/tools/todo";
|
|
233
|
-
|
|
234
|
-
export default defineTool({
|
|
235
|
-
...todo,
|
|
236
|
-
description: "Track the current implementation plan.",
|
|
237
|
-
});
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
Disable it:
|
|
241
|
-
|
|
242
|
-
```ts title="agent/tools/todo.ts"
|
|
243
|
-
import { disableTool } from "eve/tools";
|
|
244
|
-
|
|
245
|
-
export default disableTool();
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### `ask_question`
|
|
249
|
-
|
|
250
|
-
`ask_question` asks the user for clarification or a choice, then parks the turn until they answer. It appears only when the session can request user input. See [Human-in-the-loop](/docs/human-in-the-loop).
|
|
251
|
-
|
|
252
|
-
```sh
|
|
253
|
-
eve add tool/ask_question
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
```ts title="agent/tools/ask_question.ts"
|
|
257
|
-
export { default } from "eve/tools/ask_question";
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
Replace its request-input behavior with an ordinary authored tool:
|
|
261
|
-
|
|
262
|
-
```ts title="agent/tools/ask_question.ts"
|
|
263
|
-
import { defineTool } from "eve/tools";
|
|
264
|
-
|
|
265
|
-
export default defineTool({
|
|
266
|
-
description: "Record a clarification request.",
|
|
267
|
-
inputSchema: { type: "object" },
|
|
268
|
-
async execute(input) {
|
|
269
|
-
return { recorded: input };
|
|
270
|
-
},
|
|
271
|
-
});
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
Disable it:
|
|
275
|
-
|
|
276
|
-
```ts title="agent/tools/ask_question.ts"
|
|
277
|
-
import { disableTool } from "eve/tools";
|
|
278
|
-
|
|
279
|
-
export default disableTool();
|
|
280
|
-
```
|
|
281
|
-
|
|
282
216
|
### `agent`
|
|
283
217
|
|
|
284
218
|
`agent` delegates a subtask to a fresh copy of the root agent. It is root-only, always runs in the background, and returns a task receipt immediately. The child receives the root's instructions, tools, connections, and sandbox, but starts with fresh conversation history and [state](./state). See [Subagents](../subagents).
|
|
@@ -365,6 +299,22 @@ You can also add the opt-in framework tools described below.
|
|
|
365
299
|
|
|
366
300
|
These framework-provided tools are not added by default. Add only the ones the agent needs.
|
|
367
301
|
|
|
302
|
+
### `ask_question`
|
|
303
|
+
|
|
304
|
+
`ask_question` lets the model ask the user one question, then waits for the answer. The model can offer two or three options, each with a label and a short description, and the user can always type their own answer instead. Channels render the options as native UI, such as Slack select menus. Without the tool, the model can still ask in its reply text and the user answers with their next message. See [Human-in-the-loop](/docs/human-in-the-loop). Add it:
|
|
305
|
+
|
|
306
|
+
```sh
|
|
307
|
+
eve add tool/ask_question
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
```ts title="agent/tools/ask_question.ts"
|
|
311
|
+
import { askQuestion } from "eve/tools/ask_question";
|
|
312
|
+
|
|
313
|
+
export default askQuestion();
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
`ask_question` is a [workflow tool](/docs/tools/workflows) that calls `ctx.ask()`. The model receives `{ status: "answered", answer }`, where `answer` is the chosen option's label or the user's own words. A plain follow-up message answers the question too when it is the only pending question. When other questions are also pending, a message does not answer any of them: `ask_question` resolves as `{ status: "dismissed" }` and the message reaches the model normally. In a session that cannot request input, such as a scheduled run, the result is `{ status: "unavailable" }` and the model continues on its own judgment. Remove the file to remove the tool.
|
|
317
|
+
|
|
368
318
|
### `glob`
|
|
369
319
|
|
|
370
320
|
`glob` finds sandbox files by glob pattern. Add it:
|
|
@@ -11,7 +11,7 @@ The harness keeps a long session from overflowing the model's context window. Be
|
|
|
11
11
|
|
|
12
12
|
```ts title="agent/agent.ts"
|
|
13
13
|
export default defineAgent({
|
|
14
|
-
model: "anthropic/claude-opus-
|
|
14
|
+
model: "anthropic/claude-opus-5.5",
|
|
15
15
|
compaction: {
|
|
16
16
|
thresholdPercent: 0.75,
|
|
17
17
|
},
|
|
@@ -24,8 +24,6 @@ input token count plus an estimate of new messages. A smaller character estimate
|
|
|
24
24
|
alone cannot satisfy compaction triggered by a higher provider count. If trimming
|
|
25
25
|
cannot free enough space, eve summarizes the older history.
|
|
26
26
|
|
|
27
|
-
Compaction also preserves the framework's own tool state automatically. It resets read-before-write tracking (so a write afterward re-reads the file whose read evidence was summarized away) and re-injects the active todo list, so the model keeps its task list across the summary. There is no per-tool hook to configure.
|
|
28
|
-
|
|
29
27
|
First-class [memory](../memory) participates in a separate lifecycle. eve asks
|
|
30
28
|
providers to capture before compaction, excludes attributed recalled records
|
|
31
29
|
from the summarizer, keeps their canonical latest values, and recalls again
|
|
@@ -64,7 +64,7 @@ For advanced self-hosted deployments, the root `agent.ts` can select the install
|
|
|
64
64
|
import { defineAgent } from "eve";
|
|
65
65
|
|
|
66
66
|
export default defineAgent({
|
|
67
|
-
model: "anthropic/claude-opus-
|
|
67
|
+
model: "anthropic/claude-opus-5.5",
|
|
68
68
|
experimental: {
|
|
69
69
|
workflow: {
|
|
70
70
|
world: "@workflow/world-postgres",
|
|
@@ -77,7 +77,7 @@ The stream is newline-delimited JSON (NDJSON), one event per line:
|
|
|
77
77
|
| `actions.requested` | The model requested one or more actions, including tool calls; calls stream before execution. |
|
|
78
78
|
| `action.partial` | A locally executed tool generator yielded a preliminary output snapshot. |
|
|
79
79
|
| `action.result` | A tool call returned. |
|
|
80
|
-
| `input.requested` | The run paused for human input ([HITL](/docs/human-in-the-loop) approval or `
|
|
80
|
+
| `input.requested` | The run paused for human input ([HITL](/docs/human-in-the-loop) approval or a `ctx.ask()` question); carries `requests`. |
|
|
81
81
|
| `input.resolved` | The server accepted terminal human-input outcomes; carries `resolutions` with responses when provided. |
|
|
82
82
|
| `subagent.called` | A subagent was delegated; carries `childSessionId` to attach to. |
|
|
83
83
|
| `subagent.completed` | The parent recorded a successful subagent invocation result; carries the actual output. |
|
|
@@ -210,7 +210,7 @@ Message sends default to `"steer"`. Before assistant output begins, eve interrup
|
|
|
210
210
|
|
|
211
211
|
If the session is waiting on a human-in-the-loop approval, respond with the channel’s Approve or Cancel controls. Text messages do not decide an approval; unrelated text starts an ordinary turn while the approval stays pending and answerable. A later structured `inputResponses` answer keyed by its `requestId` still resumes the original tool call, even after intervening turns.
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
A pending `ctx.ask()` question from a blocking tool, such as `ask_question`, can be answered with plain text. When it is the only pending question, a message that matches an option answers it, and so does any message when the question allows free text. Otherwise eve does not guess which question the text addresses: the message follows the normal `turnPolicy`, questions created with `dismissible: true` resolve as `dismissed`, and other questions stay open. Questions from background tools and subagents always need a structured response. Use structured responses to target requests unambiguously.
|
|
214
214
|
|
|
215
215
|
A structured response matches any currently pending request by ID, not only the newest batch. It becomes stale only after that request was answered, cleared, or cancelled. eve delivers a stale response to the model as a new user message, and the model decides whether the old selection still matters. A stale approval never authorizes the earlier tool call; the model must request the action and approval again if they are still needed.
|
|
216
216
|
|
package/docs/evals/judge.mdx
CHANGED
|
@@ -3,7 +3,7 @@ title: "Judge"
|
|
|
3
3
|
description: "Grade evals with evaluation models using criteria, typed questions, or batches, and set thresholds on each assertion."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use `t.judge(...)` when a deterministic [assertion](./assertions) cannot capture what a good response looks like. It calls [`evaluate` from `eve/ai`](../guides/evaluate#evaluate-inside-a-tool) and defaults to `typesafe-ai/jev
|
|
6
|
+
Use `t.judge(...)` when a deterministic [assertion](./assertions) cannot capture what a good response looks like. It calls [`evaluate` from `eve/ai`](../guides/evaluate#evaluate-inside-a-tool) and defaults to `typesafe-ai/jev`, TypeSafe AI's [Jev evaluation model](https://vercel.com/i/what-is-jev). The judge is separate from the agent under test and is used only for scoring.
|
|
7
7
|
|
|
8
8
|
```ts
|
|
9
9
|
import { defineEval } from "eve/evals";
|
|
@@ -138,14 +138,14 @@ String IDs resolve through the AI SDK default provider, or Vercel AI Gateway whe
|
|
|
138
138
|
import { openai } from "@ai-sdk/openai";
|
|
139
139
|
|
|
140
140
|
t.judge("The response addresses the request.", {
|
|
141
|
-
model: openai.evaluationModel("gpt-
|
|
141
|
+
model: openai.evaluationModel("gpt-6-luna"),
|
|
142
142
|
modelOptions: { providerOptions: { openai: { reasoningEffort: "high" } } },
|
|
143
143
|
});
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
Use the provider's `evaluationModel` factory, not a language model instance. AI SDK supplies evaluation adapters for supported language models. Provider support and the evaluation contract are experimental; see [AI SDK evaluation](https://ai-sdk.dev/docs/ai-sdk-core/evaluation).
|
|
147
147
|
|
|
148
|
-
String model IDs resolve through the default provider's evaluation API. Gateway accepts native evaluation models such as `typesafe-ai/jev`; passing a language model ID such as `openai/gpt-
|
|
148
|
+
String model IDs resolve through the default provider's evaluation API. Gateway accepts native evaluation models such as `typesafe-ai/jev`; passing a language model ID such as `openai/gpt-6-luna` does not automatically select the OpenAI adapter. Use an evaluation-model instance as shown above for language models.
|
|
149
149
|
|
|
150
150
|
Missing credentials, invalid answers, unsupported question types, and provider errors become failed gates even for tracked-only judgments. They do not silently skip the eval or select another model. Validation, authentication, and retries use the shared `evaluate` implementation.
|
|
151
151
|
|
package/docs/getting-started.mdx
CHANGED
|
@@ -45,7 +45,7 @@ eve adds the missing `eve`, `ai`, and `zod` dependencies without changing files
|
|
|
45
45
|
To initialize the agent with a different AI Gateway model or reasoning effort, pass `--model` or `--reasoning`:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
npx eve@latest init my-agent --model openai/gpt-
|
|
48
|
+
npx eve@latest init my-agent --model openai/gpt-6-luna --reasoning high
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
## Run the agent
|
package/docs/guides/dev-tui.md
CHANGED
|
@@ -71,7 +71,7 @@ Changes apply together after the final choice, then the picker returns to chat.
|
|
|
71
71
|
|
|
72
72
|
A successful login or model change takes effect on the next prompt.
|
|
73
73
|
|
|
74
|
-
Gateway connections default to `spacexai/grok-4.7`; OpenAI and ChatGPT default to `gpt-
|
|
74
|
+
Gateway connections default to `spacexai/grok-4.7`; OpenAI and ChatGPT default to `gpt-6-luna-fast`; Anthropic defaults to `claude-sonnet-5`. An explicitly authored compatible model stays selected. If a new default is unavailable, eve offers the connection's available models. Dynamic or custom model expressions must be edited in `agent.ts`.
|
|
75
75
|
|
|
76
76
|
## Add an integration
|
|
77
77
|
|
package/docs/guides/evaluate.md
CHANGED
|
@@ -14,7 +14,8 @@ patch releases.
|
|
|
14
14
|
|
|
15
15
|
## Choose from Gateway models
|
|
16
16
|
|
|
17
|
-
By default, `auto` evaluates with `typesafe-ai/jev
|
|
17
|
+
By default, `auto` evaluates with `typesafe-ai/jev`, TypeSafe AI's
|
|
18
|
+
[Jev evaluation model](https://vercel.com/i/what-is-jev). Like other AI SDK
|
|
18
19
|
model strings, it uses Vercel AI Gateway unless the application has configured a
|
|
19
20
|
different global default provider.
|
|
20
21
|
|
|
@@ -25,8 +26,8 @@ import { auto } from "eve/models";
|
|
|
25
26
|
export default defineAgent({
|
|
26
27
|
model: auto({
|
|
27
28
|
options: {
|
|
28
|
-
"openai/gpt-
|
|
29
|
-
"openai/gpt-
|
|
29
|
+
"openai/gpt-6-sol": "Difficult reasoning and engineering tasks",
|
|
30
|
+
"openai/gpt-6-luna": "Routine tasks where fast completion matters",
|
|
30
31
|
},
|
|
31
32
|
}),
|
|
32
33
|
});
|
|
@@ -38,7 +39,7 @@ Gateway evaluator uses the same connection selected through `/login` as Gateway
|
|
|
38
39
|
language models. A configured AI SDK default provider still owns string model
|
|
39
40
|
resolution during development. The TUI footer displays `dynamic model` when the
|
|
40
41
|
agent uses `auto`, then adds the resolved model for the current turn, such as
|
|
41
|
-
`dynamic model · openai/gpt-
|
|
42
|
+
`dynamic model · openai/gpt-6-luna`.
|
|
42
43
|
|
|
43
44
|
## Use a provider directly
|
|
44
45
|
|
|
@@ -58,8 +59,8 @@ export default defineAgent({
|
|
|
58
59
|
model: auto({
|
|
59
60
|
model: typeSafeAi.evaluationModel("jev-latest"),
|
|
60
61
|
options: {
|
|
61
|
-
"openai/gpt-
|
|
62
|
-
"openai/gpt-
|
|
62
|
+
"openai/gpt-6-sol": "Difficult reasoning and engineering tasks",
|
|
63
|
+
"openai/gpt-6-luna": "Routine tasks where fast completion matters",
|
|
63
64
|
},
|
|
64
65
|
}),
|
|
65
66
|
});
|
|
@@ -83,7 +84,7 @@ export default defineAgent({
|
|
|
83
84
|
reasoning: "medium",
|
|
84
85
|
model: auto({
|
|
85
86
|
options: {
|
|
86
|
-
"openai/gpt-
|
|
87
|
+
"openai/gpt-6-sol": "Hard problems",
|
|
87
88
|
my_secret_model: {
|
|
88
89
|
model: anthropic("sonnet-5"),
|
|
89
90
|
description: "Routine work that can use the direct Anthropic provider",
|
|
@@ -141,7 +142,7 @@ export default defineTool({
|
|
|
141
142
|
|
|
142
143
|
The choice above is typed as `"billing" | "support"`. Each question appears under
|
|
143
144
|
its authored key in `result.answers`. Results also include token usage, warnings,
|
|
144
|
-
provider metadata, and response metadata. To use that choice to delegate while keeping specialist subagents out of the parent model's tools, see [Route to a hidden subagent with
|
|
145
|
+
provider metadata, and response metadata. To use that choice to delegate while keeping specialist subagents out of the parent model's tools, see [Route to a hidden subagent with Jev](/docs/tools/workflows#route-to-a-hidden-subagent-with-jev).
|
|
145
146
|
|
|
146
147
|
`evaluate` accepts AI SDK evaluation options, including `maxRetries`, `headers`,
|
|
147
148
|
and `providerOptions`. Pass an `abortSignal` to cancel the request. Input and
|
|
@@ -178,7 +179,9 @@ export default defineTool({
|
|
|
178
179
|
The evaluation model reviews the tool name and input for dangerous effects. A
|
|
179
180
|
caution, failed review, or incomplete input requires human approval. See
|
|
180
181
|
[Human-in-the-loop approvals](/docs/human-in-the-loop#approvals) for classifier
|
|
181
|
-
options and data handling
|
|
182
|
+
options and data handling, and the
|
|
183
|
+
[Auto-approve tool calls with Jev](https://vercel.com/kb/guide/auto-approve-tool-calls-eve-jev)
|
|
184
|
+
guide for an end-to-end walkthrough.
|
|
182
185
|
|
|
183
186
|
## Runtime behavior
|
|
184
187
|
|
|
@@ -218,7 +218,7 @@ received attachment as a `file` part on the user message. The part includes `med
|
|
|
218
218
|
|
|
219
219
|
## Human-in-the-loop prompts
|
|
220
220
|
|
|
221
|
-
Tools opt into approval with `approval`, and the
|
|
221
|
+
Tools opt into approval with `approval`, and workflow tools such as the opt-in `ask_question` tool ask the user a question with `ctx.ask()` — see [Human-in-the-loop](/docs/human-in-the-loop) for the server-side model. Either way the stream emits an `input.requested` event, and the pending request rides on a `dynamic-tool` part at `part.toolMetadata?.eve?.inputRequest`. Scan every message because an unrelated turn can add newer messages while an approval stays open, then answer through the same session with `respond()`:
|
|
222
222
|
|
|
223
223
|
```tsx
|
|
224
224
|
const pendingRequests = agent.data.messages
|
package/docs/reference/cli.md
CHANGED
|
@@ -59,12 +59,12 @@ Existing packages do not need a target-selection prompt: run `eve init` from the
|
|
|
59
59
|
|
|
60
60
|
After scaffolding in an interactive human terminal, eve opens the TUI directly. Pass `-n` or `--non-interactive` to return after scaffolding instead. It still installs dependencies and follows the normal Git setup behavior. Noninteractive and coding-agent invocations return without starting an interactive session. Fresh projects use the parent workspace's package manager when there is one; otherwise they use the manager that launched `eve init`.
|
|
61
61
|
|
|
62
|
-
| Flag | Type | Default
|
|
63
|
-
| ----------------------- | ------ |
|
|
64
|
-
| `--model <model>` | string | `openai/gpt-
|
|
65
|
-
| `--reasoning <effort>` | enum | provider default
|
|
66
|
-
| `--channel-web-nextjs` | flag | off
|
|
67
|
-
| `-n, --non-interactive` | flag | off
|
|
62
|
+
| Flag | Type | Default | Description |
|
|
63
|
+
| ----------------------- | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
|
|
64
|
+
| `--model <model>` | string | `openai/gpt-6-luna-fast` | Set the root agent's AI Gateway model ID. |
|
|
65
|
+
| `--reasoning <effort>` | enum | provider default | Set reasoning to `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. `provider-default` leaves the field unauthored. |
|
|
66
|
+
| `--channel-web-nextjs` | flag | off | Add the Web Chat app (Next.js). Not for existing projects — run `eve add channel/web` there instead. |
|
|
67
|
+
| `-n, --non-interactive` | flag | off | Scaffold and install dependencies without starting development. |
|
|
68
68
|
|
|
69
69
|
## `eve extension`
|
|
70
70
|
|
|
@@ -102,7 +102,7 @@ Change the root agent's AI Gateway model and reasoning effort without opening th
|
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
104
|
eve set \
|
|
105
|
-
--model openai/gpt-
|
|
105
|
+
--model openai/gpt-6-sol \
|
|
106
106
|
--reasoning high
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -223,6 +223,7 @@ Pass a bare URL and the UI connects to that server instead of booting a local on
|
|
|
223
223
|
| `-u, --url <url>` | string | none | Connect to an existing server URL instead of starting one |
|
|
224
224
|
| `-H, --header <header>` | string | none | Request header for a URL target, in `Name: value` form; repeat for multiple headers |
|
|
225
225
|
| `--no-ui` | flag | UI on | Start the server without an interactive UI |
|
|
226
|
+
| `--no-default-extensions` | flag | extensions on | Do not mount bundled development extensions |
|
|
226
227
|
| `--name <name>` | string | app folder name | Title shown in the terminal UI |
|
|
227
228
|
| `--input <text>` | string | none | Pre-fill the prompt input |
|
|
228
229
|
| `--tools <mode>` | enum | `auto-collapsed` | Tool-call rendering: `full` \| `collapsed` \| `auto-collapsed` \| `hidden` |
|
|
@@ -233,6 +234,8 @@ Pass a bare URL and the UI connects to that server instead of booting a local on
|
|
|
233
234
|
| `--context-size <tokens>` | number | none | Model context window size, shown as a usage percentage |
|
|
234
235
|
| `--logs <mode>` | enum | `stderr` | Server/agent logs to show: `all` \| `stderr` \| `sandbox` \| `none` |
|
|
235
236
|
|
|
237
|
+
Local development mounts bundled development extensions without adding files to your project. The default set includes the self-modification extension and its `self-modification__agent` subagent. Pass `--no-default-extensions` to disable the complete set for that server.
|
|
238
|
+
|
|
236
239
|
`eve acp` reserves stdin and stdout for newline-delimited JSON-RPC and sends diagnostics to stderr. Without a URL, it supervises an isolated local development server. With a URL, it bridges ACP to that server's existing eve HTTP API and accepts the same URL credentials and request headers as `eve dev <url>`. Pass `--scope <team>` when the active Vercel scope does not own the deployment; `EVE_VERCEL_SCOPE` provides the same value for managed harnesses. See [Agent Client Protocol (ACP)](../protocols/acp) for client configuration and capability limits.
|
|
237
240
|
|
|
238
241
|
A fresh `eve init` opens the TUI and reuses an available model connection or opens `/login`. No Vercel project, channels, integrations, or review step is required before chat. Use `/model` to change models and settings, and `/add` to install an addition. Other `--input` text stays editable in the prompt. See [Terminal UI](../guides/dev-tui) for credential precedence and login options.
|
|
@@ -12,7 +12,7 @@ Most files look the same: import a helper, default-export the result.
|
|
|
12
12
|
```ts title="agent/agent.ts"
|
|
13
13
|
import { defineAgent } from "eve";
|
|
14
14
|
|
|
15
|
-
export default defineAgent({ model: "anthropic/claude-opus-
|
|
15
|
+
export default defineAgent({ model: "anthropic/claude-opus-5.5" });
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
```ts title="agent/tools/get_weather.ts"
|
|
@@ -113,56 +113,57 @@ Tool definitions accept `availableInSubagents: false` to restrict the tool to to
|
|
|
113
113
|
|
|
114
114
|
## Imports at a glance
|
|
115
115
|
|
|
116
|
-
| Import
|
|
117
|
-
|
|
|
118
|
-
| `eve`
|
|
119
|
-
| `eve/tools`
|
|
120
|
-
| `eve/tools/{bash,read_file,write_file,
|
|
121
|
-
| `eve/tools/approval`
|
|
122
|
-
| `eve/tools/
|
|
123
|
-
| `eve/tools/
|
|
124
|
-
| `eve/tools/
|
|
125
|
-
| `eve/
|
|
126
|
-
| `eve/
|
|
127
|
-
| `eve/channels
|
|
128
|
-
| `eve/channels/
|
|
129
|
-
| `eve/channels/
|
|
130
|
-
| `eve/
|
|
131
|
-
| `eve/
|
|
132
|
-
| `eve/
|
|
133
|
-
| `eve/
|
|
134
|
-
| `eve/
|
|
135
|
-
| `eve/memory
|
|
136
|
-
| `eve/memory/
|
|
137
|
-
| `eve/memory/file
|
|
138
|
-
| `eve/
|
|
139
|
-
| `eve/
|
|
140
|
-
| `eve/
|
|
141
|
-
| `eve/instrumentation
|
|
142
|
-
| `eve/
|
|
143
|
-
|
|
|
144
|
-
| `eve/models/
|
|
145
|
-
| `eve/models/
|
|
146
|
-
|
|
|
147
|
-
| `eve/
|
|
148
|
-
| `eve/evals
|
|
149
|
-
| `eve/evals/
|
|
150
|
-
| `eve/evals/
|
|
151
|
-
| `eve/
|
|
152
|
-
| `eve/
|
|
153
|
-
|
|
|
116
|
+
| Import | Holds |
|
|
117
|
+
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
118
|
+
| `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types |
|
|
119
|
+
| `eve/tools` | `defineTool`, `defineWorkflowTool`, `defineDurableCallback`, `defineDurableSchema`, `defineDynamic`, `disableTool`, tool types |
|
|
120
|
+
| `eve/tools/{bash,read_file,write_file,web_fetch,load_skill,glob,grep}` | Individual reusable tool definitions |
|
|
121
|
+
| `eve/tools/approval` | Approval types and `auto`, `always`, `once`, `never` |
|
|
122
|
+
| `eve/tools/ask_question` | Opt-in `askQuestion` tool factory |
|
|
123
|
+
| `eve/tools/web_search` | Provider-managed `webSearch` configuration |
|
|
124
|
+
| `eve/tools/workflow` | Runtime-generated `workflow` tool factory |
|
|
125
|
+
| `eve/tools/sleep` | Opt-in durable `sleep` tool |
|
|
126
|
+
| `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection`, `defineDynamic` |
|
|
127
|
+
| `eve/channels` | `defineChannel`, `disableRoute`, route verbs |
|
|
128
|
+
| `eve/channels/eve` | `eveChannel` |
|
|
129
|
+
| `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth` |
|
|
130
|
+
| `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories |
|
|
131
|
+
| `eve/hooks` | `defineHook` |
|
|
132
|
+
| `eve/schedules` | `defineSchedule` |
|
|
133
|
+
| `eve/skills` | `defineSkill`, `defineDynamic` |
|
|
134
|
+
| `eve/instructions` | `defineInstructions`, `defineDynamic` |
|
|
135
|
+
| `eve/memory` | `defineMemory`, `defineMemoryProvider`, provider and lifecycle types |
|
|
136
|
+
| `eve/memory/scope` | `byPrincipal` and memory scope helpers |
|
|
137
|
+
| `eve/memory/file` | `fileMemory`, `inMemory`, and the conditional document backend contract |
|
|
138
|
+
| `eve/memory/file/vercel` | `vercelBlob` and Vercel Blob backend options |
|
|
139
|
+
| `eve/context` | `defineState`, session and state types |
|
|
140
|
+
| `eve/sandbox` | `defineSandbox`, provider environments, and sandbox session types |
|
|
141
|
+
| `eve/instrumentation` | `defineInstrumentation`, `disableInstrumentation`, `isChannel`, lifecycle provider types |
|
|
142
|
+
| `eve/instrumentation/otel` | `otel`, `otelIntegration`, `localTraces`, OpenTelemetry policy types |
|
|
143
|
+
| `eve/local-dev` | `getLocalDevCapability`, `LocalDevCapability` |
|
|
144
|
+
| [`eve/models`](../guides/evaluate) | Automatic model selection with `auto` |
|
|
145
|
+
| `eve/models/openai` | `openai`, `chatgpt`, deprecated `experimental_chatgpt` |
|
|
146
|
+
| `eve/models/anthropic` | `anthropic` |
|
|
147
|
+
| [`eve/ai`](../guides/evaluate#evaluate-inside-a-tool) | Standalone `evaluate` |
|
|
148
|
+
| `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types |
|
|
149
|
+
| `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
|
|
150
|
+
| `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
|
|
151
|
+
| `eve/evals/loaders` | `loadJson`, `loadYaml` |
|
|
152
|
+
| `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
|
|
153
|
+
| `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
|
|
154
|
+
| [`eve/client`](../guides/client/overview) | `Client`, `ClientSession`, health and agent-info schemas, response errors |
|
|
154
155
|
|
|
155
156
|
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.
|
|
156
157
|
|
|
157
158
|
## Direct provider models
|
|
158
159
|
|
|
159
|
-
`openai(model?)` from `eve/models/openai` and `anthropic(model?)` from `eve/models/anthropic` return eve-owned model instances using the vendored providers. They accept only an optional model ID. Defaults are `gpt-
|
|
160
|
+
`openai(model?)` from `eve/models/openai` and `anthropic(model?)` from `eve/models/anthropic` return eve-owned model instances using the vendored providers. They accept only an optional model ID. Defaults are `gpt-6-luna-fast` and `claude-sonnet-5`, respectively.
|
|
160
161
|
|
|
161
162
|
Use `/login` for local credentials, or set `OPENAI_API_KEY` or `ANTHROPIC_API_KEY`. Local secret-store discovery is disabled in deployments; provision server credentials explicitly. See [Set the model](../agent-config#set-the-model) for an example.
|
|
162
163
|
|
|
163
164
|
## ChatGPT subscription models
|
|
164
165
|
|
|
165
|
-
`chatgpt()` from `eve/models/openai` serves an OpenAI model through your local ChatGPT login and bills the ChatGPT subscription. With no argument, it selects `gpt-
|
|
166
|
+
`chatgpt()` from `eve/models/openai` serves an OpenAI model through your local ChatGPT login and bills the ChatGPT subscription. With no argument, it selects `gpt-6-luna-fast`:
|
|
166
167
|
|
|
167
168
|
```ts title="agent/agent.ts"
|
|
168
169
|
import { defineAgent } from "eve";
|
package/docs/skills.mdx
CHANGED
|
@@ -91,6 +91,8 @@ The handle exposes the skill's `name` and `file(relativePath)`; file content is
|
|
|
91
91
|
|
|
92
92
|
To serve a different skill per principal, tenant, or channel (the caller's own team playbook, say), wrap `defineSkill` in a `defineDynamic` resolver keyed on `ctx.session.auth`. See [Dynamic capabilities](./guides/dynamic-capabilities).
|
|
93
93
|
|
|
94
|
+
Subagent lifecycle events do not re-run skill resolvers. The parent's resolved dynamic skills remain available when it resumes after delegation.
|
|
95
|
+
|
|
94
96
|
## What to read next
|
|
95
97
|
|
|
96
98
|
- [Connections](./connections): add tools from external MCP and OpenAPI servers
|
package/docs/subagents/index.mdx
CHANGED
|
@@ -63,7 +63,7 @@ To prevent the root session from delegating to a fresh copy of itself, set `tool
|
|
|
63
63
|
import { defineAgent } from "eve";
|
|
64
64
|
|
|
65
65
|
export default defineAgent({
|
|
66
|
-
model: "anthropic/claude-opus-
|
|
66
|
+
model: "anthropic/claude-opus-5.5",
|
|
67
67
|
tool: false,
|
|
68
68
|
});
|
|
69
69
|
```
|
|
@@ -79,7 +79,7 @@ import { defineAgent } from "eve";
|
|
|
79
79
|
|
|
80
80
|
export default defineAgent({
|
|
81
81
|
description: "Investigate ambiguous questions before the parent agent responds.",
|
|
82
|
-
model: "anthropic/claude-opus-
|
|
82
|
+
model: "anthropic/claude-opus-5.5",
|
|
83
83
|
});
|
|
84
84
|
```
|
|
85
85
|
|
|
@@ -90,7 +90,7 @@ import { defineAgent } from "eve";
|
|
|
90
90
|
|
|
91
91
|
export default defineAgent({
|
|
92
92
|
description: "Investigate ambiguous questions for the routing workflow.",
|
|
93
|
-
model: "anthropic/claude-opus-
|
|
93
|
+
model: "anthropic/claude-opus-5.5",
|
|
94
94
|
tool: false,
|
|
95
95
|
});
|
|
96
96
|
```
|
|
@@ -103,6 +103,8 @@ Every declared local or remote subagent runs as a durable background task: the c
|
|
|
103
103
|
|
|
104
104
|
A mounted extension can also contribute declared subagents from `extension/subagents/`. The mount namespace prefixes the subagent visible to the consuming agent node: mounting an extension as `crm` exposes its `reviewer` subagent as `crm__reviewer`. The contributed subagent keeps its own isolated tools, connections, skills, hooks, instructions, sandbox, and nested subagents, and its modules can read configuration from the extension handle. See [Extensions](./extensions#add-a-subagent) for the authoring and override behavior.
|
|
105
105
|
|
|
106
|
+
Local `eve dev` mounts the bundled self-modification extension by default, which exposes the `self-modification__agent` subagent without adding files to your project. An authored extension mounted as `self-modification` takes its place. Pass `--no-default-extensions` to run without bundled development extensions. Production builds do not include development extensions unless you mount them in your agent.
|
|
107
|
+
|
|
106
108
|
### Vercel workspace peers
|
|
107
109
|
|
|
108
110
|
In a Vercel agent workspace, expose one other workspace member as a remote subagent with `defineWorkspaceAgent`. Create an ordinary file under the caller's `agent/subagents/` directory. Its filename gives the model-visible tool name; `name` identifies the peer under `agents/`.
|
|
@@ -149,7 +151,7 @@ export default defineDynamic({
|
|
|
149
151
|
ctx.session.auth.current?.attributes.research === true
|
|
150
152
|
? defineAgent({
|
|
151
153
|
description: "Investigate ambiguous questions before the parent responds.",
|
|
152
|
-
model: "anthropic/claude-opus-
|
|
154
|
+
model: "anthropic/claude-opus-5.5",
|
|
153
155
|
})
|
|
154
156
|
: null,
|
|
155
157
|
},
|
|
@@ -172,7 +174,7 @@ export default defineDynamic({
|
|
|
172
174
|
"session.started": () =>
|
|
173
175
|
defineAgent({
|
|
174
176
|
description: "Use a native package when handling delegated work.",
|
|
175
|
-
model: "anthropic/claude-opus-
|
|
177
|
+
model: "anthropic/claude-opus-5.5",
|
|
176
178
|
}),
|
|
177
179
|
},
|
|
178
180
|
});
|