eve 0.40.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/src/chunks/{use-eve-agent-CTI9fHaO.js → use-eve-agent-C0SG1Ttk.js} +4 -1
- package/dist/src/chunks/{use-eve-agent-DlkXRQVo.js → use-eve-agent-D71oDil7.js} +4 -1
- package/dist/src/client/session.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +2 -1
- package/dist/src/compiled/@linqapp/chat-sdk-adapter/LICENSE +201 -0
- package/dist/src/compiled/@linqapp/chat-sdk-adapter/index.d.ts +3 -0
- package/dist/src/compiled/@linqapp/chat-sdk-adapter/index.js +8 -0
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/public/channels/linq/inboundContent.d.ts +4 -0
- package/dist/src/public/channels/linq/inboundContent.js +1 -0
- package/dist/src/public/channels/linq/index.d.ts +1 -0
- package/dist/src/public/channels/linq/index.js +1 -0
- package/dist/src/public/channels/linq/linqChannel.d.ts +66 -0
- package/dist/src/public/channels/linq/linqChannel.js +1 -0
- package/dist/src/public/channels/teams/api.js +2 -2
- package/dist/src/public/channels/teams/defaults.js +1 -1
- package/dist/src/public/channels/teams/hitl.d.ts +9 -0
- package/dist/src/public/channels/teams/hitl.js +1 -1
- package/dist/src/public/channels/teams/index.d.ts +1 -1
- package/dist/src/public/channels/teams/index.js +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +8 -0
- package/dist/src/public/channels/teams/teamsChannel.js +1 -1
- package/dist/src/setup/integrations/linq/connect.d.ts +32 -0
- package/dist/src/setup/integrations/linq/connect.js +1 -0
- package/dist/src/setup/integrations/linq/setup.d.ts +22 -0
- package/dist/src/setup/integrations/linq/setup.js +15 -0
- package/dist/src/setup/integrations/registry.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +2 -2
- package/dist/src/setup/scaffold/create/web-template.js +74 -50
- 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 +67 -0
- package/docs/channels/meta.json +1 -0
- package/docs/channels/overview.mdx +3 -2
- package/docs/channels/teams.mdx +2 -0
- package/docs/guides/client/streaming.mdx +1 -1
- package/package.json +7 -1
package/dist/src/vue/index.js
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Linq
|
|
3
|
+
description: Connect an eve agent to iMessage and SMS through Linq.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use `linqChannel` to receive and reply to iMessage and SMS conversations through Linq.
|
|
7
|
+
|
|
8
|
+
Run `eve add channel/linq` to choose Vercel Connect or portable credentials. With Vercel Connect, eve signs you in and creates or links a Vercel project when needed. Then choose whether to create a managed Linq account and line or connect an existing Linq account with its partner API token and phone numbers. eve configures the connector and webhook through Connect:
|
|
9
|
+
|
|
10
|
+
```ts title="agent/channels/linq.ts"
|
|
11
|
+
import { connectLinqCredentials } from "@vercel/connect/eve";
|
|
12
|
+
import { linqChannel } from "eve/channels/linq";
|
|
13
|
+
|
|
14
|
+
export default linqChannel({
|
|
15
|
+
credentials: connectLinqCredentials("linq/my-agent"),
|
|
16
|
+
});
|
|
17
|
+
```
|
|
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.
|
|
20
|
+
|
|
21
|
+
Set `turnPolicy: "queue"` when every response should finish before Linq starts the next message.
|
|
22
|
+
|
|
23
|
+
Customize inbound dispatch with `onMessage`. Return `null` to ignore a message, or return `title` alongside `auth` to set the title when the dispatch starts a run:
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
export default linqChannel({
|
|
27
|
+
credentials: connectLinqCredentials("linq/my-agent"),
|
|
28
|
+
onMessage(_ctx, message) {
|
|
29
|
+
if (message.author.isBot) return null;
|
|
30
|
+
return {
|
|
31
|
+
auth: null,
|
|
32
|
+
context: [`The sender is ${message.author.fullName}.`],
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Set `route` to override the webhook path or `webhookVerifier` to use a different trusted-forwarder verifier.
|
|
39
|
+
|
|
40
|
+
## Other hosts
|
|
41
|
+
|
|
42
|
+
For a host without Vercel Connect, choose **Use portable credentials** during `eve add channel/linq`. eve writes `LINQ_API_KEY` and `LINQ_WEBHOOK_SECRET` to `.env.local`.
|
|
43
|
+
|
|
44
|
+
After deploying the agent:
|
|
45
|
+
|
|
46
|
+
1. Create a Linq webhook for your public `https://…/eve/v1/linq` URL with `message.received`, `reaction.added`, and `reaction.removed` events.
|
|
47
|
+
2. Set `LINQ_API_KEY` and `LINQ_WEBHOOK_SECRET` in the host's encrypted environment variables.
|
|
48
|
+
|
|
49
|
+
To configure the channel by hand, pass the API key and webhook signing secret:
|
|
50
|
+
|
|
51
|
+
```ts title="agent/channels/linq.ts"
|
|
52
|
+
import { linqChannel } from "eve/channels/linq";
|
|
53
|
+
|
|
54
|
+
export default linqChannel({
|
|
55
|
+
credentials: {
|
|
56
|
+
apiKey: process.env.LINQ_API_KEY!,
|
|
57
|
+
signingSecret: process.env.LINQ_WEBHOOK_SECRET!,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
For direct Linq webhooks, pass `signingSecret`. A supplied `webhookVerifier` takes precedence over it.
|
|
63
|
+
|
|
64
|
+
## What to read next
|
|
65
|
+
|
|
66
|
+
- [Channels overview](./overview): the channel contract and every built-in channel
|
|
67
|
+
- [Auth & route protection](../guides/auth-and-route-protection): authenticating inbound traffic
|
package/docs/channels/meta.json
CHANGED
|
@@ -47,7 +47,7 @@ agent/
|
|
|
47
47
|
intake.ts
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Install a channel from the registry with `eve add channel
|
|
50
|
+
Install a channel from the registry with `eve add channel/<name>`, such as `eve add channel/slack` or `eve add channel/web`. You can also author the file by hand.
|
|
51
51
|
|
|
52
52
|
## The eve HTTP channel (default)
|
|
53
53
|
|
|
@@ -73,6 +73,7 @@ eve's first-class channels use eve-owned runtimes for webhook handling, verifica
|
|
|
73
73
|
| Local tooling, SDK clients, `curl` | [eve HTTP channel](./eve) (default) |
|
|
74
74
|
| MCP clients delegating durable work | [MCP](./mcp) |
|
|
75
75
|
| Slack mentions, DMs, buttons | [Slack](./slack) |
|
|
76
|
+
| iMessage and SMS | [Linq](./linq) |
|
|
76
77
|
| iMessage | [Photon](./photon) |
|
|
77
78
|
| Discord slash commands, components | [Discord](./discord) |
|
|
78
79
|
| Microsoft Teams messages + Adaptive Cards | [Teams](./teams) |
|
|
@@ -94,7 +95,7 @@ Where an eve agent communicates with people, you may be required to disclose tha
|
|
|
94
95
|
- [eve HTTP channel](./eve): the default session API behind the TUI, SDK clients, and browser UIs
|
|
95
96
|
- [Slack](./slack): the most common platform channel, end to end
|
|
96
97
|
- [MCP](./mcp): expose the agent as a durable invocation service
|
|
97
|
-
- [Photon](./photon), [Discord](./discord), [Teams](./teams), [Telegram](./telegram), [Twilio](./twilio), [GitHub](./github), and [Linear](./linear): the other first-class platform channels
|
|
98
|
+
- [Linq](./linq), [Photon](./photon), [Discord](./discord), [Teams](./teams), [Telegram](./telegram), [Twilio](./twilio), [GitHub](./github), and [Linear](./linear): the other first-class platform channels
|
|
98
99
|
- [Chat SDK adapters](./chat-sdk): reach services eve has no first-class channel for
|
|
99
100
|
- [Custom channels](./custom): build a channel for any surface with `defineChannel`
|
|
100
101
|
- [Durable cross-channel notifications](../patterns/durable-cross-channel-notifications): post to another platform without starting an agent turn
|
package/docs/channels/teams.mdx
CHANGED
|
@@ -56,6 +56,8 @@ A human-in-the-loop (HITL) `input.requested` event renders as an Adaptive Card.
|
|
|
56
56
|
|
|
57
57
|
By default, submissions use the Teams identity of the user who clicked the card. If you customize `onMessage` for an allowlist, configure the same policy in `onInputResponse`; eve otherwise rejects HITL submissions rather than bypassing the message gate.
|
|
58
58
|
|
|
59
|
+
When a tool approval settles, eve replaces its Adaptive Card with the outcome and responder name. A response rejected by an approval policy leaves the shared card unchanged.
|
|
60
|
+
|
|
59
61
|
For invokes that aren't HITL, handle them in `onInvoke(ctx, activity)`.
|
|
60
62
|
|
|
61
63
|
### Proactive sessions
|
|
@@ -124,7 +124,7 @@ client-resolvable `http(s)` and `data:` URLs.
|
|
|
124
124
|
|
|
125
125
|
`authorization.required` is different from the normal `session.waiting` boundary. It means a connection needs OAuth or another authorization challenge before the parked turn can continue. Chat UIs should render the authorization prompt, disable ordinary text input for that session, and persist the event with the rest of the chat history.
|
|
126
126
|
|
|
127
|
-
If you support refresh while an authorization prompt is pending, keep the session cursor from the started session and rehydrate the saved events on load
|
|
127
|
+
The stream can emit an interim `session.waiting` while the authorization callback is pending. An active `send()` or `respond()` response stays attached across that parking boundary until the authorization resolves and the resumed turn reaches its next boundary. If you support refresh while an authorization prompt is pending, keep the session cursor from the started session and rehydrate the saved events on load; the callback or a structured decline resumes the same eve session.
|
|
128
128
|
|
|
129
129
|
## Reconnection
|
|
130
130
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -251,6 +251,11 @@
|
|
|
251
251
|
"import": "./dist/src/public/channels/photon/index.js",
|
|
252
252
|
"default": "./dist/src/public/channels/photon/index.js"
|
|
253
253
|
},
|
|
254
|
+
"./channels/linq": {
|
|
255
|
+
"types": "./dist/src/public/channels/linq/index.d.ts",
|
|
256
|
+
"import": "./dist/src/public/channels/linq/index.js",
|
|
257
|
+
"default": "./dist/src/public/channels/linq/index.js"
|
|
258
|
+
},
|
|
254
259
|
"./channels/github": {
|
|
255
260
|
"types": "./dist/src/public/channels/github/index.d.ts",
|
|
256
261
|
"import": "./dist/src/public/channels/github/index.js",
|
|
@@ -315,6 +320,7 @@
|
|
|
315
320
|
"@chat-adapter/state-memory": "4.34.0",
|
|
316
321
|
"@chat-adapter/twilio": "4.34.0",
|
|
317
322
|
"@clack/core": "1.3.1",
|
|
323
|
+
"@linqapp/chat-sdk-adapter": "^0.3.0",
|
|
318
324
|
"@modelcontextprotocol/server": "2.0.0",
|
|
319
325
|
"@nuxt/kit": "^4.0.0",
|
|
320
326
|
"@opentelemetry/context-async-hooks": "2.6.1",
|