@openclaw/whatsapp 2026.8.1-beta.2 → 2026.8.1
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/{accounts-BX2fZUyR.js → accounts-CeKQbu_s.js} +9 -26
- package/dist/{action-runtime-B4e3XFOY.js → action-runtime-YA_Yvunu.js} +2 -2
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/{call-tool-api.js → agent-tools-api.js} +11 -4
- package/dist/{agent-tools-login-BjRpD-JQ.js → agent-tools-login-B-2qZPzc.js} +12 -3
- package/dist/api.js +7 -7
- package/dist/{approval-handler.runtime-fgGZhALv.js → approval-handler.runtime-C7jZ8rsD.js} +3 -3
- package/dist/{approval-reactions-CmtJCxe_.js → approval-reactions-rpaNVHzZ.js} +11 -15
- package/dist/{auth-store-B_DQIdzp.js → auth-store-CtpBqH5S.js} +3 -6
- package/dist/{channel-DJVQHz_V.js → channel-Dx09AAmX.js} +11 -13
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-react-action-d6OacTNj.js → channel-react-action-n9a8Hk5i.js} +14 -12
- package/dist/{channel.runtime-RxuNGZ7w.js → channel.runtime-D_PjmeMT.js} +4 -4
- package/dist/{channel.setup-Cmvd967u.js → channel.setup-CRJQiWbh.js} +1 -1
- package/dist/{connection-controller-CUyZgGpf.js → connection-controller-CIYuBJrs.js} +2 -2
- package/dist/{directory-config-Pc4f07wB.js → directory-config-Ci8Jjsw4.js} +3 -3
- package/dist/directory-contract-api.js +1 -1
- package/dist/{group-session-key-DmFc_Cqi.js → group-session-key-CH9jJIVQ.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/light-runtime-api.js +2 -2
- package/dist/{login-D6_rfxTZ.js → login-1u5WcfTn.js} +4 -4
- package/dist/{login-qr-B0VyVSqQ.js → login-qr-B_1sr0hk.js} +38 -17
- package/dist/login-qr-runtime.js +1 -1
- package/dist/{monitor-BCe5Mm-1.js → monitor-CySzv38g.js} +156 -564
- package/dist/{question-reactions-D3eAeB0i.js → question-reactions-B9D6MHXZ.js} +1 -1
- package/dist/runtime-api.js +8 -8
- package/dist/{send-prK8F7Vj.js → send-C3S-NqyO.js} +24 -10
- package/dist/{send-api-DimZST3E.js → send-api-C-FFC1p_.js} +46 -36
- package/dist/{setup-finalize-D3n71Uyx.js → setup-finalize-CRzMpx84.js} +4 -4
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BCZszf3l.js → setup-surface-ym4doiv3.js} +3 -3
- package/dist/{shared-Dp9M3ZPX.js → shared-D3B14d45.js} +12 -6
- package/dist/{socket-close-09FojDO2.js → socket-close-2T0_jZTN.js} +1 -1
- package/node_modules/baileys/lib/Defaults/index.js +1 -1
- package/node_modules/baileys/lib/Socket/business.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/chats.d.ts +1 -0
- package/node_modules/baileys/lib/Socket/chats.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/chats.js +10 -5
- package/node_modules/baileys/lib/Socket/chats.js.map +1 -1
- package/node_modules/baileys/lib/Socket/communities.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/groups.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/index.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/messages-recv.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/messages-send.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/newsletter.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/socket.d.ts.map +1 -1
- package/node_modules/baileys/lib/Socket/socket.js +3 -0
- package/node_modules/baileys/lib/Socket/socket.js.map +1 -1
- package/node_modules/baileys/lib/Types/index.d.ts +1 -0
- package/node_modules/baileys/lib/Types/index.d.ts.map +1 -1
- package/node_modules/baileys/lib/Types/index.js.map +1 -1
- package/node_modules/baileys/lib/Utils/browser-utils.d.ts.map +1 -1
- package/node_modules/baileys/lib/Utils/browser-utils.js +1 -0
- package/node_modules/baileys/lib/Utils/browser-utils.js.map +1 -1
- package/node_modules/baileys/lib/Utils/generics.d.ts +1 -0
- package/node_modules/baileys/lib/Utils/generics.d.ts.map +1 -1
- package/node_modules/baileys/lib/Utils/generics.js +1 -1
- package/node_modules/baileys/lib/Utils/generics.js.map +1 -1
- package/node_modules/baileys/lib/Utils/tc-token-utils.d.ts.map +1 -1
- package/node_modules/baileys/lib/Utils/tc-token-utils.js +3 -2
- package/node_modules/baileys/lib/Utils/tc-token-utils.js.map +1 -1
- package/node_modules/baileys/lib/Utils/validate-connection.d.ts.map +1 -1
- package/node_modules/baileys/lib/Utils/validate-connection.js +9 -2
- package/node_modules/baileys/lib/Utils/validate-connection.js.map +1 -1
- package/node_modules/baileys/node_modules/content-type/README.md +2 -0
- package/node_modules/baileys/node_modules/content-type/dist/index.d.ts +20 -0
- package/node_modules/baileys/node_modules/content-type/dist/index.js +20 -14
- package/node_modules/baileys/node_modules/content-type/dist/index.js.map +1 -1
- package/node_modules/baileys/node_modules/content-type/package.json +1 -1
- package/node_modules/baileys/node_modules/file-type/package.json +1 -1
- package/node_modules/baileys/node_modules/file-type/readme.md +3 -0
- package/node_modules/baileys/node_modules/file-type/source/detectors/zip.js +6 -1
- package/node_modules/baileys/node_modules/file-type/source/index.d.ts +3 -0
- package/node_modules/baileys/node_modules/file-type/source/index.js +25 -13
- package/node_modules/baileys/node_modules/music-metadata/LICENSE.txt +9 -9
- package/node_modules/baileys/node_modules/music-metadata/README.md +878 -878
- package/node_modules/baileys/node_modules/music-metadata/lib/ParseError.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ParseError.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.d.ts +1 -4
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.js +66 -30
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfParser.d.ts +5 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfParser.js +94 -25
- package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfChunk.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfParser.js +38 -13
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.js +2 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4Parser.js +34 -7
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +7 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js +13 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffChunk.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/package.json +156 -156
- package/node_modules/baileys/node_modules/protobufjs/README.md +61 -84
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js +66 -45
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js +47 -40
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js +92 -68
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.js +26 -10
- package/node_modules/baileys/node_modules/protobufjs/index.d.ts +3 -0
- package/node_modules/baileys/node_modules/protobufjs/package.json +1 -1
- package/node_modules/baileys/node_modules/protobufjs/src/converter.js +5 -1
- package/node_modules/baileys/node_modules/protobufjs/src/enum.js +5 -2
- package/node_modules/baileys/node_modules/protobufjs/src/field.js +6 -1
- package/node_modules/baileys/node_modules/protobufjs/src/parse.js +26 -23
- package/node_modules/baileys/node_modules/protobufjs/src/reader.js +36 -9
- package/node_modules/baileys/node_modules/protobufjs/src/util/codegen.js +3 -1
- package/node_modules/baileys/node_modules/protobufjs/src/util/utf8.js +2 -28
- package/node_modules/baileys/node_modules/protobufjs/src/writer.js +7 -1
- package/node_modules/baileys/package.json +1 -1
- package/node_modules/typebox/build/format/date.d.mts +1 -1
- package/node_modules/typebox/build/format/date.mjs +1 -1
- package/node_modules/typebox/build/format/date_time.d.mts +2 -2
- package/node_modules/typebox/build/format/date_time.mjs +3 -3
- package/node_modules/typebox/build/format/email.d.mts +1 -1
- package/node_modules/typebox/build/format/email.mjs +2 -2
- package/node_modules/typebox/build/format/hostname.mjs +2 -10
- package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
- package/node_modules/typebox/build/format/idn_email.mjs +3 -3
- package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
- package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
- package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
- package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
- package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
- package/node_modules/typebox/build/format/idna/index.mjs +2 -0
- package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
- package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
- package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
- package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
- package/node_modules/typebox/build/format/ipv4.mjs +2 -32
- package/node_modules/typebox/build/format/ipv6.mjs +2 -61
- package/node_modules/typebox/build/format/iri.d.mts +2 -2
- package/node_modules/typebox/build/format/iri.mjs +26 -8
- package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
- package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
- package/node_modules/typebox/build/format/regex.d.mts +1 -2
- package/node_modules/typebox/build/format/regex.mjs +2 -6
- package/node_modules/typebox/build/format/time.d.mts +2 -2
- package/node_modules/typebox/build/format/time.mjs +19 -14
- package/node_modules/typebox/build/format/uri.d.mts +1 -1
- package/node_modules/typebox/build/format/uri.mjs +3 -130
- package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
- package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
- package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
- package/node_modules/typebox/build/format/uri_template.mjs +4 -5
- package/node_modules/typebox/build/format/url.d.mts +3 -3
- package/node_modules/typebox/build/format/url.mjs +4 -5
- package/node_modules/typebox/build/guard/emit.d.mts +3 -1
- package/node_modules/typebox/build/guard/emit.mjs +12 -5
- package/node_modules/typebox/build/guard/guard.d.mts +8 -2
- package/node_modules/typebox/build/guard/guard.mjs +25 -4
- package/node_modules/typebox/build/guard/string.d.mts +2 -2
- package/node_modules/typebox/build/guard/string.mjs +7 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
- package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
- package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
- package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
- package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
- package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
- package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
- package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
- package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
- package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
- package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
- package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
- package/node_modules/typebox/build/schema/types/index.mjs +0 -2
- package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
- package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
- package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
- package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
- package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
- package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
- package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
- package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
- package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
- package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
- package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
- package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
- package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
- package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
- package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
- package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
- package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
- package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
- package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
- package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
- package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
- package/node_modules/typebox/build/type/script/parser.mjs +27 -23
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
- package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
- package/node_modules/typebox/package.json +27 -27
- package/node_modules/typebox/readme.md +79 -82
- package/openclaw.plugin.json +2 -1
- package/package.json +6 -6
- package/node_modules/typebox/build/format/_idna.d.mts +0 -2
- package/node_modules/typebox/build/format/_idna.mjs +0 -246
- package/node_modules/typebox/build/format/_puny.d.mts +0 -1
- package/node_modules/typebox/build/format/_puny.mjs +0 -77
- package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
- package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
- package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
- package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
- package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
- package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
|
@@ -2,7 +2,7 @@ import { n as listConfiguredAccountIds, r as resolveDefaultWhatsAppAccountId, t
|
|
|
2
2
|
import { n as hasWebCredsRegularFileSync, r as hasWebCredsSync } from "./creds-files-W6B3EMZ8.js";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { DEFAULT_ACCOUNT_ID,
|
|
5
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId, resolveAccountEntry, resolveMergedAccountConfig, resolveUserPath } from "openclaw/plugin-sdk/account-core";
|
|
6
6
|
import { resolveOAuthDir } from "openclaw/plugin-sdk/state-paths";
|
|
7
7
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
8
|
//#region extensions/whatsapp/src/account-config.ts
|
|
@@ -12,36 +12,19 @@ function resolveWhatsAppDefaultAccountSharedConfig(cfg) {
|
|
|
12
12
|
const { enabled: _ignoredEnabled, name: _ignoredName, authDir: _ignoredAuthDir, selfChatMode: _ignoredSelfChatMode, ...sharedDefaults } = defaultAccount;
|
|
13
13
|
return sharedDefaults;
|
|
14
14
|
}
|
|
15
|
-
function resolveWhatsAppAccountConfigForTest(cfg, accountId) {
|
|
16
|
-
return resolveAccountEntry(cfg.channels?.whatsapp?.accounts, accountId);
|
|
17
|
-
}
|
|
18
|
-
function resolveMergedNamedWhatsAppAccountConfig(params) {
|
|
19
|
-
const rootCfg = params.cfg.channels?.whatsapp;
|
|
20
|
-
const accountConfig = resolveWhatsAppAccountConfigForTest(params.cfg, params.accountId);
|
|
21
|
-
return {
|
|
22
|
-
...mergeAccountConfig({
|
|
23
|
-
channelConfig: rootCfg,
|
|
24
|
-
accountConfig: void 0,
|
|
25
|
-
omitKeys: ["defaultAccount"]
|
|
26
|
-
}),
|
|
27
|
-
...resolveWhatsAppDefaultAccountSharedConfig(params.cfg),
|
|
28
|
-
...accountConfig
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
15
|
function resolveMergedWhatsAppAccountConfig(params) {
|
|
32
16
|
const rootCfg = params.cfg.channels?.whatsapp;
|
|
33
17
|
const accountId = params.accountId?.trim() || rootCfg?.defaultAccount || DEFAULT_ACCOUNT_ID;
|
|
34
|
-
const base = resolveMergedAccountConfig({
|
|
35
|
-
channelConfig: rootCfg,
|
|
36
|
-
accounts: rootCfg?.accounts,
|
|
37
|
-
accountId,
|
|
38
|
-
omitKeys: ["defaultAccount"]
|
|
39
|
-
});
|
|
40
18
|
return {
|
|
41
19
|
accountId,
|
|
42
|
-
...
|
|
43
|
-
|
|
44
|
-
|
|
20
|
+
...resolveMergedAccountConfig({
|
|
21
|
+
channelConfig: {
|
|
22
|
+
...rootCfg,
|
|
23
|
+
...accountId === DEFAULT_ACCOUNT_ID ? void 0 : resolveWhatsAppDefaultAccountSharedConfig(params.cfg)
|
|
24
|
+
},
|
|
25
|
+
accounts: rootCfg?.accounts,
|
|
26
|
+
accountId,
|
|
27
|
+
omitKeys: ["defaultAccount"]
|
|
45
28
|
})
|
|
46
29
|
};
|
|
47
30
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-1GqbT1uX.js";
|
|
3
|
-
import {
|
|
3
|
+
import { r as sendReactionWhatsApp, v as resolveWhatsAppReactionLevel } from "./send-C3S-NqyO.js";
|
|
4
4
|
import { ToolAuthorizationError, createActionGate, jsonResult, readReactionParams, readStringParam } from "openclaw/plugin-sdk/channel-actions";
|
|
5
5
|
//#region extensions/whatsapp/src/action-runtime-target-auth.ts
|
|
6
6
|
function resolveAuthorizedWhatsAppOutboundTarget(params) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as handleWhatsAppAction } from "./action-runtime-
|
|
1
|
+
import { t as handleWhatsAppAction } from "./action-runtime-YA_Yvunu.js";
|
|
2
2
|
export { handleWhatsAppAction };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as handleWhatsAppAction } from "./action-runtime-
|
|
1
|
+
import { t as handleWhatsAppAction } from "./action-runtime-YA_Yvunu.js";
|
|
2
2
|
export { handleWhatsAppAction };
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
3
3
|
import { s as resolveJidToE164 } from "./targets-runtime-TMk0lGuy.js";
|
|
4
|
+
import { n as registerWhatsAppLoginTool } from "./agent-tools-login-B-2qZPzc.js";
|
|
4
5
|
import { createActionGate, stringEnum } from "openclaw/plugin-sdk/channel-actions";
|
|
5
6
|
import path from "node:path";
|
|
6
7
|
import { resolveOAuthDir } from "openclaw/plugin-sdk/state-paths";
|
|
7
8
|
import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
|
|
8
|
-
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
9
|
-
import { Type } from "typebox";
|
|
10
9
|
import fs from "node:fs/promises";
|
|
10
|
+
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
11
11
|
import { mulawToPcm } from "openclaw/plugin-sdk/realtime-voice";
|
|
12
12
|
import { detectBinary } from "openclaw/plugin-sdk/setup-tools";
|
|
13
13
|
import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/temp-path";
|
|
14
14
|
import { jsonResult as jsonResult$1 } from "openclaw/plugin-sdk/tool-results";
|
|
15
|
+
import { Type } from "typebox";
|
|
15
16
|
//#region extensions/whatsapp/src/agent-tools-call.ts
|
|
16
17
|
const MEOWCALLER_COMMAND = "meowcaller";
|
|
17
18
|
const SESSION_DATABASE = "wa-voip.db";
|
|
@@ -222,4 +223,10 @@ function registerWhatsAppCallTool(api) {
|
|
|
222
223
|
api.registerTool((context) => createWhatsAppCallTool(api, context), { name: "whatsapp_call" });
|
|
223
224
|
}
|
|
224
225
|
//#endregion
|
|
225
|
-
|
|
226
|
+
//#region extensions/whatsapp/agent-tools-api.ts
|
|
227
|
+
function registerWhatsAppAgentTools(api) {
|
|
228
|
+
registerWhatsAppCallTool(api);
|
|
229
|
+
registerWhatsAppLoginTool(api);
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
export { registerWhatsAppAgentTools };
|
|
@@ -8,7 +8,8 @@ const QR_DATA_URL_MAX_LENGTH = 16384;
|
|
|
8
8
|
function readLoginStringPreservingWhitespace(value) {
|
|
9
9
|
return hasNonEmptyString(value) ? value : void 0;
|
|
10
10
|
}
|
|
11
|
-
function createWhatsAppLoginTool() {
|
|
11
|
+
function createWhatsAppLoginTool(context) {
|
|
12
|
+
if (context.senderIsOwner !== true) return null;
|
|
12
13
|
return {
|
|
13
14
|
label: "WhatsApp Login",
|
|
14
15
|
name: "whatsapp_login",
|
|
@@ -23,7 +24,10 @@ function createWhatsAppLoginTool() {
|
|
|
23
24
|
pattern: "^data:image/png;base64,.+$"
|
|
24
25
|
}))
|
|
25
26
|
}),
|
|
26
|
-
execute: async (_toolCallId, args) => {
|
|
27
|
+
execute: async (_toolCallId, args, signal) => {
|
|
28
|
+
const beforeCredentialPersistence = async () => {
|
|
29
|
+
if (!signal || signal.aborted) throw new Error("WhatsApp login authority is no longer active.");
|
|
30
|
+
};
|
|
27
31
|
const renderQrReply = (params) => {
|
|
28
32
|
return {
|
|
29
33
|
content: [{
|
|
@@ -64,9 +68,11 @@ function createWhatsAppLoginTool() {
|
|
|
64
68
|
details: { connected: result.connected }
|
|
65
69
|
};
|
|
66
70
|
}
|
|
71
|
+
await beforeCredentialPersistence();
|
|
67
72
|
const result = await startWebLoginWithQr({
|
|
68
73
|
accountId,
|
|
69
74
|
timeoutMs,
|
|
75
|
+
beforeCredentialPersistence,
|
|
70
76
|
force: typeof args.force === "boolean" ? args.force : false
|
|
71
77
|
});
|
|
72
78
|
if (!result.qrDataUrl) return {
|
|
@@ -84,5 +90,8 @@ function createWhatsAppLoginTool() {
|
|
|
84
90
|
}
|
|
85
91
|
};
|
|
86
92
|
}
|
|
93
|
+
function registerWhatsAppLoginTool(api) {
|
|
94
|
+
api.registerTool((context) => createWhatsAppLoginTool(context), { name: "whatsapp_login" });
|
|
95
|
+
}
|
|
87
96
|
//#endregion
|
|
88
|
-
export { createWhatsAppLoginTool as t };
|
|
97
|
+
export { registerWhatsAppLoginTool as n, createWhatsAppLoginTool as t };
|
package/dist/api.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount, i as listWhatsAppAuthDirs, n as hasAnyWhatsAppAuth, o as resolveWhatsAppAuthDir, r as listEnabledWhatsAppAccounts, s as resolveWhatsAppMediaMaxBytes, t as DEFAULT_WHATSAPP_MEDIA_MAX_MB } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount, i as listWhatsAppAuthDirs, n as hasAnyWhatsAppAuth, o as resolveWhatsAppAuthDir, r as listEnabledWhatsAppAccounts, s as resolveWhatsAppMediaMaxBytes, t as DEFAULT_WHATSAPP_MEDIA_MAX_MB } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { a as normalizeWhatsAppAllowFromEntries, c as normalizeWhatsAppTarget, i as looksLikeWhatsAppTargetId, r as isWhatsAppUserTarget, s as normalizeWhatsAppMessagingTarget, t as isWhatsAppGroupJid } from "./normalize-target-CugRyONv.js";
|
|
4
4
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-1GqbT1uX.js";
|
|
5
5
|
import { c as toWhatsappJid, i as markdownToWhatsApp, l as toWhatsappJidWithLid, n as isSelfChatMode, r as jidToE164, s as resolveJidToE164, t as assertWebChannel } from "./targets-runtime-TMk0lGuy.js";
|
|
6
6
|
import { n as resolveUserPath, t as normalizeE164 } from "./text-runtime-CaKLhowd.js";
|
|
7
|
-
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-
|
|
8
|
-
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./shared-
|
|
7
|
+
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-Dx09AAmX.js";
|
|
8
|
+
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./shared-D3B14d45.js";
|
|
9
9
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
10
|
-
import { t as whatsappSetupPlugin } from "./channel.setup-
|
|
10
|
+
import { t as whatsappSetupPlugin } from "./channel.setup-CRJQiWbh.js";
|
|
11
11
|
import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-HU41RHGI.js";
|
|
12
|
-
import { a as waitForWaConnection, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, s as createWhatsAppSocketOperationTimeoutAdapter } from "./socket-close-
|
|
12
|
+
import { a as waitForWaConnection, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, s as createWhatsAppSocketOperationTimeoutAdapter } from "./socket-close-2T0_jZTN.js";
|
|
13
13
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
14
|
-
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-
|
|
15
|
-
import {
|
|
14
|
+
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-Ci8Jjsw4.js";
|
|
15
|
+
import { _ as resolveInboundMediaMimetype, c as extractContextInfo, m as findMessageSection, o as describeReplyContext, p as extractText, t as createWebSendApi, u as extractLocationData } from "./send-api-C-FFC1p_.js";
|
|
16
16
|
import { asBoolean, isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
17
17
|
import { formatLocationText } from "openclaw/plugin-sdk/channel-inbound";
|
|
18
18
|
//#region extensions/whatsapp/src/qa-driver.runtime.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./accounts-
|
|
1
|
+
import "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { s as normalizeWhatsAppMessagingTarget } from "./normalize-target-CugRyONv.js";
|
|
4
|
-
import { i as sendTypingWhatsApp, t as sendMessageWhatsApp } from "./send-
|
|
4
|
+
import { i as sendTypingWhatsApp, t as sendMessageWhatsApp } from "./send-C3S-NqyO.js";
|
|
5
5
|
import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
6
6
|
import "./normalize-C7Hkc_vE.js";
|
|
7
|
-
import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-
|
|
7
|
+
import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-rpaNVHzZ.js";
|
|
8
8
|
import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
|
|
9
9
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
10
10
|
import { buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
2
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
3
3
|
import { n as getOptionalWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
4
|
-
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth } from "./group-session-key-
|
|
4
|
+
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth } from "./group-session-key-CH9jJIVQ.js";
|
|
5
5
|
import { isApprovalNotFoundError } from "openclaw/plugin-sdk/error-runtime";
|
|
6
6
|
import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
|
|
7
|
-
import { approvalReactionDecisionSetsMatch, createApprovalReactionTargetStore, listApprovalReactionBindings, readApprovalReactionDecisionList, readApprovalReactionDeliveredBinding, readApprovalReactionPresentationBinding, resolveTypedApprovalReactionTarget } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
7
|
+
import { approvalReactionDecisionSetsMatch, buildApprovalReactionDeliveredBindingMarker, createApprovalReactionTargetStore, listApprovalReactionBindings, readApprovalReactionDecisionList, readApprovalReactionDeliveredBinding, readApprovalReactionPresentationBinding, resolveTypedApprovalReactionTarget } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
8
8
|
import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
|
|
9
9
|
//#region extensions/whatsapp/src/approval-reactions.ts
|
|
10
10
|
var approval_reactions_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -53,16 +53,15 @@ function reportApprovalBindingCorrelationMismatch(binding) {
|
|
|
53
53
|
}
|
|
54
54
|
function readPersistedTarget(target) {
|
|
55
55
|
const value = target;
|
|
56
|
-
if (!value || typeof value.approvalId !== "string" ||
|
|
56
|
+
if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin") return null;
|
|
57
|
+
const allowedDecisions = readApprovalReactionDecisionList(value.allowedDecisions);
|
|
58
|
+
if (!allowedDecisions) return null;
|
|
57
59
|
return {
|
|
58
60
|
approvalId: value.approvalId,
|
|
59
61
|
approvalKind: value.approvalKind,
|
|
60
|
-
allowedDecisions
|
|
62
|
+
allowedDecisions
|
|
61
63
|
};
|
|
62
64
|
}
|
|
63
|
-
function listWhatsAppApprovalReactionBindings(allowedDecisions) {
|
|
64
|
-
return listApprovalReactionBindings({ allowedDecisions });
|
|
65
|
-
}
|
|
66
65
|
const APPROVAL_ID_LINE_RE = /^\s*ID:\s*(\S(?:.*\S)?)\s*$/i;
|
|
67
66
|
const APPROVAL_KIND_LINE_RE = /^\s*(?:\S+\s+)?(Exec|Plugin) approval required\s*$/i;
|
|
68
67
|
function visibleApprovalBindingMatches(text, binding) {
|
|
@@ -84,11 +83,11 @@ function visibleApprovalBindingMatches(text, binding) {
|
|
|
84
83
|
decisionLines.push(decisionLine);
|
|
85
84
|
cursor += 1;
|
|
86
85
|
}
|
|
87
|
-
const knownBindings =
|
|
86
|
+
const knownBindings = listApprovalReactionBindings({ allowedDecisions: [
|
|
88
87
|
"allow-once",
|
|
89
88
|
"allow-always",
|
|
90
89
|
"deny"
|
|
91
|
-
]);
|
|
90
|
+
] });
|
|
92
91
|
const decisions = readApprovalReactionDecisionList(decisionLines.map((line) => knownBindings.find((entry) => `${entry.emoji} ${entry.label}` === line)?.decision));
|
|
93
92
|
if (!decisions) return false;
|
|
94
93
|
return approvalReactionDecisionSetsMatch(binding.allowedDecisions, decisions);
|
|
@@ -105,17 +104,14 @@ function prepareWhatsAppApprovalPayloadForDelivery(params) {
|
|
|
105
104
|
...params.payload,
|
|
106
105
|
channelData: {
|
|
107
106
|
...params.payload.channelData,
|
|
108
|
-
[DELIVERY_BINDING_CHANNEL_DATA_KEY]:
|
|
109
|
-
version: 1,
|
|
110
|
-
...binding
|
|
111
|
-
}
|
|
107
|
+
[DELIVERY_BINDING_CHANNEL_DATA_KEY]: buildApprovalReactionDeliveredBindingMarker(binding)
|
|
112
108
|
}
|
|
113
109
|
};
|
|
114
110
|
}
|
|
115
111
|
function registerWhatsAppApprovalReactionTarget(params) {
|
|
116
112
|
const key = buildReactionTargetKey(params);
|
|
117
113
|
const approvalId = params.approvalId.trim();
|
|
118
|
-
const allowedDecisions =
|
|
114
|
+
const allowedDecisions = listApprovalReactionBindings({ allowedDecisions: params.allowedDecisions }).map((binding) => binding.decision);
|
|
119
115
|
if (!key || !approvalId || params.approvalKind !== "exec" && params.approvalKind !== "plugin" || allowedDecisions.length === 0) return null;
|
|
120
116
|
const target = {
|
|
121
117
|
approvalId,
|
|
@@ -8,6 +8,7 @@ import { replaceFileAtomic } from "openclaw/plugin-sdk/security-runtime";
|
|
|
8
8
|
import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
|
|
9
9
|
import { defaultRuntime, getChildLogger, info, success } from "openclaw/plugin-sdk/runtime-env";
|
|
10
10
|
import fs from "node:fs/promises";
|
|
11
|
+
import { isPathStrictlyInside } from "openclaw/plugin-sdk/file-access-runtime";
|
|
11
12
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/routing";
|
|
12
13
|
import { enqueueKeyedTask } from "openclaw/plugin-sdk/keyed-async-queue";
|
|
13
14
|
import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
|
|
@@ -333,10 +334,6 @@ async function shouldClearOnLogout(authDir, isLegacyAuthDir) {
|
|
|
333
334
|
return (typeof codeValue === "string" ? codeValue : "") !== "ENOENT";
|
|
334
335
|
}
|
|
335
336
|
}
|
|
336
|
-
function isPathInsideDirectory(baseDir, targetPath) {
|
|
337
|
-
const relativePath = path.relative(baseDir, targetPath);
|
|
338
|
-
return relativePath !== "" && !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
|
|
339
|
-
}
|
|
340
337
|
async function pathHasSymlinkComponent(baseDir, targetPath) {
|
|
341
338
|
const relativePath = path.relative(baseDir, targetPath);
|
|
342
339
|
let currentPath = baseDir;
|
|
@@ -357,10 +354,10 @@ async function isLegacyWebAuthDir(authDir) {
|
|
|
357
354
|
async function classifyWebAuthDirOwnership(authDir) {
|
|
358
355
|
const whatsappAuthBase = path.resolve(resolveOAuthDir$1(), "whatsapp");
|
|
359
356
|
const resolvedAuthDir = path.resolve(authDir);
|
|
360
|
-
if (!
|
|
357
|
+
if (!isPathStrictlyInside(whatsappAuthBase, resolvedAuthDir)) return { kind: "external" };
|
|
361
358
|
const [baseRealPath, authDirRealPath] = await Promise.all([fs.realpath(whatsappAuthBase).catch(() => null), fs.realpath(resolvedAuthDir).catch(() => null)]);
|
|
362
359
|
if (!baseRealPath || !authDirRealPath) return { kind: "unsafe-owned" };
|
|
363
|
-
if (!
|
|
360
|
+
if (!isPathStrictlyInside(baseRealPath, authDirRealPath)) return { kind: "unsafe-owned" };
|
|
364
361
|
if (await pathHasSymlinkComponent(whatsappAuthBase, resolvedAuthDir)) return { kind: "unsafe-owned" };
|
|
365
362
|
return {
|
|
366
363
|
kind: "owned",
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { c as normalizeWhatsAppTarget, i as looksLikeWhatsAppTargetId, n as isWhatsAppNewsletterJid, o as normalizeWhatsAppAllowFromEntry, s as normalizeWhatsAppMessagingTarget, t as isWhatsAppGroupJid } from "./normalize-target-CugRyONv.js";
|
|
4
4
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-1GqbT1uX.js";
|
|
5
|
-
import {
|
|
5
|
+
import { c as normalizeWhatsAppPayloadTextPreservingIndentation, i as sendTypingWhatsApp, n as sendPollWhatsApp, o as normalizeWhatsAppOutboundPayload, s as normalizeWhatsAppPayloadText, t as sendMessageWhatsApp, v as resolveWhatsAppReactionLevel } from "./send-C3S-NqyO.js";
|
|
6
6
|
import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
7
7
|
import "./normalize-C7Hkc_vE.js";
|
|
8
8
|
import { c as toWhatsappJid } from "./targets-runtime-TMk0lGuy.js";
|
|
9
9
|
import "./text-runtime-CaKLhowd.js";
|
|
10
|
-
import { t as
|
|
11
|
-
import { c as
|
|
12
|
-
import { a as resolveWhatsAppGroupRequireMention, c as loadWhatsAppChannelRuntime, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, s as formatWhatsAppConfigAllowFromEntries, t as createWhatsAppPluginBase } from "./shared-Dp9M3ZPX.js";
|
|
10
|
+
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth, s as lookupInboundMessageMetaForTarget, t as resolveWhatsAppGroupSessionKey } from "./group-session-key-CH9jJIVQ.js";
|
|
11
|
+
import { a as resolveWhatsAppGroupRequireMention, c as loadWhatsAppChannelRuntime, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, s as formatWhatsAppConfigAllowFromEntries, t as createWhatsAppPluginBase } from "./shared-D3B14d45.js";
|
|
13
12
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
14
|
-
import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-
|
|
13
|
+
import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-CtpBqH5S.js";
|
|
15
14
|
import { createActionGate as createActionGate$1 } from "openclaw/plugin-sdk/channel-actions";
|
|
16
15
|
import { normalizeOptionalAccountId } from "openclaw/plugin-sdk/account-core";
|
|
17
16
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -22,9 +21,9 @@ import { chunkText } from "openclaw/plugin-sdk/reply-chunking";
|
|
|
22
21
|
import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
23
22
|
import { sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
|
|
24
23
|
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
|
|
24
|
+
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
25
25
|
import { buildDmGroupAccountAllowlistAdapter } from "openclaw/plugin-sdk/allowlist-config-edit";
|
|
26
26
|
import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
27
|
-
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
28
27
|
import { createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutes } from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
29
28
|
import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
30
29
|
import { buildApprovalReactionPromptPayloadForRequest } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
@@ -80,7 +79,7 @@ const whatsappApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
|
|
|
80
79
|
approvalKind,
|
|
81
80
|
request
|
|
82
81
|
}),
|
|
83
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
82
|
+
load: async () => (await import("./approval-handler.runtime-C7jZ8rsD.js")).whatsappApprovalNativeRuntime
|
|
84
83
|
})
|
|
85
84
|
});
|
|
86
85
|
function buildWhatsAppPendingPayload(params, approvalKind) {
|
|
@@ -260,8 +259,8 @@ function createWhatsAppOutboundBase({ chunker, sendMessageWhatsApp, sendPollWhat
|
|
|
260
259
|
}
|
|
261
260
|
//#endregion
|
|
262
261
|
//#region extensions/whatsapp/src/channel-outbound.ts
|
|
263
|
-
const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-
|
|
264
|
-
const loadWhatsAppQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-
|
|
262
|
+
const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-rpaNVHzZ.js").then((n) => n.t));
|
|
263
|
+
const loadWhatsAppQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-B9D6MHXZ.js").then((n) => n.n));
|
|
265
264
|
function normalizeWhatsAppChannelPayloadText(text) {
|
|
266
265
|
return normalizeWhatsAppPayloadTextPreservingIndentation(text);
|
|
267
266
|
}
|
|
@@ -525,8 +524,8 @@ function collectWhatsAppStatusIssues(accounts) {
|
|
|
525
524
|
}
|
|
526
525
|
//#endregion
|
|
527
526
|
//#region extensions/whatsapp/src/channel.ts
|
|
528
|
-
const loadWhatsAppDirectoryConfig = createLazyRuntimeModule(() => import("./directory-config-
|
|
529
|
-
const loadWhatsAppChannelReactAction = createLazyRuntimeModule(() => import("./channel-react-action-
|
|
527
|
+
const loadWhatsAppDirectoryConfig = createLazyRuntimeModule(() => import("./directory-config-Ci8Jjsw4.js").then((n) => n.t));
|
|
528
|
+
const loadWhatsAppChannelReactAction = createLazyRuntimeModule(() => import("./channel-react-action-n9a8Hk5i.js"));
|
|
530
529
|
function resolveWhatsAppTargetInfo(raw) {
|
|
531
530
|
const normalized = normalizeWhatsAppTarget(raw);
|
|
532
531
|
if (!normalized) return null;
|
|
@@ -563,7 +562,6 @@ const whatsappPlugin = createChatChannelPlugin({
|
|
|
563
562
|
isConfigured: (account) => Boolean(account.authDir),
|
|
564
563
|
isLinked: async (account) => await readWhatsAppAccountLinkState(account.authDir)
|
|
565
564
|
}),
|
|
566
|
-
agentTools: () => [createWhatsAppLoginTool()],
|
|
567
565
|
allowlist: buildDmGroupAccountAllowlistAdapter({
|
|
568
566
|
channelId: "whatsapp",
|
|
569
567
|
resolveAccount: resolveWhatsAppAccount,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as whatsappPlugin } from "./channel-
|
|
1
|
+
import { t as whatsappPlugin } from "./channel-Dx09AAmX.js";
|
|
2
2
|
export { whatsappPlugin };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount, s as resolveWhatsAppMediaMaxBytes } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount, s as resolveWhatsAppMediaMaxBytes } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { c as normalizeWhatsAppTarget, t as isWhatsAppGroupJid } from "./normalize-target-CugRyONv.js";
|
|
3
|
-
import { r as resolveAuthorizedWhatsAppOutboundTarget, t as handleWhatsAppAction } from "./action-runtime-
|
|
4
|
-
import {
|
|
3
|
+
import { r as resolveAuthorizedWhatsAppOutboundTarget, t as handleWhatsAppAction } from "./action-runtime-YA_Yvunu.js";
|
|
4
|
+
import { a as sendWhatsAppUploadFile } from "./send-C3S-NqyO.js";
|
|
5
5
|
import "./normalize-C7Hkc_vE.js";
|
|
6
6
|
import { jsonResult, readStringOrNumberParam, readStringParam as readStringParam$1, resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
|
|
7
7
|
import { canonicalizeBase64, estimateBase64DecodedBytes } from "openclaw/plugin-sdk/media-runtime";
|
|
@@ -23,17 +23,14 @@ function readWhatsAppActionChatJid(params) {
|
|
|
23
23
|
if (params.toolContext?.currentChannelProvider !== WHATSAPP_CHANNEL || !params.toolContext.currentChannelId) return;
|
|
24
24
|
return normalizeWhatsAppTarget(params.toolContext.currentChannelId) ?? void 0;
|
|
25
25
|
}
|
|
26
|
-
function extractBase64Payload(encoded) {
|
|
27
|
-
return /^data:[^;]+;base64,(.*)$/is.exec(encoded.trim())?.[1] ?? encoded;
|
|
28
|
-
}
|
|
29
26
|
function decodeUploadFileMediaPayload(params) {
|
|
30
|
-
const
|
|
27
|
+
const dataUrl = /^data:([^;]+);base64,(.*)$/is.exec(params.encoded.trim());
|
|
28
|
+
const payload = dataUrl?.[2] ?? params.encoded;
|
|
31
29
|
if (params.maxBytes !== void 0) {
|
|
32
30
|
const estimatedBytes = estimateBase64DecodedBytes(payload);
|
|
33
31
|
if (estimatedBytes > params.maxBytes) throw new Error(`WhatsApp upload-file buffer exceeds configured media limit (${estimatedBytes} bytes > ${params.maxBytes} bytes).`);
|
|
34
32
|
}
|
|
35
|
-
const contentType =
|
|
36
|
-
const fileName = readStringParam$1(params.args, "filename") ?? readStringParam$1(params.args, "fileName");
|
|
33
|
+
const contentType = params.contentType ?? dataUrl?.[1];
|
|
37
34
|
const canonicalPayload = canonicalizeBase64(payload);
|
|
38
35
|
if (!canonicalPayload) throw new Error("WhatsApp upload-file buffer must be valid base64 or a base64 data URL.");
|
|
39
36
|
const buffer = Buffer.from(canonicalPayload, "base64");
|
|
@@ -41,12 +38,14 @@ function decodeUploadFileMediaPayload(params) {
|
|
|
41
38
|
return {
|
|
42
39
|
buffer,
|
|
43
40
|
...contentType ? { contentType } : {},
|
|
44
|
-
...fileName ? { fileName } : {}
|
|
41
|
+
...params.fileName ? { fileName: params.fileName } : {}
|
|
45
42
|
};
|
|
46
43
|
}
|
|
47
44
|
async function handleWhatsAppUploadFileAction(params) {
|
|
48
45
|
const mediaUrl = readUploadFileMediaSource(params.params);
|
|
49
46
|
const encodedPayload = readStringParam$1(params.params, "buffer", { trim: false });
|
|
47
|
+
const contentType = readStringParam$1(params.params, "contentType") ?? readStringParam$1(params.params, "mimeType");
|
|
48
|
+
const fileName = readStringParam$1(params.params, "filename") ?? readStringParam$1(params.params, "fileName");
|
|
50
49
|
if (!mediaUrl && !hasUploadFileBufferPayload(params.params)) throw new Error("WhatsApp upload-file requires media, mediaUrl, filePath, path, fileUrl, or buffer.");
|
|
51
50
|
const to = readWhatsAppActionChatJid(params) ?? readStringParam$1(params.params, "to", { required: true });
|
|
52
51
|
const resolved = resolveAuthorizedWhatsAppOutboundTarget({
|
|
@@ -60,15 +59,18 @@ async function handleWhatsAppUploadFileAction(params) {
|
|
|
60
59
|
accountId: resolved.accountId
|
|
61
60
|
});
|
|
62
61
|
const mediaPayload = encodedPayload ? decodeUploadFileMediaPayload({
|
|
63
|
-
args: params.params,
|
|
64
62
|
encoded: encodedPayload,
|
|
63
|
+
contentType,
|
|
64
|
+
fileName,
|
|
65
65
|
maxBytes: resolveWhatsAppMediaMaxBytes(account)
|
|
66
66
|
}) : void 0;
|
|
67
|
-
const result = await
|
|
67
|
+
const result = await sendWhatsAppUploadFile(resolved.to, readUploadFileCaptionText(params.params), {
|
|
68
68
|
verbose: false,
|
|
69
69
|
cfg: params.cfg,
|
|
70
70
|
...mediaUrl && !mediaPayload ? { mediaUrl } : {},
|
|
71
71
|
...mediaPayload ? { mediaPayload } : {},
|
|
72
|
+
...mediaUrl && !mediaPayload && fileName ? { fileName } : {},
|
|
73
|
+
...mediaUrl && !mediaPayload && contentType ? { contentType } : {},
|
|
72
74
|
mediaAccess: params.mediaAccess,
|
|
73
75
|
mediaLocalRoots: params.mediaLocalRoots,
|
|
74
76
|
mediaReadFile: params.mediaReadFile,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { startWebLoginWithQr as startWebLoginWithQr$1, waitForWebLogin as waitForWebLogin$1 } from "./login-qr-runtime.js";
|
|
2
|
-
import { c as logoutWeb$1, d as readWebAuthExistsBestEffort$1, f as readWebAuthExistsForDecision$1, g as readWebSelfId$1, h as readWebAuthState$1, m as readWebAuthSnapshotBestEffort$1, o as getWebAuthAgeMs$1, p as readWebAuthSnapshot$1, s as logWebSelfId$1, x as webAuthExists$1 } from "./auth-store-
|
|
2
|
+
import { c as logoutWeb$1, d as readWebAuthExistsBestEffort$1, f as readWebAuthExistsForDecision$1, g as readWebSelfId$1, h as readWebAuthState$1, m as readWebAuthSnapshotBestEffort$1, o as getWebAuthAgeMs$1, p as readWebAuthSnapshot$1, s as logWebSelfId$1, x as webAuthExists$1 } from "./auth-store-CtpBqH5S.js";
|
|
3
3
|
import { t as getActiveWebListener$1 } from "./active-listener-BEjWsCNM.js";
|
|
4
|
-
import { t as monitorWebChannel$1 } from "./monitor-
|
|
5
|
-
import { t as loginWeb$1 } from "./login-
|
|
6
|
-
import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-
|
|
4
|
+
import { t as monitorWebChannel$1 } from "./monitor-CySzv38g.js";
|
|
5
|
+
import { t as loginWeb$1 } from "./login-1u5WcfTn.js";
|
|
6
|
+
import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-ym4doiv3.js";
|
|
7
7
|
//#region extensions/whatsapp/src/channel.runtime.ts
|
|
8
8
|
function getActiveWebListener(...args) {
|
|
9
9
|
return getActiveWebListener$1(...args);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, t as createWhatsAppPluginBase } from "./shared-
|
|
1
|
+
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, t as createWhatsAppPluginBase } from "./shared-D3B14d45.js";
|
|
2
2
|
//#region extensions/whatsapp/src/channel.setup.ts
|
|
3
3
|
const whatsappSetupPlugin = { ...createWhatsAppPluginBase({
|
|
4
4
|
groups: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as getWhatsAppChannelRuntime } from "./runtime-BLlToOi6.js";
|
|
2
2
|
import { n as WHATSAPP_CONNECTION_OWNER_PENDING_CAPABILITY, t as WHATSAPP_CONNECTION_CONTROLLER_CAPABILITY } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
3
|
-
import { M as waitForCredsSaveQueueWithTimeout, c as logoutWeb, f as readWebAuthExistsForDecision, k as resolveComparableIdentity, r as WhatsAppAuthUnstableError } from "./auth-store-
|
|
4
|
-
import { a as waitForWaConnection, m as acquireWhatsAppGatewayConnectionOwner, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, t as closeWhatsAppSocketAndWait } from "./socket-close-
|
|
3
|
+
import { M as waitForCredsSaveQueueWithTimeout, c as logoutWeb, f as readWebAuthExistsForDecision, k as resolveComparableIdentity, r as WhatsAppAuthUnstableError } from "./auth-store-CtpBqH5S.js";
|
|
4
|
+
import { a as waitForWaConnection, m as acquireWhatsAppGatewayConnectionOwner, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, t as closeWhatsAppSocketAndWait } from "./socket-close-2T0_jZTN.js";
|
|
5
5
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
6
6
|
import { computeBackoff, info, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
|
|
7
7
|
import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { c as resolveMergedWhatsAppAccountConfig, o as resolveWhatsAppAuthDir } from "./accounts-
|
|
2
|
+
import { c as resolveMergedWhatsAppAccountConfig, o as resolveWhatsAppAuthDir } from "./accounts-CeKQbu_s.js";
|
|
3
3
|
import { c as normalizeWhatsAppTarget, t as isWhatsAppGroupJid } from "./normalize-target-CugRyONv.js";
|
|
4
4
|
import { i as hasPendingWhatsAppConnectionOwner, r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
5
5
|
import "./normalize-C7Hkc_vE.js";
|
|
6
|
-
import { M as waitForCredsSaveQueueWithTimeout, f as readWebAuthExistsForDecision } from "./auth-store-
|
|
6
|
+
import { M as waitForCredsSaveQueueWithTimeout, f as readWebAuthExistsForDecision } from "./auth-store-CtpBqH5S.js";
|
|
7
7
|
import { n as resolveWebAccountId } from "./active-listener-BEjWsCNM.js";
|
|
8
|
-
import { a as waitForWaConnection, h as acquireWhatsAppStandaloneConnectionOwner, n as createWaDirectorySocket, p as WhatsAppConnectionOwnerBusyError, t as closeWhatsAppSocketAndWait } from "./socket-close-
|
|
8
|
+
import { a as waitForWaConnection, h as acquireWhatsAppStandaloneConnectionOwner, n as createWaDirectorySocket, p as WhatsAppConnectionOwnerBusyError, t as closeWhatsAppSocketAndWait } from "./socket-close-2T0_jZTN.js";
|
|
9
9
|
import { listResolvedDirectoryGroupEntriesFromMapKeys, listResolvedDirectoryUserEntriesFromAllowFrom } from "openclaw/plugin-sdk/directory-config-runtime";
|
|
10
10
|
//#region extensions/whatsapp/src/directory-config.ts
|
|
11
11
|
var directory_config_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-
|
|
1
|
+
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-Ci8Jjsw4.js";
|
|
2
2
|
//#region extensions/whatsapp/directory-contract-api.ts
|
|
3
3
|
const whatsappDirectoryContractPlugin = {
|
|
4
4
|
id: "whatsapp",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
2
2
|
import { c as normalizeWhatsAppTarget } from "./normalize-target-CugRyONv.js";
|
|
3
3
|
import "./normalize-C7Hkc_vE.js";
|
|
4
4
|
import { r as jidToE164 } from "./targets-runtime-TMk0lGuy.js";
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineBundledChannelEntry, loadBundledEntryExportSync } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
2
2
|
//#region extensions/whatsapp/index.ts
|
|
3
|
-
function
|
|
3
|
+
function registerWhatsAppAgentTools(api) {
|
|
4
4
|
loadBundledEntryExportSync(import.meta.url, {
|
|
5
|
-
specifier: "./
|
|
6
|
-
exportName: "
|
|
5
|
+
specifier: "./agent-tools-api.js",
|
|
6
|
+
exportName: "registerWhatsAppAgentTools"
|
|
7
7
|
})(api);
|
|
8
8
|
}
|
|
9
9
|
var whatsapp_default = defineBundledChannelEntry({
|
|
@@ -19,7 +19,7 @@ var whatsapp_default = defineBundledChannelEntry({
|
|
|
19
19
|
specifier: "./runtime-setter-api.js",
|
|
20
20
|
exportName: "setWhatsAppRuntime"
|
|
21
21
|
},
|
|
22
|
-
registerFull:
|
|
22
|
+
registerFull: registerWhatsAppAgentTools
|
|
23
23
|
});
|
|
24
24
|
//#endregion
|
|
25
25
|
export { whatsapp_default as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as createWhatsAppLoginTool } from "./agent-tools-login-
|
|
2
|
-
import { c as logoutWeb, g as readWebSelfId, l as pickWebChannel, o as getWebAuthAgeMs, s as logWebSelfId, t as WA_WEB_AUTH_DIR, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-
|
|
1
|
+
import { t as createWhatsAppLoginTool } from "./agent-tools-login-B-2qZPzc.js";
|
|
2
|
+
import { c as logoutWeb, g as readWebSelfId, l as pickWebChannel, o as getWebAuthAgeMs, s as logWebSelfId, t as WA_WEB_AUTH_DIR, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-CtpBqH5S.js";
|
|
3
3
|
import { t as getActiveWebListener } from "./active-listener-BEjWsCNM.js";
|
|
4
4
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
5
5
|
export { WA_WEB_AUTH_DIR, createWhatsAppLoginTool, formatError, getActiveWebListener, getStatusCode, getWebAuthAgeMs, logWebSelfId, logoutWeb, pickWebChannel, readWebSelfId, resolveDefaultWebAuthDir, webAuthExists };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
3
|
-
import { b as restoreCredsFromBackupIfNeeded } from "./auth-store-
|
|
4
|
-
import { f as renderQrTerminal, r as createWaSocket, u as resolveWhatsAppSocketTiming } from "./socket-close-
|
|
5
|
-
import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-
|
|
2
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CeKQbu_s.js";
|
|
3
|
+
import { b as restoreCredsFromBackupIfNeeded } from "./auth-store-CtpBqH5S.js";
|
|
4
|
+
import { f as renderQrTerminal, r as createWaSocket, u as resolveWhatsAppSocketTiming } from "./socket-close-2T0_jZTN.js";
|
|
5
|
+
import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-CIYuBJrs.js";
|
|
6
6
|
import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
|
|
7
7
|
import { logInfo } from "openclaw/plugin-sdk/logging-core";
|
|
8
8
|
import { danger, defaultRuntime, success } from "openclaw/plugin-sdk/runtime-env";
|