@openclaw/whatsapp 2026.7.2-beta.3 → 2026.7.2-beta.5

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 (149) hide show
  1. package/README.md +1 -1
  2. package/dist/{access-control-tjy_em01.js → access-control-pZcxTmd5.js} +4 -5
  3. package/dist/{accounts-ejK8sXPU.js → accounts-CSqLvCY5.js} +1 -2
  4. package/dist/{action-runtime-p0V390gA.js → action-runtime-B2bNDUwE.js} +3 -3
  5. package/dist/action-runtime-api.js +1 -1
  6. package/dist/action-runtime.runtime.js +1 -1
  7. package/dist/{active-listener-BbdlXooT.js → active-listener-BEjWsCNM.js} +1 -1
  8. package/dist/api.js +13 -22
  9. package/dist/{approval-handler.runtime-BO1oJ-b8.js → approval-handler.runtime-CmtqgLSQ.js} +6 -6
  10. package/dist/{approval-reactions-CrZFAyf-.js → approval-reactions-Cu66aYdq.js} +4 -4
  11. package/dist/{auth-store-BQi9pZqQ.js → auth-store-DcEpIOmE.js} +4 -3
  12. package/dist/call-tool-api.js +4 -4
  13. package/dist/{channel-B2I4Opzb.js → channel-DcWBc3Hb.js} +39 -67
  14. package/dist/channel-config-api.js +1 -1
  15. package/dist/channel-plugin-api.js +1 -1
  16. package/dist/{channel-react-action-CPRQE-s3.js → channel-react-action-DUIkjl6w.js} +12 -15
  17. package/dist/{channel.runtime-CjkhQzk8.js → channel.runtime-Q5fJ2I2b.js} +5 -5
  18. package/dist/{channel.setup-BMWE9LmN.js → channel.setup-C_1u6HN6.js} +3 -6
  19. package/dist/{config-schema-BZ8h1hWA.js → config-schema-DARep0Nn.js} +7 -5
  20. package/dist/{connection-controller-HGaffeFb.js → connection-controller-BOB2MVKY.js} +8 -10
  21. package/dist/{connection-controller-runtime-context-9mEeAvu1.js → connection-controller-runtime-context-DG0tuYuw.js} +3 -3
  22. package/dist/contract-api.js +2 -2
  23. package/dist/{directory-config-BZ775eGX.js → directory-config-DalGrfGN.js} +7 -7
  24. package/dist/directory-contract-api.js +1 -1
  25. package/dist/doctor-CwzVXKoE.js +10 -0
  26. package/dist/doctor-contract-api.js +35 -79
  27. package/dist/{group-session-key-Dh8WZun_.js → group-session-key-DVMZlO3x.js} +11 -6
  28. package/dist/{identity-D7L8LCuH.js → identity-CPrT5aEU.js} +2 -2
  29. package/dist/light-runtime-api.js +2 -2
  30. package/dist/{login-ifOXCBjo.js → login-CvY2Dhch.js} +6 -7
  31. package/dist/{login-qr-DUHzVH_Y.js → login-qr-Bncpb6js.js} +7 -8
  32. package/dist/login-qr-runtime.js +1 -1
  33. package/dist/{monitor-_jqDKBXj.js → monitor-B7phZF9w.js} +427 -525
  34. package/dist/normalize-C7Hkc_vE.js +2 -0
  35. package/dist/{normalize-target-DSZnHkKF.js → normalize-target-CugRyONv.js} +6 -2
  36. package/dist/{question-reactions-C0qJ6wGA.js → question-reactions-CRsnyoMK.js} +1 -1
  37. package/dist/{resolve-outbound-target-BR97fAbB.js → resolve-outbound-target-1GqbT1uX.js} +1 -1
  38. package/dist/runtime-BLlToOi6.js +21 -0
  39. package/dist/runtime-api.js +10 -10
  40. package/dist/runtime-setter-api.js +1 -1
  41. package/dist/{send-SB-4JrVZ.js → send-BTXJAyK4.js} +40 -86
  42. package/dist/{send-api-BG0MgoFI.js → send-api-BY_AkSiB.js} +41 -35
  43. package/dist/{setup-finalize-Cc-4iWGj.js → setup-finalize-C-m-vCl9.js} +4 -4
  44. package/dist/setup-plugin-api.js +1 -1
  45. package/dist/{setup-surface-DhnXEZir.js → setup-surface-BjvUbR6M.js} +3 -3
  46. package/dist/{setup-core-BbIgEl2M.js → shared-UcAwtJaq.js} +79 -57
  47. package/dist/{socket-close-jNGyZY4T.js → socket-close-DridEuzz.js} +5 -6
  48. package/dist/{targets-runtime-Bsh0HR9y.js → targets-runtime-TMk0lGuy.js} +133 -29
  49. package/dist/text-runtime-CaKLhowd.js +4 -0
  50. package/node_modules/@protobufjs/utf8/CHANGELOG.md +8 -0
  51. package/node_modules/@protobufjs/utf8/index.js +29 -18
  52. package/node_modules/@protobufjs/utf8/package.json +2 -2
  53. package/node_modules/@protobufjs/utf8/tests/index.js +5 -0
  54. package/node_modules/@thi.ng/bitstream/package.json +4 -4
  55. package/node_modules/@thi.ng/errors/package.json +4 -4
  56. package/node_modules/@types/node/README.md +1 -1
  57. package/node_modules/@types/node/fs/promises.d.ts +16 -6
  58. package/node_modules/@types/node/package.json +2 -2
  59. package/node_modules/audio-type/package.json +3 -2
  60. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
  61. package/node_modules/lru-cache/dist/commonjs/browser/index.js +11 -4
  62. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
  63. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js +1 -1
  64. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +3 -3
  65. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
  66. package/node_modules/lru-cache/dist/commonjs/index.js +11 -4
  67. package/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
  68. package/node_modules/lru-cache/dist/commonjs/index.min.js +1 -1
  69. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +3 -3
  70. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
  71. package/node_modules/lru-cache/dist/commonjs/node/index.js +11 -4
  72. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
  73. package/node_modules/lru-cache/dist/commonjs/node/index.min.js +1 -1
  74. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +3 -3
  75. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
  76. package/node_modules/lru-cache/dist/esm/browser/index.js +11 -4
  77. package/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
  78. package/node_modules/lru-cache/dist/esm/browser/index.min.js +1 -1
  79. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +3 -3
  80. package/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
  81. package/node_modules/lru-cache/dist/esm/index.js +11 -4
  82. package/node_modules/lru-cache/dist/esm/index.js.map +1 -1
  83. package/node_modules/lru-cache/dist/esm/index.min.js +1 -1
  84. package/node_modules/lru-cache/dist/esm/index.min.js.map +3 -3
  85. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
  86. package/node_modules/lru-cache/dist/esm/node/index.js +11 -4
  87. package/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
  88. package/node_modules/lru-cache/dist/esm/node/index.min.js +1 -1
  89. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +3 -3
  90. package/node_modules/lru-cache/package.json +1 -1
  91. package/node_modules/music-metadata/lib/common/Util.d.ts +1 -1
  92. package/node_modules/music-metadata/lib/common/Util.js +7 -1
  93. package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +23 -3
  94. package/node_modules/music-metadata/lib/id3v2/FrameParser.js +2 -2
  95. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +1 -1
  96. package/node_modules/music-metadata/lib/mp4/AtomToken.js +38 -13
  97. package/node_modules/music-metadata/lib/mpeg/MpegParser.js +1 -1
  98. package/node_modules/music-metadata/package.json +6 -6
  99. package/node_modules/p-queue/dist/index.js +17 -6
  100. package/node_modules/p-queue/package.json +1 -1
  101. package/node_modules/protobufjs/dist/light/protobuf.js +145 -188
  102. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  103. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  104. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  105. package/node_modules/protobufjs/dist/minimal/protobuf.js +33 -76
  106. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
  107. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  108. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
  109. package/node_modules/protobufjs/dist/protobuf.js +168 -208
  110. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  111. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  112. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  113. package/node_modules/protobufjs/index.d.ts +0 -8
  114. package/node_modules/protobufjs/package.json +2 -3
  115. package/node_modules/protobufjs/src/parse.js +3 -0
  116. package/node_modules/protobufjs/src/util/minimal.js +0 -3
  117. package/node_modules/typebox/build/compile/validator.d.mts +1 -4
  118. package/node_modules/typebox/build/guard/guard.d.mts +1 -1
  119. package/node_modules/typebox/build/guard/guard.mjs +5 -2
  120. package/node_modules/typebox/build/guard/string.mjs +16 -4
  121. package/node_modules/typebox/build/schema/engine/_functions.mjs +34 -15
  122. package/node_modules/typebox/build/type/action/readonly_object.d.mts +5 -0
  123. package/node_modules/typebox/build/type/action/readonly_object.mjs +8 -0
  124. package/node_modules/typebox/build/typebox.d.mts +1 -1
  125. package/node_modules/typebox/build/typebox.mjs +1 -1
  126. package/node_modules/typebox/package.json +1 -1
  127. package/node_modules/typebox/readme.md +29 -32
  128. package/node_modules/ws/lib/receiver.js +15 -32
  129. package/node_modules/ws/lib/websocket-server.js +4 -4
  130. package/node_modules/ws/lib/websocket.js +4 -4
  131. package/node_modules/ws/package.json +5 -1
  132. package/openclaw.plugin.json +138 -194
  133. package/package.json +21 -12
  134. package/dist/doctor-By3SB4lm.js +0 -48
  135. package/dist/normalize-C-Z16y7Q.js +0 -2
  136. package/dist/runtime-BfAdAEYT.js +0 -8
  137. package/dist/text-runtime-BTGkMN0o.js +0 -4
  138. package/node_modules/@protobufjs/inquire/CHANGELOG.md +0 -8
  139. package/node_modules/@protobufjs/inquire/LICENSE +0 -26
  140. package/node_modules/@protobufjs/inquire/README.md +0 -13
  141. package/node_modules/@protobufjs/inquire/index.d.ts +0 -10
  142. package/node_modules/@protobufjs/inquire/index.js +0 -38
  143. package/node_modules/@protobufjs/inquire/package.json +0 -21
  144. package/node_modules/@protobufjs/inquire/tests/data/array.js +0 -1
  145. package/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +0 -1
  146. package/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +0 -1
  147. package/node_modules/@protobufjs/inquire/tests/data/object.js +0 -1
  148. package/node_modules/@protobufjs/inquire/tests/index.js +0 -20
  149. package/npm-shrinkwrap.json +0 -958
