@elizaos/agent 2.0.0-alpha.434 → 2.0.0-alpha.435
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/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +1 -1
- package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +8 -7
- package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +1 -1
- package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +12 -5
- package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.js +60 -31
- package/apps/app-lifeops/src/lifeops/service-mixin-whatsapp.js +23 -2
- package/apps/app-lifeops/src/lifeops/service.d.ts +9 -6
- package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
- package/apps/app-lifeops/src/routes/lifeops-routes.js +1 -1
- package/package.json +4 -4
- package/packages/agent/src/api/whatsapp-routes.d.ts.map +1 -1
- package/packages/agent/src/api/whatsapp-routes.js +75 -29
- package/packages/app-core/src/api/client-skills.d.ts +18 -4
- package/packages/app-core/src/api/client-skills.d.ts.map +1 -1
- package/packages/app-core/src/api/client-skills.js +13 -9
- package/packages/shared/src/contracts/lifeops.d.ts +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LifeOpsInboxSection.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/components/LifeOpsInboxSection.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AAmCzB,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,8BAA8B,CAAC;AA6EtC,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EACO,CAAC;AAClE,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LifeOpsInboxSection.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/components/LifeOpsInboxSection.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AAmCzB,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,8BAA8B,CAAC;AA6EtC,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EACO,CAAC;AAClE,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAc,CAAC;AA2sBtE,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,wBAA6B,2CAuWvE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Button, client, Input, openExternalUrl, Spinner,
|
|
2
|
+
import { Button, client, Input, openExternalUrl, Spinner, useApp, useMediaQuery, } from "@elizaos/app-core";
|
|
3
3
|
import { LIFEOPS_INBOX_CHANNELS, } from "@elizaos/shared";
|
|
4
4
|
import { AlarmClock, ArrowLeft, AtSign, CalendarClock, ExternalLink, MessageCircle, MessageSquare, MessageSquareReply, Phone, Search, Send, Shield, Smartphone, Sparkles, } from "lucide-react";
|
|
5
5
|
import { useCallback, useEffect, useMemo, useState, } from "react";
|
|
@@ -227,7 +227,7 @@ function ReaderPane({ threadGroup, onReply, onChat, onBack, }) {
|
|
|
227
227
|
? `${threadMessages.length} messages`
|
|
228
228
|
: message.sender.displayName }), receivedAt ? (_jsxs(_Fragment, { children: [_jsx("span", { children: "\u00B7" }), _jsx("span", { children: receivedAt })] })) : null] })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto px-5 py-4", children: _jsx("div", { className: "space-y-3", children: (threadMessages.length > 0 ? threadMessages : [message]).map((item) => {
|
|
229
229
|
const itemStyle = styleFor(item.channel);
|
|
230
|
-
return (_jsxs("article", { className: "rounded-xl border border-border/12 bg-bg/20 px-3 py-3", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-medium text-txt", children: item.sender.displayName }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1.5 text-[11px] text-muted", children: [_jsxs("span", { className: `inline-flex items-center gap-1 ${itemStyle.text}`, children: [itemStyle.icon, itemStyle.label] }), item.sender.email ? _jsx("span", { children: item.sender.email }) : null] })] }), _jsx("span", { className: "shrink-0 text-[11px] tabular-nums text-muted", children: formatAbsoluteTime(item.receivedAt) })] }), _jsx("p", { className: "mt-3 whitespace-pre-wrap text-sm leading-relaxed text-txt/85", children: item.snippet })] }, item.id));
|
|
230
|
+
return (_jsxs("article", { className: "rounded-xl border border-border/12 bg-bg/20 px-3 py-3", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-medium text-txt", children: item.sender.displayName }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1.5 text-[11px] text-muted", children: [_jsxs("span", { className: `inline-flex items-center gap-1 ${itemStyle.text}`, children: [itemStyle.icon, itemStyle.label] }), item.sender.email ? (_jsx("span", { children: item.sender.email })) : null] })] }), _jsx("span", { className: "shrink-0 text-[11px] tabular-nums text-muted", children: formatAbsoluteTime(item.receivedAt) })] }), _jsx("p", { className: "mt-3 whitespace-pre-wrap text-sm leading-relaxed text-txt/85", children: item.snippet })] }, item.id));
|
|
231
231
|
}) }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-2 border-t border-border/12 px-5 py-3", children: [_jsxs(Button, { size: "sm", className: "h-8 rounded-xl px-3 text-xs font-semibold", onClick: () => onReply(message), children: [_jsx(MessageSquareReply, { className: "mr-1.5 h-3.5 w-3.5" }), t("lifeopsInbox.reply", { defaultValue: "Reply" })] }), _jsxs(Button, { size: "sm", variant: "ghost", className: "h-8 rounded-xl px-3 text-xs font-semibold text-muted", onClick: () => onChat(message), children: [_jsx(MessageSquare, { className: "mr-1.5 h-3.5 w-3.5" }), t("common.chat", { defaultValue: "Chat" })] }), message.channel === "gmail" ? (_jsx(InboxUnsubscribeButton, { message: message })) : null, message.deepLink ? (_jsxs(Button, { size: "sm", variant: "ghost", className: "h-8 rounded-xl px-3 text-xs font-semibold text-muted", onClick: () => message.deepLink && void openExternalUrl(message.deepLink), children: [_jsx(ExternalLink, { className: "mr-1.5 h-3.5 w-3.5" }), t("lifeopsInbox.openSource", { defaultValue: "Open source" })] })) : null] })] }));
|
|
232
232
|
}
|
|
233
233
|
function InboxUnsubscribeButton({ message, }) {
|
|
@@ -237,14 +237,14 @@ function InboxUnsubscribeButton({ message, }) {
|
|
|
237
237
|
const onClick = useCallback(async () => {
|
|
238
238
|
if (!senderEmail)
|
|
239
239
|
return;
|
|
240
|
-
if (!window.confirm(`
|
|
240
|
+
if (!window.confirm(`Send an unsubscribe request to ${senderEmail}?`)) {
|
|
241
241
|
return;
|
|
242
242
|
}
|
|
243
243
|
setState("working");
|
|
244
244
|
try {
|
|
245
245
|
const result = await client.unsubscribeLifeOpsEmailSender({
|
|
246
246
|
senderEmail,
|
|
247
|
-
blockAfter:
|
|
247
|
+
blockAfter: false,
|
|
248
248
|
trashExisting: false,
|
|
249
249
|
confirmed: true,
|
|
250
250
|
});
|
|
@@ -268,7 +268,7 @@ function InboxUnsubscribeButton({ message, }) {
|
|
|
268
268
|
: state === "error"
|
|
269
269
|
? `Failed${note ? `: ${note}` : ""}`
|
|
270
270
|
: "Unsubscribe";
|
|
271
|
-
return (_jsx(Button, { size: "sm", variant: "ghost", className: "h-8 rounded-xl px-3 text-xs font-semibold text-muted", disabled: state === "working" || state === "done", onClick: () => void onClick(), title: `Send RFC 8058 one-click unsubscribe to ${senderEmail}
|
|
271
|
+
return (_jsx(Button, { size: "sm", variant: "ghost", className: "h-8 rounded-xl px-3 text-xs font-semibold text-muted", disabled: state === "working" || state === "done", onClick: () => void onClick(), title: `Send RFC 8058 one-click unsubscribe to ${senderEmail}`, children: label }));
|
|
272
272
|
}
|
|
273
273
|
function InboxListPane({ inbox, selectedMessageId, onSelect, onReply, emptyLabel, groupedMode, visibleThreadGroups, showGmailAccountSubtitles, }) {
|
|
274
274
|
const { t } = useApp();
|
|
@@ -354,8 +354,9 @@ export function LifeOpsInboxSection(props = {}) {
|
|
|
354
354
|
return map;
|
|
355
355
|
}, [inbox.threadGroups]);
|
|
356
356
|
const selectedMessage = (selectedMessageId ? messageById.get(selectedMessageId) : null) ?? null;
|
|
357
|
-
const selectedThread = (selectedMessageId
|
|
358
|
-
|
|
357
|
+
const selectedThread = (selectedMessageId
|
|
358
|
+
? threadGroupByMessageId.get(selectedMessageId)
|
|
359
|
+
: null) ?? null;
|
|
359
360
|
// Distinct Gmail accounts visible in the current feed. Only show the chip
|
|
360
361
|
// group when more than one Gmail account has produced messages.
|
|
361
362
|
const gmailAccountOptions = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWhatsAppPairing.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useWhatsAppPairing.ts"],"names":[],"mappings":"AAGA,KAAK,qBAAqB,GACtB,MAAM,GACN,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,SAAS,GACT,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useWhatsAppPairing.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useWhatsAppPairing.ts"],"names":[],"mappings":"AAGA,KAAK,qBAAqB,GACtB,MAAM,GACN,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,SAAS,GACT,OAAO,CAAC;AAkCZ,wBAAgB,kBAAkB,CAAC,SAAS,SAAY;;;;YA/B9C,qBAAqB;eAClB,MAAM,GAAG,IAAI;iBACX,MAAM,GAAG,IAAI;WACnB,MAAM,GAAG,IAAI;EA0LrB"}
|
|
@@ -9,6 +9,10 @@ const WHATSAPP_PAIRING_STATUSES = {
|
|
|
9
9
|
timeout: true,
|
|
10
10
|
error: true,
|
|
11
11
|
};
|
|
12
|
+
const LIFEOPS_WHATSAPP_PAIRING_OPTIONS = {
|
|
13
|
+
authScope: "lifeops",
|
|
14
|
+
configurePlugin: false,
|
|
15
|
+
};
|
|
12
16
|
function isWhatsAppPairingStatus(value) {
|
|
13
17
|
return typeof value === "string" && value in WHATSAPP_PAIRING_STATUSES;
|
|
14
18
|
}
|
|
@@ -25,7 +29,7 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
25
29
|
useEffect(() => {
|
|
26
30
|
let cancelled = false;
|
|
27
31
|
void client
|
|
28
|
-
.getWhatsAppStatus(accountId)
|
|
32
|
+
.getWhatsAppStatus(accountId, LIFEOPS_WHATSAPP_PAIRING_OPTIONS)
|
|
29
33
|
.then((response) => {
|
|
30
34
|
if (!cancelled && response.authExists) {
|
|
31
35
|
setState((previous) => ({
|
|
@@ -50,7 +54,9 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
50
54
|
}, [accountId]);
|
|
51
55
|
useEffect(() => {
|
|
52
56
|
const unbindQr = client.onWsEvent("whatsapp-qr", (data) => {
|
|
53
|
-
if (data.accountId !== accountId ||
|
|
57
|
+
if (data.accountId !== accountId ||
|
|
58
|
+
data.authScope !== "lifeops" ||
|
|
59
|
+
typeof data.qrDataUrl !== "string") {
|
|
54
60
|
return;
|
|
55
61
|
}
|
|
56
62
|
const qrDataUrl = data.qrDataUrl;
|
|
@@ -63,6 +69,7 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
63
69
|
});
|
|
64
70
|
const unbindStatus = client.onWsEvent("whatsapp-status", (data) => {
|
|
65
71
|
if (data.accountId !== accountId ||
|
|
72
|
+
data.authScope !== "lifeops" ||
|
|
66
73
|
!isWhatsAppPairingStatus(data.status)) {
|
|
67
74
|
return;
|
|
68
75
|
}
|
|
@@ -95,7 +102,7 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
95
102
|
error: null,
|
|
96
103
|
});
|
|
97
104
|
try {
|
|
98
|
-
const result = await client.startWhatsAppPairing(accountId);
|
|
105
|
+
const result = await client.startWhatsAppPairing(accountId, LIFEOPS_WHATSAPP_PAIRING_OPTIONS);
|
|
99
106
|
if (!result.ok) {
|
|
100
107
|
setState((previous) => ({
|
|
101
108
|
...previous,
|
|
@@ -114,7 +121,7 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
114
121
|
}, [accountId]);
|
|
115
122
|
const stopPairing = useCallback(async () => {
|
|
116
123
|
try {
|
|
117
|
-
await client.stopWhatsAppPairing(accountId);
|
|
124
|
+
await client.stopWhatsAppPairing(accountId, LIFEOPS_WHATSAPP_PAIRING_OPTIONS);
|
|
118
125
|
setState({
|
|
119
126
|
status: "idle",
|
|
120
127
|
qrDataUrl: null,
|
|
@@ -132,7 +139,7 @@ export function useWhatsAppPairing(accountId = "default") {
|
|
|
132
139
|
}, [accountId]);
|
|
133
140
|
const disconnect = useCallback(async () => {
|
|
134
141
|
try {
|
|
135
|
-
await client.disconnectWhatsApp(accountId);
|
|
142
|
+
await client.disconnectWhatsApp(accountId, LIFEOPS_WHATSAPP_PAIRING_OPTIONS);
|
|
136
143
|
setState({
|
|
137
144
|
status: "idle",
|
|
138
145
|
qrDataUrl: null,
|
|
@@ -4,7 +4,7 @@ import { createGmailFilterForSender, extractListUnsubscribeOptions, fetchGmailSu
|
|
|
4
4
|
import { resolveGoogleExecutionTarget, resolveGoogleGrants, } from "./google-connector-gateway.js";
|
|
5
5
|
import { ensureFreshGoogleAccessToken } from "./google-oauth.js";
|
|
6
6
|
import { fail, normalizeOptionalBoolean, normalizeOptionalString, requireNonEmptyString, } from "./service-normalize.js";
|
|
7
|
-
import { hasGoogleGmailManageCapability, hasGoogleGmailTriageCapability, } from "./service-normalize-calendar.js";
|
|
7
|
+
import { hasGoogleGmailManageCapability, hasGoogleGmailSendCapability, hasGoogleGmailTriageCapability, } from "./service-normalize-calendar.js";
|
|
8
8
|
const DEFAULT_SCAN_MAX_MESSAGES = 200;
|
|
9
9
|
const MAX_SENDERS_RETURNED = 200;
|
|
10
10
|
const MAX_SAMPLE_SUBJECTS = 5;
|
|
@@ -108,13 +108,6 @@ function managedGoogleGrantId(grant) {
|
|
|
108
108
|
/** @internal */
|
|
109
109
|
export function withEmailUnsubscribe(Base) {
|
|
110
110
|
class LifeOpsEmailUnsubscribeMixin extends Base {
|
|
111
|
-
async requireGmailManageGrant(args) {
|
|
112
|
-
const grant = await this.requireGoogleGmailGrant(args.requestUrl, args.mode, args.side, args.grantId);
|
|
113
|
-
if (!hasGoogleGmailManageCapability(grant)) {
|
|
114
|
-
fail(403, "Gmail auto-unsubscribe requires gmail.modify + gmail.settings.basic access. Reconnect Google and grant the 'Manage subscriptions' capability.");
|
|
115
|
-
}
|
|
116
|
-
return grant;
|
|
117
|
-
}
|
|
118
111
|
async accessTokenForGrant(grant) {
|
|
119
112
|
if (resolveGoogleExecutionTarget(grant) === "cloud") {
|
|
120
113
|
fail(409, "Gmail unsubscribe management is not available for cloud-managed Google connections yet. Reconnect Google in local mode to manage filters and unsubscribe mail.");
|
|
@@ -123,6 +116,40 @@ export function withEmailUnsubscribe(Base) {
|
|
|
123
116
|
const token = await ensureFreshGoogleAccessToken(tokenRef);
|
|
124
117
|
return token.accessToken;
|
|
125
118
|
}
|
|
119
|
+
async readSubscriptionHeadersForGrant(args) {
|
|
120
|
+
if (resolveGoogleExecutionTarget(args.grant) === "cloud") {
|
|
121
|
+
return (await this.googleManagedClient.getGmailSubscriptionHeaders({
|
|
122
|
+
side: args.grant.side,
|
|
123
|
+
grantId: managedGoogleGrantId(args.grant),
|
|
124
|
+
query: args.query,
|
|
125
|
+
maxResults: args.maxMessages,
|
|
126
|
+
})).headers;
|
|
127
|
+
}
|
|
128
|
+
return fetchGmailSubscriptionHeaders({
|
|
129
|
+
accessToken: await this.accessTokenForGrant(args.grant),
|
|
130
|
+
query: args.query,
|
|
131
|
+
maxMessages: args.maxMessages,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async sendMailtoForGrant(args) {
|
|
135
|
+
if (!hasGoogleGmailSendCapability(args.grant)) {
|
|
136
|
+
fail(403, "Mailto unsubscribe requires Gmail send access.");
|
|
137
|
+
}
|
|
138
|
+
if (resolveGoogleExecutionTarget(args.grant) === "cloud") {
|
|
139
|
+
await this.googleManagedClient.sendGmailMessage({
|
|
140
|
+
side: args.grant.side,
|
|
141
|
+
grantId: managedGoogleGrantId(args.grant),
|
|
142
|
+
to: [args.mailto.recipient],
|
|
143
|
+
subject: args.mailto.subject ?? "unsubscribe",
|
|
144
|
+
bodyText: args.mailto.body ?? "unsubscribe",
|
|
145
|
+
});
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
await sendMailtoUnsubscribeEmail({
|
|
149
|
+
accessToken: await this.accessTokenForGrant(args.grant),
|
|
150
|
+
mailto: args.mailto,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
126
153
|
async scanEmailSubscriptions(requestUrl, request = {}) {
|
|
127
154
|
const query = normalizeOptionalString(request.query) ??
|
|
128
155
|
"(category:promotions OR category:updates OR list:* OR unsubscribe) newer_than:180d";
|
|
@@ -138,18 +165,11 @@ export function withEmailUnsubscribe(Base) {
|
|
|
138
165
|
}
|
|
139
166
|
const results = await Promise.allSettled(grants.map(async (grant) => ({
|
|
140
167
|
grant,
|
|
141
|
-
headers:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
maxResults: maxMessages,
|
|
147
|
-
})).headers
|
|
148
|
-
: await fetchGmailSubscriptionHeaders({
|
|
149
|
-
accessToken: await this.accessTokenForGrant(grant),
|
|
150
|
-
query,
|
|
151
|
-
maxMessages,
|
|
152
|
-
}),
|
|
168
|
+
headers: await this.readSubscriptionHeadersForGrant({
|
|
169
|
+
grant,
|
|
170
|
+
query,
|
|
171
|
+
maxMessages,
|
|
172
|
+
}),
|
|
153
173
|
})));
|
|
154
174
|
const headers = [];
|
|
155
175
|
let successfulScans = 0;
|
|
@@ -195,13 +215,12 @@ export function withEmailUnsubscribe(Base) {
|
|
|
195
215
|
if (!confirmed) {
|
|
196
216
|
fail(409, "Email unsubscribe requires explicit confirmation.");
|
|
197
217
|
}
|
|
198
|
-
const blockAfter = normalizeOptionalBoolean(request.blockAfter, "blockAfter") ??
|
|
218
|
+
const blockAfter = normalizeOptionalBoolean(request.blockAfter, "blockAfter") ?? false;
|
|
199
219
|
const trashExisting = normalizeOptionalBoolean(request.trashExisting, "trashExisting") ??
|
|
200
220
|
false;
|
|
201
|
-
const grant = await this.
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
accessToken,
|
|
221
|
+
const grant = await this.requireGoogleGmailGrant(requestUrl, undefined, undefined, undefined);
|
|
222
|
+
const headers = await this.readSubscriptionHeadersForGrant({
|
|
223
|
+
grant,
|
|
205
224
|
query: `from:${senderEmail}`,
|
|
206
225
|
maxMessages: 25,
|
|
207
226
|
});
|
|
@@ -245,10 +264,7 @@ export function withEmailUnsubscribe(Base) {
|
|
|
245
264
|
}
|
|
246
265
|
else {
|
|
247
266
|
try {
|
|
248
|
-
await
|
|
249
|
-
accessToken,
|
|
250
|
-
mailto: parsed,
|
|
251
|
-
});
|
|
267
|
+
await this.sendMailtoForGrant({ grant, mailto: parsed });
|
|
252
268
|
status = "succeeded";
|
|
253
269
|
method = "mailto";
|
|
254
270
|
}
|
|
@@ -267,11 +283,14 @@ export function withEmailUnsubscribe(Base) {
|
|
|
267
283
|
}
|
|
268
284
|
let filterCreated = false;
|
|
269
285
|
let filterId = null;
|
|
286
|
+
const canManageGmail = resolveGoogleExecutionTarget(grant) !== "cloud" &&
|
|
287
|
+
hasGoogleGmailManageCapability(grant);
|
|
270
288
|
if (blockAfter &&
|
|
289
|
+
canManageGmail &&
|
|
271
290
|
(status === "succeeded" || status === "manual_required")) {
|
|
272
291
|
try {
|
|
273
292
|
const filterResult = await createGmailFilterForSender({
|
|
274
|
-
accessToken,
|
|
293
|
+
accessToken: await this.accessTokenForGrant(grant),
|
|
275
294
|
fromAddress: senderEmail,
|
|
276
295
|
trash: true,
|
|
277
296
|
});
|
|
@@ -282,8 +301,18 @@ export function withEmailUnsubscribe(Base) {
|
|
|
282
301
|
this.logLifeOpsWarn("email_unsubscribe_filter", `Filter creation failed for ${senderEmail}: ${error instanceof Error ? error.message : String(error)}`);
|
|
283
302
|
}
|
|
284
303
|
}
|
|
304
|
+
else if (blockAfter && !canManageGmail) {
|
|
305
|
+
this.logLifeOpsWarn("email_unsubscribe_filter", "Skipped Gmail filter creation because the connected Google grant does not include local Gmail manage access.", {
|
|
306
|
+
grantId: grant.id,
|
|
307
|
+
mode: grant.mode,
|
|
308
|
+
side: grant.side,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
285
311
|
let threadsTrashed = 0;
|
|
286
|
-
if (trashExisting &&
|
|
312
|
+
if (trashExisting &&
|
|
313
|
+
canManageGmail &&
|
|
314
|
+
(status === "succeeded" || filterCreated)) {
|
|
315
|
+
const accessToken = await this.accessTokenForGrant(grant);
|
|
287
316
|
const uniqueThreadIds = Array.from(new Set(sender.allThreadIds));
|
|
288
317
|
for (const threadId of uniqueThreadIds) {
|
|
289
318
|
try {
|
|
@@ -1,17 +1,38 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveDefaultAgentWorkspaceDir } from "@elizaos/agent/providers/workspace";
|
|
4
|
+
import { whatsappAuthExists } from "@elizaos/agent/services/whatsapp-pairing";
|
|
1
5
|
import { fail } from "./service-normalize.js";
|
|
2
6
|
import { drainWhatsAppInboundBuffer, parseAndBufferWhatsAppWebhookMessages, peekWhatsAppInboundBuffer, readWhatsAppCredentialsFromEnv, sendWhatsAppMessage as sendWhatsAppMessageRequest, WhatsAppError, } from "./whatsapp-client.js";
|
|
7
|
+
function hasLocalWhatsAppPairingAuth() {
|
|
8
|
+
const workspaceDir = resolveDefaultAgentWorkspaceDir();
|
|
9
|
+
return (fs.existsSync(path.join(workspaceDir, "lifeops-whatsapp-auth", "default", "creds.json")) || whatsappAuthExists(workspaceDir, "default"));
|
|
10
|
+
}
|
|
3
11
|
/** @internal */
|
|
4
12
|
export function withWhatsApp(Base) {
|
|
5
13
|
class LifeOpsWhatsAppServiceMixin extends Base {
|
|
6
14
|
async getWhatsAppConnectorStatus() {
|
|
7
15
|
const creds = readWhatsAppCredentialsFromEnv();
|
|
8
|
-
|
|
16
|
+
const hasCloudCredentials = creds !== null;
|
|
17
|
+
const hasLocalAuth = hasLocalWhatsAppPairingAuth();
|
|
18
|
+
const status = {
|
|
9
19
|
provider: "whatsapp",
|
|
10
|
-
connected:
|
|
20
|
+
connected: hasCloudCredentials || hasLocalAuth,
|
|
11
21
|
inbound: true,
|
|
12
22
|
...(creds?.phoneNumberId ? { phoneNumberId: creds.phoneNumberId } : {}),
|
|
13
23
|
lastCheckedAt: new Date().toISOString(),
|
|
14
24
|
};
|
|
25
|
+
if (!hasCloudCredentials && hasLocalAuth) {
|
|
26
|
+
status.degradations = [
|
|
27
|
+
{
|
|
28
|
+
axis: "delivery-degraded",
|
|
29
|
+
code: "business_cloud_credentials_missing",
|
|
30
|
+
message: "WhatsApp is paired locally. Outbound Cloud API sends still require ELIZA_WHATSAPP_ACCESS_TOKEN and ELIZA_WHATSAPP_PHONE_NUMBER_ID.",
|
|
31
|
+
retryable: true,
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
return status;
|
|
15
36
|
}
|
|
16
37
|
async sendWhatsAppMessage(req) {
|
|
17
38
|
const creds = readWhatsAppCredentialsFromEnv();
|
|
@@ -1070,13 +1070,16 @@ declare const LIFEOPS_COMPOSED: {
|
|
|
1070
1070
|
};
|
|
1071
1071
|
} & {
|
|
1072
1072
|
new (...args: any[]): {
|
|
1073
|
-
requireGmailManageGrant(args: {
|
|
1074
|
-
requestUrl: URL;
|
|
1075
|
-
mode?: import("@elizaos/shared").LifeOpsConnectorMode;
|
|
1076
|
-
side?: import("@elizaos/shared").LifeOpsConnectorSide;
|
|
1077
|
-
grantId?: string;
|
|
1078
|
-
}): Promise<import("@elizaos/shared").LifeOpsConnectorGrant>;
|
|
1079
1073
|
accessTokenForGrant(grant: import("@elizaos/shared").LifeOpsConnectorGrant): Promise<string>;
|
|
1074
|
+
readSubscriptionHeadersForGrant(args: {
|
|
1075
|
+
grant: import("@elizaos/shared").LifeOpsConnectorGrant;
|
|
1076
|
+
query: string;
|
|
1077
|
+
maxMessages: number;
|
|
1078
|
+
}): Promise<import("./email-unsubscribe-gmail.js").GmailSubscriptionMessageHeaders[]>;
|
|
1079
|
+
sendMailtoForGrant(args: {
|
|
1080
|
+
grant: import("@elizaos/shared").LifeOpsConnectorGrant;
|
|
1081
|
+
mailto: NonNullable<ReturnType<typeof import("./email-unsubscribe-gmail.js").parseMailtoUnsubscribe>>;
|
|
1082
|
+
}): Promise<void>;
|
|
1080
1083
|
scanEmailSubscriptions(requestUrl: URL, request?: import("./email-unsubscribe-types.js").EmailUnsubscribeScanRequest): Promise<import("./email-unsubscribe-types.js").EmailSubscriptionScanResult>;
|
|
1081
1084
|
unsubscribeEmailSender(requestUrl: URL, request: import("./email-unsubscribe-types.js").EmailUnsubscribeRequest): Promise<import("./email-unsubscribe-types.js").EmailUnsubscribeResult>;
|
|
1082
1085
|
listEmailUnsubscribes(limit?: number): Promise<import("./email-unsubscribe-types.js").EmailUnsubscribeRecord[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAkB7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,2BAA2B,CAAC;AAgDnC,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA3DqB,CAAC;iBAClC,CAAC;mBAA8C,CAAC;eACnD,CAAA
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAkB7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,2BAA2B,CAAC;AAgDnC,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA3DqB,CAAC;iBAClC,CAAC;mBAA8C,CAAC;eACnD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uuBA2DN,CAAC;AAEF,cAAM,sBAAuB,SAAQ,gBAAgB;CAAG;AAExD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,sBAAsB;CAAG"}
|
|
@@ -1953,7 +1953,7 @@ export async function handleLifeOpsRoutes(ctx) {
|
|
|
1953
1953
|
const requestUrl = ctx.url;
|
|
1954
1954
|
const result = await service.unsubscribeEmailSender(requestUrl, {
|
|
1955
1955
|
senderEmail: body.senderEmail,
|
|
1956
|
-
blockAfter: body.blockAfter ??
|
|
1956
|
+
blockAfter: body.blockAfter ?? false,
|
|
1957
1957
|
trashExisting: body.trashExisting ?? false,
|
|
1958
1958
|
confirmed: body.confirmed ?? false,
|
|
1959
1959
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/agent",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.435",
|
|
4
4
|
"description": "Standalone elizaOS-based agent and backend server package.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -467,7 +467,7 @@
|
|
|
467
467
|
"@elizaos/app-steward": "^0.0.0",
|
|
468
468
|
"@elizaos/app-task-coordinator": "^0.0.0",
|
|
469
469
|
"@elizaos/app-training": "^0.0.1",
|
|
470
|
-
"@elizaos/core": "^2.0.0-alpha.
|
|
470
|
+
"@elizaos/core": "^2.0.0-alpha.435",
|
|
471
471
|
"@elizaos/plugin-agent-orchestrator": "^0.6.2-alpha.0",
|
|
472
472
|
"@elizaos/plugin-browser-bridge": "^0.1.0",
|
|
473
473
|
"@elizaos/plugin-local-embedding": "^2.0.0-alpha.12",
|
|
@@ -476,8 +476,8 @@
|
|
|
476
476
|
"@elizaos/plugin-solana": "^2.0.0-alpha.6",
|
|
477
477
|
"@elizaos/plugin-sql": "^2.0.0-alpha.19",
|
|
478
478
|
"@elizaos/plugin-wechat": "^0.1.0",
|
|
479
|
-
"@elizaos/shared": "^2.0.0-alpha.
|
|
480
|
-
"@elizaos/skills": "^2.0.0-alpha.
|
|
479
|
+
"@elizaos/shared": "^2.0.0-alpha.435",
|
|
480
|
+
"@elizaos/skills": "^2.0.0-alpha.435",
|
|
481
481
|
"@hapi/boom": "^10.0.1",
|
|
482
482
|
"@noble/curves": "^2.0.1",
|
|
483
483
|
"@solana/web3.js": "^1.98.4",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/whatsapp-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAI5E,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE5D,MAAM,WAAW,0BAA0B;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC;IACF,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KAC1C,CAAC;IACF,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzE,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,4BAA4B,EAAE,CAAC,OAAO,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;KACpD,KAAK,0BAA0B,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"whatsapp-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/whatsapp-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAI5E,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE5D,MAAM,WAAW,0BAA0B;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC;IACF,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KAC1C,CAAC;IACF,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzE,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,4BAA4B,EAAE,CAAC,OAAO,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;KACpD,KAAK,0BAA0B,CAAC;CAClC;AAWD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAyDvC,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,OAAO,CAAC,CAuSlB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IACP,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,EAAE,EACH,YAAY,EAAE,MAAM,GACnB,IAAI,CAmBN"}
|
|
@@ -11,6 +11,24 @@ async function readJsonBody(req, res) {
|
|
|
11
11
|
function json(res, data, status = 200) {
|
|
12
12
|
sendJson(res, data, status);
|
|
13
13
|
}
|
|
14
|
+
function shouldConfigurePlugin(body) {
|
|
15
|
+
return body?.configurePlugin !== false;
|
|
16
|
+
}
|
|
17
|
+
function resolveAuthScope(value) {
|
|
18
|
+
return value === "lifeops" ? "lifeops" : "platform";
|
|
19
|
+
}
|
|
20
|
+
function resolveSessionKey(authScope, accountId) {
|
|
21
|
+
return `${authScope}:${accountId}`;
|
|
22
|
+
}
|
|
23
|
+
function resolveAuthDir(workspaceDir, accountId, authScope) {
|
|
24
|
+
return path.join(workspaceDir, authScope === "lifeops" ? "lifeops-whatsapp-auth" : "whatsapp-auth", accountId);
|
|
25
|
+
}
|
|
26
|
+
function authExistsForScope(state, deps, accountId, authScope) {
|
|
27
|
+
if (authScope === "platform") {
|
|
28
|
+
return deps.whatsappAuthExists(state.workspaceDir, accountId);
|
|
29
|
+
}
|
|
30
|
+
return fs.existsSync(path.join(resolveAuthDir(state.workspaceDir, accountId, authScope), "creds.json"));
|
|
31
|
+
}
|
|
14
32
|
export async function handleWhatsAppRoute(req, res, pathname, method, state, deps) {
|
|
15
33
|
if (!pathname.startsWith("/api/whatsapp"))
|
|
16
34
|
return false;
|
|
@@ -52,6 +70,8 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
52
70
|
}
|
|
53
71
|
if (method === "POST" && pathname === "/api/whatsapp/pair") {
|
|
54
72
|
const body = await readJsonBody(req, res);
|
|
73
|
+
const authScope = resolveAuthScope(body?.authScope);
|
|
74
|
+
const configurePlugin = authScope === "platform" && shouldConfigurePlugin(body);
|
|
55
75
|
let accountId;
|
|
56
76
|
try {
|
|
57
77
|
accountId = deps.sanitizeAccountId(body && typeof body.accountId === "string" && body.accountId.trim()
|
|
@@ -62,7 +82,8 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
62
82
|
json(res, { error: err.message }, 400);
|
|
63
83
|
return true;
|
|
64
84
|
}
|
|
65
|
-
const
|
|
85
|
+
const sessionKey = resolveSessionKey(authScope, accountId);
|
|
86
|
+
const isReplacing = state.whatsappPairingSessions.has(sessionKey);
|
|
66
87
|
if (!isReplacing &&
|
|
67
88
|
state.whatsappPairingSessions.size >= MAX_PAIRING_SESSIONS) {
|
|
68
89
|
json(res, {
|
|
@@ -70,27 +91,34 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
70
91
|
}, 429);
|
|
71
92
|
return true;
|
|
72
93
|
}
|
|
73
|
-
const authDir =
|
|
74
|
-
state.whatsappPairingSessions.get(
|
|
94
|
+
const authDir = resolveAuthDir(state.workspaceDir, accountId, authScope);
|
|
95
|
+
state.whatsappPairingSessions.get(sessionKey)?.stop();
|
|
75
96
|
const session = deps.createWhatsAppPairingSession({
|
|
76
97
|
authDir,
|
|
77
98
|
accountId,
|
|
78
99
|
onEvent: (event) => {
|
|
79
|
-
state.broadcastWs?.({ ...event });
|
|
100
|
+
state.broadcastWs?.({ ...event, authScope });
|
|
80
101
|
if (event.status === "connected") {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
102
|
+
let configChanged = false;
|
|
103
|
+
if (configurePlugin) {
|
|
104
|
+
if (!state.config.connectors)
|
|
105
|
+
state.config.connectors = {};
|
|
106
|
+
state.config.connectors.whatsapp = {
|
|
107
|
+
...(state.config.connectors.whatsapp ?? {}),
|
|
108
|
+
authDir,
|
|
109
|
+
enabled: true,
|
|
110
|
+
};
|
|
111
|
+
configChanged = true;
|
|
112
|
+
}
|
|
89
113
|
const phoneNumber = event.phoneNumber;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
114
|
+
configChanged =
|
|
115
|
+
setOwnerContact(state.config, {
|
|
116
|
+
source: "whatsapp",
|
|
117
|
+
channelId: phoneNumber ?? undefined,
|
|
118
|
+
}) || configChanged;
|
|
119
|
+
if (!configChanged) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
94
122
|
try {
|
|
95
123
|
state.saveConfig();
|
|
96
124
|
}
|
|
@@ -100,10 +128,15 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
100
128
|
}
|
|
101
129
|
},
|
|
102
130
|
});
|
|
103
|
-
state.whatsappPairingSessions.set(
|
|
131
|
+
state.whatsappPairingSessions.set(sessionKey, session);
|
|
104
132
|
try {
|
|
105
133
|
await session.start();
|
|
106
|
-
json(res, {
|
|
134
|
+
json(res, {
|
|
135
|
+
ok: true,
|
|
136
|
+
accountId,
|
|
137
|
+
authScope,
|
|
138
|
+
status: session.getStatus(),
|
|
139
|
+
});
|
|
107
140
|
}
|
|
108
141
|
catch (err) {
|
|
109
142
|
json(res, { ok: false, error: String(err) }, 500);
|
|
@@ -120,7 +153,9 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
120
153
|
json(res, { error: err.message }, 400);
|
|
121
154
|
return true;
|
|
122
155
|
}
|
|
123
|
-
const
|
|
156
|
+
const authScope = resolveAuthScope(url.searchParams.get("authScope"));
|
|
157
|
+
const sessionKey = resolveSessionKey(authScope, accountId);
|
|
158
|
+
const session = state.whatsappPairingSessions.get(sessionKey);
|
|
124
159
|
let serviceConnected = false;
|
|
125
160
|
let servicePhone = null;
|
|
126
161
|
if (state.runtime) {
|
|
@@ -137,8 +172,9 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
137
172
|
}
|
|
138
173
|
json(res, {
|
|
139
174
|
accountId,
|
|
175
|
+
authScope,
|
|
140
176
|
status: session?.getStatus() ?? "idle",
|
|
141
|
-
authExists:
|
|
177
|
+
authExists: authExistsForScope(state, deps, accountId, authScope),
|
|
142
178
|
serviceConnected,
|
|
143
179
|
servicePhone,
|
|
144
180
|
});
|
|
@@ -146,6 +182,7 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
146
182
|
}
|
|
147
183
|
if (method === "POST" && pathname === "/api/whatsapp/pair/stop") {
|
|
148
184
|
const body = await readJsonBody(req, res);
|
|
185
|
+
const authScope = resolveAuthScope(body?.authScope);
|
|
149
186
|
let accountId;
|
|
150
187
|
try {
|
|
151
188
|
accountId = deps.sanitizeAccountId(body && typeof body.accountId === "string" && body.accountId.trim()
|
|
@@ -156,16 +193,19 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
156
193
|
json(res, { error: err.message }, 400);
|
|
157
194
|
return true;
|
|
158
195
|
}
|
|
159
|
-
const
|
|
196
|
+
const sessionKey = resolveSessionKey(authScope, accountId);
|
|
197
|
+
const session = state.whatsappPairingSessions.get(sessionKey);
|
|
160
198
|
if (session) {
|
|
161
199
|
session.stop();
|
|
162
|
-
state.whatsappPairingSessions.delete(
|
|
200
|
+
state.whatsappPairingSessions.delete(sessionKey);
|
|
163
201
|
}
|
|
164
|
-
json(res, { ok: true, accountId, status: "idle" });
|
|
202
|
+
json(res, { ok: true, accountId, authScope, status: "idle" });
|
|
165
203
|
return true;
|
|
166
204
|
}
|
|
167
205
|
if (method === "POST" && pathname === "/api/whatsapp/disconnect") {
|
|
168
206
|
const body = await readJsonBody(req, res);
|
|
207
|
+
const authScope = resolveAuthScope(body?.authScope);
|
|
208
|
+
const configurePlugin = authScope === "platform" && shouldConfigurePlugin(body);
|
|
169
209
|
let accountId;
|
|
170
210
|
try {
|
|
171
211
|
accountId = deps.sanitizeAccountId(body && typeof body.accountId === "string" && body.accountId.trim()
|
|
@@ -176,20 +216,26 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
176
216
|
json(res, { error: err.message }, 400);
|
|
177
217
|
return true;
|
|
178
218
|
}
|
|
179
|
-
const
|
|
219
|
+
const sessionKey = resolveSessionKey(authScope, accountId);
|
|
220
|
+
const session = state.whatsappPairingSessions.get(sessionKey);
|
|
180
221
|
if (session) {
|
|
181
222
|
session.stop();
|
|
182
|
-
state.whatsappPairingSessions.delete(
|
|
223
|
+
state.whatsappPairingSessions.delete(sessionKey);
|
|
183
224
|
}
|
|
225
|
+
const authDir = resolveAuthDir(state.workspaceDir, accountId, authScope);
|
|
184
226
|
try {
|
|
185
|
-
|
|
227
|
+
if (authScope === "platform") {
|
|
228
|
+
await deps.whatsappLogout(state.workspaceDir, accountId);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
fs.rmSync(authDir, { recursive: true, force: true });
|
|
232
|
+
}
|
|
186
233
|
}
|
|
187
234
|
catch (logoutErr) {
|
|
188
235
|
logger.warn({
|
|
189
236
|
accountId,
|
|
190
237
|
error: logoutErr instanceof Error ? logoutErr.message : String(logoutErr),
|
|
191
238
|
}, "[whatsapp] Logout failed, deleting auth files directly");
|
|
192
|
-
const authDir = path.join(state.workspaceDir, "whatsapp-auth", accountId);
|
|
193
239
|
try {
|
|
194
240
|
fs.rmSync(authDir, { recursive: true, force: true });
|
|
195
241
|
}
|
|
@@ -197,7 +243,7 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
197
243
|
/* may not exist */
|
|
198
244
|
}
|
|
199
245
|
}
|
|
200
|
-
if (state.config.connectors) {
|
|
246
|
+
if (configurePlugin && state.config.connectors) {
|
|
201
247
|
delete state.config.connectors.whatsapp;
|
|
202
248
|
try {
|
|
203
249
|
state.saveConfig();
|
|
@@ -206,7 +252,7 @@ export async function handleWhatsAppRoute(req, res, pathname, method, state, dep
|
|
|
206
252
|
/* test envs */
|
|
207
253
|
}
|
|
208
254
|
}
|
|
209
|
-
json(res, { ok: true, accountId });
|
|
255
|
+
json(res, { ok: true, accountId, authScope });
|
|
210
256
|
return true;
|
|
211
257
|
}
|
|
212
258
|
return false;
|
|
@@ -194,27 +194,41 @@ declare module "./client-base" {
|
|
|
194
194
|
ok: boolean;
|
|
195
195
|
generated: Record<string, unknown>;
|
|
196
196
|
}>;
|
|
197
|
-
getWhatsAppStatus(accountId?: string
|
|
197
|
+
getWhatsAppStatus(accountId?: string, options?: {
|
|
198
|
+
authScope?: "platform" | "lifeops";
|
|
199
|
+
}): Promise<{
|
|
198
200
|
accountId: string;
|
|
201
|
+
authScope?: "platform" | "lifeops";
|
|
199
202
|
status: string;
|
|
200
203
|
authExists: boolean;
|
|
201
204
|
serviceConnected: boolean;
|
|
202
205
|
servicePhone: string | null;
|
|
203
206
|
}>;
|
|
204
|
-
startWhatsAppPairing(accountId?: string
|
|
207
|
+
startWhatsAppPairing(accountId?: string, options?: {
|
|
208
|
+
configurePlugin?: boolean;
|
|
209
|
+
authScope?: "platform" | "lifeops";
|
|
210
|
+
}): Promise<{
|
|
205
211
|
ok: boolean;
|
|
206
212
|
accountId: string;
|
|
213
|
+
authScope?: "platform" | "lifeops";
|
|
207
214
|
status: string;
|
|
208
215
|
error?: string;
|
|
209
216
|
}>;
|
|
210
|
-
stopWhatsAppPairing(accountId?: string
|
|
217
|
+
stopWhatsAppPairing(accountId?: string, options?: {
|
|
218
|
+
authScope?: "platform" | "lifeops";
|
|
219
|
+
}): Promise<{
|
|
211
220
|
ok: boolean;
|
|
212
221
|
accountId: string;
|
|
222
|
+
authScope?: "platform" | "lifeops";
|
|
213
223
|
status: string;
|
|
214
224
|
}>;
|
|
215
|
-
disconnectWhatsApp(accountId?: string
|
|
225
|
+
disconnectWhatsApp(accountId?: string, options?: {
|
|
226
|
+
configurePlugin?: boolean;
|
|
227
|
+
authScope?: "platform" | "lifeops";
|
|
228
|
+
}): Promise<{
|
|
216
229
|
ok: boolean;
|
|
217
230
|
accountId: string;
|
|
231
|
+
authScope?: "platform" | "lifeops";
|
|
218
232
|
}>;
|
|
219
233
|
getSignalStatus(accountId?: string): Promise<{
|
|
220
234
|
accountId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-skills.d.ts","sourceRoot":"","sources":["../../../../../../app-core/src/api/client-skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client-skills.d.ts","sourceRoot":"","sources":["../../../../../../app-core/src/api/client-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -323,25 +323,29 @@ ElizaClient.prototype.generateCustomAction = async function (prompt) {
|
|
|
323
323
|
body: JSON.stringify({ prompt }),
|
|
324
324
|
});
|
|
325
325
|
};
|
|
326
|
-
ElizaClient.prototype.getWhatsAppStatus = async function (accountId = "default") {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
326
|
+
ElizaClient.prototype.getWhatsAppStatus = async function (accountId = "default", options = {}) {
|
|
327
|
+
const params = new URLSearchParams({ accountId });
|
|
328
|
+
if (options.authScope) {
|
|
329
|
+
params.set("authScope", options.authScope);
|
|
330
|
+
}
|
|
331
|
+
return this.fetch(`/api/whatsapp/status?${params.toString()}`);
|
|
332
|
+
};
|
|
333
|
+
ElizaClient.prototype.startWhatsAppPairing = async function (accountId = "default", options = {}) {
|
|
330
334
|
return this.fetch("/api/whatsapp/pair", {
|
|
331
335
|
method: "POST",
|
|
332
|
-
body: JSON.stringify({ accountId }),
|
|
336
|
+
body: JSON.stringify({ ...options, accountId }),
|
|
333
337
|
});
|
|
334
338
|
};
|
|
335
|
-
ElizaClient.prototype.stopWhatsAppPairing = async function (accountId = "default") {
|
|
339
|
+
ElizaClient.prototype.stopWhatsAppPairing = async function (accountId = "default", options = {}) {
|
|
336
340
|
return this.fetch("/api/whatsapp/pair/stop", {
|
|
337
341
|
method: "POST",
|
|
338
|
-
body: JSON.stringify({ accountId }),
|
|
342
|
+
body: JSON.stringify({ ...options, accountId }),
|
|
339
343
|
});
|
|
340
344
|
};
|
|
341
|
-
ElizaClient.prototype.disconnectWhatsApp = async function (accountId = "default") {
|
|
345
|
+
ElizaClient.prototype.disconnectWhatsApp = async function (accountId = "default", options = {}) {
|
|
342
346
|
return this.fetch("/api/whatsapp/disconnect", {
|
|
343
347
|
method: "POST",
|
|
344
|
-
body: JSON.stringify({ accountId }),
|
|
348
|
+
body: JSON.stringify({ ...options, accountId }),
|
|
345
349
|
});
|
|
346
350
|
};
|
|
347
351
|
ElizaClient.prototype.getSignalStatus = async function (accountId = "default") {
|
|
@@ -1880,11 +1880,11 @@ export type LifeOpsTelegramAuthState = (typeof LIFEOPS_TELEGRAM_AUTH_STATES)[num
|
|
|
1880
1880
|
export interface LifeOpsWhatsAppConnectorStatus {
|
|
1881
1881
|
provider: "whatsapp";
|
|
1882
1882
|
/**
|
|
1883
|
-
* `connected` here means LifeOps
|
|
1884
|
-
*
|
|
1885
|
-
*
|
|
1886
|
-
*
|
|
1887
|
-
* catch errors from the actual send/receive methods.
|
|
1883
|
+
* `connected` here means LifeOps can see either WhatsApp Business Cloud API
|
|
1884
|
+
* credentials or a local QR-paired auth state. It does not imply a live
|
|
1885
|
+
* network probe has been performed. A live send can still fail if the
|
|
1886
|
+
* upstream token/session has been revoked. Callers that need true liveness
|
|
1887
|
+
* must catch errors from the actual send/receive methods.
|
|
1888
1888
|
*/
|
|
1889
1889
|
connected: boolean;
|
|
1890
1890
|
/**
|