@openclaw/whatsapp 2026.7.2-beta.7 → 2026.7.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.
- package/README.md +1 -1
- package/dist/{access-control-pZcxTmd5.js → .setup/access-control-C0jumQuO.mjs} +5 -4
- package/dist/.setup/account-config-6PTOSfaI.mjs +47 -0
- package/dist/{accounts-CSqLvCY5.js → .setup/accounts-Dw16pdNl.mjs} +9 -47
- package/dist/{action-runtime-BzfDFPbH.js → .setup/action-runtime-DLK_9v4r.mjs} +3 -3
- package/dist/{active-listener-BEjWsCNM.js → .setup/active-listener-CloPBx0S.mjs} +3 -3
- package/dist/{agent-tools-login-DE9MU98T.js → .setup/agent-tools-login-DINqgaYo.mjs} +19 -7
- package/dist/{approval-handler.runtime-DrA59QSA.js → .setup/approval-handler.runtime-DtJZbu3y.mjs} +14 -20
- package/dist/{approval-resolver-DoeBBt22.js → .setup/approval-resolver-DF-lu8k5.mjs} +1 -2
- package/dist/{auth-store-DcEpIOmE.js → .setup/auth-store-BZKGa0tW.mjs} +25 -29
- package/dist/{channel-Dg62olhy.js → .setup/channel-9WGjBznd.mjs} +117 -132
- package/dist/{channel-react-action-J_YtyMGX.js → .setup/channel-react-action-mvIbAFhn.mjs} +15 -12
- package/dist/{channel.runtime-BP0xNmLi.js → .setup/channel.runtime-DmmMgRJQ.mjs} +6 -6
- package/dist/.setup/channel.setup-ByBYSeLd.mjs +22 -0
- package/dist/.setup/config-schema-mBX2nmn1.mjs +47 -0
- package/dist/{connection-controller-BOB2MVKY.js → .setup/connection-controller-Dt62u6fI.mjs} +29 -226
- package/dist/.setup/connection-controller-registry-TSX_udJp.mjs +22 -0
- package/dist/{constants-HU41RHGI.js → .setup/constants-C7m81BNe.mjs} +1 -1
- package/dist/.setup/directory-config-B7Obxrq2.mjs +37 -0
- package/dist/.setup/doctor-By3SB4lm.mjs +48 -0
- package/dist/{group-session-key-DVMZlO3x.js → .setup/group-session-key-CEwPRRRK.mjs} +5 -38
- package/dist/{identity-CPrT5aEU.js → .setup/identity-CDB1bT-p.mjs} +2 -2
- package/dist/.setup/legacy-session-surface-api-B2szjq4r.mjs +2 -0
- package/dist/.setup/legacy-state-migrations-api-DXCxufZz.mjs +3 -0
- package/dist/{login-CvY2Dhch.js → .setup/login-7b3M0iBp.mjs} +12 -51
- package/dist/{login-qr-Bncpb6js.js → .setup/login-qr-CbyA4QX5.mjs} +47 -23
- package/dist/{monitor-CfkaUSL2.js → .setup/monitor-Dh6Di_YO.mjs} +1451 -1843
- package/dist/.setup/normalize-eddWWsNV.mjs +2 -0
- package/dist/{normalize-target-CugRyONv.js → .setup/normalize-target-bVWjgftN.mjs} +10 -18
- package/dist/{resolve-outbound-target-1GqbT1uX.js → .setup/resolve-outbound-target-oI7VpU4w.mjs} +1 -1
- package/dist/.setup/runtime-BfAdAEYT.mjs +8 -0
- package/dist/.setup/send-BQjMC41n.mjs +777 -0
- package/dist/{send-api-7wk6eQyW.js → .setup/send-api-BiAkPLr3.mjs} +155 -105
- package/dist/{session-errors-JuazczrA.js → .setup/session-errors-BAj9D2La.mjs} +1 -2
- package/dist/.setup/session-vUI41Jel.mjs +252 -0
- package/dist/.setup/session.runtime-B-V3rXP6.mjs +12 -0
- package/dist/{shared-CAxd15bp.js → .setup/setup-core--FfzntMG.mjs} +94 -63
- package/dist/{setup-finalize-BZucx24W.js → .setup/setup-finalize-DCruIciL.mjs} +17 -46
- package/dist/.setup/setup-plugin-api-B6ck_20D.mjs +3 -0
- package/dist/{setup-surface-BkVcd769.js → .setup/setup-surface-Zvj2cLzz.mjs} +4 -4
- package/dist/.setup/socket-timing-DhbVFjah.mjs +77 -0
- package/dist/{state-migrations-CAMTrs2U.js → .setup/state-migrations-D_BmQUR9.mjs} +8 -1
- package/dist/.setup/targets-runtime-C-GiVn6Y.mjs +188 -0
- package/dist/.setup/text-runtime-CUrq1mFq.mjs +4 -0
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/{call-tool-api.js → agent-tools-api.js} +26 -11
- package/dist/api.js +27 -17
- package/dist/auth-presence.js +1 -1
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/constants.js +2 -0
- package/dist/contract-api.js +5 -5
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +5 -46
- package/dist/index.js +4 -4
- package/dist/legacy-session-surface-api.js +1 -1
- package/dist/legacy-state-migrations-api.js +1 -1
- package/dist/light-runtime-api.js +4 -4
- package/dist/login-qr-runtime.js +1 -1
- package/dist/runtime-api.js +14 -14
- package/dist/runtime-setter-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +4 -3
- package/dist/setup-plugin-api.js +1 -1
- package/dist/targets.js +2 -0
- package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/package.json +4 -4
- package/node_modules/audio-decode/node_modules/@thi.ng/errors/package.json +4 -4
- package/node_modules/audio-decode/node_modules/audio-type/package.json +2 -3
- package/node_modules/baileys/node_modules/@protobufjs/aspromise/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/aspromise/README.md +13 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/aspromise.d.ts → @protobufjs/aspromise/index.d.ts} +13 -13
- package/node_modules/baileys/node_modules/{protobufjs/src/util/aspromise.js → @protobufjs/aspromise/index.js} +52 -52
- package/node_modules/baileys/node_modules/@protobufjs/aspromise/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/aspromise/tests/index.js +130 -0
- package/node_modules/baileys/node_modules/@protobufjs/base64/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/base64/README.md +19 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/base64.d.ts → @protobufjs/base64/index.d.ts} +32 -32
- package/node_modules/baileys/node_modules/{protobufjs/src/util/base64.js → @protobufjs/base64/index.js} +139 -146
- package/node_modules/baileys/node_modules/@protobufjs/base64/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/base64/tests/index.js +46 -0
- package/node_modules/baileys/node_modules/@protobufjs/codegen/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/codegen/README.md +49 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/codegen.d.ts → @protobufjs/codegen/index.d.ts} +31 -31
- package/node_modules/baileys/node_modules/{protobufjs/src/util/codegen.js → @protobufjs/codegen/index.js} +112 -118
- package/node_modules/baileys/node_modules/@protobufjs/codegen/package.json +13 -0
- package/node_modules/baileys/node_modules/@protobufjs/codegen/tests/index.js +13 -0
- package/node_modules/baileys/node_modules/@protobufjs/eventemitter/CHANGELOG.md +8 -0
- package/node_modules/baileys/node_modules/@protobufjs/eventemitter/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/eventemitter/README.md +22 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/eventemitter.d.ts → @protobufjs/eventemitter/index.d.ts} +45 -45
- package/node_modules/baileys/node_modules/{protobufjs/src/util/eventemitter.js → @protobufjs/eventemitter/index.js} +86 -86
- package/node_modules/baileys/node_modules/@protobufjs/eventemitter/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/eventemitter/tests/index.js +83 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/CHANGELOG.md +8 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/README.md +13 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/fetch.d.ts → @protobufjs/fetch/index.d.ts} +56 -56
- package/node_modules/baileys/node_modules/{protobufjs/src/util/fetch.js → @protobufjs/fetch/index.js} +112 -112
- package/node_modules/baileys/node_modules/@protobufjs/fetch/package.json +27 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/tests/data/file.txt +1 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/tests/index.js +158 -0
- package/node_modules/baileys/node_modules/@protobufjs/fetch/util/fs.js +11 -0
- package/node_modules/baileys/node_modules/@protobufjs/float/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/float/README.md +102 -0
- package/node_modules/baileys/node_modules/@protobufjs/float/bench/index.js +87 -0
- package/node_modules/baileys/node_modules/@protobufjs/float/bench/suite.js +46 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/float.js → @protobufjs/float/index.js} +335 -335
- package/node_modules/baileys/node_modules/@protobufjs/float/package.json +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/float/tests/index.js +100 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/CHANGELOG.md +8 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/README.md +13 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/index.d.ts +10 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/index.js +38 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/array.js +1 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +1 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +1 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/object.js +1 -0
- package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/index.js +20 -0
- package/node_modules/baileys/node_modules/@protobufjs/path/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/path/README.md +19 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/path.d.ts → @protobufjs/path/index.d.ts} +22 -22
- package/node_modules/baileys/node_modules/{protobufjs/src/util/path.js → @protobufjs/path/index.js} +65 -100
- package/node_modules/baileys/node_modules/@protobufjs/path/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/path/tests/index.js +60 -0
- package/node_modules/baileys/node_modules/@protobufjs/pool/.npmignore +3 -0
- package/node_modules/baileys/node_modules/@protobufjs/pool/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/pool/README.md +13 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/pool.d.ts → @protobufjs/pool/index.d.ts} +32 -32
- package/node_modules/baileys/node_modules/{protobufjs/src/util/pool.js → @protobufjs/pool/index.js} +48 -48
- package/node_modules/baileys/node_modules/@protobufjs/pool/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/pool/tests/index.js +33 -0
- package/node_modules/baileys/node_modules/@protobufjs/utf8/LICENSE +26 -0
- package/node_modules/baileys/node_modules/@protobufjs/utf8/README.md +20 -0
- package/node_modules/baileys/node_modules/{protobufjs/src/util/utf8.d.ts → @protobufjs/utf8/index.d.ts} +24 -24
- package/node_modules/baileys/node_modules/{protobufjs/src/util/utf8.js → @protobufjs/utf8/index.js} +104 -190
- package/node_modules/baileys/node_modules/@protobufjs/utf8/package.json +21 -0
- package/node_modules/baileys/node_modules/@protobufjs/utf8/tests/data/surrogate_pair_bug.txt +207 -0
- package/node_modules/baileys/node_modules/@protobufjs/utf8/tests/data/utf8.txt +216 -0
- package/node_modules/baileys/node_modules/@protobufjs/utf8/tests/index.js +74 -0
- package/node_modules/baileys/node_modules/@types/node/LICENSE +21 -0
- package/node_modules/baileys/node_modules/@types/node/README.md +15 -0
- package/node_modules/baileys/node_modules/@types/node/assert/strict.d.ts +68 -0
- package/node_modules/baileys/node_modules/@types/node/assert.d.ts +1077 -0
- package/node_modules/baileys/node_modules/@types/node/async_hooks.d.ts +711 -0
- package/node_modules/baileys/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/node_modules/baileys/node_modules/@types/node/buffer.d.ts +1799 -0
- package/node_modules/baileys/node_modules/@types/node/child_process.d.ts +1362 -0
- package/node_modules/baileys/node_modules/@types/node/cluster.d.ts +432 -0
- package/node_modules/baileys/node_modules/@types/node/console.d.ts +93 -0
- package/node_modules/baileys/node_modules/@types/node/constants.d.ts +14 -0
- package/node_modules/baileys/node_modules/@types/node/crypto.d.ts +3954 -0
- package/node_modules/baileys/node_modules/@types/node/dgram.d.ts +537 -0
- package/node_modules/baileys/node_modules/@types/node/diagnostics_channel.d.ts +794 -0
- package/node_modules/baileys/node_modules/@types/node/dns/promises.d.ts +497 -0
- package/node_modules/baileys/node_modules/@types/node/dns.d.ts +876 -0
- package/node_modules/baileys/node_modules/@types/node/domain.d.ts +150 -0
- package/node_modules/baileys/node_modules/@types/node/events.d.ts +1008 -0
- package/node_modules/baileys/node_modules/@types/node/ffi.d.ts +486 -0
- package/node_modules/baileys/node_modules/@types/node/fs/promises.d.ts +1471 -0
- package/node_modules/baileys/node_modules/@types/node/fs.d.ts +4786 -0
- package/node_modules/baileys/node_modules/@types/node/globals.d.ts +150 -0
- package/node_modules/baileys/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/node_modules/baileys/node_modules/@types/node/http.d.ts +2172 -0
- package/node_modules/baileys/node_modules/@types/node/http2.d.ts +2489 -0
- package/node_modules/baileys/node_modules/@types/node/https.d.ts +400 -0
- package/node_modules/baileys/node_modules/@types/node/index.d.ts +115 -0
- package/node_modules/baileys/node_modules/@types/node/inspector/promises.d.ts +35 -0
- package/node_modules/baileys/node_modules/@types/node/inspector.d.ts +264 -0
- package/node_modules/baileys/node_modules/@types/node/inspector.generated.d.ts +4406 -0
- package/node_modules/baileys/node_modules/@types/node/module.d.ts +726 -0
- package/node_modules/baileys/node_modules/@types/node/net.d.ts +970 -0
- package/node_modules/baileys/node_modules/@types/node/os.d.ts +498 -0
- package/node_modules/baileys/node_modules/@types/node/package.json +155 -0
- package/node_modules/baileys/node_modules/@types/node/path/posix.d.ts +8 -0
- package/node_modules/baileys/node_modules/@types/node/path/win32.d.ts +8 -0
- package/node_modules/baileys/node_modules/@types/node/path.d.ts +178 -0
- package/node_modules/baileys/node_modules/@types/node/perf_hooks.d.ts +604 -0
- package/node_modules/baileys/node_modules/@types/node/process.d.ts +2217 -0
- package/node_modules/baileys/node_modules/@types/node/punycode.d.ts +89 -0
- package/node_modules/baileys/node_modules/@types/node/querystring.d.ts +139 -0
- package/node_modules/baileys/node_modules/@types/node/quic.d.ts +978 -0
- package/node_modules/baileys/node_modules/@types/node/readline/promises.d.ts +158 -0
- package/node_modules/baileys/node_modules/@types/node/readline.d.ts +508 -0
- package/node_modules/baileys/node_modules/@types/node/repl.d.ts +420 -0
- package/node_modules/baileys/node_modules/@types/node/sea.d.ts +47 -0
- package/node_modules/baileys/node_modules/@types/node/sqlite.d.ts +1123 -0
- package/node_modules/baileys/node_modules/@types/node/stream/consumers.d.ts +114 -0
- package/node_modules/baileys/node_modules/@types/node/stream/iter.d.ts +451 -0
- package/node_modules/baileys/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/node_modules/baileys/node_modules/@types/node/stream/web.d.ts +300 -0
- package/node_modules/baileys/node_modules/@types/node/stream.d.ts +1806 -0
- package/node_modules/baileys/node_modules/@types/node/string_decoder.d.ts +27 -0
- package/node_modules/baileys/node_modules/@types/node/test/reporters.d.ts +59 -0
- package/node_modules/baileys/node_modules/@types/node/test.d.ts +2389 -0
- package/node_modules/baileys/node_modules/@types/node/timers/promises.d.ts +93 -0
- package/node_modules/baileys/node_modules/@types/node/timers.d.ts +149 -0
- package/node_modules/baileys/node_modules/@types/node/tls.d.ts +1193 -0
- package/node_modules/baileys/node_modules/@types/node/trace_events.d.ts +103 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/node_modules/baileys/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- package/node_modules/baileys/node_modules/@types/node/tty.d.ts +225 -0
- package/node_modules/baileys/node_modules/@types/node/url.d.ts +556 -0
- package/node_modules/baileys/node_modules/@types/node/util/types.d.ts +558 -0
- package/node_modules/baileys/node_modules/@types/node/util.d.ts +1677 -0
- package/node_modules/baileys/node_modules/@types/node/v8.d.ts +1062 -0
- package/node_modules/baileys/node_modules/@types/node/vm.d.ts +1136 -0
- package/node_modules/baileys/node_modules/@types/node/wasi.d.ts +131 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/domexception.d.ts +83 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/node_modules/baileys/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/node_modules/baileys/node_modules/@types/node/worker_threads.d.ts +669 -0
- package/node_modules/baileys/node_modules/@types/node/zlib/iter.d.ts +131 -0
- package/node_modules/baileys/node_modules/@types/node/zlib.d.ts +589 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.js +4 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.min.js +1 -1
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.min.js.map +3 -3
- package/node_modules/baileys/node_modules/lru-cache/package.json +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.js +1 -7
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.js +3 -23
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.js +13 -38
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegParser.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/package.json +6 -6
- package/node_modules/baileys/node_modules/p-queue/dist/index.js +27 -37
- package/node_modules/baileys/node_modules/p-queue/package.json +1 -1
- package/node_modules/baileys/node_modules/protobufjs/README.md +553 -266
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js +1985 -3177
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js +1244 -1966
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js +2005 -3330
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/README.md +70 -3
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/index.d.ts +193 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/index.js +1185 -1
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/test.js +54 -0
- package/node_modules/baileys/node_modules/protobufjs/google/api/annotations.json +1 -3
- package/node_modules/baileys/node_modules/protobufjs/google/api/http.json +1 -2
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/api.json +6 -12
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.json +87 -170
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.proto +8 -0
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/source_context.json +1 -2
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/type.json +7 -14
- package/node_modules/baileys/node_modules/protobufjs/index.d.ts +703 -1066
- package/node_modules/baileys/node_modules/protobufjs/package.json +52 -25
- package/node_modules/baileys/node_modules/protobufjs/scripts/postinstall.js +32 -0
- package/node_modules/baileys/node_modules/protobufjs/src/common.js +8 -14
- package/node_modules/baileys/node_modules/protobufjs/src/converter.js +51 -85
- package/node_modules/baileys/node_modules/protobufjs/src/decoder.js +61 -205
- package/node_modules/baileys/node_modules/protobufjs/src/encoder.js +7 -27
- package/node_modules/baileys/node_modules/protobufjs/src/enum.js +5 -18
- package/node_modules/baileys/node_modules/protobufjs/src/field.js +19 -71
- package/node_modules/baileys/node_modules/protobufjs/src/index-light.js +29 -29
- package/node_modules/baileys/node_modules/protobufjs/src/index-minimal.js +13 -12
- package/node_modules/baileys/node_modules/protobufjs/src/index.js +6 -6
- package/node_modules/baileys/node_modules/protobufjs/src/mapfield.js +8 -26
- package/node_modules/baileys/node_modules/protobufjs/src/message.js +11 -5
- package/node_modules/baileys/node_modules/protobufjs/src/method.js +7 -30
- package/node_modules/baileys/node_modules/protobufjs/src/namespace.js +10 -26
- package/node_modules/baileys/node_modules/protobufjs/src/object.js +31 -41
- package/node_modules/baileys/node_modules/protobufjs/src/oneof.js +1 -12
- package/node_modules/baileys/node_modules/protobufjs/src/parse.js +47 -169
- package/node_modules/baileys/node_modules/protobufjs/src/reader.js +50 -412
- package/node_modules/baileys/node_modules/protobufjs/src/reader_buffer.js +5 -31
- package/node_modules/baileys/node_modules/protobufjs/src/root.js +4 -16
- package/node_modules/baileys/node_modules/protobufjs/src/rpc/service.js +5 -18
- package/node_modules/baileys/node_modules/protobufjs/src/service.js +2 -15
- package/node_modules/baileys/node_modules/protobufjs/src/tokenize.js +1 -6
- package/node_modules/baileys/node_modules/protobufjs/src/type.js +36 -80
- package/node_modules/baileys/node_modules/protobufjs/src/typescript.jsdoc +15 -0
- package/node_modules/baileys/node_modules/protobufjs/src/util/longbits.js +6 -10
- package/node_modules/baileys/node_modules/protobufjs/src/util/minimal.js +54 -71
- package/node_modules/baileys/node_modules/protobufjs/src/util.js +17 -51
- package/node_modules/baileys/node_modules/protobufjs/src/verifier.js +14 -19
- package/node_modules/baileys/node_modules/protobufjs/src/wrappers.js +3 -2
- package/node_modules/baileys/node_modules/protobufjs/src/writer.js +191 -424
- package/node_modules/baileys/node_modules/protobufjs/src/writer_buffer.js +26 -41
- package/node_modules/baileys/node_modules/protobufjs/tsconfig.json +5 -3
- package/node_modules/baileys/node_modules/undici-types/LICENSE +21 -0
- package/node_modules/baileys/node_modules/undici-types/README.md +6 -0
- package/node_modules/baileys/node_modules/undici-types/agent.d.ts +30 -0
- package/node_modules/baileys/node_modules/undici-types/api.d.ts +43 -0
- package/node_modules/baileys/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/node_modules/baileys/node_modules/undici-types/cache-interceptor.d.ts +179 -0
- package/node_modules/baileys/node_modules/undici-types/cache.d.ts +36 -0
- package/node_modules/baileys/node_modules/undici-types/client-stats.d.ts +15 -0
- package/node_modules/baileys/node_modules/undici-types/client.d.ts +129 -0
- package/node_modules/baileys/node_modules/undici-types/connector.d.ts +36 -0
- package/node_modules/baileys/node_modules/undici-types/content-type.d.ts +21 -0
- package/node_modules/baileys/node_modules/undici-types/cookies.d.ts +30 -0
- package/node_modules/baileys/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/node_modules/baileys/node_modules/undici-types/dispatcher.d.ts +253 -0
- package/node_modules/baileys/node_modules/undici-types/dispatcher1-wrapper.d.ts +7 -0
- package/node_modules/baileys/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/baileys/node_modules/undici-types/errors.d.ts +177 -0
- package/node_modules/baileys/node_modules/undici-types/eventsource.d.ts +66 -0
- package/node_modules/baileys/node_modules/undici-types/fetch.d.ts +231 -0
- package/node_modules/baileys/node_modules/undici-types/formdata.d.ts +108 -0
- package/node_modules/baileys/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/node_modules/baileys/node_modules/undici-types/global-origin.d.ts +7 -0
- package/node_modules/baileys/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/node_modules/baileys/node_modules/undici-types/handlers.d.ts +14 -0
- package/node_modules/baileys/node_modules/undici-types/header.d.ts +165 -0
- package/node_modules/baileys/node_modules/undici-types/index.d.ts +93 -0
- package/node_modules/baileys/node_modules/undici-types/interceptors.d.ts +80 -0
- package/node_modules/baileys/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/node_modules/baileys/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/node_modules/baileys/node_modules/undici-types/mock-client.d.ts +27 -0
- package/node_modules/baileys/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/node_modules/baileys/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/node_modules/baileys/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/node_modules/baileys/node_modules/undici-types/package.json +55 -0
- package/node_modules/baileys/node_modules/undici-types/patch.d.ts +29 -0
- package/node_modules/baileys/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/node_modules/baileys/node_modules/undici-types/pool.d.ts +39 -0
- package/node_modules/baileys/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/node_modules/baileys/node_modules/undici-types/readable.d.ts +68 -0
- package/node_modules/baileys/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/node_modules/baileys/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/node_modules/baileys/node_modules/undici-types/round-robin-pool.d.ts +39 -0
- package/node_modules/baileys/node_modules/undici-types/snapshot-agent.d.ts +113 -0
- package/node_modules/baileys/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/baileys/node_modules/undici-types/util.d.ts +18 -0
- package/node_modules/baileys/node_modules/undici-types/utility.d.ts +7 -0
- package/node_modules/baileys/node_modules/undici-types/webidl.d.ts +346 -0
- package/node_modules/baileys/node_modules/undici-types/websocket.d.ts +188 -0
- package/node_modules/baileys/node_modules/ws/lib/permessage-deflate.js +3 -1
- package/node_modules/baileys/node_modules/ws/package.json +1 -1
- package/node_modules/typebox/build/compile/validator.d.mts +4 -1
- package/node_modules/typebox/build/guard/guard.d.mts +1 -1
- package/node_modules/typebox/build/guard/guard.mjs +2 -5
- package/node_modules/typebox/build/guard/string.mjs +4 -16
- package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
- package/node_modules/typebox/build/typebox.d.mts +1 -1
- package/node_modules/typebox/build/typebox.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +32 -29
- package/openclaw.plugin.json +239 -214
- package/package.json +11 -21
- package/dist/approval-reactions-Cu66aYdq.js +0 -373
- package/dist/channel.setup-pMwNVkCA.js +0 -19
- package/dist/config-schema-BQP5YCeK.js +0 -50
- package/dist/connection-controller-runtime-context-DG0tuYuw.js +0 -23
- package/dist/directory-config-DalGrfGN.js +0 -196
- package/dist/doctor-CwzVXKoE.js +0 -10
- package/dist/normalize-C7Hkc_vE.js +0 -2
- package/dist/question-reactions-CRsnyoMK.js +0 -142
- package/dist/runtime-BLlToOi6.js +0 -21
- package/dist/send-D37ddk22.js +0 -436
- package/dist/session.runtime-Nsqaehbd.js +0 -16
- package/dist/socket-close-DridEuzz.js +0 -622
- package/dist/targets-runtime-TMk0lGuy.js +0 -299
- package/dist/text-runtime-CaKLhowd.js +0 -4
- package/node_modules/baileys/node_modules/protobufjs/ext/README.md +0 -70
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.d.ts +0 -87
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.generated.d.ts +0 -417
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.js +0 -1356
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.LICENSE +0 -201
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.d.ts +0 -20
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.generated.d.ts +0 -49
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.js +0 -951
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.d.ts +0 -19
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.generated.d.ts +0 -33
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.js +0 -1276
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/compiler/plugin.json +0 -126
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/compiler/plugin.proto +0 -47
- package/node_modules/baileys/node_modules/protobufjs/src/typescript.js +0 -25
- /package/dist/{account-ids-CB5SOWjc.js → .setup/account-ids-CB5SOWjc.mjs} +0 -0
- /package/dist/{audio-preflight.runtime-C_glQhZY.js → .setup/audio-preflight.runtime-C_glQhZY.mjs} +0 -0
- /package/dist/{command-policy-BIOSHySD.js → .setup/command-policy-BIOSHySD.mjs} +0 -0
- /package/dist/{creds-files-B1kSWtBg.js → .setup/creds-files-B1kSWtBg.mjs} +0 -0
- /package/dist/{group-config-path-BGyzT9Lg.js → .setup/group-config-path-BGyzT9Lg.mjs} +0 -0
- /package/dist/{group-session-contract-DDnZSsJ1.js → .setup/group-session-contract-DDnZSsJ1.mjs} +0 -0
- /package/dist/{reply-resolver.runtime-Ded8D58Y.js → .setup/reply-resolver.runtime-Ded8D58Y.mjs} +0 -0
- /package/dist/{rolldown-runtime-D7D4PA-g.js → .setup/rolldown-runtime-D7D4PA-g.mjs} +0 -0
- /package/dist/{security-contract-nAzD945y.js → .setup/security-contract-nAzD945y.mjs} +0 -0
- /package/dist/{session-contract-DMTm6Q_L.js → .setup/session-contract-DMTm6Q_L.mjs} +0 -0
- /package/node_modules/baileys/node_modules/{protobufjs/src/util/float.d.ts → @protobufjs/float/index.d.ts} +0 -0
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as resolveWhatsAppAccount } from "./accounts-CSqLvCY5.js";
|
|
3
|
-
import { n as getOptionalWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
4
|
-
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth } from "./group-session-key-DVMZlO3x.js";
|
|
5
|
-
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
6
|
-
import { createApprovalReactionTargetStore, listApprovalReactionBindings, resolveTypedApprovalReactionTarget } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
7
|
-
//#region extensions/whatsapp/src/approval-reactions.ts
|
|
8
|
-
var approval_reactions_exports = /* @__PURE__ */ __exportAll({
|
|
9
|
-
clearWhatsAppApprovalReactionTargetsForTest: () => clearWhatsAppApprovalReactionTargetsForTest,
|
|
10
|
-
maybeResolveWhatsAppApprovalReaction: () => maybeResolveWhatsAppApprovalReaction,
|
|
11
|
-
prepareWhatsAppApprovalPayloadForDelivery: () => prepareWhatsAppApprovalPayloadForDelivery,
|
|
12
|
-
registerWhatsAppApprovalReactionTarget: () => registerWhatsAppApprovalReactionTarget,
|
|
13
|
-
registerWhatsAppApprovalReactionTargetForDeliveredPayload: () => registerWhatsAppApprovalReactionTargetForDeliveredPayload,
|
|
14
|
-
resolveWhatsAppApprovalReactionTargetWithPersistence: () => resolveWhatsAppApprovalReactionTargetWithPersistence,
|
|
15
|
-
unregisterWhatsAppApprovalReactionTarget: () => unregisterWhatsAppApprovalReactionTarget
|
|
16
|
-
});
|
|
17
|
-
const PERSISTENT_NAMESPACE = "whatsapp.approval-reactions";
|
|
18
|
-
const PERSISTENT_MAX_ENTRIES = 1e3;
|
|
19
|
-
const DEFAULT_REACTION_TARGET_TTL_MS = 1440 * 60 * 1e3;
|
|
20
|
-
const DELIVERY_BINDING_CHANNEL_DATA_KEY = "whatsappApprovalReactionBindingV1";
|
|
21
|
-
const resolverRuntimeLoader = createLazyRuntimeModule(() => import("./approval-resolver-DoeBBt22.js"));
|
|
22
|
-
const whatsappApprovalReactionTargets = createApprovalReactionTargetStore({
|
|
23
|
-
namespace: PERSISTENT_NAMESPACE,
|
|
24
|
-
maxEntries: PERSISTENT_MAX_ENTRIES,
|
|
25
|
-
defaultTtlMs: DEFAULT_REACTION_TARGET_TTL_MS,
|
|
26
|
-
openStore: (storeParams) => getOptionalWhatsAppRuntime()?.state.openKeyedStore(storeParams),
|
|
27
|
-
logPersistentError: reportPersistentApprovalReactionError,
|
|
28
|
-
readPersistedTarget
|
|
29
|
-
});
|
|
30
|
-
const loadApprovalResolver = resolverRuntimeLoader;
|
|
31
|
-
function buildReactionTargetKey(params) {
|
|
32
|
-
const accountId = params.accountId.trim();
|
|
33
|
-
const remoteJid = params.remoteJid.trim();
|
|
34
|
-
const messageId = params.messageId.trim();
|
|
35
|
-
if (!accountId || !remoteJid || !messageId) return null;
|
|
36
|
-
return `${accountId}:${remoteJid}:${messageId}`;
|
|
37
|
-
}
|
|
38
|
-
function addCandidateRemoteJid(target, value) {
|
|
39
|
-
const remoteJid = value?.trim();
|
|
40
|
-
if (remoteJid && !target.includes(remoteJid)) target.push(remoteJid);
|
|
41
|
-
}
|
|
42
|
-
function reportPersistentApprovalReactionError(error) {
|
|
43
|
-
try {
|
|
44
|
-
getOptionalWhatsAppRuntime()?.logging.getChildLogger({
|
|
45
|
-
plugin: "whatsapp",
|
|
46
|
-
feature: "approval-reaction-state"
|
|
47
|
-
}).warn("WhatsApp persistent approval reaction state failed", { error: String(error) });
|
|
48
|
-
} catch {}
|
|
49
|
-
}
|
|
50
|
-
function reportApprovalBindingCorrelationMismatch(binding) {
|
|
51
|
-
try {
|
|
52
|
-
getOptionalWhatsAppRuntime()?.logging.getChildLogger({
|
|
53
|
-
plugin: "whatsapp",
|
|
54
|
-
feature: "approval-reaction-state"
|
|
55
|
-
}).warn("WhatsApp approval prompt text failed binding correlation; reactions disabled", {
|
|
56
|
-
approvalId: binding.approvalId,
|
|
57
|
-
approvalKind: binding.approvalKind
|
|
58
|
-
});
|
|
59
|
-
} catch {}
|
|
60
|
-
}
|
|
61
|
-
function readPersistedTarget(target) {
|
|
62
|
-
const value = target;
|
|
63
|
-
if (!value || typeof value.approvalId !== "string" || !Array.isArray(value.allowedDecisions) || value.approvalKind !== "exec" && value.approvalKind !== "plugin") return null;
|
|
64
|
-
return {
|
|
65
|
-
approvalId: value.approvalId,
|
|
66
|
-
approvalKind: value.approvalKind,
|
|
67
|
-
allowedDecisions: value.allowedDecisions
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function listWhatsAppApprovalReactionBindings(allowedDecisions) {
|
|
71
|
-
return listApprovalReactionBindings({ allowedDecisions });
|
|
72
|
-
}
|
|
73
|
-
const APPROVAL_ID_LINE_RE = /^\s*ID:\s*(\S(?:.*\S)?)\s*$/i;
|
|
74
|
-
const APPROVAL_KIND_LINE_RE = /^\s*(?:\S+\s+)?(Exec|Plugin) approval required\s*$/i;
|
|
75
|
-
function isApprovalDecision(value) {
|
|
76
|
-
return value === "allow-once" || value === "allow-always" || value === "deny";
|
|
77
|
-
}
|
|
78
|
-
function readStrictDecisionList(value) {
|
|
79
|
-
if (!Array.isArray(value) || value.length === 0 || !value.every(isApprovalDecision)) return null;
|
|
80
|
-
return new Set(value).size === value.length ? [...value] : null;
|
|
81
|
-
}
|
|
82
|
-
function readStrictApprovalMetadata(payload) {
|
|
83
|
-
const value = payload.channelData?.execApproval;
|
|
84
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
85
|
-
const record = value;
|
|
86
|
-
const approvalId = record.approvalId;
|
|
87
|
-
const approvalKind = record.approvalKind;
|
|
88
|
-
const allowedDecisions = readStrictDecisionList(record.allowedDecisions);
|
|
89
|
-
if (typeof approvalId !== "string" || !approvalId || approvalId !== approvalId.trim() || approvalKind !== "exec" && approvalKind !== "plugin" || !allowedDecisions) return null;
|
|
90
|
-
return {
|
|
91
|
-
version: 1,
|
|
92
|
-
approvalId,
|
|
93
|
-
approvalKind,
|
|
94
|
-
allowedDecisions
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
function listTypedApprovalActions(presentation) {
|
|
98
|
-
return presentation.blocks.flatMap((block) => {
|
|
99
|
-
if (block.type === "buttons") return block.buttons.flatMap((button) => button.action?.type === "approval" ? [button.action] : []);
|
|
100
|
-
return [];
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
function decisionSetsMatch(left, right) {
|
|
104
|
-
return left.length === right.length && left.every((decision) => right.includes(decision));
|
|
105
|
-
}
|
|
106
|
-
function readTypedApprovalDeliveryBinding(params) {
|
|
107
|
-
const metadata = readStrictApprovalMetadata(params.payload);
|
|
108
|
-
if (!metadata) return null;
|
|
109
|
-
const actions = listTypedApprovalActions(params.presentation);
|
|
110
|
-
if (actions.length === 0 || actions.some((action) => action.approvalId !== metadata.approvalId || action.approvalKind !== metadata.approvalKind)) return null;
|
|
111
|
-
const actionDecisions = actions.map((action) => action.decision);
|
|
112
|
-
if (new Set(actionDecisions).size !== actionDecisions.length || !decisionSetsMatch(metadata.allowedDecisions, actionDecisions)) return null;
|
|
113
|
-
return metadata;
|
|
114
|
-
}
|
|
115
|
-
function visibleApprovalBindingMatches(text, binding) {
|
|
116
|
-
const lines = (text ?? "").split(/\r?\n/).map((line) => line.replace(/\*\*/g, ""));
|
|
117
|
-
const kindMatches = lines.map((line) => line.match(APPROVAL_KIND_LINE_RE)).filter((match) => Boolean(match));
|
|
118
|
-
const idMatches = lines.map((line) => line.match(APPROVAL_ID_LINE_RE)).filter((match) => Boolean(match));
|
|
119
|
-
const visibleKind = kindMatches[0]?.[1]?.toLowerCase();
|
|
120
|
-
if (kindMatches.length !== 1 || idMatches.length !== 1 || visibleKind !== binding.approvalKind || idMatches[0]?.[1] !== binding.approvalId) return false;
|
|
121
|
-
const hintIndices = lines.flatMap((line, index) => line.trim().toLowerCase() === "react with:" ? [index] : []);
|
|
122
|
-
if (hintIndices.length !== 1) return false;
|
|
123
|
-
const hintIndex = hintIndices[0];
|
|
124
|
-
if (hintIndex === void 0) return false;
|
|
125
|
-
let cursor = hintIndex + 1;
|
|
126
|
-
while (cursor < lines.length && !lines[cursor]?.trim()) cursor += 1;
|
|
127
|
-
const decisionLines = [];
|
|
128
|
-
while (cursor < lines.length) {
|
|
129
|
-
const decisionLine = lines[cursor]?.trim();
|
|
130
|
-
if (!decisionLine) break;
|
|
131
|
-
decisionLines.push(decisionLine);
|
|
132
|
-
cursor += 1;
|
|
133
|
-
}
|
|
134
|
-
const knownBindings = listWhatsAppApprovalReactionBindings([
|
|
135
|
-
"allow-once",
|
|
136
|
-
"allow-always",
|
|
137
|
-
"deny"
|
|
138
|
-
]);
|
|
139
|
-
const visibleDecisions = decisionLines.map((line) => knownBindings.find((entry) => `${entry.emoji} ${entry.label}` === line)?.decision);
|
|
140
|
-
if (!visibleDecisions.every(isApprovalDecision)) return false;
|
|
141
|
-
return new Set(visibleDecisions).size === visibleDecisions.length && decisionSetsMatch(binding.allowedDecisions, visibleDecisions);
|
|
142
|
-
}
|
|
143
|
-
function readDeliveredApprovalBinding(payload) {
|
|
144
|
-
const metadata = readStrictApprovalMetadata(payload);
|
|
145
|
-
const value = payload.channelData?.[DELIVERY_BINDING_CHANNEL_DATA_KEY];
|
|
146
|
-
if (!metadata || !value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
147
|
-
const record = value;
|
|
148
|
-
const allowedDecisions = readStrictDecisionList(record.allowedDecisions);
|
|
149
|
-
if (record.version !== 1 || record.approvalId !== metadata.approvalId || record.approvalKind !== metadata.approvalKind || !allowedDecisions || !decisionSetsMatch(metadata.allowedDecisions, allowedDecisions)) return null;
|
|
150
|
-
return metadata;
|
|
151
|
-
}
|
|
152
|
-
/** Preserve a validated typed approval binding until the platform message id is known. */
|
|
153
|
-
function prepareWhatsAppApprovalPayloadForDelivery(params) {
|
|
154
|
-
const binding = readTypedApprovalDeliveryBinding(params);
|
|
155
|
-
if (!binding) return null;
|
|
156
|
-
if (!visibleApprovalBindingMatches(params.payload.text, binding)) {
|
|
157
|
-
reportApprovalBindingCorrelationMismatch(binding);
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
...params.payload,
|
|
162
|
-
channelData: {
|
|
163
|
-
...params.payload.channelData,
|
|
164
|
-
[DELIVERY_BINDING_CHANNEL_DATA_KEY]: binding
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
function registerWhatsAppApprovalReactionTarget(params) {
|
|
169
|
-
const key = buildReactionTargetKey(params);
|
|
170
|
-
const approvalId = params.approvalId.trim();
|
|
171
|
-
const allowedDecisions = listWhatsAppApprovalReactionBindings(params.allowedDecisions).map((binding) => binding.decision);
|
|
172
|
-
if (!key || !approvalId || params.approvalKind !== "exec" && params.approvalKind !== "plugin" || allowedDecisions.length === 0) return null;
|
|
173
|
-
const target = {
|
|
174
|
-
approvalId,
|
|
175
|
-
approvalKind: params.approvalKind,
|
|
176
|
-
allowedDecisions
|
|
177
|
-
};
|
|
178
|
-
whatsappApprovalReactionTargets.register(key, target, { ttlMs: params.ttlMs });
|
|
179
|
-
return target;
|
|
180
|
-
}
|
|
181
|
-
function listWhatsAppDeliveredMessageIdentities(results) {
|
|
182
|
-
const identities = [];
|
|
183
|
-
const seen = /* @__PURE__ */ new Set();
|
|
184
|
-
const add = (params) => {
|
|
185
|
-
if (params.channel && params.channel !== "whatsapp") return;
|
|
186
|
-
const messageId = params.messageId?.trim() ?? "";
|
|
187
|
-
const remoteJid = params.toJid?.trim() ?? "";
|
|
188
|
-
const key = `${remoteJid}:${messageId}`;
|
|
189
|
-
if (!messageId || messageId === "unknown" || !remoteJid || seen.has(key)) return;
|
|
190
|
-
seen.add(key);
|
|
191
|
-
identities.push({
|
|
192
|
-
messageId,
|
|
193
|
-
remoteJid
|
|
194
|
-
});
|
|
195
|
-
};
|
|
196
|
-
for (const result of results) {
|
|
197
|
-
if (result.channel !== "whatsapp") continue;
|
|
198
|
-
add(result);
|
|
199
|
-
for (const raw of result.receipt?.raw ?? []) add(raw);
|
|
200
|
-
for (const part of result.receipt?.parts ?? []) add({
|
|
201
|
-
channel: part.raw?.channel,
|
|
202
|
-
messageId: part.raw?.messageId ?? part.platformMessageId,
|
|
203
|
-
toJid: part.raw?.toJid
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return identities;
|
|
207
|
-
}
|
|
208
|
-
/** Bind generic forwarded approvals to the exact WhatsApp messages accepted by Baileys. */
|
|
209
|
-
function registerWhatsAppApprovalReactionTargetForDeliveredPayload(params) {
|
|
210
|
-
if (params.target.channel.trim().toLowerCase() !== "whatsapp") return false;
|
|
211
|
-
const binding = readDeliveredApprovalBinding(params.payload);
|
|
212
|
-
if (!binding) return false;
|
|
213
|
-
if (!visibleApprovalBindingMatches(params.payload.text, binding)) {
|
|
214
|
-
reportApprovalBindingCorrelationMismatch(binding);
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
const accountId = resolveWhatsAppAccount({
|
|
218
|
-
cfg: params.cfg,
|
|
219
|
-
accountId: params.target.accountId
|
|
220
|
-
}).accountId;
|
|
221
|
-
let registered = false;
|
|
222
|
-
for (const { messageId, remoteJid } of listWhatsAppDeliveredMessageIdentities(params.results)) registered = Boolean(registerWhatsAppApprovalReactionTarget({
|
|
223
|
-
accountId,
|
|
224
|
-
remoteJid,
|
|
225
|
-
messageId,
|
|
226
|
-
approvalId: binding.approvalId,
|
|
227
|
-
approvalKind: binding.approvalKind,
|
|
228
|
-
allowedDecisions: binding.allowedDecisions,
|
|
229
|
-
ttlMs: params.ttlMs
|
|
230
|
-
})) || registered;
|
|
231
|
-
return registered;
|
|
232
|
-
}
|
|
233
|
-
function unregisterWhatsAppApprovalReactionTarget(params) {
|
|
234
|
-
const key = buildReactionTargetKey(params);
|
|
235
|
-
if (!key) return;
|
|
236
|
-
whatsappApprovalReactionTargets.delete(key);
|
|
237
|
-
}
|
|
238
|
-
function resolveTarget(params) {
|
|
239
|
-
const resolved = resolveTypedApprovalReactionTarget({
|
|
240
|
-
target: params.target,
|
|
241
|
-
reactionKey: params.reactionKey
|
|
242
|
-
});
|
|
243
|
-
return resolved ? {
|
|
244
|
-
approvalId: resolved.approvalId,
|
|
245
|
-
approvalKind: resolved.approvalKind,
|
|
246
|
-
decision: resolved.decision
|
|
247
|
-
} : null;
|
|
248
|
-
}
|
|
249
|
-
async function resolveWhatsAppApprovalReactionTargetWithPersistence(params) {
|
|
250
|
-
const key = buildReactionTargetKey(params);
|
|
251
|
-
if (!key) return null;
|
|
252
|
-
return resolveTarget({
|
|
253
|
-
target: await whatsappApprovalReactionTargets.lookup(key),
|
|
254
|
-
reactionKey: params.reactionKey
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
async function resolveWhatsAppApprovalReactionTargetFromCandidates(params) {
|
|
258
|
-
const candidateRemoteJids = [];
|
|
259
|
-
for (const observedRemoteJid of params.observedRemoteJids) {
|
|
260
|
-
addCandidateRemoteJid(candidateRemoteJids, observedRemoteJid);
|
|
261
|
-
try {
|
|
262
|
-
for (const candidate of await params.resolveReactionTargetJids?.(observedRemoteJid) ?? []) addCandidateRemoteJid(candidateRemoteJids, candidate);
|
|
263
|
-
} catch (error) {
|
|
264
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction target JID mapping failed for ${observedRemoteJid}: ${String(error)}`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
for (const remoteJid of candidateRemoteJids) {
|
|
268
|
-
const target = await resolveWhatsAppApprovalReactionTargetWithPersistence({
|
|
269
|
-
accountId: params.accountId,
|
|
270
|
-
remoteJid,
|
|
271
|
-
messageId: params.messageId,
|
|
272
|
-
reactionKey: params.reactionKey
|
|
273
|
-
});
|
|
274
|
-
if (target) return {
|
|
275
|
-
...target,
|
|
276
|
-
remoteJid
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
return null;
|
|
280
|
-
}
|
|
281
|
-
function readWhatsAppApprovalReactionEvent(params) {
|
|
282
|
-
const msg = params.msg;
|
|
283
|
-
const reaction = msg.message?.reactionMessage;
|
|
284
|
-
const reactionKey = reaction?.text?.trim() ?? "";
|
|
285
|
-
const messageId = reaction?.key?.id?.trim() ?? "";
|
|
286
|
-
const remoteJids = [];
|
|
287
|
-
addCandidateRemoteJid(remoteJids, reaction?.key?.remoteJid);
|
|
288
|
-
addCandidateRemoteJid(remoteJids, msg.key?.remoteJid);
|
|
289
|
-
const actorJid = msg.key?.participant?.trim() || (msg.key?.fromMe ? params.selfLid?.trim() ?? params.selfJid?.trim() ?? "" : msg.key?.remoteJid?.trim() ?? "");
|
|
290
|
-
if (!reactionKey || !messageId || remoteJids.length === 0 || !actorJid) return null;
|
|
291
|
-
return {
|
|
292
|
-
remoteJids,
|
|
293
|
-
messageId,
|
|
294
|
-
actorJid,
|
|
295
|
-
reactionKey
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
async function maybeResolveWhatsAppApprovalReaction(params) {
|
|
299
|
-
const event = readWhatsAppApprovalReactionEvent({
|
|
300
|
-
msg: params.msg,
|
|
301
|
-
selfJid: params.selfJid,
|
|
302
|
-
selfLid: params.selfLid
|
|
303
|
-
});
|
|
304
|
-
if (!event) return false;
|
|
305
|
-
const target = await resolveWhatsAppApprovalReactionTargetFromCandidates({
|
|
306
|
-
accountId: params.accountId,
|
|
307
|
-
observedRemoteJids: event.remoteJids,
|
|
308
|
-
messageId: event.messageId,
|
|
309
|
-
reactionKey: event.reactionKey,
|
|
310
|
-
resolveReactionTargetJids: params.resolveReactionTargetJids,
|
|
311
|
-
logVerboseMessage: params.logVerboseMessage
|
|
312
|
-
});
|
|
313
|
-
if (!target) return false;
|
|
314
|
-
const actorId = await params.resolveInboundJid(event.actorJid);
|
|
315
|
-
if (!actorId) {
|
|
316
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction ignored for ${target.approvalId}; missing actor identity`);
|
|
317
|
-
return true;
|
|
318
|
-
}
|
|
319
|
-
if (getWhatsAppApprovalApprovers({
|
|
320
|
-
cfg: params.cfg,
|
|
321
|
-
accountId: params.accountId
|
|
322
|
-
}).length === 0) {
|
|
323
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction denied id=${target.approvalId}; reactions require explicit approvers`);
|
|
324
|
-
return true;
|
|
325
|
-
}
|
|
326
|
-
if (!whatsappApprovalAuth.authorizeActorAction({
|
|
327
|
-
cfg: params.cfg,
|
|
328
|
-
accountId: params.accountId,
|
|
329
|
-
senderId: actorId,
|
|
330
|
-
action: "approve",
|
|
331
|
-
approvalKind: target.approvalKind
|
|
332
|
-
}).authorized) {
|
|
333
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction denied id=${target.approvalId} sender=${actorId}`);
|
|
334
|
-
return true;
|
|
335
|
-
}
|
|
336
|
-
const { isApprovalNotFoundError, resolveWhatsAppApproval } = await loadApprovalResolver();
|
|
337
|
-
try {
|
|
338
|
-
const result = await resolveWhatsAppApproval({
|
|
339
|
-
cfg: params.cfg,
|
|
340
|
-
approvalId: target.approvalId,
|
|
341
|
-
approvalKind: target.approvalKind,
|
|
342
|
-
decision: target.decision,
|
|
343
|
-
senderId: actorId,
|
|
344
|
-
gatewayUrl: params.gatewayUrl
|
|
345
|
-
});
|
|
346
|
-
unregisterWhatsAppApprovalReactionTarget({
|
|
347
|
-
accountId: params.accountId,
|
|
348
|
-
remoteJid: target.remoteJid,
|
|
349
|
-
messageId: event.messageId
|
|
350
|
-
});
|
|
351
|
-
const canonicalDecision = "decision" in result.approval ? ` decision=${result.approval.decision}` : "";
|
|
352
|
-
params.logVerboseMessage?.(result.applied ? `whatsapp: approval reaction applied id=${target.approvalId} sender=${actorId} status=${result.approval.status}${canonicalDecision}` : `whatsapp: approval reaction already resolved id=${target.approvalId} sender=${actorId} status=${result.approval.status}${canonicalDecision}`);
|
|
353
|
-
return true;
|
|
354
|
-
} catch (error) {
|
|
355
|
-
if (isApprovalNotFoundError(error)) {
|
|
356
|
-
unregisterWhatsAppApprovalReactionTarget({
|
|
357
|
-
accountId: params.accountId,
|
|
358
|
-
remoteJid: target.remoteJid,
|
|
359
|
-
messageId: event.messageId
|
|
360
|
-
});
|
|
361
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction ignored for expired approval id=${target.approvalId} sender=${actorId}`);
|
|
362
|
-
return true;
|
|
363
|
-
}
|
|
364
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction failed id=${target.approvalId} sender=${actorId}: ${String(error)}`);
|
|
365
|
-
return true;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
function clearWhatsAppApprovalReactionTargetsForTest() {
|
|
369
|
-
whatsappApprovalReactionTargets.clearForTest();
|
|
370
|
-
resolverRuntimeLoader.clear();
|
|
371
|
-
}
|
|
372
|
-
//#endregion
|
|
373
|
-
export { unregisterWhatsAppApprovalReactionTarget as i, maybeResolveWhatsAppApprovalReaction as n, registerWhatsAppApprovalReactionTarget as r, approval_reactions_exports as t };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, r as whatsappSetupAdapter, t as createWhatsAppPluginBase } from "./shared-CAxd15bp.js";
|
|
2
|
-
import { t as detectWhatsAppLegacyStateMigrations } from "./state-migrations-CAMTrs2U.js";
|
|
3
|
-
//#region extensions/whatsapp/src/channel.setup.ts
|
|
4
|
-
const whatsappSetupPlugin = {
|
|
5
|
-
...createWhatsAppPluginBase({
|
|
6
|
-
groups: {
|
|
7
|
-
resolveRequireMention: resolveWhatsAppGroupRequireMention,
|
|
8
|
-
resolveToolPolicy: resolveWhatsAppGroupToolPolicy
|
|
9
|
-
},
|
|
10
|
-
setupWizard: whatsappSetupWizardProxy,
|
|
11
|
-
setup: whatsappSetupAdapter,
|
|
12
|
-
setupContract: whatsappSetupContract,
|
|
13
|
-
isConfigured: (account) => Boolean(account.authDir),
|
|
14
|
-
isLinked: async (account) => await readWhatsAppAccountLinkState(account.authDir)
|
|
15
|
-
}),
|
|
16
|
-
lifecycle: { detectLegacyStateMigrations: ({ oauthDir }) => detectWhatsAppLegacyStateMigrations({ oauthDir }) }
|
|
17
|
-
};
|
|
18
|
-
//#endregion
|
|
19
|
-
export { whatsappSetupPlugin as t };
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { createChannelConfigUiHints } from "openclaw/plugin-sdk/channel-core";
|
|
2
|
-
import { buildChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-schema";
|
|
3
|
-
import { WhatsAppConfigSchema } from "openclaw/plugin-sdk/bundled-channel-config-schema";
|
|
4
|
-
//#endregion
|
|
5
|
-
//#region extensions/whatsapp/src/config-schema.ts
|
|
6
|
-
const WhatsAppChannelConfigSchema = buildChannelConfigSchema(WhatsAppConfigSchema, { uiHints: {
|
|
7
|
-
"": {
|
|
8
|
-
label: "WhatsApp",
|
|
9
|
-
help: "WhatsApp channel provider configuration for access policy and direct-message routing safety."
|
|
10
|
-
},
|
|
11
|
-
...createChannelConfigUiHints({
|
|
12
|
-
channelLabel: "WhatsApp",
|
|
13
|
-
dmPolicy: { channelKey: "whatsapp" }
|
|
14
|
-
}),
|
|
15
|
-
allowFrom: { presentation: "phone-number" },
|
|
16
|
-
defaultTo: { presentation: "phone-number" },
|
|
17
|
-
groupAllowFrom: { presentation: "phone-number" },
|
|
18
|
-
"accounts.*.allowFrom.*": { presentation: "phone-number" },
|
|
19
|
-
"accounts.*.defaultTo": { presentation: "phone-number" },
|
|
20
|
-
"accounts.*.groupAllowFrom.*": { presentation: "phone-number" },
|
|
21
|
-
selfChatMode: {
|
|
22
|
-
label: "WhatsApp Self-Phone Mode",
|
|
23
|
-
help: "Same-phone setup (bot uses your personal WhatsApp number)."
|
|
24
|
-
},
|
|
25
|
-
direct: {
|
|
26
|
-
label: "WhatsApp Direct Chat Overrides",
|
|
27
|
-
help: "Per-conversation overrides keyed by WhatsApp DM id. Applied after a DM is already admitted by dmPolicy; \"*\" supplies a default without admitting anyone."
|
|
28
|
-
},
|
|
29
|
-
pluginHooks: {
|
|
30
|
-
label: "WhatsApp Plugin Hooks",
|
|
31
|
-
help: "Opt in to broadcasting inbound WhatsApp events to plugins. Payloads carry personal content, so only enable it for plugins you trust."
|
|
32
|
-
},
|
|
33
|
-
...createChannelConfigUiHints({
|
|
34
|
-
channelLabel: "WhatsApp",
|
|
35
|
-
configWrites: true
|
|
36
|
-
}),
|
|
37
|
-
"actions.calls": {
|
|
38
|
-
label: "WhatsApp Voice Calls",
|
|
39
|
-
help: "Expose the experimental requester-bound WhatsApp voice-call tool. Default: false. Requires a separately paired MeowCaller CLI."
|
|
40
|
-
},
|
|
41
|
-
...createChannelConfigUiHints({
|
|
42
|
-
channelLabel: "WhatsApp",
|
|
43
|
-
mentionPatterns: {
|
|
44
|
-
targetDescription: "WhatsApp conversation IDs",
|
|
45
|
-
policyTargetDescription: "WhatsApp conversation IDs such as 123@g.us"
|
|
46
|
-
}
|
|
47
|
-
})
|
|
48
|
-
} });
|
|
49
|
-
//#endregion
|
|
50
|
-
export { WhatsAppChannelConfigSchema as t };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { t as getOptionalWhatsAppChannelRuntime } from "./runtime-BLlToOi6.js";
|
|
2
|
-
import { getChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
|
|
3
|
-
//#region extensions/whatsapp/src/connection-controller-runtime-context.ts
|
|
4
|
-
const WHATSAPP_CONNECTION_CONTROLLER_CAPABILITY = "connection-controller";
|
|
5
|
-
const WHATSAPP_CONNECTION_OWNER_PENDING_CAPABILITY = "connection-owner-pending";
|
|
6
|
-
function getWhatsAppConnectionController(accountId) {
|
|
7
|
-
return getChannelRuntimeContext({
|
|
8
|
-
channelRuntime: getOptionalWhatsAppChannelRuntime() ?? void 0,
|
|
9
|
-
channelId: "whatsapp",
|
|
10
|
-
accountId,
|
|
11
|
-
capability: "connection-controller"
|
|
12
|
-
}) ?? null;
|
|
13
|
-
}
|
|
14
|
-
function hasPendingWhatsAppConnectionOwner(accountId) {
|
|
15
|
-
return Boolean(getChannelRuntimeContext({
|
|
16
|
-
channelRuntime: getOptionalWhatsAppChannelRuntime() ?? void 0,
|
|
17
|
-
channelId: "whatsapp",
|
|
18
|
-
accountId,
|
|
19
|
-
capability: WHATSAPP_CONNECTION_OWNER_PENDING_CAPABILITY
|
|
20
|
-
}));
|
|
21
|
-
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { hasPendingWhatsAppConnectionOwner as i, WHATSAPP_CONNECTION_OWNER_PENDING_CAPABILITY as n, getWhatsAppConnectionController as r, WHATSAPP_CONNECTION_CONTROLLER_CAPABILITY as t };
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { c as resolveMergedWhatsAppAccountConfig, o as resolveWhatsAppAuthDir } from "./accounts-CSqLvCY5.js";
|
|
3
|
-
import { c as normalizeWhatsAppTarget, t as isWhatsAppGroupJid } from "./normalize-target-CugRyONv.js";
|
|
4
|
-
import { i as hasPendingWhatsAppConnectionOwner, r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
5
|
-
import "./normalize-C7Hkc_vE.js";
|
|
6
|
-
import { f as readWebAuthExistsForDecision, w as waitForCredsSaveQueueWithTimeout } from "./auth-store-DcEpIOmE.js";
|
|
7
|
-
import { n as resolveWebAccountId } from "./active-listener-BEjWsCNM.js";
|
|
8
|
-
import { a as waitForWaConnection, h as acquireWhatsAppStandaloneConnectionOwner, n as createWaDirectorySocket, p as WhatsAppConnectionOwnerBusyError, t as closeWhatsAppSocketAndWait } from "./socket-close-DridEuzz.js";
|
|
9
|
-
import { listResolvedDirectoryGroupEntriesFromMapKeys, listResolvedDirectoryUserEntriesFromAllowFrom } from "openclaw/plugin-sdk/directory-config-runtime";
|
|
10
|
-
//#region extensions/whatsapp/src/directory-config.ts
|
|
11
|
-
var directory_config_exports = /* @__PURE__ */ __exportAll({
|
|
12
|
-
WHATSAPP_DIRECTORY_UNAVAILABLE_CODE: () => WHATSAPP_DIRECTORY_UNAVAILABLE_CODE,
|
|
13
|
-
WhatsAppDirectoryUnavailableError: () => WhatsAppDirectoryUnavailableError,
|
|
14
|
-
listWhatsAppDirectoryGroupsFromConfig: () => listWhatsAppDirectoryGroupsFromConfig,
|
|
15
|
-
listWhatsAppDirectoryGroupsLive: () => listWhatsAppDirectoryGroupsLive,
|
|
16
|
-
listWhatsAppDirectoryPeersFromConfig: () => listWhatsAppDirectoryPeersFromConfig
|
|
17
|
-
});
|
|
18
|
-
function resolveWhatsAppDirectoryAccount(cfg, accountId) {
|
|
19
|
-
return resolveMergedWhatsAppAccountConfig({
|
|
20
|
-
cfg,
|
|
21
|
-
accountId
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
async function listWhatsAppDirectoryPeersFromConfig(params) {
|
|
25
|
-
return listResolvedDirectoryUserEntriesFromAllowFrom({
|
|
26
|
-
...params,
|
|
27
|
-
resolveAccount: resolveWhatsAppDirectoryAccount,
|
|
28
|
-
resolveAllowFrom: (account) => account.allowFrom,
|
|
29
|
-
normalizeId: (entry) => {
|
|
30
|
-
const normalized = normalizeWhatsAppTarget(entry);
|
|
31
|
-
if (!normalized || isWhatsAppGroupJid(normalized)) return null;
|
|
32
|
-
return normalized;
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async function listWhatsAppDirectoryGroupsFromConfig(params) {
|
|
37
|
-
return listResolvedDirectoryGroupEntriesFromMapKeys({
|
|
38
|
-
...params,
|
|
39
|
-
resolveAccount: resolveWhatsAppDirectoryAccount,
|
|
40
|
-
resolveGroups: (account) => account.groups
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
const WHATSAPP_DIRECTORY_UNAVAILABLE_CODE = "whatsapp_directory_unavailable";
|
|
44
|
-
var WhatsAppDirectoryUnavailableError = class extends Error {
|
|
45
|
-
constructor(reason, message, options) {
|
|
46
|
-
super(message, options);
|
|
47
|
-
this.reason = reason;
|
|
48
|
-
this.code = WHATSAPP_DIRECTORY_UNAVAILABLE_CODE;
|
|
49
|
-
this.name = "WhatsAppDirectoryUnavailableError";
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
async function fetchLiveGroups(sock, params) {
|
|
53
|
-
const groups = await sock.groupFetchAllParticipating();
|
|
54
|
-
const query = params.query?.trim().toLowerCase() ?? "";
|
|
55
|
-
const limit = typeof params.limit === "number" && params.limit > 0 ? params.limit : void 0;
|
|
56
|
-
const entries = Object.entries(groups).map(([jid, metadata]) => ({
|
|
57
|
-
kind: "group",
|
|
58
|
-
id: jid,
|
|
59
|
-
name: metadata?.subject?.trim() || void 0
|
|
60
|
-
})).filter((entry) => {
|
|
61
|
-
if (!query) return true;
|
|
62
|
-
return entry.id.toLowerCase().includes(query) || entry.name?.toLowerCase().includes(query);
|
|
63
|
-
}).toSorted((left, right) => left.id.localeCompare(right.id));
|
|
64
|
-
return limit ? entries.slice(0, limit) : entries;
|
|
65
|
-
}
|
|
66
|
-
function unavailable(reason, message, cause) {
|
|
67
|
-
return new WhatsAppDirectoryUnavailableError(reason, message, cause ? { cause } : void 0);
|
|
68
|
-
}
|
|
69
|
-
const pendingStandaloneCleanups = /* @__PURE__ */ new Map();
|
|
70
|
-
const STANDALONE_CLEANUP_RETRY_MS = 1e3;
|
|
71
|
-
async function completeStandaloneCleanup(cleanup) {
|
|
72
|
-
if (cleanup.sock && !cleanup.socketClosed) {
|
|
73
|
-
await closeWhatsAppSocketAndWait(cleanup.sock, "OpenClaw WhatsApp standalone directory socket close");
|
|
74
|
-
cleanup.socketClosed = true;
|
|
75
|
-
}
|
|
76
|
-
if (cleanup.sock) {
|
|
77
|
-
if (await waitForCredsSaveQueueWithTimeout(cleanup.authDir) === "timed_out") throw new Error("WhatsApp credential persistence did not drain before socket release");
|
|
78
|
-
}
|
|
79
|
-
await cleanup.ownerLease.release();
|
|
80
|
-
if (pendingStandaloneCleanups.get(cleanup.authDir) === cleanup) pendingStandaloneCleanups.delete(cleanup.authDir);
|
|
81
|
-
if (cleanup.retryTimer) {
|
|
82
|
-
clearTimeout(cleanup.retryTimer);
|
|
83
|
-
cleanup.retryTimer = null;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
function runStandaloneCleanup(cleanup) {
|
|
87
|
-
if (cleanup.inFlight) return cleanup.inFlight;
|
|
88
|
-
const task = completeStandaloneCleanup(cleanup).finally(() => {
|
|
89
|
-
if (cleanup.inFlight === task) cleanup.inFlight = null;
|
|
90
|
-
});
|
|
91
|
-
cleanup.inFlight = task;
|
|
92
|
-
return task;
|
|
93
|
-
}
|
|
94
|
-
function scheduleStandaloneCleanupRetry(cleanup) {
|
|
95
|
-
if (cleanup.retryTimer) return;
|
|
96
|
-
cleanup.retryTimer = setTimeout(() => {
|
|
97
|
-
cleanup.retryTimer = null;
|
|
98
|
-
runStandaloneCleanup(cleanup).catch(() => {
|
|
99
|
-
scheduleStandaloneCleanupRetry(cleanup);
|
|
100
|
-
});
|
|
101
|
-
}, STANDALONE_CLEANUP_RETRY_MS);
|
|
102
|
-
cleanup.retryTimer.unref?.();
|
|
103
|
-
}
|
|
104
|
-
function retainStandaloneCleanup(cleanup) {
|
|
105
|
-
pendingStandaloneCleanups.set(cleanup.authDir, cleanup);
|
|
106
|
-
scheduleStandaloneCleanupRetry(cleanup);
|
|
107
|
-
}
|
|
108
|
-
async function finishStandaloneCleanupOrThrow(cleanup, operationError) {
|
|
109
|
-
try {
|
|
110
|
-
await runStandaloneCleanup(cleanup);
|
|
111
|
-
} catch (cleanupError) {
|
|
112
|
-
retainStandaloneCleanup(cleanup);
|
|
113
|
-
throw cleanupUnavailable(operationError === void 0 ? cleanupError : new AggregateError([operationError, cleanupError], "WhatsApp live group lookup and cleanup failed", { cause: operationError }));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function cleanupUnavailable(error) {
|
|
117
|
-
return unavailable("cleanup_failed", "WhatsApp live group lookup could not safely close its standalone connection.", error);
|
|
118
|
-
}
|
|
119
|
-
async function finishPriorStandaloneCleanup(authDir) {
|
|
120
|
-
const cleanup = pendingStandaloneCleanups.get(authDir);
|
|
121
|
-
if (!cleanup) return;
|
|
122
|
-
try {
|
|
123
|
-
await runStandaloneCleanup(cleanup);
|
|
124
|
-
} catch (error) {
|
|
125
|
-
scheduleStandaloneCleanupRetry(cleanup);
|
|
126
|
-
throw cleanupUnavailable(error);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
async function listGroupsThroughStandaloneOwner(params) {
|
|
130
|
-
const account = resolveWhatsAppDirectoryAccount(params.cfg, params.accountId);
|
|
131
|
-
const authDir = resolveWhatsAppAuthDir({
|
|
132
|
-
cfg: params.cfg,
|
|
133
|
-
accountId: account.accountId
|
|
134
|
-
}).authDir;
|
|
135
|
-
await finishPriorStandaloneCleanup(authDir);
|
|
136
|
-
let ownerLease;
|
|
137
|
-
try {
|
|
138
|
-
ownerLease = await acquireWhatsAppStandaloneConnectionOwner(authDir);
|
|
139
|
-
} catch (error) {
|
|
140
|
-
if (error instanceof WhatsAppConnectionOwnerBusyError) throw unavailable("connection_owner_busy", "WhatsApp live groups are unavailable because the account is owned by another process.", error);
|
|
141
|
-
throw unavailable("connection_failed", "WhatsApp live groups are unavailable because connection ownership failed.", error);
|
|
142
|
-
}
|
|
143
|
-
const cleanup = {
|
|
144
|
-
authDir,
|
|
145
|
-
inFlight: null,
|
|
146
|
-
ownerLease,
|
|
147
|
-
retryTimer: null,
|
|
148
|
-
sock: null,
|
|
149
|
-
socketClosed: true
|
|
150
|
-
};
|
|
151
|
-
let groups;
|
|
152
|
-
try {
|
|
153
|
-
let authState;
|
|
154
|
-
try {
|
|
155
|
-
authState = await readWebAuthExistsForDecision(authDir);
|
|
156
|
-
} catch (error) {
|
|
157
|
-
throw unavailable("auth_unstable", "WhatsApp live groups are unavailable because linked credentials could not be read.", error);
|
|
158
|
-
}
|
|
159
|
-
if (authState.outcome === "unstable") throw unavailable("auth_unstable", "WhatsApp live groups are unavailable while linked credentials are changing.");
|
|
160
|
-
if (!authState.exists) throw unavailable("not_linked", "WhatsApp live groups are unavailable because this account is not linked.");
|
|
161
|
-
try {
|
|
162
|
-
cleanup.sock = await createWaDirectorySocket(authDir);
|
|
163
|
-
cleanup.socketClosed = false;
|
|
164
|
-
await waitForWaConnection(cleanup.sock, { timeoutMs: 3e4 });
|
|
165
|
-
} catch (error) {
|
|
166
|
-
throw unavailable("connection_failed", "WhatsApp live groups are unavailable because the standalone connection failed.", error);
|
|
167
|
-
}
|
|
168
|
-
try {
|
|
169
|
-
groups = await fetchLiveGroups(cleanup.sock, params);
|
|
170
|
-
} catch (error) {
|
|
171
|
-
throw unavailable("lookup_failed", "WhatsApp live group lookup failed.", error);
|
|
172
|
-
}
|
|
173
|
-
} catch (error) {
|
|
174
|
-
await finishStandaloneCleanupOrThrow(cleanup, error);
|
|
175
|
-
throw error;
|
|
176
|
-
}
|
|
177
|
-
await finishStandaloneCleanupOrThrow(cleanup);
|
|
178
|
-
return groups;
|
|
179
|
-
}
|
|
180
|
-
async function listWhatsAppDirectoryGroupsLive(params) {
|
|
181
|
-
const accountId = resolveWebAccountId({
|
|
182
|
-
cfg: params.cfg,
|
|
183
|
-
accountId: params.accountId
|
|
184
|
-
});
|
|
185
|
-
const controller = getWhatsAppConnectionController(accountId);
|
|
186
|
-
if (!controller && !hasPendingWhatsAppConnectionOwner(accountId)) return await listGroupsThroughStandaloneOwner(params);
|
|
187
|
-
const sock = controller?.getCurrentSock();
|
|
188
|
-
if (!sock) throw unavailable("active_owner_unavailable", "WhatsApp live groups are unavailable while the gateway connection is offline.");
|
|
189
|
-
try {
|
|
190
|
-
return await fetchLiveGroups(sock, params);
|
|
191
|
-
} catch (error) {
|
|
192
|
-
throw unavailable("lookup_failed", "WhatsApp live group lookup failed.", error);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
//#endregion
|
|
196
|
-
export { listWhatsAppDirectoryGroupsFromConfig as n, listWhatsAppDirectoryPeersFromConfig as r, directory_config_exports as t };
|
package/dist/doctor-CwzVXKoE.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region extensions/whatsapp/src/doctor.ts
|
|
2
|
-
function normalizeCompatibilityConfig({ cfg }) {
|
|
3
|
-
return {
|
|
4
|
-
config: cfg,
|
|
5
|
-
changes: []
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
const whatsappDoctor = { normalizeCompatibilityConfig };
|
|
9
|
-
//#endregion
|
|
10
|
-
export { whatsappDoctor as n, normalizeCompatibilityConfig as t };
|