@@ -1,8 +1,8 @@
1
- import { a as resolveWhatsAppAccount, n as hasAnyWhatsAppAuth } from "./accounts-ejK8sXPU.js";
1
+ import { a as resolveWhatsAppAccount, n as hasAnyWhatsAppAuth } from "./accounts-CSqLvCY5.js";
2
2
  import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./account-ids-CB5SOWjc.js";
3
- import { a as normalizeWhatsAppAllowFromEntries } from "./normalize-target-DSZnHkKF.js";
4
- import { t as WhatsAppChannelConfigSchema } from "./config-schema-BZ8h1hWA.js";
5
- import { n as whatsappDoctor } from "./doctor-By3SB4lm.js";
3
+ import { a as normalizeWhatsAppAllowFromEntries } from "./normalize-target-CugRyONv.js";
4
+ import { t as WhatsAppChannelConfigSchema } from "./config-schema-DARep0Nn.js";
5
+ import { n as whatsappDoctor } from "./doctor-CwzVXKoE.js";
6
6
  import { t as resolveWhatsAppConfigPath } from "./group-config-path-BGyzT9Lg.js";
7
7
  import { t as resolveLegacyGroupSessionKey } from "./group-session-contract-DDnZSsJ1.js";
8
8
  import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-nAzD945y.js";
