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.
Files changed (77) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/src/channel/session.d.ts +5 -0
  3. package/dist/src/channel/session.js +1 -1
  4. package/dist/src/channel/types.d.ts +7 -0
  5. package/dist/src/chunks/{use-eve-agent-COlXhAaF.js → use-eve-agent-JPfBHZJr.js} +36 -6
  6. package/dist/src/chunks/{use-eve-agent-DzVlKcUV.js → use-eve-agent-r5tkzjmt.js} +36 -6
  7. package/dist/src/cli/commands/register-registry-commands.d.ts +12 -0
  8. package/dist/src/cli/commands/register-registry-commands.js +1 -0
  9. package/dist/src/cli/commands/registry-project.d.ts +10 -0
  10. package/dist/src/cli/commands/registry-project.js +1 -0
  11. package/dist/src/cli/commands/registry.d.ts +17 -0
  12. package/dist/src/cli/commands/registry.js +1 -0
  13. package/dist/src/cli/run.js +2 -2
  14. package/dist/src/client/open-stream.d.ts +17 -2
  15. package/dist/src/client/open-stream.js +1 -1
  16. package/dist/src/client/session.d.ts +5 -1
  17. package/dist/src/client/session.js +1 -1
  18. package/dist/src/client/types.d.ts +7 -0
  19. package/dist/src/compiled/.vendor-stamp.json +2 -1
  20. package/dist/src/compiled/shadcn-registry/LICENSE.md +21 -0
  21. package/dist/src/compiled/shadcn-registry/index.d.ts +56 -0
  22. package/dist/src/compiled/shadcn-registry/index.js +33491 -0
  23. package/dist/src/execution/workflow-runtime.js +1 -1
  24. package/dist/src/harness/emission.js +1 -1
  25. package/dist/src/harness/input-requests.js +1 -1
  26. package/dist/src/harness/runtime-actions.d.ts +4 -0
  27. package/dist/src/harness/runtime-actions.js +1 -1
  28. package/dist/src/harness/tool-call-input-errors.d.ts +20 -0
  29. package/dist/src/harness/tool-call-input-errors.js +1 -1
  30. package/dist/src/internal/application/build-workspace.d.ts +0 -1
  31. package/dist/src/internal/application/build-workspace.js +1 -1
  32. package/dist/src/internal/application/package.js +1 -1
  33. package/dist/src/internal/application/paths.d.ts +1 -6
  34. package/dist/src/internal/application/paths.js +1 -1
  35. package/dist/src/internal/nitro/host/build-application.js +1 -1
  36. package/dist/src/internal/nitro/host/configure-nitro-routes.d.ts +4 -4
  37. package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
  38. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +11 -7
  39. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  40. package/dist/src/internal/nitro/host/types.d.ts +0 -4
  41. package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +29 -1
  42. package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
  43. package/dist/src/internal/workflow/queue-namespace.d.ts +8 -0
  44. package/dist/src/internal/workflow/queue-namespace.js +1 -1
  45. package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -5
  46. package/dist/src/internal/workflow-bundle/builder.d.ts +0 -5
  47. package/dist/src/internal/workflow-bundle/builder.js +2 -2
  48. package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +0 -51
  49. package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -3
  50. package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -7
  51. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  52. package/dist/src/packages/eve-catalog/src/index.js +1 -1
  53. package/dist/src/protocol/message.d.ts +1 -0
  54. package/dist/src/protocol/message.js +2 -2
  55. package/dist/src/public/channels/eve.js +2 -2
  56. package/dist/src/setup/scaffold/create/project.js +1 -1
  57. package/dist/src/svelte/index.js +1 -1
  58. package/dist/src/svelte/use-eve-agent.js +1 -1
  59. package/dist/src/vue/index.js +1 -1
  60. package/dist/src/vue/use-eve-agent.js +1 -1
  61. package/docs/README.md +21 -20
  62. package/docs/channels/custom.mdx +1 -1
  63. package/docs/channels/overview.mdx +2 -0
  64. package/docs/channels/slack.mdx +0 -1
  65. package/docs/concepts/{execution-model-and-durability.md → execution-model-and-durability.mdx} +16 -0
  66. package/docs/concepts/security-model.md +2 -0
  67. package/docs/concepts/sessions-runs-and-streaming.md +9 -0
  68. package/docs/getting-started.mdx +13 -196
  69. package/docs/guides/client/streaming.mdx +15 -0
  70. package/docs/install-integrations.mdx +106 -0
  71. package/docs/installation.mdx +60 -0
  72. package/docs/meta.json +8 -6
  73. package/docs/project-structure.mdx +53 -0
  74. package/docs/reference/cli.md +18 -0
  75. package/docs/tutorial/meta.json +1 -1
  76. package/package.json +2 -1
  77. package/docs/introduction.mdx +0 -103
@@ -1,206 +1,23 @@
1
1
  ---
2
2
  title: "Getting Started"
3
- description: "Install eve, scaffold your first agent, give it a tool, and run it locally."
3
+ description: "Create an eve project, learn its filesystem layout, and start adding capabilities."
4
+ contentType: "Landing"
4
5
  ---
5
6
 
6
- eve is a filesystem-first framework for durable agents. You write capabilities under `agent/`, and eve runs the model loop, persists every session, and serves the agent over HTTP and platform channels. You'll scaffold an app, add a tool, run it locally, then create, stream, and continue a session over HTTP.
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
- ## Prerequisites
9
+ ## Start in order
9
10
 
10
- - Node 24 or newer
11
- - npm (bundled with Node)
12
- - A model credential (see below)
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
- The scaffold's default model is `anthropic/claude-sonnet-5`, which routes through the Vercel AI Gateway. Set one of these before you run the agent:
15
+ ## What you need
15
16
 
16
- - A gateway model id needs `AI_GATEWAY_API_KEY`, or a `VERCEL_OIDC_TOKEN` pulled with `vercel link`.
17
- - A direct provider model uses that provider's AI SDK package and API key. For example, `anthropic("claude-...")` from `@ai-sdk/anthropic` needs `ANTHROPIC_API_KEY`.
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
- You are responsible for selecting a model, provider, and channel appropriate for your data and use case, and for complying with each provider's terms (as listed per model) and data-processing requirements.
21
+ ## Choose your next step
20
22
 
21
- If you skip this, the dev TUI flags the missing credential and its `/model` command walks you through pasting a key or linking a project.
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
- "introduction",
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.
@@ -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
@@ -1,5 +1,5 @@
1
1
  {
2
- "title": "Build an Agent",
2
+ "title": "Tutorial",
3
3
  "pages": [
4
4
  "first-agent",
5
5
  "how-it-runs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eve",
3
- "version": "0.27.6",
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",
@@ -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/`