@openclaw/whatsapp 2026.6.11 → 2026.6.34

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.
Files changed (49) hide show
  1. package/dist/{access-control-_oQx0_UZ.js → access-control-Dazbzl73.js} +2 -2
  2. package/dist/api.js +5 -5
  3. package/dist/{auth-store-BRv2o3w2.js → auth-store-Bm2PnKXZ.js} +10 -6
  4. package/dist/{channel-C9zebxrw.js → channel-TuVqemsC.js} +2 -2
  5. package/dist/channel-plugin-api.js +1 -1
  6. package/dist/{channel.runtime-kVF_UONw.js → channel.runtime-DrF2uCTE.js} +4 -4
  7. package/dist/{channel.setup-BTi6IdDT.js → channel.setup-B7zFbGGi.js} +2 -2
  8. package/dist/{connection-controller-Ds4puj_n.js → connection-controller-Cn4cUoc7.js} +2 -2
  9. package/dist/contract-api.js +1 -1
  10. package/dist/light-runtime-api.js +1 -1
  11. package/dist/{login-FpqysWi0.js → login-DBzITt3x.js} +3 -3
  12. package/dist/login-qr-runtime.js +1 -1
  13. package/dist/{login-qr-BjfpyyN0.js → login-qr-vF-CiLly.js} +3 -3
  14. package/dist/{monitor-BVD90YEd.js → monitor-CqBX8Zow.js} +10 -9
  15. package/dist/runtime-api.js +4 -4
  16. package/dist/{session-DlHpYSAl.js → session-XDp1Jkel.js} +1 -1
  17. package/dist/{setup-core-D0JxJ53T.js → setup-core-Ox16ZnDZ.js} +2 -2
  18. package/dist/{setup-finalize-BRTq3uPs.js → setup-finalize-B4xjcf3C.js} +2 -2
  19. package/dist/setup-plugin-api.js +1 -1
  20. package/dist/{setup-surface-BpdIDwDg.js → setup-surface-DNuXW-0i.js} +2 -2
  21. package/node_modules/protobufjs/dist/light/protobuf.js +145 -188
  22. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  23. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  24. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  25. package/node_modules/protobufjs/dist/minimal/protobuf.js +33 -76
  26. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
  27. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  28. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
  29. package/node_modules/protobufjs/dist/protobuf.js +168 -208
  30. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  31. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  32. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  33. package/node_modules/protobufjs/index.d.ts +0 -8
  34. package/node_modules/protobufjs/package.json +2 -3
  35. package/node_modules/protobufjs/src/parse.js +3 -0
  36. package/node_modules/protobufjs/src/util/minimal.js +0 -3
  37. package/npm-shrinkwrap.json +7 -13
  38. package/package.json +4 -4
  39. package/node_modules/@protobufjs/inquire/CHANGELOG.md +0 -8
  40. package/node_modules/@protobufjs/inquire/LICENSE +0 -26
  41. package/node_modules/@protobufjs/inquire/README.md +0 -13
  42. package/node_modules/@protobufjs/inquire/index.d.ts +0 -10
  43. package/node_modules/@protobufjs/inquire/index.js +0 -38
  44. package/node_modules/@protobufjs/inquire/package.json +0 -21
  45. package/node_modules/@protobufjs/inquire/tests/data/array.js +0 -1
  46. package/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +0 -1
  47. package/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +0 -1
  48. package/node_modules/@protobufjs/inquire/tests/data/object.js +0 -1
  49. package/node_modules/@protobufjs/inquire/tests/index.js +0 -20
@@ -233,7 +233,7 @@ async function resolveWhatsAppIngressAccess(params) {
233
233
  }
