@openclaw/whatsapp 2026.5.4-beta.1 → 2026.5.4-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/api.js CHANGED
@@ -5,12 +5,12 @@ import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CN
5
5
  import "./reaction-level-CRVEVAfi.js";
6
6
  import { a as markdownToWhatsApp, i as jidToE164, n as assertWebChannel, o as resolveJidToE164, r as isSelfChatMode, s as toWhatsappJid, t as text_runtime_exports } from "./text-runtime-C1zNiZeO.js";
7
7
  import "./send-CIyLFxdZ.js";
8
- import { t as whatsappPlugin } from "./channel-hbY6bgVQ.js";
8
+ import { t as whatsappPlugin } from "./channel-CEMwkdeB.js";
9
9
  import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-base-Bq1UYEK5.js";
10
10
  import { t as whatsappCommandPolicy } from "./command-policy-O8sRnqUV.js";
11
- import { a as resolveWhatsAppGroupToolPolicy, i as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupIntroHint } from "./shared-Cmuil8Ri.js";
11
+ import { a as resolveWhatsAppGroupToolPolicy, i as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupIntroHint } from "./shared-CXP9PF_T.js";
12
12
  import "./config-schema-Dmo66Ubb.js";
13
- import { t as whatsappSetupPlugin } from "./channel.setup-Dd-A2LLn.js";
13
+ import { t as whatsappSetupPlugin } from "./channel.setup-CrM3owT7.js";
14
14
  import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-DLGCIbfl.js";
15
15
  import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-DVs4ffXu.js";
16
16
  import { t as __testing } from "./access-control-BQ3tCkH8.js";
@@ -10,7 +10,7 @@ import { t as createWhatsAppLoginTool } from "./agent-tools-login-DpRxLNRB.js";
10
10
  import { t as createWhatsAppOutboundBase } from "./outbound-base-Bq1UYEK5.js";
11
11
  import { t as getWhatsAppRuntime } from "./runtime-6fZ67abR.js";
12
12
  import { t as whatsappCommandPolicy } from "./command-policy-O8sRnqUV.js";
13
- import { a as resolveWhatsAppGroupToolPolicy, c as formatWhatsAppConfigAllowFromEntries, i as resolveWhatsAppGroupRequireMention, n as loadWhatsAppChannelRuntime, o as resolveWhatsAppGroupIntroHint, r as whatsappSetupWizardProxy, s as resolveWhatsAppMentionStripRegexes, t as createWhatsAppPluginBase } from "./shared-Cmuil8Ri.js";
13
+ import { a as resolveWhatsAppGroupToolPolicy, c as formatWhatsAppConfigAllowFromEntries, i as resolveWhatsAppGroupRequireMention, n as loadWhatsAppChannelRuntime, o as resolveWhatsAppGroupIntroHint, r as whatsappSetupWizardProxy, s as resolveWhatsAppMentionStripRegexes, t as createWhatsAppPluginBase } from "./shared-CXP9PF_T.js";
14
14
  import { d as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BjCb50Ry.js";
15
15
  import { t as whatsappSetupAdapter } from "./setup-core-DZKvpzbH.js";
16
16
  import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-DnCdvoYD.js";
@@ -1,2 +1,2 @@
1
- import { t as whatsappPlugin } from "./channel-hbY6bgVQ.js";
1
+ import { t as whatsappPlugin } from "./channel-CEMwkdeB.js";
2
2
  export { whatsappPlugin };
@@ -1,9 +1,9 @@
1
1
  import { startWebLoginWithQr as startWebLoginWithQr$1, waitForWebLogin as waitForWebLogin$1 } from "./login-qr-runtime.js";
2
2
  import { a as getWebAuthAgeMs$1, b as webAuthExists$1, d as readWebAuthExistsForDecision$1, f as readWebAuthSnapshot$1, h as readWebSelfId$1, m as readWebAuthState$1, o as logWebSelfId$1, p as readWebAuthSnapshotBestEffort$1, s as logoutWeb$1, u as readWebAuthExistsBestEffort$1 } from "./auth-store-BjCb50Ry.js";
3
3
  import { t as getActiveWebListener$1 } from "./active-listener-N7GFKsuN.js";
4
- import { t as monitorWebChannel$1 } from "./monitor-CiG3ddjv.js";
5
- import { t as loginWeb$1 } from "./login-Cb_Wvr8L.js";
6
- import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-DQbN6Iu0.js";
4
+ import { t as monitorWebChannel$1 } from "./monitor-B8SkX8eu.js";
5
+ import { t as loginWeb$1 } from "./login-ytUQ-aQa.js";
6
+ import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-g3sr5OiF.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 resolveWhatsAppGroupToolPolicy, i as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupIntroHint, r as whatsappSetupWizardProxy, t as createWhatsAppPluginBase } from "./shared-Cmuil8Ri.js";
1
+ import { a as resolveWhatsAppGroupToolPolicy, i as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupIntroHint, r as whatsappSetupWizardProxy, t as createWhatsAppPluginBase } from "./shared-CXP9PF_T.js";
2
2
  import { m as readWebAuthState } from "./auth-store-BjCb50Ry.js";