@@ -11,12 +11,24 @@ import { normalizeUniqueStringEntries } from "openclaw/plugin-sdk/string-coerce-
11
11
  import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
12
12
  import { createChannelPluginBase } from "openclaw/plugin-sdk/core";
13
13
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
14
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
14
15
  import { buildChannelGroupsScopeTree, collectOpenGroupPolicyRouteAllowlistWarnings, createAllowlistProviderGroupPolicyWarningCollector, resolveScopeRequireMention, resolveScopeToolsPolicy } from "openclaw/plugin-sdk/channel-policy";
16
+ import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
17
+ import { applyAccountNameToChannelSection, migrateBaseNameToDefaultAccount, normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/setup";
15
18
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
16
19
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
17
20
  import { createDelegatedSetupWizardProxy } from "openclaw/plugin-sdk/setup-runtime";
18
21
  import { readChannelAllowFromStore } from "openclaw/plugin-sdk/channel-pairing";
19
- import { applyAccountNameToChannelSection, migrateBaseNameToDefaultAccount, normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/setup";
22
+ //#region extensions/whatsapp/src/channel-runtime-loader.ts
23
+ const loadWhatsAppAuthStore = createLazyRuntimeModule(() => import("./auth-store-DcEpIOmE.js").then((n) => n.i));
24
+ async function isWhatsAppAuthConfigured(authDir) {
25
+ return await (await loadWhatsAppAuthStore()).readWebAuthState(authDir) === "linked";
26
+ }
27
+ const loadWhatsAppChannelRuntime = createLazyRuntimeModule(async () => {
28
+ await loadWhatsAppAuthStore();
29
+ return await import("./channel.runtime-Q5fJ2I2b.js");
30
+ });
31
+ //#endregion
20
32
  //#region extensions/whatsapp/src/config-accessors.ts
21
33
  function formatWhatsAppConfigAllowFromEntries(allowFrom) {
22
34
  return normalizeWhatsAppAllowFromEntries(allowFrom);
@@ -41,6 +53,62 @@ function resolveWhatsAppGroupToolPolicy(params) {
41
53
  });
42
54
  }
43
55
  //#endregion
56
+ //#region extensions/whatsapp/src/setup-core.ts
57
+ const channel = "whatsapp";
58
+ const whatsappSetupAdapter = {
59
+ singleAccountKeysToMove: ["authDir"],
60
+ resolveAccountId: ({ accountId }) => normalizeAccountId$1(accountId),
61
+ applyAccountName: ({ cfg, accountId, name }) => applyAccountNameToChannelSection({
62
+ cfg,
63
+ channelKey: channel,
64
+ accountId,
65
+ name,
66
+ alwaysUseAccounts: true
67
+ }),
68
+ applyAccountConfig: ({ cfg, accountId, input }) => {
69
+ const setupInput = input;
70
+ const next = migrateBaseNameToDefaultAccount({
71
+ cfg: applyAccountNameToChannelSection({
72
+ cfg,
73
+ channelKey: channel,
74
+ accountId,
75
+ name: setupInput.name,
76
+ alwaysUseAccounts: true
77
+ }),
78
+ channelKey: channel,
79
+ alwaysUseAccounts: true
80
+ });
81
+ const entry = {
82
+ ...next.channels?.whatsapp?.accounts?.[accountId],
83
+ ...setupInput.authDir ? { authDir: setupInput.authDir } : {},
84
+ enabled: true
85
+ };
86
+ return {
87
+ ...next,
88
+ channels: {
89
+ ...next.channels,
90
+ whatsapp: {
91
+ ...next.channels?.whatsapp,
92
+ accounts: {
93
+ ...next.channels?.whatsapp?.accounts,
94
+ [accountId]: entry
95
+ }
96
+ }
97
+ }
98
+ };
99
+ }
100
+ };
101
+ const whatsappSetupContract = defineChannelSetupContract({
102
+ fields: { authDir: {
103
+ kind: "string",
104
+ cli: {
105
+ flags: "--auth-dir <path>",
106
+ description: "WhatsApp auth directory override"
107
+ }
108
+ } },
109
+ legacyAdapter: whatsappSetupAdapter
110
+ });
111
+ //#endregion
44
112
  //#region extensions/whatsapp/src/security-fix.ts
45
113
  function applyGroupAllowFromFromStore(params) {
46
114
  const next = structuredClone(params.cfg ?? {});
@@ -83,11 +151,8 @@ async function applyWhatsAppSecurityConfigFixes(params) {
83
151
  //#endregion
84
152
  //#region extensions/whatsapp/src/shared.ts
85
153
  const WHATSAPP_CHANNEL = "whatsapp";
86
- async function loadWhatsAppChannelRuntime() {
87
- return await import("./channel.runtime-CjkhQzk8.js");
88
- }
89
154
  async function loadWhatsAppSetupSurface() {
90
- return await import("./setup-surface-DhnXEZir.js");
155
+ return await import("./setup-surface-BjvUbR6M.js");
91
156
  }
92
157
  const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
93
158
  const whatsappConfigAdapter = createScopedChannelConfigAdapter({
@@ -191,7 +256,7 @@ function createWhatsAppPluginBase(params) {
191
256
  docsLabel: "whatsapp",
192
257
  blurb: "works with your own number; recommend a separate phone + eSIM.",
193
258
  systemImage: "message",
194
- showConfigured: false,
259
+ exposure: { configured: false },
195
260
  quickstartAllowFrom: true,
196
261
  forceAccountBinding: true,
197
262
  preferSessionLookupForAnnounceTarget: true
@@ -213,7 +278,7 @@ function createWhatsAppPluginBase(params) {
213
278
  },
214
279
  reload: {
215
280
  configPrefixes: [
216
- "web",
281
+ "channels.whatsapp.enabled",
217
282
  "channels.whatsapp.accounts",
218
283
  "channels.whatsapp.selfChatMode"
219
284
  ],
@@ -223,7 +288,7 @@ function createWhatsAppPluginBase(params) {
223
288
  configSchema: WhatsAppChannelConfigSchema,
224
289
  config: {
225
290
  ...whatsappConfigAdapter,
226
- isEnabled: (account, cfg) => account.enabled && cfg.web?.enabled !== false,
291
+ isEnabled: (account) => account.enabled,
227
292
  disabledReason: () => "disabled",
228
293
  isConfigured: params.isConfigured,
229
294
  hasPersistedAuthState: ({ cfg }) => hasAnyWhatsAppAuth(cfg),
@@ -245,6 +310,7 @@ function createWhatsAppPluginBase(params) {
245
310
  },
246
311
  doctor: whatsappDoctor,
247
312
  setup: params.setup,
313
+ ...params.setupContract ? { setupContract: params.setupContract } : {},
248
314
  groups: params.groups
249
315
  });
250
316
  return {
@@ -274,48 +340,4 @@ function createWhatsAppPluginBase(params) {
274
340
  };
275
341
  }
276
342
  //#endregion
277
- //#region extensions/whatsapp/src/setup-core.ts
278
- const channel = "whatsapp";
279
- const whatsappSetupAdapter = {
280
- resolveAccountId: ({ accountId }) => normalizeAccountId$1(accountId),
281
- applyAccountName: ({ cfg, accountId, name }) => applyAccountNameToChannelSection({
282
- cfg,
283
- channelKey: channel,
284
- accountId,
285
- name,
286
- alwaysUseAccounts: true
287
- }),
288
- applyAccountConfig: ({ cfg, accountId, input }) => {
289
- const next = migrateBaseNameToDefaultAccount({
290
- cfg: applyAccountNameToChannelSection({
291
- cfg,
292
- channelKey: channel,
293
- accountId,
294
- name: input.name,
295
- alwaysUseAccounts: true
296
- }),
297
- channelKey: channel,
298
- alwaysUseAccounts: true
299
- });
300
- const entry = {
301
- ...next.channels?.whatsapp?.accounts?.[accountId],
302
- ...input.authDir ? { authDir: input.authDir } : {},
303
- enabled: true
304
- };
305
- return {
306
- ...next,
307
- channels: {
308
- ...next.channels,
309
- whatsapp: {
310
- ...next.channels?.whatsapp,
311
- accounts: {
312
- ...next.channels?.whatsapp?.accounts,
313
- [accountId]: entry
314
- }
315
- }
316
- }
317
- };
318
- }
319
- };
320
- //#endregion
321
- export { resolveWhatsAppGroupRequireMention as a, whatsappSetupWizardProxy as i, createWhatsAppPluginBase as n, resolveWhatsAppGroupToolPolicy as o, loadWhatsAppChannelRuntime as r, formatWhatsAppConfigAllowFromEntries as s, whatsappSetupAdapter as t };
343
+ export { resolveWhatsAppGroupRequireMention as a, isWhatsAppAuthConfigured as c, whatsappSetupContract as i, loadWhatsAppChannelRuntime as l, whatsappSetupWizardProxy as n, resolveWhatsAppGroupToolPolicy as o, whatsappSetupAdapter as r, formatWhatsAppConfigAllowFromEntries as s, createWhatsAppPluginBase as t };
@@ -1,5 +1,5 @@
1
1
  import { o as resolveWebCredsBackupPath, s as resolveWebCredsPath, t as assertWebCredsPathRegularFileOrMissing } from "./creds-files-B1kSWtBg.js";
2
- 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-BQi9pZqQ.js";
2
+ 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-DcEpIOmE.js";
3
3
  import { n as getStatusCode } from "./session-errors-JuazczrA.js";
4
4
  import { a as makeWASocket, i as makeCacheableSignalKeyStore, n as createBaileysSignalRepository, r as fetchLatestBaileysVersion, s as useMultiFileAuthState } from "./session.runtime-Nsqaehbd.js";
5
5
  import { VERSION, formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
@@ -177,12 +177,11 @@ var WhatsAppSocketOperationTimeoutError = class extends Error {
177
177
  this.name = "WhatsAppSocketOperationTimeoutError";
178
178
  }
179
179
  };
180
- function resolveWhatsAppSocketTiming(cfg, overrides) {
181
- const configured = cfg.web?.whatsapp;
180
+ function resolveWhatsAppSocketTiming(overrides) {
182
181
  return {
183
- keepAliveIntervalMs: parseStrictPositiveInteger(overrides?.keepAliveIntervalMs) ?? parseStrictPositiveInteger(configured?.keepAliveIntervalMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.keepAliveIntervalMs,
184
- connectTimeoutMs: parseStrictPositiveInteger(overrides?.connectTimeoutMs) ?? parseStrictPositiveInteger(configured?.connectTimeoutMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.connectTimeoutMs,
185
- defaultQueryTimeoutMs: parseStrictPositiveInteger(overrides?.defaultQueryTimeoutMs) ?? parseStrictPositiveInteger(configured?.defaultQueryTimeoutMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.defaultQueryTimeoutMs
182
+ keepAliveIntervalMs: parseStrictPositiveInteger(overrides?.keepAliveIntervalMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.keepAliveIntervalMs,
183
+ connectTimeoutMs: parseStrictPositiveInteger(overrides?.connectTimeoutMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.connectTimeoutMs,
184
+ defaultQueryTimeoutMs: parseStrictPositiveInteger(overrides?.defaultQueryTimeoutMs) ?? DEFAULT_WHATSAPP_SOCKET_TIMING.defaultQueryTimeoutMs
186
185
  };
187
186
  }
188
187
  function isWhatsAppSocketOperationTimeoutError(error) {
@@ -1,12 +1,57 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
4
+ import { chunkMarkdownTextWithMode } from "openclaw/plugin-sdk/reply-chunking";
4
5
  import { logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
5
- import { CONFIG_DIR, escapeRegExp, resolveUserPath as resolveUserPath$1 } from "openclaw/plugin-sdk/text-utility-runtime";
6
+ import { FormatCapabilityProfile, markdownToIRWithMeta, renderMarkdownIRChunksWithinLimit, renderMarkdownWithMarkers, sliceMarkdownIR } from "openclaw/plugin-sdk/text-chunking";
7
+ import { CONFIG_DIR, resolveUserPath as resolveUserPath$1 } from "openclaw/plugin-sdk/text-utility-runtime";
6
8
  //#region extensions/whatsapp/src/targets-runtime.ts
7
- const WHATSAPP_FENCE_PLACEHOLDER = "\0FENCE";
8
- const WHATSAPP_INLINE_CODE_PLACEHOLDER = "\0CODE";
9
- const WHATSAPP_PLACEHOLDER_TERMINATOR = "\0";
9
+ const WHATSAPP_FORMAT_CAPABILITIES = FormatCapabilityProfile.define({
10
+ mechanism: "markdown",
11
+ constructs: {
12
+ underline: "strip",
13
+ spoiler: "fallback",
14
+ codeLanguage: "fallback",
15
+ linkLabel: "fallback",
16
+ heading: "fallback",
17
+ taskList: "fallback",
18
+ table: "fallback",
19
+ image: "fallback"
20
+ },
21
+ chunk: {
22
+ limit: 4096,
23
+ unit: "chars"
24
+ }
25
+ });
26
+ const WHATSAPP_STYLE_MARKERS = {
27
+ bold: {
28
+ open: "*",
29
+ close: "*"
30
+ },
31
+ italic: {
32
+ open: "_",
33
+ close: "_"
34
+ },
35
+ strikethrough: {
36
+ open: "~",
37
+ close: "~"
38
+ },
39
+ code: {
40
+ open: "```",
41
+ close: "```"
42
+ },
43
+ code_block: {
44
+ open: "```\n",
45
+ close: "```"
46
+ }
47
+ };
48
+ const WHATSAPP_INDENT_GUARD = "⁠";
49
+ const WHATSAPP_MARKERS = [
50
+ "*",
51
+ "_",
52
+ "~",
53
+ "`"
54
+ ];
10
55
  function assertWebChannel(input) {
11
56
  if (input !== "web") throw new Error("Web channel must be 'web'");
12
57
  }
@@ -165,31 +210,90 @@ async function resolveJidToE164(jid, opts) {
165
210
  return null;
166
211
  }
167
212
  }
168
- function markdownToWhatsApp(text) {
169
- if (!text) return text;
170
- const fences = [];
171
- let result = text.replace(/```[\s\S]*?```/g, (match) => {
172
- fences.push(match);
173
- return `${WHATSAPP_FENCE_PLACEHOLDER}${fences.length - 1}${WHATSAPP_PLACEHOLDER_TERMINATOR}`;
174
- });
175
- const inlineCodes = [];
176
- result = result.replace(/`[^`\n]+`/g, (match) => {
177
- inlineCodes.push(match);
178
- return `${WHATSAPP_INLINE_CODE_PLACEHOLDER}${inlineCodes.length - 1}${WHATSAPP_PLACEHOLDER_TERMINATOR}`;
213
+ function protectWhatsAppEscapedMarkers(text) {
214
+ const placeholders = [];
215
+ for (const [start, end] of [[57344, 63743], [983040, 1048573]]) for (let codePoint = start; codePoint <= end && placeholders.length < WHATSAPP_MARKERS.length; codePoint += 1) {
216
+ const candidate = String.fromCodePoint(codePoint);
217
+ if (!text.includes(candidate)) placeholders.push(candidate);
218
+ }
219
+ if (placeholders.length < WHATSAPP_MARKERS.length) throw new Error("Unable to reserve WhatsApp formatting placeholders");
220
+ const markers = WHATSAPP_MARKERS.map((marker, index) => ({
221
+ source: `\\${marker}`,
222
+ placeholder: placeholders[index] ?? ""
223
+ }));
224
+ let protectedText = text;
225
+ for (const { source, placeholder } of markers) protectedText = protectedText.replaceAll(source, placeholder);
226
+ return {
227
+ text: protectedText,
228
+ markers
229
+ };
230
+ }
231
+ function restoreWhatsAppEscapedMarkers(text, markers) {
232
+ let restored = text;
233
+ for (const { source, placeholder } of markers) restored = restored.replaceAll(placeholder, source);
234
+ return restored;
235
+ }
236
+ function renderWhatsAppMarkdownIR(ir, escapedMarkers) {
237
+ return renderMarkdownWithMarkers(ir, {
238
+ styleMarkers: WHATSAPP_STYLE_MARKERS,
239
+ escapeText: (value) => restoreWhatsAppEscapedMarkers(value, escapedMarkers)
240
+ }, WHATSAPP_FORMAT_CAPABILITIES);
241
+ }
242
+ function prepareWhatsAppMarkdown(text, tableMode) {
243
+ const guardedIndent = /^[\t ]/u.test(text);
244
+ const escaped = protectWhatsAppEscapedMarkers(text);
245
+ const markdown = guardedIndent ? `${WHATSAPP_INDENT_GUARD}${escaped.text}` : escaped.text;
246
+ const trailingWhitespace = text.match(/\s+$/u)?.[0] ?? "";
247
+ const { ir: parsedIr, hasTables } = markdownToIRWithMeta(markdown, {
248
+ linkify: false,
249
+ autolink: false,
250
+ enableSpoilers: true,
251
+ enableHtmlUnderline: true,
252
+ enableTaskLists: true,
253
+ headingStyle: "rich",
254
+ blockquotePrefix: "> ",
255
+ tableMode: tableMode === "block" ? "code" : tableMode,
256
+ preserveSourceBlockSpacing: true
179
257
  });
180
- result = result.replace(/\*\*\*(.+?)\*\*\*/g, "*_$1_*");
181
- result = result.replace(/___(.+?)___/g, "*_$1_*");
182
- result = result.replace(/\*\*_(.+?)_\*\*/g, "*_$1_*");
183
- result = result.replace(/__\*(.+?)\*__/g, "*_$1_*");
184
- result = result.replace(/_\*\*(.+?)\*\*_/g, "*_$1_*");
185
- result = result.replace(/\*__(.+?)__\*/g, "*_$1_*");
186
- result = result.replace(/\*\*(.+?)\*\*/g, "*$1*");
187
- result = result.replace(/__(.+?)__/g, "*$1*");
188
- result = result.replace(/~~(.+?)~~/g, "~$1~");
189
- const terminator = escapeRegExp(WHATSAPP_PLACEHOLDER_TERMINATOR);
190
- result = result.replace(new RegExp(`${escapeRegExp(WHATSAPP_INLINE_CODE_PLACEHOLDER)}(\\d+)${terminator}`, "g"), (_, idx) => inlineCodes[Number(idx)] ?? "");
191
- result = result.replace(new RegExp(`${escapeRegExp(WHATSAPP_FENCE_PLACEHOLDER)}(\\d+)${terminator}`, "g"), (_, idx) => fences[Number(idx)] ?? "");
192
- return result;
258
+ let ir = parsedIr;
259
+ if (guardedIndent && ir.text.startsWith(WHATSAPP_INDENT_GUARD)) ir = sliceMarkdownIR(ir, 1, ir.text.length);
260
+ if (!hasTables && trailingWhitespace) ir.text = `${ir.text.trimEnd()}${trailingWhitespace}`;
261
+ return {
262
+ ir,
263
+ escapedMarkers: escaped.markers
264
+ };
265
+ }
266
+ function splitWhatsAppIRForChunkMode(ir, limit, chunkMode) {
267
+ if (chunkMode !== "newline") return [ir];
268
+ const chunkTexts = chunkMarkdownTextWithMode(ir.text, limit, chunkMode);
269
+ const chunks = [];
270
+ let cursor = 0;
271
+ for (const text of chunkTexts) {
272
+ const start = ir.text.indexOf(text, cursor);
273
+ if (start < 0) return [ir];
274
+ const end = start + text.length;
275
+ chunks.push(sliceMarkdownIR(ir, start, end));
276
+ cursor = end;
277
+ }
278
+ return chunks;
279
+ }
280
+ function markdownToWhatsAppChunks(text, limit, tableMode = "bullets", chunkMode = "length") {
281
+ if (!text) return [];
282
+ if (!text.trim()) return chunkMarkdownTextWithMode(text, limit, chunkMode);
283
+ const { ir, escapedMarkers } = prepareWhatsAppMarkdown(text, tableMode);
284
+ const render = (chunk) => renderWhatsAppMarkdownIR(chunk, escapedMarkers);
285
+ const rendered = render(ir);
286
+ let chunks = ir.styles.length === 0 && ir.links.length === 0 ? chunkMarkdownTextWithMode(rendered, limit, chunkMode) : splitWhatsAppIRForChunkMode(ir, limit, chunkMode).flatMap((source) => renderMarkdownIRChunksWithinLimit({
287
+ ir: source,
288
+ limit,
289
+ renderChunk: render,
290
+ measureRendered: (value) => value.length
291
+ }).map((chunk) => chunk.rendered));
292
+ if (chunkMode === "newline") chunks = chunks.map((chunk) => chunk.trimEnd()).filter(Boolean);
293
+ return chunks;
294
+ }
295
+ function markdownToWhatsApp(text, tableMode = "bullets") {
296
+ return markdownToWhatsAppChunks(text, Number.POSITIVE_INFINITY, tableMode).join("");
193
297
  }
194
298
  //#endregion
195
- export { resolveEquivalentWhatsAppDirectChatJids as a, toWhatsappJidWithLid as c, markdownToWhatsApp as i, isSelfChatMode as n, resolveJidToE164 as o, jidToE164 as r, toWhatsappJid as s, assertWebChannel as t };
299
+ export { markdownToWhatsAppChunks as a, toWhatsappJid as c, markdownToWhatsApp as i, toWhatsappJidWithLid as l, isSelfChatMode as n, resolveEquivalentWhatsAppDirectChatJids as o, jidToE164 as r, resolveJidToE164 as s, assertWebChannel as t };
@@ -0,0 +1,4 @@
1
+ import "./targets-runtime-TMk0lGuy.js";
2
+ import { sanitizeAssistantVisibleText, sanitizeAssistantVisibleTextWithProfile, stripToolCallXmlTags } from "openclaw/plugin-sdk/text-chunking";
3
+ import { normalizeE164, resolveUserPath as resolveUserPath$1 } from "openclaw/plugin-sdk/text-utility-runtime";
4
+ export { stripToolCallXmlTags as a, sanitizeAssistantVisibleTextWithProfile as i, resolveUserPath$1 as n, sanitizeAssistantVisibleText as r, normalizeE164 as t };
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## [1.1.2](https://github.com/protobufjs/protobuf.js/compare/utf8-v1.1.1...utf8-v1.1.2) (2026-07-05)
4
+
5
+
6
+ ### Performance Improvements
7
+
8
+ * Batch String.fromCharCode in @protobufjs/utf8 read ([#2355](https://github.com/protobufjs/protobuf.js/issues/2355)) ([d1ae3ce](https://github.com/protobufjs/protobuf.js/commit/d1ae3ce46370254ada0f3db689506a9139c8d1ee))
@@ -6,7 +6,7 @@
6
6
  * @namespace
7
7
  */
8
8
  var utf8 = exports,
9
- replacementChar = "\ufffd";
9
+ replacementCharCode = 0xFFFD; // U+FFFD REPLACEMENT CHARACTER
10
10
 
11
11
  /**
12
12
  * Calculates the UTF8 byte length of a string.
@@ -39,34 +39,45 @@ utf8.length = function utf8_length(string) {
39
39
  * @returns {string} String read
40
40
  */
41
41
  utf8.read = function utf8_read(buffer, start, end) {
42
- if (end - start < 1) {
42
+ if (end - start < 1)
43
43
  return "";
44
- }
45
-
46
- var str = "";
47
- for (var i = start; i < end;) {
48
- var t = buffer[i++];
44
+ // Batch code units and flush via String.fromCharCode.apply in 8192-unit
45
+ // chunks to avoid the per-character ConsString buildup of `str += ...`.
46
+ var parts = null,
47
+ chunk = [],
48
+ i = 0, // chunk write index
49
+ t, t2, c2, c3;
50
+ while (start < end) {
51
+ t = buffer[start++];
49
52
  if (t <= 0x7F) {
50
- str += String.fromCharCode(t);
53
+ chunk[i++] = t;
51
54
  } else if (t >= 0xC0 && t < 0xE0) {
52
- var c2 = (t & 0x1F) << 6 | buffer[i++] & 0x3F;
53
- str += c2 >= 0x80 ? String.fromCharCode(c2) : replacementChar;
55
+ c2 = (t & 0x1F) << 6 | buffer[start++] & 0x3F;
56
+ chunk[i++] = c2 >= 0x80 ? c2 : replacementCharCode;
54
57
  } else if (t >= 0xE0 && t < 0xF0) {
55
- var c3 = (t & 0xF) << 12 | (buffer[i++] & 0x3F) << 6 | buffer[i++] & 0x3F;
56
- str += c3 >= 0x800 ? String.fromCharCode(c3) : replacementChar;
58
+ c3 = (t & 0xF) << 12 | (buffer[start++] & 0x3F) << 6 | buffer[start++] & 0x3F;
59
+ chunk[i++] = c3 >= 0x800 ? c3 : replacementCharCode;
57
60
  } else if (t >= 0xF0) {
58
- var t2 = (t & 7) << 18 | (buffer[i++] & 0x3F) << 12 | (buffer[i++] & 0x3F) << 6 | buffer[i++] & 0x3F;
61
+ t2 = (t & 7) << 18 | (buffer[start++] & 0x3F) << 12 | (buffer[start++] & 0x3F) << 6 | buffer[start++] & 0x3F;
59
62
  if (t2 < 0x10000 || t2 > 0x10FFFF)
60
- str += replacementChar;
63
+ chunk[i++] = replacementCharCode;
61
64
  else {
62
65
  t2 -= 0x10000;
63
- str += String.fromCharCode(0xD800 + (t2 >> 10));
64
- str += String.fromCharCode(0xDC00 + (t2 & 0x3FF));
66
+ chunk[i++] = 0xD800 + (t2 >> 10);
67
+ chunk[i++] = 0xDC00 + (t2 & 0x3FF);
65
68
  }
66
69
  }
70
+ if (i > 8191) {
71
+ (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk.slice(0, i)));
72
+ i = 0;
73
+ }
67
74
  }
68
-
69
- return str;
75
+ if (parts) {
76
+ if (i)
77
+ parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));
78
+ return parts.join("");
79
+ }
80
+ return String.fromCharCode.apply(String, chunk.slice(0, i));
70
81
  };
71
82
 
72
83
  /**
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@protobufjs/utf8",
3
3
  "description": "A minimal UTF8 implementation for number arrays.",
4
- "version": "1.1.1",
4
+ "version": "1.1.2",
5
5
  "author": "Daniel Wirtz <dcode+protobufjs@dcode.io>",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/dcodeIO/protobuf.js.git"
8
+ "url": "https://github.com/protobufjs/protobuf.js.git"
9
9
  },
10
10
  "license": "BSD-3-Clause",
11
11
  "main": "index.js",
@@ -47,6 +47,11 @@ tape.test("utf8", function(test) {
47
47
  test.equal(comp, "\ufffd", "should decode overlong UTF-8 sequences as replacement characters");
48
48
  });
49
49
 
50
+ var longMultibyteStr = "\u20ac\u00df\u7a7a\u03bb\ud835\udd4f".repeat(20000); // 3-byte, 2-byte and surrogate-pair code points
51
+ var longMultibyte = Buffer.from(longMultibyteStr, "utf8");
52
+ comp = utf8.read(longMultibyte, 0, longMultibyte.length);
53
+ test.equal(comp, longMultibyteStr, "should decode a large multibyte string spanning many flush boundaries");
54
+
50
55
  test.end();
51
56
  });
52
57
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thi.ng/bitstream",
3
- "version": "2.4.53",
3
+ "version": "2.4.54",
4
4
  "description": "ES6 iterator based read/write bit streams with support for variable word widths",
5
5
  "type": "module",
6
6
  "module": "./index.js",
@@ -40,10 +40,10 @@
40
40
  "tool:tangle": "../../node_modules/.bin/tangle src/**/*.ts"
41
41
  },
42
42
  "dependencies": {
43
- "@thi.ng/errors": "^2.6.15"
43
+ "@thi.ng/errors": "^2.6.16"
44
44
  },
45
45
  "devDependencies": {
46
- "esbuild": "^0.28.0",
46
+ "esbuild": "^0.28.1",
47
47
  "typedoc": "^0.28.19",
48
48
  "typescript": "^6.0.3"
49
49
  },
@@ -84,5 +84,5 @@
84
84
  "rle-pack"
85
85
  ]
86
86
  },
87
- "gitHead": "c47c56420bcae2e0477d252a497be44f08ca185a"
87
+ "gitHead": "febee81fd8b59e5e330a6e6521a2667ed5401a3d"
88
88
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thi.ng/errors",
3
- "version": "2.6.15",
3
+ "version": "2.6.16",
4
4
  "description": "Custom error types and error factory functions",
5
5
  "type": "module",
6
6
  "module": "./index.js",
@@ -40,8 +40,8 @@
40
40
  "tool:tangle": "../../node_modules/.bin/tangle src/**/*.ts"
41
41
  },
42
42
  "devDependencies": {
43
- "@types/node": "^25.6.2",
44
- "esbuild": "^0.28.0",
43
+ "@types/node": "^25.9.4",
44
+ "esbuild": "^0.28.1",
45
45
  "typedoc": "^0.28.19",
46
46
  "typescript": "^6.0.3"
47
47
  },
@@ -100,5 +100,5 @@
100
100
  "alias": "err",
101
101
  "year": 2018
102
102
  },
103
- "gitHead": "c47c56420bcae2e0477d252a497be44f08ca185a"
103
+ "gitHead": "febee81fd8b59e5e330a6e6521a2667ed5401a3d"
104
104
  }
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 01 Jul 2026 11:03:38 GMT
11
+ * Last updated: Wed, 08 Jul 2026 06:47:45 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -153,7 +153,11 @@ declare module "node:fs/promises" {
153
153
  * @return Fulfills with `undefined` upon success.
154
154
  */
155
155
  appendFile(
156
- data: string | Uint8Array,
156
+ data:
157
+ | string
158
+ | NodeJS.ArrayBufferView
159
+ | Iterable<string | NodeJS.ArrayBufferView>
160
+ | AsyncIterable<string | NodeJS.ArrayBufferView>,
157
161
  options?:
158
162
  | (ObjectEncodingOptions & Abortable)
159
163
  | BufferEncoding
@@ -470,7 +474,11 @@ declare module "node:fs/promises" {
470
474
  * @since v10.0.0
471
475
  */
472
476
  writeFile(
473
- data: string | Uint8Array,
477
+ data:
478
+ | string
479
+ | NodeJS.ArrayBufferView
480
+ | Iterable<string | NodeJS.ArrayBufferView>
481
+ | AsyncIterable<string | NodeJS.ArrayBufferView>,
474
482
  options?:
475
483
  | (ObjectEncodingOptions & Abortable)
476
484
  | BufferEncoding
@@ -1208,8 +1216,7 @@ declare module "node:fs/promises" {
1208
1216
  | string
1209
1217
  | NodeJS.ArrayBufferView
1210
1218
  | Iterable<string | NodeJS.ArrayBufferView>
1211
- | AsyncIterable<string | NodeJS.ArrayBufferView>
1212
- | Stream,
1219
+ | AsyncIterable<string | NodeJS.ArrayBufferView>,
1213
1220
  options?:
1214
1221
  | (ObjectEncodingOptions & {
1215
1222
  mode?: Mode | undefined;
@@ -1240,7 +1247,11 @@ declare module "node:fs/promises" {
1240
1247
  */
1241
1248
  function appendFile(
1242
1249
  path: PathLike | FileHandle,
1243
- data: string | Uint8Array,
1250
+ data:
1251
+ | string
1252
+ | NodeJS.ArrayBufferView
1253
+ | Iterable<string | NodeJS.ArrayBufferView>
1254
+ | AsyncIterable<string | NodeJS.ArrayBufferView>,
1244
1255
  options?: (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined }) | BufferEncoding | null,
1245
1256
  ): Promise<void>;
1246
1257
  /**
@@ -1432,7 +1443,6 @@ declare module "node:fs/promises" {
1432
1443
  * When copying a directory to another directory, globs are not supported and
1433
1444
  * behavior is similar to `cp dir1/ dir2/`.
1434
1445
  * @since v16.7.0
1435
- * @experimental
1436
1446
  * @param src source path to copy.
1437
1447
  * @param dest destination path to copy to.
1438
1448
  * @return Fulfills with `undefined` upon success.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "26.1.0",
3
+ "version": "26.1.1",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -150,6 +150,6 @@
150
150
  "undici-types": "~8.3.0"
151
151
  },
152
152
  "peerDependencies": {},
153
- "typesPublisherContentHash": "bac6fe2369bbd2e0f2cf6643373e8c398ed66b886a72749c8d1fb0b9b60031ab",
153
+ "typesPublisherContentHash": "a59119b073061829bc67a5bf6bc2b8ecb0a5a6196058e3c73172a00440f4e16d",
154
154
  "typeScriptVersion": "5.6"
155
155
  }