@lizzythelizard/whatsapp-mcp 0.1.3 → 0.1.5
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/auth.d.ts.map +1 -1
- package/dist/auth.js +1 -0
- package/dist/auth.js.map +1 -1
- package/dist/index.js +32 -9
- package/dist/index.js.map +1 -1
- package/dist/store.d.ts +23 -9
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +16 -10
- package/dist/store.js.map +1 -1
- package/dist/sync.d.ts +6 -2
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +61 -2
- package/dist/sync.js.map +1 -1
- package/dist/tools.d.ts +4 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +69 -60
- package/dist/tools.js.map +1 -1
- package/package.json +59 -45
- package/.github/dependabot.yml +0 -20
- package/.github/workflows/auto-merge.yml +0 -19
- package/.github/workflows/ci.yml +0 -75
- package/.vscode/extensions.json +0 -7
- package/.vscode/settings.json +0 -12
- package/AGENTS.md +0 -42
- package/Dockerfile +0 -25
- package/dist/syncManager.d.ts +0 -29
- package/dist/syncManager.d.ts.map +0 -1
- package/dist/syncManager.js +0 -79
- package/dist/syncManager.js.map +0 -1
- package/eslint.config.mjs +0 -32
- package/src/auth.test.ts +0 -138
- package/src/auth.ts +0 -58
- package/src/index.ts +0 -45
- package/src/store.test.ts +0 -353
- package/src/store.ts +0 -182
- package/src/sync.test.ts +0 -304
- package/src/sync.ts +0 -170
- package/src/tools.test.ts +0 -254
- package/src/tools.ts +0 -132
- package/tsconfig.json +0 -19
- package/tsconfig.test.json +0 -7
- package/vitest.config.ts +0 -7
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2F,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2F,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAEtJ,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,WAAW,EAAE,MAAM,MAAM,CAAA;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAOxE"}
|
package/dist/auth.js
CHANGED
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,aAAa,EAAqB,KAAK,EAAsC,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,aAAa,EAAqB,KAAK,EAAsC,MAAM,yBAAyB,CAAA;AAQtJ,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAAiB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACjG,OAAO;QACL,KAAK;QACL,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,CAAC,EAAE;QACtF,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAI,GAAuB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAM,CAAA;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,MAAM,CAAoC,IAAO,EAAE,GAAa,EAAE,IAA4B;IACrG,OAAO,GAAG,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAuB,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAA;QACtB,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,KAAgD,CAAA;YACnE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC1E,MAAM,UAAU,GAAG,SAA4C,CAAA;YAC/D,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAA;QACtB,CAAC;aACI,CAAC;YACJ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;QACjB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,SAAS,MAAM,CAAC,IAAmB,EAAE,IAA4B;IAC/D,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAmC,CAAC,CAAA;QAC9D,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,KAAK;gBACR,gEAAgE;gBAChE,OAAO,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAA;iBAC7B,CAAC;gBACJ,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { StdioServerTransport } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import pkg from '../package.json' with { type: 'json' };
|
|
4
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
|
+
import { createStore } from './store.js';
|
|
6
|
+
import { createHandler } from './sync.js';
|
|
7
|
+
import { promises as fsp } from 'fs';
|
|
8
|
+
import { registerWhatsAppTools } from './tools.js';
|
|
9
|
+
const dataDir = process.env.DATA_DIR ?? './data';
|
|
10
|
+
async function readDataFromFile() {
|
|
11
|
+
const canAccess = await fsp.access(dataDir).then(() => true).catch(() => false);
|
|
12
|
+
if (!canAccess)
|
|
13
|
+
return undefined;
|
|
14
|
+
const chats = await fsp.readFile(`${dataDir}/chats.json`, 'utf-8');
|
|
15
|
+
const messages = await fsp.readFile(`${dataDir}/messages.json`, 'utf-8');
|
|
16
|
+
const contacts = await fsp.readFile(`${dataDir}/contacts.json`, 'utf-8');
|
|
17
|
+
const auth = await fsp.readFile(`${dataDir}/auth.json`, 'utf-8');
|
|
18
|
+
return { chats, messages, contacts, auth };
|
|
19
|
+
}
|
|
20
|
+
async function writeDataToFile(data) {
|
|
21
|
+
await fsp.mkdir(dataDir, { recursive: true });
|
|
22
|
+
await fsp.writeFile(`${dataDir}/chats.json`, data.chats, 'utf-8');
|
|
23
|
+
await fsp.writeFile(`${dataDir}/messages.json`, data.messages, 'utf-8');
|
|
24
|
+
await fsp.writeFile(`${dataDir}/contacts.json`, data.contacts, 'utf-8');
|
|
25
|
+
await fsp.writeFile(`${dataDir}/auth.json`, data.auth, 'utf-8');
|
|
26
|
+
}
|
|
6
27
|
async function main() {
|
|
7
|
-
const server = new McpServer({ name:
|
|
28
|
+
const server = new McpServer({ name: pkg.name, version: pkg.version });
|
|
8
29
|
const transport = new StdioServerTransport();
|
|
9
|
-
const
|
|
10
|
-
const
|
|
30
|
+
const inputData = await readDataFromFile();
|
|
31
|
+
const whatsappStore = createStore(writeDataToFile, inputData);
|
|
32
|
+
const whatsappSync = createHandler(whatsappStore);
|
|
33
|
+
registerWhatsAppTools(server, whatsappStore, whatsappSync);
|
|
11
34
|
await server.connect(transport);
|
|
12
|
-
console.info(
|
|
35
|
+
console.info('whatsapp-mcp server running on stdio');
|
|
13
36
|
}
|
|
14
37
|
main().catch((error) => {
|
|
15
|
-
console.error(
|
|
38
|
+
console.error('Server error:', error);
|
|
16
39
|
process.exit(1);
|
|
17
40
|
});
|
|
18
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { AuthenticationState, BaileysEventMap, Chat, Contact, WAMessage, WAMessageKey } from '@whiskeysockets/baileys';
|
|
2
|
+
export interface ChatWithId extends Chat {
|
|
3
|
+
id: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ContactWithId extends Contact {
|
|
6
|
+
id: string;
|
|
7
|
+
}
|
|
8
|
+
export interface MessageWithId extends WAMessage {
|
|
9
|
+
key: WAMessageKey & {
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface Emitter {
|
|
14
|
+
process: (processor: (e: Partial<BaileysEventMap>) => void) => void;
|
|
15
|
+
}
|
|
2
16
|
export interface WhatsAppStore {
|
|
3
|
-
bind: (ev:
|
|
4
|
-
getChats: () =>
|
|
5
|
-
getChat: (id: string) =>
|
|
6
|
-
getContacts: () =>
|
|
7
|
-
getContact: (id: string) =>
|
|
8
|
-
getMessages: () =>
|
|
9
|
-
getMessage: (id: string) =>
|
|
17
|
+
bind: (ev: Emitter) => void;
|
|
18
|
+
getChats: () => ChatWithId[];
|
|
19
|
+
getChat: (id: string) => ChatWithId | undefined;
|
|
20
|
+
getContacts: () => ContactWithId[];
|
|
21
|
+
getContact: (id: string) => ContactWithId | undefined;
|
|
22
|
+
getMessages: () => MessageWithId[];
|
|
23
|
+
getMessage: (id: string) => MessageWithId | undefined;
|
|
10
24
|
reset: () => void;
|
|
11
25
|
getAuth: () => AuthenticationState;
|
|
12
26
|
}
|
|
@@ -16,5 +30,5 @@ export interface DataStore {
|
|
|
16
30
|
messages: string;
|
|
17
31
|
auth: string;
|
|
18
32
|
}
|
|
19
|
-
export declare function createStore(saveCb?: (data: DataStore) => void
|
|
33
|
+
export declare function createStore(saveCb?: (data: DataStore) => Promise<void>, initialData?: DataStore): WhatsAppStore;
|
|
20
34
|
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAc,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGlI,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,GAAG,EAAE,YAAY,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CACnC;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,KAAK,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAA;IAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAA;IAC/C,WAAW,EAAE,MAAM,aAAa,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAA;IACrD,WAAW,EAAE,MAAM,aAAa,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAA;IACrD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,mBAAmB,CAAA;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAYD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,CAqI/G"}
|
package/dist/store.js
CHANGED
|
@@ -10,7 +10,7 @@ function toString(map) {
|
|
|
10
10
|
return JSON.stringify(map, BufferJSON.replacer);
|
|
11
11
|
}
|
|
12
12
|
export function createStore(saveCb, initialData) {
|
|
13
|
-
//TODO: Load initial states from somewhere
|
|
13
|
+
// TODO: Load initial states from somewhere
|
|
14
14
|
const chats = fromString(initialData?.chats);
|
|
15
15
|
const contacts = fromString(initialData?.contacts);
|
|
16
16
|
const messages = fromString(initialData?.messages);
|
|
@@ -57,7 +57,7 @@ export function createStore(saveCb, initialData) {
|
|
|
57
57
|
}
|
|
58
58
|
function deleteMessage(jid) {
|
|
59
59
|
for (const [id, m] of messages.entries()) {
|
|
60
|
-
if (m.key
|
|
60
|
+
if (m.key.remoteJid === jid) {
|
|
61
61
|
messages.delete(id);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -65,12 +65,18 @@ export function createStore(saveCb, initialData) {
|
|
|
65
65
|
function save() {
|
|
66
66
|
if (!saveCb)
|
|
67
67
|
return;
|
|
68
|
-
|
|
69
|
-
chats: toString(chats),
|
|
68
|
+
const data = {
|
|
69
|
+
chats: toString(chats),
|
|
70
|
+
contacts: toString(contacts),
|
|
71
|
+
messages: toString(messages),
|
|
72
|
+
auth: auth.toAuthState(),
|
|
73
|
+
};
|
|
74
|
+
void saveCb(data).catch((error) => {
|
|
75
|
+
console.error('Error saving WhatsApp store data:', error);
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
78
|
function process(e) {
|
|
73
|
-
//Store data if no new events come in for 1 second
|
|
79
|
+
// Store data if no new events come in for 1 second
|
|
74
80
|
if (saveTimeout)
|
|
75
81
|
clearTimeout(saveTimeout);
|
|
76
82
|
if (saveCb)
|
|
@@ -119,20 +125,20 @@ export function createStore(saveCb, initialData) {
|
|
|
119
125
|
console.error(`Error processing WhatsApp store event: ${error instanceof Error ? error.message : String(error)}`);
|
|
120
126
|
}
|
|
121
127
|
return {
|
|
122
|
-
bind: (ev) => ev.process(process),
|
|
128
|
+
bind: (ev) => { ev.process(process); },
|
|
123
129
|
getChats: () => Array.from(chats.values()),
|
|
124
|
-
getChat:
|
|
130
|
+
getChat: id => chats.get(id),
|
|
125
131
|
getContacts: () => Array.from(contacts.values()),
|
|
126
|
-
getContact:
|
|
132
|
+
getContact: id => contacts.get(id),
|
|
127
133
|
getMessages: () => Array.from(messages.values()),
|
|
128
|
-
getMessage:
|
|
134
|
+
getMessage: id => messages.get(id),
|
|
129
135
|
reset: () => {
|
|
130
136
|
chats.clear();
|
|
131
137
|
contacts.clear();
|
|
132
138
|
messages.clear();
|
|
133
139
|
auth = createExportableAuth(undefined);
|
|
134
140
|
},
|
|
135
|
-
getAuth: () => auth
|
|
141
|
+
getAuth: () => auth,
|
|
136
142
|
};
|
|
137
143
|
}
|
|
138
144
|
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WAMessage } from '@whiskeysockets/baileys';
|
|
1
2
|
import { createStore } from './store.js';
|
|
2
3
|
export type SyncStatus = {
|
|
3
4
|
type: 'connecting';
|
|
@@ -10,9 +11,12 @@ export type SyncStatus = {
|
|
|
10
11
|
type: 'closed';
|
|
11
12
|
error?: Error;
|
|
12
13
|
};
|
|
13
|
-
export interface
|
|
14
|
+
export interface WhatsAppHandler {
|
|
14
15
|
close: () => void;
|
|
15
16
|
getStatus: () => SyncStatus;
|
|
17
|
+
sendMessage: (jid: string, text: string) => Promise<WAMessage>;
|
|
18
|
+
setRead: (jid: string, read: boolean) => Promise<void>;
|
|
19
|
+
setArchived: (jid: string, archived: boolean) => Promise<void>;
|
|
16
20
|
}
|
|
17
|
-
export declare function
|
|
21
|
+
export declare function createHandler(store: ReturnType<typeof createStore>): WhatsAppHandler;
|
|
18
22
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAyC,SAAS,EAAS,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAE1I,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,SAAS,EAAE,MAAM,UAAU,CAAA;IAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,eAAe,CAkHpF"}
|
package/dist/sync.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import makeWASocket from '@whiskeysockets/baileys';
|
|
2
|
-
export function
|
|
2
|
+
export function createHandler(store) {
|
|
3
3
|
let state = { type: 'connecting' };
|
|
4
4
|
let sock;
|
|
5
5
|
const browser = ['Gutschi.site', 'Desktop', '1.0.0'];
|
|
@@ -46,7 +46,7 @@ export function createSyncHandler(store) {
|
|
|
46
46
|
function startAgainAfterLogin() {
|
|
47
47
|
sock = makeWASocket({ auth: store.getAuth(), browser, logger: baileysLogger, markOnlineOnConnect: false, syncFullHistory: true, emitOwnEvents: true });
|
|
48
48
|
sock.ev.on('connection.update', (update) => { connectionUpdateAfterLogin(update, onClosed, onError); });
|
|
49
|
-
//wait untill no new messages are received for 2 seconds, then set state to ready
|
|
49
|
+
// wait untill no new messages are received for 2 seconds, then set state to ready
|
|
50
50
|
let timeout = setTimeout(() => state = { type: 'ready' }, 2000);
|
|
51
51
|
sock.ev.process(() => {
|
|
52
52
|
clearTimeout(timeout);
|
|
@@ -54,9 +54,68 @@ export function createSyncHandler(store) {
|
|
|
54
54
|
});
|
|
55
55
|
store.bind(sock.ev);
|
|
56
56
|
}
|
|
57
|
+
async function sendMessage(jid, message) {
|
|
58
|
+
if (state.type === 'connecting')
|
|
59
|
+
throw new Error('Server still connecting, please wait');
|
|
60
|
+
if (state.type === 'closed')
|
|
61
|
+
throw new Error('Connection closed, please restart server');
|
|
62
|
+
if (state.type === 'needAuth')
|
|
63
|
+
throw new Error('Authentication needed, please authenticate yourself first');
|
|
64
|
+
if (sock === undefined)
|
|
65
|
+
throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
|
|
66
|
+
const result = await sock.sendMessage(jid, { text: message });
|
|
67
|
+
if (!result)
|
|
68
|
+
throw new Error(`Failed to send message to ${jid}`);
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
async function setArchived(jid, archived) {
|
|
72
|
+
if (state.type === 'connecting')
|
|
73
|
+
throw new Error('Server still connecting, please wait');
|
|
74
|
+
if (state.type === 'closed')
|
|
75
|
+
throw new Error('Connection closed, please restart server');
|
|
76
|
+
if (state.type === 'needAuth')
|
|
77
|
+
throw new Error('Authentication needed, please authenticate yourself first');
|
|
78
|
+
if (sock === undefined)
|
|
79
|
+
throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
|
|
80
|
+
const chat = store.getChat(jid);
|
|
81
|
+
if (!chat)
|
|
82
|
+
throw new Error(`No chat found for ${jid}`);
|
|
83
|
+
const lastMessage = chat.messages?.[0].message;
|
|
84
|
+
if (!lastMessage) {
|
|
85
|
+
await sock.chatModify({ archive: archived, lastMessages: [] }, jid);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (!lastMessage.key)
|
|
89
|
+
throw new Error(`Last message for ${jid} has no key, cannot archive chat`);
|
|
90
|
+
await sock.chatModify({ archive: archived, lastMessages: [lastMessage] }, jid);
|
|
91
|
+
}
|
|
92
|
+
async function setRead(jid, read) {
|
|
93
|
+
if (state.type === 'connecting')
|
|
94
|
+
throw new Error('Server still connecting, please wait');
|
|
95
|
+
if (state.type === 'closed')
|
|
96
|
+
throw new Error('Connection closed, please restart server');
|
|
97
|
+
if (state.type === 'needAuth')
|
|
98
|
+
throw new Error('Authentication needed, please authenticate yourself first');
|
|
99
|
+
if (sock === undefined)
|
|
100
|
+
throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
|
|
101
|
+
const chat = store.getChat(jid);
|
|
102
|
+
if (!chat)
|
|
103
|
+
throw new Error(`No chat found for ${jid}`);
|
|
104
|
+
const lastMessage = chat.messages?.[0].message;
|
|
105
|
+
if (!lastMessage) {
|
|
106
|
+
await sock.chatModify({ markRead: read, lastMessages: [] }, jid);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!lastMessage.key)
|
|
110
|
+
throw new Error(`Last message for ${jid} has no key, cannot mark chat as unread`);
|
|
111
|
+
await sock.chatModify({ markRead: read, lastMessages: [lastMessage] }, jid);
|
|
112
|
+
}
|
|
57
113
|
start();
|
|
58
114
|
return {
|
|
59
115
|
getStatus: () => state,
|
|
116
|
+
sendMessage: sendMessage,
|
|
117
|
+
setArchived: setArchived,
|
|
118
|
+
setRead: setRead,
|
|
60
119
|
close: close,
|
|
61
120
|
};
|
|
62
121
|
}
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
|
|
2
|
+
import { WhatsAppStore } from './store.js';
|
|
3
|
+
import { WhatsAppHandler } from './sync.js';
|
|
4
|
+
export declare function registerWhatsAppTools(server: McpServer, store: WhatsAppStore, sync: WhatsAppHandler): void;
|
|
2
5
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAA4C,aAAa,EAAE,MAAM,YAAY,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAK3C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,QAMnG"}
|
package/dist/tools.js
CHANGED
|
@@ -1,65 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
export function registerWhatsAppTools(server, store, sync) {
|
|
4
|
+
registerChatsResources(server, store);
|
|
5
|
+
registerContactsResources(server, store);
|
|
6
|
+
registerMessagesResources(server, store);
|
|
7
|
+
registerMessageTools(server, sync);
|
|
8
|
+
registerChatTools(server, sync);
|
|
9
|
+
}
|
|
10
|
+
function registerChatsResources(server, store) {
|
|
11
|
+
server.registerResource('chats', 'chats://app', { title: 'All WhatsApp Chats', description: 'List WhatsApp chats', mimeType: 'application/json' }, () => toReadResource(store.getChats().flatMap(chatToReadResource)));
|
|
12
|
+
server.registerResource('chat', new ResourceTemplate('chats://app/{chatId}', { list: () => toListResource(store.getChats().flatMap(chatToListResource)) }), { title: 'A single WhatsApp Chat', description: 'Details of a single WhatsApp chat', mimeType: 'application/json' }, (_, { chatId }) => toReadResource(chatToReadResource(store.getChat(chatId))));
|
|
13
|
+
}
|
|
14
|
+
const chatToReadResource = (chat) => chat
|
|
15
|
+
? [{ uri: `chats://app/${chat.id}`, mimeType: 'application/json', text: JSON.stringify(chat) }]
|
|
16
|
+
: [];
|
|
17
|
+
const chatToListResource = (chat) => chat
|
|
18
|
+
? [{ uri: `chats://app/${chat.id}`, name: chat.name ?? chat.id }]
|
|
19
|
+
: [];
|
|
20
|
+
function registerContactsResources(server, store) {
|
|
21
|
+
server.registerResource('contacts', 'contacts://app', { title: 'All WhatsApp Contacts', description: 'List WhatsApp contacts', mimeType: 'application/json' }, () => toReadResource(store.getContacts().flatMap(contactToReadResource)));
|
|
22
|
+
server.registerResource('contact', new ResourceTemplate('contacts://app/{contactId}', { list: () => toListResource(store.getContacts().flatMap(contactToListResource)) }), { title: 'A single WhatsApp Contact', description: 'Details of a single WhatsApp contact', mimeType: 'application/json' }, (_, { contactId }) => toReadResource(contactToReadResource(store.getContact(contactId))));
|
|
23
|
+
}
|
|
24
|
+
const contactToReadResource = (contact) => contact
|
|
25
|
+
? [{ uri: `contacts://app/${contact.id}`, mimeType: 'application/json', text: JSON.stringify(contact) }]
|
|
26
|
+
: [];
|
|
27
|
+
const contactToListResource = (contact) => contact
|
|
28
|
+
? [{ uri: `contacts://app/${contact.id}`, name: contact.name ?? contact.id }]
|
|
29
|
+
: [];
|
|
30
|
+
function registerMessagesResources(server, store) {
|
|
31
|
+
server.registerResource('messages', 'messages://app', { title: 'All WhatsApp Messages', description: 'List WhatsApp messages', mimeType: 'application/json' }, () => toReadResource(store.getMessages().flatMap(messageToReadResource)));
|
|
32
|
+
server.registerResource('message', new ResourceTemplate('messages://app/{messageId}', { list: () => toListResource(store.getMessages().flatMap(messageToListResource)) }), { title: 'A single WhatsApp Message', description: 'Details of a single WhatsApp message', mimeType: 'application/json' }, (_, { messageId }) => toReadResource(messageToReadResource(store.getMessage(messageId))));
|
|
33
|
+
}
|
|
34
|
+
const messageToReadResource = (message) => message
|
|
35
|
+
? [{ uri: `messages://app/${message.key.id}`, mimeType: 'application/json', text: JSON.stringify(message) }]
|
|
36
|
+
: [];
|
|
37
|
+
const messageToListResource = (message) => message
|
|
38
|
+
? [{ uri: `messages://app/${message.key.id}`, name: message.key.id }]
|
|
39
|
+
: [];
|
|
40
|
+
const toReadResource = (t) => ({ contents: t });
|
|
41
|
+
const toListResource = (t) => ({ resources: t });
|
|
42
|
+
function registerMessageTools(server, sync) {
|
|
43
|
+
server.registerTool('send_message', { description: 'Send a WhatsApp-Message to a given JID.', inputSchema: SendMessageSchema }, args => sync.sendMessage(args.jid, args.message).then(messageToText).then(toCallResult).catch(toCallError));
|
|
44
|
+
}
|
|
45
|
+
const messageToText = (message) => {
|
|
46
|
+
return `Message sent to ${message.key.remoteJid ?? 'unknown'}: "${message.message?.conversation ?? 'unknown'}"`;
|
|
47
|
+
};
|
|
48
|
+
function registerChatTools(server, sync) {
|
|
49
|
+
server.registerTool('set_chat_archived', { description: 'Set a WhatsApp chat as archived or unarchived.', inputSchema: ArchiveChatSchema }, args => sync.setArchived(args.jid, args.archived).then(() => `Chat ${args.jid} archived status set to ${args.archived.toString()}`).then(toCallResult).catch(toCallError));
|
|
50
|
+
server.registerTool('set_chat_read', { description: 'Set a WhatsApp chat as read or unread.', inputSchema: ReadChatSchema }, args => sync.setRead(args.jid, args.read).then(() => `Chat ${args.jid} read status set to ${args.read.toString()}`).then(toCallResult).catch(toCallError));
|
|
51
|
+
}
|
|
52
|
+
const JidSchema = z.union([
|
|
53
|
+
z.string().min(1, 'JID is required').endsWith('@s.whatsapp.net', 'JID not a valid WhatsApp JID)'),
|
|
54
|
+
z.string().min(1, 'JID is required').endsWith('@g.us', 'JID not a valid WhatsApp JID)'),
|
|
55
|
+
]).describe('The JID of the recipient or chat. For example 41791234567@s.whatsapp.net for an individual or 1234567890-1234567890@g.us for a group');
|
|
3
56
|
const SendMessageSchema = z.object({
|
|
4
|
-
|
|
5
|
-
|
|
57
|
+
jid: JidSchema,
|
|
58
|
+
message: z.string()
|
|
59
|
+
.min(1, 'Message body is required')
|
|
60
|
+
.describe('The body of the message to be sent. Can contain unicode characters like emojis.'),
|
|
6
61
|
});
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
62
|
+
const ArchiveChatSchema = z.object({
|
|
63
|
+
jid: JidSchema,
|
|
64
|
+
archived: z.boolean()
|
|
65
|
+
.describe('Whether the chat should be archived (true) or unarchived (false).'),
|
|
10
66
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
67
|
+
const ReadChatSchema = z.object({
|
|
68
|
+
jid: JidSchema,
|
|
69
|
+
read: z.boolean()
|
|
70
|
+
.describe('Whether the chat should be marked as read (true) or unread (false).'),
|
|
15
71
|
});
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"send_message",
|
|
19
|
-
{
|
|
20
|
-
description: "Send a WhatsApp message to a recipient",
|
|
21
|
-
inputSchema: SendMessageSchema,
|
|
22
|
-
},
|
|
23
|
-
async ({ to, message }) => ({
|
|
24
|
-
content: [
|
|
25
|
-
{
|
|
26
|
-
type: "text" as const,
|
|
27
|
-
text: `Message would be sent to ${to}: "${message}" (not yet implemented)`,
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
}),
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
server.registerTool(
|
|
34
|
-
"list_chats",
|
|
35
|
-
{
|
|
36
|
-
description: "List recent WhatsApp chats",
|
|
37
|
-
inputSchema: ListChatsSchema,
|
|
38
|
-
},
|
|
39
|
-
async ({ limit }) => ({
|
|
40
|
-
content: [
|
|
41
|
-
{
|
|
42
|
-
type: "text" as const,
|
|
43
|
-
text: `Listing up to ${limit} chats (not yet implemented)`,
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
}),
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
server.registerTool(
|
|
50
|
-
"read_messages",
|
|
51
|
-
{
|
|
52
|
-
description: "Read messages from a WhatsApp chat",
|
|
53
|
-
inputSchema: ReadMessagesSchema,
|
|
54
|
-
},
|
|
55
|
-
async ({ chatId, limit }) => ({
|
|
56
|
-
content: [
|
|
57
|
-
{
|
|
58
|
-
type: "text" as const,
|
|
59
|
-
text: `Reading up to ${limit} messages from ${chatId} (not yet implemented)`,
|
|
60
|
-
},
|
|
61
|
-
],
|
|
62
|
-
}),
|
|
63
|
-
);
|
|
64
|
-
*/
|
|
72
|
+
const toCallResult = (t) => ({ content: [{ type: 'text', text: t }], isError: false });
|
|
73
|
+
const toCallError = (error) => ({ content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true });
|
|
65
74
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|