3
3
  import { t as whatsappSetupAdapter } from "./setup-core-DZKvpzbH.js";
4
4
  import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-DnCdvoYD.js";
@@ -142,7 +142,7 @@ async function createWaSocket(printQr, verbose, opts = {}) {
142
142
  if (qr) {
143
143
  opts.onQr?.(qr);
144
144
  if (printQr) {
145
- console.log("Scan this QR in WhatsApp (Linked Devices):");
145
+ console.log("Open the WhatsApp app, go to Linked Devices, then scan this QR:");
146
146
  printTerminalQr(qr).catch((err) => {
147
147
  sessionLogger.warn({ error: String(err) }, "failed rendering WhatsApp QR");
148
148
  });
@@ -1,6 +1,6 @@
1
1
  import { a as resolveWhatsAppAccount } from "./accounts-BDqgpFEB.js";
2
2
  import { d as readWebAuthExistsForDecision, h as readWebSelfId, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BjCb50Ry.js";
3
- import { a as waitForWhatsAppLoginResult, l as resolveWhatsAppSocketTiming, o as createWaSocket, r as closeWaSocket, t as WHATSAPP_LOGGED_OUT_QR_MESSAGE } from "./connection-controller-Bzopd9NT.js";
3
+ import { a as waitForWhatsAppLoginResult, l as resolveWhatsAppSocketTiming, o as createWaSocket, r as closeWaSocket, t as WHATSAPP_LOGGED_OUT_QR_MESSAGE } from "./connection-controller-BSdlKQ56.js";
4
4
  import { logInfo } from "openclaw/plugin-sdk/text-runtime";
5
5
  import { danger, defaultRuntime, info, success } from "openclaw/plugin-sdk/runtime-env";
6
6
  import { renderQrPngDataUrl } from "openclaw/plugin-sdk/media-runtime";
@@ -1,7 +1,7 @@
1
1
  //#region extensions/whatsapp/login-qr-runtime.ts
2
2
  let loginQrModulePromise = null;
3
3
  function loadLoginQrModule() {
4
- loginQrModulePromise ??= import("./login-qr-BmIHgjH2.js");
4
+ loginQrModulePromise ??= import("./login-qr-DO4oqAQx.js");
5
5
  return loginQrModulePromise;
6
6
  }
7
7
  async function startWebLoginWithQr(...args) {
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-RkAeH_Qm.js";
2
2
  import { a as resolveWhatsAppAccount } from "./accounts-BDqgpFEB.js";
3
3
  import { y as restoreCredsFromBackupIfNeeded } from "./auth-store-BjCb50Ry.js";
4
- import { a as waitForWhatsAppLoginResult, i as closeWaSocketSoon, l as resolveWhatsAppSocketTiming, o as createWaSocket, u as renderQrTerminal } from "./connection-controller-Bzopd9NT.js";
4
+ import { a as waitForWhatsAppLoginResult, i as closeWaSocketSoon, l as resolveWhatsAppSocketTiming, o as createWaSocket, u as renderQrTerminal } from "./connection-controller-BSdlKQ56.js";
5
5
  import { logInfo } from "openclaw/plugin-sdk/text-runtime";
6
6
  import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
7
7
  import { danger, defaultRuntime, success } from "openclaw/plugin-sdk/runtime-env";
@@ -17,7 +17,7 @@ async function loginWeb(verbose, waitForConnection, runtime = defaultRuntime, ac
17
17
  const socketTiming = resolveWhatsAppSocketTiming(cfg);
18
18
  const restoredFromBackup = await restoreCredsFromBackupIfNeeded(account.authDir);
19
19
  const onQr = (qr) => {
20
- runtime.log("Scan this QR in WhatsApp (Linked Devices):");
20
+ runtime.log("Open the WhatsApp app, go to Linked Devices, then scan this QR:");
21
21
  renderQrTerminal(qr, { small: true }).then((output) => {
22
22
  runtime.log(output.endsWith("\n") ? output.slice(0, -1) : output);
23
23
  }).catch((err) => {
@@ -10,7 +10,7 @@ import { n as cacheInboundMessageMeta, r as lookupInboundMessageMeta, t as build
10
10
  import { _ as readWebSelfIdentityForDecision, a as getWebAuthAgeMs, h as readWebSelfId, r as WhatsAppAuthUnstableError, s as logoutWeb } from "./auth-store-BjCb50Ry.js";
11
11
  import { a as getSelfIdentity, c as resolveComparableIdentity, i as getReplyContext, n as getMentionIdentities, o as getSenderIdentity, r as getPrimaryIdentityId, s as identitiesOverlap, t as getComparableIdentityValues } from "./identity-QHAlV7Fu.js";
12
12
  import { i as resolveWhatsAppInboundPolicy, n as checkInboundAccessControl, r as resolveWhatsAppCommandAuthorized } from "./access-control-BQ3tCkH8.js";
13
- import { c as waitForWaConnection, d as DEFAULT_RECONNECT_POLICY, f as computeBackoff, g as sleepWithAbort, h as resolveReconnectPolicy, l as resolveWhatsAppSocketTiming, m as resolveHeartbeatSeconds, n as WhatsAppConnectionController, o as createWaSocket, p as newConnectionId } from "./connection-controller-Bzopd9NT.js";
13
+ import { c as waitForWaConnection, d as DEFAULT_RECONNECT_POLICY, f as computeBackoff, g as sleepWithAbort, h as resolveReconnectPolicy, l as resolveWhatsAppSocketTiming, m as resolveHeartbeatSeconds, n as WhatsAppConnectionController, o as createWaSocket, p as newConnectionId } from "./connection-controller-BSdlKQ56.js";
14
14
  import { resolveAccountEntry } from "openclaw/plugin-sdk/account-core";
15
15
  import { getChildLogger, normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtime";
16
16
  import { createAckReactionHandle, logAckFailure, removeAckReactionHandleAfterReply, shouldAckReactionForWhatsApp } from "openclaw/plugin-sdk/channel-feedback";
@@ -8,8 +8,8 @@ import { n as setWhatsAppRuntime } from "./runtime-6fZ67abR.js";
8
8
  import { C as waitForCredsSaveQueueWithTimeout, S as waitForCredsSaveQueue, _ as readWebSelfIdentityForDecision, a as getWebAuthAgeMs, b as webAuthExists, c as pickWebChannel, d as readWebAuthExistsForDecision, f as readWebAuthSnapshot, g as readWebSelfIdentity, h as readWebSelfId, i as formatWhatsAppWebAuthStatusState, l as readCredsJsonRaw, m as readWebAuthState, n as WHATSAPP_AUTH_UNSTABLE_CODE, o as logWebSelfId, p as readWebAuthSnapshotBestEffort, r as WhatsAppAuthUnstableError, s as logoutWeb, t as WA_WEB_AUTH_DIR, u as readWebAuthExistsBestEffort, v as resolveDefaultWebAuthDir, w as writeCredsJsonAtomically, y as restoreCredsFromBackupIfNeeded } from "./auth-store-BjCb50Ry.js";
9
9
  import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-DLGCIbfl.js";
10
10
  import { n as resolveWebAccountId, t as getActiveWebListener } from "./active-listener-N7GFKsuN.js";
11
- import { c as waitForWaConnection, o as createWaSocket, s as newConnectionId } from "./connection-controller-Bzopd9NT.js";
12
- import { a as loadWebMediaRaw, c as monitorWebInbox, d as extractMediaPlaceholder, f as extractText, i as loadWebMedia, l as extractContactContext, n as LocalMediaAccessError, o as optimizeImageToJpeg, p as resetWebInboundDedupe, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel, u as extractLocationData } from "./monitor-CiG3ddjv.js";
13
- import { t as loginWeb } from "./login-Cb_Wvr8L.js";
11
+ import { c as waitForWaConnection, o as createWaSocket, s as newConnectionId } from "./connection-controller-BSdlKQ56.js";
12
+ import { a as loadWebMediaRaw, c as monitorWebInbox, d as extractMediaPlaceholder, f as extractText, i as loadWebMedia, l as extractContactContext, n as LocalMediaAccessError, o as optimizeImageToJpeg, p as resetWebInboundDedupe, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel, u as extractLocationData } from "./monitor-B8SkX8eu.js";
13
+ import { t as loginWeb } from "./login-ytUQ-aQa.js";
14
14
  import { HEARTBEAT_PROMPT, HEARTBEAT_TOKEN, SILENT_REPLY_TOKEN, stripHeartbeatToken } from "openclaw/plugin-sdk/reply-runtime";
15
15
  export { DEFAULT_WEB_MEDIA_BYTES, HEARTBEAT_PROMPT, HEARTBEAT_TOKEN, LocalMediaAccessError, SILENT_REPLY_TOKEN, WA_WEB_AUTH_DIR, WHATSAPP_AUTH_UNSTABLE_CODE, WhatsAppAuthUnstableError, createWaSocket, createWhatsAppLoginTool, extractContactContext, extractLocationData, extractMediaPlaceholder, extractText, formatError, formatWhatsAppWebAuthStatusState, getActiveWebListener, getDefaultLocalRoots, getStatusCode, getWebAuthAgeMs, handleWhatsAppAction, hasWebCredsSync, loadWebMedia, loadWebMediaRaw, logWebSelfId, loginWeb, logoutWeb, monitorWebChannel, monitorWebInbox, newConnectionId, optimizeImageToJpeg, optimizeImageToPng, pickWebChannel, readCredsJsonRaw, readWebAuthExistsBestEffort, readWebAuthExistsForDecision, readWebAuthSnapshot, readWebAuthSnapshotBestEffort, readWebAuthState, readWebSelfId, readWebSelfIdentity, readWebSelfIdentityForDecision, resetWebInboundDedupe, resolveDefaultWebAuthDir, resolveWebAccountId, resolveWebCredsBackupPath, resolveWebCredsPath, restoreCredsFromBackupIfNeeded, sendMessageWhatsApp, sendPollWhatsApp, sendReactionWhatsApp, sendTypingWhatsApp, setWhatsAppRuntime, startWebLoginWithQr, stripHeartbeatToken, waitForCredsSaveQueue, waitForCredsSaveQueueWithTimeout, waitForWaConnection, waitForWebLogin, webAuthExists, whatsAppActionRuntime, writeCredsJsonAtomically };
@@ -1,2 +1,2 @@
1
- import { t as whatsappSetupPlugin } from "./channel.setup-Dd-A2LLn.js";
1
+ import { t as whatsappSetupPlugin } from "./channel.setup-CrM3owT7.js";
2
2
  export { whatsappSetupPlugin };
@@ -279,7 +279,7 @@ async function finalizeWhatsAppSetup(params) {
279
279
  message: linked ? "WhatsApp already linked. Re-link now?" : "Link WhatsApp now (QR)?",
280
280
  initialValue: !linked
281
281
  })) try {
282
- const { loginWeb } = await import("./login-Cb_Wvr8L.js").then((n) => n.n);
282
+ const { loginWeb } = await import("./login-ytUQ-aQa.js").then((n) => n.n);
283
283
  await loginWeb(false, void 0, params.runtime, accountId);
284
284
  } catch (error) {
285
285
  params.runtime.error(`WhatsApp login failed: ${String(error)}`);
@@ -124,10 +124,10 @@ function resolveWhatsAppConfigPath(params) {
124
124
  return `${resolveWhatsAppGroupScopeBasePath(params)}.${params.field}`;
125
125
  }
126
126
  async function loadWhatsAppChannelRuntime() {
127
- return await import("./channel.runtime-CzJk8F1Z.js");
127
+ return await import("./channel.runtime-DPHrTcfF.js");
128
128
  }
129
129
  async function loadWhatsAppSetupSurface() {
130
- return await import("./setup-surface-DQbN6Iu0.js");
130
+ return await import("./setup-surface-g3sr5OiF.js");
131
131
  }
132
132
  const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
133
133
  const whatsappConfigAdapter = createScopedChannelConfigAdapter({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/whatsapp",
3
- "version": "2026.5.4-beta.1",
3
+ "version": "2026.5.4-beta.2",
4
4
  "description": "OpenClaw WhatsApp channel plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,14 +12,14 @@
12
12
  "https-proxy-agent": "^9.0.0",
13
13
  "jimp": "^1.6.1",
14
14
  "typebox": "1.1.37",
15
- "undici": "8.1.0"
15
+ "undici": "8.2.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@openclaw/plugin-sdk": "workspace:*",
19
19
  "openclaw": "workspace:*"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.5.4-beta.1"
22
+ "openclaw": ">=2026.5.4-beta.2"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -61,10 +61,10 @@
61
61
  "minHostVersion": ">=2026.4.25"
62
62
  },
63
63
  "compat": {
64
- "pluginApi": ">=2026.5.4-beta.1"
64
+ "pluginApi": ">=2026.5.4-beta.2"
65
65
  },
66
66
  "build": {
67
- "openclawVersion": "2026.5.4-beta.1"
67
+ "openclawVersion": "2026.5.4-beta.2"
68
68
  },
69
69
  "release": {
70
70
  "publishToClawHub": true,