234
234
  async function resolveWhatsAppCommandAuthorized(params) {
235
235
  if (!(params.cfg.commands?.useAccessGroups !== false)) return true;
236
- const self = getSelfIdentity(params.msg);
236
+ const self = getSelfIdentity(params.msg, params.authDir);
237
237
  const admission = requireWhatsAppInboundAdmission(params.msg);
238
238
  const policy = params.policy ?? resolveWhatsAppInboundPolicy({
239
239
  cfg: params.cfg,
@@ -241,7 +241,7 @@ async function resolveWhatsAppCommandAuthorized(params) {
241
241
  selfE164: self.e164 ?? null
242
242
  });
243
243
  const isGroup = admission.conversation.kind === "group";
244
- const sender = getSenderIdentity(params.msg);
244
+ const sender = getSenderIdentity(params.msg, params.authDir);
245
245
  const dmSender = sender.e164 ?? admission.conversation.id;
246
246
  const groupSender = sender.e164 ?? "";
247
247
  if (!normalizeE164(isGroup ? groupSender : dmSender)) return false;
package/dist/api.js CHANGED
@@ -6,16 +6,16 @@ import "./send-BplHdEjw.js";
6
6
  import { n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
7
7
  import { n as createWhatsAppSocketOperationTimeoutAdapter, t as DEFAULT_WHATSAPP_SOCKET_TIMING } from "./socket-timing-DvMNkIge.js";
8
8
  import { c as assertWebChannel, d as markdownToWhatsApp, h as toWhatsappJidWithLid, l as isSelfChatMode, m as toWhatsappJid, n as normalizeE164, p as resolveJidToE164, r as resolveUserPath, u as jidToE164 } from "./text-runtime-CpiloI73.js";
9
- import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-C9zebxrw.js";
9
+ import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-TuVqemsC.js";
10
10
  import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
11
- import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint } from "./setup-core-D0JxJ53T.js";
11
+ import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint } from "./setup-core-Ox16ZnDZ.js";
12
12
  import "./config-schema-CROZuhT-.js";
13
- import { t as whatsappSetupPlugin } from "./channel.setup-BTi6IdDT.js";
13
+ import { t as whatsappSetupPlugin } from "./channel.setup-B7zFbGGi.js";
14
14
  import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-HU41RHGI.js";
15
15
  import { n as listWhatsAppDirectoryGroupsFromConfig, r as listWhatsAppDirectoryPeersFromConfig } from "./directory-config-Dijefxc3.js";
16
- import { n as testing } from "./access-control-_oQx0_UZ.js";
16
+ import { n as testing } from "./access-control-Dazbzl73.js";
17
17
  import { _ as extractLocationData, b as extractText, d as normalizeMessageContent, f as resolveInboundMediaMimetype, h as extractContextInfo, p as describeReplyContext, t as createWebSendApi } from "./send-api-11yoHJhM.js";
18
- import { r as waitForWaConnection, t as createWaSocket } from "./session-DlHpYSAl.js";
18
+ import { r as waitForWaConnection, t as createWaSocket } from "./session-XDp1Jkel.js";
19
19
  import "openclaw/plugin-sdk/channel-actions";
20
20
  import "openclaw/plugin-sdk/account-resolution";
21
21
  import "openclaw/plugin-sdk/core";
@@ -116,6 +116,14 @@ async function waitForWebAuthBarrier(authDir, context) {
116
116
  }, "timed out waiting for queued WhatsApp creds save before auth read");
117
117
  return result;
118
118
  }
