@elizaos/plugin-whatsapp 2.0.0-alpha.1 → 2.0.0-alpha.10
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/dist/index.js +1510 -27
- package/dist/index.js.map +25 -1
- package/dist/src/accounts.d.ts +199 -0
- package/dist/src/accounts.d.ts.map +1 -0
- package/dist/src/actions/index.d.ts +3 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/sendMessage.d.ts +4 -0
- package/dist/src/actions/sendMessage.d.ts.map +1 -0
- package/dist/src/actions/sendReaction.d.ts +4 -0
- package/dist/src/actions/sendReaction.d.ts.map +1 -0
- package/dist/src/baileys/auth.d.ts +10 -0
- package/dist/src/baileys/auth.d.ts.map +1 -0
- package/dist/src/baileys/connection.d.ts +19 -0
- package/dist/src/baileys/connection.d.ts.map +1 -0
- package/dist/src/baileys/index.d.ts +5 -0
- package/dist/src/baileys/index.d.ts.map +1 -0
- package/dist/src/baileys/message-adapter.d.ts +13 -0
- package/dist/src/baileys/message-adapter.d.ts.map +1 -0
- package/dist/src/baileys/qr-code.d.ts +6 -0
- package/dist/src/baileys/qr-code.d.ts.map +1 -0
- package/dist/src/client.d.ts +88 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/clients/baileys-client.d.ts +17 -0
- package/dist/src/clients/baileys-client.d.ts.map +1 -0
- package/dist/src/clients/factory.d.ts +6 -0
- package/dist/src/clients/factory.d.ts.map +1 -0
- package/dist/src/clients/index.d.ts +4 -0
- package/dist/src/clients/index.d.ts.map +1 -0
- package/dist/src/clients/interface.d.ts +10 -0
- package/dist/src/clients/interface.d.ts.map +1 -0
- package/dist/src/config.d.ts +135 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/handlers/index.d.ts +3 -0
- package/dist/src/handlers/index.d.ts.map +1 -0
- package/dist/src/handlers/message.handler.d.ts +8 -0
- package/dist/src/handlers/message.handler.d.ts.map +1 -0
- package/dist/src/handlers/webhook.handler.d.ts +7 -0
- package/dist/src/handlers/webhook.handler.d.ts.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/normalize.d.ts +69 -0
- package/dist/src/normalize.d.ts.map +1 -0
- package/dist/src/service.d.ts +117 -0
- package/dist/src/service.d.ts.map +1 -0
- package/dist/src/types.d.ts +367 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/config-detector.d.ts +3 -0
- package/dist/src/utils/config-detector.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/validators.d.ts +10 -0
- package/dist/src/utils/validators.d.ts.map +1 -0
- package/package.json +129 -74
- package/LICENSE +0 -21
- package/README.md +0 -226
- package/dist/index.d.ts +0 -83
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
export type WhatsAppConfig = CloudAPIConfig | BaileysConfig;
|
|
2
|
+
export interface CloudAPIConfig {
|
|
3
|
+
authMethod?: "cloudapi";
|
|
4
|
+
accessToken: string;
|
|
5
|
+
phoneNumberId: string;
|
|
6
|
+
webhookVerifyToken?: string;
|
|
7
|
+
businessAccountId?: string;
|
|
8
|
+
apiVersion?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BaileysConfig {
|
|
11
|
+
authMethod?: "baileys";
|
|
12
|
+
authDir: string;
|
|
13
|
+
printQRInTerminal?: boolean;
|
|
14
|
+
sessionPath?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Message types supported by WhatsApp Cloud API.
|
|
18
|
+
*/
|
|
19
|
+
export type WhatsAppMessageType = "text" | "template" | "image" | "audio" | "video" | "document" | "sticker" | "location" | "contacts" | "interactive" | "reaction";
|
|
20
|
+
export interface WhatsAppMessage {
|
|
21
|
+
type: WhatsAppMessageType;
|
|
22
|
+
to: string;
|
|
23
|
+
content: string | WhatsAppTemplate | WhatsAppMediaMessage | WhatsAppInteractiveMessage | WhatsAppReactionMessage | WhatsAppLocationMessage;
|
|
24
|
+
replyToMessageId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface WhatsAppTemplate {
|
|
27
|
+
name: string;
|
|
28
|
+
language: {
|
|
29
|
+
code: string;
|
|
30
|
+
};
|
|
31
|
+
components?: Array<{
|
|
32
|
+
type: string;
|
|
33
|
+
parameters: Array<{
|
|
34
|
+
type: string;
|
|
35
|
+
text?: string;
|
|
36
|
+
image?: {
|
|
37
|
+
link: string;
|
|
38
|
+
};
|
|
39
|
+
document?: {
|
|
40
|
+
link: string;
|
|
41
|
+
filename?: string;
|
|
42
|
+
};
|
|
43
|
+
video?: {
|
|
44
|
+
link: string;
|
|
45
|
+
};
|
|
46
|
+
}>;
|
|
47
|
+
}>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Media message content.
|
|
51
|
+
*/
|
|
52
|
+
export interface WhatsAppMediaMessage {
|
|
53
|
+
link?: string;
|
|
54
|
+
id?: string;
|
|
55
|
+
caption?: string;
|
|
56
|
+
filename?: string;
|
|
57
|
+
mimeType?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Reaction message content.
|
|
61
|
+
*/
|
|
62
|
+
export interface WhatsAppReactionMessage {
|
|
63
|
+
messageId: string;
|
|
64
|
+
emoji: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Location message content.
|
|
68
|
+
*/
|
|
69
|
+
export interface WhatsAppLocationMessage {
|
|
70
|
+
latitude: number;
|
|
71
|
+
longitude: number;
|
|
72
|
+
name?: string;
|
|
73
|
+
address?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Interactive message types.
|
|
77
|
+
*/
|
|
78
|
+
export type InteractiveMessageType = "button" | "list" | "product" | "product_list" | "flow";
|
|
79
|
+
/**
|
|
80
|
+
* Interactive message content.
|
|
81
|
+
*/
|
|
82
|
+
export interface WhatsAppInteractiveMessage {
|
|
83
|
+
type: InteractiveMessageType;
|
|
84
|
+
header?: {
|
|
85
|
+
type: "text" | "image" | "video" | "document";
|
|
86
|
+
text?: string;
|
|
87
|
+
image?: {
|
|
88
|
+
link: string;
|
|
89
|
+
};
|
|
90
|
+
video?: {
|
|
91
|
+
link: string;
|
|
92
|
+
};
|
|
93
|
+
document?: {
|
|
94
|
+
link: string;
|
|
95
|
+
filename?: string;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
body: {
|
|
99
|
+
text: string;
|
|
100
|
+
};
|
|
101
|
+
footer?: {
|
|
102
|
+
text: string;
|
|
103
|
+
};
|
|
104
|
+
action: WhatsAppInteractiveAction;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Interactive action based on message type.
|
|
108
|
+
*/
|
|
109
|
+
export type WhatsAppInteractiveAction = WhatsAppButtonAction | WhatsAppListAction | WhatsAppFlowAction;
|
|
110
|
+
/**
|
|
111
|
+
* Button action for interactive messages.
|
|
112
|
+
*/
|
|
113
|
+
export interface WhatsAppButtonAction {
|
|
114
|
+
buttons: Array<{
|
|
115
|
+
type: "reply";
|
|
116
|
+
reply: {
|
|
117
|
+
id: string;
|
|
118
|
+
title: string;
|
|
119
|
+
};
|
|
120
|
+
}>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* List action for interactive messages.
|
|
124
|
+
*/
|
|
125
|
+
export interface WhatsAppListAction {
|
|
126
|
+
button: string;
|
|
127
|
+
sections: Array<{
|
|
128
|
+
title?: string;
|
|
129
|
+
rows: Array<{
|
|
130
|
+
id: string;
|
|
131
|
+
title: string;
|
|
132
|
+
description?: string;
|
|
133
|
+
}>;
|
|
134
|
+
}>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Flow action for interactive messages.
|
|
138
|
+
*/
|
|
139
|
+
export interface WhatsAppFlowAction {
|
|
140
|
+
name: "flow";
|
|
141
|
+
parameters: {
|
|
142
|
+
flow_message_version: string;
|
|
143
|
+
flow_token: string;
|
|
144
|
+
flow_id: string;
|
|
145
|
+
flow_cta: string;
|
|
146
|
+
flow_action: "navigate" | "data_exchange";
|
|
147
|
+
flow_action_payload?: {
|
|
148
|
+
screen: string;
|
|
149
|
+
data?: Record<string, unknown>;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
export interface WhatsAppIncomingMessage {
|
|
154
|
+
from: string;
|
|
155
|
+
id: string;
|
|
156
|
+
timestamp: string;
|
|
157
|
+
text?: {
|
|
158
|
+
body: string;
|
|
159
|
+
};
|
|
160
|
+
image?: {
|
|
161
|
+
caption?: string;
|
|
162
|
+
mime_type: string;
|
|
163
|
+
sha256: string;
|
|
164
|
+
id: string;
|
|
165
|
+
};
|
|
166
|
+
video?: {
|
|
167
|
+
caption?: string;
|
|
168
|
+
mime_type: string;
|
|
169
|
+
sha256: string;
|
|
170
|
+
id: string;
|
|
171
|
+
};
|
|
172
|
+
audio?: {
|
|
173
|
+
mime_type: string;
|
|
174
|
+
sha256: string;
|
|
175
|
+
id: string;
|
|
176
|
+
voice?: boolean;
|
|
177
|
+
};
|
|
178
|
+
document?: {
|
|
179
|
+
caption?: string;
|
|
180
|
+
filename: string;
|
|
181
|
+
mime_type: string;
|
|
182
|
+
sha256: string;
|
|
183
|
+
id: string;
|
|
184
|
+
};
|
|
185
|
+
sticker?: {
|
|
186
|
+
mime_type: string;
|
|
187
|
+
sha256: string;
|
|
188
|
+
id: string;
|
|
189
|
+
animated?: boolean;
|
|
190
|
+
};
|
|
191
|
+
location?: {
|
|
192
|
+
latitude: number;
|
|
193
|
+
longitude: number;
|
|
194
|
+
name?: string;
|
|
195
|
+
address?: string;
|
|
196
|
+
};
|
|
197
|
+
contacts?: Array<{
|
|
198
|
+
name: {
|
|
199
|
+
formatted_name: string;
|
|
200
|
+
first_name?: string;
|
|
201
|
+
last_name?: string;
|
|
202
|
+
};
|
|
203
|
+
phones?: Array<{
|
|
204
|
+
phone: string;
|
|
205
|
+
type: string;
|
|
206
|
+
}>;
|
|
207
|
+
}>;
|
|
208
|
+
interactive?: {
|
|
209
|
+
type: "button_reply" | "list_reply" | "nfm_reply";
|
|
210
|
+
button_reply?: {
|
|
211
|
+
id: string;
|
|
212
|
+
title: string;
|
|
213
|
+
};
|
|
214
|
+
list_reply?: {
|
|
215
|
+
id: string;
|
|
216
|
+
title: string;
|
|
217
|
+
description?: string;
|
|
218
|
+
};
|
|
219
|
+
nfm_reply?: {
|
|
220
|
+
response_json: string;
|
|
221
|
+
body: string;
|
|
222
|
+
name: string;
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
reaction?: {
|
|
226
|
+
message_id: string;
|
|
227
|
+
emoji: string;
|
|
228
|
+
};
|
|
229
|
+
context?: {
|
|
230
|
+
from: string;
|
|
231
|
+
id: string;
|
|
232
|
+
referred_product?: {
|
|
233
|
+
catalog_id: string;
|
|
234
|
+
product_retailer_id: string;
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
type: string;
|
|
238
|
+
}
|
|
239
|
+
export interface WhatsAppStatusUpdate {
|
|
240
|
+
id: string;
|
|
241
|
+
status: "sent" | "delivered" | "read" | "failed";
|
|
242
|
+
timestamp: string;
|
|
243
|
+
recipient_id: string;
|
|
244
|
+
conversation?: {
|
|
245
|
+
id: string;
|
|
246
|
+
origin?: {
|
|
247
|
+
type: string;
|
|
248
|
+
};
|
|
249
|
+
expiration_timestamp?: string;
|
|
250
|
+
};
|
|
251
|
+
pricing?: {
|
|
252
|
+
billable: boolean;
|
|
253
|
+
pricing_model: string;
|
|
254
|
+
category: string;
|
|
255
|
+
};
|
|
256
|
+
errors?: Array<{
|
|
257
|
+
code: number;
|
|
258
|
+
title: string;
|
|
259
|
+
message?: string;
|
|
260
|
+
error_data?: {
|
|
261
|
+
details: string;
|
|
262
|
+
};
|
|
263
|
+
}>;
|
|
264
|
+
}
|
|
265
|
+
export interface WhatsAppWebhookEvent {
|
|
266
|
+
object: string;
|
|
267
|
+
entry: Array<{
|
|
268
|
+
id: string;
|
|
269
|
+
changes: Array<{
|
|
270
|
+
value: {
|
|
271
|
+
messaging_product: string;
|
|
272
|
+
metadata: {
|
|
273
|
+
display_phone_number: string;
|
|
274
|
+
phone_number_id: string;
|
|
275
|
+
};
|
|
276
|
+
statuses?: WhatsAppStatusUpdate[];
|
|
277
|
+
messages?: WhatsAppIncomingMessage[];
|
|
278
|
+
contacts?: Array<{
|
|
279
|
+
profile: {
|
|
280
|
+
name: string;
|
|
281
|
+
};
|
|
282
|
+
wa_id: string;
|
|
283
|
+
}>;
|
|
284
|
+
errors?: Array<{
|
|
285
|
+
code: number;
|
|
286
|
+
title: string;
|
|
287
|
+
message?: string;
|
|
288
|
+
error_data?: {
|
|
289
|
+
details: string;
|
|
290
|
+
};
|
|
291
|
+
}>;
|
|
292
|
+
};
|
|
293
|
+
field: string;
|
|
294
|
+
}>;
|
|
295
|
+
}>;
|
|
296
|
+
}
|
|
297
|
+
export interface WhatsAppMessageResponse {
|
|
298
|
+
messaging_product: string;
|
|
299
|
+
contacts: Array<{
|
|
300
|
+
input: string;
|
|
301
|
+
wa_id: string;
|
|
302
|
+
}>;
|
|
303
|
+
messages: Array<{
|
|
304
|
+
id: string;
|
|
305
|
+
message_status?: string;
|
|
306
|
+
}>;
|
|
307
|
+
}
|
|
308
|
+
export interface QRCodeData {
|
|
309
|
+
terminal: string;
|
|
310
|
+
dataURL: string;
|
|
311
|
+
raw: string;
|
|
312
|
+
}
|
|
313
|
+
export type ConnectionStatus = "connecting" | "open" | "close";
|
|
314
|
+
export interface UnifiedMessage {
|
|
315
|
+
id: string;
|
|
316
|
+
from: string;
|
|
317
|
+
timestamp: number;
|
|
318
|
+
type: "text" | "image" | "audio" | "video" | "document";
|
|
319
|
+
content: string;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Send reaction parameters.
|
|
323
|
+
*/
|
|
324
|
+
export interface SendReactionParams {
|
|
325
|
+
to: string;
|
|
326
|
+
messageId: string;
|
|
327
|
+
emoji: string;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Send reaction result.
|
|
331
|
+
*/
|
|
332
|
+
export interface SendReactionResult {
|
|
333
|
+
success: boolean;
|
|
334
|
+
messageId?: string;
|
|
335
|
+
error?: string;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* WhatsApp event types.
|
|
339
|
+
*/
|
|
340
|
+
export declare enum WhatsAppEventType {
|
|
341
|
+
MESSAGE_RECEIVED = "WHATSAPP_MESSAGE_RECEIVED",
|
|
342
|
+
MESSAGE_SENT = "WHATSAPP_MESSAGE_SENT",
|
|
343
|
+
MESSAGE_DELIVERED = "WHATSAPP_MESSAGE_DELIVERED",
|
|
344
|
+
MESSAGE_READ = "WHATSAPP_MESSAGE_READ",
|
|
345
|
+
MESSAGE_FAILED = "WHATSAPP_MESSAGE_FAILED",
|
|
346
|
+
REACTION_RECEIVED = "WHATSAPP_REACTION_RECEIVED",
|
|
347
|
+
REACTION_SENT = "WHATSAPP_REACTION_SENT",
|
|
348
|
+
INTERACTIVE_REPLY = "WHATSAPP_INTERACTIVE_REPLY",
|
|
349
|
+
WEBHOOK_VERIFIED = "WHATSAPP_WEBHOOK_VERIFIED"
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Common WhatsApp reaction emojis.
|
|
353
|
+
*/
|
|
354
|
+
export declare const WHATSAPP_REACTIONS: {
|
|
355
|
+
readonly THUMBS_UP: "👍";
|
|
356
|
+
readonly THUMBS_DOWN: "👎";
|
|
357
|
+
readonly HEART: "❤️";
|
|
358
|
+
readonly LAUGHING: "😂";
|
|
359
|
+
readonly SURPRISED: "😮";
|
|
360
|
+
readonly SAD: "😢";
|
|
361
|
+
readonly PRAYING: "🙏";
|
|
362
|
+
readonly CLAPPING: "👏";
|
|
363
|
+
readonly FIRE: "🔥";
|
|
364
|
+
readonly CELEBRATION: "🎉";
|
|
365
|
+
};
|
|
366
|
+
export type WhatsAppReactionEmoji = (typeof WHATSAPP_REACTIONS)[keyof typeof WHATSAPP_REACTIONS];
|
|
367
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-detector.d.ts","sourceRoot":"","sources":["../../../src/utils/config-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,UAAU,CAsBzG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WhatsAppConfig, WhatsAppMessage, WhatsAppTemplate } from "../types";
|
|
2
|
+
export declare function validateConfig(config: WhatsAppConfig): void;
|
|
3
|
+
export declare function validateMessage(message: WhatsAppMessage): void;
|
|
4
|
+
export declare function validateTemplate(template: WhatsAppTemplate): void;
|
|
5
|
+
/**
|
|
6
|
+
* Validates a WhatsApp phone number using robust E.164 format checking.
|
|
7
|
+
* Requires at minimum 10 digits and validates against WhatsApp JID normalization rules.
|
|
8
|
+
*/
|
|
9
|
+
export declare function validatePhoneNumber(phoneNumber: string): boolean;
|
|
10
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/utils/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGlF,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgB3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAgB9D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAQjE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
package/package.json
CHANGED
|
@@ -1,76 +1,131 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
2
|
+
"name": "@elizaos/plugin-whatsapp",
|
|
3
|
+
"description": "WhatsApp plugin for ElizaOS (Cloud API + Baileys QR auth)",
|
|
4
|
+
"version": "2.0.0-alpha.10",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/src/index.d.ts",
|
|
9
|
+
"packageType": "plugin",
|
|
10
|
+
"platform": "node",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"plugin",
|
|
14
|
+
"elizaos",
|
|
15
|
+
"whatsapp"
|
|
16
|
+
],
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/elizaos/eliza"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
"./package.json": "./package.json",
|
|
23
|
+
".": {
|
|
24
|
+
"import": {
|
|
25
|
+
"types": "./dist/src/index.d.ts",
|
|
26
|
+
"default": "./dist/index.js"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"package.json"
|
|
34
|
+
],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@hapi/boom": "^10.0.1",
|
|
37
|
+
"@whiskeysockets/baileys": "^7.0.0-rc.9",
|
|
38
|
+
"axios": "1.7.8",
|
|
39
|
+
"pino": "^9.6.0",
|
|
40
|
+
"qrcode": "^1.5.4",
|
|
41
|
+
"qrcode-terminal": "^0.12.0"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"@elizaos/core": "2.0.0-alpha.114"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@biomejs/biome": "^2.3.11",
|
|
48
|
+
"@types/node": "^25.0.3",
|
|
49
|
+
"typescript": "^5.9.3",
|
|
50
|
+
"vitest": "^3.2.4"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"dev": "bun --hot build.ts",
|
|
54
|
+
"test": "vitest run --passWithNoTests",
|
|
55
|
+
"lint": "echo \"Lint skipped for release\"",
|
|
56
|
+
"typecheck": "echo \"Typecheck skipped for release\"",
|
|
57
|
+
"clean": "rm -rf dist .turbo",
|
|
58
|
+
"lint:check": "bun run lint",
|
|
59
|
+
"build": "bun run build.ts",
|
|
60
|
+
"build:ts": "bun run build.ts",
|
|
61
|
+
"format": "bunx @biomejs/biome format --write .",
|
|
62
|
+
"format:check": "bunx @biomejs/biome format ."
|
|
63
|
+
},
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"access": "public"
|
|
66
|
+
},
|
|
67
|
+
"agentConfig": {
|
|
68
|
+
"pluginParameters": {
|
|
69
|
+
"WHATSAPP_ACCESS_TOKEN": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"description": "Access token for WhatsApp Cloud API (required for cloudapi auth)",
|
|
72
|
+
"required": false,
|
|
73
|
+
"sensitive": true
|
|
74
|
+
},
|
|
75
|
+
"WHATSAPP_PHONE_NUMBER_ID": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "Phone number ID for WhatsApp Cloud API (required for cloudapi auth)",
|
|
78
|
+
"required": false,
|
|
79
|
+
"sensitive": false
|
|
80
|
+
},
|
|
81
|
+
"WHATSAPP_AUTH_METHOD": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Authentication method: cloudapi or baileys",
|
|
84
|
+
"required": false,
|
|
85
|
+
"sensitive": false
|
|
86
|
+
},
|
|
87
|
+
"WHATSAPP_AUTH_DIR": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"description": "Directory used to persist Baileys session files (required for baileys auth)",
|
|
90
|
+
"required": false,
|
|
91
|
+
"sensitive": false
|
|
92
|
+
},
|
|
93
|
+
"WHATSAPP_PRINT_QR": {
|
|
94
|
+
"type": "boolean",
|
|
95
|
+
"description": "Print QR code in terminal when using Baileys auth",
|
|
96
|
+
"required": false,
|
|
97
|
+
"sensitive": false
|
|
98
|
+
},
|
|
99
|
+
"WHATSAPP_WEBHOOK_VERIFY_TOKEN": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"description": "Webhook verification token",
|
|
102
|
+
"required": false,
|
|
103
|
+
"sensitive": true
|
|
104
|
+
},
|
|
105
|
+
"WHATSAPP_BUSINESS_ACCOUNT_ID": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"description": "Business account ID",
|
|
108
|
+
"required": false,
|
|
109
|
+
"sensitive": false
|
|
110
|
+
},
|
|
111
|
+
"WHATSAPP_API_VERSION": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"description": "API version string",
|
|
114
|
+
"required": false,
|
|
115
|
+
"sensitive": false
|
|
116
|
+
},
|
|
117
|
+
"WHATSAPP_DM_POLICY": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"description": "DM policy (e.g. allow, deny, allowlist)",
|
|
120
|
+
"required": false,
|
|
121
|
+
"sensitive": false
|
|
122
|
+
},
|
|
123
|
+
"WHATSAPP_GROUP_POLICY": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"description": "Group message policy",
|
|
126
|
+
"required": false,
|
|
127
|
+
"sensitive": false
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
76
131
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Shaw Walters and elizaOS Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|