@openclaw/whatsapp 2026.5.27 → 2026.5.28-beta.2
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/{access-control-tKMSybhe.js → access-control-Z0fYaWrx.js} +11 -3
- package/dist/{action-runtime-ClWX76J7.js → action-runtime-BdhkGtaP.js} +1 -2
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/{active-listener-B4SDebQ6.js → active-listener-CFwkn3ho.js} +1 -1
- package/dist/{agent-tools-login-BDzvb3ee.js → agent-tools-login-BX7eHgDm.js} +5 -3
- package/dist/api.js +7 -9
- package/dist/{approval-handler.runtime-CnM8rqpB.js → approval-handler.runtime-C25wPeBf.js} +6 -23
- package/dist/{channel-DeRnX7Dx.js → channel-CeSu_mqS.js} +149 -108
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-react-action-Bo_hIjzN.js → channel-react-action-Cd2qkLqp.js} +2 -2
- package/dist/{channel.runtime-C08TFa-d.js → channel.runtime-S9MB6sub.js} +4 -4
- package/dist/{channel.setup-CtTHpu8o.js → channel.setup-BNqtW-u1.js} +1 -1
- package/dist/{connection-controller-ja6z4F_k.js → connection-controller-BZuzYCGM.js} +2 -3
- package/dist/contract-api.js +1 -2
- package/dist/light-runtime-api.js +5 -5
- package/dist/{login-1rs_uPW-.js → login-1yyBrXTL.js} +3 -3
- package/dist/{login-qr-CdhkC9Ij.js → login-qr-6DdwGlkz.js} +2 -2
- package/dist/login-qr-runtime.js +1 -1
- package/dist/{monitor-BdKlBuaK.js → monitor-CzL4sZSN.js} +9 -9
- package/dist/runtime-api.js +9 -9
- package/dist/{send-D0iPQBMX.js → send-C4LG-Cl6.js} +199 -11
- package/dist/{send-api-3hUuzYv1.js → send-api-C66vkRl9.js} +1 -1
- package/dist/{session-CDgpDc0l.js → session-D8UW2Vbn.js} +13 -10
- package/dist/{session-errors-BAj9D2La.js → session-errors-CbsoQqoy.js} +22 -1
- package/dist/{setup-core-cgB2JDjU.js → setup-core-C2os03mR.js} +2 -2
- package/dist/{setup-finalize-CCZdGnko.js → setup-finalize-IDTrWXtX.js} +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BouY1WI8.js → setup-surface-BOhQVZqy.js} +1 -1
- package/npm-shrinkwrap.json +3 -26
- package/openclaw.plugin.json +18 -0
- package/package.json +4 -6
- package/dist/connection-controller-registry-TSX_udJp.js +0 -22
- package/dist/outbound-adapter-CcNeZvD_.js +0 -30
- package/dist/outbound-base-MHdfVWvv.js +0 -125
- package/dist/outbound-media-contract-B3Y-9slb.js +0 -184
- package/dist/outbound-payload-test-api.js +0 -2
- package/dist/reaction-level-BF3d5IgO.js +0 -16
- package/dist/runtime-group-policy-DeSRFXEV.js +0 -11
- package/dist/test-api.js +0 -3
- package/node_modules/agent-base/LICENSE +0 -22
- package/node_modules/agent-base/README.md +0 -69
- package/node_modules/agent-base/dist/helpers.d.ts +0 -10
- package/node_modules/agent-base/dist/helpers.d.ts.map +0 -1
- package/node_modules/agent-base/dist/helpers.js +0 -37
- package/node_modules/agent-base/dist/helpers.js.map +0 -1
- package/node_modules/agent-base/dist/index.d.ts +0 -37
- package/node_modules/agent-base/dist/index.d.ts.map +0 -1
- package/node_modules/agent-base/dist/index.js +0 -146
- package/node_modules/agent-base/dist/index.js.map +0 -1
- package/node_modules/agent-base/package.json +0 -46
- package/node_modules/https-proxy-agent/LICENSE +0 -22
- package/node_modules/https-proxy-agent/README.md +0 -70
- package/node_modules/https-proxy-agent/dist/index.d.ts +0 -43
- package/node_modules/https-proxy-agent/dist/index.d.ts.map +0 -1
- package/node_modules/https-proxy-agent/dist/index.js +0 -150
- package/node_modules/https-proxy-agent/dist/index.js.map +0 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +0 -12
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +0 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -94
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +0 -1
- package/node_modules/https-proxy-agent/package.json +0 -50
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { a as resolveWhatsAppAccount } from "./accounts-BMGM1RtF.js";
|
|
2
2
|
import { l as isSelfChatMode, n as normalizeE164 } from "./text-runtime-Dk37KYHj.js";
|
|
3
3
|
import { a as getSelfIdentity, o as getSenderIdentity } from "./identity-xoLLdqEv.js";
|
|
4
|
-
import { t as resolveWhatsAppRuntimeGroupPolicy } from "./runtime-group-policy-DeSRFXEV.js";
|
|
5
4
|
import { defaultRuntime } from "openclaw/plugin-sdk/runtime-env";
|
|
6
5
|
import { resolveChannelGroupPolicy, resolveChannelGroupRequireMention } from "openclaw/plugin-sdk/channel-policy";
|
|
7
6
|
import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
|
|
8
7
|
import { upsertChannelPairingRequest } from "openclaw/plugin-sdk/conversation-runtime";
|
|
9
|
-
import { resolveDefaultGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
8
|
+
import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
10
9
|
import { resolveStableChannelMessageIngress } from "openclaw/plugin-sdk/channel-ingress-runtime";
|
|
11
10
|
import { resolveGroupSessionKey } from "openclaw/plugin-sdk/session-store-runtime";
|
|
11
|
+
//#region extensions/whatsapp/src/runtime-group-policy.ts
|
|
12
|
+
function resolveWhatsAppRuntimeGroupPolicy(params) {
|
|
13
|
+
return resolveOpenProviderRuntimeGroupPolicy({
|
|
14
|
+
providerConfigPresent: params.providerConfigPresent,
|
|
15
|
+
groupPolicy: params.groupPolicy,
|
|
16
|
+
defaultGroupPolicy: params.defaultGroupPolicy
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
12
20
|
//#region extensions/whatsapp/src/inbound-policy.ts
|
|
13
21
|
function normalizeWhatsAppIngressPhone(value) {
|
|
14
22
|
const trimmed = value.trim();
|
|
@@ -240,4 +248,4 @@ async function checkInboundAccessControl(params) {
|
|
|
240
248
|
}
|
|
241
249
|
const testing = { resolveWhatsAppInboundPolicy };
|
|
242
250
|
//#endregion
|
|
243
|
-
export { resolveWhatsAppInboundPolicy as i, testing as n, resolveWhatsAppCommandAuthorized as r, checkInboundAccessControl as t };
|
|
251
|
+
export { resolveWhatsAppRuntimeGroupPolicy as a, resolveWhatsAppInboundPolicy as i, testing as n, resolveWhatsAppCommandAuthorized as r, checkInboundAccessControl as t };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { a as resolveWhatsAppAccount } from "./accounts-BMGM1RtF.js";
|
|
2
2
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CcdugbDf.js";
|
|
3
|
-
import {
|
|
4
|
-
import { r as sendReactionWhatsApp } from "./send-D0iPQBMX.js";
|
|
3
|
+
import { g as resolveWhatsAppReactionLevel, r as sendReactionWhatsApp } from "./send-C4LG-Cl6.js";
|
|
5
4
|
import { ToolAuthorizationError, createActionGate, jsonResult, readReactionParams, readStringParam } from "openclaw/plugin-sdk/channel-actions";
|
|
6
5
|
//#region extensions/whatsapp/src/action-runtime-target-auth.ts
|
|
7
6
|
function resolveAuthorizedWhatsAppOutboundTarget(params) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as handleWhatsAppAction } from "./action-runtime-
|
|
1
|
+
import { t as handleWhatsAppAction } from "./action-runtime-BdhkGtaP.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-BdhkGtaP.js";
|
|
2
2
|
export { handleWhatsAppAction };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js";
|
|
2
|
-
import {
|
|
2
|
+
import { r as getRegisteredWhatsAppConnectionController } from "./session-errors-CbsoQqoy.js";
|
|
3
3
|
//#region extensions/whatsapp/src/active-listener.ts
|
|
4
4
|
function resolveWebAccountId(params) {
|
|
5
5
|
return (params.accountId ?? "").trim() || resolveDefaultWhatsAppAccountId(params.cfg);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { startWebLoginWithQr, waitForWebLogin } from "./login-qr-runtime.js";
|
|
2
2
|
import "./login-qr-api.js";
|
|
3
|
+
import { optionalPositiveIntegerSchema, readPositiveIntegerParam } from "openclaw/plugin-sdk/channel-actions";
|
|
3
4
|
import { Type } from "typebox";
|
|
4
5
|
//#region extensions/whatsapp/src/agent-tools-login.ts
|
|
5
6
|
const QR_DATA_URL_MAX_LENGTH = 16384;
|
|
@@ -16,7 +17,7 @@ function createWhatsAppLoginTool() {
|
|
|
16
17
|
type: "string",
|
|
17
18
|
enum: ["start", "wait"]
|
|
18
19
|
}),
|
|
19
|
-
timeoutMs:
|
|
20
|
+
timeoutMs: optionalPositiveIntegerSchema(),
|
|
20
21
|
force: Type.Optional(Type.Boolean()),
|
|
21
22
|
accountId: Type.Optional(Type.String()),
|
|
22
23
|
currentQrDataUrl: Type.Optional(Type.String({
|
|
@@ -45,10 +46,11 @@ function createWhatsAppLoginTool() {
|
|
|
45
46
|
};
|
|
46
47
|
const action = args?.action ?? "start";
|
|
47
48
|
const accountId = readOptionalString(args.accountId);
|
|
49
|
+
const timeoutMs = readPositiveIntegerParam(args, "timeoutMs");
|
|
48
50
|
if (action === "wait") {
|
|
49
51
|
const result = await waitForWebLogin({
|
|
50
52
|
accountId,
|
|
51
|
-
timeoutMs
|
|
53
|
+
timeoutMs,
|
|
52
54
|
currentQrDataUrl: readOptionalString(args.currentQrDataUrl)
|
|
53
55
|
});
|
|
54
56
|
if (result.qrDataUrl) return renderQrReply({
|
|
@@ -66,7 +68,7 @@ function createWhatsAppLoginTool() {
|
|
|
66
68
|
}
|
|
67
69
|
const result = await startWebLoginWithQr({
|
|
68
70
|
accountId,
|
|
69
|
-
timeoutMs
|
|
71
|
+
timeoutMs,
|
|
70
72
|
force: typeof args.force === "boolean" ? args.force : false
|
|
71
73
|
});
|
|
72
74
|
if (!result.qrDataUrl) return {
|
package/dist/api.js
CHANGED
|
@@ -2,20 +2,18 @@ import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./acc
|
|
|
2
2
|
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-BMGM1RtF.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-bVWjgftN.js";
|
|
4
4
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CcdugbDf.js";
|
|
5
|
-
import "./
|
|
6
|
-
import "./send-D0iPQBMX.js";
|
|
5
|
+
import "./send-C4LG-Cl6.js";
|
|
7
6
|
import { c as assertWebChannel, d as markdownToWhatsApp, f as resolveJidToE164, l as isSelfChatMode, m as toWhatsappJidWithLid, n as normalizeE164, p as toWhatsappJid, r as resolveUserPath, u as jidToE164 } from "./text-runtime-Dk37KYHj.js";
|
|
8
|
-
import { t as whatsappPlugin } from "./channel-
|
|
9
|
-
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-base-MHdfVWvv.js";
|
|
7
|
+
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-CeSu_mqS.js";
|
|
10
8
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
11
|
-
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint } from "./setup-core-
|
|
9
|
+
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint } from "./setup-core-C2os03mR.js";
|
|
12
10
|
import "./config-schema-CsNDlDpL.js";
|
|
13
|
-
import { t as whatsappSetupPlugin } from "./channel.setup-
|
|
11
|
+
import { t as whatsappSetupPlugin } from "./channel.setup-BNqtW-u1.js";
|
|
14
12
|
import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-HU41RHGI.js";
|
|
15
13
|
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-Dijefxc3.js";
|
|
16
|
-
import { n as testing } from "./access-control-
|
|
17
|
-
import { m as extractText, t as createWebSendApi } from "./send-api-
|
|
18
|
-
import { r as waitForWaConnection, t as createWaSocket } from "./session-
|
|
14
|
+
import { n as testing } from "./access-control-Z0fYaWrx.js";
|
|
15
|
+
import { m as extractText, t as createWebSendApi } from "./send-api-C66vkRl9.js";
|
|
16
|
+
import { r as waitForWaConnection, t as createWaSocket } from "./session-D8UW2Vbn.js";
|
|
19
17
|
import "openclaw/plugin-sdk/channel-actions";
|
|
20
18
|
import "openclaw/plugin-sdk/account-resolution";
|
|
21
19
|
import "openclaw/plugin-sdk/core";
|
|
@@ -1,34 +1,17 @@
|
|
|
1
1
|
import { s as normalizeWhatsAppMessagingTarget } from "./normalize-target-bVWjgftN.js";
|
|
2
|
+
import { f as registerWhatsAppApprovalReactionTarget, i as sendTypingWhatsApp, p as unregisterWhatsAppApprovalReactionTarget, t as sendMessageWhatsApp } from "./send-C4LG-Cl6.js";
|
|
2
3
|
import "./normalize-Bxwqo-bW.js";
|
|
3
|
-
import { c as unregisterWhatsAppApprovalReactionTarget, i as sendTypingWhatsApp, s as registerWhatsAppApprovalReactionTarget, t as sendMessageWhatsApp } from "./send-D0iPQBMX.js";
|
|
4
4
|
import { n as getWhatsAppRuntime } from "./runtime-BfAdAEYT.js";
|
|
5
|
-
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
5
|
import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
|
|
7
6
|
import { buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
8
7
|
import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
9
|
-
import { createChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime";
|
|
10
|
-
import
|
|
8
|
+
import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapter, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
|
|
9
|
+
import "openclaw/plugin-sdk/approval-runtime";
|
|
11
10
|
//#region extensions/whatsapp/src/approval-handler.runtime.ts
|
|
12
11
|
const log = createSubsystemLogger("whatsapp/approvals");
|
|
13
12
|
function buildPendingPayload(params) {
|
|
14
13
|
return buildApprovalReactionPendingContent(params);
|
|
15
14
|
}
|
|
16
|
-
function buildResolvedText(params) {
|
|
17
|
-
if (params.view.approvalKind === "plugin") return buildPluginApprovalResolvedMessage(params.resolved);
|
|
18
|
-
const resolvedByText = params.resolved.resolvedBy ? ` Resolved by ${params.resolved.resolvedBy}.` : "";
|
|
19
|
-
return buildApprovalResolvedReplyPayload({
|
|
20
|
-
approvalId: params.request.id,
|
|
21
|
-
approvalSlug: params.request.id.slice(0, 8),
|
|
22
|
-
text: `✅ Exec approval ${params.resolved.decision}.${resolvedByText} ID: ${params.request.id}`
|
|
23
|
-
}).text ?? "";
|
|
24
|
-
}
|
|
25
|
-
function buildExpiredText(params) {
|
|
26
|
-
if (params.view.approvalKind === "plugin") return buildPluginApprovalExpiredMessage(params.request);
|
|
27
|
-
return `⏱️ Exec approval expired. ID: ${params.request.id}`;
|
|
28
|
-
}
|
|
29
|
-
function resolvePreparedAccountId(params) {
|
|
30
|
-
return normalizeOptionalString(params.plannedAccountId) ?? normalizeOptionalString(params.contextAccountId);
|
|
31
|
-
}
|
|
32
15
|
const whatsappApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
|
|
33
16
|
eventKinds: ["exec", "plugin"],
|
|
34
17
|
availability: {
|
|
@@ -43,7 +26,7 @@ const whatsappApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter(
|
|
|
43
26
|
}),
|
|
44
27
|
buildResolvedResult: ({ request, resolved, view }) => ({
|
|
45
28
|
kind: "update",
|
|
46
|
-
payload: { text:
|
|
29
|
+
payload: { text: buildChannelApprovalResolvedText({
|
|
47
30
|
request,
|
|
48
31
|
resolved,
|
|
49
32
|
view
|
|
@@ -51,7 +34,7 @@ const whatsappApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter(
|
|
|
51
34
|
}),
|
|
52
35
|
buildExpiredResult: ({ request, view }) => ({
|
|
53
36
|
kind: "update",
|
|
54
|
-
payload: { text:
|
|
37
|
+
payload: { text: buildChannelApprovalExpiredText({
|
|
55
38
|
request,
|
|
56
39
|
view
|
|
57
40
|
}) }
|
|
@@ -63,7 +46,7 @@ const whatsappApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter(
|
|
|
63
46
|
if (!to) return null;
|
|
64
47
|
const prepared = {
|
|
65
48
|
to,
|
|
66
|
-
accountId:
|
|
49
|
+
accountId: resolvePreparedApprovalAccountId({
|
|
67
50
|
plannedAccountId: plannedTarget.target.accountId,
|
|
68
51
|
contextAccountId: accountId
|
|
69
52
|
})
|
|
@@ -2,77 +2,53 @@ import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./acc
|
|
|
2
2
|
import { a as resolveWhatsAppAccount } from "./accounts-BMGM1RtF.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-bVWjgftN.js";
|
|
4
4
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CcdugbDf.js";
|
|
5
|
-
import {
|
|
5
|
+
import { a as normalizeWhatsAppOutboundPayload, g as resolveWhatsAppReactionLevel, h as whatsappApprovalAuth, i as sendTypingWhatsApp, m as getWhatsAppApprovalApprovers, n as sendPollWhatsApp, o as normalizeWhatsAppPayloadText, s as normalizeWhatsAppPayloadTextPreservingIndentation, t as sendMessageWhatsApp } from "./send-C4LG-Cl6.js";
|
|
6
6
|
import "./normalize-Bxwqo-bW.js";
|
|
7
|
-
import { i as sendTypingWhatsApp, l as getWhatsAppApprovalApprovers, n as sendPollWhatsApp, t as sendMessageWhatsApp, u as whatsappApprovalAuth } from "./send-D0iPQBMX.js";
|
|
8
7
|
import { n as getWhatsAppRuntime } from "./runtime-BfAdAEYT.js";
|
|
9
|
-
import {
|
|
10
|
-
import { t as createWhatsAppLoginTool } from "./agent-tools-login-
|
|
11
|
-
import {
|
|
8
|
+
import { p as toWhatsappJid } from "./text-runtime-Dk37KYHj.js";
|
|
9
|
+
import { t as createWhatsAppLoginTool } from "./agent-tools-login-BX7eHgDm.js";
|
|
10
|
+
import { i as lookupInboundMessageMetaForTarget } from "./quoted-message-CveINB35.js";
|
|
12
11
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
13
|
-
import { a as resolveWhatsAppGroupRequireMention, c as resolveWhatsAppMentionStripRegexes, i as whatsappSetupWizardProxy, l as formatWhatsAppConfigAllowFromEntries, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, r as loadWhatsAppChannelRuntime, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-
|
|
12
|
+
import { a as resolveWhatsAppGroupRequireMention, c as resolveWhatsAppMentionStripRegexes, i as whatsappSetupWizardProxy, l as formatWhatsAppConfigAllowFromEntries, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, r as loadWhatsAppChannelRuntime, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-C2os03mR.js";
|
|
14
13
|
import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BrKb0mwT.js";
|
|
15
14
|
import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-D_BmQUR9.js";
|
|
16
15
|
import { createActionGate as createActionGate$1 } from "openclaw/plugin-sdk/channel-actions";
|
|
16
|
+
import { DEFAULT_ACCOUNT_ID, listCombinedAccountIds, normalizeOptionalAccountId, resolveListedDefaultAccountId } from "openclaw/plugin-sdk/account-core";
|
|
17
17
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
18
|
-
import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-outbound";
|
|
18
|
+
import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
19
19
|
import { asString, collectIssuesForEnabledAccounts, createAsyncComputedAccountStatusAdapter, createDefaultChannelRuntimeState, isRecord as isRecord$1 } from "openclaw/plugin-sdk/status-helpers";
|
|
20
20
|
import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
|
|
21
21
|
import { buildChannelOutboundSessionRoute } from "openclaw/plugin-sdk/core";
|
|
22
22
|
import { buildApprovalReactionPromptPayloadForRequest } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
23
|
-
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
23
|
+
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
|
|
24
24
|
import { buildDmGroupAccountAllowlistAdapter } from "openclaw/plugin-sdk/allowlist-config-edit";
|
|
25
25
|
import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
26
26
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
27
|
-
import { matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
28
27
|
import { createChannelApprovalCapability, splitChannelApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
29
28
|
import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
30
|
-
import { createChannelApproverDmTargetResolver, createChannelNativeOriginTargetResolver, createNativeApprovalForwardingFallbackSuppressor,
|
|
31
|
-
import { normalizeAccountId as normalizeAccountId$
|
|
29
|
+
import { createChannelApprovalForwardingEvaluator, createChannelApproverDmTargetResolver, createChannelNativeOriginTargetResolver, createNativeApprovalForwardingFallbackSuppressor, nativeApprovalTargetsMatch, resolveApprovalRequestSessionTarget } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
30
|
+
import { normalizeAccountId as normalizeAccountId$2 } from "openclaw/plugin-sdk/routing";
|
|
32
31
|
import { chunkText } from "openclaw/plugin-sdk/reply-chunking";
|
|
32
|
+
import { createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
|
|
33
|
+
import { sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
|
|
33
34
|
//#region extensions/whatsapp/src/approval-native.ts
|
|
34
|
-
const DEFAULT_APPROVAL_FORWARDING_MODE = "session";
|
|
35
35
|
function isWhatsAppApprovalTransportEnabled(params) {
|
|
36
36
|
return resolveWhatsAppAccount({
|
|
37
37
|
cfg: params.cfg,
|
|
38
38
|
accountId: params.accountId
|
|
39
39
|
}).enabled;
|
|
40
40
|
}
|
|
41
|
-
function resolveApprovalKind(request, approvalKind) {
|
|
42
|
-
if (approvalKind) return approvalKind;
|
|
43
|
-
return "command" in request.request ? "exec" : "plugin";
|
|
44
|
-
}
|
|
45
|
-
function resolveApprovalForwardingConfig(params) {
|
|
46
|
-
return params.approvalKind === "plugin" ? params.cfg.approvals?.plugin : params.cfg.approvals?.exec;
|
|
47
|
-
}
|
|
48
|
-
function normalizeApprovalForwardingMode(mode) {
|
|
49
|
-
return mode ?? DEFAULT_APPROVAL_FORWARDING_MODE;
|
|
50
|
-
}
|
|
51
|
-
function approvalModeIncludesSession(mode) {
|
|
52
|
-
return mode === "session" || mode === "both";
|
|
53
|
-
}
|
|
54
|
-
function approvalModeIncludesTargets(mode) {
|
|
55
|
-
return mode === "targets" || mode === "both";
|
|
56
|
-
}
|
|
57
|
-
function matchesForwardingFilters(params) {
|
|
58
|
-
return matchesApprovalRequestFilters({
|
|
59
|
-
request: params.request.request,
|
|
60
|
-
agentFilter: params.config.agentFilter,
|
|
61
|
-
sessionFilter: params.config.sessionFilter,
|
|
62
|
-
fallbackAgentIdFromSessionKey: true
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
41
|
function targetAccountMatchesWhatsAppAccount(params) {
|
|
66
42
|
const targetAccountId = normalizeOptionalString(params.targetAccountId);
|
|
67
43
|
const accountId = normalizeOptionalString(params.accountId);
|
|
68
|
-
if (targetAccountId) return !accountId || normalizeAccountId$
|
|
44
|
+
if (targetAccountId) return !accountId || normalizeAccountId$2(targetAccountId) === normalizeAccountId$2(accountId);
|
|
69
45
|
if (!accountId) return true;
|
|
70
|
-
const normalizedAccountId = normalizeAccountId$
|
|
71
|
-
if (normalizedAccountId === normalizeAccountId$
|
|
46
|
+
const normalizedAccountId = normalizeAccountId$2(accountId);
|
|
47
|
+
if (normalizedAccountId === normalizeAccountId$2(resolveDefaultWhatsAppAccountId(params.cfg))) return true;
|
|
72
48
|
const enabledAccountIds = listAccountIds(params.cfg).filter((candidateAccountId) => isWhatsAppApprovalTransportEnabled({
|
|
73
49
|
cfg: params.cfg,
|
|
74
50
|
accountId: candidateAccountId
|
|
75
|
-
})).map((candidateAccountId) => normalizeAccountId$
|
|
51
|
+
})).map((candidateAccountId) => normalizeAccountId$2(candidateAccountId));
|
|
76
52
|
return enabledAccountIds.length === 1 && enabledAccountIds[0] === normalizedAccountId;
|
|
77
53
|
}
|
|
78
54
|
function normalizeWhatsAppForwardTarget(target) {
|
|
@@ -115,65 +91,16 @@ function hasWhatsAppOriginOrSessionTarget(params) {
|
|
|
115
91
|
accountId: params.accountId
|
|
116
92
|
});
|
|
117
93
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
accountId: params.accountId
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
function canAnyApprovalPotentiallyRouteToWhatsApp(params) {
|
|
132
|
-
return canApprovalPotentiallyRouteToWhatsApp({
|
|
133
|
-
...params,
|
|
134
|
-
approvalKind: "exec"
|
|
135
|
-
}) || canApprovalPotentiallyRouteToWhatsApp({
|
|
136
|
-
...params,
|
|
137
|
-
approvalKind: "plugin"
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
function isWhatsAppSessionApprovalEligible(params) {
|
|
141
|
-
if (!isWhatsAppApprovalTransportEnabled(params)) return false;
|
|
142
|
-
const config = resolveApprovalForwardingConfig(params);
|
|
143
|
-
if (!config?.enabled) return false;
|
|
144
|
-
if (!approvalModeIncludesSession(normalizeApprovalForwardingMode(config.mode))) return false;
|
|
145
|
-
if (!matchesForwardingFilters({
|
|
146
|
-
config,
|
|
147
|
-
request: params.request
|
|
148
|
-
})) return false;
|
|
149
|
-
if (!doesApprovalRequestMatchChannelAccount({
|
|
150
|
-
cfg: params.cfg,
|
|
151
|
-
request: params.request,
|
|
152
|
-
channel: "whatsapp",
|
|
153
|
-
accountId: params.accountId
|
|
154
|
-
})) return false;
|
|
155
|
-
return hasWhatsAppOriginOrSessionTarget({
|
|
156
|
-
cfg: params.cfg,
|
|
157
|
-
accountId: params.accountId,
|
|
158
|
-
request: params.request
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
function isWhatsAppExplicitTargetEligible(params) {
|
|
162
|
-
if (!isWhatsAppApprovalTransportEnabled(params)) return false;
|
|
163
|
-
const config = resolveApprovalForwardingConfig(params);
|
|
164
|
-
if (!config?.enabled) return false;
|
|
165
|
-
if (!approvalModeIncludesTargets(normalizeApprovalForwardingMode(config.mode))) return false;
|
|
166
|
-
if (!matchesForwardingFilters({
|
|
167
|
-
config,
|
|
168
|
-
request: params.request
|
|
169
|
-
})) return false;
|
|
170
|
-
return hasMatchingWhatsAppTarget({
|
|
171
|
-
cfg: params.cfg,
|
|
172
|
-
config,
|
|
173
|
-
accountId: params.accountId,
|
|
174
|
-
target: params.target
|
|
175
|
-
});
|
|
176
|
-
}
|
|
94
|
+
const whatsappApprovalForwarding = createChannelApprovalForwardingEvaluator({
|
|
95
|
+
channel: "whatsapp",
|
|
96
|
+
isTransportEnabled: isWhatsAppApprovalTransportEnabled,
|
|
97
|
+
hasMatchingTarget: hasMatchingWhatsAppTarget,
|
|
98
|
+
hasOriginOrSessionTarget: hasWhatsAppOriginOrSessionTarget
|
|
99
|
+
});
|
|
100
|
+
const canApprovalPotentiallyRouteToWhatsApp = whatsappApprovalForwarding.isPotentialRoute;
|
|
101
|
+
const canAnyApprovalPotentiallyRouteToWhatsApp = whatsappApprovalForwarding.canAnyPotentiallyRoute;
|
|
102
|
+
const isWhatsAppSessionApprovalEligible = whatsappApprovalForwarding.isSessionEligible;
|
|
103
|
+
const isWhatsAppExplicitTargetEligible = whatsappApprovalForwarding.isExplicitTargetEligible;
|
|
177
104
|
function resolveTurnSourceWhatsAppOriginTarget(request) {
|
|
178
105
|
if (normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel) !== "whatsapp") return null;
|
|
179
106
|
const to = normalizeWhatsAppMessagingTarget(request.request.turnSourceTo ?? "");
|
|
@@ -191,10 +118,7 @@ function resolveSessionWhatsAppOriginTarget(sessionTarget) {
|
|
|
191
118
|
} : null;
|
|
192
119
|
}
|
|
193
120
|
function shouldHandleWhatsAppApprovalRequest(params) {
|
|
194
|
-
return
|
|
195
|
-
...params,
|
|
196
|
-
approvalKind: resolveApprovalKind(params.request, params.approvalKind)
|
|
197
|
-
});
|
|
121
|
+
return whatsappApprovalForwarding.shouldHandleRequest(params);
|
|
198
122
|
}
|
|
199
123
|
const resolveWhatsAppOriginTargetBase = createChannelNativeOriginTargetResolver({
|
|
200
124
|
channel: "whatsapp",
|
|
@@ -328,7 +252,7 @@ const whatsappApprovalCapability = createChannelApprovalCapability({
|
|
|
328
252
|
accountId,
|
|
329
253
|
request
|
|
330
254
|
}),
|
|
331
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
255
|
+
load: async () => (await import("./approval-handler.runtime-C25wPeBf.js")).whatsappApprovalNativeRuntime
|
|
332
256
|
})
|
|
333
257
|
});
|
|
334
258
|
splitChannelApprovalCapability(whatsappApprovalCapability);
|
|
@@ -378,6 +302,123 @@ function describeWhatsAppMessageActions(params) {
|
|
|
378
302
|
return { actions: Array.from(actions) };
|
|
379
303
|
}
|
|
380
304
|
//#endregion
|
|
305
|
+
//#region extensions/whatsapp/src/outbound-send-deps.ts
|
|
306
|
+
const WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS = ["sendWhatsApp"];
|
|
307
|
+
//#endregion
|
|
308
|
+
//#region extensions/whatsapp/src/outbound-base.ts
|
|
309
|
+
function resolveQuoteLookupAccountId(cfg, accountId) {
|
|
310
|
+
const explicitAccountId = normalizeOptionalAccountId(accountId);
|
|
311
|
+
if (explicitAccountId) return explicitAccountId;
|
|
312
|
+
const channelCfg = cfg?.channels?.whatsapp;
|
|
313
|
+
return resolveListedDefaultAccountId({
|
|
314
|
+
accountIds: listCombinedAccountIds({
|
|
315
|
+
configuredAccountIds: channelCfg?.accounts && typeof channelCfg.accounts === "object" ? Object.keys(channelCfg.accounts).filter(Boolean) : [],
|
|
316
|
+
fallbackAccountIdWhenEmpty: DEFAULT_ACCOUNT_ID
|
|
317
|
+
}),
|
|
318
|
+
configuredDefaultAccountId: normalizeOptionalAccountId(channelCfg?.defaultAccount)
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
function createWhatsAppOutboundBase({ chunker, sendMessageWhatsApp, sendPollWhatsApp, shouldLogVerbose, resolveTarget, normalizeText = normalizeWhatsAppPayloadText, skipEmptyText = true }) {
|
|
322
|
+
const resolveQuotedMessageKey = (params) => {
|
|
323
|
+
const replyToId = params.replyToId?.trim();
|
|
324
|
+
if (!replyToId) return;
|
|
325
|
+
const targetJid = toWhatsappJid(params.to);
|
|
326
|
+
const cachedMeta = lookupInboundMessageMetaForTarget(params.accountId, targetJid, replyToId);
|
|
327
|
+
return {
|
|
328
|
+
id: replyToId,
|
|
329
|
+
remoteJid: cachedMeta?.remoteJid ?? targetJid,
|
|
330
|
+
fromMe: cachedMeta?.fromMe ?? false,
|
|
331
|
+
participant: cachedMeta?.participant,
|
|
332
|
+
messageText: cachedMeta?.body
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
const outbound = {
|
|
336
|
+
deliveryMode: "gateway",
|
|
337
|
+
chunker,
|
|
338
|
+
chunkerMode: "text",
|
|
339
|
+
textChunkLimit: 4e3,
|
|
340
|
+
sanitizeText: ({ text }) => normalizeText(text),
|
|
341
|
+
deliveryCapabilities: { durableFinal: {
|
|
342
|
+
text: true,
|
|
343
|
+
replyTo: true,
|
|
344
|
+
messageSendingHooks: true
|
|
345
|
+
} },
|
|
346
|
+
pollMaxOptions: 12,
|
|
347
|
+
resolveTarget,
|
|
348
|
+
...createAttachedChannelResultAdapter({
|
|
349
|
+
channel: "whatsapp",
|
|
350
|
+
sendText: async ({ cfg, to, text, accountId, deps, gifPlayback, replyToId }) => {
|
|
351
|
+
const normalizedText = normalizeText(text);
|
|
352
|
+
if (skipEmptyText && !normalizedText) return { messageId: "" };
|
|
353
|
+
const send = resolveOutboundSendDep(deps, "whatsapp", { legacyKeys: WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS }) ?? sendMessageWhatsApp;
|
|
354
|
+
const quotedMessageKey = resolveQuotedMessageKey({
|
|
355
|
+
accountId: resolveQuoteLookupAccountId(cfg, accountId),
|
|
356
|
+
to,
|
|
357
|
+
replyToId
|
|
358
|
+
});
|
|
359
|
+
return await send(to, normalizedText, {
|
|
360
|
+
verbose: false,
|
|
361
|
+
cfg,
|
|
362
|
+
accountId: accountId ?? void 0,
|
|
363
|
+
gifPlayback,
|
|
364
|
+
quotedMessageKey
|
|
365
|
+
});
|
|
366
|
+
},
|
|
367
|
+
sendMedia: async ({ cfg, to, text, mediaUrl, mediaAccess, mediaLocalRoots, mediaReadFile, audioAsVoice, accountId, deps, gifPlayback, forceDocument, replyToId }) => {
|
|
368
|
+
const send = resolveOutboundSendDep(deps, "whatsapp", { legacyKeys: WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS }) ?? sendMessageWhatsApp;
|
|
369
|
+
const quotedMessageKey = resolveQuotedMessageKey({
|
|
370
|
+
accountId: resolveQuoteLookupAccountId(cfg, accountId),
|
|
371
|
+
to,
|
|
372
|
+
replyToId
|
|
373
|
+
});
|
|
374
|
+
return await send(to, normalizeText(text), {
|
|
375
|
+
verbose: false,
|
|
376
|
+
cfg,
|
|
377
|
+
mediaUrl,
|
|
378
|
+
mediaAccess,
|
|
379
|
+
mediaLocalRoots,
|
|
380
|
+
mediaReadFile,
|
|
381
|
+
...audioAsVoice === void 0 ? {} : { audioAsVoice },
|
|
382
|
+
accountId: accountId ?? void 0,
|
|
383
|
+
gifPlayback,
|
|
384
|
+
forceDocument,
|
|
385
|
+
quotedMessageKey
|
|
386
|
+
});
|
|
387
|
+
},
|
|
388
|
+
sendPoll: async ({ cfg, to, poll, accountId }) => await sendPollWhatsApp(to, poll, {
|
|
389
|
+
verbose: shouldLogVerbose(),
|
|
390
|
+
accountId: accountId ?? void 0,
|
|
391
|
+
cfg
|
|
392
|
+
})
|
|
393
|
+
})
|
|
394
|
+
};
|
|
395
|
+
return {
|
|
396
|
+
...outbound,
|
|
397
|
+
sendPayload: async (ctx) => {
|
|
398
|
+
if (ctx.payload.isError === true) return {
|
|
399
|
+
channel: "whatsapp",
|
|
400
|
+
messageId: ""
|
|
401
|
+
};
|
|
402
|
+
const payload = normalizeWhatsAppOutboundPayload(ctx.payload, { normalizeText });
|
|
403
|
+
if (!payload.text && !(payload.mediaUrl || payload.mediaUrls?.length)) {
|
|
404
|
+
if (ctx.payload.interactive || ctx.payload.presentation || ctx.payload.channelData) throw new Error("WhatsApp sendPayload does not support structured-only payloads without text or media.");
|
|
405
|
+
return {
|
|
406
|
+
channel: "whatsapp",
|
|
407
|
+
messageId: ""
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
return await sendTextMediaPayload({
|
|
411
|
+
channel: "whatsapp",
|
|
412
|
+
ctx: {
|
|
413
|
+
...ctx,
|
|
414
|
+
payload
|
|
415
|
+
},
|
|
416
|
+
adapter: outbound
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
//#endregion
|
|
381
422
|
//#region extensions/whatsapp/src/channel-outbound.ts
|
|
382
423
|
function normalizeWhatsAppChannelPayloadText(text) {
|
|
383
424
|
return normalizeWhatsAppPayloadTextPreservingIndentation(text);
|
|
@@ -610,7 +651,7 @@ function collectWhatsAppStatusIssues(accounts) {
|
|
|
610
651
|
//#endregion
|
|
611
652
|
//#region extensions/whatsapp/src/channel.ts
|
|
612
653
|
const loadWhatsAppDirectoryConfig = createLazyRuntimeModule(() => import("./directory-config-Dijefxc3.js").then((n) => n.t));
|
|
613
|
-
const loadWhatsAppChannelReactAction = createLazyRuntimeModule(() => import("./channel-react-action-
|
|
654
|
+
const loadWhatsAppChannelReactAction = createLazyRuntimeModule(() => import("./channel-react-action-Cd2qkLqp.js"));
|
|
614
655
|
function resolveWhatsAppTargetInfo(raw) {
|
|
615
656
|
const normalized = normalizeWhatsAppTarget(raw);
|
|
616
657
|
if (!normalized) return null;
|
|
@@ -721,7 +762,7 @@ const whatsappPlugin = createChatChannelPlugin({
|
|
|
721
762
|
},
|
|
722
763
|
approvalCapability: whatsappApprovalCapability,
|
|
723
764
|
auth: { login: async ({ cfg, accountId, runtime, verbose }) => {
|
|
724
|
-
const resolvedAccountId = accountId?.trim() || whatsappPlugin.config.defaultAccountId?.(cfg) || DEFAULT_ACCOUNT_ID;
|
|
765
|
+
const resolvedAccountId = accountId?.trim() || whatsappPlugin.config.defaultAccountId?.(cfg) || DEFAULT_ACCOUNT_ID$1;
|
|
725
766
|
await (await loadWhatsAppChannelRuntime()).loginWeb(Boolean(verbose), void 0, runtime, resolvedAccountId);
|
|
726
767
|
} },
|
|
727
768
|
lifecycle: { detectLegacyStateMigrations: ({ oauthDir }) => detectWhatsAppLegacyStateMigrations({ oauthDir }) },
|
|
@@ -739,7 +780,7 @@ const whatsappPlugin = createChatChannelPlugin({
|
|
|
739
780
|
}
|
|
740
781
|
},
|
|
741
782
|
status: createAsyncComputedAccountStatusAdapter({
|
|
742
|
-
defaultRuntime: createDefaultChannelRuntimeState(DEFAULT_ACCOUNT_ID, {
|
|
783
|
+
defaultRuntime: createDefaultChannelRuntimeState(DEFAULT_ACCOUNT_ID$1, {
|
|
743
784
|
connected: false,
|
|
744
785
|
reconnectAttempts: 0,
|
|
745
786
|
lastConnectedAt: null,
|
|
@@ -859,4 +900,4 @@ const whatsappPlugin = createChatChannelPlugin({
|
|
|
859
900
|
}
|
|
860
901
|
});
|
|
861
902
|
//#endregion
|
|
862
|
-
export { whatsappPlugin as t };
|
|
903
|
+
export { WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS as n, whatsappPlugin as t };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as whatsappPlugin } from "./channel-
|
|
1
|
+
import { t as whatsappPlugin } from "./channel-CeSu_mqS.js";
|
|
2
2
|
export { whatsappPlugin };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as resolveWhatsAppAccount, s as resolveWhatsAppMediaMaxBytes } from "./accounts-BMGM1RtF.js";
|
|
2
2
|
import { c as normalizeWhatsAppTarget, t as isWhatsAppGroupJid } from "./normalize-target-bVWjgftN.js";
|
|
3
|
-
import { r as resolveAuthorizedWhatsAppOutboundTarget, t as handleWhatsAppAction } from "./action-runtime-
|
|
3
|
+
import { r as resolveAuthorizedWhatsAppOutboundTarget, t as handleWhatsAppAction } from "./action-runtime-BdhkGtaP.js";
|
|
4
|
+
import { t as sendMessageWhatsApp } from "./send-C4LG-Cl6.js";
|
|
4
5
|
import "./normalize-Bxwqo-bW.js";
|
|
5
|
-
import { t as sendMessageWhatsApp } from "./send-D0iPQBMX.js";
|
|
6
6
|
import { jsonResult, readStringOrNumberParam, readStringParam as readStringParam$1, resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
|
|
7
7
|
//#region extensions/whatsapp/src/channel-react-action.ts
|
|
8
8
|
const WHATSAPP_CHANNEL = "whatsapp";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { startWebLoginWithQr as startWebLoginWithQr$1, waitForWebLogin as waitForWebLogin$1 } from "./login-qr-runtime.js";
|
|
2
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-BrKb0mwT.js";
|
|
3
|
-
import { t as getActiveWebListener$1 } from "./active-listener-
|
|
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-
|
|
3
|
+
import { t as getActiveWebListener$1 } from "./active-listener-CFwkn3ho.js";
|
|
4
|
+
import { t as monitorWebChannel$1 } from "./monitor-CzL4sZSN.js";
|
|
5
|
+
import { t as loginWeb$1 } from "./login-1yyBrXTL.js";
|
|
6
|
+
import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-BOhQVZqy.js";
|
|
7
7
|
//#region extensions/whatsapp/src/channel.runtime.ts
|
|
8
8
|
function getActiveWebListener(...args) {
|
|
9
9
|
return getActiveWebListener$1(...args);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./accounts-BMGM1RtF.js";
|
|
2
|
-
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupWizardProxy, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-
|
|
2
|
+
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupWizardProxy, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-C2os03mR.js";
|
|
3
3
|
import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-D_BmQUR9.js";
|
|
4
4
|
//#region extensions/whatsapp/src/channel.setup.ts
|
|
5
5
|
async function isWhatsAppAuthConfigured(account) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as getStatusCode, t as formatError } from "./session-errors-BAj9D2La.js";
|
|
1
|
+
import { a as unregisterWhatsAppConnectionController, i as registerWhatsAppConnectionController, n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
|
|
3
2
|
import { c as logoutWeb } from "./auth-store-BrKb0mwT.js";
|
|
4
|
-
import { r as waitForWaConnection, t as createWaSocket } from "./session-
|
|
3
|
+
import { r as waitForWaConnection, t as createWaSocket } from "./session-D8UW2Vbn.js";
|
|
5
4
|
import { computeBackoff, info, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
|
|
6
5
|
import { clamp } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
7
6
|
import { DisconnectReason } from "baileys";
|
package/dist/contract-api.js
CHANGED
|
@@ -4,8 +4,7 @@ import { t as resolveLegacyGroupSessionKey$1 } from "./group-session-contract-DD
|
|
|
4
4
|
import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-nAzD945y.js";
|
|
5
5
|
import { r as isLegacyGroupSessionKey$1, t as canonicalizeLegacySessionKey$1 } from "./session-contract-DMTm6Q_L.js";
|
|
6
6
|
import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-Dijefxc3.js";
|
|
7
|
-
import {
|
|
8
|
-
import { n as testing } from "./access-control-tKMSybhe.js";
|
|
7
|
+
import { a as resolveWhatsAppRuntimeGroupPolicy$1, n as testing } from "./access-control-Z0fYaWrx.js";
|
|
9
8
|
//#region extensions/whatsapp/contract-api.ts
|
|
10
9
|
const canonicalizeLegacySessionKey = canonicalizeLegacySessionKey$1;
|
|
11
10
|
const isLegacyGroupSessionKey = isLegacyGroupSessionKey$1;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as getStatusCode, t as formatError } from "./session-errors-
|
|
2
|
-
import { t as createWhatsAppLoginTool } from "./agent-tools-login-
|
|
3
|
-
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 } from "./auth-store-BrKb0mwT.js";
|
|
4
|
-
import { t as getActiveWebListener } from "./active-listener-
|
|
5
|
-
export { WA_WEB_AUTH_DIR, createWhatsAppLoginTool, formatError, getActiveWebListener, getStatusCode, getWebAuthAgeMs, logWebSelfId, logoutWeb, pickWebChannel, readWebSelfId, webAuthExists };
|
|
1
|
+
import { n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
|
|
2
|
+
import { t as createWhatsAppLoginTool } from "./agent-tools-login-BX7eHgDm.js";
|
|
3
|
+
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-BrKb0mwT.js";
|
|
4
|
+
import { t as getActiveWebListener } from "./active-listener-CFwkn3ho.js";
|
|
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
2
|
import { a as resolveWhatsAppAccount } from "./accounts-BMGM1RtF.js";
|
|
3
3
|
import { b as restoreCredsFromBackupIfNeeded } from "./auth-store-BrKb0mwT.js";
|
|
4
|
-
import { a as renderQrTerminal, i as resolveWhatsAppSocketTiming, t as createWaSocket } from "./session-
|
|
5
|
-
import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-
|
|
4
|
+
import { a as renderQrTerminal, i as resolveWhatsAppSocketTiming, t as createWaSocket } from "./session-D8UW2Vbn.js";
|
|
5
|
+
import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-BZuzYCGM.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";
|
|
@@ -19,7 +19,7 @@ async function loginWeb(verbose, waitForConnection, runtime = defaultRuntime, ac
|
|
|
19
19
|
const restoredFromBackup = await restoreCredsFromBackupIfNeeded(account.authDir);
|
|
20
20
|
const onQr = (qr) => {
|
|
21
21
|
runtime.log("Open the WhatsApp app, go to Linked Devices, then scan this QR:");
|
|
22
|
-
renderQrTerminal(qr).then((output) => {
|
|
22
|
+
renderQrTerminal(qr, { small: true }).then((output) => {
|
|
23
23
|
runtime.log(output.endsWith("\n") ? output.slice(0, -1) : output);
|
|
24
24
|
}).catch((err) => {
|
|
25
25
|
runtime.error(`failed rendering WhatsApp QR: ${String(err)}`);
|