119
+ function isValidJson(raw) {
120
+ try {
121
+ JSON.parse(raw);
122
+ return true;
123
+ } catch {
124
+ return false;
125
+ }
126
+ }
119
127
  async function restoreCredsFromBackupIfNeeded(authDir) {
120
128
  const logger = getChildLogger({ module: "web-session" });
121
129
  try {
@@ -127,13 +135,9 @@ async function restoreCredsFromBackupIfNeeded(authDir) {
127
135
  return false;
128
136
  }
129
137
  const raw = readCredsJsonRaw(credsPath);
130
- if (raw) {
131
- JSON.parse(raw);
132
- return false;
133
- }
138
+ if (raw && isValidJson(raw)) return false;
134
139
  const backupRaw = readCredsJsonRaw(backupPath);
135
- if (!backupRaw) return false;
136
- JSON.parse(backupRaw);
140
+ if (!backupRaw || !isValidJson(backupRaw)) return false;
137
141
  await writeWebCredsRawAtomically({
138
142
  filePath: credsPath,
139
143
  content: backupRaw,
@@ -9,8 +9,8 @@ import { m as toWhatsappJid } from "./text-runtime-CpiloI73.js";
9
9
  import { t as createWhatsAppLoginTool } from "./agent-tools-login-BX7eHgDm.js";
10
10
  import { i as lookupInboundMessageMetaForTarget } from "./quoted-message-DqmWlbN7.js";
11
11
  import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
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-D0JxJ53T.js";
13
- import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BRv2o3w2.js";
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-Ox16ZnDZ.js";
13
+ import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-Bm2PnKXZ.js";
14
14
  import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-D_BmQUR9.js";
15
15
  import { createActionGate as createActionGate$1 } from "openclaw/plugin-sdk/channel-actions";
16
16
  import { DEFAULT_ACCOUNT_ID, listCombinedAccountIds, normalizeOptionalAccountId, resolveListedDefaultAccountId } from "openclaw/plugin-sdk/account-core";
@@ -1,2 +1,2 @@
1
- import { t as whatsappPlugin } from "./channel-C9zebxrw.js";
1
+ import { t as whatsappPlugin } from "./channel-TuVqemsC.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
- 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-BRv2o3w2.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-Bm2PnKXZ.js";
3
3
  import { t as getActiveWebListener$1 } from "./active-listener-CFwkn3ho.js";
4
- import { t as monitorWebChannel$1 } from "./monitor-BVD90YEd.js";
5
- import { t as loginWeb$1 } from "./login-FpqysWi0.js";
6
- import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-BpdIDwDg.js";
4
+ import { t as monitorWebChannel$1 } from "./monitor-CqBX8Zow.js";
5
+ import { t as loginWeb$1 } from "./login-DBzITt3x.js";
6
+ import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-DNuXW-0i.js";
7
7
  //#region extensions/whatsapp/src/channel.runtime.ts
8
8
  function getActiveWebListener(...args) {
9
9
  return getActiveWebListener$1(...args);
@@ -1,8 +1,8 @@
1
- import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupWizardProxy, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-D0JxJ53T.js";
1
+ import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupWizardProxy, n as createWhatsAppPluginBase, o as resolveWhatsAppGroupToolPolicy, s as resolveWhatsAppGroupIntroHint, t as whatsappSetupAdapter } from "./setup-core-Ox16ZnDZ.js";
2
2
  import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-D_BmQUR9.js";
3
3
  //#region extensions/whatsapp/src/channel.setup.ts
4
4
  async function isWhatsAppAuthConfigured(account) {
5
- const { readWebAuthState } = await import("./auth-store-BRv2o3w2.js").then((n) => n.i);
5
+ const { readWebAuthState } = await import("./auth-store-Bm2PnKXZ.js").then((n) => n.i);
6
6
  return await readWebAuthState(account.authDir) === "linked";
7
7
  }
8
8
  const whatsappSetupPlugin = {
@@ -1,8 +1,8 @@
1
1
  import { a as unregisterWhatsAppConnectionController, i as registerWhatsAppConnectionController, n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
2
2
  import { t as DEFAULT_WHATSAPP_SOCKET_TIMING } from "./socket-timing-DvMNkIge.js";
3
- import { c as logoutWeb, f as readWebAuthExistsForDecision, r as WhatsAppAuthUnstableError } from "./auth-store-BRv2o3w2.js";
3
+ import { c as logoutWeb, f as readWebAuthExistsForDecision, r as WhatsAppAuthUnstableError } from "./auth-store-Bm2PnKXZ.js";
4
4
  import { c as resolveComparableIdentity } from "./identity-DdeafYji.js";
5
- import { r as waitForWaConnection, t as createWaSocket } from "./session-DlHpYSAl.js";
5
+ import { r as waitForWaConnection, t as createWaSocket } from "./session-XDp1Jkel.js";
6
6
  import { computeBackoff, info, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
7
7
  import { clamp } from "openclaw/plugin-sdk/text-utility-runtime";
8
8
  import { randomUUID } from "node:crypto";
@@ -2,7 +2,7 @@ import { c as normalizeWhatsAppTarget$1, t as isWhatsAppGroupJid$1 } from "./nor
2
2
  import { t as whatsappCommandPolicy$1 } from "./command-policy-BIOSHySD.js";
3
3
  import { t as resolveLegacyGroupSessionKey$1 } from "./group-session-contract-DDnZSsJ1.js";
4
4
  import { r as isLegacyGroupSessionKey$1, t as canonicalizeLegacySessionKey$1 } from "./session-contract-DMTm6Q_L.js";
5
- import { a as resolveWhatsAppRuntimeGroupPolicy$1, n as testing } from "./access-control-_oQx0_UZ.js";
5
+ import { a as resolveWhatsAppRuntimeGroupPolicy$1, n as testing } from "./access-control-Dazbzl73.js";
6
6
  //#region extensions/whatsapp/contract-api.ts
7
7
  const canonicalizeLegacySessionKey = canonicalizeLegacySessionKey$1;
8
8
  const isLegacyGroupSessionKey = isLegacyGroupSessionKey$1;
@@ -1,5 +1,5 @@
1
1
  import { n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
2
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-BRv2o3w2.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-Bm2PnKXZ.js";
4
4
  import { t as getActiveWebListener } from "./active-listener-CFwkn3ho.js";
5
5
  export { WA_WEB_AUTH_DIR, createWhatsAppLoginTool, formatError, getActiveWebListener, getStatusCode, getWebAuthAgeMs, logWebSelfId, logoutWeb, pickWebChannel, readWebSelfId, resolveDefaultWebAuthDir, webAuthExists };
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
2
  import { a as resolveWhatsAppAccount } from "./accounts-DgViSyJx.js";
3
3
  import { a as resolveWhatsAppSocketTiming } from "./socket-timing-DvMNkIge.js";
4
- import { b as restoreCredsFromBackupIfNeeded } from "./auth-store-BRv2o3w2.js";
5
- import { i as renderQrTerminal, t as createWaSocket } from "./session-DlHpYSAl.js";
6
- import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-Ds4puj_n.js";
4
+ import { b as restoreCredsFromBackupIfNeeded } from "./auth-store-Bm2PnKXZ.js";
5
+ import { i as renderQrTerminal, t as createWaSocket } from "./session-XDp1Jkel.js";
6
+ import { a as closeWaSocketSoon, o as waitForWhatsAppLoginResult } from "./connection-controller-Cn4cUoc7.js";
7
7
  import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
8
8
  import { logInfo } from "openclaw/plugin-sdk/logging-core";
9
9
  import { danger, defaultRuntime, success } from "openclaw/plugin-sdk/runtime-env";
@@ -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-BjfpyyN0.js");
4
+ loginQrModulePromise ??= import("./login-qr-vF-CiLly.js");
5
5
  return loginQrModulePromise;
6
6
  }
7
7
  async function startWebLoginWithQr(...args) {
@@ -1,10 +1,10 @@
1
1
  import { a as resolveWhatsAppAccount } from "./accounts-DgViSyJx.js";
2
2
  import { t as formatError } from "./session-errors-CbsoQqoy.js";
3
3
  import { a as resolveWhatsAppSocketTiming } from "./socket-timing-DvMNkIge.js";
4
- import { c as logoutWeb, f as readWebAuthExistsForDecision, g as readWebSelfId, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BRv2o3w2.js";
5
- import { t as createWaSocket } from "./session-DlHpYSAl.js";
4
+ import { c as logoutWeb, f as readWebAuthExistsForDecision, g as readWebSelfId, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-Bm2PnKXZ.js";
5
+ import { t as createWaSocket } from "./session-XDp1Jkel.js";
6
6
  import { t as getActiveWebListener } from "./active-listener-CFwkn3ho.js";
7
- import { i as closeWaSocket, o as waitForWhatsAppLoginResult, t as WHATSAPP_LOGGED_OUT_QR_MESSAGE } from "./connection-controller-Ds4puj_n.js";
7
+ import { i as closeWaSocket, o as waitForWhatsAppLoginResult, t as WHATSAPP_LOGGED_OUT_QR_MESSAGE } from "./connection-controller-Cn4cUoc7.js";
8
8
  import { logInfo } from "openclaw/plugin-sdk/logging-core";
9
9
  import { danger, defaultRuntime, info, success } from "openclaw/plugin-sdk/runtime-env";
10
10
  import { renderQrPngDataUrl } from "openclaw/plugin-sdk/media-runtime";
@@ -5,14 +5,14 @@ import { n as getStatusCode, r as getRegisteredWhatsAppConnectionController, t a
5
5
  import { a as resolveWhatsAppSocketTiming, i as resolveWhatsAppSocketOperationTimeoutMs, n as createWhatsAppSocketOperationTimeoutAdapter, o as withWhatsAppSocketOperationTimeout, r as isWhatsAppSocketOperationTimeoutError } from "./socket-timing-DvMNkIge.js";
6
6
  import { d as markdownToWhatsApp, f as resolveEquivalentWhatsAppDirectChatJids, l as isSelfChatMode, n as normalizeE164, p as resolveJidToE164, t as convertMarkdownTables$1, u as jidToE164 } from "./text-runtime-CpiloI73.js";
7
7
  import { n as cacheInboundMessageMeta, r as lookupInboundMessageMeta, t as buildQuotedMessageOptions } from "./quoted-message-DqmWlbN7.js";
8
- import { g as readWebSelfId, o as getWebAuthAgeMs, r as WhatsAppAuthUnstableError, v as readWebSelfIdentityForDecision } from "./auth-store-BRv2o3w2.js";
8
+ import { g as readWebSelfId, o as getWebAuthAgeMs, r as WhatsAppAuthUnstableError, v as readWebSelfIdentityForDecision } from "./auth-store-Bm2PnKXZ.js";
9
9
  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-DdeafYji.js";
10
10
  import { n as resolveWhatsAppGroupsConfigPath } from "./group-config-path-BGyzT9Lg.js";
11
- import { c as requireWhatsAppInboundAdmission, i as resolveWhatsAppInboundPolicy, l as resolveWhatsAppGroupConversationId, o as buildDeprecatedFlatWhatsAppInboundAdmission, r as resolveWhatsAppCommandAuthorized, s as requireAdmittedWhatsAppInboundMessage, t as checkInboundAccessControl } from "./access-control-_oQx0_UZ.js";
11
+ import { c as requireWhatsAppInboundAdmission, i as resolveWhatsAppInboundPolicy, l as resolveWhatsAppGroupConversationId, o as buildDeprecatedFlatWhatsAppInboundAdmission, r as resolveWhatsAppCommandAuthorized, s as requireAdmittedWhatsAppInboundMessage, t as checkInboundAccessControl } from "./access-control-Dazbzl73.js";
12
12
  import { _ as extractLocationData, a as mayContainWhatsAppOutboundMention, b as extractText, c as DisconnectReason, d as normalizeMessageContent, f as resolveInboundMediaMimetype, g as extractExternalAdReplyContext, h as extractContextInfo, i as addWhatsAppOutboundMentionsToContent, l as downloadMediaMessage, m as extractContactContext, n as listWhatsAppSendResultMessageIds, o as resolveWhatsAppOutboundMentions, p as describeReplyContext, r as normalizeWhatsAppSendResult, s as addWhatsAppImagePreviewFields, t as createWebSendApi, u as isJidGroup, v as extractMediaPlaceholder, x as hasInboundUserContent, y as extractMentionedJids } from "./send-api-11yoHJhM.js";
13
- import { r as waitForWaConnection, t as createWaSocket } from "./session-DlHpYSAl.js";
13
+ import { r as waitForWaConnection, t as createWaSocket } from "./session-XDp1Jkel.js";
14
14
  import { t as BufferJSON } from "./session.runtime-CyooSQvj.js";
15
- import { c as computeBackoff, d as resolveReconnectPolicy, f as sleepWithAbort, l as newConnectionId, n as WHATSAPP_WATCHDOG_TIMEOUT_ERROR, r as WhatsAppConnectionController, s as DEFAULT_RECONNECT_POLICY, u as resolveHeartbeatSeconds } from "./connection-controller-Ds4puj_n.js";
15
+ import { c as computeBackoff, d as resolveReconnectPolicy, f as sleepWithAbort, l as newConnectionId, n as WHATSAPP_WATCHDOG_TIMEOUT_ERROR, r as WhatsAppConnectionController, s as DEFAULT_RECONNECT_POLICY, u as resolveHeartbeatSeconds } from "./connection-controller-Cn4cUoc7.js";
16
16
  import { resolveAccountEntry } from "openclaw/plugin-sdk/account-core";
17
17
  import { normalizeLowercaseStringOrEmpty, normalizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
18
18
  import { createChannelMessageReplyPipeline, createDurableInboundReceiveJournalFromQueue, createMessageReceiptFromOutboundResults, deliverInboundReplyWithMessageSendContext, resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-outbound";
@@ -1943,10 +1943,10 @@ function shouldWarnForGroupDrop(warnKey) {
1943
1943
  }
1944
1944
  return true;
1945
1945
  }
1946
- function isOwnerSender(baseMentionConfig, msg) {
1947
- const sender = normalizeE164(getSenderIdentity(msg).e164 ?? "");
1946
+ function isOwnerSender(baseMentionConfig, msg, authDir) {
1947
+ const sender = normalizeE164(getSenderIdentity(msg, authDir).e164 ?? "");
1948
1948
  if (!sender) return false;
1949
- return resolveOwnerList(baseMentionConfig, getSelfIdentity(msg).e164 ?? void 0).includes(sender);
1949
+ return resolveOwnerList(baseMentionConfig, getSelfIdentity(msg, authDir).e164 ?? void 0).includes(sender);
1950
1950
  }
1951
1951
  function recordPendingGroupHistoryEntry(params) {
1952
1952
  const senderIdentity = getSenderIdentity(params.msg);
@@ -2023,7 +2023,7 @@ async function applyGroupGating(params) {
2023
2023
  } : params.msg;
2024
2024
  const commandBody = stripMentionsForCommand(mentionMsg.payload.body, mentionConfig.mentionRegexes, self.e164);
2025
2025
  const activationCommand = parseActivationCommand(commandBody);
2026
- const owner = isOwnerSender(baseMentionConfig, params.msg);
2026
+ const owner = isOwnerSender(baseMentionConfig, params.msg, params.authDir);
2027
2027
  const shouldBypassMention = owner && hasControlCommand(commandBody, params.cfg);
2028
2028
  if (activationCommand.hasCommand && !owner) return skipGroupMessageAndStoreHistory(params, `Ignoring /activation from non-owner in group ${conversationId}`);
2029
2029
  const mentionDebug = debugMention(mentionMsg, mentionConfig, params.authDir);
@@ -3218,7 +3218,8 @@ async function processMessage(params) {
3218
3218
  const commandAuthorized = shouldCheckCommandAuth ? await resolveWhatsAppCommandAuthorized({
3219
3219
  cfg: params.cfg,
3220
3220
  msg: params.msg,
3221
- policy: inboundPolicy
3221
+ policy: inboundPolicy,
3222
+ authDir: account.authDir
3222
3223
  }) : void 0;
3223
3224
  const commandTurn = isTextCommand ? {
3224
3225
  kind: "text-slash",
@@ -5,12 +5,12 @@ import { r as setWhatsAppRuntime } from "./runtime-BfAdAEYT.js";
5
5
  import { n as getStatusCode, t as formatError } from "./session-errors-CbsoQqoy.js";
6
6
  import { startWebLoginWithQr, waitForWebLogin } from "./login-qr-runtime.js";
7
7
  import { t as createWhatsAppLoginTool } from "./agent-tools-login-BX7eHgDm.js";
8
- import { C as waitForCredsSaveQueue, T as writeCredsJsonAtomically, _ as readWebSelfIdentity, a as formatWhatsAppWebAuthStatusState, b as restoreCredsFromBackupIfNeeded, c as logoutWeb, d as readWebAuthExistsBestEffort, f as readWebAuthExistsForDecision, g as readWebSelfId, h as readWebAuthState, l as pickWebChannel, m as readWebAuthSnapshotBestEffort, n as WHATSAPP_AUTH_UNSTABLE_CODE, o as getWebAuthAgeMs, p as readWebAuthSnapshot, r as WhatsAppAuthUnstableError, s as logWebSelfId, t as WA_WEB_AUTH_DIR, u as readCredsJsonRaw, v as readWebSelfIdentityForDecision, w as waitForCredsSaveQueueWithTimeout, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-BRv2o3w2.js";
8
+ import { C as waitForCredsSaveQueue, T as writeCredsJsonAtomically, _ as readWebSelfIdentity, a as formatWhatsAppWebAuthStatusState, b as restoreCredsFromBackupIfNeeded, c as logoutWeb, d as readWebAuthExistsBestEffort, f as readWebAuthExistsForDecision, g as readWebSelfId, h as readWebAuthState, l as pickWebChannel, m as readWebAuthSnapshotBestEffort, n as WHATSAPP_AUTH_UNSTABLE_CODE, o as getWebAuthAgeMs, p as readWebAuthSnapshot, r as WhatsAppAuthUnstableError, s as logWebSelfId, t as WA_WEB_AUTH_DIR, u as readCredsJsonRaw, v as readWebSelfIdentityForDecision, w as waitForCredsSaveQueueWithTimeout, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-Bm2PnKXZ.js";
9
9
  import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-HU41RHGI.js";
10
10
  import { _ as extractLocationData, b as extractText, m as extractContactContext, v as extractMediaPlaceholder } from "./send-api-11yoHJhM.js";
11
- import { n as newConnectionId, r as waitForWaConnection, t as createWaSocket } from "./session-DlHpYSAl.js";
11
+ import { n as newConnectionId, r as waitForWaConnection, t as createWaSocket } from "./session-XDp1Jkel.js";
12
12
  import { n as resolveWebAccountId, t as getActiveWebListener } from "./active-listener-CFwkn3ho.js";
13
- import { a as loadWebMediaRaw, c as monitorWebInbox, i as loadWebMedia, l as resetWebInboundDedupe, n as LocalMediaAccessError, o as optimizeImageToJpeg, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel } from "./monitor-BVD90YEd.js";
14
- import { t as loginWeb } from "./login-FpqysWi0.js";
13
+ import { a as loadWebMediaRaw, c as monitorWebInbox, i as loadWebMedia, l as resetWebInboundDedupe, n as LocalMediaAccessError, o as optimizeImageToJpeg, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel } from "./monitor-CqBX8Zow.js";
14
+ import { t as loginWeb } from "./login-DBzITt3x.js";
15
15
  import { HEARTBEAT_PROMPT, HEARTBEAT_TOKEN, SILENT_REPLY_TOKEN, stripHeartbeatToken } from "openclaw/plugin-sdk/reply-runtime";
16
16
  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,7 +1,7 @@
1
1
  import { o as resolveWebCredsBackupPath, s as resolveWebCredsPath, t as assertWebCredsPathRegularFileOrMissing } from "./creds-files-B1kSWtBg.js";
2
2
  import { n as getStatusCode } from "./session-errors-CbsoQqoy.js";
3
3
  import { t as DEFAULT_WHATSAPP_SOCKET_TIMING } from "./socket-timing-DvMNkIge.js";
4
- import { E as writeWebCredsRawAtomically, S as enqueueCredsSave, T as writeCredsJsonAtomically, b as restoreCredsFromBackupIfNeeded, u as readCredsJsonRaw, w as waitForCredsSaveQueueWithTimeout, y as resolveDefaultWebAuthDir } from "./auth-store-BRv2o3w2.js";
4
+ import { E as writeWebCredsRawAtomically, S as enqueueCredsSave, T as writeCredsJsonAtomically, b as restoreCredsFromBackupIfNeeded, u as readCredsJsonRaw, w as waitForCredsSaveQueueWithTimeout, y as resolveDefaultWebAuthDir } from "./auth-store-Bm2PnKXZ.js";
5
5
  import { i as makeWASocket, n as fetchLatestBaileysVersion, o as useMultiFileAuthState, r as makeCacheableSignalKeyStore } from "./session.runtime-CyooSQvj.js";
6
6
  import { VERSION, formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
7
7
  import { danger, getChildLogger, success, toPinoLikeLogger } from "openclaw/plugin-sdk/runtime-env";
@@ -99,10 +99,10 @@ async function applyWhatsAppSecurityConfigFixes(params) {
99
99
  //#region extensions/whatsapp/src/shared.ts
100
100
  const WHATSAPP_CHANNEL = "whatsapp";
101
101
  async function loadWhatsAppChannelRuntime() {
102
- return await import("./channel.runtime-kVF_UONw.js");
102
+ return await import("./channel.runtime-DrF2uCTE.js");
103
103
  }
104
104
  async function loadWhatsAppSetupSurface() {
105
- return await import("./setup-surface-BpdIDwDg.js");
105
+ return await import("./setup-surface-DNuXW-0i.js");
106
106
  }
107
107
  const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
108
108
  const whatsappConfigAdapter = createScopedChannelConfigAdapter({
@@ -2,7 +2,7 @@ import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js"
2
2
  import { r as hasWebCredsSync } from "./creds-files-B1kSWtBg.js";
3
3
  import { a as resolveWhatsAppAccount, o as resolveWhatsAppAuthDir } from "./accounts-DgViSyJx.js";
4
4
  import { a as normalizeWhatsAppAllowFromEntries, o as normalizeWhatsAppAllowFromEntry } from "./normalize-target-bVWjgftN.js";
5
- import { t as whatsappSetupAdapter } from "./setup-core-D0JxJ53T.js";
5
+ import { t as whatsappSetupAdapter } from "./setup-core-Ox16ZnDZ.js";
6
6
  import { DEFAULT_ACCOUNT_ID, createSetupTranslator, splitSetupEntries } from "openclaw/plugin-sdk/setup";
7
7
  import { formatCliCommand, formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
8
8
  //#region extensions/whatsapp/src/setup-finalize.ts
@@ -280,7 +280,7 @@ async function finalizeWhatsAppSetup(params) {
280
280
  message: linked ? t("wizard.whatsapp.relinkPrompt") : t("wizard.whatsapp.linkNowPrompt"),
281
281
  initialValue: !linked
282
282
  })) try {
283
- const { loginWeb } = await import("./login-FpqysWi0.js").then((n) => n.n);
283
+ const { loginWeb } = await import("./login-DBzITt3x.js").then((n) => n.n);
284
284
  await loginWeb(false, void 0, params.runtime, accountId);
285
285
  } catch (error) {
286
286
  params.runtime.error(`WhatsApp login failed: ${String(error)}`);
@@ -1,2 +1,2 @@
1
- import { t as whatsappSetupPlugin } from "./channel.setup-BTi6IdDT.js";
1
+ import { t as whatsappSetupPlugin } from "./channel.setup-B7zFbGGi.js";
2
2
  export { whatsappSetupPlugin };
@@ -1,6 +1,6 @@
1
1
  import { t as listAccountIds } from "./account-ids-CB5SOWjc.js";
2
2
  import { o as resolveWhatsAppAuthDir } from "./accounts-DgViSyJx.js";
3
- import { a as formatWhatsAppWebAuthStatusState, h as readWebAuthState } from "./auth-store-BRv2o3w2.js";
3
+ import { a as formatWhatsAppWebAuthStatusState, h as readWebAuthState } from "./auth-store-Bm2PnKXZ.js";
4
4
  import { DEFAULT_ACCOUNT_ID, createSetupTranslator, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
5
5
  //#region extensions/whatsapp/src/setup-surface.ts
6
6
  const t = createSetupTranslator();
@@ -36,7 +36,7 @@ const whatsappSetupWizard = {
36
36
  },
37
37
  resolveShouldPromptAccountIds: ({ shouldPromptAccountIds }) => shouldPromptAccountIds,
38
38
  credentials: [],
39
- finalize: async (params) => await (await import("./setup-finalize-BRTq3uPs.js")).finalizeWhatsAppSetup(params),
39
+ finalize: async (params) => await (await import("./setup-finalize-B4xjcf3C.js")).finalizeWhatsAppSetup(params),
40
40
  disable: (cfg) => setSetupChannelEnabled(cfg, channel, false),
41
41
  onAccountRecorded: (accountId, options) => {
42
42
  options?.onAccountId?.(channel, accountId);