eve 0.44.3 → 0.44.4
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 +15 -0
- package/dist/src/channel/adapter.d.ts +2 -2
- package/dist/src/chunks/{use-eve-agent-DpUEwS23.js → use-eve-agent-BJwaMe5k.js} +6 -2
- package/dist/src/chunks/{use-eve-agent-BsLJiIbc.js → use-eve-agent-BtsOXv3s.js} +6 -2
- package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +2 -0
- package/dist/src/cli/dev/tui/setup-commands.js +1 -1
- package/dist/src/client/eve-agent-store.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +2 -2
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +1 -0
- package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
- package/dist/src/execution/web-fetch/request.js +1 -1
- package/dist/src/execution/web-fetch/tool.js +1 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/harness/attachment-staging.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/public/channels/chat-sdk/authorization.d.ts +3 -0
- package/dist/src/public/channels/chat-sdk/authorization.js +3 -0
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +2 -0
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
- package/dist/src/public/channels/linq/index.d.ts +1 -1
- package/dist/src/public/channels/linq/index.js +1 -1
- package/dist/src/public/channels/linq/linqChannel.d.ts +3 -1
- package/dist/src/public/channels/linq/linqChannel.js +1 -1
- package/dist/src/public/channels/photon/index.d.ts +1 -1
- package/dist/src/public/channels/photon/index.js +1 -1
- package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +3 -1
- package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +15 -5
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/attachments.d.ts +2 -2
- package/dist/src/public/channels/slack/attachments.js +1 -1
- package/dist/src/public/channels/slack/hitl.d.ts +2 -0
- package/dist/src/public/channels/slack/inbound-content.d.ts +4 -0
- package/dist/src/public/channels/slack/inbound-content.js +4 -0
- package/dist/src/public/channels/slack/inbound.d.ts +8 -1
- package/dist/src/public/channels/slack/inbound.js +1 -1
- package/dist/src/public/channels/slack/index.d.ts +1 -1
- package/dist/src/public/channels/slack/input-response.d.ts +1 -0
- package/dist/src/public/channels/slack/input-response.js +1 -1
- package/dist/src/public/channels/slack/interaction-cards.d.ts +10 -0
- package/dist/src/public/channels/slack/interaction-cards.js +1 -0
- package/dist/src/public/channels/slack/interactions.d.ts +1 -0
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +6 -1
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/sandbox/just-bash-sandbox.d.ts +12 -1
- package/dist/src/setup/flows/registry.d.ts +7 -1
- package/dist/src/setup/flows/registry.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +39 -2
- package/dist/src/shared/channel-definition.d.ts +5 -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/channels/linq.mdx +1 -1
- package/docs/channels/photon.mdx +4 -4
- package/docs/channels/slack.mdx +18 -3
- package/docs/concepts/built-in-tools.md +1 -0
- package/docs/getting-started.mdx +1 -0
- package/docs/guides/dev-tui.md +26 -15
- package/docs/meta.json +1 -1
- package/docs/sandbox.mdx +20 -0
- package/package.json +2 -2
package/docs/channels/linq.mdx
CHANGED
|
@@ -16,7 +16,7 @@ export default linqChannel({
|
|
|
16
16
|
});
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
The default webhook route is `/eve/v1/linq`. The channel verifies forwarded webhooks with same-project Vercel OIDC by default, marks accepted messages as read, and continues the same eve session for every message in a Linq conversation. A new accepted message cooperatively cancels an active turn and steers its replacement turn.
|
|
19
|
+
The default webhook route is `/eve/v1/linq`. The channel verifies forwarded webhooks with same-project Vercel OIDC by default, derives user auth from each message author, marks accepted messages as read, and continues the same eve session for every message in a Linq conversation. A new accepted message cooperatively cancels an active turn and steers its replacement turn.
|
|
20
20
|
|
|
21
21
|
Set `turnPolicy: "queue"` when every response should finish before Linq starts the next message.
|
|
22
22
|
|
package/docs/channels/photon.mdx
CHANGED
|
@@ -22,10 +22,10 @@ export default photonIMessageChannel({
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
The default webhook route is `/eve/v1/photon`. The channel verifies forwarded
|
|
25
|
-
webhooks with same-project Vercel OIDC by default,
|
|
26
|
-
read, and continues the same eve
|
|
27
|
-
conversation. A new accepted message
|
|
28
|
-
steers its replacement turn.
|
|
25
|
+
webhooks with same-project Vercel OIDC by default, derives user auth from each
|
|
26
|
+
message author, marks accepted messages as read, and continues the same eve
|
|
27
|
+
session for every message in an iMessage conversation. A new accepted message
|
|
28
|
+
cooperatively cancels an active turn and steers its replacement turn.
|
|
29
29
|
|
|
30
30
|
Set `turnPolicy: "queue"` when every response should finish before Photon starts the next message.
|
|
31
31
|
|
package/docs/channels/slack.mdx
CHANGED
|
@@ -33,6 +33,20 @@ export default slackChannel({
|
|
|
33
33
|
|
|
34
34
|
`connectSlackCredentials` returns `{ botToken, webhookVerifier }`, keeping token rotation, multi-workspace tenancy, and request verification inside Connect rather than your code.
|
|
35
35
|
|
|
36
|
+
Function-form bot tokens receive `{ teamId }` when Slack supplies the app installation workspace. Use it to select an installation in a self-managed multi-workspace app. The id can differ from the actor or content workspace for Slack Connect events:
|
|
37
|
+
|
|
38
|
+
```ts title="agent/channels/slack.ts"
|
|
39
|
+
import { slackChannel } from "eve/channels/slack";
|
|
40
|
+
|
|
41
|
+
export default slackChannel({
|
|
42
|
+
credentials: {
|
|
43
|
+
botToken: ({ teamId }) => loadInstallationToken(teamId),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Literal tokens and zero-argument token functions remain supported. A multi-workspace provider should reject a missing `teamId` instead of selecting a default installation.
|
|
49
|
+
|
|
36
50
|
### Manage Slack credentials yourself
|
|
37
51
|
|
|
38
52
|
Use this fallback when the agent does not run on Vercel or Vercel Connect is unavailable. In the setup command, **Use portable credentials** is the environment-variable option; eve adds `SLACK_BOT_TOKEN` and `SLACK_SIGNING_SECRET` to `.env.example`.
|
|
@@ -357,6 +371,7 @@ import { connectSlackCredentials } from "@vercel/connect/eve";
|
|
|
357
371
|
const { botToken } = connectSlackCredentials("slack/my-agent");
|
|
358
372
|
const response = await callSlackApi({
|
|
359
373
|
botToken,
|
|
374
|
+
context: { teamId: "T0123456789" },
|
|
360
375
|
operation: "reactions.get",
|
|
361
376
|
body: { channel: "C0123456789", timestamp: "1712345678.000100", full: true },
|
|
362
377
|
});
|
|
@@ -364,7 +379,7 @@ if (!response.ok) throw new Error(String(response.error));
|
|
|
364
379
|
```
|
|
365
380
|
|
|
366
381
|
`callSlackApi` resolves function-form tokens (secret managers, Connect
|
|
367
|
-
rotation) at call time and form-encodes the body — the only safe default,
|
|
382
|
+
rotation) with the supplied `context` at call time and form-encodes the body — the only safe default,
|
|
368
383
|
since Slack's JSON support is partial (`conversations.replies` rejects
|
|
369
384
|
JSON). `resolveSlackBotToken` materializes a `SlackBotToken` to a string
|
|
370
385
|
when you need the bearer token itself.
|
|
@@ -414,7 +429,7 @@ events: {
|
|
|
414
429
|
|
|
415
430
|
### Proactive sessions
|
|
416
431
|
|
|
417
|
-
Start a session without an inbound message through `ctx.to(slack, target).send(message, { auth })` from another channel, or `to(slack, target).send(message, { auth })` from a schedule `run` handler. The proactive target shape is `{ channelId, threadTs?, initialMessage? }`. This sends turn input to the agent; it is not a direct Slack post.
|
|
432
|
+
Start a session without an inbound message through `ctx.to(slack, target).send(message, { auth })` from another channel, or `to(slack, target).send(message, { auth })` from a schedule `run` handler. The proactive target shape is `{ channelId, installationTeamId?, threadTs?, initialMessage? }`. Set `installationTeamId` to the app installation workspace when a function-form bot token must select an installation. This sends turn input to the agent; it is not a direct Slack post.
|
|
418
433
|
|
|
419
434
|
To post without invoking the model, use `ctx.thread.post(...)` in an inbound Slack handler or `channel.thread.post(...)` in an `events` handler. Use `callSlackApi(...)` where no Slack channel context exists. For application-managed retries and deduplication, see [Durable cross-channel notifications](../patterns/durable-cross-channel-notifications).
|
|
420
435
|
|
|
@@ -422,7 +437,7 @@ To post without invoking the model, use `ctx.thread.post(...)` in an inbound Sla
|
|
|
422
437
|
|
|
423
438
|
Inbound files behind authenticated Slack URLs are staged with `fetchFile`. See [File uploads](./custom#file-uploads) for the `fetchFile` contract.
|
|
424
439
|
|
|
425
|
-
Private file downloads require the Slack bot token's `files:read` scope. Add the scope and reinstall the Slack app before sending attachments.
|
|
440
|
+
Private file downloads resolve credentials from the session's app installation workspace and require the Slack bot token's `files:read` scope. Add the scope and reinstall the Slack app before sending attachments.
|
|
426
441
|
|
|
427
442
|
Staged files live in the session sandbox under `/workspace/attachments`. Session history keeps a reference to that path, not a second copy of the Slack file. If the backend can no longer reattach the original sandbox, eve cannot restore the attachment bytes from history; later turns receive a missing-file result. Store files outside the sandbox when the agent must retain them independently of sandbox availability.
|
|
428
443
|
|
|
@@ -32,6 +32,7 @@ Notes:
|
|
|
32
32
|
- **`load_skill`** only pulls instructions into context. It adds no new execution surface, because behavior still comes from the tools the agent already has.
|
|
33
33
|
- **`connection_search`** surfaces a connection's tools by their qualified name (e.g. `linear__list_issues`), which the model can then call directly. It's registered only when the agent has connections.
|
|
34
34
|
- **`web_search`** has no local executor; the provider runs it. AI Gateway models use Exa by default. To use Parallel instead, export `webSearch({ provider: "parallel" })` from `agent/tools/web_search.ts`. Direct provider models continue to use their native search implementation. To supply your own implementation, override it with `defineTool()`.
|
|
35
|
+
- **`web_fetch`** follows up to ten redirects, rechecking every destination for SSRF safety. Non-success HTTP responses return a plain-text failure result with the response body when available instead of failing the tool call.
|
|
35
36
|
|
|
36
37
|
Review these default tools before production use. Disable, wrap, restrict, or require approval for any tool that can access the filesystem, network, shell, or sensitive data.
|
|
37
38
|
|
package/docs/getting-started.mdx
CHANGED
package/docs/guides/dev-tui.md
CHANGED
|
@@ -13,24 +13,35 @@ The transcript remains in your terminal scrollback after you exit. Run `/help` i
|
|
|
13
13
|
|
|
14
14
|
## Commands
|
|
15
15
|
|
|
16
|
-
| Command | Description
|
|
17
|
-
| ------------- |
|
|
18
|
-
| `/model` | Configure the model and its provider. Pass a model ID to set it directly: `/model provider/model-id`.
|
|
19
|
-
| `/add` | Browse and install channels, MCP connections, extensions, and observability integrations.
|
|
20
|
-
| `/deploy` | Deploy the agent to Vercel production. Links the directory first if needed.
|
|
21
|
-
| `/vc:install` | Install the Vercel CLI.
|
|
22
|
-
| `/vc:login` | Log in to Vercel or restore access to a remote deployment.
|
|
23
|
-
| `/loglevel` | Choose which server and agent logs appear in the transcript.
|
|
24
|
-
| `/traces` | Open the local trace viewer. Pass a trace ID prefix to open a specific trace.
|
|
25
|
-
| `/reset` | Start a fresh session.
|
|
26
|
-
| `/cancel` | Cancel the current turn without discarding settled context.
|
|
27
|
-
| `/clear` | Clear the session's model-message history. `/new` is an alias.
|
|
28
|
-
| `/compact` | Compact the current session's context.
|
|
29
|
-
| `/exit` | Quit the UI.
|
|
30
|
-
| `/help` | List available commands.
|
|
16
|
+
| Command | Description |
|
|
17
|
+
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| `/model` | Configure the model and its provider. Pass a model ID to set it directly: `/model provider/model-id`. |
|
|
19
|
+
| `/add` | Browse and install channels, MCP connections, extensions, and observability integrations. Pass an item address to open it directly: `/add channel/slack`. |
|
|
20
|
+
| `/deploy` | Deploy the agent to Vercel production. Links the directory first if needed. |
|
|
21
|
+
| `/vc:install` | Install the Vercel CLI. |
|
|
22
|
+
| `/vc:login` | Log in to Vercel or restore access to a remote deployment. |
|
|
23
|
+
| `/loglevel` | Choose which server and agent logs appear in the transcript. |
|
|
24
|
+
| `/traces` | Open the local trace viewer. Pass a trace ID prefix to open a specific trace. |
|
|
25
|
+
| `/reset` | Start a fresh session. |
|
|
26
|
+
| `/cancel` | Cancel the current turn without discarding settled context. |
|
|
27
|
+
| `/clear` | Clear the session's model-message history. `/new` is an alias. |
|
|
28
|
+
| `/compact` | Compact the current session's context. |
|
|
29
|
+
| `/exit` | Quit the UI. |
|
|
30
|
+
| `/help` | List available commands. |
|
|
31
31
|
|
|
32
32
|
`/model`, `/add`, `/deploy`, and `/traces` are available when `eve dev` runs locally. They are unavailable when the UI connects to a server with `--url`.
|
|
33
33
|
|
|
34
|
+
## Add an integration
|
|
35
|
+
|
|
36
|
+
Bare `/add` opens the categorized registry browser. Pass an item address — `<category>/<name>`, where category is `channel`, `connection`, `extension`, or `instrumentation` — to skip the category and search screens and open that item directly:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
/add channel/slack
|
|
40
|
+
/add extension/agent-browser
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Either way the UI shows the item's details and asks to confirm before installing, then runs the same installation and setup prompts. Choosing **Back** on a directly addressed item returns to the registry browser.
|
|
44
|
+
|
|
34
45
|
## Work with the agent
|
|
35
46
|
|
|
36
47
|
Type a message and press `Enter` to send it. When the agent asks a question or requests tool approval, respond in the prompt shown by the UI. Connection authorization can open a browser; keep local `eve dev` running until the browser returns to it.
|
package/docs/meta.json
CHANGED
package/docs/sandbox.mdx
CHANGED
|
@@ -182,6 +182,26 @@ export default defineSandbox({
|
|
|
182
182
|
|
|
183
183
|
`justbash()` needs no daemon or VM, but commands run in a simulated bash with a virtual filesystem under `.eve/sandbox-cache/`, with no real binaries (`git`, `node`, package managers) and no network isolation. The `just-bash` package is an optional peer dependency, so `eve dev` installs it into your application automatically when missing (disable with `autoInstall: false`); production processes fail with an actionable install error instead.
|
|
184
184
|
|
|
185
|
+
Pass `customCommands` to expose a `just-bash` `CustomCommand` inside each live sandbox session. The command participates in shell pipelines, redirections, and exit-code handling like a built-in command:
|
|
186
|
+
|
|
187
|
+
```ts title="agent/sandbox.ts"
|
|
188
|
+
import { defineSandbox } from "eve/sandbox";
|
|
189
|
+
import { justbash } from "eve/sandbox/just-bash";
|
|
190
|
+
import { decodeBytesToUtf8, defineCommand } from "just-bash";
|
|
191
|
+
|
|
192
|
+
const uppercase = defineCommand("uppercase", async (_args, context) => ({
|
|
193
|
+
stdout: decodeBytesToUtf8(context.stdin).toUpperCase(),
|
|
194
|
+
stderr: "",
|
|
195
|
+
exitCode: 0,
|
|
196
|
+
}));
|
|
197
|
+
|
|
198
|
+
export default defineSandbox({
|
|
199
|
+
backend: justbash({ customCommands: [uppercase] }),
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Custom commands are registered on live and reopened sessions, not during template prewarming. They run trusted host application code and create an explicit bridge from the sandbox to that code. Adapters can use this extension point to expose application APIs such as a Capable App's CLI; the outer eve `bash` tool does not automatically provide per-command Capable approvals.
|
|
204
|
+
|
|
185
205
|
You can also write your own backend. A `SandboxBackend` is an adapter object with a `name`, a `create`, and an optional `prewarm`. It can point at your own container runner, VM pool, internal sandbox service, or another isolation layer, as long as it returns the `SandboxSession` operations eve needs. Handles returned by `create` implement `shutdown()`, which stops the underlying compute at server shutdown. See the `SandboxBackend*` types on `eve/sandbox`.
|
|
186
206
|
|
|
187
207
|
## Lifecycle
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -381,7 +381,7 @@
|
|
|
381
381
|
"@opentelemetry/api": "^1.0.0",
|
|
382
382
|
"ai": "^7.0.58",
|
|
383
383
|
"braintrust": "^3.0.0",
|
|
384
|
-
"just-bash": "^3.
|
|
384
|
+
"just-bash": "^3.1.0",
|
|
385
385
|
"microsandbox": "^0.5.0"
|
|
386
386
|
},
|
|
387
387
|
"peerDependenciesMeta": {
|