@ardennguyen/zalo-agent-cli 2.5.8 → 3.0.0
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/.env.example +23 -2
- package/DISCLAIMER.md +3 -3
- package/LICENSE +2 -3
- package/NOTICE +14 -34
- package/README.md +166 -72
- package/package.json +37 -19
- package/src/commands/account.js +369 -40
- package/src/commands/auto-reply.js +8 -25
- package/src/commands/bank.js +25 -6
- package/src/commands/catalog.js +54 -11
- package/src/commands/cloud.js +459 -0
- package/src/commands/conv.js +470 -287
- package/src/commands/db.js +442 -0
- package/src/commands/fleet.js +449 -41
- package/src/commands/friend.js +198 -45
- package/src/commands/group.js +256 -43
- package/src/commands/label.js +16 -2
- package/src/commands/listen.js +495 -122
- package/src/commands/login.js +313 -117
- package/src/commands/mcp-approver.js +103 -0
- package/src/commands/mcp-webhook.js +13 -5
- package/src/commands/mcp.js +800 -104
- package/src/commands/msg-media.js +187 -0
- package/src/commands/msg-search.js +219 -0
- package/src/commands/msg.js +414 -110
- package/src/commands/oa/calls.js +134 -0
- package/src/commands/oa/content.js +266 -0
- package/src/commands/oa/gmf.js +429 -0
- package/src/commands/oa/messages.js +355 -0
- package/src/commands/oa/users.js +502 -0
- package/src/commands/oa-init.js +122 -123
- package/src/commands/oa-listen.js +374 -150
- package/src/commands/oa.js +83 -598
- package/src/commands/policy.js +224 -0
- package/src/commands/poll.js +3 -0
- package/src/commands/presence.js +175 -0
- package/src/commands/profile.js +45 -94
- package/src/commands/quick-msg.js +26 -0
- package/src/commands/read.js +172 -0
- package/src/commands/reminder.js +34 -4
- package/src/commands/social.js +223 -0
- package/src/commands/sync.js +482 -158
- package/src/commands/write.js +85 -0
- package/src/commands/zbs.js +502 -0
- package/src/core/account-devices.js +76 -0
- package/src/core/account-state.js +167 -0
- package/src/core/account-status.js +355 -0
- package/src/core/accounts.js +11 -4
- package/src/core/admin-api.js +392 -0
- package/src/core/approval.js +271 -0
- package/src/core/auto-reply.js +27 -0
- package/src/core/bank-accounts.js +1 -1
- package/src/core/block-sharing.js +43 -0
- package/src/core/board-pass.js +94 -0
- package/src/core/cached-message.js +78 -8
- package/src/core/cloud-plan.js +285 -0
- package/src/core/cloud-verify.js +305 -0
- package/src/core/confirm-guard.js +808 -0
- package/src/core/contact-names.js +504 -0
- package/src/core/control-events.js +525 -0
- package/src/core/control-replay.js +106 -0
- package/src/core/conversation-actions.js +214 -0
- package/src/core/credentials.js +112 -11
- package/src/core/current-user-names.js +60 -26
- package/src/core/daemon-channel.js +296 -15
- package/src/core/daemon-health.js +110 -7
- package/src/core/daemon-presence.js +455 -0
- package/src/core/daemon-sync.js +58 -18
- package/src/core/data-export.js +610 -0
- package/src/core/db-tools.js +473 -0
- package/src/core/db.js +1327 -83
- package/src/core/deploy-policy.js +560 -0
- package/src/core/device-since.js +123 -0
- package/src/core/e2ee-notice.js +41 -0
- package/src/core/exit-codes.js +7 -0
- package/src/core/export-crypt.js +290 -0
- package/src/core/fleet-controller.js +340 -0
- package/src/core/fleet-purge.js +144 -0
- package/src/core/fleet-qr.js +273 -0
- package/src/core/fleet-serve.js +292 -0
- package/src/core/fleet-supervisor.js +176 -0
- package/src/core/fleet-templates.js +568 -39
- package/src/core/fleet.js +232 -20
- package/src/core/friend-requests.js +80 -16
- package/src/core/friend-search.js +1 -1
- package/src/core/group-admin.js +2 -29
- package/src/core/group-departure.js +233 -0
- package/src/core/group-exit.js +621 -0
- package/src/core/group-members.js +21 -9
- package/src/core/group-settings.js +5 -207
- package/src/core/hidden-chat-actions.js +96 -0
- package/src/core/hidden-chats.js +425 -0
- package/src/core/history-fetch.js +81 -27
- package/src/core/keystore/config.js +163 -0
- package/src/core/keystore/container.js +208 -0
- package/src/core/keystore/index.js +483 -0
- package/src/core/keystore/keyring.js +588 -0
- package/src/core/keystore/kms.js +157 -0
- package/src/core/keystore/media-seal.js +711 -0
- package/src/core/keystore/providers.js +492 -0
- package/src/core/keystore/stores.js +177 -0
- package/src/core/keystore/worker.js +80 -0
- package/src/core/kick-marker.js +61 -0
- package/src/core/last-online.js +236 -0
- package/src/core/list-all.js +280 -0
- package/src/core/listener-lifecycle.js +101 -10
- package/src/core/live-api.js +1 -1
- package/src/core/live-store.js +111 -53
- package/src/core/local-reads.js +16 -0
- package/src/core/logout.js +102 -140
- package/src/core/media-deliver.js +732 -0
- package/src/core/media-route.js +347 -0
- package/src/core/media-store.js +408 -0
- package/src/core/mutual-groups.js +94 -0
- package/src/core/name-refresh.js +135 -0
- package/src/core/oa/calls.js +212 -0
- package/src/core/oa/content.js +390 -0
- package/src/core/oa/gmf.js +537 -0
- package/src/core/oa/messages.js +470 -0
- package/src/core/oa/oauth.js +422 -0
- package/src/core/oa/transport.js +645 -0
- package/src/core/oa/users.js +694 -0
- package/src/core/oa-client.js +49 -415
- package/src/core/overflow-repair.js +221 -0
- package/src/core/policy-layer.js +55 -0
- package/src/core/policy-schema.js +401 -0
- package/src/core/policy-store.js +1058 -0
- package/src/core/presence-config.js +100 -0
- package/src/core/presence-leases.js +211 -0
- package/src/core/presence.js +688 -0
- package/src/core/profile-settings.js +243 -0
- package/src/core/qr-login-flow.js +237 -0
- package/src/core/read-state.js +145 -22
- package/src/core/receipts.js +355 -548
- package/src/core/recent-conversations.js +28 -6
- package/src/core/row-mac.js +405 -0
- package/src/core/search.js +271 -0
- package/src/core/secure-page.js +771 -0
- package/src/core/self-heal.js +493 -34
- package/src/core/session-expiry.js +103 -0
- package/src/core/session-notice.js +249 -0
- package/src/core/social/client.js +296 -0
- package/src/core/social/dpop.js +54 -0
- package/src/core/socket-host.js +437 -0
- package/src/core/sqlite.js +520 -0
- package/src/core/startup-gate.js +49 -5
- package/src/core/storage-quota.js +796 -0
- package/src/core/sync-action.js +180 -0
- package/src/core/sync-v2/auto-sync.js +356 -0
- package/src/core/sync-v2/board.js +130 -92
- package/src/core/sync-v2/conv-state.js +21 -4
- package/src/core/sync-v2/gap-advice.js +2 -3
- package/src/core/sync-v2/index.js +739 -323
- package/src/core/sync-v2/media.js +116 -27
- package/src/core/sync-v2/plan.js +16 -2
- package/src/core/sync-v2/ranges.js +98 -0
- package/src/core/sync-v2/reactions.js +12 -196
- package/src/core/sync-v2/senders.js +32 -14
- package/src/core/sync-v2/zcloud.js +177 -579
- package/src/core/sync.js +23 -21
- package/src/core/test-fake-session.js +87 -0
- package/src/core/typing.js +78 -0
- package/src/core/unknown-acts.js +240 -0
- package/src/core/voice-text.js +171 -0
- package/src/core/webhook-outbox.js +110 -12
- package/src/core/zalo-client.js +147 -188
- package/src/core/zbs/api.js +505 -0
- package/src/core/zbs/image.js +85 -0
- package/src/core/zbs/phone.js +59 -0
- package/src/core/zbs/rsa.js +129 -0
- package/src/core/zbs/template-check.js +449 -0
- package/src/index.js +60 -10
- package/src/mcp/action-tool.js +188 -0
- package/src/mcp/actions-business.js +488 -0
- package/src/mcp/actions-conversation.js +633 -0
- package/src/mcp/actions-media.js +268 -0
- package/src/mcp/actions-profile.js +281 -0
- package/src/mcp/actions-social.js +518 -0
- package/src/mcp/instructions.js +19 -5
- package/src/mcp/mcp-config.js +112 -10
- package/src/mcp/mcp-http-transport.js +162 -25
- package/src/mcp/mcp-server.js +14 -3
- package/src/mcp/mcp-tools.js +1686 -384
- package/src/mcp/message-buffer.js +58 -12
- package/src/mcp/notifier.js +1 -1
- package/src/mcp/official-tool.js +298 -0
- package/src/mcp/sync-jobs.js +7 -1
- package/src/mcp/sync-stages.js +72 -0
- package/src/mcp/thread-name-cache.js +43 -5
- package/src/mcp/tool-presence.js +153 -0
- package/src/mcp/wait-batch.js +27 -0
- package/src/mcp/wait-result.js +19 -21
- package/src/utils/bank-helpers.js +52 -1
- package/src/utils/cli-args.js +12 -12
- package/src/utils/date-range.js +50 -0
- package/src/utils/hidden-access.js +141 -0
- package/src/utils/interrupt.js +37 -0
- package/src/utils/json-input.js +41 -0
- package/src/utils/list-replies.js +60 -0
- package/src/utils/my-documents.js +2 -3
- package/src/utils/output.js +66 -2
- package/src/utils/qr-display.js +14 -8
- package/src/utils/qr-http-server.js +674 -134
- package/src/utils/quote.js +8 -8
- package/src/utils/secret-input.js +57 -0
- package/src/utils/vn-text.js +72 -0
- package/src/zalo/README.md +46 -0
- package/src/zalo/anomaly-store.js +49 -0
- package/src/zalo/api/actions.js +670 -0
- package/src/zalo/api/boards.js +1036 -0
- package/src/zalo/api/business.js +662 -0
- package/src/zalo/api/conversations.js +329 -0
- package/src/zalo/api/groups.js +631 -0
- package/src/zalo/api/messages.js +695 -0
- package/src/zalo/api/people.js +711 -0
- package/src/zalo/api/profile.js +374 -0
- package/src/zalo/api/session.js +45 -0
- package/src/zalo/api/upload.js +976 -0
- package/src/zalo/api.js +117 -0
- package/src/zalo/client.js +206 -0
- package/src/zalo/custom/forward.js +199 -0
- package/src/zalo/custom/gid.js +123 -0
- package/src/zalo/custom/group-history.js +246 -0
- package/src/zalo/custom/group-invite.js +53 -0
- package/src/zalo/custom/group-settings.js +186 -0
- package/src/zalo/custom/group-visibility.js +71 -0
- package/src/zalo/custom/pin.js +220 -0
- package/src/zalo/custom/renewlink.js +115 -0
- package/src/zalo/device-fingerprint.js +33 -0
- package/src/zalo/download-fetch.js +45 -0
- package/src/zalo/enums.js +25 -0
- package/src/zalo/errors.js +195 -0
- package/src/zalo/format/mentions.js +140 -0
- package/src/zalo/format/split-message.js +222 -0
- package/src/zalo/format/urgency.js +29 -0
- package/src/zalo/headers.js +93 -0
- package/src/zalo/index.js +72 -0
- package/src/zalo/kernel/atomic-file.js +217 -0
- package/src/zalo/kernel/bound.js +46 -0
- package/src/zalo/kernel/cipher.js +88 -0
- package/src/zalo/kernel/cookies.js +125 -0
- package/src/zalo/kernel/endpoint.js +211 -0
- package/src/zalo/kernel/http.js +360 -0
- package/src/zalo/kernel/json-ids.js +118 -0
- package/src/zalo/kernel/login-cipher.js +165 -0
- package/src/zalo/kernel/secret-file.js +45 -0
- package/src/zalo/kernel/session.js +261 -0
- package/src/zalo/kernel/zcloud-cipher.js +83 -0
- package/src/zalo/kickout.js +136 -0
- package/src/zalo/listener/dispatch.js +404 -0
- package/src/zalo/listener/frames.js +222 -0
- package/src/zalo/listener/friend-events.js +113 -0
- package/src/zalo/listener/group-events.js +117 -0
- package/src/zalo/listener/keepalive.js +191 -0
- package/src/zalo/listener/listener.js +469 -0
- package/src/zalo/listener/models.js +220 -0
- package/src/zalo/listener/reactions.js +224 -0
- package/src/zalo/listener/socket-tap.js +228 -0
- package/src/zalo/login.js +387 -0
- package/src/zalo/logout.js +192 -0
- package/src/zalo/maintenance.js +183 -0
- package/src/zalo/official-logout.js +254 -0
- package/src/zalo/paging.js +114 -0
- package/src/zalo/profile.js +184 -0
- package/src/zalo/pulls.js +129 -0
- package/src/zalo/qr-image.js +90 -0
- package/src/zalo/qr-login.js +494 -0
- package/src/zalo/queues/control-queue.js +193 -0
- package/src/zalo/queues/offline-queue.js +275 -0
- package/src/zalo/queues/queue-verify.js +306 -0
- package/src/zalo/reads.js +723 -0
- package/src/zalo/receipts.js +550 -0
- package/src/zalo/req-id.js +24 -0
- package/src/zalo/retry.js +343 -0
- package/src/zalo/session-call.js +55 -0
- package/src/zalo/socket.js +762 -0
- package/src/zalo/transfer-sync/assets.js +181 -0
- package/src/zalo/transfer-sync/channel.js +459 -0
- package/src/zalo/transfer-sync/download.js +161 -0
- package/src/zalo/transfer-sync/message-types.js +520 -0
- package/src/zalo/transfer-sync/transfer.js +468 -0
- package/src/zalo/trust-store.js +99 -0
- package/src/zalo/trust-wasm.js +393 -0
- package/src/zalo/upkeep.js +127 -0
- package/src/zalo/web-call.js +103 -0
- package/src/zalo/writes.js +704 -0
- package/src/zalo/zcloud-e2ee.js +214 -0
- package/src/zalo/zcloud.js +802 -0
- package/node_modules/asynckit/LICENSE +0 -21
- package/node_modules/asynckit/README.md +0 -233
- package/node_modules/asynckit/bench.js +0 -76
- package/node_modules/asynckit/index.js +0 -6
- package/node_modules/asynckit/lib/abort.js +0 -29
- package/node_modules/asynckit/lib/async.js +0 -34
- package/node_modules/asynckit/lib/defer.js +0 -26
- package/node_modules/asynckit/lib/iterate.js +0 -75
- package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
- package/node_modules/asynckit/lib/readable_parallel.js +0 -25
- package/node_modules/asynckit/lib/readable_serial.js +0 -25
- package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
- package/node_modules/asynckit/lib/state.js +0 -37
- package/node_modules/asynckit/lib/streamify.js +0 -141
- package/node_modules/asynckit/lib/terminator.js +0 -29
- package/node_modules/asynckit/package.json +0 -63
- package/node_modules/asynckit/parallel.js +0 -43
- package/node_modules/asynckit/serial.js +0 -17
- package/node_modules/asynckit/serialOrdered.js +0 -75
- package/node_modules/asynckit/stream.js +0 -21
- package/node_modules/bignumber.js/CHANGELOG.md +0 -381
- package/node_modules/bignumber.js/LICENCE.md +0 -26
- package/node_modules/bignumber.js/README.md +0 -289
- package/node_modules/bignumber.js/bignumber.d.mts +0 -6
- package/node_modules/bignumber.js/bignumber.d.ts +0 -5
- package/node_modules/bignumber.js/bignumber.js +0 -2922
- package/node_modules/bignumber.js/bignumber.mjs +0 -2907
- package/node_modules/bignumber.js/doc/API.html +0 -2249
- package/node_modules/bignumber.js/package.json +0 -60
- package/node_modules/bignumber.js/types.d.ts +0 -1821
- package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
- package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
- package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
- package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
- package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
- package/node_modules/call-bind-apply-helpers/README.md +0 -62
- package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
- package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
- package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
- package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
- package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
- package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
- package/node_modules/call-bind-apply-helpers/index.js +0 -15
- package/node_modules/call-bind-apply-helpers/package.json +0 -85
- package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
- package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
- package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
- package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
- package/node_modules/combined-stream/License +0 -19
- package/node_modules/combined-stream/Readme.md +0 -138
- package/node_modules/combined-stream/lib/combined_stream.js +0 -208
- package/node_modules/combined-stream/package.json +0 -25
- package/node_modules/crypto-js/CONTRIBUTING.md +0 -28
- package/node_modules/crypto-js/LICENSE +0 -24
- package/node_modules/crypto-js/README.md +0 -275
- package/node_modules/crypto-js/aes.js +0 -234
- package/node_modules/crypto-js/blowfish.js +0 -471
- package/node_modules/crypto-js/bower.json +0 -39
- package/node_modules/crypto-js/cipher-core.js +0 -895
- package/node_modules/crypto-js/core.js +0 -807
- package/node_modules/crypto-js/crypto-js.js +0 -6657
- package/node_modules/crypto-js/docs/QuickStartGuide.wiki +0 -470
- package/node_modules/crypto-js/enc-base64.js +0 -136
- package/node_modules/crypto-js/enc-base64url.js +0 -148
- package/node_modules/crypto-js/enc-hex.js +0 -18
- package/node_modules/crypto-js/enc-latin1.js +0 -18
- package/node_modules/crypto-js/enc-utf16.js +0 -149
- package/node_modules/crypto-js/enc-utf8.js +0 -18
- package/node_modules/crypto-js/evpkdf.js +0 -134
- package/node_modules/crypto-js/format-hex.js +0 -66
- package/node_modules/crypto-js/format-openssl.js +0 -18
- package/node_modules/crypto-js/hmac-md5.js +0 -18
- package/node_modules/crypto-js/hmac-ripemd160.js +0 -18
- package/node_modules/crypto-js/hmac-sha1.js +0 -18
- package/node_modules/crypto-js/hmac-sha224.js +0 -18
- package/node_modules/crypto-js/hmac-sha256.js +0 -18
- package/node_modules/crypto-js/hmac-sha3.js +0 -18
- package/node_modules/crypto-js/hmac-sha384.js +0 -18
- package/node_modules/crypto-js/hmac-sha512.js +0 -18
- package/node_modules/crypto-js/hmac.js +0 -143
- package/node_modules/crypto-js/index.js +0 -18
- package/node_modules/crypto-js/lib-typedarrays.js +0 -76
- package/node_modules/crypto-js/md5.js +0 -268
- package/node_modules/crypto-js/mode-cfb.js +0 -80
- package/node_modules/crypto-js/mode-ctr-gladman.js +0 -116
- package/node_modules/crypto-js/mode-ctr.js +0 -58
- package/node_modules/crypto-js/mode-ecb.js +0 -40
- package/node_modules/crypto-js/mode-ofb.js +0 -54
- package/node_modules/crypto-js/package.json +0 -42
- package/node_modules/crypto-js/pad-ansix923.js +0 -49
- package/node_modules/crypto-js/pad-iso10126.js +0 -44
- package/node_modules/crypto-js/pad-iso97971.js +0 -40
- package/node_modules/crypto-js/pad-nopadding.js +0 -30
- package/node_modules/crypto-js/pad-pkcs7.js +0 -18
- package/node_modules/crypto-js/pad-zeropadding.js +0 -47
- package/node_modules/crypto-js/pbkdf2.js +0 -145
- package/node_modules/crypto-js/rabbit-legacy.js +0 -190
- package/node_modules/crypto-js/rabbit.js +0 -192
- package/node_modules/crypto-js/rc4.js +0 -139
- package/node_modules/crypto-js/ripemd160.js +0 -267
- package/node_modules/crypto-js/sha1.js +0 -150
- package/node_modules/crypto-js/sha224.js +0 -80
- package/node_modules/crypto-js/sha256.js +0 -199
- package/node_modules/crypto-js/sha3.js +0 -326
- package/node_modules/crypto-js/sha384.js +0 -83
- package/node_modules/crypto-js/sha512.js +0 -326
- package/node_modules/crypto-js/tripledes.js +0 -779
- package/node_modules/crypto-js/x64-core.js +0 -304
- package/node_modules/delayed-stream/.npmignore +0 -1
- package/node_modules/delayed-stream/License +0 -19
- package/node_modules/delayed-stream/Makefile +0 -7
- package/node_modules/delayed-stream/Readme.md +0 -141
- package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
- package/node_modules/delayed-stream/package.json +0 -27
- package/node_modules/dunder-proto/.eslintrc +0 -5
- package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
- package/node_modules/dunder-proto/.nycrc +0 -13
- package/node_modules/dunder-proto/CHANGELOG.md +0 -24
- package/node_modules/dunder-proto/LICENSE +0 -21
- package/node_modules/dunder-proto/README.md +0 -54
- package/node_modules/dunder-proto/get.d.ts +0 -5
- package/node_modules/dunder-proto/get.js +0 -30
- package/node_modules/dunder-proto/package.json +0 -76
- package/node_modules/dunder-proto/set.d.ts +0 -5
- package/node_modules/dunder-proto/set.js +0 -35
- package/node_modules/dunder-proto/test/get.js +0 -34
- package/node_modules/dunder-proto/test/index.js +0 -4
- package/node_modules/dunder-proto/test/set.js +0 -50
- package/node_modules/dunder-proto/tsconfig.json +0 -9
- package/node_modules/es-define-property/.eslintrc +0 -13
- package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- package/node_modules/es-define-property/.nycrc +0 -9
- package/node_modules/es-define-property/CHANGELOG.md +0 -29
- package/node_modules/es-define-property/LICENSE +0 -21
- package/node_modules/es-define-property/README.md +0 -49
- package/node_modules/es-define-property/index.d.ts +0 -3
- package/node_modules/es-define-property/index.js +0 -14
- package/node_modules/es-define-property/package.json +0 -81
- package/node_modules/es-define-property/test/index.js +0 -56
- package/node_modules/es-define-property/tsconfig.json +0 -10
- package/node_modules/es-errors/.eslintrc +0 -5
- package/node_modules/es-errors/.github/FUNDING.yml +0 -12
- package/node_modules/es-errors/CHANGELOG.md +0 -40
- package/node_modules/es-errors/LICENSE +0 -21
- package/node_modules/es-errors/README.md +0 -55
- package/node_modules/es-errors/eval.d.ts +0 -3
- package/node_modules/es-errors/eval.js +0 -4
- package/node_modules/es-errors/index.d.ts +0 -3
- package/node_modules/es-errors/index.js +0 -4
- package/node_modules/es-errors/package.json +0 -80
- package/node_modules/es-errors/range.d.ts +0 -3
- package/node_modules/es-errors/range.js +0 -4
- package/node_modules/es-errors/ref.d.ts +0 -3
- package/node_modules/es-errors/ref.js +0 -4
- package/node_modules/es-errors/syntax.d.ts +0 -3
- package/node_modules/es-errors/syntax.js +0 -4
- package/node_modules/es-errors/test/index.js +0 -19
- package/node_modules/es-errors/tsconfig.json +0 -49
- package/node_modules/es-errors/type.d.ts +0 -3
- package/node_modules/es-errors/type.js +0 -4
- package/node_modules/es-errors/uri.d.ts +0 -3
- package/node_modules/es-errors/uri.js +0 -4
- package/node_modules/es-object-atoms/.eslintrc +0 -16
- package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
- package/node_modules/es-object-atoms/CHANGELOG.md +0 -44
- package/node_modules/es-object-atoms/LICENSE +0 -21
- package/node_modules/es-object-atoms/README.md +0 -63
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
- package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
- package/node_modules/es-object-atoms/ToObject.js +0 -10
- package/node_modules/es-object-atoms/index.d.ts +0 -3
- package/node_modules/es-object-atoms/index.js +0 -4
- package/node_modules/es-object-atoms/isObject.d.ts +0 -3
- package/node_modules/es-object-atoms/isObject.js +0 -6
- package/node_modules/es-object-atoms/package.json +0 -79
- package/node_modules/es-object-atoms/test/index.js +0 -38
- package/node_modules/es-object-atoms/tsconfig.json +0 -7
- package/node_modules/es-set-tostringtag/.eslintrc +0 -13
- package/node_modules/es-set-tostringtag/.nycrc +0 -9
- package/node_modules/es-set-tostringtag/CHANGELOG.md +0 -67
- package/node_modules/es-set-tostringtag/LICENSE +0 -21
- package/node_modules/es-set-tostringtag/README.md +0 -53
- package/node_modules/es-set-tostringtag/index.d.ts +0 -10
- package/node_modules/es-set-tostringtag/index.js +0 -35
- package/node_modules/es-set-tostringtag/package.json +0 -78
- package/node_modules/es-set-tostringtag/test/index.js +0 -85
- package/node_modules/es-set-tostringtag/tsconfig.json +0 -9
- package/node_modules/form-data/CHANGELOG.md +0 -686
- package/node_modules/form-data/License +0 -19
- package/node_modules/form-data/README.md +0 -355
- package/node_modules/form-data/index.d.ts +0 -62
- package/node_modules/form-data/lib/browser.js +0 -4
- package/node_modules/form-data/lib/form_data.js +0 -506
- package/node_modules/form-data/lib/populate.js +0 -10
- package/node_modules/form-data/node_modules/mime-db/HISTORY.md +0 -507
- package/node_modules/form-data/node_modules/mime-db/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-db/README.md +0 -100
- package/node_modules/form-data/node_modules/mime-db/db.json +0 -8519
- package/node_modules/form-data/node_modules/mime-db/index.js +0 -12
- package/node_modules/form-data/node_modules/mime-db/package.json +0 -60
- package/node_modules/form-data/node_modules/mime-types/HISTORY.md +0 -397
- package/node_modules/form-data/node_modules/mime-types/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-types/README.md +0 -113
- package/node_modules/form-data/node_modules/mime-types/index.js +0 -188
- package/node_modules/form-data/node_modules/mime-types/package.json +0 -44
- package/node_modules/form-data/package.json +0 -82
- package/node_modules/function-bind/.eslintrc +0 -21
- package/node_modules/function-bind/.github/FUNDING.yml +0 -12
- package/node_modules/function-bind/.github/SECURITY.md +0 -3
- package/node_modules/function-bind/.nycrc +0 -13
- package/node_modules/function-bind/CHANGELOG.md +0 -136
- package/node_modules/function-bind/LICENSE +0 -20
- package/node_modules/function-bind/README.md +0 -46
- package/node_modules/function-bind/implementation.js +0 -84
- package/node_modules/function-bind/index.js +0 -5
- package/node_modules/function-bind/package.json +0 -87
- package/node_modules/function-bind/test/.eslintrc +0 -9
- package/node_modules/function-bind/test/index.js +0 -252
- package/node_modules/get-intrinsic/.eslintrc +0 -42
- package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
- package/node_modules/get-intrinsic/.nycrc +0 -9
- package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
- package/node_modules/get-intrinsic/LICENSE +0 -21
- package/node_modules/get-intrinsic/README.md +0 -71
- package/node_modules/get-intrinsic/index.js +0 -378
- package/node_modules/get-intrinsic/package.json +0 -97
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
- package/node_modules/get-proto/.eslintrc +0 -10
- package/node_modules/get-proto/.github/FUNDING.yml +0 -12
- package/node_modules/get-proto/.nycrc +0 -9
- package/node_modules/get-proto/CHANGELOG.md +0 -21
- package/node_modules/get-proto/LICENSE +0 -21
- package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
- package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
- package/node_modules/get-proto/README.md +0 -50
- package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
- package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
- package/node_modules/get-proto/index.d.ts +0 -5
- package/node_modules/get-proto/index.js +0 -27
- package/node_modules/get-proto/package.json +0 -81
- package/node_modules/get-proto/test/index.js +0 -68
- package/node_modules/get-proto/tsconfig.json +0 -9
- package/node_modules/gopd/.eslintrc +0 -16
- package/node_modules/gopd/.github/FUNDING.yml +0 -12
- package/node_modules/gopd/CHANGELOG.md +0 -45
- package/node_modules/gopd/LICENSE +0 -21
- package/node_modules/gopd/README.md +0 -40
- package/node_modules/gopd/gOPD.d.ts +0 -1
- package/node_modules/gopd/gOPD.js +0 -4
- package/node_modules/gopd/index.d.ts +0 -5
- package/node_modules/gopd/index.js +0 -15
- package/node_modules/gopd/package.json +0 -77
- package/node_modules/gopd/test/index.js +0 -36
- package/node_modules/gopd/tsconfig.json +0 -9
- package/node_modules/has-symbols/.eslintrc +0 -11
- package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
- package/node_modules/has-symbols/.nycrc +0 -9
- package/node_modules/has-symbols/CHANGELOG.md +0 -91
- package/node_modules/has-symbols/LICENSE +0 -21
- package/node_modules/has-symbols/README.md +0 -46
- package/node_modules/has-symbols/index.d.ts +0 -3
- package/node_modules/has-symbols/index.js +0 -14
- package/node_modules/has-symbols/package.json +0 -111
- package/node_modules/has-symbols/shams.d.ts +0 -3
- package/node_modules/has-symbols/shams.js +0 -45
- package/node_modules/has-symbols/test/index.js +0 -22
- package/node_modules/has-symbols/test/shams/core-js.js +0 -29
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
- package/node_modules/has-symbols/test/tests.js +0 -58
- package/node_modules/has-symbols/tsconfig.json +0 -10
- package/node_modules/has-tostringtag/.eslintrc +0 -5
- package/node_modules/has-tostringtag/.github/FUNDING.yml +0 -12
- package/node_modules/has-tostringtag/.nycrc +0 -13
- package/node_modules/has-tostringtag/CHANGELOG.md +0 -42
- package/node_modules/has-tostringtag/LICENSE +0 -21
- package/node_modules/has-tostringtag/README.md +0 -46
- package/node_modules/has-tostringtag/index.d.ts +0 -3
- package/node_modules/has-tostringtag/index.js +0 -8
- package/node_modules/has-tostringtag/package.json +0 -108
- package/node_modules/has-tostringtag/shams.d.ts +0 -3
- package/node_modules/has-tostringtag/shams.js +0 -8
- package/node_modules/has-tostringtag/test/index.js +0 -21
- package/node_modules/has-tostringtag/test/shams/core-js.js +0 -31
- package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +0 -30
- package/node_modules/has-tostringtag/test/tests.js +0 -15
- package/node_modules/has-tostringtag/tsconfig.json +0 -49
- package/node_modules/hasown/.github/FUNDING.yml +0 -12
- package/node_modules/hasown/.nycrc +0 -13
- package/node_modules/hasown/CHANGELOG.md +0 -58
- package/node_modules/hasown/LICENSE +0 -21
- package/node_modules/hasown/README.md +0 -40
- package/node_modules/hasown/eslint.config.mjs +0 -6
- package/node_modules/hasown/index.d.ts +0 -3
- package/node_modules/hasown/index.js +0 -8
- package/node_modules/hasown/package.json +0 -91
- package/node_modules/hasown/tsconfig.json +0 -6
- package/node_modules/json-bigint/LICENSE +0 -20
- package/node_modules/json-bigint/README.md +0 -240
- package/node_modules/json-bigint/index.js +0 -12
- package/node_modules/json-bigint/lib/parse.js +0 -443
- package/node_modules/json-bigint/lib/stringify.js +0 -384
- package/node_modules/json-bigint/package.json +0 -34
- package/node_modules/math-intrinsics/.eslintrc +0 -16
- package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
- package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
- package/node_modules/math-intrinsics/LICENSE +0 -21
- package/node_modules/math-intrinsics/README.md +0 -50
- package/node_modules/math-intrinsics/abs.d.ts +0 -1
- package/node_modules/math-intrinsics/abs.js +0 -4
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
- package/node_modules/math-intrinsics/floor.d.ts +0 -1
- package/node_modules/math-intrinsics/floor.js +0 -4
- package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
- package/node_modules/math-intrinsics/isFinite.js +0 -12
- package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
- package/node_modules/math-intrinsics/isInteger.js +0 -16
- package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
- package/node_modules/math-intrinsics/isNaN.js +0 -6
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
- package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
- package/node_modules/math-intrinsics/max.d.ts +0 -1
- package/node_modules/math-intrinsics/max.js +0 -4
- package/node_modules/math-intrinsics/min.d.ts +0 -1
- package/node_modules/math-intrinsics/min.js +0 -4
- package/node_modules/math-intrinsics/mod.d.ts +0 -3
- package/node_modules/math-intrinsics/mod.js +0 -9
- package/node_modules/math-intrinsics/package.json +0 -86
- package/node_modules/math-intrinsics/pow.d.ts +0 -1
- package/node_modules/math-intrinsics/pow.js +0 -4
- package/node_modules/math-intrinsics/round.d.ts +0 -1
- package/node_modules/math-intrinsics/round.js +0 -4
- package/node_modules/math-intrinsics/sign.d.ts +0 -3
- package/node_modules/math-intrinsics/sign.js +0 -11
- package/node_modules/math-intrinsics/test/index.js +0 -192
- package/node_modules/math-intrinsics/tsconfig.json +0 -3
- package/node_modules/pako/LICENSE +0 -21
- package/node_modules/pako/README.md +0 -155
- package/node_modules/pako/dist/pako.es5.js +0 -6760
- package/node_modules/pako/dist/pako.es5.min.js +0 -2
- package/node_modules/pako/dist/pako.esm.mjs +0 -6945
- package/node_modules/pako/dist/pako.js +0 -6964
- package/node_modules/pako/dist/pako.min.js +0 -2
- package/node_modules/pako/dist/pako_deflate.es5.js +0 -3953
- package/node_modules/pako/dist/pako_deflate.es5.min.js +0 -2
- package/node_modules/pako/dist/pako_deflate.js +0 -4154
- package/node_modules/pako/dist/pako_deflate.min.js +0 -2
- package/node_modules/pako/dist/pako_inflate.es5.js +0 -3272
- package/node_modules/pako/dist/pako_inflate.es5.min.js +0 -2
- package/node_modules/pako/dist/pako_inflate.js +0 -3279
- package/node_modules/pako/dist/pako_inflate.min.js +0 -2
- package/node_modules/pako/index.js +0 -18
- package/node_modules/pako/lib/deflate.js +0 -387
- package/node_modules/pako/lib/inflate.js +0 -456
- package/node_modules/pako/lib/utils/common.js +0 -48
- package/node_modules/pako/lib/utils/strings.js +0 -174
- package/node_modules/pako/lib/zlib/README +0 -59
- package/node_modules/pako/lib/zlib/adler32.js +0 -51
- package/node_modules/pako/lib/zlib/constants.js +0 -68
- package/node_modules/pako/lib/zlib/crc32.js +0 -59
- package/node_modules/pako/lib/zlib/deflate.js +0 -2069
- package/node_modules/pako/lib/zlib/gzheader.js +0 -58
- package/node_modules/pako/lib/zlib/inffast.js +0 -344
- package/node_modules/pako/lib/zlib/inflate.js +0 -1575
- package/node_modules/pako/lib/zlib/inftrees.js +0 -340
- package/node_modules/pako/lib/zlib/messages.js +0 -32
- package/node_modules/pako/lib/zlib/trees.js +0 -1179
- package/node_modules/pako/lib/zlib/zstream.js +0 -47
- package/node_modules/pako/package.json +0 -73
- package/node_modules/semver/LICENSE +0 -15
- package/node_modules/semver/README.md +0 -680
- package/node_modules/semver/bin/semver.js +0 -195
- package/node_modules/semver/classes/comparator.js +0 -143
- package/node_modules/semver/classes/index.js +0 -7
- package/node_modules/semver/classes/range.js +0 -577
- package/node_modules/semver/classes/semver.js +0 -350
- package/node_modules/semver/functions/clean.js +0 -8
- package/node_modules/semver/functions/cmp.js +0 -54
- package/node_modules/semver/functions/coerce.js +0 -62
- package/node_modules/semver/functions/compare-build.js +0 -9
- package/node_modules/semver/functions/compare-loose.js +0 -5
- package/node_modules/semver/functions/compare.js +0 -7
- package/node_modules/semver/functions/diff.js +0 -60
- package/node_modules/semver/functions/eq.js +0 -5
- package/node_modules/semver/functions/gt.js +0 -5
- package/node_modules/semver/functions/gte.js +0 -5
- package/node_modules/semver/functions/inc.js +0 -21
- package/node_modules/semver/functions/lt.js +0 -5
- package/node_modules/semver/functions/lte.js +0 -5
- package/node_modules/semver/functions/major.js +0 -5
- package/node_modules/semver/functions/minor.js +0 -5
- package/node_modules/semver/functions/neq.js +0 -5
- package/node_modules/semver/functions/parse.js +0 -18
- package/node_modules/semver/functions/patch.js +0 -5
- package/node_modules/semver/functions/prerelease.js +0 -8
- package/node_modules/semver/functions/rcompare.js +0 -5
- package/node_modules/semver/functions/rsort.js +0 -5
- package/node_modules/semver/functions/satisfies.js +0 -12
- package/node_modules/semver/functions/sort.js +0 -5
- package/node_modules/semver/functions/truncate.js +0 -48
- package/node_modules/semver/functions/valid.js +0 -8
- package/node_modules/semver/index.js +0 -93
- package/node_modules/semver/internal/constants.js +0 -37
- package/node_modules/semver/internal/debug.js +0 -11
- package/node_modules/semver/internal/identifiers.js +0 -29
- package/node_modules/semver/internal/lrucache.js +0 -42
- package/node_modules/semver/internal/parse-options.js +0 -17
- package/node_modules/semver/internal/re.js +0 -223
- package/node_modules/semver/package.json +0 -78
- package/node_modules/semver/preload.js +0 -4
- package/node_modules/semver/range.bnf +0 -17
- package/node_modules/semver/ranges/gtr.js +0 -6
- package/node_modules/semver/ranges/intersects.js +0 -9
- package/node_modules/semver/ranges/ltr.js +0 -6
- package/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/node_modules/semver/ranges/min-version.js +0 -63
- package/node_modules/semver/ranges/outside.js +0 -82
- package/node_modules/semver/ranges/simplify.js +0 -49
- package/node_modules/semver/ranges/subset.js +0 -249
- package/node_modules/semver/ranges/to-comparators.js +0 -10
- package/node_modules/semver/ranges/valid.js +0 -13
- package/node_modules/spark-md5/LICENSE +0 -13
- package/node_modules/spark-md5/README.md +0 -191
- package/node_modules/spark-md5/package.json +0 -35
- package/node_modules/spark-md5/spark-md5.js +0 -751
- package/node_modules/spark-md5/spark-md5.min.js +0 -1
- package/node_modules/tldts/LICENSE +0 -13
- package/node_modules/tldts/README.md +0 -327
- package/node_modules/tldts/bin/cli.js +0 -21
- package/node_modules/tldts/dist/cjs/index.js +0 -666
- package/node_modules/tldts/dist/cjs/index.js.map +0 -1
- package/node_modules/tldts/dist/cjs/src/data/trie.js +0 -14
- package/node_modules/tldts/dist/cjs/src/data/trie.js.map +0 -1
- package/node_modules/tldts/dist/cjs/src/suffix-trie.js +0 -67
- package/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +0 -1
- package/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +0 -1
- package/node_modules/tldts/dist/es6/index.js +0 -33
- package/node_modules/tldts/dist/es6/index.js.map +0 -1
- package/node_modules/tldts/dist/es6/src/data/trie.js +0 -11
- package/node_modules/tldts/dist/es6/src/data/trie.js.map +0 -1
- package/node_modules/tldts/dist/es6/src/suffix-trie.js +0 -64
- package/node_modules/tldts/dist/es6/src/suffix-trie.js.map +0 -1
- package/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
- package/node_modules/tldts/dist/index.cjs.min.js +0 -2
- package/node_modules/tldts/dist/index.cjs.min.js.map +0 -1
- package/node_modules/tldts/dist/index.esm.min.js +0 -2
- package/node_modules/tldts/dist/index.esm.min.js.map +0 -1
- package/node_modules/tldts/dist/index.umd.min.js +0 -2
- package/node_modules/tldts/dist/index.umd.min.js.map +0 -1
- package/node_modules/tldts/dist/types/index.d.ts +0 -7
- package/node_modules/tldts/dist/types/src/data/trie.d.ts +0 -5
- package/node_modules/tldts/dist/types/src/suffix-trie.d.ts +0 -5
- package/node_modules/tldts/index.ts +0 -62
- package/node_modules/tldts/package.json +0 -91
- package/node_modules/tldts/src/data/trie.ts +0 -14
- package/node_modules/tldts/src/suffix-trie.ts +0 -110
- package/node_modules/tldts-core/LICENSE +0 -13
- package/node_modules/tldts-core/README.md +0 -3
- package/node_modules/tldts-core/dist/cjs/index.js +0 -561
- package/node_modules/tldts-core/dist/cjs/index.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +0 -15
- package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/domain.js +0 -83
- package/node_modules/tldts-core/dist/cjs/src/domain.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +0 -149
- package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/factory.js +0 -104
- package/node_modules/tldts-core/dist/cjs/src/factory.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/is-ip.js +0 -72
- package/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/is-valid.js +0 -69
- package/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +0 -69
- package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +0 -3
- package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/options.js +0 -22
- package/node_modules/tldts-core/dist/cjs/src/options.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/src/subdomain.js +0 -14
- package/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +0 -1
- package/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +0 -1
- package/node_modules/tldts-core/dist/es6/index.js +0 -4
- package/node_modules/tldts-core/dist/es6/index.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +0 -12
- package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/domain.js +0 -80
- package/node_modules/tldts-core/dist/es6/src/domain.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/extract-hostname.js +0 -146
- package/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/factory.js +0 -99
- package/node_modules/tldts-core/dist/es6/src/factory.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/is-ip.js +0 -69
- package/node_modules/tldts-core/dist/es6/src/is-ip.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/is-valid.js +0 -66
- package/node_modules/tldts-core/dist/es6/src/is-valid.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +0 -66
- package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/lookup/interface.js +0 -2
- package/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/options.js +0 -19
- package/node_modules/tldts-core/dist/es6/src/options.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/src/subdomain.js +0 -11
- package/node_modules/tldts-core/dist/es6/src/subdomain.js.map +0 -1
- package/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
- package/node_modules/tldts-core/dist/types/index.d.ts +0 -4
- package/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +0 -6
- package/node_modules/tldts-core/dist/types/src/domain.d.ts +0 -5
- package/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +0 -5
- package/node_modules/tldts-core/dist/types/src/factory.d.ts +0 -28
- package/node_modules/tldts-core/dist/types/src/is-ip.d.ts +0 -6
- package/node_modules/tldts-core/dist/types/src/is-valid.d.ts +0 -15
- package/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +0 -2
- package/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +0 -9
- package/node_modules/tldts-core/dist/types/src/options.d.ts +0 -10
- package/node_modules/tldts-core/dist/types/src/subdomain.d.ts +0 -4
- package/node_modules/tldts-core/index.ts +0 -10
- package/node_modules/tldts-core/package.json +0 -68
- package/node_modules/tldts-core/src/domain-without-suffix.ts +0 -14
- package/node_modules/tldts-core/src/domain.ts +0 -100
- package/node_modules/tldts-core/src/extract-hostname.ts +0 -170
- package/node_modules/tldts-core/src/factory.ts +0 -160
- package/node_modules/tldts-core/src/is-ip.ts +0 -87
- package/node_modules/tldts-core/src/is-valid.ts +0 -79
- package/node_modules/tldts-core/src/lookup/fast-path.ts +0 -80
- package/node_modules/tldts-core/src/lookup/interface.ts +0 -10
- package/node_modules/tldts-core/src/options.ts +0 -39
- package/node_modules/tldts-core/src/subdomain.ts +0 -11
- package/node_modules/tough-cookie/LICENSE +0 -12
- package/node_modules/tough-cookie/README.md +0 -154
- package/node_modules/tough-cookie/dist/cookie/canonicalDomain.d.ts +0 -33
- package/node_modules/tough-cookie/dist/cookie/canonicalDomain.js +0 -65
- package/node_modules/tough-cookie/dist/cookie/constants.d.ts +0 -54
- package/node_modules/tough-cookie/dist/cookie/constants.js +0 -38
- package/node_modules/tough-cookie/dist/cookie/cookie.d.ts +0 -326
- package/node_modules/tough-cookie/dist/cookie/cookie.js +0 -831
- package/node_modules/tough-cookie/dist/cookie/cookieCompare.d.ts +0 -58
- package/node_modules/tough-cookie/dist/cookie/cookieCompare.js +0 -84
- package/node_modules/tough-cookie/dist/cookie/cookieJar.d.ts +0 -621
- package/node_modules/tough-cookie/dist/cookie/cookieJar.js +0 -1000
- package/node_modules/tough-cookie/dist/cookie/defaultPath.d.ts +0 -40
- package/node_modules/tough-cookie/dist/cookie/defaultPath.js +0 -60
- package/node_modules/tough-cookie/dist/cookie/domainMatch.d.ts +0 -38
- package/node_modules/tough-cookie/dist/cookie/domainMatch.js +0 -94
- package/node_modules/tough-cookie/dist/cookie/formatDate.d.ts +0 -15
- package/node_modules/tough-cookie/dist/cookie/formatDate.js +0 -20
- package/node_modules/tough-cookie/dist/cookie/index.d.ts +0 -29
- package/node_modules/tough-cookie/dist/cookie/index.js +0 -54
- package/node_modules/tough-cookie/dist/cookie/parseDate.d.ts +0 -103
- package/node_modules/tough-cookie/dist/cookie/parseDate.js +0 -323
- package/node_modules/tough-cookie/dist/cookie/permutePath.d.ts +0 -14
- package/node_modules/tough-cookie/dist/cookie/permutePath.js +0 -32
- package/node_modules/tough-cookie/dist/getPublicSuffix.d.ts +0 -55
- package/node_modules/tough-cookie/dist/getPublicSuffix.js +0 -71
- package/node_modules/tough-cookie/dist/memstore.d.ts +0 -220
- package/node_modules/tough-cookie/dist/memstore.js +0 -187
- package/node_modules/tough-cookie/dist/pathMatch.d.ts +0 -17
- package/node_modules/tough-cookie/dist/pathMatch.js +0 -40
- package/node_modules/tough-cookie/dist/permuteDomain.d.ts +0 -15
- package/node_modules/tough-cookie/dist/permuteDomain.js +0 -44
- package/node_modules/tough-cookie/dist/store.d.ts +0 -211
- package/node_modules/tough-cookie/dist/store.js +0 -76
- package/node_modules/tough-cookie/dist/utils.d.ts +0 -34
- package/node_modules/tough-cookie/dist/utils.js +0 -99
- package/node_modules/tough-cookie/dist/validators.d.ts +0 -24
- package/node_modules/tough-cookie/dist/validators.js +0 -90
- package/node_modules/tough-cookie/dist/version.d.ts +0 -5
- package/node_modules/tough-cookie/dist/version.js +0 -8
- package/node_modules/tough-cookie/package.json +0 -144
- package/node_modules/ws/LICENSE +0 -20
- package/node_modules/ws/README.md +0 -548
- package/node_modules/ws/browser.js +0 -8
- package/node_modules/ws/index.js +0 -22
- package/node_modules/ws/lib/buffer-util.js +0 -131
- package/node_modules/ws/lib/constants.js +0 -19
- package/node_modules/ws/lib/event-target.js +0 -292
- package/node_modules/ws/lib/extension.js +0 -203
- package/node_modules/ws/lib/limiter.js +0 -55
- package/node_modules/ws/lib/permessage-deflate.js +0 -530
- package/node_modules/ws/lib/receiver.js +0 -743
- package/node_modules/ws/lib/sender.js +0 -607
- package/node_modules/ws/lib/stream.js +0 -161
- package/node_modules/ws/lib/subprotocol.js +0 -62
- package/node_modules/ws/lib/validation.js +0 -152
- package/node_modules/ws/lib/websocket-server.js +0 -562
- package/node_modules/ws/lib/websocket.js +0 -1407
- package/node_modules/ws/package.json +0 -74
- package/node_modules/ws/wrapper.mjs +0 -21
- package/node_modules/zca-js/.prettierrc +0 -5
- package/node_modules/zca-js/CODE_OF_CONDUCT.md +0 -163
- package/node_modules/zca-js/CONTRIBUTING.md +0 -470
- package/node_modules/zca-js/LICENSE +0 -21
- package/node_modules/zca-js/README.md +0 -225
- package/node_modules/zca-js/SECURITY.md +0 -83
- package/node_modules/zca-js/dist/Errors/ZaloApiError.d.ts +0 -4
- package/node_modules/zca-js/dist/Errors/ZaloApiError.js +0 -7
- package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRAborted.d.ts +0 -4
- package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRAborted.js +0 -7
- package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRDeclined.d.ts +0 -4
- package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRDeclined.js +0 -7
- package/node_modules/zca-js/dist/Errors/ZaloApiMissingImageMetadataGetter.d.ts +0 -4
- package/node_modules/zca-js/dist/Errors/ZaloApiMissingImageMetadataGetter.js +0 -7
- package/node_modules/zca-js/dist/Errors/index.d.ts +0 -4
- package/node_modules/zca-js/dist/Errors/index.js +0 -4
- package/node_modules/zca-js/dist/apis/acceptFriendRequest.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/acceptFriendRequest.js +0 -28
- package/node_modules/zca-js/dist/apis/addGroupBlockedMember.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/addGroupBlockedMember.js +0 -28
- package/node_modules/zca-js/dist/apis/addGroupDeputy.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/addGroupDeputy.js +0 -30
- package/node_modules/zca-js/dist/apis/addPollOptions.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/addPollOptions.js +0 -26
- package/node_modules/zca-js/dist/apis/addQuickMessage.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/addQuickMessage.js +0 -60
- package/node_modules/zca-js/dist/apis/addReaction.d.ts +0 -18
- package/node_modules/zca-js/dist/apis/addReaction.js +0 -294
- package/node_modules/zca-js/dist/apis/addUnreadMark.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/addUnreadMark.js +0 -52
- package/node_modules/zca-js/dist/apis/addUserToGroup.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/addUserToGroup.js +0 -34
- package/node_modules/zca-js/dist/apis/blockUser.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/blockUser.js +0 -28
- package/node_modules/zca-js/dist/apis/blockViewFeed.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/blockViewFeed.js +0 -30
- package/node_modules/zca-js/dist/apis/changeAccountAvatar.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/changeAccountAvatar.js +0 -52
- package/node_modules/zca-js/dist/apis/changeFriendAlias.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/changeFriendAlias.js +0 -27
- package/node_modules/zca-js/dist/apis/changeGroupAvatar.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/changeGroupAvatar.js +0 -44
- package/node_modules/zca-js/dist/apis/changeGroupName.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/changeGroupName.js +0 -32
- package/node_modules/zca-js/dist/apis/changeGroupOwner.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/changeGroupOwner.js +0 -30
- package/node_modules/zca-js/dist/apis/createAutoReply.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/createAutoReply.js +0 -37
- package/node_modules/zca-js/dist/apis/createBankAccount.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/createBankAccount.js +0 -32
- package/node_modules/zca-js/dist/apis/createCatalog.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/createCatalog.js +0 -29
- package/node_modules/zca-js/dist/apis/createGroup.d.ts +0 -28
- package/node_modules/zca-js/dist/apis/createGroup.js +0 -43
- package/node_modules/zca-js/dist/apis/createNote.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/createNote.js +0 -47
- package/node_modules/zca-js/dist/apis/createPoll.d.ts +0 -36
- package/node_modules/zca-js/dist/apis/createPoll.js +0 -40
- package/node_modules/zca-js/dist/apis/createProductCatalog.d.ts +0 -23
- package/node_modules/zca-js/dist/apis/createProductCatalog.js +0 -50
- package/node_modules/zca-js/dist/apis/createReminder.d.ts +0 -12
- package/node_modules/zca-js/dist/apis/createReminder.js +0 -63
- package/node_modules/zca-js/dist/apis/custom.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/custom.js +0 -15
- package/node_modules/zca-js/dist/apis/deleteAutoReply.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/deleteAutoReply.js +0 -29
- package/node_modules/zca-js/dist/apis/deleteAvatar.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/deleteAvatar.js +0 -27
- package/node_modules/zca-js/dist/apis/deleteBankAccount.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/deleteBankAccount.js +0 -32
- package/node_modules/zca-js/dist/apis/deleteCatalog.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/deleteCatalog.js +0 -28
- package/node_modules/zca-js/dist/apis/deleteChat.d.ts +0 -19
- package/node_modules/zca-js/dist/apis/deleteChat.js +0 -50
- package/node_modules/zca-js/dist/apis/deleteGroupInviteBox.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/deleteGroupInviteBox.js +0 -27
- package/node_modules/zca-js/dist/apis/deleteMessage.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/deleteMessage.js +0 -52
- package/node_modules/zca-js/dist/apis/deleteProductCatalog.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/deleteProductCatalog.js +0 -31
- package/node_modules/zca-js/dist/apis/disableGroupLink.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/disableGroupLink.js +0 -24
- package/node_modules/zca-js/dist/apis/disperseGroup.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/disperseGroup.js +0 -28
- package/node_modules/zca-js/dist/apis/editNote.d.ts +0 -17
- package/node_modules/zca-js/dist/apis/editNote.js +0 -46
- package/node_modules/zca-js/dist/apis/editReminder.d.ts +0 -13
- package/node_modules/zca-js/dist/apis/editReminder.js +0 -61
- package/node_modules/zca-js/dist/apis/enableGroupLink.d.ts +0 -6
- package/node_modules/zca-js/dist/apis/enableGroupLink.js +0 -25
- package/node_modules/zca-js/dist/apis/fetchAccountInfo.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/fetchAccountInfo.js +0 -10
- package/node_modules/zca-js/dist/apis/findUser.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/findUser.js +0 -42
- package/node_modules/zca-js/dist/apis/findUserByUsername.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/findUserByUsername.js +0 -27
- package/node_modules/zca-js/dist/apis/forwardMessage.d.ts +0 -24
- package/node_modules/zca-js/dist/apis/forwardMessage.js +0 -114
- package/node_modules/zca-js/dist/apis/getAliasList.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/getAliasList.js +0 -27
- package/node_modules/zca-js/dist/apis/getAllFriends.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getAllFriends.js +0 -34
- package/node_modules/zca-js/dist/apis/getAllGroups.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/getAllGroups.js +0 -10
- package/node_modules/zca-js/dist/apis/getArchivedChatList.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getArchivedChatList.js +0 -23
- package/node_modules/zca-js/dist/apis/getAutoDeleteChat.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/getAutoDeleteChat.js +0 -21
- package/node_modules/zca-js/dist/apis/getAutoReplyList.d.ts +0 -6
- package/node_modules/zca-js/dist/apis/getAutoReplyList.js +0 -24
- package/node_modules/zca-js/dist/apis/getAvatarList.d.ts +0 -12
- package/node_modules/zca-js/dist/apis/getAvatarList.js +0 -28
- package/node_modules/zca-js/dist/apis/getAvatarUrlProfile.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/getAvatarUrlProfile.js +0 -30
- package/node_modules/zca-js/dist/apis/getBizAccount.d.ts +0 -24
- package/node_modules/zca-js/dist/apis/getBizAccount.js +0 -27
- package/node_modules/zca-js/dist/apis/getCatalogList.d.ts +0 -18
- package/node_modules/zca-js/dist/apis/getCatalogList.js +0 -32
- package/node_modules/zca-js/dist/apis/getCloseFriends.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getCloseFriends.js +0 -20
- package/node_modules/zca-js/dist/apis/getContext.d.ts +0 -1
- package/node_modules/zca-js/dist/apis/getContext.js +0 -4
- package/node_modules/zca-js/dist/apis/getCookie.d.ts +0 -1
- package/node_modules/zca-js/dist/apis/getCookie.js +0 -9
- package/node_modules/zca-js/dist/apis/getFriendBoardList.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getFriendBoardList.js +0 -26
- package/node_modules/zca-js/dist/apis/getFriendOnlines.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/getFriendOnlines.js +0 -35
- package/node_modules/zca-js/dist/apis/getFriendRecommendations.d.ts +0 -42
- package/node_modules/zca-js/dist/apis/getFriendRecommendations.js +0 -27
- package/node_modules/zca-js/dist/apis/getFriendRequestStatus.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/getFriendRequestStatus.js +0 -25
- package/node_modules/zca-js/dist/apis/getFullAvatar.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getFullAvatar.js +0 -25
- package/node_modules/zca-js/dist/apis/getGroupBlockedMember.d.ts +0 -23
- package/node_modules/zca-js/dist/apis/getGroupBlockedMember.js +0 -29
- package/node_modules/zca-js/dist/apis/getGroupChatHistory.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/getGroupChatHistory.js +0 -36
- package/node_modules/zca-js/dist/apis/getGroupInfo.d.ts +0 -16
- package/node_modules/zca-js/dist/apis/getGroupInfo.js +0 -32
- package/node_modules/zca-js/dist/apis/getGroupInviteBoxInfo.d.ts +0 -32
- package/node_modules/zca-js/dist/apis/getGroupInviteBoxInfo.js +0 -38
- package/node_modules/zca-js/dist/apis/getGroupInviteBoxList.d.ts +0 -38
- package/node_modules/zca-js/dist/apis/getGroupInviteBoxList.js +0 -31
- package/node_modules/zca-js/dist/apis/getGroupLinkDetail.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/getGroupLinkDetail.js +0 -25
- package/node_modules/zca-js/dist/apis/getGroupLinkInfo.d.ts +0 -34
- package/node_modules/zca-js/dist/apis/getGroupLinkInfo.js +0 -28
- package/node_modules/zca-js/dist/apis/getGroupMembersInfo.d.ts +0 -17
- package/node_modules/zca-js/dist/apis/getGroupMembersInfo.js +0 -24
- package/node_modules/zca-js/dist/apis/getHiddenConversations.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/getHiddenConversations.js +0 -23
- package/node_modules/zca-js/dist/apis/getLabels.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/getLabels.js +0 -28
- package/node_modules/zca-js/dist/apis/getListBank.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getListBank.js +0 -20
- package/node_modules/zca-js/dist/apis/getListBankAccount.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/getListBankAccount.js +0 -27
- package/node_modules/zca-js/dist/apis/getListBoard.d.ts +0 -21
- package/node_modules/zca-js/dist/apis/getListBoard.js +0 -45
- package/node_modules/zca-js/dist/apis/getListDevice.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/getListDevice.js +0 -22
- package/node_modules/zca-js/dist/apis/getListReminder.d.ts +0 -28
- package/node_modules/zca-js/dist/apis/getListReminder.js +0 -47
- package/node_modules/zca-js/dist/apis/getMultiUsersByPhones.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getMultiUsersByPhones.js +0 -39
- package/node_modules/zca-js/dist/apis/getMute.d.ts +0 -13
- package/node_modules/zca-js/dist/apis/getMute.js +0 -22
- package/node_modules/zca-js/dist/apis/getOwnId.d.ts +0 -1
- package/node_modules/zca-js/dist/apis/getOwnId.js +0 -4
- package/node_modules/zca-js/dist/apis/getPendingGroupMembers.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/getPendingGroupMembers.js +0 -27
- package/node_modules/zca-js/dist/apis/getPinConversations.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getPinConversations.js +0 -22
- package/node_modules/zca-js/dist/apis/getPollDetail.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getPollDetail.js +0 -30
- package/node_modules/zca-js/dist/apis/getProductCatalogList.d.ts +0 -20
- package/node_modules/zca-js/dist/apis/getProductCatalogList.js +0 -33
- package/node_modules/zca-js/dist/apis/getQR.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/getQR.js +0 -29
- package/node_modules/zca-js/dist/apis/getQuickMessageList.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/getQuickMessageList.js +0 -24
- package/node_modules/zca-js/dist/apis/getRelatedFriendGroup.d.ts +0 -6
- package/node_modules/zca-js/dist/apis/getRelatedFriendGroup.js +0 -30
- package/node_modules/zca-js/dist/apis/getReminder.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getReminder.js +0 -25
- package/node_modules/zca-js/dist/apis/getReminderResponses.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/getReminderResponses.js +0 -24
- package/node_modules/zca-js/dist/apis/getSentFriendRequest.d.ts +0 -18
- package/node_modules/zca-js/dist/apis/getSentFriendRequest.js +0 -24
- package/node_modules/zca-js/dist/apis/getSettings.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getSettings.js +0 -20
- package/node_modules/zca-js/dist/apis/getStickerCategoryDetail.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getStickerCategoryDetail.js +0 -24
- package/node_modules/zca-js/dist/apis/getStickers.d.ts +0 -1
- package/node_modules/zca-js/dist/apis/getStickers.js +0 -40
- package/node_modules/zca-js/dist/apis/getStickersDetail.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/getStickersDetail.js +0 -40
- package/node_modules/zca-js/dist/apis/getUnreadMark.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/getUnreadMark.js +0 -30
- package/node_modules/zca-js/dist/apis/getUserInfo.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/getUserInfo.js +0 -44
- package/node_modules/zca-js/dist/apis/inviteUserToGroups.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/inviteUserToGroups.js +0 -30
- package/node_modules/zca-js/dist/apis/joinGroupInviteBox.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/joinGroupInviteBox.js +0 -25
- package/node_modules/zca-js/dist/apis/joinGroupLink.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/joinGroupLink.js +0 -27
- package/node_modules/zca-js/dist/apis/keepAlive.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/keepAlive.js +0 -22
- package/node_modules/zca-js/dist/apis/lastOnline.d.ts +0 -7
- package/node_modules/zca-js/dist/apis/lastOnline.js +0 -26
- package/node_modules/zca-js/dist/apis/leaveGroup.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/leaveGroup.js +0 -33
- package/node_modules/zca-js/dist/apis/listen.d.ts +0 -102
- package/node_modules/zca-js/dist/apis/listen.js +0 -425
- package/node_modules/zca-js/dist/apis/lockPoll.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/lockPoll.js +0 -28
- package/node_modules/zca-js/dist/apis/login.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/login.js +0 -96
- package/node_modules/zca-js/dist/apis/loginQR.d.ts +0 -71
- package/node_modules/zca-js/dist/apis/loginQR.js +0 -376
- package/node_modules/zca-js/dist/apis/logoutV2.js +0 -79
- package/node_modules/zca-js/dist/apis/lostFocus.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/lostFocus.js +0 -23
- package/node_modules/zca-js/dist/apis/parseLink.d.ts +0 -21
- package/node_modules/zca-js/dist/apis/parseLink.js +0 -27
- package/node_modules/zca-js/dist/apis/registerCatalog.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/registerCatalog.js +0 -27
- package/node_modules/zca-js/dist/apis/rejectFriendRequest.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/rejectFriendRequest.js +0 -27
- package/node_modules/zca-js/dist/apis/removeFriend.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/removeFriend.js +0 -28
- package/node_modules/zca-js/dist/apis/removeFriendAlias.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/removeFriendAlias.js +0 -24
- package/node_modules/zca-js/dist/apis/removeGroupBlockedMember.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/removeGroupBlockedMember.js +0 -28
- package/node_modules/zca-js/dist/apis/removeGroupDeputy.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/removeGroupDeputy.js +0 -30
- package/node_modules/zca-js/dist/apis/removeQuickMessage.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/removeQuickMessage.js +0 -27
- package/node_modules/zca-js/dist/apis/removeReminder.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/removeReminder.js +0 -40
- package/node_modules/zca-js/dist/apis/removeUnreadMark.d.ts +0 -8
- package/node_modules/zca-js/dist/apis/removeUnreadMark.js +0 -50
- package/node_modules/zca-js/dist/apis/removeUserFromGroup.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/removeUserFromGroup.js +0 -34
- package/node_modules/zca-js/dist/apis/resetHiddenConversPin.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/resetHiddenConversPin.js +0 -20
- package/node_modules/zca-js/dist/apis/reuseAvatar.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/reuseAvatar.js +0 -26
- package/node_modules/zca-js/dist/apis/reviewPendingMemberRequest.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/reviewPendingMemberRequest.js +0 -38
- package/node_modules/zca-js/dist/apis/scanURL.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/scanURL.js +0 -28
- package/node_modules/zca-js/dist/apis/searchSticker.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/searchSticker.js +0 -28
- package/node_modules/zca-js/dist/apis/sendBankCard.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/sendBankCard.js +0 -53
- package/node_modules/zca-js/dist/apis/sendCard.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/sendCard.js +0 -75
- package/node_modules/zca-js/dist/apis/sendDeliveredEvent.d.ts +0 -16
- package/node_modules/zca-js/dist/apis/sendDeliveredEvent.js +0 -55
- package/node_modules/zca-js/dist/apis/sendFriendRequest.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/sendFriendRequest.js +0 -39
- package/node_modules/zca-js/dist/apis/sendLink.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/sendLink.js +0 -78
- package/node_modules/zca-js/dist/apis/sendMessage.d.ts +0 -105
- package/node_modules/zca-js/dist/apis/sendMessage.js +0 -486
- package/node_modules/zca-js/dist/apis/sendReport.d.ts +0 -17
- package/node_modules/zca-js/dist/apis/sendReport.js +0 -53
- package/node_modules/zca-js/dist/apis/sendSeenEvent.d.ts +0 -16
- package/node_modules/zca-js/dist/apis/sendSeenEvent.js +0 -63
- package/node_modules/zca-js/dist/apis/sendSticker.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/sendSticker.js +0 -74
- package/node_modules/zca-js/dist/apis/sendTypingEvent.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/sendTypingEvent.js +0 -33
- package/node_modules/zca-js/dist/apis/sendVideo.d.ts +0 -35
- package/node_modules/zca-js/dist/apis/sendVideo.js +0 -134
- package/node_modules/zca-js/dist/apis/sendVoice.d.ts +0 -12
- package/node_modules/zca-js/dist/apis/sendVoice.js +0 -89
- package/node_modules/zca-js/dist/apis/setHiddenConversations.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/setHiddenConversations.js +0 -39
- package/node_modules/zca-js/dist/apis/setMute.d.ts +0 -20
- package/node_modules/zca-js/dist/apis/setMute.js +0 -67
- package/node_modules/zca-js/dist/apis/setPinnedConversations.d.ts +0 -3
- package/node_modules/zca-js/dist/apis/setPinnedConversations.js +0 -34
- package/node_modules/zca-js/dist/apis/sharePoll.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/sharePoll.js +0 -28
- package/node_modules/zca-js/dist/apis/unblockUser.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/unblockUser.js +0 -28
- package/node_modules/zca-js/dist/apis/undo.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/undo.js +0 -42
- package/node_modules/zca-js/dist/apis/undoFriendRequest.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/undoFriendRequest.js +0 -27
- package/node_modules/zca-js/dist/apis/updateActiveStatus.d.ts +0 -4
- package/node_modules/zca-js/dist/apis/updateActiveStatus.js +0 -27
- package/node_modules/zca-js/dist/apis/updateArchivedChatList.d.ts +0 -10
- package/node_modules/zca-js/dist/apis/updateArchivedChatList.js +0 -34
- package/node_modules/zca-js/dist/apis/updateAutoDeleteChat.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/updateAutoDeleteChat.js +0 -40
- package/node_modules/zca-js/dist/apis/updateAutoReply.d.ts +0 -15
- package/node_modules/zca-js/dist/apis/updateAutoReply.js +0 -38
- package/node_modules/zca-js/dist/apis/updateBankAccount.d.ts +0 -9
- package/node_modules/zca-js/dist/apis/updateBankAccount.js +0 -31
- package/node_modules/zca-js/dist/apis/updateCatalog.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/updateCatalog.js +0 -30
- package/node_modules/zca-js/dist/apis/updateGroupSettings.d.ts +0 -40
- package/node_modules/zca-js/dist/apis/updateGroupSettings.js +0 -43
- package/node_modules/zca-js/dist/apis/updateHiddenConversPin.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/updateHiddenConversPin.js +0 -30
- package/node_modules/zca-js/dist/apis/updateLabels.d.ts +0 -15
- package/node_modules/zca-js/dist/apis/updateLabels.js +0 -34
- package/node_modules/zca-js/dist/apis/updateLang.d.ts +0 -6
- package/node_modules/zca-js/dist/apis/updateLang.js +0 -30
- package/node_modules/zca-js/dist/apis/updateProductCatalog.d.ts +0 -25
- package/node_modules/zca-js/dist/apis/updateProductCatalog.js +0 -51
- package/node_modules/zca-js/dist/apis/updateProfile.d.ts +0 -20
- package/node_modules/zca-js/dist/apis/updateProfile.js +0 -43
- package/node_modules/zca-js/dist/apis/updateProfileBio.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/updateProfileBio.js +0 -27
- package/node_modules/zca-js/dist/apis/updateQuickMessage.d.ts +0 -11
- package/node_modules/zca-js/dist/apis/updateQuickMessage.js +0 -61
- package/node_modules/zca-js/dist/apis/updateSettings.d.ts +0 -16
- package/node_modules/zca-js/dist/apis/updateSettings.js +0 -90
- package/node_modules/zca-js/dist/apis/upgradeGroupToCommunity.d.ts +0 -2
- package/node_modules/zca-js/dist/apis/upgradeGroupToCommunity.js +0 -27
- package/node_modules/zca-js/dist/apis/uploadAttachment.d.ts +0 -50
- package/node_modules/zca-js/dist/apis/uploadAttachment.js +0 -197
- package/node_modules/zca-js/dist/apis/uploadProductPhoto.d.ts +0 -14
- package/node_modules/zca-js/dist/apis/uploadProductPhoto.js +0 -50
- package/node_modules/zca-js/dist/apis/votePoll.d.ts +0 -5
- package/node_modules/zca-js/dist/apis/votePoll.js +0 -29
- package/node_modules/zca-js/dist/apis.d.ts +0 -317
- package/node_modules/zca-js/dist/apis.js +0 -319
- package/node_modules/zca-js/dist/cjs/Errors/ZaloApiError.cjs +0 -11
- package/node_modules/zca-js/dist/cjs/Errors/ZaloApiLoginQRAborted.cjs +0 -12
- package/node_modules/zca-js/dist/cjs/Errors/ZaloApiLoginQRDeclined.cjs +0 -12
- package/node_modules/zca-js/dist/cjs/Errors/ZaloApiMissingImageMetadataGetter.cjs +0 -12
- package/node_modules/zca-js/dist/cjs/apis/acceptFriendRequest.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/addGroupBlockedMember.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/addGroupDeputy.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/addPollOptions.cjs +0 -31
- package/node_modules/zca-js/dist/cjs/apis/addQuickMessage.cjs +0 -65
- package/node_modules/zca-js/dist/cjs/apis/addReaction.cjs +0 -308
- package/node_modules/zca-js/dist/cjs/apis/addUnreadMark.cjs +0 -66
- package/node_modules/zca-js/dist/cjs/apis/addUserToGroup.cjs +0 -39
- package/node_modules/zca-js/dist/cjs/apis/blockUser.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/blockViewFeed.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/changeAccountAvatar.cjs +0 -57
- package/node_modules/zca-js/dist/cjs/apis/changeFriendAlias.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/changeGroupAvatar.cjs +0 -49
- package/node_modules/zca-js/dist/cjs/apis/changeGroupName.cjs +0 -37
- package/node_modules/zca-js/dist/cjs/apis/changeGroupOwner.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/createAutoReply.cjs +0 -42
- package/node_modules/zca-js/dist/cjs/apis/createBankAccount.cjs +0 -37
- package/node_modules/zca-js/dist/cjs/apis/createCatalog.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/apis/createGroup.cjs +0 -48
- package/node_modules/zca-js/dist/cjs/apis/createNote.cjs +0 -52
- package/node_modules/zca-js/dist/cjs/apis/createPoll.cjs +0 -45
- package/node_modules/zca-js/dist/cjs/apis/createProductCatalog.cjs +0 -55
- package/node_modules/zca-js/dist/cjs/apis/createReminder.cjs +0 -77
- package/node_modules/zca-js/dist/cjs/apis/custom.cjs +0 -19
- package/node_modules/zca-js/dist/cjs/apis/deleteAutoReply.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/apis/deleteAvatar.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/deleteBankAccount.cjs +0 -37
- package/node_modules/zca-js/dist/cjs/apis/deleteCatalog.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/deleteChat.cjs +0 -64
- package/node_modules/zca-js/dist/cjs/apis/deleteGroupInviteBox.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/deleteMessage.cjs +0 -66
- package/node_modules/zca-js/dist/cjs/apis/deleteProductCatalog.cjs +0 -36
- package/node_modules/zca-js/dist/cjs/apis/disableGroupLink.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/disperseGroup.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/editNote.cjs +0 -51
- package/node_modules/zca-js/dist/cjs/apis/editReminder.cjs +0 -75
- package/node_modules/zca-js/dist/cjs/apis/enableGroupLink.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/fetchAccountInfo.cjs +0 -15
- package/node_modules/zca-js/dist/cjs/apis/findUser.cjs +0 -56
- package/node_modules/zca-js/dist/cjs/apis/findUserByUsername.cjs +0 -41
- package/node_modules/zca-js/dist/cjs/apis/forwardMessage.cjs +0 -129
- package/node_modules/zca-js/dist/cjs/apis/getAliasList.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/getAllFriends.cjs +0 -48
- package/node_modules/zca-js/dist/cjs/apis/getAllGroups.cjs +0 -15
- package/node_modules/zca-js/dist/cjs/apis/getArchivedChatList.cjs +0 -28
- package/node_modules/zca-js/dist/cjs/apis/getAutoDeleteChat.cjs +0 -26
- package/node_modules/zca-js/dist/cjs/apis/getAutoReplyList.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getAvatarList.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/getAvatarUrlProfile.cjs +0 -44
- package/node_modules/zca-js/dist/cjs/apis/getBizAccount.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/getCatalogList.cjs +0 -37
- package/node_modules/zca-js/dist/cjs/apis/getCloseFriends.cjs +0 -25
- package/node_modules/zca-js/dist/cjs/apis/getContext.cjs +0 -9
- package/node_modules/zca-js/dist/cjs/apis/getCookie.cjs +0 -14
- package/node_modules/zca-js/dist/cjs/apis/getFriendBoardList.cjs +0 -31
- package/node_modules/zca-js/dist/cjs/apis/getFriendOnlines.cjs +0 -40
- package/node_modules/zca-js/dist/cjs/apis/getFriendRecommendations.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/getFriendRequestStatus.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/getFullAvatar.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/getGroupBlockedMember.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/apis/getGroupChatHistory.cjs +0 -51
- package/node_modules/zca-js/dist/cjs/apis/getGroupInfo.cjs +0 -37
- package/node_modules/zca-js/dist/cjs/apis/getGroupInviteBoxInfo.cjs +0 -43
- package/node_modules/zca-js/dist/cjs/apis/getGroupInviteBoxList.cjs +0 -36
- package/node_modules/zca-js/dist/cjs/apis/getGroupLinkDetail.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/getGroupLinkInfo.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/getGroupMembersInfo.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getHiddenConversations.cjs +0 -28
- package/node_modules/zca-js/dist/cjs/apis/getLabels.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/getListBank.cjs +0 -25
- package/node_modules/zca-js/dist/cjs/apis/getListBankAccount.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/getListBoard.cjs +0 -59
- package/node_modules/zca-js/dist/cjs/apis/getListDevice.cjs +0 -27
- package/node_modules/zca-js/dist/cjs/apis/getListReminder.cjs +0 -61
- package/node_modules/zca-js/dist/cjs/apis/getMultiUsersByPhones.cjs +0 -53
- package/node_modules/zca-js/dist/cjs/apis/getMute.cjs +0 -27
- package/node_modules/zca-js/dist/cjs/apis/getOwnId.cjs +0 -9
- package/node_modules/zca-js/dist/cjs/apis/getPendingGroupMembers.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/getPinConversations.cjs +0 -27
- package/node_modules/zca-js/dist/cjs/apis/getPollDetail.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/getProductCatalogList.cjs +0 -38
- package/node_modules/zca-js/dist/cjs/apis/getQR.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/apis/getQuickMessageList.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getRelatedFriendGroup.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/getReminder.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/getReminderResponses.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getSentFriendRequest.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getSettings.cjs +0 -25
- package/node_modules/zca-js/dist/cjs/apis/getStickerCategoryDetail.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/getStickers.cjs +0 -45
- package/node_modules/zca-js/dist/cjs/apis/getStickersDetail.cjs +0 -45
- package/node_modules/zca-js/dist/cjs/apis/getUnreadMark.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/getUserInfo.cjs +0 -58
- package/node_modules/zca-js/dist/cjs/apis/inviteUserToGroups.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/joinGroupInviteBox.cjs +0 -30
- package/node_modules/zca-js/dist/cjs/apis/joinGroupLink.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/keepAlive.cjs +0 -27
- package/node_modules/zca-js/dist/cjs/apis/lastOnline.cjs +0 -31
- package/node_modules/zca-js/dist/cjs/apis/leaveGroup.cjs +0 -38
- package/node_modules/zca-js/dist/cjs/apis/listen.cjs +0 -440
- package/node_modules/zca-js/dist/cjs/apis/lockPoll.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/login.cjs +0 -102
- package/node_modules/zca-js/dist/cjs/apis/loginQR.cjs +0 -368
- package/node_modules/zca-js/dist/cjs/apis/logoutV2.cjs +0 -83
- package/node_modules/zca-js/dist/cjs/apis/lostFocus.cjs +0 -28
- package/node_modules/zca-js/dist/cjs/apis/parseLink.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/registerCatalog.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/rejectFriendRequest.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/removeFriend.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/removeFriendAlias.cjs +0 -29
- package/node_modules/zca-js/dist/cjs/apis/removeGroupBlockedMember.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/removeGroupDeputy.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/removeQuickMessage.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/removeReminder.cjs +0 -54
- package/node_modules/zca-js/dist/cjs/apis/removeUnreadMark.cjs +0 -64
- package/node_modules/zca-js/dist/cjs/apis/removeUserFromGroup.cjs +0 -39
- package/node_modules/zca-js/dist/cjs/apis/resetHiddenConversPin.cjs +0 -25
- package/node_modules/zca-js/dist/cjs/apis/reuseAvatar.cjs +0 -31
- package/node_modules/zca-js/dist/cjs/apis/reviewPendingMemberRequest.cjs +0 -43
- package/node_modules/zca-js/dist/cjs/apis/scanURL.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/searchSticker.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/sendBankCard.cjs +0 -68
- package/node_modules/zca-js/dist/cjs/apis/sendCard.cjs +0 -89
- package/node_modules/zca-js/dist/cjs/apis/sendDeliveredEvent.cjs +0 -69
- package/node_modules/zca-js/dist/cjs/apis/sendFriendRequest.cjs +0 -44
- package/node_modules/zca-js/dist/cjs/apis/sendLink.cjs +0 -92
- package/node_modules/zca-js/dist/cjs/apis/sendMessage.cjs +0 -500
- package/node_modules/zca-js/dist/cjs/apis/sendReport.cjs +0 -67
- package/node_modules/zca-js/dist/cjs/apis/sendSeenEvent.cjs +0 -77
- package/node_modules/zca-js/dist/cjs/apis/sendSticker.cjs +0 -88
- package/node_modules/zca-js/dist/cjs/apis/sendTypingEvent.cjs +0 -47
- package/node_modules/zca-js/dist/cjs/apis/sendVideo.cjs +0 -148
- package/node_modules/zca-js/dist/cjs/apis/sendVoice.cjs +0 -103
- package/node_modules/zca-js/dist/cjs/apis/setHiddenConversations.cjs +0 -53
- package/node_modules/zca-js/dist/cjs/apis/setMute.cjs +0 -81
- package/node_modules/zca-js/dist/cjs/apis/setPinnedConversations.cjs +0 -48
- package/node_modules/zca-js/dist/cjs/apis/sharePoll.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/unblockUser.cjs +0 -33
- package/node_modules/zca-js/dist/cjs/apis/undo.cjs +0 -56
- package/node_modules/zca-js/dist/cjs/apis/undoFriendRequest.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/updateActiveStatus.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/updateArchivedChatList.cjs +0 -39
- package/node_modules/zca-js/dist/cjs/apis/updateAutoDeleteChat.cjs +0 -54
- package/node_modules/zca-js/dist/cjs/apis/updateAutoReply.cjs +0 -43
- package/node_modules/zca-js/dist/cjs/apis/updateBankAccount.cjs +0 -36
- package/node_modules/zca-js/dist/cjs/apis/updateCatalog.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/updateGroupSettings.cjs +0 -48
- package/node_modules/zca-js/dist/cjs/apis/updateHiddenConversPin.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/updateLabels.cjs +0 -39
- package/node_modules/zca-js/dist/cjs/apis/updateLang.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/apis/updateProductCatalog.cjs +0 -56
- package/node_modules/zca-js/dist/cjs/apis/updateProfile.cjs +0 -48
- package/node_modules/zca-js/dist/cjs/apis/updateProfileBio.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/updateQuickMessage.cjs +0 -66
- package/node_modules/zca-js/dist/cjs/apis/updateSettings.cjs +0 -95
- package/node_modules/zca-js/dist/cjs/apis/upgradeGroupToCommunity.cjs +0 -32
- package/node_modules/zca-js/dist/cjs/apis/uploadAttachment.cjs +0 -211
- package/node_modules/zca-js/dist/cjs/apis/uploadProductPhoto.cjs +0 -55
- package/node_modules/zca-js/dist/cjs/apis/votePoll.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/apis.cjs +0 -324
- package/node_modules/zca-js/dist/cjs/context.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/index.cjs +0 -159
- package/node_modules/zca-js/dist/cjs/models/AutoReply.cjs +0 -9
- package/node_modules/zca-js/dist/cjs/models/Bank.cjs +0 -263
- package/node_modules/zca-js/dist/cjs/models/Board.cjs +0 -8
- package/node_modules/zca-js/dist/cjs/models/DeliveredMessage.cjs +0 -23
- package/node_modules/zca-js/dist/cjs/models/Enum.cjs +0 -27
- package/node_modules/zca-js/dist/cjs/models/FriendEvent.cjs +0 -87
- package/node_modules/zca-js/dist/cjs/models/Group.cjs +0 -13
- package/node_modules/zca-js/dist/cjs/models/GroupEvent.cjs +0 -94
- package/node_modules/zca-js/dist/cjs/models/Message.cjs +0 -35
- package/node_modules/zca-js/dist/cjs/models/Reaction.cjs +0 -74
- package/node_modules/zca-js/dist/cjs/models/Reminder.cjs +0 -9
- package/node_modules/zca-js/dist/cjs/models/SeenMessage.cjs +0 -23
- package/node_modules/zca-js/dist/cjs/models/Typing.cjs +0 -23
- package/node_modules/zca-js/dist/cjs/models/Undo.cjs +0 -16
- package/node_modules/zca-js/dist/cjs/models/ZBusiness.cjs +0 -39
- package/node_modules/zca-js/dist/cjs/update.cjs +0 -34
- package/node_modules/zca-js/dist/cjs/utils.cjs +0 -703
- package/node_modules/zca-js/dist/cjs/zalo.cjs +0 -112
- package/node_modules/zca-js/dist/context.d.ts +0 -179
- package/node_modules/zca-js/dist/context.js +0 -28
- package/node_modules/zca-js/dist/index.d.ts +0 -166
- package/node_modules/zca-js/dist/index.js +0 -14
- package/node_modules/zca-js/dist/models/Attachment.d.ts +0 -9
- package/node_modules/zca-js/dist/models/Attachment.js +0 -1
- package/node_modules/zca-js/dist/models/AutoReply.d.ts +0 -20
- package/node_modules/zca-js/dist/models/AutoReply.js +0 -7
- package/node_modules/zca-js/dist/models/Bank.d.ts +0 -291
- package/node_modules/zca-js/dist/models/Bank.js +0 -262
- package/node_modules/zca-js/dist/models/Board.d.ts +0 -60
- package/node_modules/zca-js/dist/models/Board.js +0 -6
- package/node_modules/zca-js/dist/models/Catalog.d.ts +0 -16
- package/node_modules/zca-js/dist/models/Catalog.js +0 -1
- package/node_modules/zca-js/dist/models/DeliveredMessage.d.ts +0 -27
- package/node_modules/zca-js/dist/models/DeliveredMessage.js +0 -17
- package/node_modules/zca-js/dist/models/Enum.d.ts +0 -21
- package/node_modules/zca-js/dist/models/Enum.js +0 -25
- package/node_modules/zca-js/dist/models/FriendEvent.d.ts +0 -107
- package/node_modules/zca-js/dist/models/FriendEvent.js +0 -83
- package/node_modules/zca-js/dist/models/Group.d.ts +0 -125
- package/node_modules/zca-js/dist/models/Group.js +0 -11
- package/node_modules/zca-js/dist/models/GroupEvent.d.ts +0 -178
- package/node_modules/zca-js/dist/models/GroupEvent.js +0 -90
- package/node_modules/zca-js/dist/models/Label.d.ts +0 -10
- package/node_modules/zca-js/dist/models/Label.js +0 -1
- package/node_modules/zca-js/dist/models/Message.d.ts +0 -91
- package/node_modules/zca-js/dist/models/Message.js +0 -29
- package/node_modules/zca-js/dist/models/ProductCatalog.d.ts +0 -17
- package/node_modules/zca-js/dist/models/ProductCatalog.js +0 -1
- package/node_modules/zca-js/dist/models/QuickMessage.d.ts +0 -25
- package/node_modules/zca-js/dist/models/QuickMessage.js +0 -1
- package/node_modules/zca-js/dist/models/Reaction.d.ts +0 -85
- package/node_modules/zca-js/dist/models/Reaction.js +0 -70
- package/node_modules/zca-js/dist/models/Reminder.d.ts +0 -51
- package/node_modules/zca-js/dist/models/Reminder.js +0 -7
- package/node_modules/zca-js/dist/models/SeenMessage.d.ts +0 -26
- package/node_modules/zca-js/dist/models/SeenMessage.js +0 -17
- package/node_modules/zca-js/dist/models/Sticker.d.ts +0 -27
- package/node_modules/zca-js/dist/models/Sticker.js +0 -1
- package/node_modules/zca-js/dist/models/Typing.d.ts +0 -24
- package/node_modules/zca-js/dist/models/Typing.js +0 -17
- package/node_modules/zca-js/dist/models/Undo.d.ts +0 -34
- package/node_modules/zca-js/dist/models/Undo.js +0 -12
- package/node_modules/zca-js/dist/models/User.d.ts +0 -70
- package/node_modules/zca-js/dist/models/User.js +0 -1
- package/node_modules/zca-js/dist/models/ZBusiness.d.ts +0 -22
- package/node_modules/zca-js/dist/models/ZBusiness.js +0 -35
- package/node_modules/zca-js/dist/models/index.d.ts +0 -22
- package/node_modules/zca-js/dist/models/index.js +0 -22
- package/node_modules/zca-js/dist/update.d.ts +0 -2
- package/node_modules/zca-js/dist/update.js +0 -29
- package/node_modules/zca-js/dist/utils.d.ts +0 -167
- package/node_modules/zca-js/dist/utils.js +0 -719
- package/node_modules/zca-js/dist/zalo.d.ts +0 -41
- package/node_modules/zca-js/dist/zalo.js +0 -107
- package/node_modules/zca-js/eslint.config.js +0 -21
- package/node_modules/zca-js/index.d.ts +0 -2
- package/node_modules/zca-js/package.json +0 -78
- package/node_modules/zca-js/rollup.config.js +0 -28
- package/patches/zca-js+2.2.0.patch +0 -1445
- package/src/cli.test.js +0 -127
- package/src/core/forward.js +0 -112
- package/src/core/group-history.js +0 -248
- package/src/core/group-invite.js +0 -53
- package/src/core/offline-queue.js +0 -194
- package/src/core/pin.js +0 -222
- package/src/core/socket-tap.js +0 -154
- package/src/core/sync-v2/assets.js +0 -181
- package/src/core/sync-v2/gid.js +0 -106
- package/src/core/sync-v2/keepalive.js +0 -177
- package/src/core/sync-v2/message-types.js +0 -522
- package/src/core/sync-v2/renewlink.js +0 -124
- package/src/core/sync-v2/zcloud-cipher.js +0 -88
- package/src/core/zca-custom.js +0 -78
- package/src/mcp/message-buffer.test.js +0 -360
- package/src/mcp/notifier.test.js +0 -275
- package/src/mcp/thread-filter.test.js +0 -206
- package/src/mcp/thread-name-cache.test.js +0 -142
- package/src/utils/atomic-file.js +0 -209
- package/src/utils/bank-helpers.test.js +0 -66
- package/src/utils/device-fingerprint.js +0 -72
- package/src/utils/mentions.js +0 -140
- package/src/utils/proxy-helpers.test.js +0 -36
- package/src/utils/split-message.js +0 -166
- package/src/utils/urgency.js +0 -29
- /package/src/{core → zalo/custom}/user-info.js +0 -0
- /package/src/{utils → zalo/format}/extract-message-text.js +0 -0
- /package/src/{utils → zalo/format}/markdown.js +0 -0
package/src/commands/mcp.js
CHANGED
|
@@ -10,11 +10,13 @@ import { readFileSync } from "fs";
|
|
|
10
10
|
import { join } from "path";
|
|
11
11
|
import { getApi, clearSession } from "../core/zalo-client.js";
|
|
12
12
|
import { liveApi } from "../core/live-api.js";
|
|
13
|
+
import { quotedReply, resolveReplyTo } from "../core/cached-message.js";
|
|
13
14
|
import { parseAccountId, selectDaemonAccount, loginDaemonAccount } from "../core/daemon-account.js";
|
|
14
15
|
import { updateAccountName } from "../core/accounts.js";
|
|
15
16
|
import { CONFIG_DIR, getAccountDir, MEDIA_DIR } from "../core/credentials.js";
|
|
16
17
|
import { createStartupGate, resolveStartupSettings } from "../core/startup-gate.js";
|
|
17
18
|
import { acquireLock, releaseLock } from "../core/lock.js";
|
|
19
|
+
import { startMediaMigration } from "../core/media-store.js";
|
|
18
20
|
import {
|
|
19
21
|
createStageLock,
|
|
20
22
|
startDaemonChannel,
|
|
@@ -30,14 +32,61 @@ import { success, error, info, output } from "../utils/output.js";
|
|
|
30
32
|
import { resolveWebhookSecret } from "../utils/secrets.js";
|
|
31
33
|
import { createSyncRunners } from "../core/daemon-sync.js";
|
|
32
34
|
import { createSocketContext, startEventLoopMonitor } from "../core/daemon-log.js";
|
|
33
|
-
import { setUserInfoLogger } from "../
|
|
35
|
+
import { setUserInfoLogger } from "../zalo/custom/user-info.js";
|
|
34
36
|
import { createSyncJobs } from "../mcp/sync-jobs.js";
|
|
35
|
-
import {
|
|
37
|
+
import { createMcpStageRunners } from "../mcp/sync-stages.js";
|
|
38
|
+
import { createSocketTap } from "../zalo/listener/socket-tap.js";
|
|
36
39
|
import { createSelfHeal } from "../core/self-heal.js";
|
|
40
|
+
import { createUndecryptableNotice } from "../core/e2ee-notice.js";
|
|
41
|
+
import { createCloudVerifier } from "../core/cloud-verify.js";
|
|
42
|
+
import { attachUnknownActs } from "../core/unknown-acts.js";
|
|
43
|
+
import { attachVoiceText, voiceTextFile } from "../core/voice-text.js";
|
|
37
44
|
import { createReadStateSync } from "../core/read-state.js";
|
|
38
|
-
import {
|
|
45
|
+
import { attachLastOnline } from "../core/last-online.js";
|
|
46
|
+
import { attachControlEvents } from "../core/control-events.js";
|
|
47
|
+
import { attachHiddenChatControls, hiddenChatsFor, hiddenEventView } from "../core/hidden-chats.js";
|
|
48
|
+
import {
|
|
49
|
+
resolveApproval,
|
|
50
|
+
resolveHiddenChats,
|
|
51
|
+
resolveMediaDelivery,
|
|
52
|
+
resolveMediaLinkAuth,
|
|
53
|
+
resolvePublicUrl,
|
|
54
|
+
resolveTrustedProxies,
|
|
55
|
+
} from "../core/deploy-policy.js";
|
|
56
|
+
import { getMediaLinks, linkForCachedMessage, startTempfileSweeper } from "../core/media-deliver.js";
|
|
57
|
+
import { ensureMediaServed } from "../core/media-route.js";
|
|
58
|
+
import { scopeOfDir } from "../core/keystore/keyring.js";
|
|
59
|
+
import { approverStatus } from "../core/approval.js";
|
|
60
|
+
import { resolveConfirmMode } from "../core/confirm-guard.js";
|
|
61
|
+
import { getSecurePage } from "../core/secure-page.js";
|
|
62
|
+
import { getQrPage } from "../utils/qr-http-server.js";
|
|
63
|
+
import { readControls } from "../zalo/queues/control-queue.js";
|
|
64
|
+
import {
|
|
65
|
+
clearSyncState,
|
|
66
|
+
dbUsedBytes,
|
|
67
|
+
initDb,
|
|
68
|
+
getMessageById,
|
|
69
|
+
getPendingSyncGaps,
|
|
70
|
+
getSyncState,
|
|
71
|
+
getThreadNames,
|
|
72
|
+
setSyncState,
|
|
73
|
+
} from "../core/db.js";
|
|
39
74
|
import { SyncManager } from "../core/sync.js";
|
|
40
|
-
import {
|
|
75
|
+
import {
|
|
76
|
+
alarmingGapCount,
|
|
77
|
+
createGapTracker,
|
|
78
|
+
HEARTBEAT_MS,
|
|
79
|
+
IDLE_GAP_REASON,
|
|
80
|
+
PARKED_AT_KEY,
|
|
81
|
+
startupGapReason,
|
|
82
|
+
} from "../core/listener-lifecycle.js";
|
|
83
|
+
import { createDaemonPresence, presenceTransport, resolveDaemonPresence } from "../core/daemon-presence.js";
|
|
84
|
+
import {
|
|
85
|
+
accountStateSystemEvent,
|
|
86
|
+
createAccountStateTracker,
|
|
87
|
+
createBufferStateFilter,
|
|
88
|
+
describeAccountState,
|
|
89
|
+
} from "../core/account-state.js";
|
|
41
90
|
import {
|
|
42
91
|
storeLiveMessage,
|
|
43
92
|
refreshLiveMessageIdentities,
|
|
@@ -49,8 +98,8 @@ import {
|
|
|
49
98
|
storeReceipts,
|
|
50
99
|
} from "../core/live-store.js";
|
|
51
100
|
import { downloadSyncedMedia } from "../core/sync-v2/media.js";
|
|
52
|
-
import { classifyLiveMessage } from "../
|
|
53
|
-
import { createDeliveredReceipts } from "../
|
|
101
|
+
import { classifyLiveMessage } from "../zalo/transfer-sync/message-types.js";
|
|
102
|
+
import { createDeliveredReceipts } from "../zalo/receipts.js";
|
|
54
103
|
import { MessageBuffer } from "../mcp/message-buffer.js";
|
|
55
104
|
import { ThreadFilter } from "../mcp/thread-filter.js";
|
|
56
105
|
import {
|
|
@@ -59,29 +108,44 @@ import {
|
|
|
59
108
|
envForAccount,
|
|
60
109
|
parseDuration,
|
|
61
110
|
resolveWebhookDelivery,
|
|
111
|
+
resolveWebhookUrl,
|
|
62
112
|
} from "../mcp/mcp-config.js";
|
|
63
|
-
import { startWebhookDelivery } from "../core/webhook-outbox.js";
|
|
64
|
-
import { batchParams, waitResult,
|
|
113
|
+
import { purgeDeadDeliveries, startWebhookDelivery } from "../core/webhook-outbox.js";
|
|
114
|
+
import { batchParams, waitResult, MAX_SETTLE_MS } from "../mcp/wait-result.js";
|
|
65
115
|
import { createDaemonHealth, describeHealth } from "../core/daemon-health.js";
|
|
116
|
+
import { describeSessionExpiry, sessionExpiryFor } from "../core/session-expiry.js";
|
|
117
|
+
import {
|
|
118
|
+
describeSessionExpiring,
|
|
119
|
+
sessionExpiringSystemEvent,
|
|
120
|
+
startSessionExpiryWatch,
|
|
121
|
+
} from "../core/session-notice.js";
|
|
122
|
+
import { createSocketHost, EXIT_CODE } from "../core/socket-host.js";
|
|
123
|
+
import { kickFile } from "../core/kick-marker.js";
|
|
66
124
|
import { DEBUG_MARK, LOG_LEVELS } from "../core/log-sink.js";
|
|
67
125
|
import { registerMCPWebhookCommands } from "./mcp-webhook.js";
|
|
126
|
+
import { registerMCPApproverCommand } from "./mcp-approver.js";
|
|
68
127
|
import { createMCPServer } from "../mcp/mcp-server.js";
|
|
69
128
|
import { registerTools } from "../mcp/mcp-tools.js";
|
|
70
129
|
import { createHTTPServer } from "../mcp/mcp-http-transport.js";
|
|
130
|
+
import { createAdminApi, resolveAdminCredentials } from "../core/admin-api.js";
|
|
131
|
+
import { createExportApi } from "../core/data-export.js";
|
|
132
|
+
import { servePolicyRequest, startPolicyRuntime, touches } from "../core/policy-store.js";
|
|
133
|
+
import { describeQuotaEvent, describeStorage, quotaSystemEvent, startStorageJobs } from "../core/storage-quota.js";
|
|
134
|
+
import { applyGroupExit, describeGroupGone, groupGoneSystemEvent, setGroupGoneSink } from "../core/group-exit.js";
|
|
71
135
|
import { ZaloNotifier } from "../mcp/notifier.js";
|
|
136
|
+
import { deviceSinceOf } from "../core/device-since.js";
|
|
137
|
+
import { describeQueueOverflow, queueOverflowSystemEvent } from "../core/overflow-repair.js";
|
|
72
138
|
import { ThreadNameCache } from "../mcp/thread-name-cache.js";
|
|
139
|
+
import { senderNameFields, startDaemonAliases } from "../core/contact-names.js";
|
|
73
140
|
|
|
74
141
|
const PKG_VERSION = JSON.parse(readFileSync(join(import.meta.dirname, "..", "..", "package.json"), "utf8")).version;
|
|
75
142
|
|
|
76
|
-
/** Zalo close code for duplicate web session — fatal, do not retry */
|
|
77
|
-
const CLOSE_DUPLICATE = 3000;
|
|
78
|
-
|
|
79
143
|
/** Sync2.Message.MessageStatus values carried by live receipts. */
|
|
80
144
|
const STATUS_RECEIVED = 4;
|
|
81
145
|
const STATUS_SEEN = 5;
|
|
82
146
|
|
|
83
147
|
/**
|
|
84
|
-
* Normalize a raw
|
|
148
|
+
* Normalize a raw listener message event into the buffer's message shape.
|
|
85
149
|
*
|
|
86
150
|
* Classification comes from the shared `classifyLiveMessage`, the same
|
|
87
151
|
* function the listener and the mobile sync use, so an agent reading
|
|
@@ -90,7 +154,7 @@ const STATUS_SEEN = 5;
|
|
|
90
154
|
* raw `chat.photo` strings this used to emit, which never matched anything
|
|
91
155
|
* else in the tool.
|
|
92
156
|
*
|
|
93
|
-
* @param {object} msg - Raw
|
|
157
|
+
* @param {object} msg - Raw listener message event
|
|
94
158
|
* @param {object} [info] - Pre-computed classification, when the caller has one
|
|
95
159
|
* @returns {object} Normalized message
|
|
96
160
|
*/
|
|
@@ -99,14 +163,15 @@ export function normalizeMessage(msg, info = null) {
|
|
|
99
163
|
const cls = info || classifyLiveMessage(data);
|
|
100
164
|
const media = cls.attachments.find((a) => a.url || a.thumbUrl) || null;
|
|
101
165
|
return {
|
|
102
|
-
// `msgId
|
|
103
|
-
// that already read it (the webhook and /events/wait payloads carry both).
|
|
166
|
+
// `msgId`, the name every tool takes and every reply uses (3.0 dropped the older `id`).
|
|
104
167
|
msgId: data.msgId,
|
|
105
|
-
id:
|
|
168
|
+
// The id the sender's client gave it: a reply from the phone names the message it quotes by this one.
|
|
169
|
+
cliMsgId: data.cliMsgId ? String(data.cliMsgId) : null,
|
|
106
170
|
threadId: msg.threadId,
|
|
107
171
|
threadType: msg.type === 0 ? "dm" : "group",
|
|
108
172
|
senderId: data.uidFrom || null,
|
|
109
|
-
|
|
173
|
+
// Alias first, as Zalo shows the sender to this account; `senderZaloName` is the name the message carried.
|
|
174
|
+
...senderNameFields(data.uidFrom, data.dName),
|
|
110
175
|
text: cls.text,
|
|
111
176
|
// The message's own timestamp, not the moment we happened to process
|
|
112
177
|
// it: buffer eviction is age-based, and Date.now() made every message
|
|
@@ -118,9 +183,43 @@ export function normalizeMessage(msg, info = null) {
|
|
|
118
183
|
type: cls.type,
|
|
119
184
|
url: media.url || media.thumbUrl || null,
|
|
120
185
|
description: media.title || null,
|
|
121
|
-
localPath: null,
|
|
122
186
|
}
|
|
123
187
|
: null,
|
|
188
|
+
// What this message replies to, so an agent can tell what "look at this" points at (bug-reports #8).
|
|
189
|
+
replyTo: resolveReplyTo(quotedReply(data.quote), msg.threadId),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Normalize a listener `undo` (recall) event into the same shape as a buffered message, so a
|
|
195
|
+
* long-poll waiter wakes for it and zalo_get_messages lists it in order with the messages.
|
|
196
|
+
*
|
|
197
|
+
* `msgId` is the RECALLED message (what every tool calls a message), not the notification's own
|
|
198
|
+
* id: an agent reading `{ type: "undo", msgId }` knows which earlier message is gone. The
|
|
199
|
+
* target is named inside `content` (see storeLiveUndo); a recall that names neither a global nor
|
|
200
|
+
* a client id cannot be attributed and is not normalized.
|
|
201
|
+
*
|
|
202
|
+
* @param {object} undo - Raw listener undo event
|
|
203
|
+
* @returns {object|null} Normalized recall event, or null when it names no message
|
|
204
|
+
*/
|
|
205
|
+
export function normalizeUndo(undo) {
|
|
206
|
+
const data = undo?.data || {};
|
|
207
|
+
const content = data.content || {};
|
|
208
|
+
const target = content.globalMsgId && Number(content.globalMsgId) !== 0 ? String(content.globalMsgId) : null;
|
|
209
|
+
const cliMsgId = content.cliMsgId && Number(content.cliMsgId) !== 0 ? String(content.cliMsgId) : null;
|
|
210
|
+
if (!target && !cliMsgId) return null;
|
|
211
|
+
return {
|
|
212
|
+
msgId: target,
|
|
213
|
+
cliMsgId,
|
|
214
|
+
threadId: undo.threadId,
|
|
215
|
+
threadType: undo.type === 0 ? "dm" : "group",
|
|
216
|
+
senderId: data.uidFrom || null,
|
|
217
|
+
// Alias first, as Zalo shows the sender to this account; `senderZaloName` is the name the message carried.
|
|
218
|
+
...senderNameFields(data.uidFrom, data.dName),
|
|
219
|
+
text: "",
|
|
220
|
+
timestamp: data.ts ? Number(data.ts) : Date.now(),
|
|
221
|
+
type: "undo",
|
|
222
|
+
attachment: null,
|
|
124
223
|
replyTo: null,
|
|
125
224
|
};
|
|
126
225
|
}
|
|
@@ -133,7 +232,7 @@ export function normalizeMessage(msg, info = null) {
|
|
|
133
232
|
* @returns {object}
|
|
134
233
|
*/
|
|
135
234
|
export function buildMCPWebhookPayload(message, extra = {}) {
|
|
136
|
-
return { event: "message", ...extra, ...message };
|
|
235
|
+
return { event: message?.type === "undo" ? "undo" : "message", ...extra, ...message };
|
|
137
236
|
}
|
|
138
237
|
|
|
139
238
|
/**
|
|
@@ -171,6 +270,45 @@ export async function postMCPWebhook(webhookUrl, message, extra = {}, fetchFn =
|
|
|
171
270
|
}
|
|
172
271
|
}
|
|
173
272
|
|
|
273
|
+
/**
|
|
274
|
+
* The start-up warnings about how one-time pages reach a person (src/core/approval.js): a webhook delivery with no
|
|
275
|
+
* webhook, and, under confirmMode "human", an approve link that reaches the agent and asks only for a click (an agent
|
|
276
|
+
* that can open a link could approve its own action). Printed once, at start-up.
|
|
277
|
+
*
|
|
278
|
+
* @param {object} opts
|
|
279
|
+
* @param {object} opts.config - the MCP config
|
|
280
|
+
* @param {string} opts.accountId
|
|
281
|
+
* @param {string|null} opts.accountDir
|
|
282
|
+
* @param {boolean} opts.hasWebhook
|
|
283
|
+
* @param {NodeJS.ProcessEnv} [opts.env]
|
|
284
|
+
* @param {(line: string) => void} [opts.log]
|
|
285
|
+
* @returns {string[]} the lines printed
|
|
286
|
+
*/
|
|
287
|
+
export function warnApprovalPolicy({ config, accountId, accountDir, hasWebhook, env = process.env, log }) {
|
|
288
|
+
const approval = resolveApproval({ config, env, accountId });
|
|
289
|
+
const lines = [];
|
|
290
|
+
if (approval.deliver !== "result" && !hasWebhook) {
|
|
291
|
+
lines.push(
|
|
292
|
+
`approval.deliver is "${approval.deliver}" (${approval.deliverSource}) but no webhook is set: ` +
|
|
293
|
+
(approval.deliver === "webhook"
|
|
294
|
+
? "every approve and PIN page will be refused until one is."
|
|
295
|
+
: "links go in the tool result only."),
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
const { mode } = resolveConfirmMode({ config, env, accountId });
|
|
299
|
+
const linkReachesAgent = approval.deliver !== "webhook";
|
|
300
|
+
const clickOnly = approval.secret === "none" || (approval.secret === "auto" && !approverStatus(accountDir).set);
|
|
301
|
+
if (mode === "human" && linkReachesAgent && clickOnly) {
|
|
302
|
+
lines.push(
|
|
303
|
+
'confirmMode is "human" and approve links reach the agent with no approver secret: an agent that can ' +
|
|
304
|
+
"open a link could approve its own action. Set an approver password (`zalo-agent mcp approver set`), " +
|
|
305
|
+
'or approval.secret "pin", or approval.deliver "webhook".',
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
for (const line of lines) (log ?? ((l) => console.error(`[mcp] WARNING: ${l}`)))(line);
|
|
309
|
+
return lines;
|
|
310
|
+
}
|
|
311
|
+
|
|
174
312
|
/**
|
|
175
313
|
* Validate and load TLS certificate & private key buffers from paths.
|
|
176
314
|
* @param {string|null|undefined} rawCert
|
|
@@ -234,9 +372,10 @@ export function registerMCPCommands(program) {
|
|
|
234
372
|
"OAuth 2.0 Client Secret (defaults to --auth / ZALO_MCP_AUTH_TOKEN, or ZALO_MCP_OAUTH_CLIENT_SECRET)",
|
|
235
373
|
)
|
|
236
374
|
.option(
|
|
237
|
-
"--
|
|
238
|
-
"
|
|
375
|
+
"--public-url <url>",
|
|
376
|
+
"The one public address of this server behind a reverse proxy or TLS terminator (e.g. https://zalo.example.com): the MCP endpoint, the OAuth issuer, and the links to the one-time secure and QR pages. https, or http on localhost; an optional base path. Or ZALO_MCP_PUBLIC_URL[_<ownId>] / publicUrl in mcp-config.json. Default: links use this server's local address and OAuth infers its issuer from the request",
|
|
239
377
|
)
|
|
378
|
+
.option("--issuer-url <url>", "Deprecated name of --public-url (still works)")
|
|
240
379
|
.option(
|
|
241
380
|
"-w, --webhook <url>",
|
|
242
381
|
"POST each watched incoming message as JSON to this URL (or set webhook in mcp-config.json)",
|
|
@@ -251,7 +390,7 @@ export function registerMCPCommands(program) {
|
|
|
251
390
|
)
|
|
252
391
|
.option(
|
|
253
392
|
"--no-self-heal",
|
|
254
|
-
"Do not pull what a dropped socket missed from Zalo's offline queue on reconnect (the default does, as Zalo
|
|
393
|
+
"Do not pull what a dropped socket missed from Zalo's offline queue on reconnect (the default does, as Zalo does, on this socket and with no phone tap)",
|
|
255
394
|
)
|
|
256
395
|
.option(
|
|
257
396
|
"--log-level <level>",
|
|
@@ -385,6 +524,31 @@ export function registerMCPCommands(program) {
|
|
|
385
524
|
const effectiveHttpPort =
|
|
386
525
|
opts.http ?? envForAccount("ZALO_MCP_HTTP_PORT", activeAcc.ownId) ?? config?.httpPort ?? null;
|
|
387
526
|
|
|
527
|
+
// On-demand presence (src/core/daemon-presence.js): stdio MCP is always-on, --http follows the settings.
|
|
528
|
+
// On-demand without the self-heal would lose what arrives while parked, so that pair is refused here,
|
|
529
|
+
// before anything logs in (and before a background daemon is spawned).
|
|
530
|
+
const presenceRole = presenceTransport({ command: "mcp", http: Boolean(effectiveHttpPort) });
|
|
531
|
+
const presenceCheck = resolveDaemonPresence({
|
|
532
|
+
config,
|
|
533
|
+
ownId: activeAcc.ownId,
|
|
534
|
+
transport: presenceRole,
|
|
535
|
+
selfHeal: opts.selfHeal !== false,
|
|
536
|
+
});
|
|
537
|
+
if (presenceCheck.problem) failStart(`Refusing to start: ${presenceCheck.problem}`);
|
|
538
|
+
|
|
539
|
+
// One public address for the MCP endpoint, the OAuth issuer and every link this server hands out
|
|
540
|
+
// (src/core/deploy-policy.js); --issuer-url, ZALO_MCP_ISSUER_URL and oauth.issuerUrl are its 2.x names.
|
|
541
|
+
// Only the HTTP transport uses it; a value that cannot be used is refused here, before a daemon is spawned.
|
|
542
|
+
const publicUrl = effectiveHttpPort
|
|
543
|
+
? resolvePublicUrl({
|
|
544
|
+
flag: opts.publicUrl,
|
|
545
|
+
issuerFlag: opts.issuerUrl,
|
|
546
|
+
config,
|
|
547
|
+
accountId: activeAcc.ownId,
|
|
548
|
+
})
|
|
549
|
+
: { publicUrl: null, source: "default", error: null };
|
|
550
|
+
if (publicUrl.error) failStart(`Refusing to start: ${publicUrl.error}.`);
|
|
551
|
+
|
|
388
552
|
if (!tlsOptions) {
|
|
389
553
|
const acctCert = envForAccount("ZALO_MCP_TLS_CERT", activeAcc.ownId) ?? config?.tls?.cert;
|
|
390
554
|
const acctKey = envForAccount("ZALO_MCP_TLS_KEY", activeAcc.ownId) ?? config?.tls?.key;
|
|
@@ -440,7 +604,7 @@ export function registerMCPCommands(program) {
|
|
|
440
604
|
|
|
441
605
|
// Safety net: redirect ALL console.log to stderr for the entire MCP process.
|
|
442
606
|
// Stdout is the MCP JSON-RPC transport — any non-JSON output corrupts the stream.
|
|
443
|
-
// This catches rogue prints from dependencies (
|
|
607
|
+
// This catches rogue prints from dependencies (chalk, etc.) that we can't control.
|
|
444
608
|
console.log = (...args) => console.error(...args);
|
|
445
609
|
|
|
446
610
|
// This server now opens the account's WebSocket *and* writes to
|
|
@@ -498,6 +662,8 @@ export function registerMCPCommands(program) {
|
|
|
498
662
|
try {
|
|
499
663
|
initDb(join(accountDir, "zalo.db"));
|
|
500
664
|
console.error(`[mcp] Local cache: ${join(accountDir, "zalo.db")}`);
|
|
665
|
+
// Media a 2.x install downloaded is sealed in the background, a batch at a time (media-store.js).
|
|
666
|
+
startMediaMigration(activeAcc.ownId, { log: (l) => console.error(`[mcp] ${l}`) });
|
|
501
667
|
} catch (e) {
|
|
502
668
|
gate.leave();
|
|
503
669
|
dropLock();
|
|
@@ -505,21 +671,108 @@ export function registerMCPCommands(program) {
|
|
|
505
671
|
process.exit(1);
|
|
506
672
|
}
|
|
507
673
|
|
|
674
|
+
// The runtime policy (src/core/policy-store.js): read now, watched for file drops, changed live by the admin
|
|
675
|
+
// API and `policy set`. A policy file that cannot be used stops the start: it is never replaced by defaults.
|
|
676
|
+
let onPolicyChanged = () => {};
|
|
677
|
+
let policyRuntime;
|
|
678
|
+
try {
|
|
679
|
+
policyRuntime = startPolicyRuntime({
|
|
680
|
+
ownId: activeAcc.ownId,
|
|
681
|
+
onChange: (changed) => onPolicyChanged(changed),
|
|
682
|
+
log: (l) => console.error(`[mcp] ${l}`),
|
|
683
|
+
});
|
|
684
|
+
console.error(`[mcp] Runtime policy: ${policyRuntime.describe()}`);
|
|
685
|
+
} catch (e) {
|
|
686
|
+
gate.leave();
|
|
687
|
+
dropLock();
|
|
688
|
+
console.error(`[mcp] The runtime policy cannot be used: ${e.message}`);
|
|
689
|
+
process.exit(1);
|
|
690
|
+
}
|
|
691
|
+
|
|
508
692
|
console.error("[mcp] Config loaded:", JSON.stringify(config.limits));
|
|
509
693
|
|
|
510
694
|
// Build buffer + filter from config
|
|
511
695
|
const maxAge = parseDuration(config.limits?.bufferMaxAge ?? "2h");
|
|
512
696
|
const maxSize = config.limits?.bufferMaxSize ?? 500;
|
|
513
|
-
const buffer =
|
|
697
|
+
const buffer = MessageBuffer.forSession(maxSize, maxAge);
|
|
514
698
|
const filter = new ThreadFilter(config);
|
|
515
699
|
|
|
700
|
+
// The owner's aliases, which every reply, buffer line and webhook names people by: kept in the account's
|
|
701
|
+
// db, reread on an `alias` control and every 30 minutes (src/core/contact-names.js); the name cache's
|
|
702
|
+
// init below is the read at start. Same in `listen`.
|
|
703
|
+
const daemonAliases = startDaemonAliases({
|
|
704
|
+
getApi,
|
|
705
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
706
|
+
onOwnName: (name) => updateAccountName(activeAcc.ownId, name),
|
|
707
|
+
onRetitled: (titles) => {
|
|
708
|
+
for (const [id, name] of titles) nameCache.set(id, { name, type: "dm" });
|
|
709
|
+
},
|
|
710
|
+
});
|
|
516
711
|
// Build thread name cache (groups + friends → in-memory index)
|
|
517
712
|
const nameCache = new ThreadNameCache();
|
|
518
713
|
try {
|
|
519
|
-
await nameCache.init(getApi());
|
|
714
|
+
await nameCache.init(getApi(), { ownId: activeAcc.ownId });
|
|
520
715
|
} catch (e) {
|
|
521
716
|
console.error("[mcp] Thread name cache init failed (non-fatal):", e.message);
|
|
522
717
|
}
|
|
718
|
+
// The account's hidden chats (src/core/hidden-chats.js), read once now and kept current from the 601
|
|
719
|
+
// `hidden_chat` controls below; the deployment's hiddenChats policy decides what agents see of them.
|
|
720
|
+
const hidden = hiddenChatsFor(activeAcc.ownId, { stateDir: accountDir });
|
|
721
|
+
await hidden.ensure(getApi());
|
|
722
|
+
let hiddenPolicy = resolveHiddenChats({ config, accountId: activeAcc.ownId });
|
|
723
|
+
console.error(
|
|
724
|
+
`[mcp] Hidden chats: ${hiddenPolicy.mode} (${hiddenPolicy.source})` +
|
|
725
|
+
(hidden.known ? `, ${hidden.ids.size} hidden` : ", the hidden list could not be read yet"),
|
|
726
|
+
);
|
|
727
|
+
/** An event list as the policy shows it: hidden ones left out, or contentless. */
|
|
728
|
+
const hiddenEvents = (list) =>
|
|
729
|
+
list
|
|
730
|
+
.map((m) =>
|
|
731
|
+
hiddenEventView(m, hidden, hiddenPolicy.mode, {
|
|
732
|
+
name: m?.type === "undo" ? "undo" : "message",
|
|
733
|
+
}),
|
|
734
|
+
)
|
|
735
|
+
.filter(Boolean);
|
|
736
|
+
// The one-time secure input page (src/core/secure-page.js): this process's account, and, over --http,
|
|
737
|
+
// the public address a person's browser reaches it at.
|
|
738
|
+
const securePage = getSecurePage().configure({ accountId: activeAcc.ownId });
|
|
739
|
+
// The QR login page, served on the HTTP port when a login runs in this process (src/utils/qr-http-server.js).
|
|
740
|
+
const qrPage = getQrPage();
|
|
741
|
+
// Media links (src/core/media-deliver.js): the policy they are issued under. Over --http they are served
|
|
742
|
+
// on its port and point at publicUrl (below); under stdio a 127.0.0.1 listener serves them on first use.
|
|
743
|
+
let mediaPolicy = resolveMediaDelivery({ config, accountId: activeAcc.ownId });
|
|
744
|
+
let mediaAuth = resolveMediaLinkAuth({
|
|
745
|
+
config,
|
|
746
|
+
accountId: activeAcc.ownId,
|
|
747
|
+
publicUrl: effectiveHttpPort ? publicUrl.publicUrl : null,
|
|
748
|
+
});
|
|
749
|
+
const trustedProxies = resolveTrustedProxies({ config, accountId: activeAcc.ownId });
|
|
750
|
+
const mediaLinks = getMediaLinks().configure({
|
|
751
|
+
linkAuth: effectiveHttpPort ? mediaAuth.linkAuth : "capability",
|
|
752
|
+
maxClients: mediaAuth.maxClients,
|
|
753
|
+
clientTtlMs: mediaAuth.clientTtlMs,
|
|
754
|
+
ttlMs: mediaPolicy.linkTtlMs,
|
|
755
|
+
rateLimit: mediaPolicy.linkRateLimit,
|
|
756
|
+
trustedProxies,
|
|
757
|
+
log: (line) => console.error(line),
|
|
758
|
+
});
|
|
759
|
+
// A chat hidden while its links are out: they stop working at once (unless the policy shows hidden chats).
|
|
760
|
+
hidden.onChange((set) => {
|
|
761
|
+
// An export made before a chat was hidden holds it unmarked: its download stops (data-export.js).
|
|
762
|
+
const exports = mediaLinks.revokeWhere(
|
|
763
|
+
(l) => l.kind === "export" && [...set.ids].some((id) => !l.hiddenAtExport?.has(id)),
|
|
764
|
+
"a chat was hidden after the export was made",
|
|
765
|
+
);
|
|
766
|
+
if (exports) console.error(`[mcp] ${exports} export link(s) revoked: a chat was hidden since`);
|
|
767
|
+
if (hiddenPolicy.mode === "include") return;
|
|
768
|
+
const n = mediaLinks.revokeWhere(
|
|
769
|
+
(l) => l.threadId !== null && set.isHidden(l.threadId),
|
|
770
|
+
"its chat was hidden",
|
|
771
|
+
);
|
|
772
|
+
if (n) console.error(`[mcp] ${n} media link(s) revoked: their chat was hidden`);
|
|
773
|
+
});
|
|
774
|
+
// Decrypted copies a CLI command or a crash left behind expire on time while this daemon runs.
|
|
775
|
+
startTempfileSweeper({ ttlMs: mediaPolicy.tempfileTtlMs });
|
|
523
776
|
// Logged in and the friend and group lists are loaded: the heavy part of start-up is over.
|
|
524
777
|
gate.leave();
|
|
525
778
|
|
|
@@ -555,7 +808,13 @@ export function registerMCPCommands(program) {
|
|
|
555
808
|
}
|
|
556
809
|
},
|
|
557
810
|
});
|
|
558
|
-
|
|
811
|
+
// The media and board stages run in this server too (src/mcp/sync-stages.js), under the same lock.
|
|
812
|
+
const stageRunners = createMcpStageRunners({
|
|
813
|
+
getApi,
|
|
814
|
+
accountDir,
|
|
815
|
+
mediaRoot: MEDIA_DIR || config.media?.downloadDir || undefined,
|
|
816
|
+
});
|
|
817
|
+
const syncJobs = createSyncJobs({ runners: { ...syncRunners, ...stageRunners }, lock: stageLock });
|
|
559
818
|
syncJobs.onSelfName = onSelfName;
|
|
560
819
|
|
|
561
820
|
// What the tools and the notifier call. Not getApi()'s object:
|
|
@@ -566,6 +825,24 @@ export function registerMCPCommands(program) {
|
|
|
566
825
|
"The Zalo session is logging in again after a dropped connection; try again in a few seconds.",
|
|
567
826
|
});
|
|
568
827
|
|
|
828
|
+
// On-demand presence (src/core/daemon-presence.js), built below once the socket's parts exist. The tools,
|
|
829
|
+
// /events/wait and the CRM leases reach it through these doors, which the servers take now.
|
|
830
|
+
let daemonPresence = null;
|
|
831
|
+
const presenceDoor = {
|
|
832
|
+
admit: (o) =>
|
|
833
|
+
daemonPresence ? daemonPresence.admit(o) : Promise.resolve({ release: () => {}, warming: null }),
|
|
834
|
+
serve: (p) =>
|
|
835
|
+
daemonPresence
|
|
836
|
+
? daemonPresence.serve(p)
|
|
837
|
+
: Promise.reject(new Error("presence is not running yet; try again in a moment")),
|
|
838
|
+
};
|
|
839
|
+
const leaseDoor = {
|
|
840
|
+
handle: (req, res) =>
|
|
841
|
+
daemonPresence
|
|
842
|
+
? daemonPresence.leaseRoutes.handle(req, res)
|
|
843
|
+
: res.status(503).json({ error: "the server is starting; try again in a moment" }),
|
|
844
|
+
};
|
|
845
|
+
|
|
569
846
|
// Start MCP server — stdio (default) or HTTP/HTTPS
|
|
570
847
|
// What this daemon can say about itself: /health, /ready, /status and /metrics over HTTP, and
|
|
571
848
|
// `mcp start --status` over the loopback channel (src/core/daemon-health.js). The sources that do not
|
|
@@ -575,8 +852,13 @@ export function registerMCPCommands(program) {
|
|
|
575
852
|
const stats = buffer.getStats();
|
|
576
853
|
return { threads: stats.length, messages: stats.reduce((n, t) => n + t.total, 0) };
|
|
577
854
|
});
|
|
578
|
-
|
|
855
|
+
// Planned idle windows (on-demand presence) are not worth a warning; everything else is.
|
|
856
|
+
health.setSource("gaps", () => alarmingGapCount(getPendingSyncGaps()));
|
|
579
857
|
health.setSource("stage", () => stageLock.current());
|
|
858
|
+
health.setSource("session", () => sessionExpiryFor(activeAcc.ownId));
|
|
859
|
+
health.setSource("presence", () => daemonPresence?.snapshot() ?? null);
|
|
860
|
+
const sessionLine = describeSessionExpiry(sessionExpiryFor(activeAcc.ownId));
|
|
861
|
+
if (sessionLine) console.error(`[mcp] ${sessionLine}`);
|
|
580
862
|
|
|
581
863
|
let httpServer = null;
|
|
582
864
|
try {
|
|
@@ -589,7 +871,69 @@ export function registerMCPCommands(program) {
|
|
|
589
871
|
}
|
|
590
872
|
const host =
|
|
591
873
|
opts.host || envForAccount("ZALO_MCP_HOST", activeAcc.ownId) || config?.host || "127.0.0.1";
|
|
874
|
+
// The admin API (src/core/admin-api.js): its own credential, never the agent's.
|
|
875
|
+
const adminCreds = resolveAdminCredentials({ config, accountId: activeAcc.ownId });
|
|
876
|
+
for (const p of adminCreds.problems) console.error(`[mcp] WARNING: ${p}`);
|
|
877
|
+
let adminCa = null;
|
|
878
|
+
if (adminCreds.clientCaFile) {
|
|
879
|
+
if (!tlsOptions) {
|
|
880
|
+
console.error("[mcp] WARNING: admin.clientCa needs --cert and --key (HTTPS); mTLS is off");
|
|
881
|
+
} else {
|
|
882
|
+
try {
|
|
883
|
+
adminCa = readFileSync(adminCreds.clientCaFile);
|
|
884
|
+
} catch (e) {
|
|
885
|
+
dropLock();
|
|
886
|
+
console.error(
|
|
887
|
+
`[mcp] Refusing to start: cannot read admin.clientCa ${adminCreds.clientCaFile} (${e.code || e.message}).`,
|
|
888
|
+
);
|
|
889
|
+
process.exit(1);
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
// "Export my data" (src/core/data-export.js): jobs, the hidden-chat grant, the download links.
|
|
894
|
+
const exportApi = createExportApi({
|
|
895
|
+
ownId: activeAcc.ownId,
|
|
896
|
+
accountDir,
|
|
897
|
+
dbFile: join(accountDir, "zalo.db"),
|
|
898
|
+
hidden,
|
|
899
|
+
getApi: () => getApi(),
|
|
900
|
+
securePage,
|
|
901
|
+
links: mediaLinks,
|
|
902
|
+
trustedProxies,
|
|
903
|
+
log: (l) => console.error(`[mcp] ${l}`),
|
|
904
|
+
});
|
|
905
|
+
const admin = createAdminApi({
|
|
906
|
+
ownId: activeAcc.ownId,
|
|
907
|
+
exportApi,
|
|
908
|
+
config,
|
|
909
|
+
hashes: adminCreds.hashes,
|
|
910
|
+
mtls: Boolean(adminCa),
|
|
911
|
+
publicUrl: publicUrl.publicUrl,
|
|
912
|
+
usage: () => ({
|
|
913
|
+
accounts: [
|
|
914
|
+
{
|
|
915
|
+
accountId: activeAcc.ownId,
|
|
916
|
+
...describeStorage(activeAcc.ownId, {
|
|
917
|
+
mediaRoot: MEDIA_DIR || config.media?.downloadDir,
|
|
918
|
+
dbBytes: dbUsedBytes(),
|
|
919
|
+
}),
|
|
920
|
+
},
|
|
921
|
+
],
|
|
922
|
+
}),
|
|
923
|
+
effectiveExtra: (id) => {
|
|
924
|
+
const st = describeStorage(id);
|
|
925
|
+
return { quota: st.quota, retention: st.retention };
|
|
926
|
+
},
|
|
927
|
+
// GET /zalo/admin/presence, POST /zalo/admin/presence/resume (after a yield).
|
|
928
|
+
presence: presenceDoor,
|
|
929
|
+
log: (l) => console.error(`[mcp] ${l}`),
|
|
930
|
+
});
|
|
931
|
+
if (admin.enabled())
|
|
932
|
+
console.error(
|
|
933
|
+
`[mcp] Admin API: on /zalo/admin${adminCreds.sources.length ? ` (${adminCreds.sources.join(", ")})` : ""}${adminCa ? ", mTLS" : ""}`,
|
|
934
|
+
);
|
|
592
935
|
const deps = {
|
|
936
|
+
admin,
|
|
593
937
|
api: sessionApi,
|
|
594
938
|
buffer,
|
|
595
939
|
filter,
|
|
@@ -599,6 +943,13 @@ export function registerMCPCommands(program) {
|
|
|
599
943
|
stageLock,
|
|
600
944
|
syncJobs,
|
|
601
945
|
health,
|
|
946
|
+
securePage,
|
|
947
|
+
qrPage,
|
|
948
|
+
hiddenEvents,
|
|
949
|
+
mediaLinks,
|
|
950
|
+
trustedProxies,
|
|
951
|
+
presence: presenceDoor,
|
|
952
|
+
leases: leaseDoor,
|
|
602
953
|
};
|
|
603
954
|
const authToken =
|
|
604
955
|
opts.auth?.trim() ||
|
|
@@ -616,11 +967,7 @@ export function registerMCPCommands(program) {
|
|
|
616
967
|
envForAccount("ZALO_MCP_OAUTH_CLIENT_SECRET", activeAcc.ownId) ||
|
|
617
968
|
config?.oauth?.clientSecret?.trim() ||
|
|
618
969
|
authToken;
|
|
619
|
-
const oauthIssuerUrl =
|
|
620
|
-
opts.issuerUrl?.trim() ||
|
|
621
|
-
envForAccount("ZALO_MCP_ISSUER_URL", activeAcc.ownId) ||
|
|
622
|
-
config?.oauth?.issuerUrl?.trim() ||
|
|
623
|
-
null;
|
|
970
|
+
const oauthIssuerUrl = publicUrl.publicUrl;
|
|
624
971
|
const oauthClients = Array.isArray(config?.oauth?.clients) ? config.oauth.clients : [];
|
|
625
972
|
const oauthOptions =
|
|
626
973
|
oauthClientSecret || oauthClients.length > 0
|
|
@@ -632,7 +979,36 @@ export function registerMCPCommands(program) {
|
|
|
632
979
|
}
|
|
633
980
|
: null;
|
|
634
981
|
const scheme = tlsOptions ? "HTTPS" : "HTTP";
|
|
635
|
-
httpServer = createHTTPServer(
|
|
982
|
+
httpServer = createHTTPServer(
|
|
983
|
+
registerTools,
|
|
984
|
+
deps,
|
|
985
|
+
port,
|
|
986
|
+
authToken,
|
|
987
|
+
host,
|
|
988
|
+
tlsOptions && adminCa ? { ...tlsOptions, ca: adminCa } : tlsOptions,
|
|
989
|
+
oauthOptions,
|
|
990
|
+
);
|
|
991
|
+
// The secure page (/zalo/secure/<token>) and the QR login page (/zalo/qr/<token>) are served on this
|
|
992
|
+
// port; their links use publicUrl (behind a reverse proxy or TLS) or else this server's own address,
|
|
993
|
+
// never a request's Host header.
|
|
994
|
+
const localHost = host === "0.0.0.0" || host === "::" ? "127.0.0.1" : host;
|
|
995
|
+
const localBaseUrl = `${tlsOptions ? "https" : "http"}://${localHost.includes(":") ? `[${localHost}]` : localHost}:${port}`;
|
|
996
|
+
securePage.configure({ publicUrl: publicUrl.publicUrl, localBaseUrl });
|
|
997
|
+
qrPage.configure({ publicUrl: publicUrl.publicUrl, localBaseUrl, mounted: true });
|
|
998
|
+
mediaLinks.configure({
|
|
999
|
+
publicUrl: publicUrl.publicUrl,
|
|
1000
|
+
localBaseUrl,
|
|
1001
|
+
bearerAvailable: Boolean(authToken || oauthClientSecret || oauthClients.length > 0),
|
|
1002
|
+
});
|
|
1003
|
+
console.error(
|
|
1004
|
+
`[mcp] Media links: ${mediaLinks.linkAuth} (${mediaAuth.source}), ${Math.round(mediaPolicy.linkTtlMs / 60_000)} min` +
|
|
1005
|
+
(mediaLinks.linkAuth === "capability" && publicUrl.publicUrl
|
|
1006
|
+
? `, at most ${mediaAuth.maxClients} client address(es) per link`
|
|
1007
|
+
: ""),
|
|
1008
|
+
);
|
|
1009
|
+
console.error(
|
|
1010
|
+
`[mcp] Public address: ${publicUrl.publicUrl ? `${publicUrl.publicUrl} (${publicUrl.source})` : `none set: links use ${localBaseUrl} (set publicUrl behind a proxy)`}`,
|
|
1011
|
+
);
|
|
636
1012
|
console.error(`[mcp] ${scheme} server started on port ${port}`);
|
|
637
1013
|
if (!authToken && !oauthClientSecret && oauthClients.length === 0) {
|
|
638
1014
|
console.error(
|
|
@@ -650,6 +1026,7 @@ export function registerMCPCommands(program) {
|
|
|
650
1026
|
accountDir,
|
|
651
1027
|
stageLock,
|
|
652
1028
|
syncJobs,
|
|
1029
|
+
{ presence: presenceDoor },
|
|
653
1030
|
);
|
|
654
1031
|
}
|
|
655
1032
|
} catch (e) {
|
|
@@ -660,11 +1037,7 @@ export function registerMCPCommands(program) {
|
|
|
660
1037
|
|
|
661
1038
|
// Setup notifier (sends to Zalo group when agent is offline)
|
|
662
1039
|
const notifier = new ZaloNotifier(sessionApi, config);
|
|
663
|
-
const webhookUrl =
|
|
664
|
-
opts.webhook?.trim() ||
|
|
665
|
-
envForAccount("ZALO_WEBHOOK_URL", activeAcc.ownId) ||
|
|
666
|
-
config.webhook?.trim() ||
|
|
667
|
-
null;
|
|
1040
|
+
const webhookUrl = resolveWebhookUrl({ accountId: activeAcc.ownId, flag: opts.webhook, config });
|
|
668
1041
|
const webhookSecret = resolveWebhookSecret({
|
|
669
1042
|
flag: opts.webhookSecret,
|
|
670
1043
|
env: envForAccount("ZALO_WEBHOOK_SECRET", activeAcc.ownId),
|
|
@@ -676,30 +1049,180 @@ export function registerMCPCommands(program) {
|
|
|
676
1049
|
// Events are written to an on-disk outbox first and delivered from it, so a receiver
|
|
677
1050
|
// that is down or slow costs a backlog (mcp webhook status), not messages.
|
|
678
1051
|
let webhookDelivery = null;
|
|
679
|
-
|
|
1052
|
+
/** Start the delivery, or move a running one to the current receiver and settings (a live policy change). */
|
|
1053
|
+
const applyWebhook = (url) => {
|
|
680
1054
|
const delivery = resolveWebhookDelivery(activeAcc.ownId, config);
|
|
681
1055
|
for (const w of delivery.warnings) console.error(`[mcp] ${w}`);
|
|
1056
|
+
if (!url) {
|
|
1057
|
+
if (webhookDelivery)
|
|
1058
|
+
console.error("[mcp] Webhook disabled by the policy; queued events stay in the outbox");
|
|
1059
|
+
webhookDelivery?.stop();
|
|
1060
|
+
webhookDelivery = null;
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
if (webhookDelivery) {
|
|
1064
|
+
webhookDelivery.reconfigure({ url, batchSize: delivery.batchSize, maxAgeMs: delivery.maxAgeMs });
|
|
1065
|
+
console.error(`[mcp] Webhook settings changed by the policy (${delivery.batchSize} per POST)`);
|
|
1066
|
+
return;
|
|
1067
|
+
}
|
|
682
1068
|
webhookDelivery = startWebhookDelivery({
|
|
683
1069
|
accountDir,
|
|
684
1070
|
accountId: activeAcc.ownId,
|
|
685
|
-
url
|
|
1071
|
+
url,
|
|
686
1072
|
secret: webhookSecret,
|
|
687
1073
|
batchSize: delivery.batchSize,
|
|
688
1074
|
maxAgeMs: delivery.maxAgeMs,
|
|
689
1075
|
log: (line) => console.error(`[mcp] ${line}`),
|
|
690
1076
|
});
|
|
691
1077
|
console.error(
|
|
692
|
-
`[mcp] Webhook enabled: ${
|
|
1078
|
+
`[mcp] Webhook enabled: ${url}${webhookSecret ? " (signed)" : ""}, ` +
|
|
693
1079
|
`durable outbox, ${delivery.batchSize === 1 ? "one event per POST" : `up to ${delivery.batchSize} events per POST`}`,
|
|
694
1080
|
);
|
|
695
|
-
}
|
|
1081
|
+
};
|
|
1082
|
+
if (webhookUrl) applyWebhook(webhookUrl);
|
|
696
1083
|
health.setSource("webhook", () => webhookDelivery?.status() ?? null);
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
1084
|
+
// approval.deliver "webhook"/"both": a one-time page's link goes to the webhook as an `approval_requested`
|
|
1085
|
+
// event, signed and queued like the others, for a CRM's approval UI to show a person
|
|
1086
|
+
// (src/core/secure-page.js). No dedupe key: each request is its own event.
|
|
1087
|
+
securePage.configure({
|
|
1088
|
+
notify: webhookDelivery ? (payload) => webhookDelivery.enqueue(null, payload) : null,
|
|
1089
|
+
});
|
|
1090
|
+
warnApprovalPolicy({
|
|
1091
|
+
config,
|
|
1092
|
+
accountId: activeAcc.ownId,
|
|
1093
|
+
accountDir,
|
|
1094
|
+
hasWebhook: Boolean(webhookDelivery),
|
|
1095
|
+
});
|
|
1096
|
+
// Quotas and retention (src/core/storage-quota.js): this daemon holds daemon.lock, so it is the one process
|
|
1097
|
+
// that purges, on its timer (retention.purgeEvery) and for `db purge` over its channel. Over a limit,
|
|
1098
|
+
// caching goes on; the storage_quota events go to the webhook and, as system events, to the live buffer that
|
|
1099
|
+
// zalo_get_messages / zalo_wait_for_message read (not every MCP client is an agent: a person sees their usage).
|
|
1100
|
+
// group_gone (src/core/group-exit.js): to the log, the webhook and the live buffer, like storage_quota;
|
|
1101
|
+
// the thread-name cache drops a purged group and flags a kept one (zalo_search_threads).
|
|
1102
|
+
setGroupGoneSink((event) => {
|
|
1103
|
+
console.error(`[mcp] ${describeGroupGone(event)}`);
|
|
1104
|
+
webhookDelivery?.enqueue(null, event);
|
|
1105
|
+
buffer.pushSystem(groupGoneSystemEvent(event));
|
|
1106
|
+
if (event.mode === "keep") {
|
|
1107
|
+
nameCache?.set?.(event.threadId, { gone: true, leftAt: event.leftAt, goneReason: event.reason });
|
|
1108
|
+
} else nameCache?.drop?.(event.threadId);
|
|
1109
|
+
});
|
|
1110
|
+
const storageJobs = startStorageJobs({
|
|
1111
|
+
ownId: activeAcc.ownId,
|
|
1112
|
+
mediaRoot: MEDIA_DIR || config.media?.downloadDir || null,
|
|
1113
|
+
emit: (event) => {
|
|
1114
|
+
console.error(`[mcp] ${describeQuotaEvent(event)}`);
|
|
1115
|
+
webhookDelivery?.enqueue(null, event);
|
|
1116
|
+
buffer.pushSystem(quotaSystemEvent(event));
|
|
1117
|
+
},
|
|
1118
|
+
log: (l) => console.error(`[mcp] ${l}`),
|
|
1119
|
+
purgeOutboxDead: (cutoff) => purgeDeadDeliveries(accountDir, cutoff),
|
|
1120
|
+
});
|
|
1121
|
+
// account_state (src/core/account-state.js): one word per change, to the webhook, the live buffer and
|
|
1122
|
+
// /status, the same as `listen`; detail.presence is the mode presence runs in.
|
|
1123
|
+
// A park and its wake stay out of the buffer a wait reads (createBufferStateFilter says why).
|
|
1124
|
+
const intoBuffer = createBufferStateFilter();
|
|
1125
|
+
const accountState = createAccountStateTracker({
|
|
1126
|
+
accountId: activeAcc.ownId,
|
|
1127
|
+
emit: (event) => {
|
|
1128
|
+
console.error(`[mcp] ${describeAccountState(event)}`);
|
|
1129
|
+
webhookDelivery?.enqueue(null, event);
|
|
1130
|
+
if (intoBuffer(event)) buffer.pushSystem(accountStateSystemEvent(event));
|
|
1131
|
+
},
|
|
1132
|
+
detail: () => daemonPresence?.detail() ?? { presence: presenceCheck.settings.mode },
|
|
1133
|
+
});
|
|
1134
|
+
health.setSource("accountState", () => accountState.current());
|
|
1135
|
+
// session_expiring (src/core/session-notice.js): the saved login ends by itself; once per threshold (14, 7,
|
|
1136
|
+
// 3, 1 days, ended) to the log, the webhook and the live buffer, the same as `listen`.
|
|
1137
|
+
const sessionWatch = startSessionExpiryWatch({
|
|
1138
|
+
ownId: activeAcc.ownId,
|
|
1139
|
+
accountDir,
|
|
1140
|
+
emit: (event) => {
|
|
1141
|
+
console.error(`[mcp] ${describeSessionExpiring(event)}`);
|
|
1142
|
+
webhookDelivery?.enqueue(null, event);
|
|
1143
|
+
buffer.pushSystem(sessionExpiringSystemEvent(event));
|
|
1144
|
+
},
|
|
1145
|
+
});
|
|
1146
|
+
// A policy change (admin API, `policy set`, a file drop) counts from the next tool call: the per-call readers
|
|
1147
|
+
// (confirm mode, approval, delivery modes) read the live policy themselves; what was set up at start is set
|
|
1148
|
+
// up again here.
|
|
1149
|
+
onPolicyChanged = (changed) => {
|
|
1150
|
+
const id = activeAcc.ownId;
|
|
1151
|
+
console.error(`[mcp] Policy changed: ${changed.join(", ")}`);
|
|
1152
|
+
if (touches(changed, ["hiddenChats"])) {
|
|
1153
|
+
hiddenPolicy = resolveHiddenChats({ config, accountId: id });
|
|
1154
|
+
if (hiddenPolicy.mode !== "include") {
|
|
1155
|
+
mediaLinks.revokeWhere(
|
|
1156
|
+
(l) => l.threadId !== null && hidden.isHidden(l.threadId),
|
|
1157
|
+
"its chat is hidden by the policy",
|
|
1158
|
+
);
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
if (touches(changed, ["media"])) {
|
|
1162
|
+
mediaPolicy = resolveMediaDelivery({ config, accountId: id });
|
|
1163
|
+
mediaAuth = resolveMediaLinkAuth({
|
|
1164
|
+
config,
|
|
1165
|
+
accountId: id,
|
|
1166
|
+
publicUrl: effectiveHttpPort ? publicUrl.publicUrl : null,
|
|
1167
|
+
});
|
|
1168
|
+
mediaLinks.configure({
|
|
1169
|
+
linkAuth: effectiveHttpPort ? mediaAuth.linkAuth : "capability",
|
|
1170
|
+
maxClients: mediaAuth.maxClients,
|
|
1171
|
+
clientTtlMs: mediaAuth.clientTtlMs,
|
|
1172
|
+
ttlMs: mediaPolicy.linkTtlMs,
|
|
1173
|
+
rateLimit: mediaPolicy.linkRateLimit,
|
|
1174
|
+
});
|
|
1175
|
+
startTempfileSweeper({ ttlMs: mediaPolicy.tempfileTtlMs });
|
|
1176
|
+
// Links issued under the old rule must not outlive it.
|
|
1177
|
+
if (touches(changed, ["media.linkAuth", "media.capability"])) {
|
|
1178
|
+
const n = mediaLinks.revokeAll("the link policy changed");
|
|
1179
|
+
if (n) console.error(`[mcp] ${n} media link(s) revoked: the link policy changed`);
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
// A lower limit or a new rule is checked at once; a new interval counts from now.
|
|
1183
|
+
if (touches(changed, ["quota", "retention"])) storageJobs.reschedule();
|
|
1184
|
+
if (touches(changed, ["webhook", "webhookBatchSize", "webhookMaxAge"])) {
|
|
1185
|
+
applyWebhook(resolveWebhookUrl({ accountId: id, flag: opts.webhook, config }));
|
|
1186
|
+
securePage.configure({
|
|
1187
|
+
notify: webhookDelivery ? (payload) => webhookDelivery?.enqueue(null, payload) : null,
|
|
1188
|
+
});
|
|
1189
|
+
}
|
|
1190
|
+
// presence.*: live (a switch to always-on holds the socket now; one to on-demand starts the idle clock).
|
|
1191
|
+
daemonPresence?.applyPolicy(changed);
|
|
1192
|
+
};
|
|
1193
|
+
/**
|
|
1194
|
+
* Queue one buffered message for the webhook, in the shape `postMCPWebhook` always sent; a message in a
|
|
1195
|
+
* hidden chat goes as the policy says: not at all, or as `{event, hidden: true}` with no ids or content.
|
|
1196
|
+
*/
|
|
1197
|
+
const queueWebhook = (normalized) => {
|
|
1198
|
+
const kind = normalized.type === "undo" ? "undo" : "message";
|
|
1199
|
+
const view = hiddenEventView(normalized, hidden, hiddenPolicy.mode, { name: kind });
|
|
1200
|
+
if (!view) return undefined;
|
|
1201
|
+
const key = `${kind}:${normalized.msgId ?? normalized.cliMsgId}`;
|
|
1202
|
+
if (view.hidden) {
|
|
1203
|
+
return webhookDelivery?.enqueue(`hidden-${key}`, {
|
|
1204
|
+
event: view.event,
|
|
1205
|
+
hidden: true,
|
|
1206
|
+
accountId: activeAcc.ownId,
|
|
1207
|
+
});
|
|
1208
|
+
}
|
|
1209
|
+
return webhookDelivery?.enqueue(
|
|
1210
|
+
key,
|
|
701
1211
|
buildMCPWebhookPayload(normalized, { accountId: activeAcc.ownId }),
|
|
702
1212
|
);
|
|
1213
|
+
};
|
|
1214
|
+
/**
|
|
1215
|
+
* Hand one message (or recall) to the agents: the buffer, the notifier, the webhook. A hidden chat's is
|
|
1216
|
+
* dropped under `exclude`; under `contentless` the buffer keeps it (the tools show it without content)
|
|
1217
|
+
* and the notifier, whose preview names the sender, is skipped.
|
|
1218
|
+
*/
|
|
1219
|
+
const deliverToAgents = (n, { notify = true } = {}) => {
|
|
1220
|
+
const isHidden = hiddenPolicy.mode !== "include" && hidden.isHidden(n.threadId);
|
|
1221
|
+
if (isHidden && hiddenPolicy.mode === "exclude") return;
|
|
1222
|
+
buffer.push(n.threadId, n);
|
|
1223
|
+
if (notify && !isHidden) notifier.onMessage(n);
|
|
1224
|
+
queueWebhook(n);
|
|
1225
|
+
};
|
|
703
1226
|
|
|
704
1227
|
// Delivered receipts: the same shared implementation `listen` uses
|
|
705
1228
|
// (AGENTS.md §13 -- the two listeners must not differ). Diagnostics
|
|
@@ -731,6 +1254,11 @@ export function registerMCPCommands(program) {
|
|
|
731
1254
|
const gapId = syncManager.recordGap(fromTs, Date.now(), reason);
|
|
732
1255
|
if (!gapId) return false;
|
|
733
1256
|
const since = new Date(fromTs).toISOString();
|
|
1257
|
+
// A parked window (on-demand presence) is planned: one quiet line, the self-heal closes it.
|
|
1258
|
+
if (reason === IDLE_GAP_REASON) {
|
|
1259
|
+
console.error(`[mcp] Parked since ${since}: catching up from Zalo's offline queue`);
|
|
1260
|
+
return true;
|
|
1261
|
+
}
|
|
734
1262
|
console.error(
|
|
735
1263
|
opts.selfHeal !== false
|
|
736
1264
|
? `[mcp] Coverage gap (${reason}) since ${since}: recovering it now from Zalo's offline ` +
|
|
@@ -741,11 +1269,23 @@ export function registerMCPCommands(program) {
|
|
|
741
1269
|
);
|
|
742
1270
|
return true;
|
|
743
1271
|
};
|
|
744
|
-
const lifecycle = createGapTracker({
|
|
1272
|
+
const lifecycle = createGapTracker({
|
|
1273
|
+
syncManager,
|
|
1274
|
+
reportGap,
|
|
1275
|
+
setState: setSyncState,
|
|
1276
|
+
deleteState: clearSyncState,
|
|
1277
|
+
});
|
|
745
1278
|
|
|
746
1279
|
// Same startup check `listen` does: a window between the last
|
|
747
1280
|
// recorded connection and now is unobserved until something says so.
|
|
748
|
-
|
|
1281
|
+
// One that ended in a park (a stop or crash while parked) is a planned window.
|
|
1282
|
+
const lastConnectedAt = syncManager.getLastConnectedAt();
|
|
1283
|
+
const parkedStamp = Number(getSyncState(PARKED_AT_KEY)) || null;
|
|
1284
|
+
const startupReason = parkedStamp
|
|
1285
|
+
? startupGapReason({ lastConnectedAt, parkedAt: parkedStamp })
|
|
1286
|
+
: "startup-gap";
|
|
1287
|
+
if (parkedStamp) clearSyncState(PARKED_AT_KEY);
|
|
1288
|
+
if (!reportGap(lastConnectedAt, startupReason)) {
|
|
749
1289
|
syncManager.markConnected();
|
|
750
1290
|
}
|
|
751
1291
|
const pending = getPendingSyncGaps();
|
|
@@ -759,21 +1299,109 @@ export function registerMCPCommands(program) {
|
|
|
759
1299
|
}
|
|
760
1300
|
const mcpHeartbeatTimer = setInterval(() => lifecycle.heartbeat(), HEARTBEAT_MS);
|
|
761
1301
|
|
|
1302
|
+
// On-demand presence: when this daemon holds the account's socket (src/core/daemon-presence.js, shared
|
|
1303
|
+
// with `listen`). Built before the socket host, which it drives through park/wake.
|
|
1304
|
+
try {
|
|
1305
|
+
daemonPresence = createDaemonPresence({
|
|
1306
|
+
ownId: activeAcc.ownId,
|
|
1307
|
+
config,
|
|
1308
|
+
transport: presenceRole,
|
|
1309
|
+
selfHeal: opts.selfHeal !== false,
|
|
1310
|
+
configDir: CONFIG_DIR,
|
|
1311
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1312
|
+
getSocketHost: () => socketHost,
|
|
1313
|
+
stageLock,
|
|
1314
|
+
deliveredReceipts,
|
|
1315
|
+
lifecycle,
|
|
1316
|
+
health,
|
|
1317
|
+
accountState,
|
|
1318
|
+
coveredUntil: () => syncManager.getLastConnectedAt(),
|
|
1319
|
+
});
|
|
1320
|
+
} catch (e) {
|
|
1321
|
+
dropLock();
|
|
1322
|
+
console.error(`[mcp] Refusing to start: ${e.message}`);
|
|
1323
|
+
process.exit(1);
|
|
1324
|
+
}
|
|
1325
|
+
{
|
|
1326
|
+
const p = daemonPresence.settings;
|
|
1327
|
+
console.error(
|
|
1328
|
+
`[mcp] Presence: ${p.mode}${daemonPresence.forced ? ` (${daemonPresence.forced})` : ""}` +
|
|
1329
|
+
(p.mode === "on-demand"
|
|
1330
|
+
? `: parks after ${Math.round(p.idleTimeoutMs / 1000)}s with no demand, ` +
|
|
1331
|
+
`never within ${Math.round(p.minConnectedMs / 1000)}s of a connect` +
|
|
1332
|
+
`${p.connectOnStart ? "; catches up once at start" : ""}`
|
|
1333
|
+
: ""),
|
|
1334
|
+
);
|
|
1335
|
+
}
|
|
1336
|
+
|
|
762
1337
|
// The same catch-up `listen` runs (AGENTS.md §13): one stage at a
|
|
763
|
-
// time on this socket, a raw reader for the fields
|
|
1338
|
+
// time on this socket, a raw reader for the fields the listener's events drop, and
|
|
764
1339
|
// the offline-queue pull on every handshake (src/core/self-heal.js).
|
|
765
1340
|
// `stageLock` is the one created before the server above.
|
|
766
1341
|
const socketTap = createSocketTap({ log: (line) => console.error(`[mcp] ${line}`) });
|
|
767
1342
|
// The read state other devices report, stored exactly as `listen`
|
|
768
1343
|
// stores it, so a thread the human read on the phone stops
|
|
769
1344
|
// looking unread (src/core/read-state.js).
|
|
770
|
-
createReadStateSync({
|
|
1345
|
+
createReadStateSync({
|
|
1346
|
+
tap: socketTap,
|
|
1347
|
+
ownId: activeAcc.ownId,
|
|
1348
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1349
|
+
});
|
|
1350
|
+
// A user's last-online time as Zalo pushes it (602 online_status), kept for zalo_friend `last_online`
|
|
1351
|
+
// with `cached`, as in `listen` (src/core/last-online.js).
|
|
1352
|
+
attachLastOnline({ tap: socketTap, log: (line) => console.error(`[mcp] ${line}`) });
|
|
1353
|
+
// The cloud queue, kept current when the server says it may be stale (cmd 621): bounded, read-only,
|
|
1354
|
+
// never beside another stage (src/core/cloud-verify.js). Same in `listen` and `mcp start`.
|
|
1355
|
+
createCloudVerifier({
|
|
1356
|
+
tap: socketTap,
|
|
1357
|
+
getApi,
|
|
1358
|
+
lock: stageLock,
|
|
1359
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1360
|
+
});
|
|
1361
|
+
// The control actions the server sends that nobody handles, named once in the account folder
|
|
1362
|
+
// (src/core/unknown-acts.js). Same in `listen` and `mcp start`.
|
|
1363
|
+
attachUnknownActs({
|
|
1364
|
+
tap: socketTap,
|
|
1365
|
+
file: join(accountDir, "unknown-acts.json"),
|
|
1366
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1367
|
+
});
|
|
1368
|
+
// The text of a voice message Zalo transcribed arrives as a control push; it is kept in the account
|
|
1369
|
+
// folder for `read run voice-transcript` (src/core/voice-text.js). Same in `listen` and `mcp start`.
|
|
1370
|
+
attachVoiceText({
|
|
1371
|
+
tap: socketTap,
|
|
1372
|
+
file: voiceTextFile(accountDir),
|
|
1373
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1374
|
+
});
|
|
1375
|
+
// A DM reminder created, edited or removed on another device is stored or dropped in the cache, a
|
|
1376
|
+
// device-list change is logged, the conversation, quick-message, catalog and settings changes are read
|
|
1377
|
+
// (there is no cache of them to keep), as in `listen` (src/core/control-events.js); the events are
|
|
1378
|
+
// printed only by `listen`.
|
|
1379
|
+
attachControlEvents({
|
|
1380
|
+
tap: socketTap,
|
|
1381
|
+
ownId: activeAcc.ownId,
|
|
1382
|
+
log: (line) => console.error(`[mcp] ${line}`),
|
|
1383
|
+
});
|
|
1384
|
+
// Hidden chats hidden, unhidden or their PIN changed or removed on another device (601 `hidden_chat`).
|
|
1385
|
+
// Same in `listen` and `mcp start`.
|
|
1386
|
+
attachHiddenChatControls({ tap: socketTap, set: hidden, getApi, readControls });
|
|
1387
|
+
// End-to-end encrypted messages this client cannot read: the first is named in the log, the rest counted.
|
|
1388
|
+
const undecryptable = createUndecryptableNotice({ log: (line) => console.error(`[mcp] ${line}`) });
|
|
771
1389
|
const selfHeal = createSelfHeal({
|
|
772
1390
|
getApi,
|
|
773
1391
|
tap: socketTap,
|
|
774
1392
|
lock: stageLock,
|
|
775
1393
|
enabled: opts.selfHeal !== false,
|
|
776
1394
|
log: (line) => console.error(`[mcp] ${line}`),
|
|
1395
|
+
// Coverage never spans a device change (src/core/device-since.js). Same in `listen`.
|
|
1396
|
+
deviceSince: () => deviceSinceOf(activeAcc.ownId, getApi()),
|
|
1397
|
+
// A catch-up finished: on-demand presence ends its start-up and pulse holds. Same in `listen`.
|
|
1398
|
+
onRun: ({ ms }) => daemonPresence?.noteCatchUpDone({ ms }),
|
|
1399
|
+
// Zalo dropped part of a queue: the log, the webhook and the live buffer, like the other notices.
|
|
1400
|
+
onNotice: (event) => {
|
|
1401
|
+
console.error(`[mcp] ${describeQueueOverflow(event)}`);
|
|
1402
|
+
webhookDelivery?.enqueue(null, event);
|
|
1403
|
+
buffer.pushSystem(queueOverflowSystemEvent(event));
|
|
1404
|
+
},
|
|
777
1405
|
// A bot must see what arrived while the socket was down, as it
|
|
778
1406
|
// would have seen it live -- same filters, flagged as catch-up.
|
|
779
1407
|
onRecovered: (items) => {
|
|
@@ -783,9 +1411,7 @@ export function registerMCPCommands(program) {
|
|
|
783
1411
|
const normalized = { ...normalizeMessage(msg, info), catchUp: true };
|
|
784
1412
|
if (!filter.shouldWatch(normalized.threadId, normalized.threadType)) continue;
|
|
785
1413
|
if (!filter.shouldKeep(normalized)) continue;
|
|
786
|
-
|
|
787
|
-
notifier.onMessage(normalized);
|
|
788
|
-
queueWebhook(normalized);
|
|
1414
|
+
deliverToAgents(normalized);
|
|
789
1415
|
}
|
|
790
1416
|
},
|
|
791
1417
|
});
|
|
@@ -814,11 +1440,16 @@ export function registerMCPCommands(program) {
|
|
|
814
1440
|
/**
|
|
815
1441
|
* Attach Zalo listener handlers to the current API instance.
|
|
816
1442
|
* Must be called again after each re-login with the new API instance.
|
|
817
|
-
* @param {object} api -
|
|
1443
|
+
* @param {object} api - session object
|
|
818
1444
|
*/
|
|
819
1445
|
function attachListenerHandlers(api) {
|
|
820
1446
|
health.attach(api.listener);
|
|
1447
|
+
daemonAliases.attach(api.listener);
|
|
821
1448
|
api.listener.on("message", (msg) => {
|
|
1449
|
+
// A message Zalo re-sent (534) that is already stored was buffered when it was stored; self-heal
|
|
1450
|
+
// owns re-pushes, so it is not buffered or posted twice.
|
|
1451
|
+
if (selfHeal.isRepeatedRepush(msg)) return;
|
|
1452
|
+
undecryptable.note(msg);
|
|
822
1453
|
// Persist FIRST and unconditionally. The buffer is what an
|
|
823
1454
|
// agent polls; the cache is the durable record, and it must
|
|
824
1455
|
// not depend on whether a thread happens to be watched or
|
|
@@ -858,9 +1489,7 @@ export function registerMCPCommands(program) {
|
|
|
858
1489
|
// Apply noise filter (stickers, system msgs, short emoji)
|
|
859
1490
|
if (!filter.shouldKeep(normalized)) return;
|
|
860
1491
|
|
|
861
|
-
|
|
862
|
-
notifier.onMessage(normalized);
|
|
863
|
-
queueWebhook(normalized);
|
|
1492
|
+
deliverToAgents(normalized);
|
|
864
1493
|
console.error(
|
|
865
1494
|
`${DEBUG_MARK}[mcp] Buffered ${normalized.threadType} msg from ${normalized.threadId}`,
|
|
866
1495
|
);
|
|
@@ -888,6 +1517,18 @@ export function registerMCPCommands(program) {
|
|
|
888
1517
|
api.listener.on("undo", (u) => {
|
|
889
1518
|
const r = storeLiveUndo(u);
|
|
890
1519
|
if (!r.stored && r.reason) console.error(`[mcp] recall not applied: ${r.reason}`);
|
|
1520
|
+
// The cache is updated above whatever happens next; this is what an agent
|
|
1521
|
+
// sees. A recall used to stop at the cache, so a waiter on
|
|
1522
|
+
// zalo_wait_for_message never woke for one and zalo_get_messages never
|
|
1523
|
+
// listed it (bug-reports #3). Self recalls are the agent's own zalo_undo.
|
|
1524
|
+
if (u?.isSelf) return;
|
|
1525
|
+
const recalled = normalizeUndo(u);
|
|
1526
|
+
if (!recalled) return;
|
|
1527
|
+
if (!filter.shouldWatch(recalled.threadId, recalled.threadType)) return;
|
|
1528
|
+
deliverToAgents(recalled, { notify: false });
|
|
1529
|
+
console.error(
|
|
1530
|
+
`${DEBUG_MARK}[mcp] Buffered recall of ${recalled.msgId ?? recalled.cliMsgId} in ${recalled.threadId}`,
|
|
1531
|
+
);
|
|
891
1532
|
});
|
|
892
1533
|
|
|
893
1534
|
api.listener.on("delivered_messages", (m) => storeReceipts(m, STATUS_RECEIVED));
|
|
@@ -895,6 +1536,20 @@ export function registerMCPCommands(program) {
|
|
|
895
1536
|
|
|
896
1537
|
api.listener.on("group_event", (event) => {
|
|
897
1538
|
noteBoardChange(event);
|
|
1539
|
+
// Same call as `listen`: our uid tells being removed from removing someone else. A gone group's
|
|
1540
|
+
// later events are skipped until a join names us (as Zalo does).
|
|
1541
|
+
const gone = storeGroupEvent(event, { ownId: activeAcc.ownId });
|
|
1542
|
+
if (gone.ignored) return;
|
|
1543
|
+
if (gone.gone) {
|
|
1544
|
+
// Purge or keep (groups.onLeave, read now); the group_gone event goes through the sink.
|
|
1545
|
+
applyGroupExit({
|
|
1546
|
+
ownId: activeAcc.ownId,
|
|
1547
|
+
threadId: gone.threadId,
|
|
1548
|
+
reason: gone.reason,
|
|
1549
|
+
at: gone.at,
|
|
1550
|
+
}).catch((e) => console.error(`[mcp] group exit of ${gone.threadId} failed: ${e.message}`));
|
|
1551
|
+
return;
|
|
1552
|
+
}
|
|
898
1553
|
storeGroupEventRow(event);
|
|
899
1554
|
const groupName = typeof event?.data?.groupName === "string" ? event.data.groupName.trim() : "";
|
|
900
1555
|
if (groupName && event?.threadId !== undefined && event?.threadId !== null) {
|
|
@@ -903,10 +1558,6 @@ export function registerMCPCommands(program) {
|
|
|
903
1558
|
nameCache?.set(tid, { name: groupName, type: "group" });
|
|
904
1559
|
}
|
|
905
1560
|
}
|
|
906
|
-
// Same call as `listen`: our uid tells being removed from
|
|
907
|
-
// removing someone else, and a later event clears the flag.
|
|
908
|
-
const gone = storeGroupEvent(event, { ownId: activeAcc.ownId });
|
|
909
|
-
if (gone.gone) console.error(`[mcp] no longer in ${gone.threadId} — local history orphaned`);
|
|
910
1561
|
});
|
|
911
1562
|
|
|
912
1563
|
api.listener.on("connected", () => {
|
|
@@ -919,47 +1570,17 @@ export function registerMCPCommands(program) {
|
|
|
919
1570
|
|
|
920
1571
|
api.listener.on("disconnected", (code) => {
|
|
921
1572
|
if (lifecycle.isStopping()) return;
|
|
1573
|
+
// A park's close (on-demand presence) is planned, like a shutdown's.
|
|
1574
|
+
if (socketHost.isParking() || socketHost.isParked()) return;
|
|
1575
|
+
// After a kick the socket host has already said why it is not reconnecting.
|
|
1576
|
+
if (socketHost.kicked()) return;
|
|
922
1577
|
console.error(`[mcp] Disconnected (code: ${code}). Auto-retrying... (${socketContext.describe()})`);
|
|
1578
|
+
if (!lifecycle.isDown()) reconnectCount++;
|
|
923
1579
|
lifecycle.noteDown();
|
|
924
1580
|
});
|
|
925
1581
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
lifecycle.noteDown();
|
|
929
|
-
if (code === CLOSE_DUPLICATE) {
|
|
930
|
-
dropLock();
|
|
931
|
-
console.error("[mcp] Duplicate Zalo Web session detected. Exiting.");
|
|
932
|
-
process.exit(1);
|
|
933
|
-
}
|
|
934
|
-
reconnectCount++;
|
|
935
|
-
console.error(
|
|
936
|
-
`[mcp] Connection closed (code: ${code}). Re-login in 5s... (reconnect #${reconnectCount}; ${socketContext.describe()})`,
|
|
937
|
-
);
|
|
938
|
-
await new Promise((r) => setTimeout(r, 5000));
|
|
939
|
-
try {
|
|
940
|
-
clearSession();
|
|
941
|
-
await loginDaemonAccount(activeAcc);
|
|
942
|
-
console.error("[mcp] Re-login successful. Restarting listener...");
|
|
943
|
-
const newApi = getApi();
|
|
944
|
-
attachListenerHandlers(newApi);
|
|
945
|
-
newApi.listener.start({ retryOnClose: true });
|
|
946
|
-
} catch (e) {
|
|
947
|
-
console.error(`[mcp] Re-login failed: ${e.message}. Retrying in 30s...`);
|
|
948
|
-
await new Promise((r) => setTimeout(r, 30000));
|
|
949
|
-
try {
|
|
950
|
-
clearSession();
|
|
951
|
-
await loginDaemonAccount(activeAcc);
|
|
952
|
-
const retryApi = getApi();
|
|
953
|
-
attachListenerHandlers(retryApi);
|
|
954
|
-
retryApi.listener.start({ retryOnClose: true });
|
|
955
|
-
console.error("[mcp] Re-login successful on retry.");
|
|
956
|
-
} catch (e2) {
|
|
957
|
-
dropLock();
|
|
958
|
-
console.error(`[mcp] Re-login retry failed: ${e2.message}. Exiting.`);
|
|
959
|
-
process.exit(1);
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
});
|
|
1582
|
+
// There is no `closed` handler on purpose; see the same place in `listen`. The socket
|
|
1583
|
+
// host (src/core/socket-host.js) keeps this socket alive and ends the daemon on a kick.
|
|
963
1584
|
|
|
964
1585
|
api.listener.on("error", () => {
|
|
965
1586
|
// WS errors are followed by close/disconnect — suppress to avoid noise
|
|
@@ -972,6 +1593,7 @@ export function registerMCPCommands(program) {
|
|
|
972
1593
|
// for a window nothing was missed in.
|
|
973
1594
|
lifecycle.setStopping();
|
|
974
1595
|
health.noteStopping();
|
|
1596
|
+
daemonPresence?.stop();
|
|
975
1597
|
clearInterval(mcpHeartbeatTimer);
|
|
976
1598
|
deliveredReceipts.stop();
|
|
977
1599
|
const receipts = deliveredReceipts.stats();
|
|
@@ -983,23 +1605,73 @@ export function registerMCPCommands(program) {
|
|
|
983
1605
|
} catch (e) {
|
|
984
1606
|
console.error(`[mcp] Failed to stamp shutdown state: ${e.message}`);
|
|
985
1607
|
}
|
|
1608
|
+
// The supervisor first, so the close that follows is read as a stop and not as a drop.
|
|
1609
|
+
socketHost.stop().catch(() => {});
|
|
986
1610
|
try {
|
|
987
1611
|
getApi().listener.stop();
|
|
988
1612
|
} catch {
|
|
989
1613
|
/* already stopped */
|
|
990
1614
|
}
|
|
991
1615
|
notifier?.destroy();
|
|
1616
|
+
policyRuntime.stop();
|
|
1617
|
+
storageJobs.stop();
|
|
1618
|
+
sessionWatch.stop();
|
|
992
1619
|
webhookDelivery?.stop();
|
|
1620
|
+
mediaLinks.revokeAll("the server stopped");
|
|
993
1621
|
httpServer?.close();
|
|
994
1622
|
dropLock();
|
|
995
1623
|
process.exit(0);
|
|
996
1624
|
};
|
|
997
1625
|
|
|
1626
|
+
// The one place that keeps the socket alive, shared with `listen`.
|
|
1627
|
+
const socketHost = createSocketHost({
|
|
1628
|
+
log: (_level, message) => console.error(`[mcp] ${message}`),
|
|
1629
|
+
// The supervisor's states reach presence, health and account_state through one place.
|
|
1630
|
+
health: { noteSocketState: (state) => daemonPresence.noteSocketState(state) },
|
|
1631
|
+
// On-demand: a kick by another session of this login yields (the daemon stays up, refusing requests
|
|
1632
|
+
// until `presence resume`); a park marks its close as planned before the supervisor stops.
|
|
1633
|
+
yieldOnKick: () => daemonPresence.yieldOnKick(),
|
|
1634
|
+
onParking: () => daemonPresence.onParking(),
|
|
1635
|
+
isStopping: () => lifecycle.isStopping(),
|
|
1636
|
+
anomalyFile: join(accountDir, "sock-anomaly.json"),
|
|
1637
|
+
kickFile: kickFile(accountDir),
|
|
1638
|
+
relogin: async () => {
|
|
1639
|
+
clearSession();
|
|
1640
|
+
await loginDaemonAccount(activeAcc);
|
|
1641
|
+
const newApi = getApi();
|
|
1642
|
+
attachListenerHandlers(newApi);
|
|
1643
|
+
return newApi;
|
|
1644
|
+
},
|
|
1645
|
+
onKicked: () => {
|
|
1646
|
+
// Said before the exit: the account is not coming back by itself.
|
|
1647
|
+
accountState.note("kicked", { exitCode: EXIT_CODE.KICKED });
|
|
1648
|
+
// The session ended: no media link may outlive it, even for the moments before the exit.
|
|
1649
|
+
mediaLinks.revokeAll("the session ended");
|
|
1650
|
+
dropLock();
|
|
1651
|
+
process.exit(EXIT_CODE.KICKED);
|
|
1652
|
+
},
|
|
1653
|
+
onRevoked: (e) => {
|
|
1654
|
+
mediaLinks.revokeAll("the session ended");
|
|
1655
|
+
console.error(
|
|
1656
|
+
`[mcp] Zalo keeps refusing the saved login (${e?.message ?? e}): another browser or device ` +
|
|
1657
|
+
"took the web login. Add the account again by QR (`zalo-agent login`).",
|
|
1658
|
+
);
|
|
1659
|
+
// Signed out: the daemon stays up (status, API, a QR re-add) and refuses requests; exit 4 only with
|
|
1660
|
+
// ZALO_EXIT_ON_SIGNED_OUT[_<ownId>]=1.
|
|
1661
|
+
if (daemonPresence.signOut(e)) return;
|
|
1662
|
+
accountState.note("login_needed", { exitCode: EXIT_CODE.SESSION_REVOKED });
|
|
1663
|
+
dropLock();
|
|
1664
|
+
process.exit(EXIT_CODE.SESSION_REVOKED);
|
|
1665
|
+
},
|
|
1666
|
+
});
|
|
1667
|
+
|
|
998
1668
|
// Wire listener and start
|
|
999
1669
|
try {
|
|
1000
1670
|
const api = getApi();
|
|
1001
1671
|
attachListenerHandlers(api);
|
|
1002
|
-
|
|
1672
|
+
// The host takes the session; presence opens the socket now (always-on, the start-up catch-up) or
|
|
1673
|
+
// on the first demand.
|
|
1674
|
+
daemonPresence.start(api);
|
|
1003
1675
|
console.error("[mcp] Zalo listener started. MCP server ready.");
|
|
1004
1676
|
// This process holds the account's one permitted socket, so it
|
|
1005
1677
|
// performs the work that needs one on behalf of the CLI:
|
|
@@ -1019,6 +1691,25 @@ export function registerMCPCommands(program) {
|
|
|
1019
1691
|
lock: stageLock,
|
|
1020
1692
|
onStop: shutdown,
|
|
1021
1693
|
onStatus: () => health.snapshot(),
|
|
1694
|
+
// `policy set|unset`: applied here, so it counts at once (src/core/policy-store.js).
|
|
1695
|
+
onPolicy: servePolicyRequest,
|
|
1696
|
+
// `db purge`: this daemon is the account's one writer, so the purge runs here.
|
|
1697
|
+
onPurge: ({ dryRun }) => ({ report: storageJobs.runNow({ dryRun: dryRun !== false }) }),
|
|
1698
|
+
// `presence status|wake|park|resume`, and the fleet controller's relay.
|
|
1699
|
+
onPresence: (p) => daemonPresence.serve(p),
|
|
1700
|
+
// An upload, a sync stage, a wait: each holds the socket (refused while yielded or signed out).
|
|
1701
|
+
presenceGate: (o) => daemonPresence.admit(o),
|
|
1702
|
+
// `msg media --deliver link`: a link this daemon serves (on its HTTP port, or 127.0.0.1).
|
|
1703
|
+
onMediaLink: ({ msgId }) =>
|
|
1704
|
+
linkForCachedMessage({
|
|
1705
|
+
row: getMessageById(msgId),
|
|
1706
|
+
scope: scopeOfDir(accountDir),
|
|
1707
|
+
accountId: activeAcc.ownId,
|
|
1708
|
+
hidden: hiddenPolicy.mode === "include" ? null : hidden,
|
|
1709
|
+
links: mediaLinks,
|
|
1710
|
+
ensureServed: ensureMediaServed,
|
|
1711
|
+
policy: mediaPolicy,
|
|
1712
|
+
}),
|
|
1022
1713
|
onWait: async (params, signal) => {
|
|
1023
1714
|
const cleanThreadId =
|
|
1024
1715
|
typeof params?.threadId === "string" && params.threadId.trim()
|
|
@@ -1109,8 +1800,7 @@ export function registerMCPCommands(program) {
|
|
|
1109
1800
|
.option("--timeout <seconds>", "Maximum seconds to wait before returning timeout (1-300, default: 55)", "55")
|
|
1110
1801
|
.option(
|
|
1111
1802
|
"-n, --limit <count>",
|
|
1112
|
-
|
|
1113
|
-
"1",
|
|
1803
|
+
"Return at most this many buffered messages, in order (default: every message already waiting)",
|
|
1114
1804
|
)
|
|
1115
1805
|
.option(
|
|
1116
1806
|
"--settle <ms>",
|
|
@@ -1143,9 +1833,9 @@ export function registerMCPCommands(program) {
|
|
|
1143
1833
|
error(`Invalid --consumer "${consumer}": must be 1-64 characters matching [A-Za-z0-9._:@-].`);
|
|
1144
1834
|
process.exit(1);
|
|
1145
1835
|
}
|
|
1146
|
-
const limit = Number(opts.limit);
|
|
1147
|
-
if (!Number.isInteger(limit) || limit < 1
|
|
1148
|
-
error(`Invalid --limit "${opts.limit}": must be
|
|
1836
|
+
const limit = opts.limit === undefined ? undefined : Number(opts.limit);
|
|
1837
|
+
if (limit !== undefined && (!Number.isInteger(limit) || limit < 1)) {
|
|
1838
|
+
error(`Invalid --limit "${opts.limit}": must be a whole number of at least 1.`);
|
|
1149
1839
|
process.exit(1);
|
|
1150
1840
|
}
|
|
1151
1841
|
const settleMs = Number(opts.settle);
|
|
@@ -1195,6 +1885,11 @@ export function registerMCPCommands(program) {
|
|
|
1195
1885
|
() => {
|
|
1196
1886
|
if (res.status === "message" && res.messages?.length) {
|
|
1197
1887
|
for (const m of res.messages) {
|
|
1888
|
+
// A system event (account_state, group_gone, queue_overflow, session_expiring, storage_quota) is no message.
|
|
1889
|
+
if (m.system) {
|
|
1890
|
+
info(`[cursor ${m._cursor}] ${m.type}: ${m.text ?? ""}`);
|
|
1891
|
+
continue;
|
|
1892
|
+
}
|
|
1198
1893
|
const label = m.threadName ? `${m.threadName} (${m.threadId})` : m.threadId;
|
|
1199
1894
|
success(
|
|
1200
1895
|
`[cursor ${m._cursor}] ${m.senderName || m.senderId} in ${label}: ${m.text || `(${m.type})`}`,
|
|
@@ -1272,4 +1967,5 @@ export function registerMCPCommands(program) {
|
|
|
1272
1967
|
});
|
|
1273
1968
|
|
|
1274
1969
|
registerMCPWebhookCommands(mcp, program);
|
|
1970
|
+
registerMCPApproverCommand(mcp, program);
|
|
1275
1971
|
}
|