whazaa 0.6.10 → 0.6.11
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/desktop-db.d.ts +69 -0
- package/dist/desktop-db.d.ts.map +1 -0
- package/dist/desktop-db.js +169 -0
- package/dist/desktop-db.js.map +1 -0
- package/dist/index.js +228 -10
- package/dist/index.js.map +1 -1
- package/dist/ipc-client.d.ts +42 -2
- package/dist/ipc-client.d.ts.map +1 -1
- package/dist/ipc-client.js +35 -4
- package/dist/ipc-client.js.map +1 -1
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +567 -13
- package/dist/watch.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* desktop-db.ts — Read WhatsApp Desktop macOS SQLite database
|
|
3
|
+
*
|
|
4
|
+
* The WhatsApp Desktop app stores all chat data in:
|
|
5
|
+
* ~/Library/Group Containers/group.net.whatsapp.WhatsApp.shared/ChatStorage.sqlite
|
|
6
|
+
*
|
|
7
|
+
* Key tables:
|
|
8
|
+
* ZWACHATSESSION — chat list (inbox)
|
|
9
|
+
* ZWAMESSAGE — individual messages
|
|
10
|
+
*
|
|
11
|
+
* Timestamps: WhatsApp Desktop uses Apple Core Data timestamps (seconds since
|
|
12
|
+
* 2001-01-01). Add APPLE_EPOCH_OFFSET to convert to Unix epoch (seconds since
|
|
13
|
+
* 1970-01-01).
|
|
14
|
+
*
|
|
15
|
+
* This module is OPTIONAL: all functions return null/empty when the DB is not
|
|
16
|
+
* present (non-macOS platforms, or Desktop app not installed).
|
|
17
|
+
*
|
|
18
|
+
* The DB is ALWAYS opened readonly — we never write to WhatsApp's DB.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if the WhatsApp Desktop SQLite database exists on this system.
|
|
22
|
+
* On non-macOS platforms this will always return false.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isDesktopDbAvailable(): boolean;
|
|
25
|
+
export interface DesktopChat {
|
|
26
|
+
jid: string;
|
|
27
|
+
name: string;
|
|
28
|
+
lastMessageText: string | null;
|
|
29
|
+
lastMessageDate: string;
|
|
30
|
+
unreadCount: number;
|
|
31
|
+
archived: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* List chats from the WhatsApp Desktop SQLite database, sorted by last
|
|
35
|
+
* message time descending (most recent first).
|
|
36
|
+
*
|
|
37
|
+
* Returns null if the database is not available.
|
|
38
|
+
* Returns an empty array if the DB is available but has no matching chats.
|
|
39
|
+
*
|
|
40
|
+
* @param search Optional case-insensitive filter on partner name or JID.
|
|
41
|
+
* @param limit Maximum number of chats to return (default 50).
|
|
42
|
+
*/
|
|
43
|
+
export declare function listChats(search?: string, limit?: number): DesktopChat[] | null;
|
|
44
|
+
export interface DesktopMessage {
|
|
45
|
+
id: string;
|
|
46
|
+
fromMe: boolean;
|
|
47
|
+
timestamp: number;
|
|
48
|
+
date: string;
|
|
49
|
+
text: string;
|
|
50
|
+
fromJid: string | null;
|
|
51
|
+
toJid: string | null;
|
|
52
|
+
pushName: string | null;
|
|
53
|
+
type: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Fetch messages for a specific chat JID from the WhatsApp Desktop SQLite DB.
|
|
57
|
+
*
|
|
58
|
+
* Returns null if the database is not available.
|
|
59
|
+
* Returns an empty array if the chat is not found in the DB.
|
|
60
|
+
*
|
|
61
|
+
* Messages are returned in chronological order (oldest first).
|
|
62
|
+
*
|
|
63
|
+
* @param jid Full WhatsApp JID (e.g. "41796074745@s.whatsapp.net").
|
|
64
|
+
* Also accepts phone numbers like "+41796074745" — normalised
|
|
65
|
+
* internally.
|
|
66
|
+
* @param limit Maximum number of messages to return (default 50).
|
|
67
|
+
*/
|
|
68
|
+
export declare function getMessages(jid: string, limit?: number): DesktopMessage[] | null;
|
|
69
|
+
//# sourceMappingURL=desktop-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-db.d.ts","sourceRoot":"","sources":["../src/desktop-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA0BH;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,IAAI,CAiD/E;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,IAAI,CA2DhF"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* desktop-db.ts — Read WhatsApp Desktop macOS SQLite database
|
|
3
|
+
*
|
|
4
|
+
* The WhatsApp Desktop app stores all chat data in:
|
|
5
|
+
* ~/Library/Group Containers/group.net.whatsapp.WhatsApp.shared/ChatStorage.sqlite
|
|
6
|
+
*
|
|
7
|
+
* Key tables:
|
|
8
|
+
* ZWACHATSESSION — chat list (inbox)
|
|
9
|
+
* ZWAMESSAGE — individual messages
|
|
10
|
+
*
|
|
11
|
+
* Timestamps: WhatsApp Desktop uses Apple Core Data timestamps (seconds since
|
|
12
|
+
* 2001-01-01). Add APPLE_EPOCH_OFFSET to convert to Unix epoch (seconds since
|
|
13
|
+
* 1970-01-01).
|
|
14
|
+
*
|
|
15
|
+
* This module is OPTIONAL: all functions return null/empty when the DB is not
|
|
16
|
+
* present (non-macOS platforms, or Desktop app not installed).
|
|
17
|
+
*
|
|
18
|
+
* The DB is ALWAYS opened readonly — we never write to WhatsApp's DB.
|
|
19
|
+
*/
|
|
20
|
+
import Database from "better-sqlite3";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { homedir } from "node:os";
|
|
23
|
+
import { existsSync } from "node:fs";
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Constants
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
const DESKTOP_DB_PATH = join(homedir(), "Library", "Group Containers", "group.net.whatsapp.WhatsApp.shared", "ChatStorage.sqlite");
|
|
28
|
+
/** Seconds between Unix epoch (1970-01-01) and Apple Core Data epoch (2001-01-01) */
|
|
29
|
+
const APPLE_EPOCH_OFFSET = 978307200;
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Public API
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Returns true if the WhatsApp Desktop SQLite database exists on this system.
|
|
35
|
+
* On non-macOS platforms this will always return false.
|
|
36
|
+
*/
|
|
37
|
+
export function isDesktopDbAvailable() {
|
|
38
|
+
return existsSync(DESKTOP_DB_PATH);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* List chats from the WhatsApp Desktop SQLite database, sorted by last
|
|
42
|
+
* message time descending (most recent first).
|
|
43
|
+
*
|
|
44
|
+
* Returns null if the database is not available.
|
|
45
|
+
* Returns an empty array if the DB is available but has no matching chats.
|
|
46
|
+
*
|
|
47
|
+
* @param search Optional case-insensitive filter on partner name or JID.
|
|
48
|
+
* @param limit Maximum number of chats to return (default 50).
|
|
49
|
+
*/
|
|
50
|
+
export function listChats(search, limit) {
|
|
51
|
+
if (!isDesktopDbAvailable())
|
|
52
|
+
return null;
|
|
53
|
+
const db = new Database(DESKTOP_DB_PATH, { readonly: true });
|
|
54
|
+
try {
|
|
55
|
+
let query = `
|
|
56
|
+
SELECT
|
|
57
|
+
ZCONTACTJID AS jid,
|
|
58
|
+
ZPARTNERNAME AS name,
|
|
59
|
+
ZLASTMESSAGETEXT AS lastText,
|
|
60
|
+
ZLASTMESSAGEDATE AS lastDate,
|
|
61
|
+
ZUNREADCOUNT AS unread,
|
|
62
|
+
ZARCHIVED AS archived
|
|
63
|
+
FROM ZWACHATSESSION
|
|
64
|
+
WHERE ZREMOVED = 0 AND ZHIDDEN = 0
|
|
65
|
+
`;
|
|
66
|
+
const params = [];
|
|
67
|
+
if (search) {
|
|
68
|
+
query += ` AND (LOWER(ZPARTNERNAME) LIKE LOWER(?) OR ZCONTACTJID LIKE ?)`;
|
|
69
|
+
params.push(`%${search}%`, `%${search}%`);
|
|
70
|
+
}
|
|
71
|
+
query += ` ORDER BY ZLASTMESSAGEDATE DESC LIMIT ?`;
|
|
72
|
+
params.push(limit ?? 50);
|
|
73
|
+
const rows = db.prepare(query).all(...params);
|
|
74
|
+
return rows.map((r) => ({
|
|
75
|
+
jid: r.jid ?? "",
|
|
76
|
+
name: r.name ?? r.jid ?? "",
|
|
77
|
+
lastMessageText: r.lastText ?? null,
|
|
78
|
+
lastMessageDate: r.lastDate != null
|
|
79
|
+
? new Date((r.lastDate + APPLE_EPOCH_OFFSET) * 1000).toISOString()
|
|
80
|
+
: "",
|
|
81
|
+
unreadCount: r.unread ?? 0,
|
|
82
|
+
archived: r.archived === 1,
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
db.close();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Fetch messages for a specific chat JID from the WhatsApp Desktop SQLite DB.
|
|
91
|
+
*
|
|
92
|
+
* Returns null if the database is not available.
|
|
93
|
+
* Returns an empty array if the chat is not found in the DB.
|
|
94
|
+
*
|
|
95
|
+
* Messages are returned in chronological order (oldest first).
|
|
96
|
+
*
|
|
97
|
+
* @param jid Full WhatsApp JID (e.g. "41796074745@s.whatsapp.net").
|
|
98
|
+
* Also accepts phone numbers like "+41796074745" — normalised
|
|
99
|
+
* internally.
|
|
100
|
+
* @param limit Maximum number of messages to return (default 50).
|
|
101
|
+
*/
|
|
102
|
+
export function getMessages(jid, limit) {
|
|
103
|
+
if (!isDesktopDbAvailable())
|
|
104
|
+
return null;
|
|
105
|
+
const db = new Database(DESKTOP_DB_PATH, { readonly: true });
|
|
106
|
+
try {
|
|
107
|
+
// Normalise the JID — strip leading + and append @s.whatsapp.net if bare
|
|
108
|
+
const normalised = normaliseJid(jid);
|
|
109
|
+
// Find the chat session primary key for this JID
|
|
110
|
+
const session = db.prepare("SELECT Z_PK FROM ZWACHATSESSION WHERE ZCONTACTJID = ?").get(normalised);
|
|
111
|
+
if (!session)
|
|
112
|
+
return [];
|
|
113
|
+
const rows = db.prepare(`
|
|
114
|
+
SELECT
|
|
115
|
+
ZSTANZAID AS id,
|
|
116
|
+
ZISFROMME AS fromMe,
|
|
117
|
+
ZMESSAGEDATE AS msgDate,
|
|
118
|
+
ZTEXT AS text,
|
|
119
|
+
ZFROMJID AS fromJid,
|
|
120
|
+
ZTOJID AS toJid,
|
|
121
|
+
ZPUSHNAME AS pushName,
|
|
122
|
+
ZMESSAGETYPE AS msgType
|
|
123
|
+
FROM ZWAMESSAGE
|
|
124
|
+
WHERE ZCHATSESSION = ?
|
|
125
|
+
ORDER BY ZMESSAGEDATE DESC
|
|
126
|
+
LIMIT ?
|
|
127
|
+
`).all(session.Z_PK, limit ?? 50);
|
|
128
|
+
return rows
|
|
129
|
+
.map((r) => {
|
|
130
|
+
const ts = r.msgDate != null ? r.msgDate + APPLE_EPOCH_OFFSET : 0;
|
|
131
|
+
return {
|
|
132
|
+
id: r.id ?? "",
|
|
133
|
+
fromMe: r.fromMe === 1,
|
|
134
|
+
timestamp: ts,
|
|
135
|
+
date: ts > 0 ? new Date(ts * 1000).toISOString() : "",
|
|
136
|
+
text: r.text ?? "[non-text message]",
|
|
137
|
+
fromJid: r.fromJid ?? null,
|
|
138
|
+
toJid: r.toJid ?? null,
|
|
139
|
+
pushName: r.pushName ?? null,
|
|
140
|
+
type: r.msgType === 0 ? "text" : (r.text ? "text" : "other"),
|
|
141
|
+
};
|
|
142
|
+
})
|
|
143
|
+
.reverse(); // Chronological order (oldest first)
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
db.close();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// Internal helpers
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Normalise a phone number or WhatsApp JID to the full JID form used by the
|
|
154
|
+
* Desktop DB (e.g. "41796074745@s.whatsapp.net").
|
|
155
|
+
*
|
|
156
|
+
* Handles:
|
|
157
|
+
* "+41796074745" -> "41796074745@s.whatsapp.net"
|
|
158
|
+
* "41796074745" -> "41796074745@s.whatsapp.net"
|
|
159
|
+
* "41796074745@s.whatsapp.net" -> unchanged (pass-through)
|
|
160
|
+
* "123456789@g.us" -> unchanged (group JID, pass-through)
|
|
161
|
+
*/
|
|
162
|
+
function normaliseJid(input) {
|
|
163
|
+
const trimmed = input.trim();
|
|
164
|
+
if (trimmed.includes("@"))
|
|
165
|
+
return trimmed;
|
|
166
|
+
const digits = trimmed.replace(/^\+/, "").replace(/[\s\-().]/g, "");
|
|
167
|
+
return `${digits}@s.whatsapp.net`;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=desktop-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-db.js","sourceRoot":"","sources":["../src/desktop-db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ import { initialize, triggerLogin, waitForConnection, waitForLogout, waitForQR,
|
|
|
33
33
|
import { resolveAuthDir, enableSetupMode, cleanupQR, suppressQRDisplay, unsuppressQRDisplay } from "./auth.js";
|
|
34
34
|
import { watch } from "./watch.js";
|
|
35
35
|
import { WatcherClient } from "./ipc-client.js";
|
|
36
|
+
import { listChats, getMessages } from "./desktop-db.js";
|
|
36
37
|
// ---------------------------------------------------------------------------
|
|
37
38
|
// Setup wizard
|
|
38
39
|
// ---------------------------------------------------------------------------
|
|
@@ -218,19 +219,27 @@ server.tool("whatsapp_status", "Check the Whazaa connection state and the WhatsA
|
|
|
218
219
|
// Tool: whatsapp_send
|
|
219
220
|
// ---------------------------------------------------------------------------
|
|
220
221
|
server.tool("whatsapp_send", [
|
|
221
|
-
"Send a
|
|
222
|
+
"Send a WhatsApp message.",
|
|
223
|
+
"Without a recipient, sends to your own self-chat (same as before).",
|
|
224
|
+
"With a recipient, sends to any contact or group.",
|
|
225
|
+
"Recipient can be a phone number with country code (e.g. '+41764502698'),",
|
|
226
|
+
"a WhatsApp JID (e.g. '41764502698@s.whatsapp.net'), or a contact name.",
|
|
222
227
|
"Supports basic Markdown: **bold**, *italic*, `code`.",
|
|
223
|
-
"The message appears in your own WhatsApp chat with yourself.",
|
|
224
228
|
].join(" "), {
|
|
225
229
|
message: z
|
|
226
230
|
.string()
|
|
227
231
|
.min(1)
|
|
228
|
-
.describe("The message text to send
|
|
229
|
-
|
|
232
|
+
.describe("The message text to send"),
|
|
233
|
+
recipient: z
|
|
234
|
+
.string()
|
|
235
|
+
.optional()
|
|
236
|
+
.describe("Optional recipient: phone number (e.g. '+41764502698'), WhatsApp JID, or contact name. Omit to send to self-chat."),
|
|
237
|
+
}, async ({ message, recipient }) => {
|
|
230
238
|
try {
|
|
231
|
-
const result = await watcher.send(message);
|
|
239
|
+
const result = await watcher.send(message, recipient);
|
|
240
|
+
const dest = result.targetJid ?? "self-chat";
|
|
232
241
|
return {
|
|
233
|
-
content: [{ type: "text", text: `Sent: ${result.preview}` }],
|
|
242
|
+
content: [{ type: "text", text: `Sent to ${dest}: ${result.preview}` }],
|
|
234
243
|
};
|
|
235
244
|
}
|
|
236
245
|
catch (err) {
|
|
@@ -245,12 +254,19 @@ server.tool("whatsapp_send", [
|
|
|
245
254
|
// Tool: whatsapp_receive
|
|
246
255
|
// ---------------------------------------------------------------------------
|
|
247
256
|
server.tool("whatsapp_receive", [
|
|
248
|
-
"Return
|
|
249
|
-
"
|
|
257
|
+
"Return queued incoming WhatsApp messages since the last call, then clear the queue.",
|
|
258
|
+
"Without 'from': returns self-chat messages (default, backwards compatible).",
|
|
259
|
+
"With 'from' set to a phone number, JID, or contact name: returns messages from that contact.",
|
|
260
|
+
"With 'from' set to 'all': returns messages from all chats (self-chat + all contacts), prefixed with sender JID.",
|
|
250
261
|
"Returns 'No new messages.' if the queue is empty.",
|
|
251
|
-
].join(" "), {
|
|
262
|
+
].join(" "), {
|
|
263
|
+
from: z
|
|
264
|
+
.string()
|
|
265
|
+
.optional()
|
|
266
|
+
.describe("Optional sender filter: phone number, JID, contact name, or 'all'. Omit for self-chat only."),
|
|
267
|
+
}, async ({ from }) => {
|
|
252
268
|
try {
|
|
253
|
-
const result = await watcher.receive();
|
|
269
|
+
const result = await watcher.receive(from);
|
|
254
270
|
const { messages } = result;
|
|
255
271
|
if (messages.length === 0) {
|
|
256
272
|
return { content: [{ type: "text", text: "No new messages." }] };
|
|
@@ -272,6 +288,138 @@ server.tool("whatsapp_receive", [
|
|
|
272
288
|
}
|
|
273
289
|
});
|
|
274
290
|
// ---------------------------------------------------------------------------
|
|
291
|
+
// Tool: whatsapp_contacts
|
|
292
|
+
// ---------------------------------------------------------------------------
|
|
293
|
+
server.tool("whatsapp_contacts", [
|
|
294
|
+
"List recently seen WhatsApp contacts.",
|
|
295
|
+
"Returns contacts that have sent or received messages in this session, most recent first.",
|
|
296
|
+
"Optionally filter by name or phone number using the 'search' parameter.",
|
|
297
|
+
"Use the returned phone number or JID as the 'recipient' parameter for whatsapp_send.",
|
|
298
|
+
].join(" "), {
|
|
299
|
+
search: z
|
|
300
|
+
.string()
|
|
301
|
+
.optional()
|
|
302
|
+
.describe("Optional search string to filter contacts by name or phone number"),
|
|
303
|
+
limit: z
|
|
304
|
+
.number()
|
|
305
|
+
.min(1)
|
|
306
|
+
.max(200)
|
|
307
|
+
.default(50)
|
|
308
|
+
.describe("Maximum number of contacts to return (default 50)"),
|
|
309
|
+
}, async ({ search, limit }) => {
|
|
310
|
+
try {
|
|
311
|
+
const result = await watcher.contacts(search, limit);
|
|
312
|
+
const { contacts } = result;
|
|
313
|
+
if (contacts.length === 0) {
|
|
314
|
+
const msg = search
|
|
315
|
+
? `No contacts found matching '${search}'.`
|
|
316
|
+
: "No contacts seen yet. Send a message first, or wait for incoming messages.";
|
|
317
|
+
return { content: [{ type: "text", text: msg }] };
|
|
318
|
+
}
|
|
319
|
+
const lines = contacts.map((c) => {
|
|
320
|
+
const name = c.name ? `${c.name} ` : "";
|
|
321
|
+
const ts = new Date(c.lastSeen).toISOString();
|
|
322
|
+
return `${name}+${c.phoneNumber} (${c.jid}) — last seen ${ts}`;
|
|
323
|
+
});
|
|
324
|
+
return {
|
|
325
|
+
content: [
|
|
326
|
+
{
|
|
327
|
+
type: "text",
|
|
328
|
+
text: `${contacts.length} contact(s):\n${lines.join("\n")}`,
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (err) {
|
|
334
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
335
|
+
return {
|
|
336
|
+
content: [{ type: "text", text: `Error: ${errMsg}` }],
|
|
337
|
+
isError: true,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
// ---------------------------------------------------------------------------
|
|
342
|
+
// Tool: whatsapp_chats
|
|
343
|
+
// ---------------------------------------------------------------------------
|
|
344
|
+
server.tool("whatsapp_chats", [
|
|
345
|
+
"List WhatsApp chat conversations (inbox).",
|
|
346
|
+
"Reads directly from the WhatsApp Desktop macOS SQLite database when available (complete inbox, no Baileys sync required).",
|
|
347
|
+
"Falls back to the Baileys in-memory store when the Desktop DB is not present (~100-150 chats synced on connect).",
|
|
348
|
+
"Use the returned JID as the 'recipient' parameter for whatsapp_send,",
|
|
349
|
+
"or with whatsapp_receive to read messages from a specific contact.",
|
|
350
|
+
"Optionally filter by name or phone number using the 'search' parameter.",
|
|
351
|
+
].join(" "), {
|
|
352
|
+
search: z
|
|
353
|
+
.string()
|
|
354
|
+
.optional()
|
|
355
|
+
.describe("Optional search string to filter chats by name or phone number"),
|
|
356
|
+
limit: z
|
|
357
|
+
.number()
|
|
358
|
+
.min(1)
|
|
359
|
+
.max(200)
|
|
360
|
+
.default(50)
|
|
361
|
+
.describe("Maximum number of chats to return (default 50)"),
|
|
362
|
+
}, async ({ search, limit }) => {
|
|
363
|
+
try {
|
|
364
|
+
// Try the Desktop DB first — it has the full inbox without needing Baileys sync
|
|
365
|
+
const desktopChats = listChats(search, limit);
|
|
366
|
+
if (desktopChats !== null) {
|
|
367
|
+
// Desktop DB is available
|
|
368
|
+
if (desktopChats.length === 0) {
|
|
369
|
+
const msg = search
|
|
370
|
+
? `No chats found matching '${search}'.`
|
|
371
|
+
: "No chats found in the WhatsApp Desktop database.";
|
|
372
|
+
return { content: [{ type: "text", text: msg }] };
|
|
373
|
+
}
|
|
374
|
+
const lines = desktopChats.map((c) => {
|
|
375
|
+
const ts = c.lastMessageDate || "unknown";
|
|
376
|
+
const unread = c.unreadCount > 0 ? ` [${c.unreadCount} unread]` : "";
|
|
377
|
+
const archived = c.archived ? " [archived]" : "";
|
|
378
|
+
return `${c.name} (${c.jid})${unread}${archived} — last message ${ts}`;
|
|
379
|
+
});
|
|
380
|
+
return {
|
|
381
|
+
content: [
|
|
382
|
+
{
|
|
383
|
+
type: "text",
|
|
384
|
+
text: `${desktopChats.length} chat(s) [source: Desktop DB]:\n${lines.join("\n")}`,
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
// Fall back to Baileys IPC store
|
|
390
|
+
const result = await watcher.chats({ search, limit });
|
|
391
|
+
const { chats } = result;
|
|
392
|
+
if (chats.length === 0) {
|
|
393
|
+
const msg = search
|
|
394
|
+
? `No chats found matching '${search}'.`
|
|
395
|
+
: "No chats available yet. The store may still be syncing — try again in a few seconds.";
|
|
396
|
+
return { content: [{ type: "text", text: msg }] };
|
|
397
|
+
}
|
|
398
|
+
const lines = chats.map((c) => {
|
|
399
|
+
const ts = c.lastMessageTimestamp
|
|
400
|
+
? new Date(c.lastMessageTimestamp).toISOString()
|
|
401
|
+
: "unknown";
|
|
402
|
+
const unread = c.unreadCount > 0 ? ` [${c.unreadCount} unread]` : "";
|
|
403
|
+
return `${c.name} (${c.jid})${unread} — last message ${ts}`;
|
|
404
|
+
});
|
|
405
|
+
return {
|
|
406
|
+
content: [
|
|
407
|
+
{
|
|
408
|
+
type: "text",
|
|
409
|
+
text: `${chats.length} chat(s) [source: Baileys store]:\n${lines.join("\n")}`,
|
|
410
|
+
},
|
|
411
|
+
],
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
416
|
+
return {
|
|
417
|
+
content: [{ type: "text", text: `Error: ${errMsg}` }],
|
|
418
|
+
isError: true,
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
// ---------------------------------------------------------------------------
|
|
275
423
|
// Tool: whatsapp_wait
|
|
276
424
|
// ---------------------------------------------------------------------------
|
|
277
425
|
server.tool("whatsapp_wait", [
|
|
@@ -333,6 +481,76 @@ server.tool("whatsapp_login", [
|
|
|
333
481
|
}
|
|
334
482
|
});
|
|
335
483
|
// ---------------------------------------------------------------------------
|
|
484
|
+
// Tool: whatsapp_history
|
|
485
|
+
// ---------------------------------------------------------------------------
|
|
486
|
+
server.tool("whatsapp_history", [
|
|
487
|
+
"Fetch message history for a WhatsApp chat.",
|
|
488
|
+
"Reads directly from the WhatsApp Desktop macOS SQLite database when available — no phone connection required.",
|
|
489
|
+
"Falls back to Baileys on-demand fetch (requires phone online) when the Desktop DB is not present.",
|
|
490
|
+
"Accepts a full JID (e.g. '41796074745@s.whatsapp.net') or a phone number (e.g. '+41796074745').",
|
|
491
|
+
].join(" "), {
|
|
492
|
+
jid: z
|
|
493
|
+
.string()
|
|
494
|
+
.min(1)
|
|
495
|
+
.describe("The chat JID (e.g. '41796074745@s.whatsapp.net') or phone number (e.g. '+41796074745')"),
|
|
496
|
+
count: z
|
|
497
|
+
.number()
|
|
498
|
+
.min(1)
|
|
499
|
+
.max(500)
|
|
500
|
+
.default(50)
|
|
501
|
+
.describe("Number of messages to fetch (default 50, max 500)"),
|
|
502
|
+
}, async ({ jid, count }) => {
|
|
503
|
+
try {
|
|
504
|
+
// Try the Desktop DB first — works offline, no anchor message needed
|
|
505
|
+
const desktopMessages = getMessages(jid, count);
|
|
506
|
+
if (desktopMessages !== null) {
|
|
507
|
+
// Desktop DB is available
|
|
508
|
+
if (desktopMessages.length === 0) {
|
|
509
|
+
return {
|
|
510
|
+
content: [{ type: "text", text: `No messages found for ${jid} in the WhatsApp Desktop database.` }],
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
const lines = desktopMessages.map((m) => {
|
|
514
|
+
const direction = m.fromMe ? "Me" : (m.pushName ?? "Them");
|
|
515
|
+
return `[${m.date}] ${direction}: ${m.text}`;
|
|
516
|
+
});
|
|
517
|
+
return {
|
|
518
|
+
content: [
|
|
519
|
+
{
|
|
520
|
+
type: "text",
|
|
521
|
+
text: `${desktopMessages.length} message(s) for ${jid} [source: Desktop DB]:\n${lines.join("\n")}`,
|
|
522
|
+
},
|
|
523
|
+
],
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
// Fall back to Baileys IPC (on-demand fetch from phone)
|
|
527
|
+
const result = await watcher.history({ jid, count });
|
|
528
|
+
const { messages } = result;
|
|
529
|
+
if (messages.length === 0) {
|
|
530
|
+
return { content: [{ type: "text", text: "No messages found for this chat." }] };
|
|
531
|
+
}
|
|
532
|
+
const lines = messages.map((m) => {
|
|
533
|
+
const direction = m.fromMe ? "Me" : "Them";
|
|
534
|
+
return `[${m.date}] ${direction}: ${m.text}`;
|
|
535
|
+
});
|
|
536
|
+
return {
|
|
537
|
+
content: [
|
|
538
|
+
{
|
|
539
|
+
type: "text",
|
|
540
|
+
text: `${messages.length} message(s) for ${jid} [source: Baileys]:\n${lines.join("\n")}`,
|
|
541
|
+
},
|
|
542
|
+
],
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
catch (err) {
|
|
546
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
547
|
+
return {
|
|
548
|
+
content: [{ type: "text", text: `Error: ${errMsg}` }],
|
|
549
|
+
isError: true,
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
// ---------------------------------------------------------------------------
|
|
336
554
|
// Main
|
|
337
555
|
// ---------------------------------------------------------------------------
|
|
338
556
|
async function main() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|