@qqbrowser/openclaw-qbot 0.0.128 → 0.0.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account-lookup-CW-_CL7y.js +1 -1
- package/dist/acp-cli-01SGjPGi.js +1 -1
- package/dist/acp-cli-uxN405XG.js +1 -1
- package/dist/active-listener-BZ6loNaF.js +1 -1
- package/dist/active-listener-D8VOdVx3.js +1 -1
- package/dist/active-listener-DB5mhDuO.js +1 -1
- package/dist/active-listener-DeKRt_UV.js +1 -1
- package/dist/agent-scope-DAWJwFfl.js +1 -1
- package/dist/agent-scope-DXZc3eNT.js +1 -1
- package/dist/agents-BMh3ZeoB.js +1 -1
- package/dist/agents.config-B-0lZSmb.js +1 -1
- package/dist/agents.config-BDEN2Eph.js +1 -1
- package/dist/allow-from-B6dI7oz8.js +1 -1
- package/dist/allow-from-DEeVIPKS.js +1 -1
- package/dist/api-BeG0ObSq.js +1 -1
- package/dist/api-Dx8x1KTs.js +1 -1
- package/dist/api-key-rotation-C_MG2y1D.js +1 -1
- package/dist/api-key-rotation-D8WsZ43x.js +1 -1
- package/dist/api-key-rotation-DYYvcqSG.js +1 -1
- package/dist/api-key-rotation-dNu0GxPN.js +1 -1
- package/dist/arg-split-BOqSMBuf.js +1 -1
- package/dist/arg-split-DE5RqDHq.js +1 -1
- package/dist/audio-preflight--K4-eUVY.js +1 -1
- package/dist/audio-preflight-BKIm58PG.js +1 -1
- package/dist/audio-preflight-CAfi10dl.js +1 -1
- package/dist/audio-preflight-Xm0NL5JA.js +1 -1
- package/dist/audio-transcription-runner-BJNP7vB8.js +1 -1
- package/dist/audio-transcription-runner-BUsb6cqv.js +1 -1
- package/dist/audio-transcription-runner-C_31Yoq0.js +1 -1
- package/dist/audio-transcription-runner-CjKLRVPo.js +1 -1
- package/dist/audit-7DFnKINd.js +1 -1
- package/dist/audit-B6LsW3Ai.js +1 -1
- package/dist/audit-membership-runtime-BpRsMj5-.js +1 -1
- package/dist/audit-membership-runtime-BsfLZNBj.js +1 -1
- package/dist/audit-membership-runtime-DRHirRmx.js +1 -1
- package/dist/audit-membership-runtime-g0dEWJTp.js +1 -1
- package/dist/audit-membership-runtime-kdyToskD.js +1 -1
- package/dist/auth-choice-BNd2SNjJ.js +1 -1
- package/dist/auth-choice-C3aUWXx9.js +1 -1
- package/dist/auth-choice-DViEjgMg.js +1 -1
- package/dist/auth-choice-edozMf7r.js +1 -1
- package/dist/auth-choice-options-B3WQyS7I.js +1 -1
- package/dist/auth-choice-options-Dw14noox.js +1 -1
- package/dist/auth-choice-prompt-uegl56cf.js +1 -1
- package/dist/auth-choice-prompt-xYj13czb.js +1 -1
- package/dist/auth-choice.apply-helpers-CNLYnRxx.js +1 -1
- package/dist/auth-choice.apply-helpers-DCe5nTyP.js +1 -1
- package/dist/auth-profiles-BhXA8Jy2.js +1 -1
- package/dist/auth-token-C75IOb_K.js +1 -1
- package/dist/auth-token-CzgZf-ta.js +1 -1
- package/dist/banner-mIDEloRy.js +1 -1
- package/dist/bonjour-discovery-CpvzLjyB.js +1 -1
- package/dist/bonjour-discovery-wsh3Si1Q.js +1 -1
- package/dist/boolean-Ch3DfXPy.js +1 -1
- package/dist/boolean-D15s2V33.js +1 -1
- package/dist/boolean-DypnRoRK.js +1 -1
- package/dist/brew-COcDl8CB.js +1 -1
- package/dist/brew-DDPm_HfE.js +1 -1
- package/dist/browser-cli-BjzNbvF9.js +1 -1
- package/dist/browser-cli-CgHkgtgV.js +1 -1
- package/dist/build-info.json +2 -2
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/call-BA3O_Qpl.js +1 -1
- package/dist/call-BQT0zCgv.js +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/channel-account-context-BMPAMZEv.js +1 -1
- package/dist/channel-account-context-DAcarnqW.js +1 -1
- package/dist/channel-activity-B04WbrrK.js +1 -1
- package/dist/channel-activity-BPRCQpI6.js +1 -1
- package/dist/channel-activity-D2VTmenR.js +1 -1
- package/dist/channel-activity-DHY5wAyl.js +1 -1
- package/dist/channel-activity-DYpm-0Cz.js +1 -1
- package/dist/channel-options-BYmHreMn.js +1 -1
- package/dist/channel-options-Cbv7VETu.js +1 -1
- package/dist/channel-selection-Ddyykqxv.js +1 -1
- package/dist/channel-selection-oRONo9z3.js +1 -1
- package/dist/channel-web-CK4RqVCH.js +1 -1
- package/dist/channel-web-Xw89Exy3.js +1 -1
- package/dist/channels/plugins/actions/discord.js +1 -1
- package/dist/channels/plugins/actions/signal.js +1 -1
- package/dist/channels/plugins/actions/telegram.js +1 -1
- package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -1
- package/dist/channels-cli-D2y5Xk5i.js +1 -1
- package/dist/channels-cli-cwFjBXcP.js +1 -1
- package/dist/channels-status-issues-8eFrGKyf.js +1 -1
- package/dist/channels-status-issues-PRgOT90w.js +1 -1
- package/dist/chat-envelope-Bznn2SoS.js +1 -1
- package/dist/chat-envelope-HVpKusFc.js +1 -1
- package/dist/clack-prompter-DBPdGdqp.js +1 -1
- package/dist/clack-prompter-Dq0aY6iM.js +1 -1
- package/dist/clawbot-cli-BwG1-8A9.js +1 -1
- package/dist/clawbot-cli-CaNu5A0G.js +1 -1
- package/dist/cleanup-utils-BWm70DoD.js +1 -1
- package/dist/cleanup-utils-D-RhEX6F.js +1 -1
- package/dist/cli-CQKA38bc.js +1 -1
- package/dist/cli-i7P4bYBg.js +1 -1
- package/dist/cli-utils-BY7dLMFy.js +1 -1
- package/dist/cli-utils-BleB1eys.js +1 -1
- package/dist/clipboard-Bk8cviBt.js +1 -1
- package/dist/clipboard-CKT_VIkG.js +1 -1
- package/dist/cmd-argv-BBT5l8AV.js +1 -1
- package/dist/cmd-argv-Bh-KpaZ0.js +1 -1
- package/dist/command-format-BbDT1tlm.js +1 -1
- package/dist/command-format-CLxIPuLR.js +1 -1
- package/dist/command-options-BpOUDl2S.js +1 -1
- package/dist/command-options-Bq5nQxz6.js +1 -1
- package/dist/command-poll-backoff-BZLHYB2k.js +1 -1
- package/dist/command-poll-backoff-Cww_r-24.js +1 -1
- package/dist/command-poll-backoff-Df6cOQrX.js +1 -1
- package/dist/command-poll-backoff-endAPdwn.js +1 -1
- package/dist/command-registry-BYk36N_R.js +1 -1
- package/dist/command-secret-targets-BBTiqQKa.js +1 -1
- package/dist/command-secret-targets-KM3OecbM.js +1 -1
- package/dist/commands-CGpM84iR.js +1 -1
- package/dist/commands-Dy7duWlt.js +1 -1
- package/dist/commands-registry-B3FI6TSl.js +1 -1
- package/dist/commands-registry-CxDVU5s9.js +1 -1
- package/dist/commands-registry-Dn2uuNuy.js +1 -1
- package/dist/commands-registry-Du79fdAL.js +1 -1
- package/dist/compact-CuBCVnVS.js +1 -1
- package/dist/completion-cli-CRNTbZlR.js +1 -1
- package/dist/completion-cli-DbGDCoiM.js +1 -1
- package/dist/config-BqW5S1xL.js +1 -1
- package/dist/config-DAQjvwZw.js +1 -1
- package/dist/config-cli-D_coAWd9.js +1 -1
- package/dist/config-cli-EKXoNzLf.js +1 -1
- package/dist/config-guard-U0wlYLUN.js +1 -1
- package/dist/config-guard-XayIkveC.js +1 -1
- package/dist/config-validation-B0nN9egx.js +1 -1
- package/dist/config-validation-CAHnpjrk.js +1 -1
- package/dist/configure-DNnQRKy8.js +1 -1
- package/dist/configure-NCNskZPe.js +1 -1
- package/dist/connection-auth-BcPbGyxw.js +1 -1
- package/dist/connection-auth-DZ-3Svr_.js +1 -1
- package/dist/context-window-guard-7crlatf9.js +1 -1
- package/dist/context-window-guard-CPChk363.js +1 -1
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/de-DuUYLvt1.js +1 -0
- package/dist/control-ui/assets/es-DHtyqUQZ.js +1 -0
- package/dist/control-ui/assets/index-CYbiPp9k.js +8383 -0
- package/dist/control-ui/assets/index-C_GaJ8wS.css +1 -0
- package/dist/control-ui/assets/pt-BR-D2dJb9G8.js +1 -0
- package/dist/control-ui/assets/zh-CN-BgJ8_lE3.js +1 -0
- package/dist/control-ui/assets/zh-TW-cW5xB87I.js +1 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.svg +22 -0
- package/dist/control-ui/index.html +17 -0
- package/dist/control-ui-assets-BIa0GGDg.js +1 -1
- package/dist/control-ui-assets-CTHGGgaX.js +1 -1
- package/dist/cron-cli-Cro66JtU.js +1 -1
- package/dist/cron-cli-DIeBukvk.js +1 -1
- package/dist/daemon-cli-Cw_fxNgE.js +1 -1
- package/dist/daemon-cli-DQsKS3pT.js +1 -1
- package/dist/daemon-cli.js +1 -1
- package/dist/daemon-install-C_DmJEkV.js +1 -1
- package/dist/daemon-install-D1DacLbM.js +1 -1
- package/dist/daemon-install-plan.shared-BSDdwWjB.js +1 -1
- package/dist/daemon-install-plan.shared-Dx3DBXCG.js +1 -1
- package/dist/daemon-runtime-DHiDbRuC.js +1 -1
- package/dist/daemon-runtime-VcpeBRJV.js +1 -1
- package/dist/dangerous-name-matching-BOmvAibz.js +1 -1
- package/dist/dangerous-name-matching-DtllRqBD.js +1 -1
- package/dist/dangerous-tools-CFRYQJ6V.js +1 -1
- package/dist/dangerous-tools-oYCu5wfC.js +1 -1
- package/dist/deliver-2c-EsQ_W.js +1 -1
- package/dist/deliver-BudDnEIb.js +1 -1
- package/dist/deliver-COKdxPmA.js +1 -1
- package/dist/deliver-DHP2vHKB.js +1 -1
- package/dist/delivery-queue-CKbauSFq.js +1 -1
- package/dist/delivery-queue-nkPJu0fY.js +1 -1
- package/dist/device-pairing-4eDo43Kk.js +1 -1
- package/dist/device-pairing-B7ZXiXp3.js +1 -1
- package/dist/devices-cli-BXUIb_UN.js +1 -1
- package/dist/devices-cli-D7PkbnHO.js +1 -1
- package/dist/diagnostic-Bzd5vlKH.js +1 -1
- package/dist/diagnostic-CFmHdXHP.js +1 -1
- package/dist/diagnostic-CW_Jv5UM.js +1 -1
- package/dist/diagnostic-Dza7-pMC.js +1 -1
- package/dist/diagnostics-BgbeL9KE.js +1 -1
- package/dist/diagnostics-Cdctg9K_.js +1 -1
- package/dist/directory-cli-CxeuNJcC.js +1 -1
- package/dist/directory-cli-DFlYCB5L.js +1 -1
- package/dist/dns-cli-BDbHznhi.js +1 -1
- package/dist/dns-cli-OuwliJ60.js +1 -1
- package/dist/docs-cli-Cdw9Iz9a.js +1 -1
- package/dist/docs-cli-ClD2UyX1.js +1 -1
- package/dist/doctor-completion-BSOX-LSq.js +1 -1
- package/dist/doctor-completion-DXqdpdlo.js +1 -1
- package/dist/doctor-config-flow-DHB8N7tT.js +1 -1
- package/dist/doctor-config-flow-MjfHBDlw.js +1 -1
- package/dist/enable-DVuqWT2a.js +1 -1
- package/dist/enable-DWaSH1HY.js +1 -1
- package/dist/entry-status-CCwwKO43.js +1 -1
- package/dist/entry-status-CoXkbJcX.js +1 -1
- package/dist/entry.js +1 -1
- package/dist/env-D7wNuBx1.js +1 -1
- package/dist/env-overrides-DHtB4kK3.js +1 -1
- package/dist/env-overrides-DXJbFrwI.js +1 -1
- package/dist/errors-6SQWM9dj.js +1 -1
- package/dist/errors-Bunti32V.js +1 -1
- package/dist/exec-B3eleY5O.js +1 -1
- package/dist/exec-DHqLtFYt.js +1 -1
- package/dist/exec-approvals-BXO9Cezj.js +1 -1
- package/dist/exec-approvals-BpBNEy6i.js +1 -1
- package/dist/exec-approvals-allowlist-BKFaHvA5.js +1 -1
- package/dist/exec-approvals-allowlist-DBh9Pm77.js +1 -1
- package/dist/exec-approvals-cli-0neCwpk-.js +1 -1
- package/dist/exec-approvals-cli-BuHSw09B.js +1 -1
- package/dist/exec-safe-bin-runtime-policy-Ck3GO5AB.js +1 -1
- package/dist/exec-safe-bin-runtime-policy-D2WexijZ.js +1 -1
- package/dist/fetch-BI3CnKE3.js +1 -1
- package/dist/fetch-BJT3BrkJ.js +1 -1
- package/dist/fetch-Bn0mWg6a.js +1 -1
- package/dist/fetch-CY5G3PDq.js +1 -1
- package/dist/fetch-Ce-scEU-.js +1 -1
- package/dist/fetch-D0rZDHKO.js +1 -1
- package/dist/fetch-DHo17YmK.js +1 -1
- package/dist/fetch-Dh-apy46.js +1 -1
- package/dist/fetch-Dikjvc5M.js +1 -1
- package/dist/fetch-DsjPfQlp.js +1 -1
- package/dist/fetch-_g8lZ8K8.js +1 -1
- package/dist/fetch-guard-BaRbr_V6.js +1 -1
- package/dist/fetch-guard-BmNIhXP-.js +1 -1
- package/dist/fetch-guard-ChVqc0HF.js +1 -1
- package/dist/fetch-guard-Cji70DJW.js +1 -1
- package/dist/fetch-hy0JKSsm.js +1 -1
- package/dist/fetch-timeout-CdYxWG9w.js +1 -1
- package/dist/fetch-timeout-Cj8_oAls.js +1 -1
- package/dist/fetch-timeout-DoOI_izT.js +1 -1
- package/dist/fetch-timeout-u8g99Ax0.js +1 -1
- package/dist/fetch-xT2jRpqs.js +1 -1
- package/dist/format-Bn1bwJKX.js +1 -1
- package/dist/format-Ce7I7s-k.js +1 -1
- package/dist/format-duration-C8AzNqKh.js +1 -1
- package/dist/format-duration-D5AMtmHa.js +1 -1
- package/dist/format-relative-B9pSIdGe.js +1 -1
- package/dist/format-relative-DkMjYy7z.js +1 -1
- package/dist/frontmatter-BkZkwkVO.js +1 -1
- package/dist/frontmatter-C7mzDNxd.js +1 -1
- package/dist/frontmatter-CzpfPBFl.js +1 -1
- package/dist/gateway-cli-Bj-BYgGN.js +1 -1
- package/dist/gateway-cli-DP65otLl.js +1 -1
- package/dist/gateway-install-token-BIqlEgy0.js +1 -1
- package/dist/gateway-install-token-CtUJl3A3.js +1 -1
- package/dist/gateway-rpc-DJHjmEZz.js +1 -1
- package/dist/gateway-rpc-XRAMeV67.js +1 -1
- package/dist/github-copilot-token-C79yeDKS.js +1 -1
- package/dist/github-copilot-token-DGYAlOmV.js +1 -1
- package/dist/github-copilot-token-DePP-lIf.js +1 -1
- package/dist/github-copilot-token-wm6mbypz.js +1 -1
- package/dist/gmail-setup-utils-CYOH3zzx.js +1 -1
- package/dist/gmail-setup-utils-S-MyEGuj.js +1 -1
- package/dist/group-access-BHKVOhrj.js +1 -1
- package/dist/group-access-D2DOYMfr.js +1 -1
- package/dist/health-Bedsiigi.js +1 -1
- package/dist/health-Cy_CvKbX.js +1 -1
- package/dist/health-format-B1nj3Wfn.js +1 -1
- package/dist/health-format-VBr6LEpt.js +1 -1
- package/dist/heartbeat-visibility-BQ_esv2m.js +1 -1
- package/dist/heartbeat-visibility-q74UdY8O.js +1 -1
- package/dist/help-format-B4aEI7V9.js +1 -1
- package/dist/help-format-BRbF_INg.js +1 -1
- package/dist/helpers-COz1ghcB.js +1 -1
- package/dist/helpers-Cp8gcO6u.js +1 -1
- package/dist/hooks-cli-DrnH2iDk.js +1 -1
- package/dist/hooks-cli-DvfZKyZl.js +1 -1
- package/dist/hooks-status-BHt-Xvh4.js +1 -1
- package/dist/hooks-status-CRJ4J0ZW.js +1 -1
- package/dist/image-BJC11A7e.js +1 -1
- package/dist/image-BKPxWO_2.js +1 -1
- package/dist/image-Ba-mOMMV.js +1 -1
- package/dist/image-D-R3N1it.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inspect-BKV-I1UE.js +1 -1
- package/dist/inspect-z59cgmYc.js +1 -1
- package/dist/install-safe-path-C6kc_8NW.js +1 -1
- package/dist/install-safe-path-iesxijn2.js +1 -1
- package/dist/installs-BNeI_oML.js +1 -1
- package/dist/installs-C1xQLuby.js +1 -1
- package/dist/ipv4-BXZDlz5C.js +1 -1
- package/dist/ipv4-BnPLbv6y.js +1 -1
- package/dist/ir-BYCrFFZ9.js +1 -1
- package/dist/ir-CH7YvSi9.js +1 -1
- package/dist/ir-CSysIkNU.js +1 -1
- package/dist/ir-CZdZsdnI.js +1 -1
- package/dist/is-main-DG5ueqhF.js +1 -1
- package/dist/issue-format-CpTuk_rQ.js +1 -1
- package/dist/issue-format-kj7FXHhi.js +1 -1
- package/dist/kill-tree-DBJW8_Q-.js +1 -1
- package/dist/lifecycle-core-B72WHNHV.js +1 -1
- package/dist/lifecycle-core-dhkH_Nux.js +1 -1
- package/dist/line/accounts.js +1 -1
- package/dist/line/send.js +1 -1
- package/dist/line/template-messages.js +1 -1
- package/dist/links-CBnmRP9D.js +1 -1
- package/dist/links-CySwdMcF.js +1 -1
- package/dist/llm-slug-generator.js +1 -1
- package/dist/load-options-BsOW74dp.js +1 -1
- package/dist/load-options-C7dLuybp.js +1 -1
- package/dist/load-options-DV4j6Aqb.js +1 -1
- package/dist/load-options-Dwt0CeEg.js +1 -1
- package/dist/local-roots-Dxioh0C2.js +1 -1
- package/dist/logger-5W0OocJW.js +1 -1
- package/dist/logger-Bl8URnrW.js +1 -1
- package/dist/logger-DwWqfo66.js +1 -1
- package/dist/logger-kQAOe3qp.js +1 -1
- package/dist/logging-Dz4Qg6th.js +1 -1
- package/dist/logging-KiJmOmw4.js +1 -1
- package/dist/login-BMZxDYaU.js +1 -1
- package/dist/login-BdzP8F8J.js +1 -1
- package/dist/login-BzU0cMck.js +1 -1
- package/dist/login-Cb1A6qwM.js +1 -1
- package/dist/login-qr-BgsmAwKm.js +1 -1
- package/dist/login-qr-Bux8gWTO.js +1 -1
- package/dist/login-qr-COr_25Hx.js +1 -1
- package/dist/login-qr-CxBPOOAK.js +1 -1
- package/dist/login-qr-DnQm7bM4.js +1 -1
- package/dist/logs-cli-BM2XCmrH.js +1 -1
- package/dist/logs-cli-HKhyxaUs.js +1 -1
- package/dist/manager-B6zZuJEB.js +1 -1
- package/dist/manager-BwrZfep3.js +1 -1
- package/dist/manager-C5SBozw4.js +1 -1
- package/dist/manager-CjihRbGa.js +1 -1
- package/dist/memory-cli-CnruTL1h.js +1 -1
- package/dist/memory-cli-DHvscp7X.js +1 -1
- package/dist/model-catalog-BLdaFmIo.js +1 -1
- package/dist/model-catalog-vNCcsy4h.js +1 -1
- package/dist/model-param-b-B0r2cPDw.js +1 -1
- package/dist/model-param-b-BqIr5rY5.js +1 -1
- package/dist/model-picker-BaeW3tiV.js +1 -1
- package/dist/model-picker-DN0czUYS.js +1 -1
- package/dist/model-selection-C2QwHmXT.js +1 -1
- package/dist/model-selection-I1ctjFOB.js +1 -1
- package/dist/model-selection-qkByRv5A.js +1 -1
- package/dist/models-UTdl0vXO.js +1 -1
- package/dist/models-cli-QRONP7EL.js +1 -1
- package/dist/models-cli-vRoB_gfX.js +1 -1
- package/dist/models-config-CWIlroKT.js +1 -1
- package/dist/models-config-DN2Q51fC.js +1 -1
- package/dist/mutable-allowlist-detectors-C4rNVag8.js +1 -1
- package/dist/mutable-allowlist-detectors-CL0qe54J.js +1 -1
- package/dist/node-cli-2-E4-83G.js +1 -1
- package/dist/node-cli-DUI7Zctj.js +1 -1
- package/dist/node-command-policy-Bbmnc16l.js +1 -1
- package/dist/node-command-policy-DgkwfoCs.js +1 -1
- package/dist/node-commands-8GBOiktk.js +1 -1
- package/dist/node-commands-DdkziOTx.js +1 -1
- package/dist/node-resolve-B3BJbmQX.js +1 -1
- package/dist/node-resolve-DLZf3-1V.js +1 -1
- package/dist/node-service-BRfrNp8l.js +1 -1
- package/dist/node-service-C0bl7jcZ.js +1 -1
- package/dist/node-shell-dXp4vk-i.js +1 -1
- package/dist/nodes-cli-DU13-dCL.js +1 -1
- package/dist/nodes-cli-rPeIRj_f.js +1 -1
- package/dist/nodes-screen-C7-5RrbN.js +1 -1
- package/dist/note-D4GAwgha.js +1 -1
- package/dist/note-Dp-d_utk.js +1 -1
- package/dist/npm-pack-install-B23L-AtF.js +1 -1
- package/dist/npm-pack-install-C0te3Oap.js +1 -1
- package/dist/npm-resolution-BCXCw93f.js +1 -1
- package/dist/npm-resolution-Cmm82lui.js +1 -1
- package/dist/oauth-env-DAamJ1oz.js +1 -1
- package/dist/oauth-env-DSLBTWb1.js +1 -1
- package/dist/oauth-tls-preflight-BSBRDIfC.js +1 -1
- package/dist/oauth-tls-preflight-ByNjbUR5.js +1 -1
- package/dist/ollama-setup-CKt3tF-S.js +1 -1
- package/dist/ollama-setup-I8lghdX1.js +1 -1
- package/dist/onboard-B3WSjKCu.js +1 -1
- package/dist/onboard-C65vdb94.js +1 -1
- package/dist/onboard-channels-9CmG3Jgn.js +1 -1
- package/dist/onboard-channels-CV1AK9jY.js +1 -1
- package/dist/onboard-config-B7U20YRw.js +1 -1
- package/dist/onboard-config-DS9dUv8M.js +1 -1
- package/dist/onboard-custom-CwHYUB0T.js +1 -1
- package/dist/onboard-custom-uwufXtQf.js +1 -1
- package/dist/onboard-helpers-CGJLUoxR.js +1 -1
- package/dist/onboard-helpers-DbpWQoiB.js +1 -1
- package/dist/onboard-hooks-CERzXObm.js +1 -1
- package/dist/onboard-hooks-gQ3sxBNi.js +1 -1
- package/dist/onboard-provider-auth-flags-CqbipO7D.js +1 -1
- package/dist/onboard-provider-auth-flags-Dvwzdz37.js +1 -1
- package/dist/onboard-remote-BeDZ_gbH.js +1 -1
- package/dist/onboard-remote-KTUx-3G1.js +1 -1
- package/dist/onboard-search-f2tJD4hg.js +1 -1
- package/dist/onboard-search-fslKKhyg.js +1 -1
- package/dist/onboard-skills-BoS_oVdm.js +1 -1
- package/dist/onboard-skills-C4omGWoD.js +1 -1
- package/dist/onboarding-B8icigkk.js +1 -1
- package/dist/onboarding-BJRqNsZ8.js +1 -1
- package/dist/onboarding.finalize-D0qISqn-.js +1 -1
- package/dist/onboarding.finalize-Ds9NwPBL.js +1 -1
- package/dist/onboarding.gateway-config-F8n_QFUR.js +1 -1
- package/dist/onboarding.gateway-config-eno73eHw.js +1 -1
- package/dist/onboarding.secret-input-B6fzeucQ.js +1 -1
- package/dist/onboarding.secret-input-CBuD3c32.js +1 -1
- package/dist/openai-codex-model-default-Df2T3foI.js +1 -1
- package/dist/openai-codex-model-default-DtIeKJm0.js +1 -1
- package/dist/openai-model-default-DIE55yBt.js +1 -1
- package/dist/openai-model-default-sqvWk4kB.js +1 -1
- package/dist/openclaw-exec-env-BWbOu_YC.js +1 -1
- package/dist/openclaw-root-CnsBf6ZU.js +1 -1
- package/dist/openclaw-root-D_0Q6--h.js +1 -1
- package/dist/outbound-B88MLJN3.js +1 -1
- package/dist/outbound-C-4qToKv.js +1 -1
- package/dist/outbound-CSk4oF0g.js +1 -1
- package/dist/outbound-DKMI_4xm.js +1 -1
- package/dist/outbound-attachment-BOax42-M.js +1 -1
- package/dist/outbound-attachment-DBNxdLYh.js +1 -1
- package/dist/outbound-attachment-DVjJQ3V6.js +1 -1
- package/dist/outbound-attachment-aZWcoZ-N.js +1 -1
- package/dist/pairing-cli-Cby6Ww8F.js +1 -1
- package/dist/pairing-cli-DiJb_a0V.js +1 -1
- package/dist/pairing-labels-BP1h0iHy.js +1 -1
- package/dist/pairing-labels-ryOnuOFA.js +1 -1
- package/dist/pairing-store-Bv4KSELv.js +1 -1
- package/dist/pairing-store-CjTPxq0X.js +1 -1
- package/dist/pairing-token-CKX1ds78.js +1 -1
- package/dist/pairing-token-CX0SUJsB.js +1 -1
- package/dist/parse-duration-XTjMKl8s.js +1 -1
- package/dist/parse-finite-number-DqzUM-_s.js +1 -1
- package/dist/parse-finite-number-dBmDLLKL.js +1 -1
- package/dist/parse-log-line-CsYLg7Qu.js +1 -1
- package/dist/parse-log-line-NV-cipB_.js +1 -1
- package/dist/parse-port-Bv1Y9Wk5.js +1 -1
- package/dist/parse-port-JVwkxcZ8.js +1 -1
- package/dist/parse-timeout-DWSGfCkQ.js +1 -1
- package/dist/parse-timeout-Dx4QnVzo.js +1 -1
- package/dist/path-alias-guards-kY_ZbWs-.js +1 -1
- package/dist/path-alias-guards-mvyLCPlN.js +1 -1
- package/dist/path-env-BPd1Yd-i.js +1 -1
- package/dist/path-env-emdAQejM.js +1 -1
- package/dist/path-safety-BukYK8Kd.js +1 -1
- package/dist/path-safety-DaaMJFdt.js +1 -1
- package/dist/paths-B4IRk3wi.js +1 -1
- package/dist/paths-BfjJY2VL.js +1 -1
- package/dist/paths-BjD3T_xq.js +1 -1
- package/dist/paths-BpQOWYiT.js +1 -1
- package/dist/paths-CChBdtE8.js +1 -1
- package/dist/paths-CrCoPIVK.js +1 -1
- package/dist/paths-piJASC5k.js +1 -1
- package/dist/paths-yLEk_25I.js +1 -1
- package/dist/pi-embedded-ZEWNj7P5.js +1 -1
- package/dist/pi-embedded-bqE4EmdD.js +1 -1
- package/dist/pi-model-discovery-6myCPEJE.js +1 -1
- package/dist/pi-model-discovery-AiV9h8k6.js +1 -1
- package/dist/pi-model-discovery-BzqdozHB.js +1 -1
- package/dist/pi-model-discovery-C8YBu6D4.js +1 -1
- package/dist/pi-tools.before-tool-call.runtime-CPAJMO7J.js +1 -1
- package/dist/pi-tools.before-tool-call.runtime-CYmLHod0.js +1 -1
- package/dist/pi-tools.before-tool-call.runtime-CfVqI0Ng.js +1 -1
- package/dist/pi-tools.before-tool-call.runtime-D9FlPJ_v.js +1 -1
- package/dist/pi-tools.policy-CeSKHaKa.js +1 -1
- package/dist/plugin-auto-enable-Cp7L8ko8.js +1 -1
- package/dist/plugin-auto-enable-DCOxqfDQ.js +1 -1
- package/dist/plugin-install-plan-BobX0y9S.js +1 -1
- package/dist/plugin-install-plan-NvDGp0d8.js +1 -1
- package/dist/plugin-registry-Fg000e4I.js +1 -1
- package/dist/plugin-registry-fm5tDUbE.js +1 -1
- package/dist/plugin-sdk/account-id.cjs +1 -1
- package/dist/plugin-sdk/account-id.js +1 -1
- package/dist/plugin-sdk/acpx.cjs +1 -1
- package/dist/plugin-sdk/acpx.js +1 -1
- package/dist/plugin-sdk/active-listener-BFeaYGID.js +1 -1
- package/dist/plugin-sdk/active-listener-BszCM2Au.cjs +1 -1
- package/dist/plugin-sdk/active-listener-CIcleJgU.cjs +1 -1
- package/dist/plugin-sdk/active-listener-Cqgd7xVh.cjs +1 -1
- package/dist/plugin-sdk/active-listener-D578zEtk.cjs +1 -1
- package/dist/plugin-sdk/active-listener-D6gGPLq-.js +1 -1
- package/dist/plugin-sdk/active-listener-DKSZRn4x.cjs +1 -1
- package/dist/plugin-sdk/active-listener-DNO10F1L.js +1 -1
- package/dist/plugin-sdk/active-listener-DQq07Aar.js +1 -1
- package/dist/plugin-sdk/active-listener-Dle_kYqb.js +1 -1
- package/dist/plugin-sdk/active-listener-DmJcHkMC.js +1 -1
- package/dist/plugin-sdk/active-listener-UmFpcYFY.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-39TRXDEA.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-7qlqJ_ou.js +1 -1
- package/dist/plugin-sdk/api-key-rotation-BY7fLi9z.js +1 -1
- package/dist/plugin-sdk/api-key-rotation-CF9_CKS-.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-CWylhFOt.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-ClZmonv2.js +1 -1
- package/dist/plugin-sdk/api-key-rotation-CmesQWXP.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-Cs6II2__.js +1 -1
- package/dist/plugin-sdk/api-key-rotation-CxaiMcI1.js +1 -1
- package/dist/plugin-sdk/api-key-rotation-D5cfmg7E.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-DkP7KnSm.cjs +1 -1
- package/dist/plugin-sdk/api-key-rotation-mDqgBFMG.js +1 -1
- package/dist/plugin-sdk/audio-preflight-B-HrF5Oc.js +1 -1
- package/dist/plugin-sdk/audio-preflight-B2MGeSoT.js +1 -1
- package/dist/plugin-sdk/audio-preflight-BVjiz_Qk.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-Behqe7F3.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-C0ncOCbK.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-C1o1n-KK.js +1 -1
- package/dist/plugin-sdk/audio-preflight-CzLYTZ5P.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-DDiBwIB9.js +1 -1
- package/dist/plugin-sdk/audio-preflight-DQyh-XSn.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-WH9WDR81.cjs +1 -1
- package/dist/plugin-sdk/audio-preflight-ZPLO3G1S.js +1 -1
- package/dist/plugin-sdk/audio-preflight-s3BAID12.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-2-ZQ5Md-.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-BO7T_SzP.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-CRYJlAeP.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-CmW24oVR.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-CmYuWS0_.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-CslXJs5c.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-DE1tKTQV.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-DZR84B28.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-DoR-NOcV.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-IE4olXkd.cjs +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-YiDQM_Rb.js +1 -1
- package/dist/plugin-sdk/audio-transcription-runner-kAVM4YFR.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-7LqcvqFo.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-BQFUzFc0.cjs +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-BYtdDX9G.cjs +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-BzEtBUX6.cjs +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-CBUmGrl4.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-ChlVgt2y.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-DLRX7LR0.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-DbJW5X3L.cjs +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-Du9LAxDa.cjs +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-DylNnj1m.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-voi5sPwF.js +1 -1
- package/dist/plugin-sdk/audit-membership-runtime-yWYvSpgZ.cjs +1 -1
- package/dist/plugin-sdk/bluebubbles.cjs +1 -1
- package/dist/plugin-sdk/bluebubbles.js +1 -1
- package/dist/plugin-sdk/channel-activity-Bed876M5.js +1 -1
- package/dist/plugin-sdk/channel-activity-Bu8tAmGa.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-C01Im_o1.js +1 -1
- package/dist/plugin-sdk/channel-activity-CIycjzUC.js +1 -1
- package/dist/plugin-sdk/channel-activity-Cdkn3O_i.js +1 -1
- package/dist/plugin-sdk/channel-activity-Cia2G3v5.js +1 -1
- package/dist/plugin-sdk/channel-activity-D6d2wU8H.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-DNv7JLBx.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-Df3DfYyZ.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-Rut-HCfT.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-mffNSQrX.cjs +1 -1
- package/dist/plugin-sdk/channel-activity-qjwFifkE.js +1 -1
- package/dist/plugin-sdk/channel-web-Ces_xx2T.js +1 -1
- package/dist/plugin-sdk/channel-web-CsmEnYD8.cjs +1 -1
- package/dist/plugin-sdk/channel-web-DtzNv49H.cjs +1 -1
- package/dist/plugin-sdk/channel-web-VEZVrMYU.js +1 -1
- package/dist/plugin-sdk/command-poll-backoff-4910Mpwp.js +1 -1
- package/dist/plugin-sdk/command-poll-backoff-BLJZzV5W.cjs +1 -1
- package/dist/plugin-sdk/command-poll-backoff-CUNcN0dv.cjs +1 -1
- package/dist/plugin-sdk/command-poll-backoff-Cww_r-24.js +1 -1
- package/dist/plugin-sdk/command-poll-backoff-D0lJhquZ.js +1 -1
- package/dist/plugin-sdk/command-poll-backoff-Glwt3wHa.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-33H8WYTk.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-BGdm1KdC.js +1 -1
- package/dist/plugin-sdk/commands-registry-BgV9i-bj.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-BifdCfty.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-CJLBIIIp.js +1 -1
- package/dist/plugin-sdk/commands-registry-CWK9ARbc.js +1 -1
- package/dist/plugin-sdk/commands-registry-CfVD1h8L.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-CpG4pxrA.js +1 -1
- package/dist/plugin-sdk/commands-registry-D-AnIQWz.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-DBI4cPqT.cjs +1 -1
- package/dist/plugin-sdk/commands-registry-DOBe9cWq.js +1 -1
- package/dist/plugin-sdk/commands-registry-DqemUyiv.js +1 -1
- package/dist/plugin-sdk/common-CEe87dmX.js +1 -1
- package/dist/plugin-sdk/common-CjMKHm2Z.cjs +1 -1
- package/dist/plugin-sdk/compat.cjs +1 -1
- package/dist/plugin-sdk/compat.js +1 -1
- package/dist/plugin-sdk/config-DT_csBcZ.cjs +1 -1
- package/dist/plugin-sdk/config-LR8GH3Ws.js +1 -1
- package/dist/plugin-sdk/copilot-proxy.cjs +1 -1
- package/dist/plugin-sdk/copilot-proxy.js +1 -1
- package/dist/plugin-sdk/core.cjs +1 -1
- package/dist/plugin-sdk/core.js +1 -1
- package/dist/plugin-sdk/deliver-AORlkcbD.cjs +1 -1
- package/dist/plugin-sdk/deliver-BiBFW5fm.cjs +1 -1
- package/dist/plugin-sdk/deliver-BpqEPwLO.cjs +1 -1
- package/dist/plugin-sdk/deliver-BvC6aUKM.js +1 -1
- package/dist/plugin-sdk/deliver-CT0AIuK1.cjs +1 -1
- package/dist/plugin-sdk/deliver-CmddcjtG.cjs +1 -1
- package/dist/plugin-sdk/deliver-DFz5N1Eh.js +1 -1
- package/dist/plugin-sdk/deliver-DcJWpoqf.cjs +1 -1
- package/dist/plugin-sdk/deliver-ILim6ANU.js +1 -1
- package/dist/plugin-sdk/deliver-QgxW9IxV.js +1 -1
- package/dist/plugin-sdk/deliver-cT-Q8v0h.js +1 -1
- package/dist/plugin-sdk/deliver-cu_NQTmb.js +1 -1
- package/dist/plugin-sdk/device-pair.cjs +1 -1
- package/dist/plugin-sdk/device-pair.js +1 -1
- package/dist/plugin-sdk/diagnostic-BCyE1aYH.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-BFea3l_a.js +1 -1
- package/dist/plugin-sdk/diagnostic-BvR96WdC.js +1 -1
- package/dist/plugin-sdk/diagnostic-C0xDsk89.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-CEPhLgsW.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-CbLwUqTE.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-CbfxoqI_.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-DDwUPG1m.js +1 -1
- package/dist/plugin-sdk/diagnostic-DS_mKKOu.js +1 -1
- package/dist/plugin-sdk/diagnostic-DYpehqHU.cjs +1 -1
- package/dist/plugin-sdk/diagnostic-DkncnZ3G.js +1 -1
- package/dist/plugin-sdk/diagnostic-Dz8HPEDe.js +1 -1
- package/dist/plugin-sdk/diagnostics-otel.cjs +1 -1
- package/dist/plugin-sdk/diagnostics-otel.js +1 -1
- package/dist/plugin-sdk/diffs.cjs +1 -1
- package/dist/plugin-sdk/diffs.js +1 -1
- package/dist/plugin-sdk/discord.cjs +1 -1
- package/dist/plugin-sdk/discord.js +1 -1
- package/dist/plugin-sdk/dispatch-6m3206FH.js +1 -1
- package/dist/plugin-sdk/dispatch-BYZNaz0n.cjs +1 -1
- package/dist/plugin-sdk/dispatch-BahZCe-D.js +1 -1
- package/dist/plugin-sdk/dispatch-Bi3yeWxb.cjs +1 -1
- package/dist/plugin-sdk/dispatch-BjB_TqWy.cjs +1 -1
- package/dist/plugin-sdk/dispatch-CNR186B3.js +1 -1
- package/dist/plugin-sdk/dispatch-CStT30wi.cjs +1 -1
- package/dist/plugin-sdk/dispatch-CdZAW9dg.cjs +1 -1
- package/dist/plugin-sdk/dispatch-Ewg2Jgw9.js +1 -1
- package/dist/plugin-sdk/dispatch-HRTsdeCV.js +1 -1
- package/dist/plugin-sdk/feishu.cjs +1 -1
- package/dist/plugin-sdk/feishu.js +1 -1
- package/dist/plugin-sdk/fetch-7Iq9POda.js +1 -1
- package/dist/plugin-sdk/fetch-B1GR6-u4.js +1 -1
- package/dist/plugin-sdk/fetch-B27H-XCf.js +1 -1
- package/dist/plugin-sdk/fetch-BMYDLRWo.js +1 -1
- package/dist/plugin-sdk/fetch-BN9y3kTg.cjs +1 -1
- package/dist/plugin-sdk/fetch-BVEVk5YF.js +1 -1
- package/dist/plugin-sdk/fetch-BY6lVRlY.cjs +1 -1
- package/dist/plugin-sdk/fetch-Bi8krAaT.cjs +1 -1
- package/dist/plugin-sdk/fetch-BjXhwqrE.cjs +1 -1
- package/dist/plugin-sdk/fetch-BtZY623f.js +1 -1
- package/dist/plugin-sdk/fetch-C-HRWp5R.js +1 -1
- package/dist/plugin-sdk/fetch-C3LEMysf.js +1 -1
- package/dist/plugin-sdk/fetch-CCLWsYaQ.js +1 -1
- package/dist/plugin-sdk/fetch-CZewCAvu.cjs +1 -1
- package/dist/plugin-sdk/fetch-ClKErpni.cjs +1 -1
- package/dist/plugin-sdk/fetch-DBRI0sKI.js +1 -1
- package/dist/plugin-sdk/fetch-DQxuOB8o.cjs +1 -1
- package/dist/plugin-sdk/fetch-DUMEaqum.cjs +1 -1
- package/dist/plugin-sdk/fetch-DpwR_cJU.cjs +1 -1
- package/dist/plugin-sdk/fetch-J0IzopiJ.js +1 -1
- package/dist/plugin-sdk/fetch-guard-D8TdhTHU.js +1 -1
- package/dist/plugin-sdk/fetch-guard-DC_pFJEy.js +1 -1
- package/dist/plugin-sdk/fetch-guard-DDkd30BG.js +1 -1
- package/dist/plugin-sdk/fetch-guard-DELiFG5g.js +1 -1
- package/dist/plugin-sdk/fetch-guard-DIYjBRpq.cjs +1 -1
- package/dist/plugin-sdk/fetch-guard-DPVfELS7.js +1 -1
- package/dist/plugin-sdk/fetch-guard-Dpz6CnJY.cjs +1 -1
- package/dist/plugin-sdk/fetch-guard-DqNKwgHP.cjs +1 -1
- package/dist/plugin-sdk/fetch-guard-DqTxZ3G8.cjs +1 -1
- package/dist/plugin-sdk/fetch-guard-EoAitPe9.cjs +1 -1
- package/dist/plugin-sdk/fetch-guard-qfU6iTvp.js +1 -1
- package/dist/plugin-sdk/fetch-guard-u2Dt6P9i.cjs +1 -1
- package/dist/plugin-sdk/fetch-lw-aF17e.cjs +1 -1
- package/dist/plugin-sdk/fetch-timeout-6oZsqWxA.js +1 -1
- package/dist/plugin-sdk/fetch-timeout-BygUD0rd.cjs +1 -1
- package/dist/plugin-sdk/fetch-timeout-CLw1U7VS.js +1 -1
- package/dist/plugin-sdk/fetch-timeout-CX1w-9p4.cjs +1 -1
- package/dist/plugin-sdk/fetch-timeout-Coc9xyC3.cjs +1 -1
- package/dist/plugin-sdk/fetch-timeout-Cz6GuU_c.js +1 -1
- package/dist/plugin-sdk/fetch-timeout-DC8T2JCr.js +1 -1
- package/dist/plugin-sdk/fetch-timeout-DFDmks9T.cjs +1 -1
- package/dist/plugin-sdk/fetch-timeout-DkYpp08Q.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-BHdMLLqf.cjs +1 -1
- package/dist/plugin-sdk/github-copilot-token-Bt4PduRB.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-C1O2cBqk.cjs +1 -1
- package/dist/plugin-sdk/github-copilot-token-C1hiDugd.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-C8j8_NjX.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-CCrgp2py.cjs +1 -1
- package/dist/plugin-sdk/github-copilot-token-DoHgkI2r.cjs +1 -1
- package/dist/plugin-sdk/github-copilot-token-N8vnLZPw.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-TMkfxxD2.cjs +1 -1
- package/dist/plugin-sdk/github-copilot-token-vKAKX6iE.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-ylX_gawo.js +1 -1
- package/dist/plugin-sdk/github-copilot-token-zskwAEpd.cjs +1 -1
- package/dist/plugin-sdk/google-gemini-cli-auth.cjs +1 -1
- package/dist/plugin-sdk/google-gemini-cli-auth.js +1 -1
- package/dist/plugin-sdk/googlechat.cjs +1 -1
- package/dist/plugin-sdk/googlechat.js +1 -1
- package/dist/plugin-sdk/image-0OHO98b9.cjs +1 -1
- package/dist/plugin-sdk/image-B9SLKAOs.cjs +1 -1
- package/dist/plugin-sdk/image-BVnZq5Y4.js +1 -1
- package/dist/plugin-sdk/image-CKLAyhco.js +1 -1
- package/dist/plugin-sdk/image-DUHEJeBF.js +1 -1
- package/dist/plugin-sdk/image-DngxW2Nh.cjs +1 -1
- package/dist/plugin-sdk/image-DrPh2689.cjs +1 -1
- package/dist/plugin-sdk/image-ISWO0Dwt.js +1 -1
- package/dist/plugin-sdk/image-KfZYW6Lh.cjs +1 -1
- package/dist/plugin-sdk/image-YVlw68CK.js +1 -1
- package/dist/plugin-sdk/image-gehqJnV6.js +1 -1
- package/dist/plugin-sdk/image-jUYo-0eT.cjs +1 -1
- package/dist/plugin-sdk/imessage.cjs +1 -1
- package/dist/plugin-sdk/imessage.js +1 -1
- package/dist/plugin-sdk/index.cjs +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/ir-78toXVqC.cjs +1 -1
- package/dist/plugin-sdk/ir-A_TqKaXP.cjs +1 -1
- package/dist/plugin-sdk/ir-B0_rUT7m.js +1 -1
- package/dist/plugin-sdk/ir-B7agH4cQ.cjs +1 -1
- package/dist/plugin-sdk/ir-B9ap_YNW.cjs +1 -1
- package/dist/plugin-sdk/ir-BxKSHYao.cjs +1 -1
- package/dist/plugin-sdk/ir-BzZArF6l.js +1 -1
- package/dist/plugin-sdk/ir-CpkEWZD6.js +1 -1
- package/dist/plugin-sdk/ir-D4Dz-giw.cjs +1 -1
- package/dist/plugin-sdk/ir-DJ08DSkk.js +1 -1
- package/dist/plugin-sdk/ir-L2vhtuGx.js +1 -1
- package/dist/plugin-sdk/ir-ntSck5Kp.js +1 -1
- package/dist/plugin-sdk/irc.cjs +1 -1
- package/dist/plugin-sdk/irc.js +1 -1
- package/dist/plugin-sdk/keyed-async-queue.cjs +1 -1
- package/dist/plugin-sdk/keyed-async-queue.js +1 -1
- package/dist/plugin-sdk/line.cjs +1 -1
- package/dist/plugin-sdk/line.js +1 -1
- package/dist/plugin-sdk/llm-task.cjs +1 -1
- package/dist/plugin-sdk/llm-task.js +1 -1
- package/dist/plugin-sdk/load-options-B9Ss5YOO.js +1 -1
- package/dist/plugin-sdk/load-options-BOfn6Zgo.cjs +1 -1
- package/dist/plugin-sdk/load-options-BXvm8HVv.js +1 -1
- package/dist/plugin-sdk/load-options-Bb7u8yZz.cjs +1 -1
- package/dist/plugin-sdk/load-options-BcSg1ODN.js +1 -1
- package/dist/plugin-sdk/load-options-NqnXJ-Nh.cjs +1 -1
- package/dist/plugin-sdk/lobster.cjs +1 -1
- package/dist/plugin-sdk/lobster.js +1 -1
- package/dist/plugin-sdk/local-roots-B0zm186S.js +1 -1
- package/dist/plugin-sdk/local-roots-B4Uy4kG3.cjs +1 -1
- package/dist/plugin-sdk/local-roots-CM1R1Ncr.cjs +1 -1
- package/dist/plugin-sdk/local-roots-CW78ZeZV.js +1 -1
- package/dist/plugin-sdk/local-roots-CnsaE7a_.js +1 -1
- package/dist/plugin-sdk/local-roots-D1k-fAlE.cjs +1 -1
- package/dist/plugin-sdk/local-roots-DQ_vfJPK.js +1 -1
- package/dist/plugin-sdk/local-roots-DYlB1au6.cjs +1 -1
- package/dist/plugin-sdk/local-roots-H4-t0qG_.js +1 -1
- package/dist/plugin-sdk/local-roots-SCyeUfM3.cjs +1 -1
- package/dist/plugin-sdk/local-roots-l4PqCmiU.js +1 -1
- package/dist/plugin-sdk/local-roots-xHoEq1Fq.cjs +1 -1
- package/dist/plugin-sdk/logger-6O6OsYBL.cjs +1 -1
- package/dist/plugin-sdk/logger-BlddiV_d.cjs +1 -1
- package/dist/plugin-sdk/logger-Bm93ZKOk.cjs +1 -1
- package/dist/plugin-sdk/logger-BtrWb0dj.js +1 -1
- package/dist/plugin-sdk/logger-C210xuWx.js +1 -1
- package/dist/plugin-sdk/logger-DJGHvDbX.js +1 -1
- package/dist/plugin-sdk/logger-DPlqYkRm.cjs +1 -1
- package/dist/plugin-sdk/logger-DUYnS-W3.cjs +1 -1
- package/dist/plugin-sdk/logger-DwWqfo66.js +1 -1
- package/dist/plugin-sdk/logger-vBDTZWl3.js +1 -1
- package/dist/plugin-sdk/login-BN1TsFp4.cjs +1 -1
- package/dist/plugin-sdk/login-BXUtcSnB.cjs +1 -1
- package/dist/plugin-sdk/login-BoMH2iJT.js +1 -1
- package/dist/plugin-sdk/login-BtT7yRJO.js +1 -1
- package/dist/plugin-sdk/login-COzybMRK.js +1 -1
- package/dist/plugin-sdk/login-Cw1jFbel.cjs +1 -1
- package/dist/plugin-sdk/login-DEmpr5YK.js +1 -1
- package/dist/plugin-sdk/login-Dln00cFs.cjs +1 -1
- package/dist/plugin-sdk/login-S2Fe5n5K.cjs +1 -1
- package/dist/plugin-sdk/login-TieaF0ts.cjs +1 -1
- package/dist/plugin-sdk/login-ZQK4uJLw.js +1 -1
- package/dist/plugin-sdk/login-fKxJv0_F.js +1 -1
- package/dist/plugin-sdk/login-qr-1ilmySGx.js +1 -1
- package/dist/plugin-sdk/login-qr-B0ZSZaNI.js +1 -1
- package/dist/plugin-sdk/login-qr-B2P2Ky4j.js +1 -1
- package/dist/plugin-sdk/login-qr-B2U87iU8.js +1 -1
- package/dist/plugin-sdk/login-qr-B4x_eWI_.js +1 -1
- package/dist/plugin-sdk/login-qr-BIaJB24t.cjs +1 -1
- package/dist/plugin-sdk/login-qr-BMl5Beq2.cjs +1 -1
- package/dist/plugin-sdk/login-qr-Bkm3QorK.cjs +1 -1
- package/dist/plugin-sdk/login-qr-ClL8FMAJ.cjs +1 -1
- package/dist/plugin-sdk/login-qr-DFVK1lg-.js +1 -1
- package/dist/plugin-sdk/login-qr-DhieI9fL.cjs +1 -1
- package/dist/plugin-sdk/login-qr-DyQT1QnE.cjs +1 -1
- package/dist/plugin-sdk/manager-0tvX3Z_N.cjs +1 -1
- package/dist/plugin-sdk/manager-8uylP7PH.cjs +1 -1
- package/dist/plugin-sdk/manager-B6hWglXe.js +1 -1
- package/dist/plugin-sdk/manager-BGoKN9ur.js +1 -1
- package/dist/plugin-sdk/manager-BRP1lzb6.js +1 -1
- package/dist/plugin-sdk/manager-BeLNhsXC.cjs +1 -1
- package/dist/plugin-sdk/manager-BnytMgmq.js +1 -1
- package/dist/plugin-sdk/manager-BoMQeM1I.cjs +1 -1
- package/dist/plugin-sdk/manager-CYZY9vcM.js +1 -1
- package/dist/plugin-sdk/manager-DCDy2V1U.cjs +1 -1
- package/dist/plugin-sdk/manager-DE7sDip8.cjs +1 -1
- package/dist/plugin-sdk/manager-PwgQZNK1.js +1 -1
- package/dist/plugin-sdk/matrix.cjs +1 -1
- package/dist/plugin-sdk/matrix.js +1 -1
- package/dist/plugin-sdk/mattermost.cjs +1 -1
- package/dist/plugin-sdk/mattermost.js +1 -1
- package/dist/plugin-sdk/memory-core.cjs +1 -1
- package/dist/plugin-sdk/memory-core.js +1 -1
- package/dist/plugin-sdk/minimax-portal-auth.cjs +1 -1
- package/dist/plugin-sdk/minimax-portal-auth.js +1 -1
- package/dist/plugin-sdk/model-auth-BgS7ynQw.cjs +1 -1
- package/dist/plugin-sdk/model-auth-CKlA2xRB.cjs +1 -1
- package/dist/plugin-sdk/model-auth-CLnFIqcf.cjs +1 -1
- package/dist/plugin-sdk/model-auth-D7YupJDS.js +1 -1
- package/dist/plugin-sdk/model-auth-eNVBeC-B.js +1 -1
- package/dist/plugin-sdk/model-auth-fJrNIbke.cjs +1 -1
- package/dist/plugin-sdk/model-auth-g6eGgTwR.js +1 -1
- package/dist/plugin-sdk/model-auth-wcxJptQX.js +1 -1
- package/dist/plugin-sdk/model-selection-4ExiFkaW.js +1 -1
- package/dist/plugin-sdk/model-selection-CZY_x2-a.cjs +1 -1
- package/dist/plugin-sdk/msteams.cjs +1 -1
- package/dist/plugin-sdk/msteams.js +1 -1
- package/dist/plugin-sdk/nextcloud-talk.cjs +1 -1
- package/dist/plugin-sdk/nextcloud-talk.js +1 -1
- package/dist/plugin-sdk/nostr.cjs +1 -1
- package/dist/plugin-sdk/nostr.js +1 -1
- package/dist/plugin-sdk/outbound-2VVSR_d4.js +1 -1
- package/dist/plugin-sdk/outbound-B03BQa7T.cjs +1 -1
- package/dist/plugin-sdk/outbound-BE8CJ9c_.js +1 -1
- package/dist/plugin-sdk/outbound-BWtGs0dn.cjs +1 -1
- package/dist/plugin-sdk/outbound-BrD0UsX0.js +1 -1
- package/dist/plugin-sdk/outbound-Bvu4LbQx.js +1 -1
- package/dist/plugin-sdk/outbound-C5rNt-8z.cjs +1 -1
- package/dist/plugin-sdk/outbound-C6BJCoYf.cjs +1 -1
- package/dist/plugin-sdk/outbound-Cgc0JJtB.js +1 -1
- package/dist/plugin-sdk/outbound-DAHIkpiA.cjs +1 -1
- package/dist/plugin-sdk/outbound-DnO_udAm.cjs +1 -1
- package/dist/plugin-sdk/outbound-UAHsCNyW.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-0QahtSQB.cjs +1 -1
- package/dist/plugin-sdk/outbound-attachment-8qvAj1MK.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-B6SJy_CG.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-BVdSGifg.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-C-QqSQ79.cjs +1 -1
- package/dist/plugin-sdk/outbound-attachment-CYGrnygD.cjs +1 -1
- package/dist/plugin-sdk/outbound-attachment-CtA5eBgj.cjs +1 -1
- package/dist/plugin-sdk/outbound-attachment-D8Ng5uVX.cjs +1 -1
- package/dist/plugin-sdk/outbound-attachment-DS0S0NLK.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-Ds2XsjQl.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-acB4qID1.js +1 -1
- package/dist/plugin-sdk/outbound-attachment-x4Q2SVIA.cjs +1 -1
- package/dist/plugin-sdk/paths-BPlgbwrb.cjs +1 -1
- package/dist/plugin-sdk/paths-Bcdg3ma0.cjs +1 -1
- package/dist/plugin-sdk/paths-BpQOWYiT.js +1 -1
- package/dist/plugin-sdk/paths-BvlJvmRS.cjs +1 -1
- package/dist/plugin-sdk/paths-CIcxeNL-.cjs +1 -1
- package/dist/plugin-sdk/paths-CXgWvWAM.js +1 -1
- package/dist/plugin-sdk/paths-Chp3zwtq.cjs +1 -1
- package/dist/plugin-sdk/paths-CnHSNSeR.js +1 -1
- package/dist/plugin-sdk/paths-Cqca1YmF.cjs +1 -1
- package/dist/plugin-sdk/paths-CtrEseGU.js +1 -1
- package/dist/plugin-sdk/paths-D55o_j8-.js +1 -1
- package/dist/plugin-sdk/paths-D90l3h_o.cjs +1 -1
- package/dist/plugin-sdk/paths-DaRoqzBQ.js +1 -1
- package/dist/plugin-sdk/paths-Dd7r1qlB.cjs +1 -1
- package/dist/plugin-sdk/paths-DhSjTRMz.js +1 -1
- package/dist/plugin-sdk/paths-Do0djuaj.js +1 -1
- package/dist/plugin-sdk/paths-J4JUiRsa.js +1 -1
- package/dist/plugin-sdk/paths-cBAF6Bj0.js +1 -1
- package/dist/plugin-sdk/paths-piJASC5k.js +1 -1
- package/dist/plugin-sdk/paths-rO4ehkyU.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery--UcCzdQg.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-Bi4dKtW0.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-CCK2Ppj9.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-CRSZ0OFi.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-Cx_r4FGY.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-D3JQMjAa.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DN1RHetG.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DVFSU0-f.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DWMAAhA-.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DYOHzCjs.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DdSVvbQ5.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-DejkxBol.js +1 -1
- package/dist/plugin-sdk/pi-model-discovery-SmVAFMj_.cjs +1 -1
- package/dist/plugin-sdk/pi-model-discovery-ma8st1Ek.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-B2WodYBY.cjs +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BC114tUb.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BF6jP1nM.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Beg-U7Z-.cjs +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BkEYsSLL.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-C21sWtkh.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CKkgBGIj.cjs +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CNun__L-.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Clulhv2X.cjs +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-DvwL5in9.cjs +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-FnzjmZqP.js +1 -1
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Rq5y0QJ2.cjs +1 -1
- package/dist/plugin-sdk/polls-BuaJuIpV.cjs +1 -1
- package/dist/plugin-sdk/polls-CBAGZuJ6.js +1 -1
- package/dist/plugin-sdk/polls-CSKMbBIS.js +1 -1
- package/dist/plugin-sdk/polls-D0wY0FvT.cjs +1 -1
- package/dist/plugin-sdk/polls-PGxiE05J.js +1 -1
- package/dist/plugin-sdk/polls-yWqSCEP0.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-B765haXA.js +1 -1
- package/dist/plugin-sdk/proxy-env-Bcl14j2_.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-BlrHtJWH.js +1 -1
- package/dist/plugin-sdk/proxy-env-D48qBPAr.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-DGzNnnJh.js +1 -1
- package/dist/plugin-sdk/proxy-env-DQoJjkWE.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-DWw9TnOj.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-MEjSyzTr.js +1 -1
- package/dist/plugin-sdk/proxy-env-a590sPAz.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-k93igu7v.cjs +1 -1
- package/dist/plugin-sdk/proxy-env-m9eG3uZN.js +1 -1
- package/dist/plugin-sdk/proxy-env-t6hcaFqC.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-B9aXJVe-.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-BaA3JYgW.cjs +1 -1
- package/dist/plugin-sdk/proxy-fetch-BwXFVsHE.cjs +1 -1
- package/dist/plugin-sdk/proxy-fetch-BzcKzknk.cjs +1 -1
- package/dist/plugin-sdk/proxy-fetch-CYVChsKE.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-ClOb2LUH.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-DH7VIiBH.cjs +1 -1
- package/dist/plugin-sdk/proxy-fetch-DPOhfrou.cjs +1 -1
- package/dist/plugin-sdk/proxy-fetch-DXt2R_Z5.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-Del551nu.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-YCVHz7Rl.js +1 -1
- package/dist/plugin-sdk/proxy-fetch-qbrYAz8k.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-3piACPqP.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-8dajXBkZ.js +1 -1
- package/dist/plugin-sdk/pw-ai-B7mrBDW5.js +1 -1
- package/dist/plugin-sdk/pw-ai-BLD7x-3a.js +1 -1
- package/dist/plugin-sdk/pw-ai-BYmANcaC.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-C1rVW06B.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-CCDvaBUm.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-CVYUOcKM.js +1 -1
- package/dist/plugin-sdk/pw-ai-DBg5CCXp.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-DY11CCd3.cjs +1 -1
- package/dist/plugin-sdk/pw-ai-Kf2RyA25.js +1 -1
- package/dist/plugin-sdk/pw-ai-f5yF3n3t.js +1 -1
- package/dist/plugin-sdk/qmd-manager-B3xNbdye.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-BMyDNBPi.js +1 -1
- package/dist/plugin-sdk/qmd-manager-BZhiv_zq.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-C3uVDbhW.js +1 -1
- package/dist/plugin-sdk/qmd-manager-CW46NrS-.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-C_e04BNg.js +1 -1
- package/dist/plugin-sdk/qmd-manager-CczVoslK.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-CzLKqPmR.js +1 -1
- package/dist/plugin-sdk/qmd-manager-DFh8b5N-.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-DXLfZZMI.js +1 -1
- package/dist/plugin-sdk/qmd-manager-FL9fAfNo.cjs +1 -1
- package/dist/plugin-sdk/qmd-manager-fWxbGqzk.js +1 -1
- package/dist/plugin-sdk/query-expansion-0zYzKrrd.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-BYSjmpkV.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-CAboqtWr.js +1 -1
- package/dist/plugin-sdk/query-expansion-C_DnhmUy.js +1 -1
- package/dist/plugin-sdk/query-expansion-Cb2vnF6y.js +1 -1
- package/dist/plugin-sdk/query-expansion-DCeqywxh.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-DF4LMxRQ.js +1 -1
- package/dist/plugin-sdk/query-expansion-DKJkqmNM.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-DO2CFW4z.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-DyCDaZbL.js +1 -1
- package/dist/plugin-sdk/query-expansion-cpXCyoDy.cjs +1 -1
- package/dist/plugin-sdk/query-expansion-r_iXkNzt.js +1 -1
- package/dist/plugin-sdk/qwen-portal-auth.cjs +1 -1
- package/dist/plugin-sdk/qwen-portal-auth.js +1 -1
- package/dist/plugin-sdk/render-6fCdtAr6.cjs +1 -1
- package/dist/plugin-sdk/render-CBsnn-2A.js +1 -1
- package/dist/plugin-sdk/render-CzHaQB0d.cjs +1 -1
- package/dist/plugin-sdk/render-DGmfCIRG.js +1 -1
- package/dist/plugin-sdk/render-DhTJXP1U.js +1 -1
- package/dist/plugin-sdk/render-Djx15dPh.js +1 -1
- package/dist/plugin-sdk/render-DxBO2Blp.cjs +1 -1
- package/dist/plugin-sdk/render-g5VlmgpF.cjs +1 -1
- package/dist/plugin-sdk/reply-BrHB7v5V.cjs +1 -1
- package/dist/plugin-sdk/reply-Clex4c2R.js +1 -1
- package/dist/plugin-sdk/resolve-outbound-target-BHLQMMp-.cjs +1 -1
- package/dist/plugin-sdk/resolve-outbound-target-Cvz2WXAk.cjs +1 -1
- package/dist/plugin-sdk/resolve-outbound-target-DDqGniMw.js +1 -1
- package/dist/plugin-sdk/resolve-outbound-target-DEpmpEep.js +1 -1
- package/dist/plugin-sdk/send--HeMLLzj.js +1 -1
- package/dist/plugin-sdk/send-2IhtEEzb.js +1 -1
- package/dist/plugin-sdk/send-9tPLnqkc.js +1 -1
- package/dist/plugin-sdk/send-B-exJfkg.js +1 -1
- package/dist/plugin-sdk/send-B4kzPtcN.js +1 -1
- package/dist/plugin-sdk/send-BCSkdYN6.cjs +1 -1
- package/dist/plugin-sdk/send-BEmZxBcF.js +1 -1
- package/dist/plugin-sdk/send-BHvZIrbJ.cjs +1 -1
- package/dist/plugin-sdk/send-BLbCBxeF.js +1 -1
- package/dist/plugin-sdk/send-BOkABdQu.cjs +1 -1
- package/dist/plugin-sdk/send-BPNd63Qs.js +1 -1
- package/dist/plugin-sdk/send-BVAm6Zbr.cjs +1 -1
- package/dist/plugin-sdk/send-B_619b3s.js +1 -1
- package/dist/plugin-sdk/send-BcuylzbX.js +1 -1
- package/dist/plugin-sdk/send-BdFvK9Wc2.js +1 -1
- package/dist/plugin-sdk/send-Bh-J7XWZ.cjs +1 -1
- package/dist/plugin-sdk/send-BkREPc90.cjs +1 -1
- package/dist/plugin-sdk/send-Bp4f-KJu.cjs +1 -1
- package/dist/plugin-sdk/send-BtF36kYb.js +1 -1
- package/dist/plugin-sdk/send-C6S8tkTA.cjs +1 -1
- package/dist/plugin-sdk/send-CDQF_izk.js +1 -1
- package/dist/plugin-sdk/send-CF3qas-K.js +1 -1
- package/dist/plugin-sdk/send-CFKQX2Wo.js +1 -1
- package/dist/plugin-sdk/send-CIP1u5a-.js +1 -1
- package/dist/plugin-sdk/send-CIxh7PV0.cjs +1 -1
- package/dist/plugin-sdk/send-CJJdcDHX.js +1 -1
- package/dist/plugin-sdk/send-COtvydDt.cjs +1 -1
- package/dist/plugin-sdk/send-CPwh7tRu.js +1 -1
- package/dist/plugin-sdk/send-CRnIqXN9.cjs +1 -1
- package/dist/plugin-sdk/send-CSqipUeV.cjs +1 -1
- package/dist/plugin-sdk/send-Chfe8tPY.js +1 -1
- package/dist/plugin-sdk/send-ClMvdjfg.js +1 -1
- package/dist/plugin-sdk/send-CmoJSYhT.js +1 -1
- package/dist/plugin-sdk/send-Cs5jSTw0.cjs +1 -1
- package/dist/plugin-sdk/send-D-6Et_9H.js +1 -1
- package/dist/plugin-sdk/send-D13uFnzH.cjs +1 -1
- package/dist/plugin-sdk/send-D3eT0F4N.cjs +1 -1
- package/dist/plugin-sdk/send-DAtg_VHa.js +1 -1
- package/dist/plugin-sdk/send-DCF59ijQ.cjs +1 -1
- package/dist/plugin-sdk/send-DN2xic3w.cjs +1 -1
- package/dist/plugin-sdk/send-DOjSTB6D.cjs +1 -1
- package/dist/plugin-sdk/send-DavwL7cF.js +1 -1
- package/dist/plugin-sdk/send-Dbmn1rgD.cjs +1 -1
- package/dist/plugin-sdk/send-DhfDqcwc.cjs +1 -1
- package/dist/plugin-sdk/send-DsDCrJWq.js +1 -1
- package/dist/plugin-sdk/send-DyR5Lpl-.js +1 -1
- package/dist/plugin-sdk/send-DyzuwDjE.js +1 -1
- package/dist/plugin-sdk/send-GtphEa1b.cjs +1 -1
- package/dist/plugin-sdk/send-HZNY_u3L.cjs +1 -1
- package/dist/plugin-sdk/send-IM-76QZu.js +1 -1
- package/dist/plugin-sdk/send-IqcgAO8b.cjs +1 -1
- package/dist/plugin-sdk/send-OQcuL9tP.js +1 -1
- package/dist/plugin-sdk/send-_92aOzWU.cjs +1 -1
- package/dist/plugin-sdk/send-h_kE-cAK.js +1 -1
- package/dist/plugin-sdk/send-jOMdGt0L.cjs +1 -1
- package/dist/plugin-sdk/send-mZ_d-t_3.cjs +1 -1
- package/dist/plugin-sdk/send-puyUta4_.cjs +1 -1
- package/dist/plugin-sdk/send-t5U34FhY.cjs +1 -1
- package/dist/plugin-sdk/send-tvw8j-Se.cjs +1 -1
- package/dist/plugin-sdk/send-z1vaCgF3.cjs +1 -1
- package/dist/plugin-sdk/session--K1m5v7m.js +1 -1
- package/dist/plugin-sdk/session-B1DJ45om.js +1 -1
- package/dist/plugin-sdk/session-B80NWO1m.js +1 -1
- package/dist/plugin-sdk/session-BKPBr445.js +1 -1
- package/dist/plugin-sdk/session-BQLjsBwL.cjs +1 -1
- package/dist/plugin-sdk/session-BZHltxdM.js +1 -1
- package/dist/plugin-sdk/session-Bt5yI-VW.cjs +1 -1
- package/dist/plugin-sdk/session-CC1GqwiM.cjs +1 -1
- package/dist/plugin-sdk/session-C_yqyp3P.cjs +1 -1
- package/dist/plugin-sdk/session-ClISxvtJ.js +1 -1
- package/dist/plugin-sdk/session-D4nn-nXX.cjs +1 -1
- package/dist/plugin-sdk/session-DOA4CJgj.cjs +1 -1
- package/dist/plugin-sdk/sessions-BwTjGneU.js +1 -1
- package/dist/plugin-sdk/sessions-CJbvfO6m.cjs +1 -1
- package/dist/plugin-sdk/signal.cjs +1 -1
- package/dist/plugin-sdk/signal.js +1 -1
- package/dist/plugin-sdk/skill-commands-5WGHyr3h.cjs +1 -1
- package/dist/plugin-sdk/skill-commands-BZlF3g3o.js +1 -1
- package/dist/plugin-sdk/skill-commands-BmBQSmNH.js +1 -1
- package/dist/plugin-sdk/skill-commands-CD4GQXTR.cjs +1 -1
- package/dist/plugin-sdk/skill-commands-CGOPOT-r.js +1 -1
- package/dist/plugin-sdk/skill-commands-CM9ziCQY.cjs +1 -1
- package/dist/plugin-sdk/skill-commands-CVsU5rEy.js +1 -1
- package/dist/plugin-sdk/skill-commands-DNPxE-kc.cjs +1 -1
- package/dist/plugin-sdk/skill-commands-DcgKCVDt.js +1 -1
- package/dist/plugin-sdk/skill-commands-IAwkVeOe.js +1 -1
- package/dist/plugin-sdk/skill-commands-ZyLkXbR_.cjs +1 -1
- package/dist/plugin-sdk/skill-commands-xJWQthd5.cjs +1 -1
- package/dist/plugin-sdk/slack.cjs +1 -1
- package/dist/plugin-sdk/slack.js +1 -1
- package/dist/plugin-sdk/synology-chat.cjs +1 -1
- package/dist/plugin-sdk/synology-chat.js +1 -1
- package/dist/plugin-sdk/tables-BZUVdTR-.cjs +1 -1
- package/dist/plugin-sdk/tables-Bbodvj_s.cjs +1 -1
- package/dist/plugin-sdk/tables-C5b2CtNw.cjs +1 -1
- package/dist/plugin-sdk/tables-C6TX2QvW.js +1 -1
- package/dist/plugin-sdk/tables-Cz5osenc.js +1 -1
- package/dist/plugin-sdk/tables-DBSeZ07-.cjs +1 -1
- package/dist/plugin-sdk/tables-DLSXY2-Q.js +1 -1
- package/dist/plugin-sdk/tables-DQad-z2Z.cjs +1 -1
- package/dist/plugin-sdk/tables-DYuLwL1d.js +1 -1
- package/dist/plugin-sdk/tables-D_J655yN.js +1 -1
- package/dist/plugin-sdk/tables-_vqK8P0T.js +1 -1
- package/dist/plugin-sdk/tables-bSgb8OzP.cjs +1 -1
- package/dist/plugin-sdk/target-errors-B-mJ4s4b.cjs +1 -1
- package/dist/plugin-sdk/target-errors-BAHAHc8f.js +1 -1
- package/dist/plugin-sdk/target-errors-BKruhz8r.js +1 -1
- package/dist/plugin-sdk/target-errors-BbQBR5da.js +1 -1
- package/dist/plugin-sdk/target-errors-BjgLCOTm.cjs +1 -1
- package/dist/plugin-sdk/target-errors-CQbFkOae.js +1 -1
- package/dist/plugin-sdk/target-errors-C_HYvghh.cjs +1 -1
- package/dist/plugin-sdk/target-errors-CaaKhU6m.js +1 -1
- package/dist/plugin-sdk/target-errors-QWTCk98R.cjs +1 -1
- package/dist/plugin-sdk/target-errors-oh0u5K2w.cjs +1 -1
- package/dist/plugin-sdk/targets-BSc11Uk8.cjs +1 -1
- package/dist/plugin-sdk/targets-BSkiizml.js +1 -1
- package/dist/plugin-sdk/targets-CBI0xqve.cjs +1 -1
- package/dist/plugin-sdk/targets-CL5fYQi7.js +1 -1
- package/dist/plugin-sdk/targets-CUZWrFrm.cjs +1 -1
- package/dist/plugin-sdk/targets-CVEYTFPQ.js +1 -1
- package/dist/plugin-sdk/targets-Co2R6K14.cjs +1 -1
- package/dist/plugin-sdk/targets-CrkJkzil.js +1 -1
- package/dist/plugin-sdk/targets-D-m7SV9x.cjs +1 -1
- package/dist/plugin-sdk/targets-D8HTxbo4.js +1 -1
- package/dist/plugin-sdk/targets-DcGNB9nk.cjs +1 -1
- package/dist/plugin-sdk/targets-Dn9gDiEw.js +1 -1
- package/dist/plugin-sdk/targets-X28mff4s.cjs +1 -1
- package/dist/plugin-sdk/targets-uycXZ8vQ.js +1 -1
- package/dist/plugin-sdk/telegram.cjs +1 -1
- package/dist/plugin-sdk/telegram.js +1 -1
- package/dist/plugin-sdk/test-utils.cjs +1 -1
- package/dist/plugin-sdk/test-utils.js +1 -1
- package/dist/plugin-sdk/tlon.cjs +1 -1
- package/dist/plugin-sdk/tlon.js +1 -1
- package/dist/plugin-sdk/tokens-AAdZjj0M.js +1 -1
- package/dist/plugin-sdk/tokens-B20KNIDD.js +1 -1
- package/dist/plugin-sdk/tokens-B8ys7Q2e.js +1 -1
- package/dist/plugin-sdk/tokens-BPc1fcZ3.js +1 -1
- package/dist/plugin-sdk/tokens-BqABmXSe.js +1 -1
- package/dist/plugin-sdk/tokens-CXsPDJTr.cjs +1 -1
- package/dist/plugin-sdk/tokens-CnB4dJmp.cjs +1 -1
- package/dist/plugin-sdk/tokens-CytSl1X8.cjs +1 -1
- package/dist/plugin-sdk/tokens-DgPZk2Uu.js +1 -1
- package/dist/plugin-sdk/tokens-Dq2wDF3_.cjs +1 -1
- package/dist/plugin-sdk/tokens-DtrljGtQ.cjs +1 -1
- package/dist/plugin-sdk/tokens-g5KWvWhD.cjs +1 -1
- package/dist/plugin-sdk/twitch.cjs +1 -1
- package/dist/plugin-sdk/twitch.js +1 -1
- package/dist/plugin-sdk/utils-BJtJR72k.js +1 -1
- package/dist/plugin-sdk/utils-PPIvU9qw.cjs +1 -1
- package/dist/plugin-sdk/voice-call.cjs +1 -1
- package/dist/plugin-sdk/voice-call.js +1 -1
- package/dist/plugin-sdk/web-B4A8zBP9.cjs +1 -1
- package/dist/plugin-sdk/web-BKKx3jqf.cjs +1 -1
- package/dist/plugin-sdk/web-BTBgpaEi.js +1 -1
- package/dist/plugin-sdk/web-BfjArU7g.js +1 -1
- package/dist/plugin-sdk/web-C7KhecaH.cjs +1 -1
- package/dist/plugin-sdk/web-CFMrBQv7.js +1 -1
- package/dist/plugin-sdk/web-CS0AvKLx.js +1 -1
- package/dist/plugin-sdk/web-EfgEjg15.cjs +1 -1
- package/dist/plugin-sdk/weixin.cjs +1 -1
- package/dist/plugin-sdk/weixin.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-6N2LIWVD.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-BGEghean.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-BP_fSzB9.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-BSx6-Onq.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-BZAMGDn8.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-BvZMduqd.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-CDUbwNdp.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-DNVIKnqz.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-DTVbVkOo.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-DjMYqpSS.js +1 -1
- package/dist/plugin-sdk/whatsapp-actions-P1DVqKhD.cjs +1 -1
- package/dist/plugin-sdk/whatsapp-actions-shElOKKX.js +1 -1
- package/dist/plugin-sdk/whatsapp.cjs +1 -1
- package/dist/plugin-sdk/whatsapp.js +1 -1
- package/dist/plugin-sdk/zalo.cjs +1 -1
- package/dist/plugin-sdk/zalo.js +1 -1
- package/dist/plugin-sdk/zalouser.cjs +1 -1
- package/dist/plugin-sdk/zalouser.js +1 -1
- package/dist/plugins-CYLrFT4h.js +1 -1
- package/dist/plugins-DNlgeTTc.js +1 -1
- package/dist/plugins-cli-BiV4FaGs.js +1 -1
- package/dist/plugins-cli-C0PLRxT0.js +1 -1
- package/dist/polls-BIVz6a4F.js +1 -1
- package/dist/polls-Bh5wc9-6.js +1 -1
- package/dist/polls-C_XSFz3d.js +1 -1
- package/dist/polls-DKJOFSzJ.js +1 -1
- package/dist/ports-Bjc9q__g.js +1 -1
- package/dist/ports-Di2_MOUb.js +1 -1
- package/dist/probe-auth-9RrZOStc.js +1 -1
- package/dist/probe-auth-Cg6SAov9.js +1 -1
- package/dist/profile-utils-CWmra1aY.js +1 -1
- package/dist/program-CI--7377.js +1 -1
- package/dist/program-context-CH9p6anW.js +1 -1
- package/dist/program-context-Cu8fVR-O.js +1 -1
- package/dist/progress-LNttnI-y.js +1 -1
- package/dist/progress-d1m2sqR1.js +1 -1
- package/dist/prompt-select-styled-CbTtKeIC.js +1 -1
- package/dist/prompt-select-styled-sYEl0gMg.js +1 -1
- package/dist/prompt-style-BThRSQJR.js +1 -1
- package/dist/prompt-style-CXKekIBY.js +1 -1
- package/dist/prompts-CMzglboN.js +1 -1
- package/dist/prompts-wv-lfVrJ.js +1 -1
- package/dist/provider-auth-helpers-C3OaF218.js +1 -1
- package/dist/provider-auth-helpers-CZyb7LUg.js +1 -1
- package/dist/provider-env-vars-D8p6Ohpj.js +1 -1
- package/dist/provider-env-vars-Dt0Q29Su.js +1 -1
- package/dist/proxy-env-BNhTHkd_.js +1 -1
- package/dist/proxy-env-DcmW_urA.js +1 -1
- package/dist/proxy-env-DrC3TIGh.js +1 -1
- package/dist/proxy-env-FJr5nlvs.js +1 -1
- package/dist/proxy-fetch-BADsUK4d.js +1 -1
- package/dist/proxy-fetch-BZ9O8Dvj.js +1 -1
- package/dist/proxy-fetch-DnjU1fEB.js +1 -1
- package/dist/proxy-fetch-gWETR3cl.js +1 -1
- package/dist/push-apns-kySzOiJr.js +1 -1
- package/dist/push-apns-tM6G9LLm.js +1 -1
- package/dist/pw-ai-B7YMA_4Q.js +1 -1
- package/dist/pw-ai-C7peCONw.js +1 -1
- package/dist/pw-ai-CojtT9WR.js +1 -1
- package/dist/pw-ai-DWJWFzTA.js +1 -1
- package/dist/qmd-manager-C_e04BNg.js +1 -1
- package/dist/qmd-manager-DSQ_mDCl.js +1 -1
- package/dist/qmd-manager-DcBYbt_V.js +1 -1
- package/dist/qmd-manager-NLI0R6kp.js +1 -1
- package/dist/qr-cli-DUR7oW0_.js +1 -1
- package/dist/qr-cli-kb3ygh9I.js +1 -1
- package/dist/query-expansion-0OxEb1Io.js +1 -1
- package/dist/query-expansion-BUUx_oWg.js +1 -1
- package/dist/query-expansion-r_iXkNzt.js +1 -1
- package/dist/reaction-level-DVPHL14p.js +1 -1
- package/dist/reaction-message-id-BEEe7X3D.js +1 -1
- package/dist/read-only-account-inspect-DEnPVHTo.js +1 -1
- package/dist/redact-3_CiXMY6.js +1 -1
- package/dist/redact-CnRxK70G.js +1 -1
- package/dist/register.agent-BwmE1VD-.js +1 -1
- package/dist/register.agent-D1hQi_68.js +1 -1
- package/dist/register.backup-8s5jgnHQ.js +1 -1
- package/dist/register.backup-CAiwLaIW.js +1 -1
- package/dist/register.configure-BsTw4XfK.js +1 -1
- package/dist/register.configure-DxR84Ot6.js +1 -1
- package/dist/register.maintenance-3nzWAo_a.js +1 -1
- package/dist/register.maintenance-DxKGQ9Jo.js +1 -1
- package/dist/register.message-Bk1pHVSK.js +1 -1
- package/dist/register.message-PcFtBR0-.js +1 -1
- package/dist/register.onboard-AWxbhU7j.js +1 -1
- package/dist/register.onboard-BTOZN8ro.js +1 -1
- package/dist/register.setup-B-e1qIbc.js +1 -1
- package/dist/register.setup-CweJJdt8.js +1 -1
- package/dist/register.status-health-sessions-B1R_nl6P.js +1 -1
- package/dist/register.status-health-sessions-CWNLXpAn.js +1 -1
- package/dist/register.subclis-C0VQ_HfZ.js +1 -1
- package/dist/registry-BptzrW8D.js +1 -1
- package/dist/registry-hFAtCSWG.js +1 -1
- package/dist/render-BXEUPIHe.js +1 -1
- package/dist/render-CBsnn-2A.js +1 -1
- package/dist/render-D8OWO2hT.js +1 -1
- package/dist/render-DrrPmnMI.js +1 -1
- package/dist/reply-r9KtzgpM.js +1 -1
- package/dist/restart-CTfuVGfA.js +1 -1
- package/dist/rpc-BQXfCyCw.js +1 -1
- package/dist/rpc-CcrILVsV.js +1 -1
- package/dist/run-main-CuQQyoU3.js +1 -1
- package/dist/runtime-BlsMYeaw.js +1 -1
- package/dist/runtime-DLxfCs7F.js +1 -1
- package/dist/runtime-guard-DFYBaYZS.js +1 -1
- package/dist/runtime-guard-DX2Ie4ri.js +1 -1
- package/dist/runtime-status-CqFBmdRd.js +1 -1
- package/dist/runtime-status-DszMjvJK.js +1 -1
- package/dist/runtime-web-tools-BWv0X5qp.js +1 -1
- package/dist/runtime-web-tools-CCIXUISf.js +1 -1
- package/dist/sandbox-cli-CxluKLFV.js +1 -1
- package/dist/sandbox-cli-xCX6FV4Z.js +1 -1
- package/dist/scan-paths-C13EseXp.js +1 -1
- package/dist/scan-paths-CWtvWW40.js +1 -1
- package/dist/search-manager-KMRzwyPH.js +1 -1
- package/dist/secret-file-C7JffiM_.js +1 -1
- package/dist/secret-file-D60EFEOe.js +1 -1
- package/dist/secret-file-DuWm26jS.js +1 -1
- package/dist/secrets-cli-Be6OBr6Q.js +1 -1
- package/dist/secrets-cli-DmDZiX17.js +1 -1
- package/dist/secure-random-D7JQgiK-.js +1 -1
- package/dist/security-cli-CllLwpQ-.js +1 -1
- package/dist/security-cli-DcA9keUK.js +1 -1
- package/dist/send-8rJCpsDu.js +1 -1
- package/dist/send-BJjoLBo3.js +1 -1
- package/dist/send-BOxuQt9L.js +1 -1
- package/dist/send-BPfl_1It.js +1 -1
- package/dist/send-BdS6jUBa.js +1 -1
- package/dist/send-BeZJ1zbp.js +1 -1
- package/dist/send-BkZ8dWQV2.js +1 -1
- package/dist/send-CDAeI9xB2.js +1 -1
- package/dist/send-CgeRzkWS.js +1 -1
- package/dist/send-CiTZ4p2t.js +1 -1
- package/dist/send-D0y-r_hg2.js +1 -1
- package/dist/send-DIw8ExHc.js +1 -1
- package/dist/send-DRm6AFp-.js +1 -1
- package/dist/send-DS5Quwb7.js +1 -1
- package/dist/send-DVmPgxm7.js +1 -1
- package/dist/send-Ds5sy22D.js +1 -1
- package/dist/send-DvGzdoKK.js +1 -1
- package/dist/send-OVet2uKx.js +1 -1
- package/dist/send-YPQFx-fV.js +1 -1
- package/dist/send-e2ppdA_R.js +1 -1
- package/dist/server-Dzqb5Tau.js +1 -1
- package/dist/server-node-events-B2irOUJ_.js +1 -1
- package/dist/server-node-events-DSr6P0VG.js +1 -1
- package/dist/server-w7sUBJEA.js +1 -1
- package/dist/service-BtB9epJk.js +1 -1
- package/dist/service-DZ9EbS15.js +1 -1
- package/dist/session-BYYOduc1.js +1 -1
- package/dist/session-B_qrXLsR.js +1 -1
- package/dist/session-Be0RV2V1.js +1 -1
- package/dist/session-bk3gFwO4.js +1 -1
- package/dist/session-cost-usage-BgqKixv0.js +1 -1
- package/dist/session-cost-usage-CHtVgnE8.js +1 -1
- package/dist/session-key-C7F_iqYg.js +1 -1
- package/dist/session-key-D3P0tf5P.js +1 -1
- package/dist/session-utils-CrR0wD3W.js +1 -1
- package/dist/sessions-BvTGb3rW.js +1 -1
- package/dist/shared-9x5sqYRb.js +1 -1
- package/dist/shared-BKWhOp64.js +1 -1
- package/dist/shared-BV-hfJ3h.js +1 -1
- package/dist/skill-commands-C59b8Yso.js +1 -1
- package/dist/skill-commands-CqIEajsA.js +1 -1
- package/dist/skill-commands-F5NFH0NR.js +1 -1
- package/dist/skill-commands-O39uSj-k.js +1 -1
- package/dist/skill-scanner-CUUF3Fvo.js +1 -1
- package/dist/skill-scanner-CkxXNioD.js +1 -1
- package/dist/skills-CKTicUKS.js +1 -1
- package/dist/skills-DHbOKEGc.js +1 -1
- package/dist/skills-cli-CZD1Ng18.js +1 -1
- package/dist/skills-cli-nj0w4fe0.js +1 -1
- package/dist/skills-install-D0I6c17J.js +1 -1
- package/dist/skills-install-XHpqMBWl.js +1 -1
- package/dist/skills-status-BWIugRCz.js +1 -1
- package/dist/skills-status-DswSl5aD.js +1 -1
- package/dist/sqlite-CILF3z9U.js +1 -1
- package/dist/stagger-DmFYysrJ.js +1 -1
- package/dist/stagger-DxzgG2jd.js +1 -1
- package/dist/status-DKB9gdSp.js +1 -1
- package/dist/status-DgRrUxyg.js +1 -1
- package/dist/status-YZD9V9xi.js +1 -1
- package/dist/status-isxcm8Xz.js +1 -1
- package/dist/status.update-B_8Gumuc.js +1 -1
- package/dist/status.update-Cf2e-l9d.js +1 -1
- package/dist/string-normalization-BrUPaXaM.js +1 -1
- package/dist/string-normalization-DJT5zuUF.js +1 -1
- package/dist/subsystem-BLbY429l.js +1 -1
- package/dist/subsystem-Bc2XrjUz.js +1 -1
- package/dist/subsystem-C5XF2Fy5.js +1 -1
- package/dist/system-cli-CRs3TOTw.js +1 -1
- package/dist/system-cli-GyoLZQpj.js +1 -1
- package/dist/system-run-command-DCzdgYyb.js +1 -1
- package/dist/system-run-command-FCk9hSMO.js +1 -1
- package/dist/systemd-D7odsu4K.js +1 -1
- package/dist/systemd-DbevZh65.js +1 -1
- package/dist/systemd-hints-lXpMy-kY.js +1 -1
- package/dist/systemd-hints-x1lJAOxS.js +1 -1
- package/dist/systemd-linger-C2MJD6KG.js +1 -1
- package/dist/systemd-linger-cWKbFNpu.js +1 -1
- package/dist/table-CR7TFMew.js +1 -1
- package/dist/table-CY440fI1.js +1 -1
- package/dist/tables-3Rjt6nwZ.js +1 -1
- package/dist/tables-B9wFKQvT.js +1 -1
- package/dist/tables-D1pcaye7.js +1 -1
- package/dist/tables-h7y1Jhf4.js +1 -1
- package/dist/target-errors-CUQcIty1.js +1 -1
- package/dist/target-errors-D55sWZ4E.js +1 -1
- package/dist/target-errors-DH0aw-m5.js +1 -1
- package/dist/target-errors-LuLROpta.js +1 -1
- package/dist/targets-4EaxWBal.js +1 -1
- package/dist/targets-BJTo7bqu.js +1 -1
- package/dist/targets-BYVMrXDf.js +1 -1
- package/dist/targets-Bq6rS6-Z.js +1 -1
- package/dist/targets-CL5fYQi7.js +1 -1
- package/dist/targets-fozeWOOg.js +1 -1
- package/dist/targets-m_41k_Mv.js +1 -1
- package/dist/telegram/audit.js +1 -1
- package/dist/text-format-CvrvBBre.js +1 -1
- package/dist/text-format-DEWK6oCT.js +1 -1
- package/dist/token-DnTmiyJu.js +1 -1
- package/dist/tokens-B2fq-rL6.js +1 -1
- package/dist/tokens-CL2fSjGl.js +1 -1
- package/dist/tokens-DRM8vzJx.js +1 -1
- package/dist/tokens-XGbQGn67.js +1 -1
- package/dist/tool-display-DJDtttQg.js +1 -1
- package/dist/tool-display-DjuSUUbH.js +1 -1
- package/dist/tui-CqEb9hrT.js +1 -1
- package/dist/tui-DdZ8SpNW.js +1 -1
- package/dist/tui-cli-Bj0okLCf.js +1 -1
- package/dist/tui-cli-CYvBshyB.js +1 -1
- package/dist/types.secrets-C-5U96pc.js +1 -1
- package/dist/types.secrets-D4tbc3Wq.js +1 -1
- package/dist/update-BGrxUIyz.js +1 -1
- package/dist/update-CwTy5DPl.js +1 -1
- package/dist/update-cli-lciKU8_L.js +1 -1
- package/dist/update-cli-xb0jHjE8.js +1 -1
- package/dist/update-runner-8Hto6X-M.js +1 -1
- package/dist/update-runner-LVJcy569.js +1 -1
- package/dist/usage-format-BWD8FJFL.js +1 -1
- package/dist/usage-format-yPwal8Iz.js +1 -1
- package/dist/utils-CGdo13HV.js +1 -1
- package/dist/utils-D3t-vPka.js +1 -1
- package/dist/utils-R-mFyVJi.js +1 -1
- package/dist/utils-UGOV_184.js +1 -1
- package/dist/version-q3SkUw2K.js +1 -1
- package/dist/warning-filter.js +1 -1
- package/dist/web-Bfz_qlYe.js +1 -1
- package/dist/web-ClbIohhf.js +1 -1
- package/dist/webhooks-cli-DKfKihmJ.js +1 -1
- package/dist/webhooks-cli-LU2ADRQp.js +1 -1
- package/dist/whatsapp-actions-1TJ8dlv0.js +1 -1
- package/dist/whatsapp-actions-CuDiuPGa.js +1 -1
- package/dist/whatsapp-actions-DkLDOIk1.js +1 -1
- package/dist/whatsapp-actions-EnduXWui.js +1 -1
- package/dist/widearea-dns-BDx7vkV2.js +1 -1
- package/dist/widearea-dns-BFjqKXu_.js +1 -1
- package/dist/windows-spawn-7oINn5ao.js +1 -1
- package/dist/windows-spawn-AB7ItGAE.js +1 -1
- package/dist/with-timeout-WveKxvFV.js +1 -1
- package/dist/with-timeout-c1CzdShT.js +1 -1
- package/dist/workspace-B0ZQeHXg.js +1 -1
- package/dist/workspace-C45T1Cxg.js +1 -1
- package/dist/workspace-dirs-A8Vib9_B.js +1 -1
- package/dist/workspace-dirs-BhF1Dzxt.js +1 -1
- package/dist/workspace-xNEpaJvu.js +1 -1
- package/dist/wsl-DHxB2Ew_.js +1 -1
- package/dist/wsl-Ok7GaSJ6.js +1 -1
- package/extensions/memory-core/index.js +1 -0
- package/extensions/memory-core/package.json +1 -1
- package/extensions/openclaw-telemetry-galileo-embedded/index.js +4 -0
- package/extensions/openclaw-telemetry-galileo-embedded/package.json +2 -2
- package/extensions/openclaw-telemetry-galileo-embedded/src/service.js +13 -0
- package/extensions/openclaw-weixin/index.js +1 -0
- package/extensions/openclaw-weixin/package.json +3 -3
- package/extensions/openclaw-weixin/src/api/api.js +1 -0
- package/extensions/openclaw-weixin/src/api/config-cache.js +1 -0
- package/extensions/openclaw-weixin/src/api/session-guard.js +1 -0
- package/extensions/openclaw-weixin/src/api/types.js +1 -0
- package/extensions/openclaw-weixin/src/auth/accounts.js +1 -0
- package/extensions/openclaw-weixin/src/auth/login-qr.js +11 -0
- package/extensions/openclaw-weixin/src/auth/pairing.js +1 -0
- package/extensions/openclaw-weixin/src/cdn/aes-ecb.js +1 -0
- package/extensions/openclaw-weixin/src/cdn/cdn-upload.js +1 -0
- package/extensions/openclaw-weixin/src/cdn/cdn-url.js +1 -0
- package/extensions/openclaw-weixin/src/cdn/pic-decrypt.js +1 -0
- package/extensions/openclaw-weixin/src/cdn/upload.js +1 -0
- package/extensions/openclaw-weixin/src/channel.js +6 -0
- package/extensions/openclaw-weixin/src/config/config-schema.js +1 -0
- package/extensions/openclaw-weixin/src/log-upload.js +4 -0
- package/extensions/openclaw-weixin/src/media/media-download.js +1 -0
- package/extensions/openclaw-weixin/src/media/mime.js +1 -0
- package/extensions/openclaw-weixin/src/media/silk-transcode.js +1 -0
- package/extensions/openclaw-weixin/src/messaging/debug-mode.js +1 -0
- package/extensions/openclaw-weixin/src/messaging/error-notice.js +1 -0
- package/extensions/openclaw-weixin/src/messaging/inbound.js +2 -0
- package/extensions/openclaw-weixin/src/messaging/process-message.js +3 -0
- package/extensions/openclaw-weixin/src/messaging/send-media.js +1 -0
- package/extensions/openclaw-weixin/src/messaging/send.js +1 -0
- package/extensions/openclaw-weixin/src/messaging/slash-commands.js +2 -0
- package/extensions/openclaw-weixin/src/monitor/monitor.js +1 -0
- package/extensions/openclaw-weixin/src/runtime.js +1 -0
- package/extensions/openclaw-weixin/src/storage/state-dir.js +1 -0
- package/extensions/openclaw-weixin/src/storage/sync-buf.js +1 -0
- package/extensions/openclaw-weixin/src/util/logger.js +2 -0
- package/extensions/openclaw-weixin/src/util/random.js +1 -0
- package/extensions/openclaw-weixin/src/util/redact.js +1 -0
- package/extensions/qbagent-mcp-server-x5uselocal-node/index.js +1 -0
- package/extensions/qbagent-mcp-server-x5uselocal-node/package.json +1 -1
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.js +1 -0
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.js +1 -0
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.js +1 -0
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.js +1 -0
- package/package.json +1 -1
- package/preset-config.json +22 -0
- package/extensions/memory-core/index.ts +0 -38
- package/extensions/openclaw-telemetry-galileo-embedded/index.ts +0 -663
- package/extensions/openclaw-telemetry-galileo-embedded/src/service.ts +0 -1590
- package/extensions/openclaw-weixin/index.ts +0 -26
- package/extensions/openclaw-weixin/src/api/api.ts +0 -238
- package/extensions/openclaw-weixin/src/api/config-cache.ts +0 -79
- package/extensions/openclaw-weixin/src/api/session-guard.ts +0 -58
- package/extensions/openclaw-weixin/src/api/types.ts +0 -222
- package/extensions/openclaw-weixin/src/auth/accounts.ts +0 -363
- package/extensions/openclaw-weixin/src/auth/login-qr.ts +0 -344
- package/extensions/openclaw-weixin/src/auth/pairing.ts +0 -120
- package/extensions/openclaw-weixin/src/cdn/aes-ecb.ts +0 -21
- package/extensions/openclaw-weixin/src/cdn/cdn-upload.ts +0 -75
- package/extensions/openclaw-weixin/src/cdn/cdn-url.ts +0 -17
- package/extensions/openclaw-weixin/src/cdn/pic-decrypt.ts +0 -85
- package/extensions/openclaw-weixin/src/cdn/upload.ts +0 -154
- package/extensions/openclaw-weixin/src/channel.ts +0 -483
- package/extensions/openclaw-weixin/src/config/config-schema.ts +0 -21
- package/extensions/openclaw-weixin/src/log-upload.ts +0 -129
- package/extensions/openclaw-weixin/src/media/media-download.ts +0 -138
- package/extensions/openclaw-weixin/src/media/mime.ts +0 -76
- package/extensions/openclaw-weixin/src/media/silk-transcode.ts +0 -74
- package/extensions/openclaw-weixin/src/messaging/debug-mode.ts +0 -68
- package/extensions/openclaw-weixin/src/messaging/error-notice.ts +0 -36
- package/extensions/openclaw-weixin/src/messaging/inbound.ts +0 -283
- package/extensions/openclaw-weixin/src/messaging/process-message.ts +0 -488
- package/extensions/openclaw-weixin/src/messaging/send-media.ts +0 -76
- package/extensions/openclaw-weixin/src/messaging/send.ts +0 -267
- package/extensions/openclaw-weixin/src/messaging/slash-commands.ts +0 -105
- package/extensions/openclaw-weixin/src/monitor/monitor.ts +0 -225
- package/extensions/openclaw-weixin/src/runtime.ts +0 -67
- package/extensions/openclaw-weixin/src/storage/state-dir.ts +0 -11
- package/extensions/openclaw-weixin/src/storage/sync-buf.ts +0 -79
- package/extensions/openclaw-weixin/src/util/logger.ts +0 -146
- package/extensions/openclaw-weixin/src/util/random.ts +0 -17
- package/extensions/openclaw-weixin/src/util/redact.ts +0 -57
- package/extensions/openclaw-weixin/src/vendor.d.ts +0 -21
- package/extensions/qbagent-mcp-server-x5uselocal-node/index.ts +0 -140
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.ts +0 -157
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.ts +0 -135
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.ts +0 -205
- package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.ts +0 -351
package/dist/utils-R-mFyVJi.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"node:path";import t,{Chalk as n}from"chalk";import r from"node:fs";import{Logger as i}from"tslog";import a from"node:os";import o from"json5";const s=new Set([`--dev`,`--no-color`]),c=new Set([`--profile`,`--log-level`]);function l(e){return!e||e===`--`?!1:e.startsWith(`-`)?/^-\d+(?:\.\d+)?$/.test(e):!0}function u(e,t){let n=e[t];return n?s.has(n)||n.startsWith(`--profile=`)||n.startsWith(`--log-level=`)?1:c.has(n)?l(e[t+1])?2:1:0:0}function d(e,t=2){return f(e,t,{skipRootOptions:!0})}function f(e,t,n){let r=e.slice(2),i=[];for(let e=0;e<r.length;e+=1){let a=r[e];if(a){if(a===`--`)break;if(n.skipRootOptions){let t=u(r,e);if(t>0){e+=t-1;continue}}if(!a.startsWith(`-`)&&(i.push(a),i.length>=t))break}}return i}const p=`/tmp/qbotclaw`,m=r.constants.W_OK|r.constants.X_OK;function ee(e,t){return typeof e==`object`&&!!e&&`code`in e&&e.code===t}function h(t={}){let n=t.accessSync??r.accessSync,i=t.chmodSync??r.chmodSync,o=t.lstatSync??r.lstatSync,s=t.mkdirSync??r.mkdirSync,c=t.warn??(e=>console.warn(e)),l=t.getuid??(()=>{try{return typeof process.getuid==`function`?process.getuid():void 0}catch{return}}),u=t.tmpdir??a.tmpdir,d=l(),f=e=>d===void 0?!0:!(typeof e.uid==`number`&&e.uid!==d||typeof e.mode==`number`&&e.mode&18),h=()=>{let t=u(),n=d===void 0?`qbotclaw`:`qbotclaw-${d}`;return e.join(t,n)},g=e=>e.isDirectory()&&!e.isSymbolicLink()&&f(e),_=e=>{try{return g(o(e))?(n(e,m),`available`):`invalid`}catch(e){return ee(e,`ENOENT`)?`missing`:`invalid`}},v=e=>{try{let t=o(e);return!t.isDirectory()||t.isSymbolicLink()||d!==void 0&&typeof t.uid==`number`&&t.uid!==d||typeof t.mode!=`number`||!(t.mode&18)?!1:(i(e,448),c(`[openclaw] tightened permissions on temp dir: ${e}`),_(e)===`available`)}catch{return!1}},y=()=>{let e=h(),t=_(e);if(t===`available`)return e;if(t===`invalid`){if(v(e))return e;throw Error(`Unsafe fallback OpenClaw temp dir: ${e}`)}try{s(e,{recursive:!0,mode:448}),i(e,448)}catch{throw Error(`Unable to create fallback OpenClaw temp dir: ${e}`)}if(_(e)!==`available`&&!v(e))throw Error(`Unsafe fallback OpenClaw temp dir: ${e}`);return e},b=_(p);if(b===`available`)return p;if(b===`invalid`)return v(`/tmp/qbotclaw`)?p:y();try{return n(`/tmp`,m),s(p,{recursive:!0,mode:448}),i(p,448),_(`/tmp/qbotclaw`)!==`available`&&!v(`/tmp/qbotclaw`)?y():p}catch{return y()}}function g(e){return e?.trim()||void 0}function _(t=process.env,n=a.homedir){let r=v(t,n);return r?e.resolve(r):void 0}function v(e,t){let n=g(e.OPENCLAW_HOME);if(n){if(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`)){let r=g(e.HOME)??g(e.USERPROFILE)??y(t);return r?n.replace(/^~(?=$|[\\/])/,r):void 0}return n}return g(e.HOME)||g(e.USERPROFILE)||y(t)}function y(e){try{return g(e())}catch{return}}function b(t=process.env,n=a.homedir){return _(t,n)??e.resolve(process.cwd())}function x(e,t){if(!e.startsWith(`~`))return e;let n=g(t?.home)??_(t?.env??process.env,t?.homedir??a.homedir);return n?e.replace(/^~(?=$|[\\/])/,n):e}function te(e=process.env){return e.OPENCLAW_NIX_MODE===`1`}te();const ne=[`.clawdbot`,`.moldbot`,`.moltbot`],S=`.openclaw-qbot.json`,C=[`openclaw.json`,`clawdbot.json`,`moldbot.json`,`moltbot.json`];function w(){return b(process.env,a.homedir)}function T(e){return()=>b(e,a.homedir)}function re(t=w){return ne.map(n=>e.join(t(),n))}function E(t=w){return e.join(t(),`.qbotclaw`)}function D(e=process.env,t=T(e)){let n=()=>b(e,t),i=e.OPENCLAW_STATE_DIR?.trim()||e.CLAWDBOT_STATE_DIR?.trim();if(i)return O(i,e,n);let a=E(n);if(e.OPENCLAW_TEST_FAST===`1`)return a;let o=re(n);return r.existsSync(a)?a:o.find(e=>{try{return r.existsSync(e)}catch{return!1}})||a}function O(t,n=process.env,r=T(n)){let i=t.trim();if(!i)return i;if(i.startsWith(`~`)){let t=x(i,{home:b(n,r),env:n,homedir:r});return e.resolve(t)}return e.resolve(i)}const ie=D();function ae(t=process.env,n=D(t,T(t))){let r=t.OPENCLAW_CONFIG_PATH?.trim()||t.CLAWDBOT_CONFIG_PATH?.trim();return r?O(r,t,T(t)):e.join(n,S)}function oe(e=process.env,t=T(e)){return e.OPENCLAW_TEST_FAST===`1`?ae(e,D(e,t)):k(e,t).find(e=>{try{return r.existsSync(e)}catch{return!1}})||ae(e,D(e,t))}function se(t=process.env,n=D(t,T(t)),i=T(t)){let a=t.OPENCLAW_CONFIG_PATH?.trim();if(a)return O(a,t,i);if(t.OPENCLAW_TEST_FAST===`1`)return e.join(n,S);let o=t.OPENCLAW_STATE_DIR?.trim(),s=[e.join(n,S),...C.map(t=>e.join(n,t))].find(e=>{try{return r.existsSync(e)}catch{return!1}});if(s)return s;if(o)return e.join(n,S);let c=D(t,i);return e.resolve(n)===e.resolve(c)?oe(t,i):e.join(n,S)}oe();function k(t=process.env,n=T(t)){let r=()=>b(t,n),i=t.OPENCLAW_CONFIG_PATH?.trim()||t.CLAWDBOT_CONFIG_PATH?.trim();if(i)return[O(i,t,r)];let a=[],o=t.OPENCLAW_STATE_DIR?.trim()||t.CLAWDBOT_STATE_DIR?.trim();if(o){let n=O(o,t,r);a.push(e.join(n,S)),a.push(...C.map(t=>e.join(n,t)))}let s=[E(r),...re(r)];for(let t of s)a.push(e.join(t,S)),a.push(...C.map(n=>e.join(t,n)));return a}const ce=18789;function A(t=process.env,n=D(t,T(t))){let r=t.OPENCLAW_OAUTH_DIR?.trim();return r?O(r,t,T(t)):e.join(n,`credentials`)}function j(){let e=se();try{if(!r.existsSync(e))return;let t=r.readFileSync(e,`utf-8`),n=o.parse(t)?.logging;return!n||typeof n!=`object`||Array.isArray(n)?void 0:n}catch{return}}const M=[`silent`,`fatal`,`error`,`warn`,`info`,`debug`,`trace`];function N(e){if(typeof e!=`string`)return;let t=e.trim();return M.includes(t)?t:void 0}function P(e,t=`info`){return N(e)??t}function F(e){return{fatal:0,error:1,warn:2,info:3,debug:4,trace:5,silent:1/0}[e]}const I={cachedLogger:null,cachedSettings:null,cachedConsoleSettings:null,overrideSettings:null,invalidEnvLogLevelValue:null,consolePatched:!1,forceConsoleToStderr:!1,consoleTimestampPrefix:!1,consoleSubsystemFilter:null,resolvingConsoleSettings:!1,streamErrorHandlersInstalled:!1,rawConsole:null};function L(){let e=process.env.OPENCLAW_LOG_LEVEL,t=typeof e==`string`?e.trim():``;if(!t){I.invalidEnvLogLevelValue=null;return}let n=N(t);if(n)return I.invalidEnvLogLevelValue=null,n;I.invalidEnvLogLevelValue!==t&&(I.invalidEnvLogLevelValue=t,process.stderr.write(`[openclaw] Ignoring invalid OPENCLAW_LOG_LEVEL="${t}" (allowed: ${M.join(`|`)}).\n`))}function R(e){let t=process.getBuiltinModule;if(typeof t!=`function`)return null;try{let n=t(`module`),r=typeof n.createRequire==`function`?n.createRequire:null;return r?r(e):null}catch{return null}}function le(e){try{return new Intl.DateTimeFormat(`en`,{timeZone:e}),!0}catch{return!1}}function z(e,t){let n=t??process.env.TZ,r=n&&le(n)?n:Intl.DateTimeFormat().resolvedOptions().timeZone,i=new Intl.DateTimeFormat(`en`,{timeZone:r,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1,fractionalSecondDigits:3,timeZoneName:`longOffset`}),a=Object.fromEntries(i.formatToParts(e).map(e=>[e.type,e.value])),o=a.timeZoneName??`GMT`,s=o===`GMT`?`+00:00`:o.slice(3);return`${a.year}-${a.month}-${a.day}T${a.hour}:${a.minute}:${a.second}.${a.fractionalSecond}${s}`}const B=h();e.join(B,`qbotclaw.log`);const V=`qbotclaw`,H=`.log`,U=500*1024*1024,ue=R(import.meta.url),W=new Set;function de(e=process.argv){let[t,n]=d(e,2);return t===`config`&&n===`validate`}function G(e,t){e.attachTransport(e=>{if(W.has(t))try{t(e)}catch{}})}function fe(e){return process.env.VITEST===`true`&&process.env.OPENCLAW_TEST_FILE_LOG!==`1`&&!e&&!I.overrideSettings}function K(){let e=L();if(fe(e))return{level:`silent`,file:xe(),maxFileBytes:U};let t=I.overrideSettings??j();if(!t&&!de())try{t=(ue?.(`../config/config.js`))?.loadConfig?.().logging}catch{t=void 0}let n=process.env.VITEST===`true`&&process.env.OPENCLAW_TEST_FILE_LOG!==`1`?`silent`:`info`,r=P(t?.level,n);return{level:e??r,file:t?.file??xe(),maxFileBytes:he(t?.maxFileBytes)}}function pe(e,t){return e?e.level!==t.level||e.file!==t.file||e.maxFileBytes!==t.maxFileBytes:!0}function q(e){let t=I.cachedSettings??K();return I.cachedSettings||=t,t.level===`silent`?!1:F(e)<=F(t.level)}function me(t){let n=new i({name:`openclaw`,minLevel:F(t.level),type:`hidden`});if(t.level===`silent`){for(let e of W)G(n,e);return n}r.mkdirSync(e.dirname(t.file),{recursive:!0}),Se(t.file)&&Ce(e.dirname(t.file));let a=ge(t.file),o=!1;n.attachTransport(e=>{try{let n=z(e.date??new Date),r=`${JSON.stringify({...e,time:n})}\n`,i=Buffer.byteLength(r,`utf8`),s=a+i;if(s>t.maxFileBytes){if(!o){o=!0;let e=JSON.stringify({time:z(new Date),level:`warn`,subsystem:`logging`,message:`log file size cap reached; suppressing writes file=${t.file} maxFileBytes=${t.maxFileBytes}`});_e(t.file,`${e}\n`),process.stderr.write(`[openclaw] log file size cap reached; suppressing writes file=${t.file} maxFileBytes=${t.maxFileBytes}\n`)}return}_e(t.file,r)&&(a=s)}catch{}});for(let e of W)G(n,e);return n}function he(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):U}function ge(e){try{return r.statSync(e).size}catch{return 0}}function _e(e,t){try{return r.appendFileSync(e,t,{encoding:`utf8`}),!0}catch{return!1}}function J(){let e=K(),t=I.cachedLogger,n=I.cachedSettings;return(!t||pe(n,e))&&(I.cachedLogger=me(e),I.cachedSettings=e),I.cachedLogger}function ve(e,t){let n=J(),r=t?.level?F(t.level):void 0,i=e?JSON.stringify(e):void 0;return n.getSubLogger({name:i,minLevel:r,prefix:e?[i??``]:[]})}function ye(e,t){return{level:t,child:n=>ye(e.getSubLogger({name:n?JSON.stringify(n):void 0}),t),trace:(...t)=>e.trace(...t),debug:(...t)=>e.debug(...t),info:(...t)=>e.info(...t),warn:(...t)=>e.warn(...t),error:(...t)=>e.error(...t),fatal:(...t)=>e.fatal(...t)}}function be(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function xe(){let t=be(new Date);return e.join(B,`${V}-${t}${H}`)}function Se(t){let n=e.basename(t);return n.startsWith(`${V}-`)&&n.endsWith(H)&&n.length===`${V}-YYYY-MM-DD${H}`.length}function Ce(t){try{let n=r.readdirSync(t,{withFileTypes:!0}),i=Date.now()-864e5;for(let a of n){if(!a.isFile()||!a.name.startsWith(`${V}-`)||!a.name.endsWith(H))continue;let n=e.join(t,a.name);try{r.statSync(n).mtimeMs<i&&r.rmSync(n,{force:!0})}catch{}}}catch{}}const Y={accent:`#FF5A2D`,accentBright:`#FF7A3D`,accentDim:`#D14A22`,info:`#FF8A5B`,success:`#2FBF71`,warn:`#FFB020`,error:`#E23D2D`,muted:`#8B7F77`},we=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`,Te=process.env.NO_COLOR&&!we?new n({level:0}):t,X=e=>Te.hex(e),Z={accent:X(Y.accent),accentBright:X(Y.accentBright),accentDim:X(Y.accentDim),info:X(Y.info),success:X(Y.success),warn:X(Y.warn),error:X(Y.error),muted:X(Y.muted),heading:Te.bold.hex(Y.accent),command:X(Y.accentBright),option:X(Y.warn)};function Ee(){return!1}function Q(){return q(`debug`)}function De(e){if(Q())try{J().debug({message:e},`verbose`)}catch{}}function Oe(e){}const ke=Z.success,Ae=Z.warn,je=Z.info,Me=Z.error;function Ne(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}async function Pe(e){await r.promises.mkdir(e,{recursive:!0})}function Fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ie(e){let t=e.replace(/^whatsapp:/,``).trim().replace(/[^\d+]/g,``);return t.startsWith(`+`)?`+${t.slice(1)}`:`+${t}`}function Le(t){let n=new Set,r=e=>{e&&n.add($(e))};r(t?.authDir);for(let e of t?.lidMappingDirs??[])r(e);return r(A()),r(e.join(He,`credentials`)),[...n]}function Re(t,n){let i=`lid-mapping-${t}_reverse.json`,a=Le(n);for(let t of a){let n=e.join(t,i);try{let e=r.readFileSync(n,`utf8`),t=JSON.parse(e);if(t==null)continue;return Ie(String(t))}catch{}}return null}function ze(e,t){let n=e.match(/^(\d+)(?::\d+)?@(s\.whatsapp\.net|hosted)$/);if(n)return`+${n[1]}`;let r=e.match(/^(\d+)(?::\d+)?@(lid|hosted\.lid)$/);if(r){let e=r[1],n=Re(e,t);if(n)return n;(t?.logMissing??Q())&&De(`LID mapping not found for ${e}; skipping inbound message`)}return null}function Be(e){return new Promise(t=>setTimeout(t,e))}function $(t){if(!t)return``;let n=t.trim();if(!n)return n;if(n.startsWith(`~`)){let t=x(n,{home:b(process.env,a.homedir),env:process.env,homedir:a.homedir});return e.resolve(t)}return e.resolve(n)}function Ve(t=process.env,n=a.homedir){let i=t.OPENCLAW_STATE_DIR?.trim()||t.CLAWDBOT_STATE_DIR?.trim();if(i)return $(i);let o=e.join(b(t,n),`.qbotclaw`);try{if(r.existsSync(o))return o}catch{}return o}const He=Ve();export{se as A,L as C,j as D,P as E,b as F,h as I,A as M,D as N,ce as O,x as P,R as S,F as T,ve as _,Ve as a,ye as b,Ne as c,Ee as d,De as f,Ae as g,ke as h,ze as i,k as j,ie as k,Me as l,Q as m,Pe as n,$ as o,Oe as p,Fe as r,Be as s,He as t,je as u,J as v,I as w,z as x,q as y};
|
|
1
|
+
import e from"node:path";import t,{Chalk as n}from"chalk";import r from"node:fs";import{Logger as i}from"tslog";import a from"node:os";import o from"json5";const s=new Set([`--dev`,`--no-color`]),c=new Set([`--profile`,`--log-level`]);function l(e){return!e||e===`--`?!1:e.startsWith(`-`)?/^-\d+(?:\.\d+)?$/.test(e):!0}function u(e,t){let n=e[t];return n?s.has(n)||n.startsWith(`--profile=`)||n.startsWith(`--log-level=`)?1:c.has(n)?l(e[t+1])?2:1:0:0}function d(e,t=2){return f(e,t,{skipRootOptions:!0})}function f(e,t,n){let r=e.slice(2),i=[];for(let e=0;e<r.length;e+=1){let a=r[e];if(a){if(a===`--`)break;if(n.skipRootOptions){let t=u(r,e);if(t>0){e+=t-1;continue}}if(!a.startsWith(`-`)&&(i.push(a),i.length>=t))break}}return i}const p=`/tmp/qbotclaw`,m=r.constants.W_OK|r.constants.X_OK;function ee(e,t){return typeof e==`object`&&!!e&&`code`in e&&e.code===t}function h(t={}){let n=t.accessSync??r.accessSync,i=t.chmodSync??r.chmodSync,o=t.lstatSync??r.lstatSync,s=t.mkdirSync??r.mkdirSync,c=t.warn??(e=>console.warn(e)),l=t.getuid??(()=>{try{return typeof process.getuid==`function`?process.getuid():void 0}catch{return}}),u=t.tmpdir??a.tmpdir,d=l(),f=e=>d===void 0?!0:!(typeof e.uid==`number`&&e.uid!==d||typeof e.mode==`number`&&e.mode&18),h=()=>{let t=u(),n=d===void 0?`qbotclaw`:`qbotclaw-${d}`;return e.join(t,n)},g=e=>e.isDirectory()&&!e.isSymbolicLink()&&f(e),_=e=>{try{return g(o(e))?(n(e,m),`available`):`invalid`}catch(e){return ee(e,`ENOENT`)?`missing`:`invalid`}},v=e=>{try{let t=o(e);return!t.isDirectory()||t.isSymbolicLink()||d!==void 0&&typeof t.uid==`number`&&t.uid!==d||typeof t.mode!=`number`||!(t.mode&18)?!1:(i(e,448),c(`[openclaw] tightened permissions on temp dir: ${e}`),_(e)===`available`)}catch{return!1}},y=()=>{let e=h(),t=_(e);if(t===`available`)return e;if(t===`invalid`){if(v(e))return e;throw Error(`Unsafe fallback OpenClaw temp dir: ${e}`)}try{s(e,{recursive:!0,mode:448}),i(e,448)}catch{throw Error(`Unable to create fallback OpenClaw temp dir: ${e}`)}if(_(e)!==`available`&&!v(e))throw Error(`Unsafe fallback OpenClaw temp dir: ${e}`);return e},b=_(p);if(b===`available`)return p;if(b===`invalid`)return v(`/tmp/qbotclaw`)?p:y();try{return n(`/tmp`,m),s(p,{recursive:!0,mode:448}),i(p,448),_(`/tmp/qbotclaw`)!==`available`&&!v(`/tmp/qbotclaw`)?y():p}catch{return y()}}function g(e){return e?.trim()||void 0}function _(t=process.env,n=a.homedir){let r=v(t,n);return r?e.resolve(r):void 0}function v(e,t){let n=g(e.OPENCLAW_HOME);if(n){if(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`)){let r=g(e.HOME)??g(e.USERPROFILE)??y(t);return r?n.replace(/^~(?=$|[\\/])/,r):void 0}return n}return g(e.HOME)||g(e.USERPROFILE)||y(t)}function y(e){try{return g(e())}catch{return}}function b(t=process.env,n=a.homedir){return _(t,n)??e.resolve(process.cwd())}function x(e,t){if(!e.startsWith(`~`))return e;let n=g(t?.home)??_(t?.env??process.env,t?.homedir??a.homedir);return n?e.replace(/^~(?=$|[\\/])/,n):e}function te(e=process.env){return e.OPENCLAW_NIX_MODE===`1`}te();const ne=[`.clawdbot`,`.moldbot`,`.moltbot`],S=`.openclaw-qbot.json`,C=[`openclaw.json`,`clawdbot.json`,`moldbot.json`,`moltbot.json`];function w(){return b(process.env,a.homedir)}function T(e){return()=>b(e,a.homedir)}function re(t=w){return ne.map(n=>e.join(t(),n))}function E(t=w){return e.join(t(),`.qbotclaw`)}function D(e=process.env,t=T(e)){let n=()=>b(e,t),i=e.OPENCLAW_STATE_DIR?.trim()||e.CLAWDBOT_STATE_DIR?.trim();if(i)return O(i,e,n);let a=E(n);if(e.OPENCLAW_TEST_FAST===`1`)return a;let o=re(n);return r.existsSync(a)?a:o.find(e=>{try{return r.existsSync(e)}catch{return!1}})||a}function O(t,n=process.env,r=T(n)){let i=t.trim();if(!i)return i;if(i.startsWith(`~`)){let t=x(i,{home:b(n,r),env:n,homedir:r});return e.resolve(t)}return e.resolve(i)}const ie=D();function ae(t=process.env,n=D(t,T(t))){let r=t.OPENCLAW_CONFIG_PATH?.trim()||t.CLAWDBOT_CONFIG_PATH?.trim();return r?O(r,t,T(t)):e.join(n,S)}function oe(e=process.env,t=T(e)){return e.OPENCLAW_TEST_FAST===`1`?ae(e,D(e,t)):k(e,t).find(e=>{try{return r.existsSync(e)}catch{return!1}})||ae(e,D(e,t))}function se(t=process.env,n=D(t,T(t)),i=T(t)){let a=t.OPENCLAW_CONFIG_PATH?.trim();if(a)return O(a,t,i);if(t.OPENCLAW_TEST_FAST===`1`)return e.join(n,S);let o=t.OPENCLAW_STATE_DIR?.trim(),s=[e.join(n,S),...C.map(t=>e.join(n,t))].find(e=>{try{return r.existsSync(e)}catch{return!1}});if(s)return s;if(o)return e.join(n,S);let c=D(t,i);return e.resolve(n)===e.resolve(c)?oe(t,i):e.join(n,S)}oe();function k(t=process.env,n=T(t)){let r=()=>b(t,n),i=t.OPENCLAW_CONFIG_PATH?.trim()||t.CLAWDBOT_CONFIG_PATH?.trim();if(i)return[O(i,t,r)];let a=[],o=t.OPENCLAW_STATE_DIR?.trim()||t.CLAWDBOT_STATE_DIR?.trim();if(o){let n=O(o,t,r);a.push(e.join(n,S)),a.push(...C.map(t=>e.join(n,t)))}let s=[E(r),...re(r)];for(let t of s)a.push(e.join(t,S)),a.push(...C.map(n=>e.join(t,n)));return a}const ce=18789;function A(t=process.env,n=D(t,T(t))){let r=t.OPENCLAW_OAUTH_DIR?.trim();return r?O(r,t,T(t)):e.join(n,`credentials`)}function j(){let e=se();try{if(!r.existsSync(e))return;let t=r.readFileSync(e,`utf-8`),n=o.parse(t)?.logging;return!n||typeof n!=`object`||Array.isArray(n)?void 0:n}catch{return}}const M=[`silent`,`fatal`,`error`,`warn`,`info`,`debug`,`trace`];function N(e){if(typeof e!=`string`)return;let t=e.trim();return M.includes(t)?t:void 0}function P(e,t=`info`){return N(e)??t}function F(e){return{fatal:0,error:1,warn:2,info:3,debug:4,trace:5,silent:1/0}[e]}const I={cachedLogger:null,cachedSettings:null,cachedConsoleSettings:null,overrideSettings:null,invalidEnvLogLevelValue:null,consolePatched:!1,forceConsoleToStderr:!1,consoleTimestampPrefix:!1,consoleSubsystemFilter:null,resolvingConsoleSettings:!1,streamErrorHandlersInstalled:!1,rawConsole:null};function L(){let e=process.env.OPENCLAW_LOG_LEVEL,t=typeof e==`string`?e.trim():``;if(!t){I.invalidEnvLogLevelValue=null;return}let n=N(t);if(n)return I.invalidEnvLogLevelValue=null,n;I.invalidEnvLogLevelValue!==t&&(I.invalidEnvLogLevelValue=t,process.stderr.write(`[openclaw] Ignoring invalid OPENCLAW_LOG_LEVEL="${t}" (allowed: ${M.join(`|`)}).\n`))}function R(e){let t=process.getBuiltinModule;if(typeof t!=`function`)return null;try{let n=t(`module`),r=typeof n.createRequire==`function`?n.createRequire:null;return r?r(e):null}catch{return null}}function le(e){try{return new Intl.DateTimeFormat(`en`,{timeZone:e}),!0}catch{return!1}}function z(e,t){let n=t??process.env.TZ,r=n&&le(n)?n:Intl.DateTimeFormat().resolvedOptions().timeZone,i=new Intl.DateTimeFormat(`en`,{timeZone:r,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1,fractionalSecondDigits:3,timeZoneName:`longOffset`}),a=Object.fromEntries(i.formatToParts(e).map(e=>[e.type,e.value])),o=a.timeZoneName??`GMT`,s=o===`GMT`?`+00:00`:o.slice(3);return`${a.year}-${a.month}-${a.day}T${a.hour}:${a.minute}:${a.second}.${a.fractionalSecond}${s}`}const B=h();e.join(B,`qbotclaw.log`);const V=`qbotclaw`,H=`.log`,U=500*1024*1024,ue=R(import.meta.url),W=new Set;function de(e=process.argv){let[t,n]=d(e,2);return t===`config`&&n===`validate`}function G(e,t){e.attachTransport(e=>{if(W.has(t))try{t(e)}catch{}})}function fe(e){return process.env.VITEST===`true`&&process.env.OPENCLAW_TEST_FILE_LOG!==`1`&&!e&&!I.overrideSettings}function K(){let e=L();if(fe(e))return{level:`silent`,file:xe(),maxFileBytes:U};let t=I.overrideSettings??j();if(!t&&!de())try{t=(ue?.(`../config/config.js`))?.loadConfig?.().logging}catch{t=void 0}let n=process.env.VITEST===`true`&&process.env.OPENCLAW_TEST_FILE_LOG!==`1`?`silent`:`info`,r=P(t?.level,n);return{level:e??r,file:t?.file??xe(),maxFileBytes:he(t?.maxFileBytes)}}function pe(e,t){return e?e.level!==t.level||e.file!==t.file||e.maxFileBytes!==t.maxFileBytes:!0}function q(e){let t=I.cachedSettings??K();return I.cachedSettings||=t,t.level===`silent`?!1:F(e)<=F(t.level)}function me(t){let n=new i({name:`openclaw`,minLevel:F(t.level),type:`hidden`});if(t.level===`silent`){for(let e of W)G(n,e);return n}r.mkdirSync(e.dirname(t.file),{recursive:!0}),Se(t.file)&&Ce(e.dirname(t.file));let a=ge(t.file),o=!1;n.attachTransport(e=>{try{let n=z(e.date??new Date),r=`${JSON.stringify({...e,time:n})}\n`,i=Buffer.byteLength(r,`utf8`),s=a+i;if(s>t.maxFileBytes){if(!o){o=!0;let e=JSON.stringify({time:z(new Date),level:`warn`,subsystem:`logging`,message:`log file size cap reached; suppressing writes file=${t.file} maxFileBytes=${t.maxFileBytes}`});_e(t.file,`${e}\n`),process.stderr.write(`[openclaw] log file size cap reached; suppressing writes file=${t.file} maxFileBytes=${t.maxFileBytes}\n`)}return}_e(t.file,r)&&(a=s)}catch{}});for(let e of W)G(n,e);return n}function he(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):U}function ge(e){try{return r.statSync(e).size}catch{return 0}}function _e(e,t){try{return r.appendFileSync(e,t,{encoding:`utf8`}),!0}catch{return!1}}function J(){let e=K(),t=I.cachedLogger,n=I.cachedSettings;return(!t||pe(n,e))&&(I.cachedLogger=me(e),I.cachedSettings=e),I.cachedLogger}function ve(e,t){let n=J(),r=t?.level?F(t.level):void 0,i=e?JSON.stringify(e):void 0;return n.getSubLogger({name:i,minLevel:r,prefix:e?[i??``]:[]})}function ye(e,t){return{level:t,child:n=>ye(e.getSubLogger({name:n?JSON.stringify(n):void 0}),t),trace:(...t)=>e.trace(...t),debug:(...t)=>e.debug(...t),info:(...t)=>e.info(...t),warn:(...t)=>e.warn(...t),error:(...t)=>e.error(...t),fatal:(...t)=>e.fatal(...t)}}function be(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function xe(){let t=be(new Date);return e.join(B,`${V}-${t}${H}`)}function Se(t){let n=e.basename(t);return n.startsWith(`${V}-`)&&n.endsWith(H)&&n.length===`${V}-YYYY-MM-DD${H}`.length}function Ce(t){try{let n=r.readdirSync(t,{withFileTypes:!0}),i=Date.now()-864e5;for(let a of n){if(!a.isFile()||!a.name.startsWith(`${V}-`)||!a.name.endsWith(H))continue;let n=e.join(t,a.name);try{r.statSync(n).mtimeMs<i&&r.rmSync(n,{force:!0})}catch{}}}catch{}}const Y={accent:`#FF5A2D`,accentBright:`#FF7A3D`,accentDim:`#D14A22`,info:`#FF8A5B`,success:`#2FBF71`,warn:`#FFB020`,error:`#E23D2D`,muted:`#8B7F77`},we=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`,Te=process.env.NO_COLOR&&!we?new n({level:0}):t,X=e=>Te.hex(e),Z={accent:X(Y.accent),accentBright:X(Y.accentBright),accentDim:X(Y.accentDim),info:X(Y.info),success:X(Y.success),warn:X(Y.warn),error:X(Y.error),muted:X(Y.muted),heading:Te.bold.hex(Y.accent),command:X(Y.accentBright),option:X(Y.warn)};function Ee(){return!1}function Q(){return q(`debug`)}function De(e){if(Q())try{J().debug({message:e},`verbose`)}catch{}}function Oe(e){}const ke=Z.success,Ae=Z.warn,je=Z.info,Me=Z.error;function Ne(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}async function Pe(e){await r.promises.mkdir(e,{recursive:!0})}function Fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ie(e){let t=e.replace(/^whatsapp:/,``).trim().replace(/[^\d+]/g,``);return t.startsWith(`+`)?`+${t.slice(1)}`:`+${t}`}function Le(t){let n=new Set,r=e=>{e&&n.add($(e))};r(t?.authDir);for(let e of t?.lidMappingDirs??[])r(e);return r(A()),r(e.join(He,`credentials`)),[...n]}function Re(t,n){let i=`lid-mapping-${t}_reverse.json`,a=Le(n);for(let t of a){let n=e.join(t,i);try{let e=r.readFileSync(n,`utf8`),t=JSON.parse(e);if(t==null)continue;return Ie(String(t))}catch{}}return null}function ze(e,t){let n=e.match(/^(\d+)(?::\d+)?@(s\.whatsapp\.net|hosted)$/);if(n)return`+${n[1]}`;let r=e.match(/^(\d+)(?::\d+)?@(lid|hosted\.lid)$/);if(r){let e=r[1],n=Re(e,t);if(n)return n;(t?.logMissing??Q())&&De(`LID mapping not found for ${e}; skipping inbound message`)}return null}function Be(e){return new Promise(t=>setTimeout(t,e))}function $(t){if(!t)return``;let n=t.trim();if(!n)return n;if(n.startsWith(`~`)){let t=x(n,{home:b(process.env,a.homedir),env:process.env,homedir:a.homedir});return e.resolve(t)}return e.resolve(n)}function Ve(t=process.env,n=a.homedir){let i=t.OPENCLAW_STATE_DIR?.trim()||t.CLAWDBOT_STATE_DIR?.trim();if(i)return $(i);let o=e.join(b(t,n),`.qbotclaw`);try{if(r.existsSync(o))return o}catch{}return o}const He=Ve();export{se as A,L as C,j as D,P as E,b as F,h as I,A as M,D as N,ce as O,x as P,R as S,F as T,ve as _,Ve as a,ye as b,Ne as c,Ee as d,De as f,Ae as g,ke as h,ze as i,k as j,ie as k,Me as l,Q as m,Pe as n,$ as o,Oe as p,Fe as r,Be as s,He as t,je as u,J as v,I as w,z as x,q as y};
|
package/dist/utils-UGOV_184.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,v as n,y as r}from"./paths-B4IRk3wi.js";import{S as i,T as a}from"./subsystem-C5XF2Fy5.js";import o from"node:fs";import s from"node:os";import c from"node:path";function l(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}async function u(e){await o.promises.mkdir(e,{recursive:!0})}async function d(e){try{return await o.promises.access(e),!0}catch{return!1}}function f(e,t,n){return Math.max(t,Math.min(n,e))}function p(e,t,n){return f(Math.floor(e),t,n)}const m=f;function h(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function g(e){try{return JSON.parse(e)}catch{return null}}function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function v(e){if(e!==`web`)throw Error(`Web channel must be 'web'`)}function y(e){let t=e.replace(/^whatsapp:/,``).trim().replace(/[^\d+]/g,``);return t.startsWith(`+`)?`+${t.slice(1)}`:`+${t}`}function b(e,t){if(!e||!Array.isArray(t)||t.length===0)return!1;let n=y(e);return t.some(e=>{if(e===`*`)return!1;try{return y(String(e))===n}catch{return!1}})}function x(e){let t=e.replace(/^whatsapp:/,``).trim();return t.includes(`@`)?t:`${y(t).replace(/\D/g,``)}@s.whatsapp.net`}function S(e){let n=new Set,r=e=>{e&&n.add(j(e))};r(e?.authDir);for(let t of e?.lidMappingDirs??[])r(t);return r(t()),r(c.join(B,`credentials`)),[...n]}function C(e,t){let n=`lid-mapping-${e}_reverse.json`,r=S(t);for(let e of r){let t=c.join(e,n);try{let e=o.readFileSync(t,`utf8`),n=JSON.parse(e);if(n==null)continue;return y(String(n))}catch{}}return null}function w(e,t){let n=e.match(/^(\d+)(?::\d+)?@(s\.whatsapp\.net|hosted)$/);if(n)return`+${n[1]}`;let r=e.match(/^(\d+)(?::\d+)?@(lid|hosted\.lid)$/);if(r){let e=r[1],n=C(e,t);if(n)return n;(t?.logMissing??a())&&i(`LID mapping not found for ${e}; skipping inbound message`)}return null}async function T(e,t){if(!e)return null;let n=w(e,t);if(n)return n;if(!/(@lid|@hosted\.lid)$/.test(e)||!t?.lidLookup?.getPNForLID)return null;try{let n=await t.lidLookup.getPNForLID(e);return n?w(n,t):null}catch(t){return a()&&i(`LID mapping lookup failed for ${e}: ${String(t)}`),null}}function E(e){return new Promise(t=>setTimeout(t,e))}function D(e){return e>=55296&&e<=56319}function O(e){return e>=56320&&e<=57343}function k(e,t,n){let r=e.length,i=t<0?Math.max(r+t,0):Math.min(t,r),a=n===void 0?r:n<0?Math.max(r+n,0):Math.min(n,r);if(a<i){let e=i;i=a,a=e}return i>0&&i<r&&O(e.charCodeAt(i))&&D(e.charCodeAt(i-1))&&(i+=1),a>0&&a<r&&D(e.charCodeAt(a-1))&&O(e.charCodeAt(a))&&--a,e.slice(i,a)}function A(e,t){let n=Math.max(0,Math.floor(t));return e.length<=n?e:k(e,0,n)}function j(t){if(!t)return``;let n=t.trim();if(!n)return n;if(n.startsWith(`~`)){let t=e(n,{home:r(process.env,s.homedir),env:process.env,homedir:s.homedir});return c.resolve(t)}return c.resolve(n)}function M(e=process.env,t=s.homedir){let n=e.OPENCLAW_STATE_DIR?.trim()||e.CLAWDBOT_STATE_DIR?.trim();if(n)return j(n);let i=c.join(r(e,t),`.qbotclaw`);try{if(o.existsSync(i))return i}catch{}return i}function N(){return n(process.env,s.homedir)}function P(){let e=N();if(e)return process.env.OPENCLAW_HOME?.trim()?{home:e,prefix:`$OPENCLAW_HOME`}:{home:e,prefix:`~`}}function F(e){if(!e)return e;let t=P();if(!t)return e;let{home:n,prefix:r}=t;return e===n?r:e.startsWith(`${n}/`)||e.startsWith(`${n}\\`)?`${r}${e.slice(n.length)}`:e}function I(e){if(!e)return e;let t=P();return t?e.split(t.home).join(t.prefix):e}function L(e){return F(e)}function R(e){return I(e)}function z(e,t,n){let r=e.replaceAll(`\x1B`,``),i=t.replaceAll(`\x1B`,``);return n?.force===!0||n?.force!==!1&&process.stdout.isTTY?`\u001b]8;;${i}\u0007${r}\u001b]8;;\u0007`:n?.fallback??`${r} (${i})`}const B=M();export{E as C,l as D,A as E,F as S,x as T,N as _,f as a,g as b,u as c,_ as d,b as f,M as g,d as h,p as i,h as l,y as m,v as n,L as o,w as p,m as r,R as s,B as t,z as u,T as v,k as w,I as x,j as y};
|
|
1
|
+
import{_ as e,m as t,v as n,y as r}from"./paths-B4IRk3wi.js";import{S as i,T as a}from"./subsystem-C5XF2Fy5.js";import o from"node:fs";import s from"node:os";import c from"node:path";function l(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}async function u(e){await o.promises.mkdir(e,{recursive:!0})}async function d(e){try{return await o.promises.access(e),!0}catch{return!1}}function f(e,t,n){return Math.max(t,Math.min(n,e))}function p(e,t,n){return f(Math.floor(e),t,n)}const m=f;function h(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function g(e){try{return JSON.parse(e)}catch{return null}}function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function v(e){if(e!==`web`)throw Error(`Web channel must be 'web'`)}function y(e){let t=e.replace(/^whatsapp:/,``).trim().replace(/[^\d+]/g,``);return t.startsWith(`+`)?`+${t.slice(1)}`:`+${t}`}function b(e,t){if(!e||!Array.isArray(t)||t.length===0)return!1;let n=y(e);return t.some(e=>{if(e===`*`)return!1;try{return y(String(e))===n}catch{return!1}})}function x(e){let t=e.replace(/^whatsapp:/,``).trim();return t.includes(`@`)?t:`${y(t).replace(/\D/g,``)}@s.whatsapp.net`}function S(e){let n=new Set,r=e=>{e&&n.add(j(e))};r(e?.authDir);for(let t of e?.lidMappingDirs??[])r(t);return r(t()),r(c.join(B,`credentials`)),[...n]}function C(e,t){let n=`lid-mapping-${e}_reverse.json`,r=S(t);for(let e of r){let t=c.join(e,n);try{let e=o.readFileSync(t,`utf8`),n=JSON.parse(e);if(n==null)continue;return y(String(n))}catch{}}return null}function w(e,t){let n=e.match(/^(\d+)(?::\d+)?@(s\.whatsapp\.net|hosted)$/);if(n)return`+${n[1]}`;let r=e.match(/^(\d+)(?::\d+)?@(lid|hosted\.lid)$/);if(r){let e=r[1],n=C(e,t);if(n)return n;(t?.logMissing??a())&&i(`LID mapping not found for ${e}; skipping inbound message`)}return null}async function T(e,t){if(!e)return null;let n=w(e,t);if(n)return n;if(!/(@lid|@hosted\.lid)$/.test(e)||!t?.lidLookup?.getPNForLID)return null;try{let n=await t.lidLookup.getPNForLID(e);return n?w(n,t):null}catch(t){return a()&&i(`LID mapping lookup failed for ${e}: ${String(t)}`),null}}function E(e){return new Promise(t=>setTimeout(t,e))}function D(e){return e>=55296&&e<=56319}function O(e){return e>=56320&&e<=57343}function k(e,t,n){let r=e.length,i=t<0?Math.max(r+t,0):Math.min(t,r),a=n===void 0?r:n<0?Math.max(r+n,0):Math.min(n,r);if(a<i){let e=i;i=a,a=e}return i>0&&i<r&&O(e.charCodeAt(i))&&D(e.charCodeAt(i-1))&&(i+=1),a>0&&a<r&&D(e.charCodeAt(a-1))&&O(e.charCodeAt(a))&&--a,e.slice(i,a)}function A(e,t){let n=Math.max(0,Math.floor(t));return e.length<=n?e:k(e,0,n)}function j(t){if(!t)return``;let n=t.trim();if(!n)return n;if(n.startsWith(`~`)){let t=e(n,{home:r(process.env,s.homedir),env:process.env,homedir:s.homedir});return c.resolve(t)}return c.resolve(n)}function M(e=process.env,t=s.homedir){let n=e.OPENCLAW_STATE_DIR?.trim()||e.CLAWDBOT_STATE_DIR?.trim();if(n)return j(n);let i=c.join(r(e,t),`.qbotclaw`);try{if(o.existsSync(i))return i}catch{}return i}function N(){return n(process.env,s.homedir)}function P(){let e=N();if(e)return process.env.OPENCLAW_HOME?.trim()?{home:e,prefix:`$OPENCLAW_HOME`}:{home:e,prefix:`~`}}function F(e){if(!e)return e;let t=P();if(!t)return e;let{home:n,prefix:r}=t;return e===n?r:e.startsWith(`${n}/`)||e.startsWith(`${n}\\`)?`${r}${e.slice(n.length)}`:e}function I(e){if(!e)return e;let t=P();return t?e.split(t.home).join(t.prefix):e}function L(e){return F(e)}function R(e){return I(e)}function z(e,t,n){let r=e.replaceAll(`\x1B`,``),i=t.replaceAll(`\x1B`,``);return n?.force===!0||n?.force!==!1&&process.stdout.isTTY?`\u001b]8;;${i}\u0007${r}\u001b]8;;\u0007`:n?.fallback??`${r} (${i})`}const B=M();export{E as C,l as D,A as E,F as S,x as T,N as _,f as a,g as b,u as c,_ as d,b as f,M as g,d as h,p as i,h as l,y as m,v as n,L as o,w as p,m as r,R as s,B as t,z as u,T as v,k as w,I as x,j as y};
|
package/dist/version-q3SkUw2K.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{createRequire as t}from"node:module";var n=e({RUNTIME_SERVICE_VERSION_FALLBACK:()=>o,VERSION:()=>l,resolveRuntimeServiceVersion:()=>c,resolveUsableRuntimeVersion:()=>s});const r=[`../package.json`,`../../package.json`,`../../../package.json`,`./package.json`];function i(e,n,r={}){try{let i=t(e),a=r.field??`version`;for(let e of n)try{let t=i(e),n=t[a]?.trim();if(!n||r.requirePackageName&&t.name!==`@qqbrowser/openclaw-qbot`)continue;return n}catch{}return null}catch{return null}}function a(...e){for(let t of e){let e=t?.trim();if(e)return e}}const o=`unknown`;function s(e){let t=e?.trim();if(!(!t||t===`0.0.0`))return t}function c(e=process.env,t=o){let n=s(l);return a(e.OPENCLAW_VERSION,n,e.OPENCLAW_SERVICE_VERSION,e.npm_package_version)??t}const l=i(import.meta.url,r,{field:`version`})??`0.0.0`;export{c as n,n as r,l as t};
|
|
1
|
+
import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{createRequire as t}from"node:module";var n=e({RUNTIME_SERVICE_VERSION_FALLBACK:()=>o,VERSION:()=>l,resolveRuntimeServiceVersion:()=>c,resolveUsableRuntimeVersion:()=>s});const r=[`../package.json`,`../../package.json`,`../../../package.json`,`./package.json`];function i(e,n,r={}){try{let i=t(e),a=r.field??`version`;for(let e of n)try{let t=i(e),n=t[a]?.trim();if(!n||r.requirePackageName&&t.name!==`@qqbrowser/openclaw-qbot`)continue;return n}catch{}return null}catch{return null}}function a(...e){for(let t of e){let e=t?.trim();if(e)return e}}const o=`unknown`;function s(e){let t=e?.trim();if(!(!t||t===`0.0.0`))return t}function c(e=process.env,t=o){let n=s(l);return a(e.OPENCLAW_VERSION,n,e.OPENCLAW_SERVICE_VERSION,e.npm_package_version)??t}const l=i(import.meta.url,r,{field:`version`})??`0.0.0`;export{c as n,n as r,l as t};
|
package/dist/warning-filter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=Symbol.for(`openclaw.warning-filter`);function t(e){return!!(e.code===`DEP0040`&&e.message?.includes(`punycode`)||e.code===`DEP0060`&&e.message?.includes(`util._extend`)||e.name===`ExperimentalWarning`&&e.message?.includes(`SQLite is an experimental feature`))}function n(e){let t=e[0],n=e[1],r=e[2],i,a,o;if(t instanceof Error?(i=t.name,o=t.message,a=t.code):typeof t==`string`&&(o=t),n&&typeof n==`object`&&!Array.isArray(n)){let e=n;typeof e.type==`string`&&(i=e.type),typeof e.code==`string`&&(a=e.code)}else typeof n==`string`&&(i=n),typeof r==`string`&&(a=r);return{name:i,code:a,message:o}}function r(){let r=globalThis;if(r[e]?.installed)return;let i=process.emitWarning.bind(process),a=((...e)=>{if(!t(n(e)))return Reflect.apply(i,process,e)});process.emitWarning=a,r[e]={installed:!0}}export{r as installProcessWarningFilter,t as shouldIgnoreWarning};
|
|
1
|
+
const e=Symbol.for(`openclaw.warning-filter`);function t(e){return!!(e.code===`DEP0040`&&e.message?.includes(`punycode`)||e.code===`DEP0060`&&e.message?.includes(`util._extend`)||e.name===`ExperimentalWarning`&&e.message?.includes(`SQLite is an experimental feature`))}function n(e){let t=e[0],n=e[1],r=e[2],i,a,o;if(t instanceof Error?(i=t.name,o=t.message,a=t.code):typeof t==`string`&&(o=t),n&&typeof n==`object`&&!Array.isArray(n)){let e=n;typeof e.type==`string`&&(i=e.type),typeof e.code==`string`&&(a=e.code)}else typeof n==`string`&&(i=n),typeof r==`string`&&(a=r);return{name:i,code:a,message:o}}function r(){let r=globalThis;if(r[e]?.installed)return;let i=process.emitWarning.bind(process),a=((...e)=>{if(!t(n(e)))return Reflect.apply(i,process,e)});process.emitWarning=a,r[e]={installed:!0}}export{r as installProcessWarningFilter,t as shouldIgnoreWarning};
|
package/dist/web-Bfz_qlYe.js
CHANGED
|
@@ -2,4 +2,4 @@ import{Ct as e,Et as t,kt as n,s as r,wt as i}from"./paths-piJASC5k.js";import".
|
|
|
2
2
|
`).trim();if(o||=mt(r),!o){let e=r?Ye(r):void 0;return u(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let s=n?.participant??void 0,c=s?p(s)??s:void 0,l=c??`unknown sender`;return{id:n?.stanzaId?String(n.stanzaId):void 0,body:o,sender:l,senderJid:s,senderE164:c}}function wt(e){return Se({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function Tt(e){let t=S(),n=T({cfg:t,accountId:e.accountId}),r=n.dmPolicy??`pairing`,i=n.allowFrom??[],a=await U({provider:`whatsapp`,accountId:n.accountId,dmPolicy:r}),o=i.length===0&&e.selfE164?[e.selfE164]:[],s=i.length>0?i:o,c=n.groupAllowFrom??(i.length>0?i:void 0),l=e.from===e.selfE164,d=n.selfChatMode??h(e.selfE164,i),p=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,m=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-p,g=we(t),{groupPolicy:_,providerMissingFallbackApplied:v}=wt({providerConfigPresent:t.channels?.whatsapp!==void 0,groupPolicy:n.groupPolicy,defaultGroupPolicy:g});Ce({providerMissingFallbackApplied:v,providerKey:`whatsapp`,accountId:n.accountId,log:e=>u(e)});let y=f(e.from),b=typeof e.senderE164==`string`?f(e.senderE164):null,x=pe({isGroup:e.group,dmPolicy:r,groupPolicy:_,allowFrom:e.group?i:s,groupAllowFrom:c,storeAllowFrom:a,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let n=new Set(t.map(e=>f(String(e))).filter(e=>!!e));return!e.group&&l?!0:e.group?!!(b&&n.has(b)):n.has(y)}});if(e.group&&x.decision!==`allow`)return x.reason===`groupPolicy=disabled`?u(`Blocked group message (groupPolicy: disabled)`):x.reason===`groupPolicy=allowlist (empty allowlist)`?u(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):u(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:d,resolvedAccountId:n.accountId};if(!e.group){if(e.isFromMe&&!l)return u(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:d,resolvedAccountId:n.accountId};if(x.decision===`block`&&x.reason===`dmPolicy=disabled`)return u(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:d,resolvedAccountId:n.accountId};if(x.decision===`pairing`&&!l){let t=e.from;return m?u(`Skipping pairing reply for historical DM from ${t}.`):await _e({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await De({channel:`whatsapp`,id:e,accountId:n.accountId,meta:t}),onCreated:()=>{u(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{u(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:d,resolvedAccountId:n.accountId}}if(x.decision!==`allow`)return u(`Blocked unauthorized sender ${e.from} (dmPolicy=${r})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:d,resolvedAccountId:n.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:d,resolvedAccountId:n.accountId}}function Et(e){return Ze(e)}function Dt(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function Ot(e,t){let n=Et(e.message);if(!n)return;let r=Dt(n),i=n.documentMessage?.fileName??void 0;if(!(!n.imageMessage&&!n.videoMessage&&!n.documentMessage&&!n.audioMessage&&!n.stickerMessage))try{return{buffer:await qe(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:r,fileName:i}}catch(e){u(`downloadMediaMessage failed: ${String(e)}`);return}}function kt(e){Fe({channel:`whatsapp`,accountId:e,direction:`outbound`})}function At(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function jt(e){return{sendMessage:async(t,n,r,i,a)=>{let o=d(t),s;if(r&&i)if(i.startsWith(`image/`))s={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))s={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;s={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else s={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else s={text:n};let c=await e.sock.sendMessage(o,s);return kt(a?.accountId??e.defaultAccountId),{messageId:At(c)}},sendPoll:async(t,n)=>{let r=d(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return kt(e.defaultAccountId),{messageId:At(i)}},sendReaction:async(t,n,r,i,a)=>{let o=d(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?d(a):void 0}}})},sendComposingTo:async t=>{let n=d(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Mt(e){let t=s({module:`web-inbound`}),n=l(`gateway/channels/whatsapp`).child(`inbound`),r=await Ue(!1,e.verbose,{authDir:e.authDir});await Ve(r);let i=Date.now(),o=null,c=new Promise(e=>{o=e}),d=e=>{if(!o)return;let t=o;o=null,t(e)};try{await r.sendPresenceUpdate(`available`),a()&&u(`Sent global 'available' presence on connect`)}catch(e){u(`Failed to send 'available' presence on connect: ${String(e)}`)}let f=r.user?.id,m=f?p(f):null,h=ue({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
|
|
3
3
|
`),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}}),_=new Map,v=300*1e3,b=r.signalRepository?.lidMapping,x=async t=>g(t,{authDir:e.authDir,lidLookup:b}),S=async e=>{let t=_.get(e);if(t&&t.expires>Date.now())return t;try{let t=await r.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await x(e.id)??e.id)??[])).filter(Boolean)??[],i={subject:t.subject,participants:n,expires:Date.now()+v};return _.set(e,i),i}catch(t){return u(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+v}}},C=async t=>{let n=t.key?.id??void 0,a=t.key?.remoteJid;if(!a||a.endsWith(`@status`)||a.endsWith(`@broadcast`))return null;let o=Xe(a)===!0;if(n&&it(`${e.accountId}:${a}:${n}`))return null;let s=t.key?.participant??void 0,c=o?a:await x(a);if(!c)return null;let l=o?s?await x(s):null:c,u,d;if(o){let e=await S(a);u=e.subject,d=e.participants}let f=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,p=await Tt({accountId:e.accountId,from:c,selfE164:m,senderE164:l,group:o,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:f,connectedAtMs:i,sock:{sendMessage:(e,t)=>r.sendMessage(e,t)},remoteJid:a});return p.allowed?{id:n,remoteJid:a,group:o,participantJid:s,from:c,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async t=>{let{id:n,remoteJid:i,participantJid:o,access:s}=t;if(n&&!s.isSelfChat&&e.sendReadReceipts!==!1)try{await r.readMessages([{remoteJid:i,id:n,participant:o,fromMe:!1}]),a()&&u(`Marked message ${n} as read for ${i}${o?` (participant ${o})`:``}`)}catch(e){u(`Failed to mark message ${n} read: ${String(e)}`)}else n&&s.isSelfChat&&a()&&u(`Self-chat mode: skipping read receipt for ${n}`)},T=async t=>{let n=St(t.message??void 0),i=n?Te(n):void 0,a=pt(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
|
|
4
4
|
`).trim()),!a&&(a=mt(t.message??void 0),!a))return null;let o=Ct(t.message),s,c,l;try{let n=await Ot(t,r);if(n){let t=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;s=(await y(n.buffer,n.mimetype,`inbound`,t,n.fileName)).path,c=n.mimetype,l=n.fileName}}catch(e){u(`Inbound media download failed: ${String(e)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:s,mediaType:c,mediaFileName:l}},E=async(e,i,a)=>{let o=i.remoteJid,s=async()=>{try{await r.sendPresenceUpdate(`composing`,o)}catch(e){u(`Presence update failed: ${String(e)}`)}},c=async e=>{await r.sendMessage(o,{text:e})},l=async e=>{await r.sendMessage(o,e)},d=i.messageTimestampMs,p=ft(e.message),g=e.pushName??void 0;t.info({from:i.from,to:m??`me`,body:a.body,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName,timestamp:d},`inbound message`);let _={id:i.id,from:i.from,conversationId:i.from,to:m??`me`,accountId:i.access.resolvedAccountId,body:a.body,pushName:g,timestamp:d,chatType:i.group?`group`:`direct`,chatId:i.remoteJid,senderJid:i.participantJid,senderE164:i.senderE164??void 0,senderName:g,replyToId:a.replyContext?.id,replyToBody:a.replyContext?.body,replyToSender:a.replyContext?.sender,replyToSenderJid:a.replyContext?.senderJid,replyToSenderE164:a.replyContext?.senderE164,groupSubject:i.groupSubject,groupParticipants:i.groupParticipants,mentionedJids:p??void 0,selfJid:f,selfE164:m,fromMe:!!e.key?.fromMe,location:a.location??void 0,sendComposing:s,reply:c,sendMedia:l,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName};try{Promise.resolve(h.enqueue(_)).catch(e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}},D=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){Fe({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await C(n);if(!r||(await w(r),t.type===`append`))continue;let i=await T(n);i&&await E(n,r,i)}};r.ev.on(`messages.upsert`,D);let O=e=>{try{if(e.connection===`close`){let t=He(e.lastDisconnect?.error);d({status:t,isLoggedOut:t===Ke.loggedOut,error:e.lastDisconnect?.error})}}catch(e){t.error({error:String(e)},`connection.update handler error`),d({status:void 0,isLoggedOut:!1,error:e})}};return r.ev.on(`connection.update`,O),{close:async()=>{try{let e=r.ev,t=D,n=O;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),r.ws?.close()}catch(e){u(`Socket close failed: ${String(e)}`)}},onClose:c,signalClose:e=>{d(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...jt({sock:{sendMessage:(e,t)=>r.sendMessage(e,t),sendPresenceUpdate:(e,t)=>r.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Nt(e,t){return{mentionRegexes:F(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Pt(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>p(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?p(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function Ft(e,t,n){let r=e=>I(e),i=h(n.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!i)return!!(n.selfE164&&n.normalizedMentions.includes(n.selfE164)||n.selfJid&&n.normalizedMentions.includes(n.selfJid));let a=r(e.body);if(t.mentionRegexes.some(e=>e.test(a)))return!0;if(n.selfE164){let t=n.selfE164.replace(/\D/g,``);if(t){if(a.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function It(e,t,n){let r=Pt(e,n);return{wasMentioned:Ft(e,t,r),details:{from:e.from,body:e.body,bodyClean:I(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function Lt(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>f(e)).filter(e=>!!e)}function Rt(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function zt(t){let n=be({agentId:t.agentId,channel:`whatsapp`,accountId:t.route.accountId,peer:{kind:t.msg.chatType===`group`?`group`:`direct`,id:t.peerId},dmScope:t.cfg.session?.dmScope,identityLinks:t.cfg.session?.identityLinks}),r=i({agentId:t.agentId,mainKey:e});return{sessionKey:n,mainSessionKey:r,lastRoutePolicy:z({sessionKey:n,mainSessionKey:r})}}async function Bt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let r=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${r})`);let i=e.cfg.agents?.list?.map(e=>n(e.id)),a=(i?.length??0)>0,o=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,s=async t=>{let r=n(t);if(a&&!i?.includes(r))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let s=zt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:r}),c={...e.route,agentId:r,...s};try{return await e.processMessage(e.msg,c,e.groupHistoryKey,{groupHistory:o,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(r===`sequential`)for(let e of t)await s(e);else await Promise.allSettled(t.map(s));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Vt(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function Ht(e,t){let n=O({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return x({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Ut(e,t){let n=O({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return v({cfg:e,channel:`whatsapp`,groupId:n??t})}function Wt(e){let t=A(r(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Ut(e.cfg,e.conversationId)?`mention`:`always`;return R(t?.groupActivation)??n}function Gt(e,t,n){for(let r of e){let e=f(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Kt(e,t,n,r){if(!n||!r)return;let i=f(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function qt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&Gt(t,i,a),n&&Gt(n.keys(),i,a),a.length===0&&r){let e=f(r)??r;e&&a.push(e)}if(a.length!==0)return a.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function Jt(e,t){let n=f(t.senderE164??``);return n?Lt(e,t.selfE164??void 0).includes(n):!1}function Yt(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;H({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Xt(e,t){return e.logVerbose(t),Yt({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Zt(e){let t=Ht(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Kt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Nt(e.cfg,e.agentId),r=Vt(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=K(r),a=Jt(e.baseMentionConfig,e.msg),o=a&&ae(r,e.cfg);if(i.hasCommand&&!a)return Xt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=It(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,u=e.msg.selfJid?.replace(/:\\d+/,``),d=e.msg.replyToSenderJid?.replace(/:\\d+/,``),p=e.msg.selfE164?f(e.msg.selfE164):null,m=e.msg.replyToSenderE164?f(e.msg.replyToSenderE164):null,h=V({requireMention:l,canDetectMention:!0,wasMentioned:c,implicitMention:!!(u&&d&&u===d||p&&m&&p===m),shouldBypassMention:o});return e.msg.wasMentioned=h.effectiveWasMentioned,!o&&l&&h.shouldSkip?Xt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Qt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function $t(e){let t=r(e.cfg.session?.store,{agentId:e.storeAgentId}),n=D({storePath:t,sessionKey:e.sessionKey,deliveryContext:{channel:e.channel,to:e.to,accountId:e.accountId},ctx:e.ctx}).catch(n=>{e.warn({error:q(n),storePath:t,sessionKey:e.sessionKey,to:e.to},`failed updating last route`)});Qt(e.backgroundTasks,n)}function en(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?f(e.senderE164)??e.senderE164:e.from.includes(`@`)?p(e.from)??e.from:f(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function tn(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function nn(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function rn(e){let{replyResult:t,msg:n,maxMediaBytes:r,textLimit:i,replyLogger:s,connectionId:c,skipLog:l}=e,d=Date.now();if(nn(t)){Z.debug(`Suppressed reasoning payload to ${n.from}`);return}let f=e.tableMode??`code`,p=e.chunkMode??`length`,m=je(Re(Ie(t.text||``,f)),i,p),h=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],g=async(e,t,r=3)=>{let i;for(let a=1;a<=r;a++)try{return await e()}catch(e){i=e;let s=q(e),c=a===r;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw e;let l=500*a;u(`Retrying ${t} to ${n.from} after failure (${a}/${r-1}) in ${l}ms: ${s}`),await o(l)}throw i};if(h.length===0&&m.length){let e=m.length;for(let[t,r]of m.entries()){let i=Date.now();if(await g(()=>n.reply(r),`text`),!l){let r=Date.now()-i;Z.debug(`Sent chunk ${t+1}/${e} to ${n.from} (${r.toFixed(0)}ms)`)}}s.info({correlationId:n.id??J(),connectionId:c??null,to:n.from,from:n.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-d},`auto-reply sent (text)`);return}let _=[...m];for(let[t,i]of h.entries()){let o=t===0&&_.shift()||void 0;try{let t=await Ae(i,{maxBytes:r,localRoots:e.mediaLocalRoots});if(a()&&(u(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),u(`Web auto-reply media source: ${i} (kind ${t.kind})`)),t.kind===`image`)await g(()=>n.sendMedia({image:t.buffer,caption:o,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await g(()=>n.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:o}),`media:audio`);else if(t.kind===`video`)await g(()=>n.sendMedia({video:t.buffer,caption:o,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??i.split(`/`).pop()??`file`,r=t.contentType??`application/octet-stream`;await g(()=>n.sendMedia({document:t.buffer,fileName:e,caption:o,mimetype:r}),`media:document`)}Z.info(`Sent media reply to ${n.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),s.info({correlationId:n.id??J(),connectionId:c??null,to:n.from,from:n.to,text:o??null,mediaUrl:i,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-d},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${n.from}: ${q(e)}`),s.warn({err:e,mediaUrl:i},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,r=[_.shift()??o??``,t].filter(Boolean).join(`
|
|
5
|
-
`);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of _)await n.reply(e)}function an(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;B({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),u(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function on(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function sn(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=se(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=on(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return oe({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function cn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=f(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=T({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await U({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return he({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>f(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function ln(e){let t=T({cfg:e.cfg,accountId:e.msg.accountId});return W({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>f(e)})}async function un(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=le({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),o=sn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),s=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(o=ve({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:o,excludeLast:!1,formatEntry:e=>oe({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),s=!(e.suppressGroupHistoryClear??!1)}let c=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:o});if(e.echoHas(c))return u(`Skipping auto-reply: detected echo for combined message`),e.echoForget(c),!1;an({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let l=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:l,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(o,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let d=e.msg.chatType===`group`?t:e.msg.from,m=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${d} -> ${e.msg.to} (${e.msg.chatType}${m}, ${o.length} chars)`),a()&&X.debug(`Inbound body: ${$(o,400)}`);let h=e.msg.chatType===`group`?void 0:e.msg.senderE164?f(e.msg.senderE164):e.msg.from.includes(`@`)?p(e.msg.from):f(e.msg.from),g=e.maxMediaTextChunkLimit??Me(e.cfg,`whatsapp`),_=Ne(e.cfg,`whatsapp`,e.route.accountId),v=Pe({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),y=ke(e.cfg,e.route.agentId),b=!1,x=!1,S=re(e.msg.body,e.cfg)?await cn({cfg:e.cfg,msg:e.msg}):void 0,C=e.cfg.messages?.responsePrefix,{onModelSelected:w,...T}=fe({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),E=e.msg.chatType!==`group`&&!!e.msg.selfE164&&f(e.msg.from)===f(e.msg.selfE164??``),D=T.responsePrefix??(C===void 0&&E?ce(e.cfg,e.route.agentId):void 0),O=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=L({Body:o,BodyForAgent:e.msg.body,InboundHistory:O,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:qt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:S,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ee(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),A=ln({cfg:e.cfg,msg:e.msg}),j=!A||A===h,M=P({route:e.route,sessionKey:e.route.sessionKey});h&&M===e.route.mainSessionKey&&j?$t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:h,accountId:e.route.accountId,ctx:k,warn:e.replyLogger.warn.bind(e.replyLogger)}):h&&M===e.route.mainSessionKey&&A&&u(`Skipping main-session last route update for ${h} (pinned owner ${A})`);let te=ee({storePath:n,sessionKey:e.route.sessionKey,ctx:k}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Qt(e.backgroundTasks,te);let{queuedFinal:N}=await ye({ctx:k,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...T,responsePrefix:D,onHeartbeatStrip:()=>{b||(b=!0,u(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await rn({replyResult:n,msg:e.msg,mediaLocalRoots:y,maxMediaBytes:e.maxMediaBytes,textLimit:g,chunkMode:_,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:v}),x=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:o,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let s=e.msg.chatType===`group`?t:e.msg.from??`unknown`,c=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${s}${c?` (media)`:``}`),a()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${c?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:w}});return N?(s&&e.groupHistories.set(e.groupHistoryKey,[]),x):(s&&e.groupHistories.set(e.groupHistoryKey,[]),u(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function dn(e){let n=async(t,n,r,i)=>un({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=en(r),o=ne({cfg:S(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?t({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&u(`📱 Same-phone mode detected (from === to: ${r.from})`),e.echoTracker.has(r.body)){u(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(r.body);return}if(r.chatType===`group`){let t={From:r.from,To:r.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:r.chatType,ConversationLabel:i,GroupSubject:r.groupSubject,SenderName:r.senderName,SenderId:r.senderJid?.trim()||r.senderE164,SenderE164:r.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if($t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Zt({cfg:e.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:u,replyLogger:e.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=f(a)??r.senderE164);await Bt({cfg:e.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:n})||await n(r,o,s)}}function fn(e){return e===440}async function pn(e,t=Mt,n=!0,r=N,i=c,a,o={}){let l=J(),d=s({module:`web-auto-reply`,runId:l}),f=s({module:`web-heartbeat`,runId:l}),p=s({module:`web-reconnect`,runId:l}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{o.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=S(),_=T({cfg:g,accountId:o.accountId}),v={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:_.ackReaction,messagePrefix:_.messagePrefix,allowFrom:_.allowFrom,groupAllowFrom:_.groupAllowFrom,groupPolicy:_.groupPolicy,textChunkLimit:_.textChunkLimit,chunkMode:_.chunkMode,mediaMaxMb:_.mediaMaxMb,blockStreaming:_.blockStreaming,groups:_.groups}}},y=C(_),x=$e(v,o.heartbeatSeconds),w=et(v,o.reconnect),E=Nt(v),D=v.channels?.whatsapp?.accounts?.[o.accountId??``]?.historyLimit??v.channels?.whatsapp?.historyLimit??v.messages?.groupChat?.historyLimit??50,O=new Map,ee=new Map,A=Rt({maxItems:100,logVerbose:u}),j=o.sleep??((e,t)=>G(e,t??a)),P=()=>a?.aborted===!0,re=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),F=process.getMaxListeners?.()??10;process.setMaxListeners&&F<50&&process.setMaxListeners(50);let I=!1,L=()=>{I=!0};process.once(`SIGINT`,L);let R=0;for(;!P();){let s=J(),c=Date.now(),l=null,g=null,S=null,C=0,T=null,F=o.messageTimeoutMs??1800*1e3,oe=o.watchdogCheckMs??60*1e3,z=new Set,se=dn({cfg:v,verbose:e,connectionId:s,maxMediaBytes:y,groupHistoryLimit:D,groupHistories:O,groupMemberNames:ee,echoTracker:A,backgroundTasks:z,replyResolver:r??N,replyLogger:d,baseMentionConfig:E,account:_}),ce=xe({cfg:v,channel:`whatsapp`}),B=await(t??Mt)({verbose:e,accountId:_.accountId,authDir:_.authDir,mediaMaxMb:_.mediaMaxMb,sendReadReceipts:_.sendReadReceipts,debounceMs:ce,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!ae(e.body,v),onMessage:async e=>{C+=1,S=Date.now(),m.lastMessageAt=S,m.lastEventAt=S,h(),await se(e)}});Object.assign(m,me()),m.lastError=null,h();let{e164:le}=b(_.authDir),ue=ne({cfg:v,channel:`whatsapp`,accountId:_.accountId});ie(`WhatsApp gateway connected${le?` as ${le}`:``}.`,{sessionKey:ue.sessionKey}),Le(_.accountId,B),T=Oe(e=>{if(!tn(e))return!1;let t=q(e);return p.warn({connectionId:s,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),B.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Le(_.accountId,null),T&&=(T(),null),l&&clearInterval(l),g&&clearInterval(g),z.size>0&&(await Promise.allSettled(z),z.clear());try{await B.close()}catch(e){u(`Socket close failed: ${q(e)}`)}};if(n&&(l=setInterval(()=>{let e=M(_.authDir),t=S?Math.floor((Date.now()-S)/6e4):null,n={connectionId:s,reconnectAttempts:R,messagesHandled:C,lastMessageAt:S,authAgeMs:e,uptimeMs:Date.now()-c,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?f.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(n,`web gateway heartbeat`)},x*1e3),g=setInterval(()=>{if(!S)return;let e=Date.now()-S;if(e<=F)return;let t=Math.floor(e/6e4);f.warn({connectionId:s,minutesSinceLastMessage:t,lastMessageAt:new Date(S),messagesHandled:C},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${t}m - restarting connection`),V().catch(e=>{u(`Close listener failed: ${q(e)}`)}),B.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},oe)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!n){await V(),process.removeListener(`SIGINT`,L);return}let H=await Promise.race([B.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),re??nt()]);if(Date.now()-c>x*1e3&&(R=0),m.reconnectAttempts=R,h(),P()||I||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=R,h(),p.info({connectionId:s,status:U,loggedOut:W,reconnectAttempts:R,error:G},`web reconnect: connection closed`),ie(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:ue.sessionKey}),W){i.error(`WhatsApp session logged out. Run \`${k(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(fn(U)){p.warn({connectionId:s,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${k(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(R+=1,m.reconnectAttempts=R,h(),w.maxAttempts>0&&R>=w.maxAttempts){p.warn({connectionId:s,status:U,reconnectAttempts:R,maxAttempts:w.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${R}/${w.maxAttempts}). Stopping web monitoring.`),await V();break}let K=te(w,R);p.info({connectionId:s,status:U,reconnectAttempts:R,maxAttempts:w.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${U}). Retry ${R}/${w.maxAttempts||`∞`} in ${de(K)}… (${G})`),await V();try{await j(K,a)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,L)}export{j as WA_WEB_AUTH_DIR,Ue as createWaSocket,w as logWebSelfId,We as loginWeb,pn as monitorWebChannel,Mt as monitorWebInbox,_ as pickWebChannel,Be as sendMessageWhatsApp,Ve as waitForWaConnection,E as webAuthExists};
|
|
5
|
+
`);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of _)await n.reply(e)}function an(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;B({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),u(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function on(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function sn(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=se(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=on(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return oe({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function cn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=f(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=T({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await U({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return he({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>f(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function ln(e){let t=T({cfg:e.cfg,accountId:e.msg.accountId});return W({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>f(e)})}async function un(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=le({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),o=sn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),s=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(o=ve({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:o,excludeLast:!1,formatEntry:e=>oe({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),s=!(e.suppressGroupHistoryClear??!1)}let c=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:o});if(e.echoHas(c))return u(`Skipping auto-reply: detected echo for combined message`),e.echoForget(c),!1;an({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let l=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:l,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(o,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let d=e.msg.chatType===`group`?t:e.msg.from,m=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${d} -> ${e.msg.to} (${e.msg.chatType}${m}, ${o.length} chars)`),a()&&X.debug(`Inbound body: ${$(o,400)}`);let h=e.msg.chatType===`group`?void 0:e.msg.senderE164?f(e.msg.senderE164):e.msg.from.includes(`@`)?p(e.msg.from):f(e.msg.from),g=e.maxMediaTextChunkLimit??Me(e.cfg,`whatsapp`),_=Ne(e.cfg,`whatsapp`,e.route.accountId),v=Pe({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),y=ke(e.cfg,e.route.agentId),b=!1,x=!1,S=re(e.msg.body,e.cfg)?await cn({cfg:e.cfg,msg:e.msg}):void 0,C=e.cfg.messages?.responsePrefix,{onModelSelected:w,...T}=fe({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),E=e.msg.chatType!==`group`&&!!e.msg.selfE164&&f(e.msg.from)===f(e.msg.selfE164??``),D=T.responsePrefix??(C===void 0&&E?ce(e.cfg,e.route.agentId):void 0),O=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=L({Body:o,BodyForAgent:e.msg.body,InboundHistory:O,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:qt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:S,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ee(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),A=ln({cfg:e.cfg,msg:e.msg}),j=!A||A===h,M=P({route:e.route,sessionKey:e.route.sessionKey});h&&M===e.route.mainSessionKey&&j?$t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:h,accountId:e.route.accountId,ctx:k,warn:e.replyLogger.warn.bind(e.replyLogger)}):h&&M===e.route.mainSessionKey&&A&&u(`Skipping main-session last route update for ${h} (pinned owner ${A})`);let te=ee({storePath:n,sessionKey:e.route.sessionKey,ctx:k}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Qt(e.backgroundTasks,te);let{queuedFinal:N}=await ye({ctx:k,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...T,responsePrefix:D,onHeartbeatStrip:()=>{b||(b=!0,u(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await rn({replyResult:n,msg:e.msg,mediaLocalRoots:y,maxMediaBytes:e.maxMediaBytes,textLimit:g,chunkMode:_,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:v}),x=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:o,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let s=e.msg.chatType===`group`?t:e.msg.from??`unknown`,c=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${s}${c?` (media)`:``}`),a()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${c?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:w}});return N?(s&&e.groupHistories.set(e.groupHistoryKey,[]),x):(s&&e.groupHistories.set(e.groupHistoryKey,[]),u(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function dn(e){let n=async(t,n,r,i)=>un({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=en(r),o=ne({cfg:S(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?t({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&u(`📱 Same-phone mode detected (from === to: ${r.from})`),e.echoTracker.has(r.body)){u(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(r.body);return}if(r.chatType===`group`){let t={From:r.from,To:r.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:r.chatType,ConversationLabel:i,GroupSubject:r.groupSubject,SenderName:r.senderName,SenderId:r.senderJid?.trim()||r.senderE164,SenderE164:r.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if($t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Zt({cfg:e.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:u,replyLogger:e.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=f(a)??r.senderE164);await Bt({cfg:e.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:n})||await n(r,o,s)}}function fn(e){return e===440}async function pn(e,t=Mt,n=!0,r=N,i=c,a,o={}){let l=J(),d=s({module:`web-auto-reply`,runId:l}),f=s({module:`web-heartbeat`,runId:l}),p=s({module:`web-reconnect`,runId:l}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{o.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=S(),_=T({cfg:g,accountId:o.accountId}),v={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:_.ackReaction,messagePrefix:_.messagePrefix,allowFrom:_.allowFrom,groupAllowFrom:_.groupAllowFrom,groupPolicy:_.groupPolicy,textChunkLimit:_.textChunkLimit,chunkMode:_.chunkMode,mediaMaxMb:_.mediaMaxMb,blockStreaming:_.blockStreaming,groups:_.groups}}},y=C(_),x=$e(v,o.heartbeatSeconds),w=et(v,o.reconnect),E=Nt(v),D=v.channels?.whatsapp?.accounts?.[o.accountId??``]?.historyLimit??v.channels?.whatsapp?.historyLimit??v.messages?.groupChat?.historyLimit??50,O=new Map,ee=new Map,A=Rt({maxItems:100,logVerbose:u}),j=o.sleep??((e,t)=>G(e,t??a)),P=()=>a?.aborted===!0,re=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),F=process.getMaxListeners?.()??10;process.setMaxListeners&&F<50&&process.setMaxListeners(50);let I=!1,L=()=>{I=!0};process.once(`SIGINT`,L);let R=0;for(;!P();){let s=J(),c=Date.now(),l=null,g=null,S=null,C=0,T=null,F=o.messageTimeoutMs??1800*1e3,oe=o.watchdogCheckMs??60*1e3,z=new Set,se=dn({cfg:v,verbose:e,connectionId:s,maxMediaBytes:y,groupHistoryLimit:D,groupHistories:O,groupMemberNames:ee,echoTracker:A,backgroundTasks:z,replyResolver:r??N,replyLogger:d,baseMentionConfig:E,account:_}),ce=xe({cfg:v,channel:`whatsapp`}),B=await(t??Mt)({verbose:e,accountId:_.accountId,authDir:_.authDir,mediaMaxMb:_.mediaMaxMb,sendReadReceipts:_.sendReadReceipts,debounceMs:ce,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!ae(e.body,v),onMessage:async e=>{C+=1,S=Date.now(),m.lastMessageAt=S,m.lastEventAt=S,h(),await se(e)}});Object.assign(m,me()),m.lastError=null,h();let{e164:le}=b(_.authDir),ue=ne({cfg:v,channel:`whatsapp`,accountId:_.accountId});ie(`WhatsApp gateway connected${le?` as ${le}`:``}.`,{sessionKey:ue.sessionKey}),Le(_.accountId,B),T=Oe(e=>{if(!tn(e))return!1;let t=q(e);return p.warn({connectionId:s,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),B.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Le(_.accountId,null),T&&=(T(),null),l&&clearInterval(l),g&&clearInterval(g),z.size>0&&(await Promise.allSettled(z),z.clear());try{await B.close()}catch(e){u(`Socket close failed: ${q(e)}`)}};if(n&&(l=setInterval(()=>{let e=M(_.authDir),t=S?Math.floor((Date.now()-S)/6e4):null,n={connectionId:s,reconnectAttempts:R,messagesHandled:C,lastMessageAt:S,authAgeMs:e,uptimeMs:Date.now()-c,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?f.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(n,`web gateway heartbeat`)},x*1e3),g=setInterval(()=>{if(!S)return;let e=Date.now()-S;if(e<=F)return;let t=Math.floor(e/6e4);f.warn({connectionId:s,minutesSinceLastMessage:t,lastMessageAt:new Date(S),messagesHandled:C},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${t}m - restarting connection`),V().catch(e=>{u(`Close listener failed: ${q(e)}`)}),B.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},oe)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!n){await V(),process.removeListener(`SIGINT`,L);return}let H=await Promise.race([B.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),re??nt()]);if(Date.now()-c>x*1e3&&(R=0),m.reconnectAttempts=R,h(),P()||I||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=R,h(),p.info({connectionId:s,status:U,loggedOut:W,reconnectAttempts:R,error:G},`web reconnect: connection closed`),ie(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:ue.sessionKey}),W){i.error(`WhatsApp session logged out. Run \`${k(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(fn(U)){p.warn({connectionId:s,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${k(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(R+=1,m.reconnectAttempts=R,h(),w.maxAttempts>0&&R>=w.maxAttempts){p.warn({connectionId:s,status:U,reconnectAttempts:R,maxAttempts:w.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${R}/${w.maxAttempts}). Stopping web monitoring.`),await V();break}let K=te(w,R);p.info({connectionId:s,status:U,reconnectAttempts:R,maxAttempts:w.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${U}). Retry ${R}/${w.maxAttempts||`∞`} in ${de(K)}… (${G})`),await V();try{await j(K,a)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,L)}export{j as WA_WEB_AUTH_DIR,Ue as createWaSocket,w as logWebSelfId,We as loginWeb,pn as monitorWebChannel,Mt as monitorWebInbox,_ as pickWebChannel,Be as sendMessageWhatsApp,Ve as waitForWaConnection,E as webAuthExists};
|
package/dist/web-ClbIohhf.js
CHANGED
|
@@ -2,4 +2,4 @@ import{s as e}from"./paths-CrCoPIVK.js";import"./paths-CChBdtE8.js";import{a as
|
|
|
2
2
|
`).trim();if(s||=mt(i),!s){let e=i?Ye(i):void 0;return r(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let c=n?.participant??void 0,l=c?m(c)??c:void 0,u=l??`unknown sender`;return{id:n?.stanzaId?String(n.stanzaId):void 0,body:s,sender:u,senderJid:c,senderE164:l}}function wt(e){return M({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function Tt(e){let t=C(),n=E({cfg:t,accountId:e.accountId}),i=n.dmPolicy??`pairing`,a=n.allowFrom??[],o=await K({provider:`whatsapp`,accountId:n.accountId,dmPolicy:i}),s=a.length===0&&e.selfE164?[e.selfE164]:[],c=a.length>0?a:s,l=n.groupAllowFrom??(a.length>0?a:void 0),f=e.from===e.selfE164,p=n.selfChatMode??d(e.selfE164,a),m=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,h=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-m,g=P(t),{groupPolicy:_,providerMissingFallbackApplied:v}=wt({providerConfigPresent:t.channels?.whatsapp!==void 0,groupPolicy:n.groupPolicy,defaultGroupPolicy:g});N({providerMissingFallbackApplied:v,providerKey:`whatsapp`,accountId:n.accountId,log:e=>r(e)});let y=u(e.from),b=typeof e.senderE164==`string`?u(e.senderE164):null,x=ge({isGroup:e.group,dmPolicy:i,groupPolicy:_,allowFrom:e.group?a:c,groupAllowFrom:l,storeAllowFrom:o,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let n=new Set(t.map(e=>u(String(e))).filter(e=>!!e));return!e.group&&f?!0:e.group?!!(b&&n.has(b)):n.has(y)}});if(e.group&&x.decision!==`allow`)return x.reason===`groupPolicy=disabled`?r(`Blocked group message (groupPolicy: disabled)`):x.reason===`groupPolicy=allowlist (empty allowlist)`?r(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):r(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:n.accountId};if(!e.group){if(e.isFromMe&&!f)return r(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:n.accountId};if(x.decision===`block`&&x.reason===`dmPolicy=disabled`)return r(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:n.accountId};if(x.decision===`pairing`&&!f){let t=e.from;return h?r(`Skipping pairing reply for historical DM from ${t}.`):await be({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await De({channel:`whatsapp`,id:e,accountId:n.accountId,meta:t}),onCreated:()=>{r(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{r(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:n.accountId}}if(x.decision!==`allow`)return r(`Blocked unauthorized sender ${e.from} (dmPolicy=${i})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:n.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:p,resolvedAccountId:n.accountId}}function Et(e){return Ze(e)}function Dt(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function Ot(e,t){let n=Et(e.message);if(!n)return;let i=Dt(n),a=n.documentMessage?.fileName??void 0;if(!(!n.imageMessage&&!n.videoMessage&&!n.documentMessage&&!n.audioMessage&&!n.stickerMessage))try{return{buffer:await qe(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:i,fileName:a}}catch(e){r(`downloadMediaMessage failed: ${String(e)}`);return}}function kt(e){Fe({channel:`whatsapp`,accountId:e,direction:`outbound`})}function At(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function jt(e){return{sendMessage:async(t,n,r,i,a)=>{let o=h(t),s;if(r&&i)if(i.startsWith(`image/`))s={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))s={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;s={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else s={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else s={text:n};let c=await e.sock.sendMessage(o,s);return kt(a?.accountId??e.defaultAccountId),{messageId:At(c)}},sendPoll:async(t,n)=>{let r=h(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return kt(e.defaultAccountId),{messageId:At(i)}},sendReaction:async(t,n,r,i,a)=>{let o=h(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?h(a):void 0}}})},sendComposingTo:async t=>{let n=h(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Mt(e){let t=n({module:`web-inbound`}),o=a(`gateway/channels/whatsapp`).child(`inbound`),s=await Ue(!1,e.verbose,{authDir:e.authDir});await Ve(s);let c=Date.now(),l=null,u=new Promise(e=>{l=e}),d=e=>{if(!l)return;let t=l;l=null,t(e)};try{await s.sendPresenceUpdate(`available`),i()&&r(`Sent global 'available' presence on connect`)}catch(e){r(`Failed to send 'available' presence on connect: ${String(e)}`)}let p=s.user?.id,h=p?m(p):null,g=U({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
|
|
3
3
|
`),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{t.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}}),_=new Map,v=300*1e3,b=s.signalRepository?.lidMapping,x=async t=>f(t,{authDir:e.authDir,lidLookup:b}),S=async e=>{let t=_.get(e);if(t&&t.expires>Date.now())return t;try{let t=await s.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await x(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:t.subject,participants:n,expires:Date.now()+v};return _.set(e,r),r}catch(t){return r(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+v}}},C=async t=>{let n=t.key?.id??void 0,r=t.key?.remoteJid;if(!r||r.endsWith(`@status`)||r.endsWith(`@broadcast`))return null;let i=Xe(r)===!0;if(n&&it(`${e.accountId}:${r}:${n}`))return null;let a=t.key?.participant??void 0,o=i?r:await x(r);if(!o)return null;let l=i?a?await x(a):null:o,u,d;if(i){let e=await S(r);u=e.subject,d=e.participants}let f=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,p=await Tt({accountId:e.accountId,from:o,selfE164:h,senderE164:l,group:i,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:r});return p.allowed?{id:n,remoteJid:r,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async t=>{let{id:n,remoteJid:a,participantJid:o,access:c}=t;if(n&&!c.isSelfChat&&e.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:a,id:n,participant:o,fromMe:!1}]),i()&&r(`Marked message ${n} as read for ${a}${o?` (participant ${o})`:``}`)}catch(e){r(`Failed to mark message ${n} read: ${String(e)}`)}else n&&c.isSelfChat&&i()&&r(`Self-chat mode: skipping read receipt for ${n}`)},T=async t=>{let n=St(t.message??void 0),i=n?Te(n):void 0,a=pt(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
|
|
4
4
|
`).trim()),!a&&(a=mt(t.message??void 0),!a))return null;let o=Ct(t.message),c,l,u;try{let n=await Ot(t,s);if(n){let t=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;c=(await y(n.buffer,n.mimetype,`inbound`,t,n.fileName)).path,l=n.mimetype,u=n.fileName}}catch(e){r(`Inbound media download failed: ${String(e)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:c,mediaType:l,mediaFileName:u}},E=async(e,n,i)=>{let a=n.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,a)}catch(e){r(`Presence update failed: ${String(e)}`)}},l=async e=>{await s.sendMessage(a,{text:e})},u=async e=>{await s.sendMessage(a,e)},d=n.messageTimestampMs,f=ft(e.message),m=e.pushName??void 0;t.info({from:n.from,to:h??`me`,body:i.body,mediaPath:i.mediaPath,mediaType:i.mediaType,mediaFileName:i.mediaFileName,timestamp:d},`inbound message`);let _={id:n.id,from:n.from,conversationId:n.from,to:h??`me`,accountId:n.access.resolvedAccountId,body:i.body,pushName:m,timestamp:d,chatType:n.group?`group`:`direct`,chatId:n.remoteJid,senderJid:n.participantJid,senderE164:n.senderE164??void 0,senderName:m,replyToId:i.replyContext?.id,replyToBody:i.replyContext?.body,replyToSender:i.replyContext?.sender,replyToSenderJid:i.replyContext?.senderJid,replyToSenderE164:i.replyContext?.senderE164,groupSubject:n.groupSubject,groupParticipants:n.groupParticipants,mentionedJids:f??void 0,selfJid:p,selfE164:h,fromMe:!!e.key?.fromMe,location:i.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:i.mediaPath,mediaType:i.mediaType,mediaFileName:i.mediaFileName};try{Promise.resolve(g.enqueue(_)).catch(e=>{t.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){t.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},D=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){Fe({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await C(n);if(!r||(await w(r),t.type===`append`))continue;let i=await T(n);i&&await E(n,r,i)}};s.ev.on(`messages.upsert`,D);let O=e=>{try{if(e.connection===`close`){let t=He(e.lastDisconnect?.error);d({status:t,isLoggedOut:t===Ke.loggedOut,error:e.lastDisconnect?.error})}}catch(e){t.error({error:String(e)},`connection.update handler error`),d({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,O),{close:async()=>{try{let e=s.ev,t=D,n=O;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),s.ws?.close()}catch(e){r(`Socket close failed: ${String(e)}`)}},onClose:u,signalClose:e=>{d(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...jt({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Nt(e,t){return{mentionRegexes:I(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Pt(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>m(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?m(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function Ft(e,t,n){let r=e=>R(e),i=d(n.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!i)return!!(n.selfE164&&n.normalizedMentions.includes(n.selfE164)||n.selfJid&&n.normalizedMentions.includes(n.selfJid));let a=r(e.body);if(t.mentionRegexes.some(e=>e.test(a)))return!0;if(n.selfE164){let t=n.selfE164.replace(/\D/g,``);if(t){if(a.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function It(e,t,n){let r=Pt(e,n);return{wasMentioned:Ft(e,t,r),details:{from:e.from,body:e.body,bodyClean:R(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function Lt(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>u(e)).filter(e=>!!e)}function Rt(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function zt(e){let t=Ce({agentId:e.agentId,channel:`whatsapp`,accountId:e.route.accountId,peer:{kind:e.msg.chatType===`group`?`group`:`direct`,id:e.peerId},dmScope:e.cfg.session?.dmScope,identityLinks:e.cfg.session?.identityLinks}),n=l({agentId:e.agentId,mainKey:o});return{sessionKey:t,mainSessionKey:n,lastRoutePolicy:ue({sessionKey:t,mainSessionKey:n})}}async function Bt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let n=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${n})`);let r=e.cfg.agents?.list?.map(e=>s(e.id)),i=(r?.length??0)>0,a=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,o=async t=>{let n=s(t);if(i&&!r?.includes(n))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let o=zt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:n}),c={...e.route,agentId:n,...o};try{return await e.processMessage(e.msg,c,e.groupHistoryKey,{groupHistory:a,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(n===`sequential`)for(let e of t)await o(e);else await Promise.allSettled(t.map(o));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Vt(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function Ht(e,t){let n=A({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return x({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Ut(e,t){let n=A({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return v({cfg:e,channel:`whatsapp`,groupId:n??t})}function Wt(t){let n=ee(e(t.cfg.session?.store,{agentId:t.agentId}))[t.sessionKey],r=Ut(t.cfg,t.conversationId)?`mention`:`always`;return z(n?.groupActivation)??r}function Gt(e,t,n){for(let r of e){let e=u(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Kt(e,t,n,r){if(!n||!r)return;let i=u(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function qt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&Gt(t,i,a),n&&Gt(n.keys(),i,a),a.length===0&&r){let e=u(r)??r;e&&a.push(e)}if(a.length!==0)return a.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function Jt(e,t){let n=u(t.senderE164??``);return n?Lt(e,t.selfE164??void 0).includes(n):!1}function Yt(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;G({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Xt(e,t){return e.logVerbose(t),Yt({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Zt(e){let t=Ht(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Kt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Nt(e.cfg,e.agentId),r=Vt(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=me(r),a=Jt(e.baseMentionConfig,e.msg),o=a&&le(r,e.cfg);if(i.hasCommand&&!a)return Xt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=It(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,d=e.msg.selfJid?.replace(/:\\d+/,``),f=e.msg.replyToSenderJid?.replace(/:\\d+/,``),p=e.msg.selfE164?u(e.msg.selfE164):null,m=e.msg.replyToSenderE164?u(e.msg.replyToSenderE164):null,h=W({requireMention:l,canDetectMention:!0,wasMentioned:c,implicitMention:!!(d&&f&&d===f||p&&m&&p===m),shouldBypassMention:o});return e.msg.wasMentioned=h.effectiveWasMentioned,!o&&l&&h.shouldSkip?Xt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Qt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function $t(t){let n=e(t.cfg.session?.store,{agentId:t.storeAgentId}),r=k({storePath:n,sessionKey:t.sessionKey,deliveryContext:{channel:t.channel,to:t.to,accountId:t.accountId},ctx:t.ctx}).catch(e=>{t.warn({error:q(e),storePath:n,sessionKey:t.sessionKey,to:t.to},`failed updating last route`)});Qt(t.backgroundTasks,r)}function en(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?u(e.senderE164)??e.senderE164:e.from.includes(`@`)?m(e.from)??e.from:u(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function tn(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function nn(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function rn(e){let{replyResult:t,msg:n,maxMediaBytes:a,textLimit:o,replyLogger:s,connectionId:c,skipLog:l}=e,u=Date.now();if(nn(t)){Z.debug(`Suppressed reasoning payload to ${n.from}`);return}let d=e.tableMode??`code`,f=e.chunkMode??`length`,p=je(Re(Ie(t.text||``,d)),o,f),m=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],h=async(e,t,i=3)=>{let a;for(let o=1;o<=i;o++)try{return await e()}catch(e){a=e;let s=q(e),c=o===i;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw e;let l=500*o;r(`Retrying ${t} to ${n.from} after failure (${o}/${i-1}) in ${l}ms: ${s}`),await g(l)}throw a};if(m.length===0&&p.length){let e=p.length;for(let[t,r]of p.entries()){let i=Date.now();if(await h(()=>n.reply(r),`text`),!l){let r=Date.now()-i;Z.debug(`Sent chunk ${t+1}/${e} to ${n.from} (${r.toFixed(0)}ms)`)}}s.info({correlationId:n.id??J(),connectionId:c??null,to:n.from,from:n.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-u},`auto-reply sent (text)`);return}let _=[...p];for(let[t,o]of m.entries()){let l=t===0&&_.shift()||void 0;try{let t=await Ae(o,{maxBytes:a,localRoots:e.mediaLocalRoots});if(i()&&(r(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),r(`Web auto-reply media source: ${o} (kind ${t.kind})`)),t.kind===`image`)await h(()=>n.sendMedia({image:t.buffer,caption:l,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await h(()=>n.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:l}),`media:audio`);else if(t.kind===`video`)await h(()=>n.sendMedia({video:t.buffer,caption:l,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??o.split(`/`).pop()??`file`,r=t.contentType??`application/octet-stream`;await h(()=>n.sendMedia({document:t.buffer,fileName:e,caption:l,mimetype:r}),`media:document`)}Z.info(`Sent media reply to ${n.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),s.info({correlationId:n.id??J(),connectionId:c??null,to:n.from,from:n.to,text:l??null,mediaUrl:o,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-u},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${n.from}: ${q(e)}`),s.warn({err:e,mediaUrl:o},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,r=[_.shift()??l??``,t].filter(Boolean).join(`
|
|
5
|
-
`);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of _)await n.reply(e)}function an(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),i=t?.direct??!0,a=t?.group??`mentions`,o=e.msg.conversationId??e.msg.from,s=e.msg.chatType===`group`?Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:o}):null;V({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:e.msg.wasMentioned===!0,groupActivated:s===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),r(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function on(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function sn(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=oe(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=on(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return B({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function cn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=u(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=E({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await K({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return ve({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>u(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function ln(e){let t=E({cfg:e.cfg,accountId:e.msg.accountId});return fe({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>u(e)})}async function un(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:a,previousTimestamp:o}=H({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),s=sn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:o,envelope:a}),c=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(s=xe({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:s,excludeLast:!1,formatEntry:e=>B({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),c=!(e.suppressGroupHistoryClear??!1)}let l=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:s});if(e.echoHas(l))return r(`Skipping auto-reply: detected echo for combined message`),e.echoForget(l),!1;an({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let d=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:d,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(s,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let f=e.msg.chatType===`group`?t:e.msg.from,p=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${f} -> ${e.msg.to} (${e.msg.chatType}${p}, ${s.length} chars)`),i()&&X.debug(`Inbound body: ${$(s,400)}`);let h=e.msg.chatType===`group`?void 0:e.msg.senderE164?u(e.msg.senderE164):e.msg.from.includes(`@`)?m(e.msg.from):u(e.msg.from),g=e.maxMediaTextChunkLimit??Me(e.cfg,`whatsapp`),_=Ne(e.cfg,`whatsapp`,e.route.accountId),v=Pe({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),y=ke(e.cfg,e.route.agentId),b=!1,x=!1,S=F(e.msg.body,e.cfg)?await cn({cfg:e.cfg,msg:e.msg}):void 0,C=e.cfg.messages?.responsePrefix,{onModelSelected:w,...T}=he({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),E=e.msg.chatType!==`group`&&!!e.msg.selfE164&&u(e.msg.from)===u(e.msg.selfE164??``),O=T.responsePrefix??(C===void 0&&E?ye(e.cfg,e.route.agentId):void 0),ee=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=ce({Body:s,BodyForAgent:e.msg.body,InboundHistory:ee,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:qt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:S,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ee(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),A=ln({cfg:e.cfg,msg:e.msg}),te=!A||A===h,j=ie({route:e.route,sessionKey:e.route.sessionKey});h&&j===e.route.mainSessionKey&&te?$t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:h,accountId:e.route.accountId,ctx:k,warn:e.replyLogger.warn.bind(e.replyLogger)}):h&&j===e.route.mainSessionKey&&A&&r(`Skipping main-session last route update for ${h} (pinned owner ${A})`);let M=D({storePath:n,sessionKey:e.route.sessionKey,ctx:k}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Qt(e.backgroundTasks,M);let{queuedFinal:N}=await Se({ctx:k,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...T,responsePrefix:O,onHeartbeatStrip:()=>{b||(b=!0,r(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await rn({replyResult:n,msg:e.msg,mediaLocalRoots:y,maxMediaBytes:e.maxMediaBytes,textLimit:g,chunkMode:_,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:v}),x=!0;let a=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:s,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,c=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${c?` (media)`:``}`),i()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${c?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:w}});return N?(c&&e.groupHistories.set(e.groupHistoryKey,[]),x):(c&&e.groupHistories.set(e.groupHistoryKey,[]),r(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function dn(e){let t=async(t,n,r,i)=>un({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async n=>{let i=n.conversationId??n.from,a=en(n),o=ae({cfg:C(),channel:`whatsapp`,accountId:n.accountId,peer:{kind:n.chatType===`group`?`group`:`direct`,id:a}}),s=n.chatType===`group`?c({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(n.from===n.to&&r(`📱 Same-phone mode detected (from === to: ${n.from})`),e.echoTracker.has(n.body)){r(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(n.body);return}if(n.chatType===`group`){let t={From:n.from,To:n.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:n.chatType,ConversationLabel:i,GroupSubject:n.groupSubject,SenderName:n.senderName,SenderId:n.senderJid?.trim()||n.senderE164,SenderE164:n.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if($t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Zt({cfg:e.cfg,msg:n,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:r,replyLogger:e.replyLogger}).shouldProcess)return}else !n.senderE164&&a&&a.startsWith(`+`)&&(n.senderE164=u(a)??n.senderE164);await Bt({cfg:e.cfg,msg:n,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(n,o,s)}}function fn(e){return e===440}async function pn(e,i=Mt,a=!0,o=re,s=t,c,l={}){let u=J(),d=n({module:`web-auto-reply`,runId:u}),f=n({module:`web-heartbeat`,runId:u}),p=n({module:`web-reconnect`,runId:u}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{l.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=C(),_=E({cfg:g,accountId:l.accountId}),v={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:_.ackReaction,messagePrefix:_.messagePrefix,allowFrom:_.allowFrom,groupAllowFrom:_.groupAllowFrom,groupPolicy:_.groupPolicy,textChunkLimit:_.textChunkLimit,chunkMode:_.chunkMode,mediaMaxMb:_.mediaMaxMb,blockStreaming:_.blockStreaming,groups:_.groups}}},y=w(_),x=$e(v,l.heartbeatSeconds),T=et(v,l.reconnect),D=Nt(v),O=v.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??v.channels?.whatsapp?.historyLimit??v.messages?.groupChat?.historyLimit??50,ee=new Map,k=new Map,A=Rt({maxItems:100,logVerbose:r}),te=l.sleep??((e,t)=>pe(e,t??c)),M=()=>c?.aborted===!0,N=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),P=process.getMaxListeners?.()??10;process.setMaxListeners&&P<50&&process.setMaxListeners(50);let ie=!1,F=()=>{ie=!0};process.once(`SIGINT`,F);let I=0;for(;!M();){let t=J(),n=Date.now(),u=null,g=null,C=null,w=0,E=null,P=l.messageTimeoutMs??1800*1e3,oe=l.watchdogCheckMs??60*1e3,L=new Set,R=dn({cfg:v,verbose:e,connectionId:t,maxMediaBytes:y,groupHistoryLimit:O,groupHistories:ee,groupMemberNames:k,echoTracker:A,backgroundTasks:L,replyResolver:o??re,replyLogger:d,baseMentionConfig:D,account:_}),ce=we({cfg:v,channel:`whatsapp`}),z=await(i??Mt)({verbose:e,accountId:_.accountId,authDir:_.authDir,mediaMaxMb:_.mediaMaxMb,sendReadReceipts:_.sendReadReceipts,debounceMs:ce,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!le(e.body,v),onMessage:async e=>{w+=1,C=Date.now(),m.lastMessageAt=C,m.lastEventAt=C,h(),await R(e)}});Object.assign(m,_e()),m.lastError=null,h();let{e164:B}=b(_.authDir),ue=ae({cfg:v,channel:`whatsapp`,accountId:_.accountId});se(`WhatsApp gateway connected${B?` as ${B}`:``}.`,{sessionKey:ue.sessionKey}),Le(_.accountId,z),E=Oe(e=>{if(!tn(e))return!1;let n=q(e);return p.warn({connectionId:t,error:n},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),z.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Le(_.accountId,null),E&&=(E(),null),u&&clearInterval(u),g&&clearInterval(g),L.size>0&&(await Promise.allSettled(L),L.clear());try{await z.close()}catch(e){r(`Socket close failed: ${q(e)}`)}};if(a&&(u=setInterval(()=>{let e=j(_.authDir),r=C?Math.floor((Date.now()-C)/6e4):null,i={connectionId:t,reconnectAttempts:I,messagesHandled:w,lastMessageAt:C,authAgeMs:e,uptimeMs:Date.now()-n,...r!==null&&r>30?{minutesSinceLastMessage:r}:{}};r&&r>30?f.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(i,`web gateway heartbeat`)},x*1e3),g=setInterval(()=>{if(!C)return;let e=Date.now()-C;if(e<=P)return;let n=Math.floor(e/6e4);f.warn({connectionId:t,minutesSinceLastMessage:n,lastMessageAt:new Date(C),messagesHandled:w},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${n}m - restarting connection`),V().catch(e=>{r(`Close listener failed: ${q(e)}`)}),z.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},oe)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,F);return}let H=await Promise.race([z.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),N??nt()]);if(Date.now()-n>x*1e3&&(I=0),m.reconnectAttempts=I,h(),M()||ie||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=I,h(),p.info({connectionId:t,status:U,loggedOut:W,reconnectAttempts:I,error:G},`web reconnect: connection closed`),se(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:ue.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${S(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(fn(U)){p.warn({connectionId:t,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${S(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(I+=1,m.reconnectAttempts=I,h(),T.maxAttempts>0&&I>=T.maxAttempts){p.warn({connectionId:t,status:U,reconnectAttempts:I,maxAttempts:T.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${I}/${T.maxAttempts}). Stopping web monitoring.`),await V();break}let K=ne(T,I);p.info({connectionId:t,status:U,reconnectAttempts:I,maxAttempts:T.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${I}/${T.maxAttempts||`∞`} in ${de(K)}… (${G})`),await V();try{await te(K,c)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,F)}export{te as WA_WEB_AUTH_DIR,Ue as createWaSocket,T as logWebSelfId,We as loginWeb,pn as monitorWebChannel,Mt as monitorWebInbox,_ as pickWebChannel,Be as sendMessageWhatsApp,Ve as waitForWaConnection,O as webAuthExists};
|
|
5
|
+
`);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of _)await n.reply(e)}function an(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),i=t?.direct??!0,a=t?.group??`mentions`,o=e.msg.conversationId??e.msg.from,s=e.msg.chatType===`group`?Wt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:o}):null;V({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:e.msg.wasMentioned===!0,groupActivated:s===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),r(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function on(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function sn(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=oe(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=on(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return B({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function cn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=u(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=E({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await K({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return ve({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>u(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function ln(e){let t=E({cfg:e.cfg,accountId:e.msg.accountId});return fe({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>u(e)})}async function un(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:a,previousTimestamp:o}=H({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),s=sn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:o,envelope:a}),c=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(s=xe({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:s,excludeLast:!1,formatEntry:e=>B({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),c=!(e.suppressGroupHistoryClear??!1)}let l=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:s});if(e.echoHas(l))return r(`Skipping auto-reply: detected echo for combined message`),e.echoForget(l),!1;an({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let d=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:d,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(s,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let f=e.msg.chatType===`group`?t:e.msg.from,p=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${f} -> ${e.msg.to} (${e.msg.chatType}${p}, ${s.length} chars)`),i()&&X.debug(`Inbound body: ${$(s,400)}`);let h=e.msg.chatType===`group`?void 0:e.msg.senderE164?u(e.msg.senderE164):e.msg.from.includes(`@`)?m(e.msg.from):u(e.msg.from),g=e.maxMediaTextChunkLimit??Me(e.cfg,`whatsapp`),_=Ne(e.cfg,`whatsapp`,e.route.accountId),v=Pe({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),y=ke(e.cfg,e.route.agentId),b=!1,x=!1,S=F(e.msg.body,e.cfg)?await cn({cfg:e.cfg,msg:e.msg}):void 0,C=e.cfg.messages?.responsePrefix,{onModelSelected:w,...T}=he({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),E=e.msg.chatType!==`group`&&!!e.msg.selfE164&&u(e.msg.from)===u(e.msg.selfE164??``),O=T.responsePrefix??(C===void 0&&E?ye(e.cfg,e.route.agentId):void 0),ee=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=ce({Body:s,BodyForAgent:e.msg.body,InboundHistory:ee,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:qt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:S,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ee(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),A=ln({cfg:e.cfg,msg:e.msg}),te=!A||A===h,j=ie({route:e.route,sessionKey:e.route.sessionKey});h&&j===e.route.mainSessionKey&&te?$t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:h,accountId:e.route.accountId,ctx:k,warn:e.replyLogger.warn.bind(e.replyLogger)}):h&&j===e.route.mainSessionKey&&A&&r(`Skipping main-session last route update for ${h} (pinned owner ${A})`);let M=D({storePath:n,sessionKey:e.route.sessionKey,ctx:k}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Qt(e.backgroundTasks,M);let{queuedFinal:N}=await Se({ctx:k,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...T,responsePrefix:O,onHeartbeatStrip:()=>{b||(b=!0,r(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await rn({replyResult:n,msg:e.msg,mediaLocalRoots:y,maxMediaBytes:e.maxMediaBytes,textLimit:g,chunkMode:_,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:v}),x=!0;let a=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:s,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,c=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${c?` (media)`:``}`),i()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${c?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:w}});return N?(c&&e.groupHistories.set(e.groupHistoryKey,[]),x):(c&&e.groupHistories.set(e.groupHistoryKey,[]),r(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function dn(e){let t=async(t,n,r,i)=>un({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async n=>{let i=n.conversationId??n.from,a=en(n),o=ae({cfg:C(),channel:`whatsapp`,accountId:n.accountId,peer:{kind:n.chatType===`group`?`group`:`direct`,id:a}}),s=n.chatType===`group`?c({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(n.from===n.to&&r(`📱 Same-phone mode detected (from === to: ${n.from})`),e.echoTracker.has(n.body)){r(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(n.body);return}if(n.chatType===`group`){let t={From:n.from,To:n.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:n.chatType,ConversationLabel:i,GroupSubject:n.groupSubject,SenderName:n.senderName,SenderId:n.senderJid?.trim()||n.senderE164,SenderE164:n.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if($t({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Zt({cfg:e.cfg,msg:n,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:r,replyLogger:e.replyLogger}).shouldProcess)return}else !n.senderE164&&a&&a.startsWith(`+`)&&(n.senderE164=u(a)??n.senderE164);await Bt({cfg:e.cfg,msg:n,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(n,o,s)}}function fn(e){return e===440}async function pn(e,i=Mt,a=!0,o=re,s=t,c,l={}){let u=J(),d=n({module:`web-auto-reply`,runId:u}),f=n({module:`web-heartbeat`,runId:u}),p=n({module:`web-reconnect`,runId:u}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{l.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=C(),_=E({cfg:g,accountId:l.accountId}),v={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:_.ackReaction,messagePrefix:_.messagePrefix,allowFrom:_.allowFrom,groupAllowFrom:_.groupAllowFrom,groupPolicy:_.groupPolicy,textChunkLimit:_.textChunkLimit,chunkMode:_.chunkMode,mediaMaxMb:_.mediaMaxMb,blockStreaming:_.blockStreaming,groups:_.groups}}},y=w(_),x=$e(v,l.heartbeatSeconds),T=et(v,l.reconnect),D=Nt(v),O=v.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??v.channels?.whatsapp?.historyLimit??v.messages?.groupChat?.historyLimit??50,ee=new Map,k=new Map,A=Rt({maxItems:100,logVerbose:r}),te=l.sleep??((e,t)=>pe(e,t??c)),M=()=>c?.aborted===!0,N=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),P=process.getMaxListeners?.()??10;process.setMaxListeners&&P<50&&process.setMaxListeners(50);let ie=!1,F=()=>{ie=!0};process.once(`SIGINT`,F);let I=0;for(;!M();){let t=J(),n=Date.now(),u=null,g=null,C=null,w=0,E=null,P=l.messageTimeoutMs??1800*1e3,oe=l.watchdogCheckMs??60*1e3,L=new Set,R=dn({cfg:v,verbose:e,connectionId:t,maxMediaBytes:y,groupHistoryLimit:O,groupHistories:ee,groupMemberNames:k,echoTracker:A,backgroundTasks:L,replyResolver:o??re,replyLogger:d,baseMentionConfig:D,account:_}),ce=we({cfg:v,channel:`whatsapp`}),z=await(i??Mt)({verbose:e,accountId:_.accountId,authDir:_.authDir,mediaMaxMb:_.mediaMaxMb,sendReadReceipts:_.sendReadReceipts,debounceMs:ce,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!le(e.body,v),onMessage:async e=>{w+=1,C=Date.now(),m.lastMessageAt=C,m.lastEventAt=C,h(),await R(e)}});Object.assign(m,_e()),m.lastError=null,h();let{e164:B}=b(_.authDir),ue=ae({cfg:v,channel:`whatsapp`,accountId:_.accountId});se(`WhatsApp gateway connected${B?` as ${B}`:``}.`,{sessionKey:ue.sessionKey}),Le(_.accountId,z),E=Oe(e=>{if(!tn(e))return!1;let n=q(e);return p.warn({connectionId:t,error:n},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),z.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Le(_.accountId,null),E&&=(E(),null),u&&clearInterval(u),g&&clearInterval(g),L.size>0&&(await Promise.allSettled(L),L.clear());try{await z.close()}catch(e){r(`Socket close failed: ${q(e)}`)}};if(a&&(u=setInterval(()=>{let e=j(_.authDir),r=C?Math.floor((Date.now()-C)/6e4):null,i={connectionId:t,reconnectAttempts:I,messagesHandled:w,lastMessageAt:C,authAgeMs:e,uptimeMs:Date.now()-n,...r!==null&&r>30?{minutesSinceLastMessage:r}:{}};r&&r>30?f.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(i,`web gateway heartbeat`)},x*1e3),g=setInterval(()=>{if(!C)return;let e=Date.now()-C;if(e<=P)return;let n=Math.floor(e/6e4);f.warn({connectionId:t,minutesSinceLastMessage:n,lastMessageAt:new Date(C),messagesHandled:w},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${n}m - restarting connection`),V().catch(e=>{r(`Close listener failed: ${q(e)}`)}),z.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},oe)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,F);return}let H=await Promise.race([z.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),N??nt()]);if(Date.now()-n>x*1e3&&(I=0),m.reconnectAttempts=I,h(),M()||ie||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=I,h(),p.info({connectionId:t,status:U,loggedOut:W,reconnectAttempts:I,error:G},`web reconnect: connection closed`),se(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:ue.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${S(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(fn(U)){p.warn({connectionId:t,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${S(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(I+=1,m.reconnectAttempts=I,h(),T.maxAttempts>0&&I>=T.maxAttempts){p.warn({connectionId:t,status:U,reconnectAttempts:I,maxAttempts:T.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${I}/${T.maxAttempts}). Stopping web monitoring.`),await V();break}let K=ne(T,I);p.info({connectionId:t,status:U,reconnectAttempts:I,maxAttempts:T.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${I}/${T.maxAttempts||`∞`} in ${de(K)}… (${G})`),await V();try{await te(K,c)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,F)}export{te as WA_WEB_AUTH_DIR,Ue as createWaSocket,T as logWebSelfId,We as loginWeb,pn as monitorWebChannel,Mt as monitorWebInbox,_ as pickWebChannel,Be as sendMessageWhatsApp,Ve as waitForWaConnection,O as webAuthExists};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e,u as t}from"./paths-B4IRk3wi.js";import{A as n,p as r,v as i}from"./subsystem-C5XF2Fy5.js";import{o as a}from"./utils-UGOV_184.js";import{Zs as o,nc as s,qs as c,rc as l}from"./model-selection-I1ctjFOB.js";import"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import{t as u}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import{t as d}from"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import{t as f}from"./links-CySwdMcF.js";import{C as p,S as m,_ as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./gmail-setup-utils-S-MyEGuj.js";import{spawn as L}from"node:child_process";async function R(n){await j(`gcloud`,[`--cask`,`gcloud-cli`]),await j(`gog`,[`gogcli`]),n.tailscale!==`off`&&!n.pushEndpoint&&await j(`tailscale`,[`tailscale`]),await E();let i=await o();if(!i.valid)throw Error(`Config invalid: ${e}`);let c=i.config,d=F(c.hooks?.path),f=n.hookToken??c.hooks?.token??I(),h=n.pushToken??c.hooks?.gmail?.pushToken??I(),v=n.topic??c.hooks?.gmail?.topic??`gog-gmail-watch`,b=p(v),x=b?.topicName??v,w=n.project??b?.projectId??await D();if(!w)throw Error(`GCP project id required (use --project or ensure gog credentials are available)`);let T=N(w,x),O=n.subscription??`gog-gmail-watch-push`,M=n.label??`INBOX`,P=n.hookUrl??c.hooks?.gmail?.hookUrl??S(d,t(c)),L=n.bind??`127.0.0.1`,R=n.port??8788,z=n.path??c.hooks?.gmail?.serve?.path,B=n.tailscaleTarget??c.hooks?.gmail?.tailscale?.target,H=typeof z==`string`&&z.trim().length>0?m(z):y,U=typeof B==`string`&&B.trim().length>0?B.trim():void 0,W=n.includeBody??!0,G=n.maxBytes??2e4,K=n.renewEveryMinutes??720,q=n.tailscale??`funnel`,J=m(q!==`off`&&!U?`/`:H),Y=m(n.tailscalePath??c.hooks?.gmail?.tailscale?.path??(q===`off`?J:H));await A([`config`,`set`,`project`,w,`--quiet`]),await A([`services`,`enable`,`gmail.googleapis.com`,`pubsub.googleapis.com`,`--project`,w,`--quiet`]),await g(w,x),await A([`pubsub`,`topics`,`add-iam-policy-binding`,x,`--project`,w,`--member`,`serviceAccount:gmail-api-push@system.gserviceaccount.com`,`--role`,`roles/pubsub.publisher`,`--quiet`]);let X=n.pushEndpoint?n.pushEndpoint:await C({mode:q,path:Y,port:R,target:U,token:h});if(!X)throw Error(`push endpoint required (set --push-endpoint)`);await k(w,O,x,X),await V({account:n.account,label:M,topic:T},!0);let Z=l({...c,hooks:{...c.hooks,enabled:!0,path:d,token:f,presets:_(c.hooks?.presets,`gmail`),gmail:{...c.hooks?.gmail,account:n.account,label:M,topic:T,subscription:O,pushToken:h,hookUrl:P,includeBody:W,maxBytes:G,renewEveryMinutes:K,serve:{...c.hooks?.gmail?.serve,bind:L,port:R,path:J},tailscale:{...c.hooks?.gmail?.tailscale,mode:q,path:Y,target:U}}}});if(!Z.ok)throw Error(`Config validation failed: ${Z.issues[0]?.message??`invalid`}`);await s(Z.config);let Q={projectId:w,topic:T,subscription:O,pushEndpoint:X,hookUrl:P,hookToken:f,pushToken:h,serve:{bind:L,port:R,path:J}};if(n.json){r.log(JSON.stringify(Q,null,2));return}r.log(`Gmail hooks configured:`),r.log(`- project: ${w}`),r.log(`- topic: ${T}`),r.log(`- subscription: ${O}`),r.log(`- push endpoint: ${X}`),r.log(`- hook url: ${P}`),r.log(`- config: ${a(e)}`),r.log(`Next: ${u(`openclaw webhooks gmail run`)}`)}async function z(e){await j(`gog`,[`gogcli`]);let t=P(c(),{account:e.account,topic:e.topic,subscription:e.subscription,label:e.label,hookToken:e.hookToken,pushToken:e.pushToken,hookUrl:e.hookUrl,serveBind:e.bind,servePort:e.port,servePath:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscaleMode:e.tailscale,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget});if(!t.ok)throw Error(t.error);let n=t.value;n.tailscale.mode!==`off`&&(await j(`tailscale`,[`tailscale`]),await C({mode:n.tailscale.mode,path:n.tailscale.path,port:n.serve.port,target:n.tailscale.target})),await V(n);let i=!1,a=B(n),o=n.renewEveryMinutes*6e4,s=setInterval(()=>{V(n)},o),l=()=>{process.off(`SIGINT`,u),process.off(`SIGTERM`,u)},u=()=>{i||(i=!0,l(),clearInterval(s),a.kill(`SIGTERM`))};process.on(`SIGINT`,u),process.on(`SIGTERM`,u),a.on(`exit`,()=>{if(i){l();return}r.log(`gog watch serve exited; restarting in 2s`),setTimeout(()=>{i||(a=B(n))},2e3)})}function B(e){let t=x(e);return r.log(`Starting gog ${t.join(` `)}`),L(`gog`,t,{stdio:`inherit`})}async function V(e,t=!1){let n=await d([`gog`,...h(e)],{timeoutMs:12e4});if(n.code!==0){let e=n.stderr||n.stdout||`gog watch start failed`;if(t)throw Error(e);r.error(e)}}function H(e){let t=e.command(`webhooks`).description(`Webhook helpers and integrations`).addHelpText(`after`,()=>`\n${n.muted(`Docs:`)} ${f(`/cli/webhooks`,`docs.openclaw.ai/cli/webhooks`)}\n`).command(`gmail`).description(`Gmail Pub/Sub hooks (via gogcli)`);t.command(`setup`).description(`Configure Gmail watch + Pub/Sub + OpenClaw hooks`).requiredOption(`--account <email>`,`Gmail account to watch`).option(`--project <id>`,`GCP project id (OAuth client owner)`).option(`--topic <name>`,`Pub/Sub topic name`,T).option(`--subscription <name>`,`Pub/Sub subscription name`,O).option(`--label <label>`,`Gmail label to watch`,v).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`,M).option(`--port <port>`,`gog watch serve port`,String(b)).option(`--path <path>`,`gog watch serve path`,y).option(`--include-body`,`Include email body snippets`,!0).option(`--max-bytes <n>`,`Max bytes for body snippets`,String(w)).option(`--renew-minutes <n>`,`Renew watch every N minutes`,`720`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`,`funnel`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).option(`--push-endpoint <url>`,`Explicit Pub/Sub push endpoint`).option(`--json`,`Output JSON summary`,!1).action(async e=>{try{await R(U(e))}catch(e){r.error(i(String(e))),r.exit(1)}}),t.command(`run`).description(`Run gog watch serve + auto-renew loop`).option(`--account <email>`,`Gmail account to watch`).option(`--topic <topic>`,`Pub/Sub topic path (projects/.../topics/..)`).option(`--subscription <name>`,`Pub/Sub subscription name`).option(`--label <label>`,`Gmail label to watch`).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`).option(`--port <port>`,`gog watch serve port`).option(`--path <path>`,`gog watch serve path`).option(`--include-body`,`Include email body snippets`).option(`--max-bytes <n>`,`Max bytes for body snippets`).option(`--renew-minutes <n>`,`Renew watch every N minutes`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).action(async e=>{try{await z(W(e))}catch(e){r.error(i(String(e))),r.exit(1)}})}function U(e){let t=e.account,n=typeof t==`string`?t.trim():``;if(!n)throw Error(`--account is required`);let r=G(e);return{account:n,project:q(e.project),...K(r),pushEndpoint:q(e.pushEndpoint),json:!!e.json}}function W(e){let t=G(e);return{account:q(e.account),...K(t)}}function G(e){return{topic:q(e.topic),subscription:q(e.subscription),label:q(e.label),hookUrl:q(e.hookUrl),hookToken:q(e.hookToken),pushToken:q(e.pushToken),bind:q(e.bind),port:J(e.port),path:q(e.path),includeBody:Y(e.includeBody),maxBytes:J(e.maxBytes),renewEveryMinutes:J(e.renewMinutes),tailscaleRaw:q(e.tailscale),tailscalePath:q(e.tailscalePath),tailscaleTarget:q(e.tailscaleTarget)}}function K(e){return{topic:e.topic,subscription:e.subscription,label:e.label,hookUrl:e.hookUrl,hookToken:e.hookToken,pushToken:e.pushToken,bind:e.bind,port:e.port,path:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscale:e.tailscaleRaw,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget}}function q(e){return typeof e==`string`&&e.trim()||void 0}function J(e){if(e==null)return;let t=typeof e==`number`?e:Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.floor(t)}function Y(e){if(e!=null)return!!e}export{H as registerWebhooksCli};
|
|
1
|
+
import{t as e,u as t}from"./paths-B4IRk3wi.js";import{A as n,p as r,v as i}from"./subsystem-C5XF2Fy5.js";import{o as a}from"./utils-UGOV_184.js";import{Zs as o,nc as s,qs as c,rc as l}from"./model-selection-I1ctjFOB.js";import"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import{t as u}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import{t as d}from"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import{t as f}from"./links-CySwdMcF.js";import{C as p,S as m,_ as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./gmail-setup-utils-S-MyEGuj.js";import{spawn as L}from"node:child_process";async function R(n){await j(`gcloud`,[`--cask`,`gcloud-cli`]),await j(`gog`,[`gogcli`]),n.tailscale!==`off`&&!n.pushEndpoint&&await j(`tailscale`,[`tailscale`]),await E();let i=await o();if(!i.valid)throw Error(`Config invalid: ${e}`);let c=i.config,d=F(c.hooks?.path),f=n.hookToken??c.hooks?.token??I(),h=n.pushToken??c.hooks?.gmail?.pushToken??I(),v=n.topic??c.hooks?.gmail?.topic??`gog-gmail-watch`,b=p(v),x=b?.topicName??v,w=n.project??b?.projectId??await D();if(!w)throw Error(`GCP project id required (use --project or ensure gog credentials are available)`);let T=N(w,x),O=n.subscription??`gog-gmail-watch-push`,M=n.label??`INBOX`,P=n.hookUrl??c.hooks?.gmail?.hookUrl??S(d,t(c)),L=n.bind??`127.0.0.1`,R=n.port??8788,z=n.path??c.hooks?.gmail?.serve?.path,B=n.tailscaleTarget??c.hooks?.gmail?.tailscale?.target,H=typeof z==`string`&&z.trim().length>0?m(z):y,U=typeof B==`string`&&B.trim().length>0?B.trim():void 0,W=n.includeBody??!0,G=n.maxBytes??2e4,K=n.renewEveryMinutes??720,q=n.tailscale??`funnel`,J=m(q!==`off`&&!U?`/`:H),Y=m(n.tailscalePath??c.hooks?.gmail?.tailscale?.path??(q===`off`?J:H));await A([`config`,`set`,`project`,w,`--quiet`]),await A([`services`,`enable`,`gmail.googleapis.com`,`pubsub.googleapis.com`,`--project`,w,`--quiet`]),await g(w,x),await A([`pubsub`,`topics`,`add-iam-policy-binding`,x,`--project`,w,`--member`,`serviceAccount:gmail-api-push@system.gserviceaccount.com`,`--role`,`roles/pubsub.publisher`,`--quiet`]);let X=n.pushEndpoint?n.pushEndpoint:await C({mode:q,path:Y,port:R,target:U,token:h});if(!X)throw Error(`push endpoint required (set --push-endpoint)`);await k(w,O,x,X),await V({account:n.account,label:M,topic:T},!0);let Z=l({...c,hooks:{...c.hooks,enabled:!0,path:d,token:f,presets:_(c.hooks?.presets,`gmail`),gmail:{...c.hooks?.gmail,account:n.account,label:M,topic:T,subscription:O,pushToken:h,hookUrl:P,includeBody:W,maxBytes:G,renewEveryMinutes:K,serve:{...c.hooks?.gmail?.serve,bind:L,port:R,path:J},tailscale:{...c.hooks?.gmail?.tailscale,mode:q,path:Y,target:U}}}});if(!Z.ok)throw Error(`Config validation failed: ${Z.issues[0]?.message??`invalid`}`);await s(Z.config);let Q={projectId:w,topic:T,subscription:O,pushEndpoint:X,hookUrl:P,hookToken:f,pushToken:h,serve:{bind:L,port:R,path:J}};if(n.json){r.log(JSON.stringify(Q,null,2));return}r.log(`Gmail hooks configured:`),r.log(`- project: ${w}`),r.log(`- topic: ${T}`),r.log(`- subscription: ${O}`),r.log(`- push endpoint: ${X}`),r.log(`- hook url: ${P}`),r.log(`- config: ${a(e)}`),r.log(`Next: ${u(`openclaw webhooks gmail run`)}`)}async function z(e){await j(`gog`,[`gogcli`]);let t=P(c(),{account:e.account,topic:e.topic,subscription:e.subscription,label:e.label,hookToken:e.hookToken,pushToken:e.pushToken,hookUrl:e.hookUrl,serveBind:e.bind,servePort:e.port,servePath:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscaleMode:e.tailscale,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget});if(!t.ok)throw Error(t.error);let n=t.value;n.tailscale.mode!==`off`&&(await j(`tailscale`,[`tailscale`]),await C({mode:n.tailscale.mode,path:n.tailscale.path,port:n.serve.port,target:n.tailscale.target})),await V(n);let i=!1,a=B(n),o=n.renewEveryMinutes*6e4,s=setInterval(()=>{V(n)},o),l=()=>{process.off(`SIGINT`,u),process.off(`SIGTERM`,u)},u=()=>{i||(i=!0,l(),clearInterval(s),a.kill(`SIGTERM`))};process.on(`SIGINT`,u),process.on(`SIGTERM`,u),a.on(`exit`,()=>{if(i){l();return}r.log(`gog watch serve exited; restarting in 2s`),setTimeout(()=>{i||(a=B(n))},2e3)})}function B(e){let t=x(e);return r.log(`Starting gog ${t.join(` `)}`),L(`gog`,t,{stdio:`inherit`})}async function V(e,t=!1){let n=await d([`gog`,...h(e)],{timeoutMs:12e4});if(n.code!==0){let e=n.stderr||n.stdout||`gog watch start failed`;if(t)throw Error(e);r.error(e)}}function H(e){let t=e.command(`webhooks`).description(`Webhook helpers and integrations`).addHelpText(`after`,()=>`\n${n.muted(`Docs:`)} ${f(`/cli/webhooks`,`docs.openclaw.ai/cli/webhooks`)}\n`).command(`gmail`).description(`Gmail Pub/Sub hooks (via gogcli)`);t.command(`setup`).description(`Configure Gmail watch + Pub/Sub + OpenClaw hooks`).requiredOption(`--account <email>`,`Gmail account to watch`).option(`--project <id>`,`GCP project id (OAuth client owner)`).option(`--topic <name>`,`Pub/Sub topic name`,T).option(`--subscription <name>`,`Pub/Sub subscription name`,O).option(`--label <label>`,`Gmail label to watch`,v).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`,M).option(`--port <port>`,`gog watch serve port`,String(b)).option(`--path <path>`,`gog watch serve path`,y).option(`--include-body`,`Include email body snippets`,!0).option(`--max-bytes <n>`,`Max bytes for body snippets`,String(w)).option(`--renew-minutes <n>`,`Renew watch every N minutes`,`720`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`,`funnel`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).option(`--push-endpoint <url>`,`Explicit Pub/Sub push endpoint`).option(`--json`,`Output JSON summary`,!1).action(async e=>{try{await R(U(e))}catch(e){r.error(i(String(e))),r.exit(1)}}),t.command(`run`).description(`Run gog watch serve + auto-renew loop`).option(`--account <email>`,`Gmail account to watch`).option(`--topic <topic>`,`Pub/Sub topic path (projects/.../topics/..)`).option(`--subscription <name>`,`Pub/Sub subscription name`).option(`--label <label>`,`Gmail label to watch`).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`).option(`--port <port>`,`gog watch serve port`).option(`--path <path>`,`gog watch serve path`).option(`--include-body`,`Include email body snippets`).option(`--max-bytes <n>`,`Max bytes for body snippets`).option(`--renew-minutes <n>`,`Renew watch every N minutes`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).action(async e=>{try{await z(W(e))}catch(e){r.error(i(String(e))),r.exit(1)}})}function U(e){let t=e.account,n=typeof t==`string`?t.trim():``;if(!n)throw Error(`--account is required`);let r=G(e);return{account:n,project:q(e.project),...K(r),pushEndpoint:q(e.pushEndpoint),json:!!e.json}}function W(e){let t=G(e);return{account:q(e.account),...K(t)}}function G(e){return{topic:q(e.topic),subscription:q(e.subscription),label:q(e.label),hookUrl:q(e.hookUrl),hookToken:q(e.hookToken),pushToken:q(e.pushToken),bind:q(e.bind),port:J(e.port),path:q(e.path),includeBody:Y(e.includeBody),maxBytes:J(e.maxBytes),renewEveryMinutes:J(e.renewMinutes),tailscaleRaw:q(e.tailscale),tailscalePath:q(e.tailscalePath),tailscaleTarget:q(e.tailscaleTarget)}}function K(e){return{topic:e.topic,subscription:e.subscription,label:e.label,hookUrl:e.hookUrl,hookToken:e.hookToken,pushToken:e.pushToken,bind:e.bind,port:e.port,path:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscale:e.tailscaleRaw,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget}}function q(e){return typeof e==`string`&&e.trim()||void 0}function J(e){if(e==null)return;let t=typeof e==`number`?e:Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.floor(t)}function Y(e){if(e!=null)return!!e}export{H as registerWebhooksCli};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,p as t,v as n}from"./subsystem-BLbY429l.js";import{t as r,u as i}from"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Bo as a,Fo as o,Vo as s,jo as c}from"./auth-profiles-BhXA8Jy2.js";import{t as l}from"./command-format-CLxIPuLR.js";import"./agent-scope-DAWJwFfl.js";import{a as u}from"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import{t as d}from"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import{t as f}from"./links-CBnmRP9D.js";import{C as p,S as m,_ as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./gmail-setup-utils-CYOH3zzx.js";import{spawn as L}from"node:child_process";async function R(e){await j(`gcloud`,[`--cask`,`gcloud-cli`]),await j(`gog`,[`gogcli`]),e.tailscale!==`off`&&!e.pushEndpoint&&await j(`tailscale`,[`tailscale`]),await E();let n=await o();if(!n.valid)throw Error(`Config invalid: ${r}`);let c=n.config,d=F(c.hooks?.path),f=e.hookToken??c.hooks?.token??I(),h=e.pushToken??c.hooks?.gmail?.pushToken??I(),v=e.topic??c.hooks?.gmail?.topic??`gog-gmail-watch`,b=p(v),x=b?.topicName??v,w=e.project??b?.projectId??await D();if(!w)throw Error(`GCP project id required (use --project or ensure gog credentials are available)`);let T=N(w,x),O=e.subscription??`gog-gmail-watch-push`,M=e.label??`INBOX`,P=e.hookUrl??c.hooks?.gmail?.hookUrl??S(d,i(c)),L=e.bind??`127.0.0.1`,R=e.port??8788,z=e.path??c.hooks?.gmail?.serve?.path,B=e.tailscaleTarget??c.hooks?.gmail?.tailscale?.target,H=typeof z==`string`&&z.trim().length>0?m(z):y,U=typeof B==`string`&&B.trim().length>0?B.trim():void 0,W=e.includeBody??!0,G=e.maxBytes??2e4,K=e.renewEveryMinutes??720,q=e.tailscale??`funnel`,J=m(q!==`off`&&!U?`/`:H),Y=m(e.tailscalePath??c.hooks?.gmail?.tailscale?.path??(q===`off`?J:H));await A([`config`,`set`,`project`,w,`--quiet`]),await A([`services`,`enable`,`gmail.googleapis.com`,`pubsub.googleapis.com`,`--project`,w,`--quiet`]),await g(w,x),await A([`pubsub`,`topics`,`add-iam-policy-binding`,x,`--project`,w,`--member`,`serviceAccount:gmail-api-push@system.gserviceaccount.com`,`--role`,`roles/pubsub.publisher`,`--quiet`]);let X=e.pushEndpoint?e.pushEndpoint:await C({mode:q,path:Y,port:R,target:U,token:h});if(!X)throw Error(`push endpoint required (set --push-endpoint)`);await k(w,O,x,X),await V({account:e.account,label:M,topic:T},!0);let Z=s({...c,hooks:{...c.hooks,enabled:!0,path:d,token:f,presets:_(c.hooks?.presets,`gmail`),gmail:{...c.hooks?.gmail,account:e.account,label:M,topic:T,subscription:O,pushToken:h,hookUrl:P,includeBody:W,maxBytes:G,renewEveryMinutes:K,serve:{...c.hooks?.gmail?.serve,bind:L,port:R,path:J},tailscale:{...c.hooks?.gmail?.tailscale,mode:q,path:Y,target:U}}}});if(!Z.ok)throw Error(`Config validation failed: ${Z.issues[0]?.message??`invalid`}`);await a(Z.config);let Q={projectId:w,topic:T,subscription:O,pushEndpoint:X,hookUrl:P,hookToken:f,pushToken:h,serve:{bind:L,port:R,path:J}};if(e.json){t.log(JSON.stringify(Q,null,2));return}t.log(`Gmail hooks configured:`),t.log(`- project: ${w}`),t.log(`- topic: ${T}`),t.log(`- subscription: ${O}`),t.log(`- push endpoint: ${X}`),t.log(`- hook url: ${P}`),t.log(`- config: ${u(r)}`),t.log(`Next: ${l(`openclaw webhooks gmail run`)}`)}async function z(e){await j(`gog`,[`gogcli`]);let n=P(c(),{account:e.account,topic:e.topic,subscription:e.subscription,label:e.label,hookToken:e.hookToken,pushToken:e.pushToken,hookUrl:e.hookUrl,serveBind:e.bind,servePort:e.port,servePath:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscaleMode:e.tailscale,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget});if(!n.ok)throw Error(n.error);let r=n.value;r.tailscale.mode!==`off`&&(await j(`tailscale`,[`tailscale`]),await C({mode:r.tailscale.mode,path:r.tailscale.path,port:r.serve.port,target:r.tailscale.target})),await V(r);let i=!1,a=B(r),o=r.renewEveryMinutes*6e4,s=setInterval(()=>{V(r)},o),l=()=>{process.off(`SIGINT`,u),process.off(`SIGTERM`,u)},u=()=>{i||(i=!0,l(),clearInterval(s),a.kill(`SIGTERM`))};process.on(`SIGINT`,u),process.on(`SIGTERM`,u),a.on(`exit`,()=>{if(i){l();return}t.log(`gog watch serve exited; restarting in 2s`),setTimeout(()=>{i||(a=B(r))},2e3)})}function B(e){let n=x(e);return t.log(`Starting gog ${n.join(` `)}`),L(`gog`,n,{stdio:`inherit`})}async function V(e,n=!1){let r=await d([`gog`,...h(e)],{timeoutMs:12e4});if(r.code!==0){let e=r.stderr||r.stdout||`gog watch start failed`;if(n)throw Error(e);t.error(e)}}function H(r){let i=r.command(`webhooks`).description(`Webhook helpers and integrations`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${f(`/cli/webhooks`,`docs.openclaw.ai/cli/webhooks`)}\n`).command(`gmail`).description(`Gmail Pub/Sub hooks (via gogcli)`);i.command(`setup`).description(`Configure Gmail watch + Pub/Sub + OpenClaw hooks`).requiredOption(`--account <email>`,`Gmail account to watch`).option(`--project <id>`,`GCP project id (OAuth client owner)`).option(`--topic <name>`,`Pub/Sub topic name`,T).option(`--subscription <name>`,`Pub/Sub subscription name`,O).option(`--label <label>`,`Gmail label to watch`,v).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`,M).option(`--port <port>`,`gog watch serve port`,String(b)).option(`--path <path>`,`gog watch serve path`,y).option(`--include-body`,`Include email body snippets`,!0).option(`--max-bytes <n>`,`Max bytes for body snippets`,String(w)).option(`--renew-minutes <n>`,`Renew watch every N minutes`,`720`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`,`funnel`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).option(`--push-endpoint <url>`,`Explicit Pub/Sub push endpoint`).option(`--json`,`Output JSON summary`,!1).action(async e=>{try{await R(U(e))}catch(e){t.error(n(String(e))),t.exit(1)}}),i.command(`run`).description(`Run gog watch serve + auto-renew loop`).option(`--account <email>`,`Gmail account to watch`).option(`--topic <topic>`,`Pub/Sub topic path (projects/.../topics/..)`).option(`--subscription <name>`,`Pub/Sub subscription name`).option(`--label <label>`,`Gmail label to watch`).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`).option(`--port <port>`,`gog watch serve port`).option(`--path <path>`,`gog watch serve path`).option(`--include-body`,`Include email body snippets`).option(`--max-bytes <n>`,`Max bytes for body snippets`).option(`--renew-minutes <n>`,`Renew watch every N minutes`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).action(async e=>{try{await z(W(e))}catch(e){t.error(n(String(e))),t.exit(1)}})}function U(e){let t=e.account,n=typeof t==`string`?t.trim():``;if(!n)throw Error(`--account is required`);let r=G(e);return{account:n,project:q(e.project),...K(r),pushEndpoint:q(e.pushEndpoint),json:!!e.json}}function W(e){let t=G(e);return{account:q(e.account),...K(t)}}function G(e){return{topic:q(e.topic),subscription:q(e.subscription),label:q(e.label),hookUrl:q(e.hookUrl),hookToken:q(e.hookToken),pushToken:q(e.pushToken),bind:q(e.bind),port:J(e.port),path:q(e.path),includeBody:Y(e.includeBody),maxBytes:J(e.maxBytes),renewEveryMinutes:J(e.renewMinutes),tailscaleRaw:q(e.tailscale),tailscalePath:q(e.tailscalePath),tailscaleTarget:q(e.tailscaleTarget)}}function K(e){return{topic:e.topic,subscription:e.subscription,label:e.label,hookUrl:e.hookUrl,hookToken:e.hookToken,pushToken:e.pushToken,bind:e.bind,port:e.port,path:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscale:e.tailscaleRaw,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget}}function q(e){return typeof e==`string`&&e.trim()||void 0}function J(e){if(e==null)return;let t=typeof e==`number`?e:Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.floor(t)}function Y(e){if(e!=null)return!!e}export{H as registerWebhooksCli};
|
|
1
|
+
import{A as e,p as t,v as n}from"./subsystem-BLbY429l.js";import{t as r,u as i}from"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Bo as a,Fo as o,Vo as s,jo as c}from"./auth-profiles-BhXA8Jy2.js";import{t as l}from"./command-format-CLxIPuLR.js";import"./agent-scope-DAWJwFfl.js";import{a as u}from"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import{t as d}from"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import{t as f}from"./links-CBnmRP9D.js";import{C as p,S as m,_ as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./gmail-setup-utils-CYOH3zzx.js";import{spawn as L}from"node:child_process";async function R(e){await j(`gcloud`,[`--cask`,`gcloud-cli`]),await j(`gog`,[`gogcli`]),e.tailscale!==`off`&&!e.pushEndpoint&&await j(`tailscale`,[`tailscale`]),await E();let n=await o();if(!n.valid)throw Error(`Config invalid: ${r}`);let c=n.config,d=F(c.hooks?.path),f=e.hookToken??c.hooks?.token??I(),h=e.pushToken??c.hooks?.gmail?.pushToken??I(),v=e.topic??c.hooks?.gmail?.topic??`gog-gmail-watch`,b=p(v),x=b?.topicName??v,w=e.project??b?.projectId??await D();if(!w)throw Error(`GCP project id required (use --project or ensure gog credentials are available)`);let T=N(w,x),O=e.subscription??`gog-gmail-watch-push`,M=e.label??`INBOX`,P=e.hookUrl??c.hooks?.gmail?.hookUrl??S(d,i(c)),L=e.bind??`127.0.0.1`,R=e.port??8788,z=e.path??c.hooks?.gmail?.serve?.path,B=e.tailscaleTarget??c.hooks?.gmail?.tailscale?.target,H=typeof z==`string`&&z.trim().length>0?m(z):y,U=typeof B==`string`&&B.trim().length>0?B.trim():void 0,W=e.includeBody??!0,G=e.maxBytes??2e4,K=e.renewEveryMinutes??720,q=e.tailscale??`funnel`,J=m(q!==`off`&&!U?`/`:H),Y=m(e.tailscalePath??c.hooks?.gmail?.tailscale?.path??(q===`off`?J:H));await A([`config`,`set`,`project`,w,`--quiet`]),await A([`services`,`enable`,`gmail.googleapis.com`,`pubsub.googleapis.com`,`--project`,w,`--quiet`]),await g(w,x),await A([`pubsub`,`topics`,`add-iam-policy-binding`,x,`--project`,w,`--member`,`serviceAccount:gmail-api-push@system.gserviceaccount.com`,`--role`,`roles/pubsub.publisher`,`--quiet`]);let X=e.pushEndpoint?e.pushEndpoint:await C({mode:q,path:Y,port:R,target:U,token:h});if(!X)throw Error(`push endpoint required (set --push-endpoint)`);await k(w,O,x,X),await V({account:e.account,label:M,topic:T},!0);let Z=s({...c,hooks:{...c.hooks,enabled:!0,path:d,token:f,presets:_(c.hooks?.presets,`gmail`),gmail:{...c.hooks?.gmail,account:e.account,label:M,topic:T,subscription:O,pushToken:h,hookUrl:P,includeBody:W,maxBytes:G,renewEveryMinutes:K,serve:{...c.hooks?.gmail?.serve,bind:L,port:R,path:J},tailscale:{...c.hooks?.gmail?.tailscale,mode:q,path:Y,target:U}}}});if(!Z.ok)throw Error(`Config validation failed: ${Z.issues[0]?.message??`invalid`}`);await a(Z.config);let Q={projectId:w,topic:T,subscription:O,pushEndpoint:X,hookUrl:P,hookToken:f,pushToken:h,serve:{bind:L,port:R,path:J}};if(e.json){t.log(JSON.stringify(Q,null,2));return}t.log(`Gmail hooks configured:`),t.log(`- project: ${w}`),t.log(`- topic: ${T}`),t.log(`- subscription: ${O}`),t.log(`- push endpoint: ${X}`),t.log(`- hook url: ${P}`),t.log(`- config: ${u(r)}`),t.log(`Next: ${l(`openclaw webhooks gmail run`)}`)}async function z(e){await j(`gog`,[`gogcli`]);let n=P(c(),{account:e.account,topic:e.topic,subscription:e.subscription,label:e.label,hookToken:e.hookToken,pushToken:e.pushToken,hookUrl:e.hookUrl,serveBind:e.bind,servePort:e.port,servePath:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscaleMode:e.tailscale,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget});if(!n.ok)throw Error(n.error);let r=n.value;r.tailscale.mode!==`off`&&(await j(`tailscale`,[`tailscale`]),await C({mode:r.tailscale.mode,path:r.tailscale.path,port:r.serve.port,target:r.tailscale.target})),await V(r);let i=!1,a=B(r),o=r.renewEveryMinutes*6e4,s=setInterval(()=>{V(r)},o),l=()=>{process.off(`SIGINT`,u),process.off(`SIGTERM`,u)},u=()=>{i||(i=!0,l(),clearInterval(s),a.kill(`SIGTERM`))};process.on(`SIGINT`,u),process.on(`SIGTERM`,u),a.on(`exit`,()=>{if(i){l();return}t.log(`gog watch serve exited; restarting in 2s`),setTimeout(()=>{i||(a=B(r))},2e3)})}function B(e){let n=x(e);return t.log(`Starting gog ${n.join(` `)}`),L(`gog`,n,{stdio:`inherit`})}async function V(e,n=!1){let r=await d([`gog`,...h(e)],{timeoutMs:12e4});if(r.code!==0){let e=r.stderr||r.stdout||`gog watch start failed`;if(n)throw Error(e);t.error(e)}}function H(r){let i=r.command(`webhooks`).description(`Webhook helpers and integrations`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${f(`/cli/webhooks`,`docs.openclaw.ai/cli/webhooks`)}\n`).command(`gmail`).description(`Gmail Pub/Sub hooks (via gogcli)`);i.command(`setup`).description(`Configure Gmail watch + Pub/Sub + OpenClaw hooks`).requiredOption(`--account <email>`,`Gmail account to watch`).option(`--project <id>`,`GCP project id (OAuth client owner)`).option(`--topic <name>`,`Pub/Sub topic name`,T).option(`--subscription <name>`,`Pub/Sub subscription name`,O).option(`--label <label>`,`Gmail label to watch`,v).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`,M).option(`--port <port>`,`gog watch serve port`,String(b)).option(`--path <path>`,`gog watch serve path`,y).option(`--include-body`,`Include email body snippets`,!0).option(`--max-bytes <n>`,`Max bytes for body snippets`,String(w)).option(`--renew-minutes <n>`,`Renew watch every N minutes`,`720`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`,`funnel`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).option(`--push-endpoint <url>`,`Explicit Pub/Sub push endpoint`).option(`--json`,`Output JSON summary`,!1).action(async e=>{try{await R(U(e))}catch(e){t.error(n(String(e))),t.exit(1)}}),i.command(`run`).description(`Run gog watch serve + auto-renew loop`).option(`--account <email>`,`Gmail account to watch`).option(`--topic <topic>`,`Pub/Sub topic path (projects/.../topics/..)`).option(`--subscription <name>`,`Pub/Sub subscription name`).option(`--label <label>`,`Gmail label to watch`).option(`--hook-url <url>`,`OpenClaw hook URL`).option(`--hook-token <token>`,`OpenClaw hook token`).option(`--push-token <token>`,`Push token for gog watch serve`).option(`--bind <host>`,`gog watch serve bind host`).option(`--port <port>`,`gog watch serve port`).option(`--path <path>`,`gog watch serve path`).option(`--include-body`,`Include email body snippets`).option(`--max-bytes <n>`,`Max bytes for body snippets`).option(`--renew-minutes <n>`,`Renew watch every N minutes`).option(`--tailscale <mode>`,`Expose push endpoint via tailscale (funnel|serve|off)`).option(`--tailscale-path <path>`,`Path for tailscale serve/funnel`).option(`--tailscale-target <target>`,`Tailscale serve/funnel target (port, host:port, or URL)`).action(async e=>{try{await z(W(e))}catch(e){t.error(n(String(e))),t.exit(1)}})}function U(e){let t=e.account,n=typeof t==`string`?t.trim():``;if(!n)throw Error(`--account is required`);let r=G(e);return{account:n,project:q(e.project),...K(r),pushEndpoint:q(e.pushEndpoint),json:!!e.json}}function W(e){let t=G(e);return{account:q(e.account),...K(t)}}function G(e){return{topic:q(e.topic),subscription:q(e.subscription),label:q(e.label),hookUrl:q(e.hookUrl),hookToken:q(e.hookToken),pushToken:q(e.pushToken),bind:q(e.bind),port:J(e.port),path:q(e.path),includeBody:Y(e.includeBody),maxBytes:J(e.maxBytes),renewEveryMinutes:J(e.renewMinutes),tailscaleRaw:q(e.tailscale),tailscalePath:q(e.tailscalePath),tailscaleTarget:q(e.tailscaleTarget)}}function K(e){return{topic:e.topic,subscription:e.subscription,label:e.label,hookUrl:e.hookUrl,hookToken:e.hookToken,pushToken:e.pushToken,bind:e.bind,port:e.port,path:e.path,includeBody:e.includeBody,maxBytes:e.maxBytes,renewEveryMinutes:e.renewEveryMinutes,tailscale:e.tailscaleRaw,tailscalePath:e.tailscalePath,tailscaleTarget:e.tailscaleTarget}}function q(e){return typeof e==`string`&&e.trim()||void 0}function J(e){if(e==null)return;let t=typeof e==`number`?e:Number(e);if(!(!Number.isFinite(t)||t<=0))return Math.floor(t)}function Y(e){if(e!=null)return!!e}export{H as registerWebhooksCli};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-CrCoPIVK.js";import"./paths-CChBdtE8.js";import"./subsystem-Bc2XrjUz.js";import"./workspace-B0ZQeHXg.js";import"./utils-D3t-vPka.js";import{Mr as e,gr as t,jr as n}from"./model-selection-qkByRv5A.js";import"./github-copilot-token-DePP-lIf.js";import"./boolean-DypnRoRK.js";import"./proxy-env-DcmW_urA.js";import"./frontmatter-CzpfPBFl.js";import"./logger-5W0OocJW.js";import"./fetch-xT2jRpqs.js";import"./fetch-guard-ChVqc0HF.js";import"./ir-BYCrFFZ9.js";import"./render-CBsnn-2A.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-CUQcIty1.js";import"./tables-B9wFKQvT.js";import{r as l}from"./outbound-C-4qToKv.js";function u(t){let r=t.to?.trim()??``,i=(t.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(t=>e(t)).filter(e=>!!e);if(r){let t=e(r);return t&&(n(t)||a||o.length===0||o.includes(t))?{ok:!0,to:t}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(e){let n=t({cfg:e.cfg,accountId:e.accountId}),r=u({to:e.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${e.actionLabel} blocked: chatJid "${e.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
1
|
+
import"./paths-CrCoPIVK.js";import"./paths-CChBdtE8.js";import"./subsystem-Bc2XrjUz.js";import"./workspace-B0ZQeHXg.js";import"./utils-D3t-vPka.js";import{Mr as e,gr as t,jr as n}from"./model-selection-qkByRv5A.js";import"./github-copilot-token-DePP-lIf.js";import"./boolean-DypnRoRK.js";import"./proxy-env-DcmW_urA.js";import"./frontmatter-CzpfPBFl.js";import"./logger-5W0OocJW.js";import"./fetch-xT2jRpqs.js";import"./fetch-guard-ChVqc0HF.js";import"./ir-BYCrFFZ9.js";import"./render-CBsnn-2A.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-CUQcIty1.js";import"./tables-B9wFKQvT.js";import{r as l}from"./outbound-C-4qToKv.js";function u(t){let r=t.to?.trim()??``,i=(t.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(t=>e(t)).filter(e=>!!e);if(r){let t=e(r);return t&&(n(t)||a||o.length===0||o.includes(t))?{ok:!0,to:t}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(e){let n=t({cfg:e.cfg,accountId:e.accountId}),r=u({to:e.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${e.actionLabel} blocked: chatJid "${e.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-B4IRk3wi.js";import"./subsystem-C5XF2Fy5.js";import"./utils-UGOV_184.js";import"./model-selection-I1ctjFOB.js";import"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import{U as e,ct as t,st as n}from"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./fetch-guard-Cji70DJW.js";import"./local-roots-Dxioh0C2.js";import"./ir-CZdZsdnI.js";import"./render-D8OWO2hT.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-DH0aw-m5.js";import"./tables-h7y1Jhf4.js";import{r as l}from"./outbound-DKMI_4xm.js";function u(e){let r=e.to?.trim()??``,i=(e.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(e=>t(e)).filter(e=>!!e);if(r){let e=t(r);return e&&(n(e)||a||o.length===0||o.includes(e))?{ok:!0,to:e}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(t){let n=e({cfg:t.cfg,accountId:t.accountId}),r=u({to:t.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${t.actionLabel} blocked: chatJid "${t.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
1
|
+
import"./paths-B4IRk3wi.js";import"./subsystem-C5XF2Fy5.js";import"./utils-UGOV_184.js";import"./model-selection-I1ctjFOB.js";import"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import{U as e,ct as t,st as n}from"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./fetch-guard-Cji70DJW.js";import"./local-roots-Dxioh0C2.js";import"./ir-CZdZsdnI.js";import"./render-D8OWO2hT.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-DH0aw-m5.js";import"./tables-h7y1Jhf4.js";import{r as l}from"./outbound-DKMI_4xm.js";function u(e){let r=e.to?.trim()??``,i=(e.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(e=>t(e)).filter(e=>!!e);if(r){let e=t(r);return e&&(n(e)||a||o.length===0||o.includes(e))?{ok:!0,to:e}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(t){let n=e({cfg:t.cfg,accountId:t.accountId}),r=u({to:t.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${t.actionLabel} blocked: chatJid "${t.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-piJASC5k.js";import"./paths-BpQOWYiT.js";import"./logger-DwWqfo66.js";import{Mr as e,gr as t,jr as n}from"./model-selection-C2QwHmXT.js";import"./github-copilot-token-wm6mbypz.js";import"./proxy-env-BNhTHkd_.js";import"./fetch-BI3CnKE3.js";import"./fetch-guard-BmNIhXP-.js";import"./ir-CSysIkNU.js";import"./render-BXEUPIHe.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-LuLROpta.js";import"./tables-3Rjt6nwZ.js";import{r as l}from"./outbound-CSk4oF0g.js";function u(t){let r=t.to?.trim()??``,i=(t.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(t=>e(t)).filter(e=>!!e);if(r){let t=e(r);return t&&(n(t)||a||o.length===0||o.includes(t))?{ok:!0,to:t}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(e){let n=t({cfg:e.cfg,accountId:e.accountId}),r=u({to:e.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${e.actionLabel} blocked: chatJid "${e.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
1
|
+
import"./paths-piJASC5k.js";import"./paths-BpQOWYiT.js";import"./logger-DwWqfo66.js";import{Mr as e,gr as t,jr as n}from"./model-selection-C2QwHmXT.js";import"./github-copilot-token-wm6mbypz.js";import"./proxy-env-BNhTHkd_.js";import"./fetch-BI3CnKE3.js";import"./fetch-guard-BmNIhXP-.js";import"./ir-CSysIkNU.js";import"./render-BXEUPIHe.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-LuLROpta.js";import"./tables-3Rjt6nwZ.js";import{r as l}from"./outbound-CSk4oF0g.js";function u(t){let r=t.to?.trim()??``,i=(t.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(t=>e(t)).filter(e=>!!e);if(r){let t=e(r);return t&&(n(t)||a||o.length===0||o.includes(t))?{ok:!0,to:t}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(e){let n=t({cfg:e.cfg,accountId:e.accountId}),r=u({to:e.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${e.actionLabel} blocked: chatJid "${e.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-BhXA8Jy2.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import{U as e,ct as t,st as n}from"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./fetch-CY5G3PDq.js";import"./fetch-guard-BaRbr_V6.js";import"./ir-CH7YvSi9.js";import"./render-DrrPmnMI.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-D55sWZ4E.js";import"./tables-D1pcaye7.js";import{r as l}from"./outbound-B88MLJN3.js";function u(e){let r=e.to?.trim()??``,i=(e.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(e=>t(e)).filter(e=>!!e);if(r){let e=t(r);return e&&(n(e)||a||o.length===0||o.includes(e))?{ok:!0,to:e}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(t){let n=e({cfg:t.cfg,accountId:t.accountId}),r=u({to:t.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${t.actionLabel} blocked: chatJid "${t.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
1
|
+
import"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-BhXA8Jy2.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import{U as e,ct as t,st as n}from"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./fetch-CY5G3PDq.js";import"./fetch-guard-BaRbr_V6.js";import"./ir-CH7YvSi9.js";import"./render-DrrPmnMI.js";import{f as r,h as i,i as a,l as o,n as s,o as c}from"./target-errors-D55sWZ4E.js";import"./tables-D1pcaye7.js";import{r as l}from"./outbound-B88MLJN3.js";function u(e){let r=e.to?.trim()??``,i=(e.allowFrom??[]).map(e=>String(e).trim()).filter(Boolean),a=i.includes(`*`),o=i.filter(e=>e!==`*`).map(e=>t(e)).filter(e=>!!e);if(r){let e=t(r);return e&&(n(e)||a||o.length===0||o.includes(e))?{ok:!0,to:e}:{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}return{ok:!1,error:s(`WhatsApp`,`<E.164|group JID>`)}}function d(t){let n=e({cfg:t.cfg,accountId:t.accountId}),r=u({to:t.chatJid,allowFrom:n.allowFrom??[],mode:`implicit`});if(!r.ok)throw new a(`WhatsApp ${t.actionLabel} blocked: chatJid "${t.chatJid}" is not in the configured allowFrom list for account "${n.accountId}".`);return{to:r.to,accountId:n.accountId}}async function f(e,t){let n=i(e,`action`,{required:!0}),a=c(t.channels?.whatsapp?.actions);if(n===`react`){if(!a(`reactions`))throw Error(`WhatsApp reactions are disabled.`);let n=i(e,`chatJid`,{required:!0}),s=i(e,`messageId`,{required:!0}),{emoji:c,remove:u,isEmpty:f}=r(e,{removeErrorMessage:`Emoji is required to remove a WhatsApp reaction.`}),p=i(e,`participant`),m=i(e,`accountId`),h=e.fromMe,g=typeof h==`boolean`?h:void 0,_=d({cfg:t,chatJid:n,accountId:m,actionLabel:`reaction`}),v=u?``:c;return await l(_.to,s,v,{verbose:!1,fromMe:g,participant:p??void 0,accountId:_.accountId}),o(!u&&!f?{ok:!0,added:c}:{ok:!0,removed:!0})}throw Error(`Unsupported WhatsApp action: ${n}`)}export{f as handleWhatsAppAction};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import{s as e,t}from"./utils-CGdo13HV.js";import n from"node:os";import r from"node:path";import i from"node:fs";function a(e){let t=e?.trim();return t?t.endsWith(`.`)?t:`${t}.`:null}function o(e){let t=e?.env??process.env;return a(e?.configDomain??t.OPENCLAW_WIDE_AREA_DOMAIN??null)}function s(e){return`${e.replace(/\.$/,``)}.db`}function c(e){return r.join(t,`dns`,s(e))}function l(e,t){let n=e.trim().toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+/,``).replace(/-+$/,``),r=n.length>0?n:t;return r.length<=63?r:r.slice(0,63)}function u(e){return`"${e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
|
|
2
2
|
`,`\\n`)}"`}function d(e){return`${e.getUTCFullYear()}${String(e.getUTCMonth()+1).padStart(2,`0`)}${String(e.getUTCDate()).padStart(2,`0`)}`}function f(e,t){let n=d(t),r=Number.parseInt(`${n}01`,10);return!e||!Number.isFinite(e)?r:String(e).startsWith(n)?e+1:r}function p(e){let t=e.match(/^\s*@\s+IN\s+SOA\s+\S+\s+\S+\s+(\d+)\s+/m);if(!t)return null;let n=Number.parseInt(t[1],10);return Number.isFinite(n)?n:null}function m(e){return e.match(/^\s*;\s*openclaw-content-hash:\s*(\S+)\s*$/m)?.[1]??null}function h(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,`0`)}function g(e){let t=n.hostname().split(`.`)[0]??`openclaw`,r=l(e.hostLabel??t,`openclaw`),i=l(e.instanceLabel??`${t}-gateway`,`openclaw-gw`),o=a(e.domain)??`local.`,s=[`displayName=${e.displayName.trim()||t}`,`role=gateway`,`transport=gateway`,`gatewayPort=${e.gatewayPort}`];e.gatewayTlsEnabled&&(s.push(`gatewayTls=1`),e.gatewayTlsFingerprintSha256&&s.push(`gatewayTlsSha256=${e.gatewayTlsFingerprintSha256}`)),e.tailnetDns?.trim()&&s.push(`tailnetDns=${e.tailnetDns.trim()}`),typeof e.sshPort==`number`&&e.sshPort>0&&s.push(`sshPort=${e.sshPort}`),e.cliPath?.trim()&&s.push(`cliPath=${e.cliPath.trim()}`);let c=[];c.push(`$ORIGIN ${o}`),c.push(`$TTL 60`);let d=`@ IN SOA ns1 hostmaster ${e.serial} 7200 3600 1209600 60`;c.push(d),c.push(`@ IN NS ns1`),c.push(`ns1 IN A ${e.tailnetIPv4}`),c.push(`${r} IN A ${e.tailnetIPv4}`),e.tailnetIPv6&&c.push(`${r} IN AAAA ${e.tailnetIPv6}`),c.push(`_openclaw-gw._tcp IN PTR ${i}._openclaw-gw._tcp`),c.push(`${i}._openclaw-gw._tcp IN SRV 0 0 ${e.gatewayPort} ${r}`),c.push(`${i}._openclaw-gw._tcp IN TXT ${s.map(u).join(` `)}`);let f=`${c.join(`
|
|
3
3
|
`)}\n`;return`; openclaw-content-hash: ${h(`${c.map(e=>e===d?`@ IN SOA ns1 hostmaster SERIAL 7200 3600 1209600 60`:e).join(`
|
|
4
|
-
`)}\n`)}\n${f}`}function _(e){return g(e)}async function v(t){let n=a(t.domain);if(!n)throw Error(`wide-area discovery domain is required`);let o=c(n);await e(r.dirname(o));let s=(()=>{try{return i.readFileSync(o,`utf-8`)}catch{return null}})(),l=m(_({...t,serial:0})),u=s?m(s):null;if(s&&l&&u===l)return{zonePath:o,changed:!1};let d=f(s?p(s):null,new Date),h=_({...t,serial:d});return i.writeFileSync(o,h,`utf-8`),{zonePath:o,changed:!0}}export{o as n,v as r,c as t};
|
|
4
|
+
`)}\n`)}\n${f}`}function _(e){return g(e)}async function v(t){let n=a(t.domain);if(!n)throw Error(`wide-area discovery domain is required`);let o=c(n);await e(r.dirname(o));let s=(()=>{try{return i.readFileSync(o,`utf-8`)}catch{return null}})(),l=m(_({...t,serial:0})),u=s?m(s):null;if(s&&l&&u===l)return{zonePath:o,changed:!1};let d=f(s?p(s):null,new Date),h=_({...t,serial:d});return i.writeFileSync(o,h,`utf-8`),{zonePath:o,changed:!0}}export{o as n,v as r,c as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import{c as e,t}from"./utils-UGOV_184.js";import n from"node:fs";import r from"node:os";import i from"node:path";function a(e){let t=e?.trim();return t?t.endsWith(`.`)?t:`${t}.`:null}function o(e){let t=e?.env??process.env;return a(e?.configDomain??t.OPENCLAW_WIDE_AREA_DOMAIN??null)}function s(e){return`${e.replace(/\.$/,``)}.db`}function c(e){return i.join(t,`dns`,s(e))}function l(e,t){let n=e.trim().toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+/,``).replace(/-+$/,``),r=n.length>0?n:t;return r.length<=63?r:r.slice(0,63)}function u(e){return`"${e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
|
|
2
2
|
`,`\\n`)}"`}function d(e){return`${e.getUTCFullYear()}${String(e.getUTCMonth()+1).padStart(2,`0`)}${String(e.getUTCDate()).padStart(2,`0`)}`}function f(e,t){let n=d(t),r=Number.parseInt(`${n}01`,10);return!e||!Number.isFinite(e)?r:String(e).startsWith(n)?e+1:r}function p(e){let t=e.match(/^\s*@\s+IN\s+SOA\s+\S+\s+\S+\s+(\d+)\s+/m);if(!t)return null;let n=Number.parseInt(t[1],10);return Number.isFinite(n)?n:null}function m(e){return e.match(/^\s*;\s*openclaw-content-hash:\s*(\S+)\s*$/m)?.[1]??null}function h(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,`0`)}function g(e){let t=r.hostname().split(`.`)[0]??`openclaw`,n=l(e.hostLabel??t,`openclaw`),i=l(e.instanceLabel??`${t}-gateway`,`openclaw-gw`),o=a(e.domain)??`local.`,s=[`displayName=${e.displayName.trim()||t}`,`role=gateway`,`transport=gateway`,`gatewayPort=${e.gatewayPort}`];e.gatewayTlsEnabled&&(s.push(`gatewayTls=1`),e.gatewayTlsFingerprintSha256&&s.push(`gatewayTlsSha256=${e.gatewayTlsFingerprintSha256}`)),e.tailnetDns?.trim()&&s.push(`tailnetDns=${e.tailnetDns.trim()}`),typeof e.sshPort==`number`&&e.sshPort>0&&s.push(`sshPort=${e.sshPort}`),e.cliPath?.trim()&&s.push(`cliPath=${e.cliPath.trim()}`);let c=[];c.push(`$ORIGIN ${o}`),c.push(`$TTL 60`);let d=`@ IN SOA ns1 hostmaster ${e.serial} 7200 3600 1209600 60`;c.push(d),c.push(`@ IN NS ns1`),c.push(`ns1 IN A ${e.tailnetIPv4}`),c.push(`${n} IN A ${e.tailnetIPv4}`),e.tailnetIPv6&&c.push(`${n} IN AAAA ${e.tailnetIPv6}`),c.push(`_openclaw-gw._tcp IN PTR ${i}._openclaw-gw._tcp`),c.push(`${i}._openclaw-gw._tcp IN SRV 0 0 ${e.gatewayPort} ${n}`),c.push(`${i}._openclaw-gw._tcp IN TXT ${s.map(u).join(` `)}`);let f=`${c.join(`
|
|
3
3
|
`)}\n`;return`; openclaw-content-hash: ${h(`${c.map(e=>e===d?`@ IN SOA ns1 hostmaster SERIAL 7200 3600 1209600 60`:e).join(`
|
|
4
|
-
`)}\n`)}\n${f}`}function _(e){return g(e)}async function v(t){let r=a(t.domain);if(!r)throw Error(`wide-area discovery domain is required`);let o=c(r);await e(i.dirname(o));let s=(()=>{try{return n.readFileSync(o,`utf-8`)}catch{return null}})(),l=m(_({...t,serial:0})),u=s?m(s):null;if(s&&l&&u===l)return{zonePath:o,changed:!1};let d=f(s?p(s):null,new Date),h=_({...t,serial:d});return n.writeFileSync(o,h,`utf-8`),{zonePath:o,changed:!0}}export{o as n,v as r,c as t};
|
|
4
|
+
`)}\n`)}\n${f}`}function _(e){return g(e)}async function v(t){let r=a(t.domain);if(!r)throw Error(`wide-area discovery domain is required`);let o=c(r);await e(i.dirname(o));let s=(()=>{try{return n.readFileSync(o,`utf-8`)}catch{return null}})(),l=m(_({...t,serial:0})),u=s?m(s):null;if(s&&l&&u===l)return{zonePath:o,changed:!1};let d=f(s?p(s):null,new Date),h=_({...t,serial:d});return n.writeFileSync(o,h,`utf-8`),{zonePath:o,changed:!0}}export{o as n,v as r,c as t};
|