@moxxy/plugin-channel-whatsapp 0.28.1 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/baileys-socket.d.ts.map +1 -1
- package/dist/baileys-socket.js +4 -2
- package/dist/baileys-socket.js.map +1 -1
- package/dist/channel/turn-runner.d.ts +1 -1
- package/dist/channel/turn-runner.d.ts.map +1 -1
- package/dist/channel/turn-runner.js +4 -1
- package/dist/channel/turn-runner.js.map +1 -1
- package/dist/keys.js +1 -1
- package/dist/keys.js.map +1 -1
- package/dist/permission.d.ts.map +1 -1
- package/dist/permission.js +2 -1
- package/dist/permission.js.map +1 -1
- package/package.json +7 -7
- package/src/baileys-socket.ts +4 -2
- package/src/channel/turn-runner.ts +4 -2
- package/src/channel.test.ts +3 -2
- package/src/keys.ts +1 -1
- package/src/permission.ts +3 -1
- package/src/subcommands.test.ts +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baileys-socket.d.ts","sourceRoot":"","sources":["../src/baileys-socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAMV,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"baileys-socket.d.ts","sourceRoot":"","sources":["../src/baileys-socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAMV,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBA2C/B,CAAC"}
|
package/dist/baileys-socket.js
CHANGED
|
@@ -13,12 +13,14 @@ export const openBaileysSocket = async ({ storage, logger }) => {
|
|
|
13
13
|
throw new Error('@whiskeysockets/baileys: could not resolve makeWASocket export');
|
|
14
14
|
}
|
|
15
15
|
const proto = baileys.proto ?? baileys.default?.proto;
|
|
16
|
+
const protoMessage = proto?.Message;
|
|
17
|
+
const appStateSyncKeyData = protoMessage?.AppStateSyncKeyData;
|
|
16
18
|
const bridge = {
|
|
17
19
|
initAuthCreds: baileys.initAuthCreds,
|
|
18
20
|
BufferJSON: baileys.BufferJSON,
|
|
19
|
-
...(
|
|
21
|
+
...(appStateSyncKeyData
|
|
20
22
|
? {
|
|
21
|
-
reviveAppStateSyncKey: (value) =>
|
|
23
|
+
reviveAppStateSyncKey: (value) => appStateSyncKeyData.fromObject(value),
|
|
22
24
|
}
|
|
23
25
|
: {}),
|
|
24
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baileys-socket.js","sourceRoot":"","sources":["../src/baileys-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,iBAAiB,CAAC;AAWlF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;IACpF,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAA6B,CAAC;IACtF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAC9F,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;IACtD,MAAM,MAAM,GAAsB;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"baileys-socket.js","sourceRoot":"","sources":["../src/baileys-socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { newTurnId } from '@moxxy/core';
|
|
2
|
-
import type
|
|
2
|
+
import { type ClientSession as Session } from '@moxxy/sdk';
|
|
3
3
|
import type { WaMessageKey, WhatsAppSocket } from '../socket.js';
|
|
4
4
|
/**
|
|
5
5
|
* Streaming strategy (justified against the Baileys API):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAiB,KAAK,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAmC,GAC1C,MAAM,EAAE,CAcV;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FramePump, PlainTurnRenderer, driveTurn, subscribeTurn } from '@moxxy/channel-kit';
|
|
2
|
+
import { assertDefined } from '@moxxy/sdk';
|
|
2
3
|
/**
|
|
3
4
|
* Streaming strategy (justified against the Baileys API):
|
|
4
5
|
*
|
|
@@ -86,8 +87,10 @@ export async function runWhatsAppTurn(deps, opts) {
|
|
|
86
87
|
send: async (t) => sendChunks(splitWhatsAppText(t)),
|
|
87
88
|
edit: async (key, t, final) => {
|
|
88
89
|
const chunks = splitWhatsAppText(t);
|
|
90
|
+
const head = chunks[0];
|
|
91
|
+
assertDefined(head, 'whatsapp: splitWhatsAppText always yields at least one chunk');
|
|
89
92
|
try {
|
|
90
|
-
await socket.editText(jid, key,
|
|
93
|
+
await socket.editText(jid, key, head);
|
|
91
94
|
}
|
|
92
95
|
catch (err) {
|
|
93
96
|
logger?.warn?.('whatsapp edit failed', { err: String(err), final });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAiC,MAAM,YAAY,CAAC;AAG1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,SAAiB,0BAA0B;IAE3C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG;YAAE,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG;YAAE,GAAG,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAwBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAyB,EACzB,IAA4B;IAE5B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEtD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,KAAK,EAAE,MAA6B,EAAgC,EAAE;QACvF,IAAI,QAAQ,GAAwB,IAAI,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,GAAG;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;YAClD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,EAAE,IAAI,EAAE,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,SAAS,CAAe;QACvC,WAAW;QACX,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,0BAA0B;gBAAE,OAAO,QAAQ,CAAC;YAC5E,wEAAwE;YACxE,oEAAoE;YACpE,mCAAmC;YACnC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,GAAG,CAAC,CAAC,GAAG,CAAC;QACjE,CAAC;QACD,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,aAAa,CAAC,IAAI,EAAE,8DAA8D,CAAC,CAAC;gBACpF,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,EAAE,IAAI,EAAE,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpE,IAAI,KAAK,EAAE,CAAC;wBACV,iEAAiE;wBACjE,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;wBACzB,OAAO;oBACT,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE;YACvB,MAAM;YACN,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,EAAE,CAAC,sBAAsB,EAAE;YACrC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,UAAU,CAAC,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;AACH,CAAC"}
|
package/dist/keys.js
CHANGED
|
@@ -35,7 +35,7 @@ export function normalizeJid(raw) {
|
|
|
35
35
|
if (!/^[a-z0-9.-]+$/.test(server))
|
|
36
36
|
return null;
|
|
37
37
|
// Strip the device (`:NN`) and legacy agent (`_N`) suffixes off the user part.
|
|
38
|
-
const user = trimmed.slice(0, at).split(':')[0].split('_')[0];
|
|
38
|
+
const user = (trimmed.slice(0, at).split(':')[0] ?? '').split('_')[0] ?? '';
|
|
39
39
|
if (user.length === 0)
|
|
40
40
|
return null;
|
|
41
41
|
return `${user}@${server}`;
|
package/dist/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAChE,mEAAmE;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,iFAAiF;AACjF,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,GAA8B;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,+EAA+E;IAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/permission.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,yEAAyE;IACzE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAC;IACtB,yEAAyE;IACzE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAY5E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAapE;AAED,wBAAgB,kCAAkC,IAAI,4BAA4B,CAiDjF"}
|
package/dist/permission.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createDeferredPermissionResolver, } from '@moxxy/sdk';
|
|
1
|
+
import { assertDefined, createDeferredPermissionResolver, } from '@moxxy/sdk';
|
|
2
2
|
export function parsePermissionReply(text) {
|
|
3
3
|
const v = text.trim().toLowerCase();
|
|
4
4
|
if (v === '1' || v === 'yes' || v === 'y' || v === 'allow') {
|
|
@@ -62,6 +62,7 @@ export function createWhatsAppPermissionController() {
|
|
|
62
62
|
if (!decision)
|
|
63
63
|
return false;
|
|
64
64
|
const prompt = pending.shift();
|
|
65
|
+
assertDefined(prompt, 'pending is non-empty past the length guard above');
|
|
65
66
|
prompt.resolve(decision);
|
|
66
67
|
return true;
|
|
67
68
|
},
|
package/dist/permission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moxxy/plugin-channel-whatsapp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "WhatsApp channel for moxxy via Baileys (UNOFFICIAL WhatsApp Web protocol — violates WhatsApp's Terms of Service; the linked number can be banned, use a secondary number). QR device-link pairing, JID allow-list, voice-note transcription, dedicated isolated runner.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"moxxy",
|
|
@@ -75,18 +75,18 @@
|
|
|
75
75
|
"@whiskeysockets/baileys": "^6.7.21",
|
|
76
76
|
"qrcode": "^1.5.4",
|
|
77
77
|
"zod": "^3.24.0",
|
|
78
|
-
"@moxxy/
|
|
79
|
-
"@moxxy/
|
|
80
|
-
"@moxxy/
|
|
81
|
-
"@moxxy/
|
|
78
|
+
"@moxxy/core": "0.29.0",
|
|
79
|
+
"@moxxy/plugin-vault": "0.29.0",
|
|
80
|
+
"@moxxy/channel-kit": "0.29.0",
|
|
81
|
+
"@moxxy/sdk": "0.29.0"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
84
|
"@types/node": "^22.10.0",
|
|
85
85
|
"@types/qrcode": "^1.5.5",
|
|
86
86
|
"typescript": "^5.7.3",
|
|
87
87
|
"vitest": "^2.1.8",
|
|
88
|
-
"@moxxy/mode-default": "0.
|
|
89
|
-
"@moxxy/testing": "0.0.
|
|
88
|
+
"@moxxy/mode-default": "0.29.0",
|
|
89
|
+
"@moxxy/testing": "0.0.48",
|
|
90
90
|
"@moxxy/tsconfig": "0.0.0",
|
|
91
91
|
"@moxxy/vitest-preset": "0.0.0"
|
|
92
92
|
},
|
package/src/baileys-socket.ts
CHANGED
|
@@ -23,13 +23,15 @@ export const openBaileysSocket: WhatsAppSocketFactory = async ({ storage, logger
|
|
|
23
23
|
throw new Error('@whiskeysockets/baileys: could not resolve makeWASocket export');
|
|
24
24
|
}
|
|
25
25
|
const proto = baileys.proto ?? baileys.default?.proto;
|
|
26
|
+
const protoMessage = proto?.Message;
|
|
27
|
+
const appStateSyncKeyData = protoMessage?.AppStateSyncKeyData;
|
|
26
28
|
const bridge: BaileysAuthBridge = {
|
|
27
29
|
initAuthCreds: baileys.initAuthCreds,
|
|
28
30
|
BufferJSON: baileys.BufferJSON,
|
|
29
|
-
...(
|
|
31
|
+
...(appStateSyncKeyData
|
|
30
32
|
? {
|
|
31
33
|
reviveAppStateSyncKey: (value: unknown) =>
|
|
32
|
-
|
|
34
|
+
appStateSyncKeyData.fromObject(value as Record<string, unknown>),
|
|
33
35
|
}
|
|
34
36
|
: {}),
|
|
35
37
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { newTurnId } from '@moxxy/core';
|
|
2
2
|
import { FramePump, PlainTurnRenderer, driveTurn, subscribeTurn } from '@moxxy/channel-kit';
|
|
3
|
-
import type
|
|
3
|
+
import { assertDefined, type ClientSession as Session } from '@moxxy/sdk';
|
|
4
4
|
import type { WaMessageKey, WhatsAppSocket } from '../socket.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -116,8 +116,10 @@ export async function runWhatsAppTurn(
|
|
|
116
116
|
send: async (t) => sendChunks(splitWhatsAppText(t)),
|
|
117
117
|
edit: async (key, t, final) => {
|
|
118
118
|
const chunks = splitWhatsAppText(t);
|
|
119
|
+
const head = chunks[0];
|
|
120
|
+
assertDefined(head, 'whatsapp: splitWhatsAppText always yields at least one chunk');
|
|
119
121
|
try {
|
|
120
|
-
await socket.editText(jid, key,
|
|
122
|
+
await socket.editText(jid, key, head);
|
|
121
123
|
} catch (err) {
|
|
122
124
|
logger?.warn?.('whatsapp edit failed', { err: String(err), final });
|
|
123
125
|
if (final) {
|
package/src/channel.test.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as path from 'node:path';
|
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
5
|
import { Session, autoAllowResolver, silentLogger } from '@moxxy/core';
|
|
6
6
|
import { FakeProvider, streamingTextReply } from '@moxxy/testing';
|
|
7
|
-
import { definePlugin, defineProvider, defineTranscriber } from '@moxxy/sdk';
|
|
7
|
+
import { assertDefined, definePlugin, defineProvider, defineTranscriber } from '@moxxy/sdk';
|
|
8
8
|
import { defaultModePlugin } from '@moxxy/mode-default';
|
|
9
9
|
import { VaultStore, createStaticKeySource, deriveKey, generateSalt } from '@moxxy/plugin-vault';
|
|
10
10
|
import { WhatsAppChannel } from './channel.js';
|
|
@@ -218,7 +218,8 @@ describe('WhatsAppChannel.start', () => {
|
|
|
218
218
|
const turnsBefore = provider.received.length;
|
|
219
219
|
|
|
220
220
|
// Feed the channel's own last send back as an inbound (fromMe echo).
|
|
221
|
-
const lastOut = fake.sent[fake.sent.length - 1]
|
|
221
|
+
const lastOut = fake.sent[fake.sent.length - 1];
|
|
222
|
+
assertDefined(lastOut, 'the channel sent at least one message');
|
|
222
223
|
// Reconstruct the outbound key id: the fake numbers them out-N; grab it via
|
|
223
224
|
// a fresh send to learn the id shape isn't needed — echo by a known own id.
|
|
224
225
|
fake.inbound({ key: { remoteJid: OWNER, fromMe: true, id: 'out-1' }, message: { conversation: lastOut.text } });
|
package/src/keys.ts
CHANGED
|
@@ -33,7 +33,7 @@ export function normalizeJid(raw: string | null | undefined): string | null {
|
|
|
33
33
|
const server = trimmed.slice(at + 1).toLowerCase();
|
|
34
34
|
if (!/^[a-z0-9.-]+$/.test(server)) return null;
|
|
35
35
|
// Strip the device (`:NN`) and legacy agent (`_N`) suffixes off the user part.
|
|
36
|
-
const user = trimmed.slice(0, at).split(':')[0]
|
|
36
|
+
const user = (trimmed.slice(0, at).split(':')[0] ?? '').split('_')[0] ?? '';
|
|
37
37
|
if (user.length === 0) return null;
|
|
38
38
|
return `${user}@${server}`;
|
|
39
39
|
}
|
package/src/permission.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
assertDefined,
|
|
2
3
|
createDeferredPermissionResolver,
|
|
3
4
|
type DeferredPermissionResolver,
|
|
4
5
|
type PendingToolCall,
|
|
@@ -98,7 +99,8 @@ export function createWhatsAppPermissionController(): WhatsAppPermissionControll
|
|
|
98
99
|
if (pending.length === 0) return false;
|
|
99
100
|
const decision = parsePermissionReply(text);
|
|
100
101
|
if (!decision) return false;
|
|
101
|
-
const prompt = pending.shift()
|
|
102
|
+
const prompt = pending.shift();
|
|
103
|
+
assertDefined(prompt, 'pending is non-empty past the length guard above');
|
|
102
104
|
prompt.resolve(decision);
|
|
103
105
|
return true;
|
|
104
106
|
},
|
package/src/subcommands.test.ts
CHANGED
|
@@ -30,7 +30,7 @@ beforeEach(async () => {
|
|
|
30
30
|
filePath: path.join(tmp, 'vault.json'),
|
|
31
31
|
keySource: createStaticKeySource(deriveKey('test', generateSalt())),
|
|
32
32
|
});
|
|
33
|
-
def = buildWhatsAppPlugin({ vault }).channels
|
|
33
|
+
def = (buildWhatsAppPlugin({ vault }).channels ?? [])[0] as ChannelDef;
|
|
34
34
|
writeOut = [];
|
|
35
35
|
writeErr = [];
|
|
36
36
|
origOut = process.stdout.write.bind(process.stdout);
|
|
@@ -74,7 +74,7 @@ describe('whatsapp channel def', () => {
|
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it('exposes setup, pair, status, unpair subcommands', () => {
|
|
77
|
-
expect(Object.keys(def.subcommands
|
|
77
|
+
expect(Object.keys(def.subcommands ?? {})).toEqual(
|
|
78
78
|
expect.arrayContaining(['setup', 'pair', 'status', 'unpair']),
|
|
79
79
|
);
|
|
80
80
|
});
|
|
@@ -87,22 +87,22 @@ describe('whatsapp channel def', () => {
|
|
|
87
87
|
|
|
88
88
|
describe('isAvailable (consent gate + link state)', () => {
|
|
89
89
|
it('is unavailable without consent, naming the ToS risk', async () => {
|
|
90
|
-
const avail = await def.isAvailable
|
|
91
|
-
expect(avail
|
|
92
|
-
expect(avail
|
|
90
|
+
const avail = await def.isAvailable?.({ cwd: tmp, vault });
|
|
91
|
+
expect(avail?.ok).toBe(false);
|
|
92
|
+
expect(avail?.reason).toMatch(/ToS|acknowledg|ban/i);
|
|
93
93
|
});
|
|
94
94
|
|
|
95
95
|
it('is unavailable-but-needs-pairing once consent is given', async () => {
|
|
96
96
|
process.env[WHATSAPP_CONSENT_ENV] = 'yes';
|
|
97
|
-
const avail = await def.isAvailable
|
|
98
|
-
expect(avail
|
|
99
|
-
expect(avail
|
|
97
|
+
const avail = await def.isAvailable?.({ cwd: tmp, vault });
|
|
98
|
+
expect(avail?.ok).toBe(false);
|
|
99
|
+
expect(avail?.reason).toMatch(/pair/i);
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
describe('status subcommand', () => {
|
|
104
104
|
it('reports needs-consent when nothing configured', async () => {
|
|
105
|
-
const code = await def.subcommands
|
|
105
|
+
const code = await def.subcommands?.status?.run(ctx());
|
|
106
106
|
expect(code).toBe(0);
|
|
107
107
|
const parsed = JSON.parse(writeOut.join(''));
|
|
108
108
|
expect(parsed.state).toBe('needs-consent');
|
|
@@ -112,7 +112,7 @@ describe('status subcommand', () => {
|
|
|
112
112
|
|
|
113
113
|
it('reports needs-pairing after consent but before linking', async () => {
|
|
114
114
|
await vault.set(WHATSAPP_CONSENT_KEY, 'acknowledged@2026-01-01T00:00:00.000Z');
|
|
115
|
-
const code = await def.subcommands
|
|
115
|
+
const code = await def.subcommands?.status?.run(ctx());
|
|
116
116
|
expect(code).toBe(0);
|
|
117
117
|
const parsed = JSON.parse(writeOut.join(''));
|
|
118
118
|
expect(parsed.state).toBe('needs-pairing');
|
|
@@ -123,7 +123,7 @@ describe('status subcommand', () => {
|
|
|
123
123
|
await vault.set(WHATSAPP_CONSENT_KEY, 'yes');
|
|
124
124
|
await vault.set(WHATSAPP_OWNER_JID_KEY, '15550000000@s.whatsapp.net');
|
|
125
125
|
await vault.set(WHATSAPP_ALLOWED_JIDS_KEY, JSON.stringify(['15551111111@s.whatsapp.net']));
|
|
126
|
-
const code = await def.subcommands
|
|
126
|
+
const code = await def.subcommands?.status?.run(ctx());
|
|
127
127
|
expect(code).toBe(0);
|
|
128
128
|
const parsed = JSON.parse(writeOut.join(''));
|
|
129
129
|
expect(parsed.ownerJid).toBe('15550000000@s.whatsapp.net');
|
|
@@ -137,7 +137,7 @@ describe('status subcommand', () => {
|
|
|
137
137
|
startChannel: async () => 0,
|
|
138
138
|
session: { setPermissionResolver: () => {} },
|
|
139
139
|
} as never;
|
|
140
|
-
const code = await def.subcommands
|
|
140
|
+
const code = await def.subcommands?.status?.run(badCtx);
|
|
141
141
|
expect(code).toBe(1);
|
|
142
142
|
expect(writeErr.join('')).toContain('vault unavailable');
|
|
143
143
|
});
|
|
@@ -145,7 +145,7 @@ describe('status subcommand', () => {
|
|
|
145
145
|
|
|
146
146
|
describe('unpair subcommand', () => {
|
|
147
147
|
it('is a no-op when nothing is linked', async () => {
|
|
148
|
-
const code = await def.subcommands
|
|
148
|
+
const code = await def.subcommands?.unpair?.run(ctx());
|
|
149
149
|
expect(code).toBe(0);
|
|
150
150
|
expect(writeOut.join('')).toContain('no linked account');
|
|
151
151
|
});
|
|
@@ -157,7 +157,7 @@ describe('pair subcommand', () => {
|
|
|
157
157
|
Object.defineProperty(process.stdin, 'isTTY', { value: false, configurable: true });
|
|
158
158
|
try {
|
|
159
159
|
const startChannel = vi.fn(async () => 0);
|
|
160
|
-
const code = await def.subcommands
|
|
160
|
+
const code = await def.subcommands?.pair?.run(ctx({ startChannel }));
|
|
161
161
|
expect(code).toBe(1);
|
|
162
162
|
expect(startChannel).not.toHaveBeenCalled();
|
|
163
163
|
expect(writeErr.join('')).toMatch(/TTY/);
|
|
@@ -173,7 +173,7 @@ describe('setup subcommand (headless)', () => {
|
|
|
173
173
|
Object.defineProperty(process.stdin, 'isTTY', { value: false, configurable: true });
|
|
174
174
|
try {
|
|
175
175
|
const startChannel = vi.fn(async () => 0);
|
|
176
|
-
const code = await def.subcommands
|
|
176
|
+
const code = await def.subcommands?.setup?.run(ctx({ startChannel }));
|
|
177
177
|
expect(code).toBe(1);
|
|
178
178
|
expect(startChannel).not.toHaveBeenCalled();
|
|
179
179
|
expect(writeErr.join('')).toMatch(/acknowledg|ToS|ban/i);
|
|
@@ -188,7 +188,7 @@ describe('setup subcommand (headless)', () => {
|
|
|
188
188
|
Object.defineProperty(process.stdin, 'isTTY', { value: false, configurable: true });
|
|
189
189
|
try {
|
|
190
190
|
const startChannel = vi.fn(async () => 0);
|
|
191
|
-
const code = await def.subcommands
|
|
191
|
+
const code = await def.subcommands?.setup?.run(ctx({ startChannel }));
|
|
192
192
|
expect(code).toBe(0);
|
|
193
193
|
expect(startChannel).toHaveBeenCalledTimes(1);
|
|
194
194
|
} finally {
|