eve 0.27.6 → 0.27.8
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 +14 -0
- package/dist/src/channel/session.d.ts +5 -0
- package/dist/src/channel/session.js +1 -1
- package/dist/src/channel/types.d.ts +7 -0
- package/dist/src/chunks/{use-eve-agent-COlXhAaF.js → use-eve-agent-JPfBHZJr.js} +36 -6
- package/dist/src/chunks/{use-eve-agent-DzVlKcUV.js → use-eve-agent-r5tkzjmt.js} +36 -6
- package/dist/src/cli/commands/register-registry-commands.d.ts +12 -0
- package/dist/src/cli/commands/register-registry-commands.js +1 -0
- package/dist/src/cli/commands/registry-project.d.ts +10 -0
- package/dist/src/cli/commands/registry-project.js +1 -0
- package/dist/src/cli/commands/registry.d.ts +17 -0
- package/dist/src/cli/commands/registry.js +1 -0
- package/dist/src/cli/run.js +2 -2
- package/dist/src/client/open-stream.d.ts +17 -2
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session.d.ts +5 -1
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +7 -0
- package/dist/src/compiled/.vendor-stamp.json +2 -1
- package/dist/src/compiled/shadcn-registry/LICENSE.md +21 -0
- package/dist/src/compiled/shadcn-registry/index.d.ts +56 -0
- package/dist/src/compiled/shadcn-registry/index.js +33491 -0
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/runtime-actions.d.ts +4 -0
- package/dist/src/harness/runtime-actions.js +1 -1
- package/dist/src/harness/tool-call-input-errors.d.ts +20 -0
- package/dist/src/harness/tool-call-input-errors.js +1 -1
- package/dist/src/internal/application/build-workspace.d.ts +0 -1
- package/dist/src/internal/application/build-workspace.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.d.ts +1 -6
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/configure-nitro-routes.d.ts +4 -4
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
- package/dist/src/internal/nitro/host/create-application-nitro.d.ts +11 -7
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/types.d.ts +0 -4
- package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +29 -1
- package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
- package/dist/src/internal/workflow/queue-namespace.d.ts +8 -0
- package/dist/src/internal/workflow/queue-namespace.js +1 -1
- package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -5
- package/dist/src/internal/workflow-bundle/builder.d.ts +0 -5
- package/dist/src/internal/workflow-bundle/builder.js +2 -2
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +0 -51
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -3
- package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -7
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/protocol/message.d.ts +1 -0
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/public/channels/eve.js +2 -2
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/README.md +21 -20
- package/docs/channels/custom.mdx +1 -1
- package/docs/channels/overview.mdx +2 -0
- package/docs/channels/slack.mdx +0 -1
- package/docs/concepts/{execution-model-and-durability.md → execution-model-and-durability.mdx} +16 -0
- package/docs/concepts/security-model.md +2 -0
- package/docs/concepts/sessions-runs-and-streaming.md +9 -0
- package/docs/getting-started.mdx +13 -196
- package/docs/guides/client/streaming.mdx +15 -0
- package/docs/install-integrations.mdx +106 -0
- package/docs/installation.mdx +60 -0
- package/docs/meta.json +8 -6
- package/docs/project-structure.mdx +53 -0
- package/docs/reference/cli.md +18 -0
- package/docs/tutorial/meta.json +1 -1
- package/package.json +2 -1
- package/docs/introduction.mdx +0 -103
package/docs/getting-started.mdx
CHANGED
|
@@ -1,206 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Getting Started"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Create an eve project, learn its filesystem layout, and start adding capabilities."
|
|
4
|
+
contentType: "Landing"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
eve
|
|
7
|
+
eve agents are TypeScript projects. You describe an agent with files under `agent/`, then eve runs it as a durable service.
|
|
7
8
|
|
|
8
|
-
##
|
|
9
|
+
## Start in order
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
1. [Install eve](/docs/installation): create a project, configure a model credential, and run it locally
|
|
12
|
+
2. [Learn the project structure](/docs/project-structure): see which files eve discovers and where each capability belongs
|
|
13
|
+
3. [Build your first agent](/docs/tutorial/first-agent): add tools, state, and an interface for a useful workflow
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
## What you need
|
|
15
16
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
17
|
+
- Node.js 24 or newer
|
|
18
|
+
- npm, which Node.js includes
|
|
19
|
+
- A model credential for the model your agent uses
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
## Choose your next step
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## Quick start
|
|
24
|
-
|
|
25
|
-
`npx` runs `eve init` without installing eve first:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npx eve@latest init my-agent
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The command:
|
|
32
|
-
|
|
33
|
-
- Creates a child directory using the current workspace or launcher package manager, and uses eve's default model
|
|
34
|
-
- Installs dependencies and initializes Git
|
|
35
|
-
- When a supported coding-agent REPL (Claude Code, Codex, Cursor, Droid, Gemini CLI, opencode, or Pi) is on `PATH`, asks whether to open an available REPL or start the development server; otherwise starts the server and opens the interactive [terminal UI](./guides/dev-tui)
|
|
36
|
-
|
|
37
|
-
Type a message and watch the model loop run. Pass `--channel-web-nextjs` to add the Web Chat application. Every app ships the built-in HTTP channel (`agent/channels/eve.ts`) regardless.
|
|
38
|
-
|
|
39
|
-
When you choose one of those REPLs, eve starts it with a project-specific
|
|
40
|
-
prompt that guides the setup. The prompt distinguishes `eve dev`, which starts
|
|
41
|
-
eve's HMR server and the agent's terminal REPL, from `eve dev --no-ui`, which is
|
|
42
|
-
the controllable background mode for verification.
|
|
43
|
-
|
|
44
|
-
`eve init` holds the terminal, so stop it with Ctrl+C to get your shell back before editing the generated agent. The command does not create a Vercel project or deploy.
|
|
45
|
-
|
|
46
|
-
To add eve to an existing project, run `eve init .` from a directory that already has a `package.json` and no `agent/` files yet. eve adds the missing `eve`, `ai`, and `zod` dependencies without touching anything else the project owns. The eve dependency and the Node engine come from the same release. eve pins `engines.node` to the lowest major that release supports (for example `24.x`). It keeps an existing range only when every version that range allows stays within that major; otherwise it replaces the range and prints a warning.
|
|
47
|
-
|
|
48
|
-
## Manual installation
|
|
49
|
-
|
|
50
|
-
To wire eve into an existing app by hand instead of using `eve init`, first declare a compatible Node runtime in `package.json`:
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"engines": {
|
|
55
|
-
"node": "24.x"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Then install the dependencies and author the two files the runtime needs. The `eve init` scaffold adds `ai` and `zod` for you; by hand you install all three:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm install eve@latest ai zod
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Project files
|
|
67
|
-
|
|
68
|
-
A minimal agent is two files; you add tools as you need them.
|
|
69
|
-
|
|
70
|
-
`agent/instructions.md` is the always-on system prompt:
|
|
71
|
-
|
|
72
|
-
```md
|
|
73
|
-
You are a concise assistant. Use tools when they are available.
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
`agent/agent.ts` holds runtime config:
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
import { defineAgent } from "eve";
|
|
80
|
-
|
|
81
|
-
export default defineAgent({
|
|
82
|
-
model: "anthropic/claude-sonnet-5",
|
|
83
|
-
});
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Before using real customer data, confirm the selected model provider's terms, routing path, and retention settings are appropriate for that data.
|
|
87
|
-
|
|
88
|
-
Even at this size the agent can already do real work. The default harness gives it file, shell, web, and delegation tools out of the box. See [Default harness](./concepts/default-harness) for the full set and how to override or disable any of them.
|
|
89
|
-
|
|
90
|
-
### Add your first tool
|
|
91
|
-
|
|
92
|
-
The filename becomes the tool name the model sees, and it must be snake_case ASCII. Create `agent/tools/get_weather.ts`:
|
|
93
|
-
|
|
94
|
-
```ts
|
|
95
|
-
import { defineTool } from "eve/tools";
|
|
96
|
-
import { z } from "zod";
|
|
97
|
-
|
|
98
|
-
// The model sees this tool as `get_weather`, from the filename.
|
|
99
|
-
export default defineTool({
|
|
100
|
-
description: "Get the current weather for a city.",
|
|
101
|
-
inputSchema: z.object({ city: z.string().min(1) }),
|
|
102
|
-
async execute({ city }) {
|
|
103
|
-
return { city, condition: "Sunny", temperatureF: 72 };
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Tools run in your app runtime with full `process.env`, not inside the [sandbox](./sandbox). More in [Tools](./tools).
|
|
109
|
-
|
|
110
|
-
## Run the app
|
|
111
|
-
|
|
112
|
-
A scaffolded app has a `dev` script, so from the app root run:
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
npm run dev
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
The manual path authors no `dev` script. Run the binary through `npx` instead:
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
npx eve dev
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Other commands the eve binary provides (prefix each with `npx`, or add a matching package.json script):
|
|
125
|
-
|
|
126
|
-
- `eve info`: show the active routes and compiled artifacts
|
|
127
|
-
- `eve build`: compile the agent into `.eve/` and build the host output
|
|
128
|
-
- `eve start`: serve the built output
|
|
129
|
-
- `eve dev`: start the local runtime and open the interactive [terminal UI](./guides/dev-tui)
|
|
130
|
-
|
|
131
|
-
In the dev TUI, type a message and watch it happen in order. First the `get_weather` call, then its result, then the reply.
|
|
132
|
-
|
|
133
|
-
The same CLI can point at a deployment. `npx eve dev https://your-app.vercel.app` drives a deployed app, which is handy for preview and production smoke tests. See [Deployment](./guides/deployment/overview).
|
|
134
|
-
|
|
135
|
-
## Send a message
|
|
136
|
-
|
|
137
|
-
Every eve app exposes the same stable HTTP API. Start a durable session:
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
curl -X POST http://127.0.0.1:2000/eve/v1/session \
|
|
141
|
-
-H 'content-type: application/json' \
|
|
142
|
-
-d '{"message":"What is the weather in Brooklyn?"}'
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
The response comes back with two things you'll reuse:
|
|
146
|
-
|
|
147
|
-
- a `continuationToken` in the JSON body, to resume this conversation
|
|
148
|
-
- an `x-eve-session-id` header that identifies the run to stream
|
|
149
|
-
|
|
150
|
-
## Stream the session
|
|
151
|
-
|
|
152
|
-
Attach to the session stream:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
curl http://127.0.0.1:2000/eve/v1/session/<sessionId>/stream
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
The stream is NDJSON, served as `application/x-ndjson; charset=utf-8`. For this run you'll see a handful of lifecycle events:
|
|
159
|
-
|
|
160
|
-
- `session.started`
|
|
161
|
-
- `actions.requested` (the `get_weather` call)
|
|
162
|
-
- `action.result`
|
|
163
|
-
- `message.completed` (the reply)
|
|
164
|
-
- `session.completed`
|
|
165
|
-
|
|
166
|
-
`reasoning.appended` and `message.appended` are optional live-streaming events. Clients that can't surface incremental output can ignore them and rely on `reasoning.completed` and `message.completed`.
|
|
167
|
-
|
|
168
|
-
Note: consider the privacy, confidentiality, and user-experience implications for displaying, storing, or transmitting reasoning events in your application.
|
|
169
|
-
|
|
170
|
-
The full set covers more lifecycle, human-in-the-loop, and authorization events, including `input.requested`, `turn.failed`, `authorization.required`, and `authorization.completed`. See [Sessions, runs and streaming](./concepts/sessions-runs-and-streaming) for every event and its data shape.
|
|
171
|
-
|
|
172
|
-
## Send a follow-up message
|
|
173
|
-
|
|
174
|
-
When the session is waiting for the next user message, post a follow-up with the token:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
curl -X POST http://127.0.0.1:2000/eve/v1/session/<sessionId> \
|
|
178
|
-
-H 'content-type: application/json' \
|
|
179
|
-
-d '{"continuationToken":"<token>","message":"Now do Queens."}'
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
See [Sessions, runs and streaming](./concepts/sessions-runs-and-streaming) for the full contract.
|
|
183
|
-
|
|
184
|
-
## Setting up with a coding agent
|
|
185
|
-
|
|
186
|
-
If a coding agent (Claude Code, Cursor, and the like) is doing the setup, hand it this prompt:
|
|
187
|
-
|
|
188
|
-
<CopyPrompt text="Set up an eve agent for the user. eve is a filesystem-first TypeScript framework for durable agents, published as the npm package eve. Read its docs: once eve is installed they are bundled in the package at node_modules/eve/docs; before eve is installed, read the published Introduction and Getting Started pages. If the project has no eve app, scaffold one with `npx eve@latest init <name>`; add `--channel-web-nextjs` only when the user wants Web Chat. In a coding-agent launch, init installs dependencies and prints the project-specific dev command instead of starting the interactive terminal UI. A fresh project also initializes Git; an existing app keeps its repository and scripts. To add eve to an existing app, run `eve init .`, or install the dependencies by hand with `npm install eve@latest ai zod` (init adds ai and zod; the by-hand path needs all three). Make sure agent/agent.ts and agent/instructions.md exist, then add a first typed tool at agent/tools/get_weather.ts using defineTool from eve/tools with a Zod inputSchema and an inline execute. Start eve in a controllable background process with `npx eve dev --no-ui`, wait for the server URL, then exercise the HTTP API: create a session with POST /eve/v1/session, attach to GET /eve/v1/session/:id/stream, and send a follow-up with the returned continuationToken. Stop the dev process after verification. Verify with the project's typecheck, adapt model and provider choices to the project, and do not commit unless the user asks.">
|
|
189
|
-
Set up an eve agent: read the eve docs (bundled at node_modules/eve/docs once eve is
|
|
190
|
-
installed), scaffold with `npx eve@latest init <name>` (or `npm install eve@latest ai zod` in an existing app), add
|
|
191
|
-
a typed tool at agent/tools/get_weather.ts, run it with `npx eve dev --no-ui`, then create a session, stream
|
|
192
|
-
it, and send a follow-up.
|
|
193
|
-
</CopyPrompt>
|
|
194
|
-
|
|
195
|
-
Once `eve` is a dependency, the package bundles the full docs, so the agent can read them locally at `node_modules/eve/docs/` without fetching anything.
|
|
196
|
-
|
|
197
|
-
To add a platform channel after setup, run `eve channels add slack` from an interactive terminal. The init flags are covered in [Quick start](#quick-start).
|
|
198
|
-
|
|
199
|
-
## What to read next
|
|
200
|
-
|
|
201
|
-
- [Instructions](./instructions) and [Tools](./tools): the core building blocks
|
|
202
|
-
- [Channels](./channels/overview): reach the agent from Slack, Discord, or a web UI
|
|
203
|
-
- [Frontend](./guides/frontend/overview): browser chat with `useEveAgent`
|
|
204
|
-
- [TypeScript SDK](./guides/client/overview): call the agent from scripts or server-side code
|
|
205
|
-
- [Sessions, runs and streaming](./concepts/sessions-runs-and-streaming): the durable session model
|
|
206
|
-
- [Build an agent](./tutorial/first-agent): the full end-to-end walkthrough
|
|
23
|
+
Start with [Installation](/docs/installation) when you need a new project. Read [Project structure](/docs/project-structure) when you already have an eve project or want to add a capability.
|
|
@@ -157,6 +157,21 @@ for await (const event of session.stream({ startIndex: -1 })) {
|
|
|
157
157
|
|
|
158
158
|
Tail-relative attachments do not automatically reconnect or advance the session's stored absolute `streamIndex`. Break after the event you need when using one as a tail lookup.
|
|
159
159
|
|
|
160
|
+
## Bounded catch-up reads
|
|
161
|
+
|
|
162
|
+
Pass `follow: false` to read from the cursor to the durable tail and then stop, instead of following the live stream (the default):
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
for await (const event of session.stream({ follow: false })) {
|
|
166
|
+
console.log(event.type);
|
|
167
|
+
}
|
|
168
|
+
// Returns once every event recorded before the stream opened is consumed.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The first connection pins the bound to the tail the server reports at open time; events recorded afterward are not part of the read. Reconnects during the read keep that original bound, and the session's stored `streamIndex` still advances past the consumed events, so a follow-up `stream()` or `send()` picks up exactly where the bounded read ended. When the cursor is already at or past the tail, the iterator returns immediately without yielding.
|
|
172
|
+
|
|
173
|
+
Because a tail-relative cursor cannot be bounded, `follow: false` throws when combined with a negative `startIndex`. It also fails if the server does not report the durable tail (an agent running an older eve version).
|
|
174
|
+
|
|
160
175
|
`stream()` throws if the session has no `sessionId`, because there's no stream to attach to before the first send.
|
|
161
176
|
|
|
162
177
|
## Abort a request
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Install Integrations"
|
|
3
|
+
description: "Discover and install extensions and other integrations from eve and third-party sources."
|
|
4
|
+
contentType: "How-to"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Install integrations from eve's official catalog, a third-party source, or an integration URL. Integrations are distributed using the [shadcn registry format](https://ui.shadcn.com/docs/registry).
|
|
8
|
+
|
|
9
|
+
## Install an integration
|
|
10
|
+
|
|
11
|
+
Run `eve add` from an eve agent project. This installs the integration's dependencies and writes its declared files into your project.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
eve add extension/agent-browser
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The integration may create an extension mount under `agent/extensions/`. Configure that mount and any required environment variables before running your agent.
|
|
18
|
+
|
|
19
|
+
## Find an integration
|
|
20
|
+
|
|
21
|
+
Browse the [Integrations directory](/integrations) to see the official integrations available from the eve registry.
|
|
22
|
+
|
|
23
|
+
List every official integration and configured third-party source:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
eve registry list
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Search the catalog when you know what capability you need:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
eve registry search browser
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Inspect an integration before you install it:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
eve registry view extension/agent-browser
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`list` and `search` include the official eve catalog and every source you add to the project.
|
|
42
|
+
|
|
43
|
+
## Add a third-party source
|
|
44
|
+
|
|
45
|
+
Give a registry a namespace and an integration URL template:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
eve registry add @acme=https://registry.acme.com/r/{name}.json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
eve stores the mapping in `package.json#registries`. The `{name}` placeholder becomes the integration name, so `@acme/analytics` resolves to `https://registry.acme.com/r/analytics.json`.
|
|
52
|
+
|
|
53
|
+
Limit listing or search to that registry when needed:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
eve registry list --registry @acme
|
|
57
|
+
eve registry search analytics --registry @acme
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Install an integration from that source:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
eve add @acme/analytics
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Install a known integration URL directly when you do not need a namespace:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
eve add https://registry.acme.com/r/analytics.json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Configure generated files
|
|
73
|
+
|
|
74
|
+
Integrations add project files. Read the generated mount before you run the agent, then add the configuration the extension requires.
|
|
75
|
+
|
|
76
|
+
For an extension, this usually means setting environment variables and editing the file under `agent/extensions/`. See [Extensions](./extensions) for mount configuration, namespacing, and overrides.
|
|
77
|
+
|
|
78
|
+
Provider-specific setup lives in the [Integrations directory](/integrations). Follow that guidance for credentials, approval policies, and service-specific options.
|
|
79
|
+
|
|
80
|
+
## Update an installed integration
|
|
81
|
+
|
|
82
|
+
Treat generated files as project code. Commit or review local changes before you install the integration again.
|
|
83
|
+
|
|
84
|
+
Run the same command when the registry publisher provides an updated scaffold:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
eve add extension/agent-browser
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Pass `--overwrite` only when you intend to replace an existing generated file:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
eve add extension/agent-browser --overwrite
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Update the installed package with your package manager. Check the publisher's release notes before changing the generated mount or package version.
|
|
97
|
+
|
|
98
|
+
## Choose trusted sources
|
|
99
|
+
|
|
100
|
+
Integrations can add dependencies and write files. Add sources you trust, inspect an integration with `eve registry view`, and review the resulting project diff before you run the agent.
|
|
101
|
+
|
|
102
|
+
## What to read next
|
|
103
|
+
|
|
104
|
+
- [Extensions](./extensions): configure and override installed extension mounts
|
|
105
|
+
- [Integrations directory](/integrations): provider-specific setup and security guidance
|
|
106
|
+
- [shadcn registry documentation](https://ui.shadcn.com/docs/registry): publish a compatible third-party registry
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Installation"
|
|
3
|
+
description: "Create an eve project, configure a model credential, and run it locally."
|
|
4
|
+
contentType: "How-to"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create an eve project with `eve init`. The scaffold installs dependencies, creates the agent files, and starts the local development server.
|
|
8
|
+
|
|
9
|
+
## Configure a model credential
|
|
10
|
+
|
|
11
|
+
The default scaffolded model routes through the Vercel AI Gateway. Set `AI_GATEWAY_API_KEY`, or link a Vercel project to use `VERCEL_OIDC_TOKEN`.
|
|
12
|
+
|
|
13
|
+
You can also use a direct provider model. Install its AI SDK provider package and set that provider's API key before you run the agent.
|
|
14
|
+
|
|
15
|
+
Choose a model, provider, and channel that meet your data-processing and compliance requirements.
|
|
16
|
+
|
|
17
|
+
## Create a project
|
|
18
|
+
|
|
19
|
+
Run `eve init` with a project name:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx eve@latest init my-agent
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The command creates `my-agent/`, installs dependencies, initializes Git, and starts eve's development server. If a supported coding-agent REPL is available, eve offers to open it instead.
|
|
26
|
+
|
|
27
|
+
## Run the agent
|
|
28
|
+
|
|
29
|
+
From the project root, run the generated development command:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cd my-agent
|
|
33
|
+
npm run dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The terminal UI sends messages to your agent. Stop the server with Ctrl+C when you need your shell for another command.
|
|
37
|
+
|
|
38
|
+
## Add eve to an existing project
|
|
39
|
+
|
|
40
|
+
Run `eve init .` from a project with a `package.json` and no existing `agent/` files:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx eve@latest init .
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
eve adds the missing `eve`, `ai`, and `zod` dependencies without changing files the project already owns.
|
|
47
|
+
|
|
48
|
+
## Install manually
|
|
49
|
+
|
|
50
|
+
Install the runtime dependencies when you do not want to use the scaffold:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install eve@latest ai zod
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Declare Node.js 24 in `package.json`, then create `agent/agent.ts` and `agent/instructions.md`. [Project structure](/docs/project-structure) shows the required layout, and [`agent.ts`](./agent-config) documents the runtime configuration.
|
|
57
|
+
|
|
58
|
+
## Continue building
|
|
59
|
+
|
|
60
|
+
Read [Project structure](/docs/project-structure) before adding instructions, tools, connections, or channels.
|
package/docs/meta.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"pages": [
|
|
3
|
-
"
|
|
3
|
+
"---Getting Started---",
|
|
4
4
|
"getting-started",
|
|
5
|
-
"
|
|
5
|
+
"installation",
|
|
6
|
+
"project-structure",
|
|
7
|
+
"install-integrations",
|
|
8
|
+
"---Build Your Agent---",
|
|
6
9
|
"agent-config",
|
|
7
10
|
"instructions",
|
|
8
11
|
"tools",
|
|
@@ -14,12 +17,11 @@
|
|
|
14
17
|
"subagents",
|
|
15
18
|
"schedules",
|
|
16
19
|
"evals",
|
|
17
|
-
"---",
|
|
20
|
+
"---Learn More---",
|
|
21
|
+
"tutorial",
|
|
18
22
|
"guides",
|
|
19
23
|
"concepts",
|
|
20
24
|
"patterns",
|
|
21
|
-
"
|
|
22
|
-
"reference",
|
|
23
|
-
"tutorial"
|
|
25
|
+
"reference"
|
|
24
26
|
]
|
|
25
27
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Project Structure"
|
|
3
|
+
description: "Learn the files eve discovers and how their paths define agent capabilities."
|
|
4
|
+
contentType: "Conceptual"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
eve builds an agent from files under `agent/`. A file's location determines what eve loads, and most paths also determine the capability's name.
|
|
8
|
+
|
|
9
|
+
## Start with two files
|
|
10
|
+
|
|
11
|
+
A minimal agent needs an instructions file and optional runtime configuration:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
my-agent/
|
|
15
|
+
├── package.json
|
|
16
|
+
├── agent/
|
|
17
|
+
│ ├── agent.ts
|
|
18
|
+
│ └── instructions.md
|
|
19
|
+
└── evals/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`agent/instructions.md` is the agent's always-on system prompt. `agent/agent.ts` selects the model and configures runtime behavior. Omit `agent.ts` when the defaults are sufficient.
|
|
23
|
+
|
|
24
|
+
## Add capabilities as directories
|
|
25
|
+
|
|
26
|
+
Add a directory when the agent needs that capability:
|
|
27
|
+
|
|
28
|
+
| Path | Purpose |
|
|
29
|
+
| ----------------------------------- | --------------------------------------------- |
|
|
30
|
+
| [`tools/`](./tools) | Typed functions the model can call |
|
|
31
|
+
| [`skills/`](./skills) | Procedures the model loads when useful |
|
|
32
|
+
| [`channels/`](./channels/overview) | HTTP and messaging entry points |
|
|
33
|
+
| [`connections/`](/docs/connections) | MCP and OpenAPI services |
|
|
34
|
+
| [`sandbox/`](./sandbox) | Controlled workspace files and commands |
|
|
35
|
+
| [`subagents/`](./subagents) | Specialist agents the root agent delegates to |
|
|
36
|
+
| [`schedules/`](./schedules) | Recurring work |
|
|
37
|
+
| `lib/` | Shared code imported by agent files |
|
|
38
|
+
|
|
39
|
+
The `evals/` directory sits beside `agent/`. It holds the checks that measure whether the agent completes its tasks. See [Evals](./evals/overview).
|
|
40
|
+
|
|
41
|
+
## Let paths name capabilities
|
|
42
|
+
|
|
43
|
+
The path supplies the name. This tool file becomes the `get_weather` tool:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
agent/tools/get_weather.ts
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The same rule applies to connections, skills, and subagents. You do not add a duplicate `name` or `id` field to the definition.
|
|
50
|
+
|
|
51
|
+
## Use the full layout reference
|
|
52
|
+
|
|
53
|
+
[Project layout](./reference/project-layout) lists every supported slot, the root and subagent boundaries, and the file-discovery rules.
|
package/docs/reference/cli.md
CHANGED
|
@@ -24,6 +24,8 @@ The `eve` binary (`bin: eve`) runs from your app root, and every command first l
|
|
|
24
24
|
| `eve channels list` | List user-authored channels |
|
|
25
25
|
| `eve extension init [target]` | Create a new extension package |
|
|
26
26
|
| `eve extension build` | Build the current package as an extension |
|
|
27
|
+
| `eve add <item>` | Install an item from the official or a configured shadcn registry |
|
|
28
|
+
| `eve registry <command>` | Add sources and list, search, or view registry catalog items |
|
|
27
29
|
|
|
28
30
|
When `eve build` fails on discovery errors, it prints the full diagnostics report (severity, message, source path) and the diagnostics artifact path.
|
|
29
31
|
|
|
@@ -77,6 +79,22 @@ eve extension build
|
|
|
77
79
|
|
|
78
80
|
Builds the complete agent-shaped extension tree into its configured dist root, emits declarations and compatibility metadata, and fills the package `exports` map. The original TypeScript source is not required in the published package.
|
|
79
81
|
|
|
82
|
+
## Registry items
|
|
83
|
+
|
|
84
|
+
Commands for installing and discovering [shadcn registry](https://ui.shadcn.com/docs/registry) items. Official registry items use a kind and slug (for example, `extension/agent-browser`); URLs and configured registry addresses are also supported.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
eve add extension/agent-browser
|
|
88
|
+
eve add https://example.com/r/my-extension.json --overwrite
|
|
89
|
+
eve registry add @acme=https://example.com/r/{name}.json
|
|
90
|
+
eve registry search browser
|
|
91
|
+
eve registry search browser --registry @acme
|
|
92
|
+
eve registry view @acme/my-extension
|
|
93
|
+
eve add @acme/my-extension
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`eve registry add` records configured sources in `package.json#registries`. `eve registry list` and `search` aggregate the official catalog and all configured sources by default, or browse one supplied URL or namespace. Official and other universal items with explicit file targets do not require shadcn project configuration.
|
|
97
|
+
|
|
80
98
|
## `eve info`
|
|
81
99
|
|
|
82
100
|
```bash
|
package/docs/tutorial/meta.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.8",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -330,6 +330,7 @@
|
|
|
330
330
|
"react": "19.2.6",
|
|
331
331
|
"react-test-renderer": "19.2.6",
|
|
332
332
|
"semver": "7.8.4",
|
|
333
|
+
"shadcn": "4.16.0",
|
|
333
334
|
"svelte": "^5.0.0",
|
|
334
335
|
"turndown": "7.2.4",
|
|
335
336
|
"vite": "^8.1.5",
|
package/docs/introduction.mdx
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Introduction"
|
|
3
|
-
description: "How an eve agent is laid out as files, what runs when a message arrives, and the building blocks you add as it grows."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
eve is a framework for building durable agents as ordinary files in a TypeScript project.
|
|
7
|
-
|
|
8
|
-
Instead of one large configuration object, each part of your agent gets a clear home. Instructions go in one file, tools in one folder, channels in another. eve discovers that structure and turns it into an agent that runs locally, serves HTTP, connects to other platforms, and keeps working across many turns.
|
|
9
|
-
|
|
10
|
-
## An eve project at a glance
|
|
11
|
-
|
|
12
|
-
A small eve app looks like this:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
my-agent/
|
|
16
|
-
├── package.json
|
|
17
|
-
└── agent/
|
|
18
|
-
├── agent.ts
|
|
19
|
-
├── instructions.md
|
|
20
|
-
├── tools/
|
|
21
|
-
│ └── get_weather.ts
|
|
22
|
-
├── skills/
|
|
23
|
-
│ └── plan_a_trip.md
|
|
24
|
-
└── channels/
|
|
25
|
-
└── slack.ts
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
You can understand most eve projects by reading that tree:
|
|
29
|
-
|
|
30
|
-
- `instructions.md` tells the agent who it is and how it should behave.
|
|
31
|
-
- [`agent.ts`](./agent-config) chooses the model and configures runtime options.
|
|
32
|
-
- [`tools/`](./tools) holds typed functions the model can call.
|
|
33
|
-
- [`skills/`](./skills) holds longer procedures the model loads only when they are useful.
|
|
34
|
-
- [`channels/`](./channels/overview) connect the agent to HTTP clients, Slack, Discord, and the other places people talk to it.
|
|
35
|
-
|
|
36
|
-
Start with only `instructions.md` and `agent.ts`. Add the other folders when the agent needs them.
|
|
37
|
-
|
|
38
|
-
## The files are the interface
|
|
39
|
-
|
|
40
|
-
eve is [filesystem-first](./reference/project-layout). A file's location says what it does, and its path usually gives it a name. For example, this file:
|
|
41
|
-
|
|
42
|
-
```text
|
|
43
|
-
agent/tools/get_weather.ts
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
defines a tool named `get_weather`:
|
|
47
|
-
|
|
48
|
-
```ts
|
|
49
|
-
import { defineTool } from "eve/tools";
|
|
50
|
-
import { z } from "zod";
|
|
51
|
-
|
|
52
|
-
export default defineTool({
|
|
53
|
-
description: "Get the weather for a city.",
|
|
54
|
-
inputSchema: z.object({ city: z.string() }),
|
|
55
|
-
async execute({ city }) {
|
|
56
|
-
return { city, condition: "Sunny" };
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
There is no separate registry to keep in sync. Add the file and eve discovers it; move or rename it and its identity moves with it. See [Tools](./tools) for the complete API.
|
|
62
|
-
|
|
63
|
-
## What happens when a message arrives
|
|
64
|
-
|
|
65
|
-
The same flow runs whether a message comes from a web app, the terminal, or Slack. eve turns the platform input into a message, gives the model its instructions, skills, tools, and conversation history, runs the work (calling tools and subagents as needed), saves the session and streams events, then delivers the result back in the form the platform expects.
|
|
66
|
-
|
|
67
|
-
That keeps agent behavior portable. Your weather tool does not need to know whether the question came from a browser or from Slack.
|
|
68
|
-
|
|
69
|
-
## Durable by default
|
|
70
|
-
|
|
71
|
-
An eve session is more than one request and one response. It can:
|
|
72
|
-
|
|
73
|
-
- Stream progress while work is happening
|
|
74
|
-
- Call tools and subagents
|
|
75
|
-
- Pause for [approval or a human answer](./tools)
|
|
76
|
-
- Resume after that answer arrives
|
|
77
|
-
- Keep durable state across turns
|
|
78
|
-
|
|
79
|
-
Under the hood, eve uses the open-source [Workflow SDK](https://workflow-sdk.dev) to make sessions durable, resumable, and crash-safe. eve handles that machinery so your tools focus on the work itself.
|
|
80
|
-
|
|
81
|
-
## Grow the project by adding capabilities
|
|
82
|
-
|
|
83
|
-
As the agent grows, each concern still has a predictable home:
|
|
84
|
-
|
|
85
|
-
| Path | Add it when you need... |
|
|
86
|
-
| ------------------------------- | ------------------------------------------------ |
|
|
87
|
-
| [`connections/`](./connections) | Tools from external MCP or OpenAPI services |
|
|
88
|
-
| [`hooks/`](./guides/hooks) | Code that reacts to lifecycle and stream events |
|
|
89
|
-
| [`sandbox/`](./sandbox) | A controlled workspace for files and commands |
|
|
90
|
-
| [`subagents/`](./subagents) | Specialist agents the root agent can delegate to |
|
|
91
|
-
| [`schedules/`](./schedules) | Recurring or scheduled work |
|
|
92
|
-
| `lib/` | Shared code imported by the other agent files |
|
|
93
|
-
|
|
94
|
-
The result stays readable before it runs. The directory tells you what the agent can do.
|
|
95
|
-
|
|
96
|
-
## What to read next
|
|
97
|
-
|
|
98
|
-
- [Getting started](./getting-started): scaffold and run your first agent
|
|
99
|
-
- [Tools](./tools): the typed actions your agent calls
|
|
100
|
-
- [Instructions](./instructions): the always-on system prompt that shapes behavior
|
|
101
|
-
- [Channels](./channels/overview): reach the agent from Slack, Discord, or a web UI
|
|
102
|
-
- [Connections](./connections): pull in tools from external services
|
|
103
|
-
- [Project layout](./reference/project-layout): every authored slot under `agent/`
|