@qqbrowser/openclaw-qbot 0.0.127 → 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 +3 -3
- 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/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/pw-ai-C7peCONw.js
CHANGED
|
@@ -43,4 +43,4 @@ import"./paths-B4IRk3wi.js";import{H as e}from"./subsystem-C5XF2Fy5.js";import".
|
|
|
43
43
|
} catch (err) {
|
|
44
44
|
throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
|
|
45
45
|
}
|
|
46
|
-
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=V(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await B(e);M(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await B(e);M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await V(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await B(e);M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await V(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await B(e);if(M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?V(t,n):t.locator(r).first(),a=await _({rootDir:s,requestedPaths:e.paths,scopeLabel:`uploads directory (${s})`});if(!a.ok)throw Error(a.error);let o=a.paths;try{await i.setInputFiles(o)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await B(e);M(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${te(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});M(n);let r=await S({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:u(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});M(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});if(M(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let r=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},i=String(e.url??``).trim();if(!i)throw Error(`url is required`);await n({url:i,...m(e.ssrfPolicy)});let a=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),s=await B(e);M(s);let c=async()=>await s.goto(i,{timeout:a}),l;try{l=await c()}catch(t){if(!r(t))throw t;await H({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),s=await B(e),M(s),l=await c()}await t({request:l?.request(),...m(e.ssrfPolicy)});let u=s.url();return await o({url:u,...m(e.ssrfPolicy)}),{url:u}}async function bt(e){let t=await B(e);M(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await B(e);M(t),await t.close()}async function St(e){let t=await B(e);return M(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await B(e);M(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await B(e);M(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await B(e);if(M(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await B(e);M(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await B(e);M(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await B(e);M(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await B(e);M(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await B(e);M(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ae[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await B(e);return M(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await B(e);M(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await B(e);M(t),await t.context().clearCookies()}async function Pt(e){let t=await B(e);M(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await B(e);M(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await B(e);M(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await B(e)).context(),n=N(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await B(e)).context(),n=N(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:ee,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}f();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,xe as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,ge as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,be as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,M as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,Se as focusPageByTargetIdViaPlaywright,H as forceDisconnectPlaywrightForTarget,Te as getConsoleMessagesViaPlaywright,we as getNetworkRequestsViaPlaywright,Ce as getPageErrorsViaPlaywright,B as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,ye as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,V as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
|
46
|
+
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=V(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await B(e);M(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await B(e);M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await V(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await B(e);M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await V(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await B(e);if(M(t),j({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?V(t,n):t.locator(r).first(),a=await _({rootDir:s,requestedPaths:e.paths,scopeLabel:`uploads directory (${s})`});if(!a.ok)throw Error(a.error);let o=a.paths;try{await i.setInputFiles(o)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await B(e);M(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${te(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});M(n);let r=await S({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:u(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});M(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await B({cdpUrl:e.cdpUrl,targetId:e.targetId});if(M(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return A({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let r=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},i=String(e.url??``).trim();if(!i)throw Error(`url is required`);await n({url:i,...m(e.ssrfPolicy)});let a=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),s=await B(e);M(s);let c=async()=>await s.goto(i,{timeout:a}),l;try{l=await c()}catch(t){if(!r(t))throw t;await H({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),s=await B(e),M(s),l=await c()}await t({request:l?.request(),...m(e.ssrfPolicy)});let u=s.url();return await o({url:u,...m(e.ssrfPolicy)}),{url:u}}async function bt(e){let t=await B(e);M(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await B(e);M(t),await t.close()}async function St(e){let t=await B(e);return M(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await B(e);M(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await B(e);M(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await B(e);if(M(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await B(e);M(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await B(e);M(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await B(e);M(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await B(e);M(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await B(e);M(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ae[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await S({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await B(e);return M(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await B(e);M(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await B(e);M(t),await t.context().clearCookies()}async function Pt(e){let t=await B(e);M(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await B(e);M(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await B(e);M(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await B(e)).context(),n=N(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await B(e)).context(),n=N(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:ee,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}f();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,xe as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,ge as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,be as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,M as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,Se as focusPageByTargetIdViaPlaywright,H as forceDisconnectPlaywrightForTarget,Te as getConsoleMessagesViaPlaywright,we as getNetworkRequestsViaPlaywright,Ce as getPageErrorsViaPlaywright,B as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,ye as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,V as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
package/dist/pw-ai-CojtT9WR.js
CHANGED
|
@@ -43,4 +43,4 @@ import{O as e}from"./paths-CrCoPIVK.js";import"./paths-CChBdtE8.js";import{E as
|
|
|
43
43
|
} catch (err) {
|
|
44
44
|
throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
|
|
45
45
|
}
|
|
46
|
-
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=U(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await H(e);P(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await H(e);P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await U(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await H(e);P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await U(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await H(e);if(P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?U(t,n):t.locator(r).first(),o=await a({rootDir:l,requestedPaths:e.paths,scopeLabel:`uploads directory (${l})`});if(!o.ok)throw Error(o.error);let s=o.paths;try{await i.setInputFiles(s)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await H(e);P(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${p(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});P(n);let r=await C({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:_(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});P(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});if(P(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let t=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},n=String(e.url??``).trim();if(!n)throw Error(`url is required`);await d({url:n,...o(e.ssrfPolicy)});let i=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),a=await H(e);P(a);let s=async()=>await a.goto(n,{timeout:i}),c;try{c=await s()}catch(n){if(!t(n))throw n;await W({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),a=await H(e),P(a),c=await s()}await f({request:c?.request(),...o(e.ssrfPolicy)});let l=a.url();return await r({url:l,...o(e.ssrfPolicy)}),{url:l}}async function bt(e){let t=await H(e);P(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await H(e);P(t),await t.close()}async function St(e){let t=await H(e);return P(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await H(e);P(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await H(e);P(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await H(e);if(P(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await H(e);P(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await H(e);P(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await H(e);P(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await H(e);P(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await H(e);P(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ie[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await H(e);return P(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await H(e);P(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await H(e);P(t),await t.context().clearCookies()}async function Pt(e){let t=await H(e);P(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await H(e);P(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await H(e);P(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await H(e)).context(),n=F(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await H(e)).context(),n=F(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:s,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}n();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,ye as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,me as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,ve as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,P as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,be as focusPageByTargetIdViaPlaywright,W as forceDisconnectPlaywrightForTarget,we as getConsoleMessagesViaPlaywright,Se as getNetworkRequestsViaPlaywright,xe as getPageErrorsViaPlaywright,H as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,_e as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,U as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
|
46
|
+
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=U(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await H(e);P(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await H(e);P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await U(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await H(e);P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await U(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await H(e);if(P(t),N({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?U(t,n):t.locator(r).first(),o=await a({rootDir:l,requestedPaths:e.paths,scopeLabel:`uploads directory (${l})`});if(!o.ok)throw Error(o.error);let s=o.paths;try{await i.setInputFiles(s)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await H(e);P(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${p(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});P(n);let r=await C({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:_(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});P(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await H({cdpUrl:e.cdpUrl,targetId:e.targetId});if(P(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return M({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let t=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},n=String(e.url??``).trim();if(!n)throw Error(`url is required`);await d({url:n,...o(e.ssrfPolicy)});let i=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),a=await H(e);P(a);let s=async()=>await a.goto(n,{timeout:i}),c;try{c=await s()}catch(n){if(!t(n))throw n;await W({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),a=await H(e),P(a),c=await s()}await f({request:c?.request(),...o(e.ssrfPolicy)});let l=a.url();return await r({url:l,...o(e.ssrfPolicy)}),{url:l}}async function bt(e){let t=await H(e);P(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await H(e);P(t),await t.close()}async function St(e){let t=await H(e);return P(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await H(e);P(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await H(e);P(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await H(e);if(P(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await H(e);P(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await H(e);P(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await H(e);P(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await H(e);P(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await H(e);P(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ie[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await H(e);return P(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await H(e);P(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await H(e);P(t),await t.context().clearCookies()}async function Pt(e){let t=await H(e);P(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await H(e);P(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await H(e);P(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await H(e)).context(),n=F(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await H(e)).context(),n=F(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:s,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}n();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,ye as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,me as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,ve as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,P as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,be as focusPageByTargetIdViaPlaywright,W as forceDisconnectPlaywrightForTarget,we as getConsoleMessagesViaPlaywright,Se as getNetworkRequestsViaPlaywright,xe as getPageErrorsViaPlaywright,H as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,_e as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,U as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
package/dist/pw-ai-DWJWFzTA.js
CHANGED
|
@@ -43,4 +43,4 @@ import{H as e}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import".
|
|
|
43
43
|
} catch (err) {
|
|
44
44
|
throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
|
|
45
45
|
}
|
|
46
|
-
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=H(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await V(e);N(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await V(e);N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await H(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await V(e);N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await H(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await V(e);if(N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?H(t,n):t.locator(r).first(),a=await p({rootDir:_,requestedPaths:e.paths,scopeLabel:`uploads directory (${_})`});if(!a.ok)throw Error(a.error);let o=a.paths;try{await i.setInputFiles(o)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await V(e);N(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${ee(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});N(n);let r=await C({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:f(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});N(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});if(N(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let t=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},n=String(e.url??``).trim();if(!n)throw Error(`url is required`);await c({url:n,...m(e.ssrfPolicy)});let r=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),i=await V(e);N(i);let a=async()=>await i.goto(n,{timeout:r}),o;try{o=await a()}catch(n){if(!t(n))throw n;await U({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),i=await V(e),N(i),o=await a()}await u({request:o?.request(),...m(e.ssrfPolicy)});let s=i.url();return await g({url:s,...m(e.ssrfPolicy)}),{url:s}}async function bt(e){let t=await V(e);N(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await V(e);N(t),await t.close()}async function St(e){let t=await V(e);return N(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await V(e);N(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await V(e);N(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await V(e);if(N(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await V(e);N(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await V(e);N(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await V(e);N(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await V(e);N(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await V(e);N(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ie[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await V(e);return N(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await V(e);N(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await V(e);N(t),await t.context().clearCookies()}async function Pt(e){let t=await V(e);N(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await V(e);N(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await V(e);N(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await V(e)).context(),n=P(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await V(e)).context(),n=P(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:h,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}s();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,be as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,he as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,ye as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,N as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,xe as focusPageByTargetIdViaPlaywright,U as forceDisconnectPlaywrightForTarget,we as getConsoleMessagesViaPlaywright,Ce as getNetworkRequestsViaPlaywright,Se as getPageErrorsViaPlaywright,V as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,ve as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,H as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
|
46
|
+
`);return await $(n.evaluate(r,{fnBody:t,timeoutMs:i}),c)}finally{a&&o&&a.removeEventListener(`abort`,o)}}async function lt(e){let t=await Z(e),n=Y(e.timeoutMs,2e4),r=J(e.ref),i=H(t,r);try{await i.scrollIntoViewIfNeeded({timeout:n})}catch(e){throw X(e,r)}}async function ut(e){let t=await V(e);N(t);let n=Y(e.timeoutMs,2e4);if(typeof e.timeMs==`number`&&Number.isFinite(e.timeMs)&&await t.waitForTimeout(Math.max(0,e.timeMs)),e.text&&await t.getByText(e.text).first().waitFor({state:`visible`,timeout:n}),e.textGone&&await t.getByText(e.textGone).first().waitFor({state:`hidden`,timeout:n}),e.selector){let r=String(e.selector).trim();r&&await t.locator(r).first().waitFor({state:`visible`,timeout:n})}if(e.url){let r=String(e.url).trim();r&&await t.waitForURL(r,{timeout:n})}if(e.loadState&&await t.waitForLoadState(e.loadState,{timeout:n}),e.fn){let r=String(e.fn).trim();r&&await t.waitForFunction(r,{timeout:n})}}async function dt(e){let t=await V(e);N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`;if(e.ref){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await H(t,e.ref).screenshot({type:n})}}if(e.element){if(e.fullPage)throw Error(`fullPage is not supported for element screenshots`);return{buffer:await t.locator(e.element).first().screenshot({type:n})}}return{buffer:await t.screenshot({type:n,fullPage:!!e.fullPage})}}async function ft(e){let t=await V(e);N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t});let n=e.type??`png`,r=typeof e.maxLabels==`number`&&Number.isFinite(e.maxLabels)?Math.max(1,Math.floor(e.maxLabels)):150,i=await t.evaluate(()=>({scrollX:window.scrollX||0,scrollY:window.scrollY||0,width:window.innerWidth||0,height:window.innerHeight||0})),a=Object.keys(e.refs??{}),o=[],s=0;for(let e of a){if(o.length>=r){s+=1;continue}try{let n=await H(t,e).boundingBox();if(!n){s+=1;continue}let r=n.x,a=n.y,c=n.x+n.width,l=n.y+n.height,u=i.scrollX,d=i.scrollY,f=i.scrollX+i.width,p=i.scrollY+i.height;if(c<u||r>f||l<d||a>p){s+=1;continue}o.push({ref:e,x:r-i.scrollX,y:a-i.scrollY,w:Math.max(1,n.width),h:Math.max(1,n.height)})}catch{s+=1}}try{return o.length>0&&await t.evaluate(e=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove());let t=document.createElement(`div`);t.setAttribute(`data-openclaw-labels`,`1`),t.style.position=`fixed`,t.style.left=`0`,t.style.top=`0`,t.style.zIndex=`2147483647`,t.style.pointerEvents=`none`,t.style.fontFamily=`"SF Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`;let n=(e,t,n)=>Math.min(n,Math.max(t,e));for(let r of e){let e=document.createElement(`div`);e.setAttribute(`data-openclaw-labels`,`1`),e.style.position=`absolute`,e.style.left=`${r.x}px`,e.style.top=`${r.y}px`,e.style.width=`${r.w}px`,e.style.height=`${r.h}px`,e.style.border=`2px solid #ffb020`,e.style.boxSizing=`border-box`;let i=document.createElement(`div`);i.setAttribute(`data-openclaw-labels`,`1`),i.textContent=r.ref,i.style.position=`absolute`,i.style.left=`${r.x}px`,i.style.top=`${n(r.y-18,0,2e4)}px`,i.style.background=`#ffb020`,i.style.color=`#1a1a1a`,i.style.fontSize=`12px`,i.style.lineHeight=`14px`,i.style.padding=`1px 4px`,i.style.borderRadius=`3px`,i.style.boxShadow=`0 1px 2px rgba(0,0,0,0.35)`,i.style.whiteSpace=`nowrap`,t.appendChild(e),t.appendChild(i)}document.documentElement.appendChild(t)},o),{buffer:await t.screenshot({type:n}),labels:o.length,skipped:s}}finally{await t.evaluate(()=>{document.querySelectorAll(`[data-openclaw-labels]`).forEach(e=>e.remove())}).catch(()=>{})}}async function pt(e){let t=await V(e);if(N(t),M({cdpUrl:e.cdpUrl,targetId:e.targetId,page:t}),!e.paths.length)throw Error(`paths are required`);let n=typeof e.inputRef==`string`?e.inputRef.trim():``,r=typeof e.element==`string`?e.element.trim():``;if(n&&r)throw Error(`inputRef and element are mutually exclusive`);if(!n&&!r)throw Error(`inputRef or element is required`);let i=n?H(t,n):t.locator(r).first(),a=await p({rootDir:_,requestedPaths:e.paths,scopeLabel:`uploads directory (${_})`});if(!a.ok)throw Error(a.error);let o=a.paths;try{await i.setInputFiles(o)}catch(e){throw X(e,n||r)}try{let e=await i.elementHandle();e&&await e.evaluate(e=>{e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))})}catch{}}function mt(e,t){let n=e.trim();if(!n)return!1;if(n===t)return!0;if(n.includes(`*`)){let e=n.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`);return RegExp(`^${e.replace(/\*\*/g,`.*`).replace(/\*/g,`.*`)}$`).test(t)}return t.includes(n)}async function ht(e){let t=String(e.url??``).trim();if(!t)throw Error(`url is required`);let n=typeof e.maxChars==`number`&&Number.isFinite(e.maxChars)?Math.max(1,Math.min(5e6,Math.floor(e.maxChars))):2e5,r=Y(e.timeoutMs,2e4),i=await V(e);N(i);let a=await new Promise((e,n)=>{let a=!1,o,s,c=()=>{o&&clearTimeout(o),o=void 0,s&&i.off(`response`,s)};s=n=>{a||mt(t,n.url?.()||``)&&(a=!0,c(),e(n))},i.on(`response`,s),o=setTimeout(()=>{a||(a=!0,c(),n(Error(`Response not found for url pattern "${t}". Run '${ee(`openclaw browser requests`)}' to inspect recent network activity.`)))},r)}),o=a.url?.()||``,s=a.status?.(),c=a.headers?.(),l=``;try{if(typeof a.text==`function`)l=await a.text();else if(typeof a.body==`function`){let e=await a.body();l=new TextDecoder(`utf-8`).decode(e)}}catch(e){throw Error(`Failed to read response body for "${o}": ${String(e)}`,{cause:e})}return{url:o,status:s,headers:c,body:l.length>n?l.slice(0,n):l,truncated:l.length>n?!0:void 0}}async function gt(e){let t=Math.max(1,Math.min(2e3,Math.floor(e.limit??500))),n=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});N(n);let r=await C({cdpUrl:e.cdpUrl,page:n,targetId:e.targetId,fn:async e=>(await e(`Accessibility.enable`).catch(()=>{}),await e(`Accessibility.getFullAXTree`))});return{nodes:f(Array.isArray(r?.nodes)?r.nodes:[],t)}}async function _t(e){let t=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});N(t);let n=t;if(!n._snapshotForAI)throw Error(`Playwright _snapshotForAI is not available. Upgrade playwright-core.`);let r=await n._snapshotForAI({timeout:Math.max(500,Math.min(6e4,Math.floor(e.timeoutMs??5e3))),track:`response`}),i=String(r?.full??``),a=e.maxChars,o=typeof a==`number`&&Number.isFinite(a)&&a>0?Math.floor(a):void 0,s=!1;o&&i.length>o&&(i=`${i.slice(0,o)}\n\n[...TRUNCATED - page too large]`,s=!0);let c=ze(i);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:c.refs,mode:`aria`}),s?{snapshot:i,truncated:s,refs:c.refs}:{snapshot:i,refs:c.refs}}async function vt(e){let t=await V({cdpUrl:e.cdpUrl,targetId:e.targetId});if(N(t),e.refsMode===`aria`){if(e.selector?.trim()||e.frameSelector?.trim())throw Error(`refs=aria does not support selector/frame snapshots yet.`);let n=t;if(!n._snapshotForAI)throw Error(`refs=aria requires Playwright _snapshotForAI support.`);let r=await n._snapshotForAI({timeout:5e3,track:`response`}),i=ze(String(r?.full??``),e.options);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:i.refs,mode:`aria`}),{snapshot:i.snapshot,refs:i.refs,stats:Ae(i.snapshot,i.refs)}}let n=e.frameSelector?.trim()||``,r=e.selector?.trim()||``,i=await(n?r?t.frameLocator(n).locator(r):t.frameLocator(n).locator(`:root`):r?t.locator(r):t.locator(`:root`)).ariaSnapshot(),a=Le(String(i??``),e.options);return j({page:t,cdpUrl:e.cdpUrl,targetId:e.targetId,refs:a.refs,frameSelector:n||void 0,mode:`role`}),{snapshot:a.snapshot,refs:a.refs,stats:Ae(a.snapshot,a.refs)}}async function yt(e){let t=e=>{let t=typeof e==`string`?e.toLowerCase():e instanceof Error?e.message.toLowerCase():``;return t.includes(`frame has been detached`)||t.includes(`target page, context or browser has been closed`)},n=String(e.url??``).trim();if(!n)throw Error(`url is required`);await c({url:n,...m(e.ssrfPolicy)});let r=Math.max(1e3,Math.min(12e4,e.timeoutMs??2e4)),i=await V(e);N(i);let a=async()=>await i.goto(n,{timeout:r}),o;try{o=await a()}catch(n){if(!t(n))throw n;await U({cdpUrl:e.cdpUrl,targetId:e.targetId,reason:`retry navigate after detached frame`}).catch(()=>{}),i=await V(e),N(i),o=await a()}await u({request:o?.request(),...m(e.ssrfPolicy)});let s=i.url();return await g({url:s,...m(e.ssrfPolicy)}),{url:s}}async function bt(e){let t=await V(e);N(t),await t.setViewportSize({width:Math.max(1,Math.floor(e.width)),height:Math.max(1,Math.floor(e.height))})}async function xt(e){let t=await V(e);N(t),await t.close()}async function St(e){let t=await V(e);return N(t),{buffer:await t.pdf({printBackground:!0})}}async function Ct(e){let t=await V(e);N(t),await t.context().setOffline(!!e.offline)}async function wt(e){let t=await V(e);N(t),await t.context().setExtraHTTPHeaders(e.headers)}async function Tt(e){let t=await V(e);if(N(t),e.clear){await t.context().setHTTPCredentials(null);return}let n=String(e.username??``),r=String(e.password??``);if(!n)throw Error(`username is required (or set clear=true)`);await t.context().setHTTPCredentials({username:n,password:r})}async function Et(e){let t=await V(e);N(t);let n=t.context();if(e.clear){await n.setGeolocation(null),await n.clearPermissions().catch(()=>{});return}if(typeof e.latitude!=`number`||typeof e.longitude!=`number`)throw Error(`latitude and longitude are required (or set clear=true)`);await n.setGeolocation({latitude:e.latitude,longitude:e.longitude,accuracy:typeof e.accuracy==`number`?e.accuracy:void 0});let r=e.origin?.trim()||(()=>{try{return new URL(t.url()).origin}catch{return``}})();r&&await n.grantPermissions([`geolocation`],{origin:r}).catch(()=>{})}async function Dt(e){let t=await V(e);N(t),await t.emulateMedia({colorScheme:e.colorScheme})}async function Ot(e){let t=await V(e);N(t);let n=String(e.locale??``).trim();if(!n)throw Error(`locale is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setLocaleOverride`,{locale:n})}catch(e){if(String(e).includes(`Another locale override is already in effect`))return;throw e}}})}async function kt(e){let t=await V(e);N(t);let n=String(e.timezoneId??``).trim();if(!n)throw Error(`timezoneId is required`);await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{try{await e(`Emulation.setTimezoneOverride`,{timezoneId:n})}catch(e){let t=String(e);if(t.includes(`Timezone override is already in effect`))return;throw t.includes(`Invalid timezone`)?Error(`Invalid timezone ID: ${n}`,{cause:e}):e}}})}async function At(e){let t=await V(e);N(t);let n=String(e.name??``).trim();if(!n)throw Error(`device name is required`);let r=ie[n];if(!r)throw Error(`Unknown device "${n}".`);r.viewport&&await t.setViewportSize({width:r.viewport.width,height:r.viewport.height}),await C({cdpUrl:e.cdpUrl,page:t,targetId:e.targetId,fn:async e=>{(r.userAgent||r.locale)&&await e(`Emulation.setUserAgentOverride`,{userAgent:r.userAgent??``,acceptLanguage:r.locale??void 0}),r.viewport&&await e(`Emulation.setDeviceMetricsOverride`,{mobile:!!r.isMobile,width:r.viewport.width,height:r.viewport.height,deviceScaleFactor:r.deviceScaleFactor??1,screenWidth:r.viewport.width,screenHeight:r.viewport.height}),r.hasTouch&&await e(`Emulation.setTouchEmulationEnabled`,{enabled:!0})}})}async function jt(e){let t=await V(e);return N(t),{cookies:await t.context().cookies()}}async function Mt(e){let t=await V(e);N(t);let n=e.cookie;if(!n.name||n.value===void 0)throw Error(`cookie name and value are required`);let r=typeof n.url==`string`&&n.url.trim(),i=typeof n.domain==`string`&&n.domain.trim()&&typeof n.path==`string`&&n.path.trim();if(!r&&!i)throw Error(`cookie requires url, or domain+path`);await t.context().addCookies([n])}async function Nt(e){let t=await V(e);N(t),await t.context().clearCookies()}async function Pt(e){let t=await V(e);N(t);let n=e.kind,r=typeof e.key==`string`?e.key:void 0;return{values:await t.evaluate(({kind:e,key:t})=>{let n=e===`session`?window.sessionStorage:window.localStorage;if(t){let e=n.getItem(t);return e===null?{}:{[t]:e}}let r={};for(let e=0;e<n.length;e+=1){let t=n.key(e);if(!t)continue;let i=n.getItem(t);i!==null&&(r[t]=i)}return r},{kind:n,key:r})??{}}}async function Ft(e){let t=await V(e);N(t);let n=String(e.key??``);if(!n)throw Error(`key is required`);await t.evaluate(({kind:e,key:t,value:n})=>{(e===`session`?window.sessionStorage:window.localStorage).setItem(t,n)},{kind:e.kind,key:n,value:String(e.value??``)})}async function It(e){let t=await V(e);N(t),await t.evaluate(({kind:e})=>{(e===`session`?window.sessionStorage:window.localStorage).clear()},{kind:e.kind})}async function Lt(e){let t=(await V(e)).context(),n=P(t);if(n.traceActive)throw Error(`Trace already running. Stop the current trace before starting a new one.`);await t.tracing.start({screenshots:e.screenshots??!0,snapshots:e.snapshots??!0,sources:e.sources??!1}),n.traceActive=!0}async function Rt(e){let t=(await V(e)).context(),n=P(t);if(!n.traceActive)throw Error(`No active trace. Start a trace before stopping it.`);await De({rootDir:h,targetPath:e.path,writeTemp:async e=>{await t.tracing.stop({path:e})}}),n.traceActive=!1}s();export{Ze as armDialogViaPlaywright,Xe as armFileUploadViaPlaywright,tt as clickViaPlaywright,be as closePageByTargetIdViaPlaywright,xt as closePageViaPlaywright,he as closePlaywrightBrowserConnection,Nt as cookiesClearViaPlaywright,jt as cookiesGetViaPlaywright,Mt as cookiesSetViaPlaywright,ye as createPageViaPlaywright,$e as downloadViaPlaywright,rt as dragViaPlaywright,Dt as emulateMediaViaPlaywright,N as ensurePageState,ct as evaluateViaPlaywright,st as fillFormViaPlaywright,xe as focusPageByTargetIdViaPlaywright,U as forceDisconnectPlaywrightForTarget,we as getConsoleMessagesViaPlaywright,Ce as getNetworkRequestsViaPlaywright,Se as getPageErrorsViaPlaywright,V as getPageForTargetId,et as highlightViaPlaywright,nt as hoverViaPlaywright,ve as listPagesViaPlaywright,yt as navigateViaPlaywright,St as pdfViaPlaywright,at as pressKeyViaPlaywright,H as refLocator,bt as resizeViewportViaPlaywright,ht as responseBodyViaPlaywright,ft as screenshotWithLabelsViaPlaywright,lt as scrollIntoViewViaPlaywright,it as selectOptionViaPlaywright,At as setDeviceViaPlaywright,wt as setExtraHTTPHeadersViaPlaywright,Et as setGeolocationViaPlaywright,Tt as setHttpCredentialsViaPlaywright,pt as setInputFilesViaPlaywright,Ot as setLocaleViaPlaywright,Ct as setOfflineViaPlaywright,kt as setTimezoneViaPlaywright,_t as snapshotAiViaPlaywright,gt as snapshotAriaViaPlaywright,vt as snapshotRoleViaPlaywright,It as storageClearViaPlaywright,Pt as storageGetViaPlaywright,Ft as storageSetViaPlaywright,dt as takeScreenshotViaPlaywright,Lt as traceStartViaPlaywright,Rt as traceStopViaPlaywright,ot as typeViaPlaywright,Qe as waitForDownloadViaPlaywright,ut as waitForViaPlaywright};
|
|
@@ -2,4 +2,4 @@ import{W as e,Wt as t,c as n,k as r,l as i}from"./paths-piJASC5k.js";import{c as
|
|
|
2
2
|
`),a=Math.max(1,e.from??1),o=Math.max(1,e.lines??i.length);return{text:i.slice(a-1,a-1+o).join(`
|
|
3
3
|
`),path:t}}status(){let e=this.readCounts();return{backend:`qmd`,provider:`qmd`,model:`qmd`,requestedProvider:`qmd`,files:e.totalDocuments,chunks:e.totalDocuments,dirty:!1,workspaceDir:this.workspaceDir,dbPath:this.indexPath,sources:Array.from(this.sources),sourceCounts:e.sourceCounts,vector:{enabled:!0,available:!0},batch:{enabled:!1,failures:0,limit:0,wait:!1,concurrency:0,pollIntervalMs:0,timeoutMs:0},custom:{qmd:{collections:this.qmd.collections.length,lastUpdateAt:this.lastUpdateAt}}}}async probeEmbeddingAvailability(){return{ok:!0}}async probeVectorAvailability(){return!0}async close(){this.closed||(this.closed=!0,this.updateTimer&&=(clearInterval(this.updateTimer),null),this.queuedForcedRuns=0,await this.pendingUpdate?.catch(()=>void 0),await this.queuedForcedUpdate?.catch(()=>void 0),this.db&&=(this.db.close(),null))}async runUpdate(e,t,n){if(!this.closed){if(this.pendingUpdate)return t?this.enqueueForcedUpdate(e):this.pendingUpdate;if(this.queuedForcedUpdate&&!n?.fromForcedQueue)return t?this.enqueueForcedUpdate(e):this.queuedForcedUpdate;this.shouldSkipUpdate(t)||(this.pendingUpdate=(async()=>{if(this.sessionExporter&&await this.exportSessions(),await this.runQmdUpdateWithRetry(e),this.shouldRunEmbed(t))try{await H(async()=>{await this.runQmd([`embed`],{timeoutMs:this.qmd.update.embedTimeoutMs,discardOutput:!0})}),this.lastEmbedAt=Date.now(),this.embedBackoffUntil=null,this.embedFailureCount=0}catch(t){this.noteEmbedFailure(e,t)}this.lastUpdateAt=Date.now(),this.docPathCache.clear()})().finally(()=>{this.pendingUpdate=null}),await this.pendingUpdate)}}async runQmdUpdateWithRetry(e){let t=e===`boot`||e.startsWith(`boot:`)?3:1;for(let n=1;n<=t;n+=1)try{await this.runQmdUpdateOnce(e);return}catch(r){if(n>=t||!this.isRetryableUpdateError(r))throw r;let i=500*2**(n-1);F.warn(`qmd update retry ${n}/${t-1} after failure (${e}): ${String(r)}`),await new Promise(e=>setTimeout(e,i))}}async runQmdUpdateOnce(e){try{await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}catch(t){if(!await this.tryRepairNullByteCollections(t,e)&&!await this.tryRepairDuplicateDocumentConstraint(t,e))throw t;await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}}isRetryableUpdateError(e){return this.isSqliteBusyError(e)?!0:(e instanceof Error?e.message:String(e)).toLowerCase().includes(`timed out`)}shouldRunEmbed(e){if(this.qmd.searchMode===`search`)return!1;let t=Date.now();if(this.embedBackoffUntil!==null&&t<this.embedBackoffUntil)return!1;let n=this.qmd.update.embedIntervalMs;return!!e||this.lastEmbedAt===null||n>0&&t-this.lastEmbedAt>n}noteEmbedFailure(e,t){this.embedFailureCount+=1;let n=Math.min(36e5,6e4*2**Math.max(0,this.embedFailureCount-1));this.embedBackoffUntil=Date.now()+n,F.warn(`qmd embed failed (${e}): ${String(t)}; backing off for ${Math.ceil(n/1e3)}s`)}enqueueForcedUpdate(e){return this.queuedForcedRuns+=1,this.queuedForcedUpdate||=this.drainForcedUpdates(e).finally(()=>{this.queuedForcedUpdate=null}),this.queuedForcedUpdate}async drainForcedUpdates(e){for(await this.pendingUpdate?.catch(()=>void 0);!this.closed&&this.queuedForcedRuns>0;)--this.queuedForcedRuns,await this.runUpdate(`${e}:queued`,!0,{fromForcedQueue:!0})}async symlinkSharedModels(){let e=process.env.XDG_CACHE_HOME||(process.platform===`win32`?process.env.LOCALAPPDATA:void 0)||p.join(m.homedir(),`.cache`),t=p.join(e,`qmd`,`models`),n=p.join(this.xdgCacheHome,`qmd`,`models`);try{if(!(await h.stat(t).catch(e=>{if(e.code===`ENOENT`)return null;throw e}))?.isDirectory())return;try{await h.lstat(n);return}catch{}try{await h.symlink(t,n,`dir`)}catch(e){let r=e.code;if(process.platform===`win32`&&(r===`EPERM`||r===`ENOTSUP`))await h.symlink(t,n,`junction`);else throw e}F.debug(`symlinked qmd models: ${t} → ${n}`)}catch(e){F.warn(`failed to symlink qmd models directory: ${String(e)}`)}}async runQmd(e,t){return await x({commandSummary:`qmd ${e.join(` `)}`,spawnInvocation:y({command:this.qmd.command,args:e,env:this.env,packageName:`qmd`}),env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars,discardStdout:t?.discardOutput})}async ensureMcporterDaemonStarted(e){if(!e.enabled)return;if(!e.startDaemon){let e=globalThis;e.__openclawMcporterColdStartWarned||(e.__openclawMcporterColdStartWarned=!0,F.warn(`mcporter qmd bridge enabled but startDaemon=false; each query may cold-start QMD MCP. Consider setting memory.qmd.mcporter.startDaemon=true to keep it warm.`));return}let t=globalThis;t.__openclawMcporterDaemonStart||=(async()=>{try{await this.runMcporter([`daemon`,`start`],{timeoutMs:1e4})}catch(e){F.warn(`mcporter daemon start failed: ${String(e)}`),delete t.__openclawMcporterDaemonStart}})(),await t.__openclawMcporterDaemonStart}async runMcporter(e,t){let n=async e=>await x({commandSummary:`${e.command} ${e.argv.join(` `)}`,spawnInvocation:e,env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars}),r=y({command:`mcporter`,args:e,env:this.env,packageName:`mcporter`});try{return await n(r)}catch(t){if(!b({err:t,command:r.command,commandBase:`mcporter`}))throw t;return F.warn(`mcporter.cmd spawn returned EINVAL on Windows; retrying with bare mcporter`),await n({command:`mcporter`,argv:e,shell:!0,windowsHide:!0})}}async runQmdSearchViaMcporter(e){await this.ensureMcporterDaemonStarted(e.mcporter);let t=`${e.mcporter.serverName}.${e.tool}`,n={query:e.query,limit:e.limit,minScore:e.minScore};e.collection&&(n.collection=e.collection);let r=await this.runMcporter([`call`,t,`--args`,JSON.stringify(n),`--output`,`json`,`--timeout`,String(Math.max(0,e.timeoutMs))],{timeoutMs:Math.max(e.timeoutMs+2e3,5e3)}),i=JSON.parse(r.stdout),a=e=>typeof e==`object`&&!!e&&!Array.isArray(e),o=a(i)&&a(i.structuredContent)?i.structuredContent:i,s=a(o)&&Array.isArray(o.results)?o.results:Array.isArray(o)?o:[],c=[];for(let e of s){if(!a(e))continue;let t=e.docid,n=typeof t==`string`?t.replace(/^#/,``).trim():``;if(!n)continue;let r=e.score,i=typeof r==`number`?r:Number(r),o=typeof e.snippet==`string`?e.snippet:``;c.push({docid:n,score:Number.isFinite(i)?i:0,snippet:o})}return c}async readPartialText(e,t,n){let r=Math.max(1,t??1),i=Math.max(1,n??1/0),a;try{a=await h.open(e)}catch(e){if(s(e))return{missing:!0};throw e}let o=a.createReadStream({encoding:`utf-8`}),c=_.createInterface({input:o,crlfDelay:1/0}),l=[],u=0;try{for await(let e of c)if(u+=1,!(u<r)){if(l.length>=i)break;l.push(e)}}finally{c.close(),await a.close()}return{missing:!1,text:l.slice(0,i).join(`
|
|
4
4
|
`)}}async readFullText(e){try{return{missing:!1,text:await h.readFile(e,`utf-8`)}}catch(e){if(s(e))return{missing:!0};throw e}}ensureDb(){if(this.db)return this.db;let{DatabaseSync:e}=u();return this.db=new e(this.indexPath,{readOnly:!0}),this.db.exec(`PRAGMA busy_timeout = 1000`),this.db}async exportSessions(){if(!this.sessionExporter)return;let e=this.sessionExporter.dir;await h.mkdir(e,{recursive:!0});let t=await c(this.agentId),n=new Set,i=new Set,a=this.sessionExporter.retentionMs?Date.now()-this.sessionExporter.retentionMs:null;for(let o of t){let t=await l(o);if(!t||a&&t.mtimeMs<a)continue;let s=`${p.basename(o,`.jsonl`)}.md`,c=p.join(e,s);i.add(o);let u=this.exportedSessionState.get(o);(!u||u.hash!==t.hash||u.mtimeMs!==t.mtimeMs)&&await r({rootDir:e,relativePath:s,data:this.renderSessionMarkdown(t),encoding:`utf-8`}),this.exportedSessionState.set(o,{hash:t.hash,mtimeMs:t.mtimeMs,target:c}),n.add(c)}let o=await h.readdir(e).catch(()=>[]);for(let t of o){if(!t.endsWith(`.md`))continue;let r=p.join(e,t);n.has(r)||await h.rm(r,{force:!0})}for(let[t,n]of this.exportedSessionState)(!i.has(t)||!n.target.startsWith(e+p.sep))&&this.exportedSessionState.delete(t)}renderSessionMarkdown(e){return`${`# Session ${p.basename(e.absPath,p.extname(e.absPath))}`}\n\n${e.content?.trim().length?e.content.trim():`(empty)`}\n`}pickSessionCollectionName(){let e=new Set(this.qmd.collections.map(e=>e.name)),t=`sessions-${this.sanitizeCollectionNameSegment(this.agentId)}`;if(!e.has(t))return t;let n=2,r=`${t}-${n}`;for(;e.has(r);)n+=1,r=`${t}-${n}`;return r}sanitizeCollectionNameSegment(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``)||`agent`}async resolveDocLocation(e,t){let n=this.normalizeDocHints(t);if(!e)return this.resolveDocLocationFromHints(n);let r=e.startsWith(`#`)?e.slice(1):e;if(!r)return null;let i=`${n.preferredCollection??`*`}:${r}`,a=this.docPathCache.get(i);if(a)return a;let o=this.ensureDb(),s=[];try{s=o.prepare(`SELECT collection, path FROM documents WHERE hash = ? AND active = 1`).all(r),s.length===0&&(s=o.prepare(`SELECT collection, path FROM documents WHERE hash LIKE ? AND active = 1`).all(`${r}%`))}catch(e){throw this.isSqliteBusyError(e)?(F.debug(`qmd index is busy while resolving doc path: ${String(e)}`),this.createQmdBusyError(e)):e}if(s.length===0)return null;let c=this.pickDocLocation(s,n);return c?(this.docPathCache.set(i,c),c):null}resolveDocLocationFromHints(e){if(!e.preferredCollection||!e.preferredFile)return null;let t=this.toCollectionRelativePath(e.preferredCollection,e.preferredFile);return t?this.toDocLocation(e.preferredCollection,t):null}normalizeDocHints(e){let t=e?.preferredCollection?.trim(),n=e?.preferredFile?.trim();if(!n)return t?{preferredCollection:t}:{};let r=this.parseQmdFileUri(n);return{preferredCollection:r?.collection??t,preferredFile:r?.collectionRelativePath??n}}parseQmdFileUri(e){if(!e.toLowerCase().startsWith(`qmd://`))return null;try{let t=new URL(e),n=decodeURIComponent(t.hostname).trim(),r=decodeURIComponent(t.pathname).replace(/^\/+/,``).trim();return!n&&!r?null:{collection:n||void 0,collectionRelativePath:r||void 0}}catch{return null}}toCollectionRelativePath(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.trim();if(!r)return null;let i=p.normalize(r),a=p.isAbsolute(i)?i:p.resolve(n.path,i);if(!this.isWithinRoot(n.path,a))return null;let o=p.relative(n.path,a);return!o||o===`.`?null:o.replace(/\\/g,`/`)}pickDocLocation(e,t){if(t?.preferredCollection)for(let n of e){if(n.collection!==t.preferredCollection)continue;let e=this.toDocLocation(n.collection,n.path);if(e)return e}if(t?.preferredFile){let n=p.normalize(t.preferredFile);for(let t of e){let e=p.normalize(t.path);if(e!==n&&!e.endsWith(p.sep+n))continue;let r=this.toDocLocation(t.collection,t.path);if(r)return r}}for(let t of e){let e=this.toDocLocation(t.collection,t.path);if(e)return e}return null}extractSnippetLines(e){let t=I.exec(e);if(t){let e=Number(t[1]),n=Number(t[2]);if(Number.isFinite(e)&&Number.isFinite(n))return{startLine:e,endLine:e+n-1}}return{startLine:1,endLine:e.split(`
|
|
5
|
-
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=p.normalize(p.resolve(n.path,t)),a=p.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||p.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${p.sep}`)?!1:!p.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=p.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=p.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(p.sep)?this.workspaceDir:`${this.workspaceDir}${p.sep}`;return e===this.workspaceDir?!0:(e.endsWith(p.sep)?e:`${e}${p.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(p.sep)?e:`${e}${p.sep}`;return t===e?!0:(t.endsWith(p.sep)?t:`${t}${p.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
5
|
+
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=p.normalize(p.resolve(n.path,t)),a=p.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||p.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${p.sep}`)?!1:!p.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=p.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=p.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(p.sep)?this.workspaceDir:`${this.workspaceDir}${p.sep}`;return e===this.workspaceDir?!0:(e.endsWith(p.sep)?e:`${e}${p.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(p.sep)?e:`${e}${p.sep}`;return t===e?!0:(t.endsWith(p.sep)?t:`${t}${p.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
@@ -2,4 +2,4 @@ import{t as e}from"./subsystem-BLbY429l.js";import{g as t}from"./paths-BjD3T_xq.
|
|
|
2
2
|
`),a=Math.max(1,e.from??1),o=Math.max(1,e.lines??i.length);return{text:i.slice(a-1,a-1+o).join(`
|
|
3
3
|
`),path:t}}status(){let e=this.readCounts();return{backend:`qmd`,provider:`qmd`,model:`qmd`,requestedProvider:`qmd`,files:e.totalDocuments,chunks:e.totalDocuments,dirty:!1,workspaceDir:this.workspaceDir,dbPath:this.indexPath,sources:Array.from(this.sources),sourceCounts:e.sourceCounts,vector:{enabled:!0,available:!0},batch:{enabled:!1,failures:0,limit:0,wait:!1,concurrency:0,pollIntervalMs:0,timeoutMs:0},custom:{qmd:{collections:this.qmd.collections.length,lastUpdateAt:this.lastUpdateAt}}}}async probeEmbeddingAvailability(){return{ok:!0}}async probeVectorAvailability(){return!0}async close(){this.closed||(this.closed=!0,this.updateTimer&&=(clearInterval(this.updateTimer),null),this.queuedForcedRuns=0,await this.pendingUpdate?.catch(()=>void 0),await this.queuedForcedUpdate?.catch(()=>void 0),this.db&&=(this.db.close(),null))}async runUpdate(e,t,n){if(!this.closed){if(this.pendingUpdate)return t?this.enqueueForcedUpdate(e):this.pendingUpdate;if(this.queuedForcedUpdate&&!n?.fromForcedQueue)return t?this.enqueueForcedUpdate(e):this.queuedForcedUpdate;this.shouldSkipUpdate(t)||(this.pendingUpdate=(async()=>{if(this.sessionExporter&&await this.exportSessions(),await this.runQmdUpdateWithRetry(e),this.shouldRunEmbed(t))try{await H(async()=>{await this.runQmd([`embed`],{timeoutMs:this.qmd.update.embedTimeoutMs,discardOutput:!0})}),this.lastEmbedAt=Date.now(),this.embedBackoffUntil=null,this.embedFailureCount=0}catch(t){this.noteEmbedFailure(e,t)}this.lastUpdateAt=Date.now(),this.docPathCache.clear()})().finally(()=>{this.pendingUpdate=null}),await this.pendingUpdate)}}async runQmdUpdateWithRetry(e){let t=e===`boot`||e.startsWith(`boot:`)?3:1;for(let n=1;n<=t;n+=1)try{await this.runQmdUpdateOnce(e);return}catch(r){if(n>=t||!this.isRetryableUpdateError(r))throw r;let i=500*2**(n-1);F.warn(`qmd update retry ${n}/${t-1} after failure (${e}): ${String(r)}`),await new Promise(e=>setTimeout(e,i))}}async runQmdUpdateOnce(e){try{await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}catch(t){if(!await this.tryRepairNullByteCollections(t,e)&&!await this.tryRepairDuplicateDocumentConstraint(t,e))throw t;await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}}isRetryableUpdateError(e){return this.isSqliteBusyError(e)?!0:(e instanceof Error?e.message:String(e)).toLowerCase().includes(`timed out`)}shouldRunEmbed(e){if(this.qmd.searchMode===`search`)return!1;let t=Date.now();if(this.embedBackoffUntil!==null&&t<this.embedBackoffUntil)return!1;let n=this.qmd.update.embedIntervalMs;return!!e||this.lastEmbedAt===null||n>0&&t-this.lastEmbedAt>n}noteEmbedFailure(e,t){this.embedFailureCount+=1;let n=Math.min(36e5,6e4*2**Math.max(0,this.embedFailureCount-1));this.embedBackoffUntil=Date.now()+n,F.warn(`qmd embed failed (${e}): ${String(t)}; backing off for ${Math.ceil(n/1e3)}s`)}enqueueForcedUpdate(e){return this.queuedForcedRuns+=1,this.queuedForcedUpdate||=this.drainForcedUpdates(e).finally(()=>{this.queuedForcedUpdate=null}),this.queuedForcedUpdate}async drainForcedUpdates(e){for(await this.pendingUpdate?.catch(()=>void 0);!this.closed&&this.queuedForcedRuns>0;)--this.queuedForcedRuns,await this.runUpdate(`${e}:queued`,!0,{fromForcedQueue:!0})}async symlinkSharedModels(){let e=process.env.XDG_CACHE_HOME||(process.platform===`win32`?process.env.LOCALAPPDATA:void 0)||h.join(m.homedir(),`.cache`),t=h.join(e,`qmd`,`models`),n=h.join(this.xdgCacheHome,`qmd`,`models`);try{if(!(await g.stat(t).catch(e=>{if(e.code===`ENOENT`)return null;throw e}))?.isDirectory())return;try{await g.lstat(n);return}catch{}try{await g.symlink(t,n,`dir`)}catch(e){let r=e.code;if(process.platform===`win32`&&(r===`EPERM`||r===`ENOTSUP`))await g.symlink(t,n,`junction`);else throw e}F.debug(`symlinked qmd models: ${t} → ${n}`)}catch(e){F.warn(`failed to symlink qmd models directory: ${String(e)}`)}}async runQmd(e,t){return await x({commandSummary:`qmd ${e.join(` `)}`,spawnInvocation:y({command:this.qmd.command,args:e,env:this.env,packageName:`qmd`}),env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars,discardStdout:t?.discardOutput})}async ensureMcporterDaemonStarted(e){if(!e.enabled)return;if(!e.startDaemon){let e=globalThis;e.__openclawMcporterColdStartWarned||(e.__openclawMcporterColdStartWarned=!0,F.warn(`mcporter qmd bridge enabled but startDaemon=false; each query may cold-start QMD MCP. Consider setting memory.qmd.mcporter.startDaemon=true to keep it warm.`));return}let t=globalThis;t.__openclawMcporterDaemonStart||=(async()=>{try{await this.runMcporter([`daemon`,`start`],{timeoutMs:1e4})}catch(e){F.warn(`mcporter daemon start failed: ${String(e)}`),delete t.__openclawMcporterDaemonStart}})(),await t.__openclawMcporterDaemonStart}async runMcporter(e,t){let n=async e=>await x({commandSummary:`${e.command} ${e.argv.join(` `)}`,spawnInvocation:e,env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars}),r=y({command:`mcporter`,args:e,env:this.env,packageName:`mcporter`});try{return await n(r)}catch(t){if(!b({err:t,command:r.command,commandBase:`mcporter`}))throw t;return F.warn(`mcporter.cmd spawn returned EINVAL on Windows; retrying with bare mcporter`),await n({command:`mcporter`,argv:e,shell:!0,windowsHide:!0})}}async runQmdSearchViaMcporter(e){await this.ensureMcporterDaemonStarted(e.mcporter);let t=`${e.mcporter.serverName}.${e.tool}`,n={query:e.query,limit:e.limit,minScore:e.minScore};e.collection&&(n.collection=e.collection);let r=await this.runMcporter([`call`,t,`--args`,JSON.stringify(n),`--output`,`json`,`--timeout`,String(Math.max(0,e.timeoutMs))],{timeoutMs:Math.max(e.timeoutMs+2e3,5e3)}),i=JSON.parse(r.stdout),a=e=>typeof e==`object`&&!!e&&!Array.isArray(e),o=a(i)&&a(i.structuredContent)?i.structuredContent:i,s=a(o)&&Array.isArray(o.results)?o.results:Array.isArray(o)?o:[],c=[];for(let e of s){if(!a(e))continue;let t=e.docid,n=typeof t==`string`?t.replace(/^#/,``).trim():``;if(!n)continue;let r=e.score,i=typeof r==`number`?r:Number(r),o=typeof e.snippet==`string`?e.snippet:``;c.push({docid:n,score:Number.isFinite(i)?i:0,snippet:o})}return c}async readPartialText(e,t,n){let r=Math.max(1,t??1),i=Math.max(1,n??1/0),a;try{a=await g.open(e)}catch(e){if(f(e))return{missing:!0};throw e}let o=a.createReadStream({encoding:`utf-8`}),s=_.createInterface({input:o,crlfDelay:1/0}),c=[],l=0;try{for await(let e of s)if(l+=1,!(l<r)){if(c.length>=i)break;c.push(e)}}finally{s.close(),await a.close()}return{missing:!1,text:c.slice(0,i).join(`
|
|
4
4
|
`)}}async readFullText(e){try{return{missing:!1,text:await g.readFile(e,`utf-8`)}}catch(e){if(f(e))return{missing:!0};throw e}}ensureDb(){if(this.db)return this.db;let{DatabaseSync:e}=d();return this.db=new e(this.indexPath,{readOnly:!0}),this.db.exec(`PRAGMA busy_timeout = 1000`),this.db}async exportSessions(){if(!this.sessionExporter)return;let e=this.sessionExporter.dir;await g.mkdir(e,{recursive:!0});let t=await u(this.agentId),n=new Set,r=new Set,a=this.sessionExporter.retentionMs?Date.now()-this.sessionExporter.retentionMs:null;for(let o of t){let t=await l(o);if(!t||a&&t.mtimeMs<a)continue;let s=`${h.basename(o,`.jsonl`)}.md`,c=h.join(e,s);r.add(o);let u=this.exportedSessionState.get(o);(!u||u.hash!==t.hash||u.mtimeMs!==t.mtimeMs)&&await i({rootDir:e,relativePath:s,data:this.renderSessionMarkdown(t),encoding:`utf-8`}),this.exportedSessionState.set(o,{hash:t.hash,mtimeMs:t.mtimeMs,target:c}),n.add(c)}let o=await g.readdir(e).catch(()=>[]);for(let t of o){if(!t.endsWith(`.md`))continue;let r=h.join(e,t);n.has(r)||await g.rm(r,{force:!0})}for(let[t,n]of this.exportedSessionState)(!r.has(t)||!n.target.startsWith(e+h.sep))&&this.exportedSessionState.delete(t)}renderSessionMarkdown(e){return`${`# Session ${h.basename(e.absPath,h.extname(e.absPath))}`}\n\n${e.content?.trim().length?e.content.trim():`(empty)`}\n`}pickSessionCollectionName(){let e=new Set(this.qmd.collections.map(e=>e.name)),t=`sessions-${this.sanitizeCollectionNameSegment(this.agentId)}`;if(!e.has(t))return t;let n=2,r=`${t}-${n}`;for(;e.has(r);)n+=1,r=`${t}-${n}`;return r}sanitizeCollectionNameSegment(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``)||`agent`}async resolveDocLocation(e,t){let n=this.normalizeDocHints(t);if(!e)return this.resolveDocLocationFromHints(n);let r=e.startsWith(`#`)?e.slice(1):e;if(!r)return null;let i=`${n.preferredCollection??`*`}:${r}`,a=this.docPathCache.get(i);if(a)return a;let o=this.ensureDb(),s=[];try{s=o.prepare(`SELECT collection, path FROM documents WHERE hash = ? AND active = 1`).all(r),s.length===0&&(s=o.prepare(`SELECT collection, path FROM documents WHERE hash LIKE ? AND active = 1`).all(`${r}%`))}catch(e){throw this.isSqliteBusyError(e)?(F.debug(`qmd index is busy while resolving doc path: ${String(e)}`),this.createQmdBusyError(e)):e}if(s.length===0)return null;let c=this.pickDocLocation(s,n);return c?(this.docPathCache.set(i,c),c):null}resolveDocLocationFromHints(e){if(!e.preferredCollection||!e.preferredFile)return null;let t=this.toCollectionRelativePath(e.preferredCollection,e.preferredFile);return t?this.toDocLocation(e.preferredCollection,t):null}normalizeDocHints(e){let t=e?.preferredCollection?.trim(),n=e?.preferredFile?.trim();if(!n)return t?{preferredCollection:t}:{};let r=this.parseQmdFileUri(n);return{preferredCollection:r?.collection??t,preferredFile:r?.collectionRelativePath??n}}parseQmdFileUri(e){if(!e.toLowerCase().startsWith(`qmd://`))return null;try{let t=new URL(e),n=decodeURIComponent(t.hostname).trim(),r=decodeURIComponent(t.pathname).replace(/^\/+/,``).trim();return!n&&!r?null:{collection:n||void 0,collectionRelativePath:r||void 0}}catch{return null}}toCollectionRelativePath(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.trim();if(!r)return null;let i=h.normalize(r),a=h.isAbsolute(i)?i:h.resolve(n.path,i);if(!this.isWithinRoot(n.path,a))return null;let o=h.relative(n.path,a);return!o||o===`.`?null:o.replace(/\\/g,`/`)}pickDocLocation(e,t){if(t?.preferredCollection)for(let n of e){if(n.collection!==t.preferredCollection)continue;let e=this.toDocLocation(n.collection,n.path);if(e)return e}if(t?.preferredFile){let n=h.normalize(t.preferredFile);for(let t of e){let e=h.normalize(t.path);if(e!==n&&!e.endsWith(h.sep+n))continue;let r=this.toDocLocation(t.collection,t.path);if(r)return r}}for(let t of e){let e=this.toDocLocation(t.collection,t.path);if(e)return e}return null}extractSnippetLines(e){let t=I.exec(e);if(t){let e=Number(t[1]),n=Number(t[2]);if(Number.isFinite(e)&&Number.isFinite(n))return{startLine:e,endLine:e+n-1}}return{startLine:1,endLine:e.split(`
|
|
5
|
-
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=h.normalize(h.resolve(n.path,t)),a=h.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||h.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${h.sep}`)?!1:!h.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=h.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=h.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(h.sep)?this.workspaceDir:`${this.workspaceDir}${h.sep}`;return e===this.workspaceDir?!0:(e.endsWith(h.sep)?e:`${e}${h.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(h.sep)?e:`${e}${h.sep}`;return t===e?!0:(t.endsWith(h.sep)?t:`${t}${h.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
5
|
+
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=h.normalize(h.resolve(n.path,t)),a=h.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||h.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${h.sep}`)?!1:!h.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=h.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=h.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(h.sep)?this.workspaceDir:`${this.workspaceDir}${h.sep}`;return e===this.workspaceDir?!0:(e.endsWith(h.sep)?e:`${e}${h.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(h.sep)?e:`${e}${h.sep}`;return t===e?!0:(t.endsWith(h.sep)?t:`${t}${h.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
@@ -2,4 +2,4 @@ import{G as e,c as t,k as n,l as r}from"./paths-CrCoPIVK.js";import{c as i}from"
|
|
|
2
2
|
`),a=Math.max(1,e.from??1),o=Math.max(1,e.lines??i.length);return{text:i.slice(a-1,a-1+o).join(`
|
|
3
3
|
`),path:t}}status(){let e=this.readCounts();return{backend:`qmd`,provider:`qmd`,model:`qmd`,requestedProvider:`qmd`,files:e.totalDocuments,chunks:e.totalDocuments,dirty:!1,workspaceDir:this.workspaceDir,dbPath:this.indexPath,sources:Array.from(this.sources),sourceCounts:e.sourceCounts,vector:{enabled:!0,available:!0},batch:{enabled:!1,failures:0,limit:0,wait:!1,concurrency:0,pollIntervalMs:0,timeoutMs:0},custom:{qmd:{collections:this.qmd.collections.length,lastUpdateAt:this.lastUpdateAt}}}}async probeEmbeddingAvailability(){return{ok:!0}}async probeVectorAvailability(){return!0}async close(){this.closed||(this.closed=!0,this.updateTimer&&=(clearInterval(this.updateTimer),null),this.queuedForcedRuns=0,await this.pendingUpdate?.catch(()=>void 0),await this.queuedForcedUpdate?.catch(()=>void 0),this.db&&=(this.db.close(),null))}async runUpdate(e,t,n){if(!this.closed){if(this.pendingUpdate)return t?this.enqueueForcedUpdate(e):this.pendingUpdate;if(this.queuedForcedUpdate&&!n?.fromForcedQueue)return t?this.enqueueForcedUpdate(e):this.queuedForcedUpdate;this.shouldSkipUpdate(t)||(this.pendingUpdate=(async()=>{if(this.sessionExporter&&await this.exportSessions(),await this.runQmdUpdateWithRetry(e),this.shouldRunEmbed(t))try{await H(async()=>{await this.runQmd([`embed`],{timeoutMs:this.qmd.update.embedTimeoutMs,discardOutput:!0})}),this.lastEmbedAt=Date.now(),this.embedBackoffUntil=null,this.embedFailureCount=0}catch(t){this.noteEmbedFailure(e,t)}this.lastUpdateAt=Date.now(),this.docPathCache.clear()})().finally(()=>{this.pendingUpdate=null}),await this.pendingUpdate)}}async runQmdUpdateWithRetry(e){let t=e===`boot`||e.startsWith(`boot:`)?3:1;for(let n=1;n<=t;n+=1)try{await this.runQmdUpdateOnce(e);return}catch(r){if(n>=t||!this.isRetryableUpdateError(r))throw r;let i=500*2**(n-1);F.warn(`qmd update retry ${n}/${t-1} after failure (${e}): ${String(r)}`),await new Promise(e=>setTimeout(e,i))}}async runQmdUpdateOnce(e){try{await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}catch(t){if(!await this.tryRepairNullByteCollections(t,e)&&!await this.tryRepairDuplicateDocumentConstraint(t,e))throw t;await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}}isRetryableUpdateError(e){return this.isSqliteBusyError(e)?!0:(e instanceof Error?e.message:String(e)).toLowerCase().includes(`timed out`)}shouldRunEmbed(e){if(this.qmd.searchMode===`search`)return!1;let t=Date.now();if(this.embedBackoffUntil!==null&&t<this.embedBackoffUntil)return!1;let n=this.qmd.update.embedIntervalMs;return!!e||this.lastEmbedAt===null||n>0&&t-this.lastEmbedAt>n}noteEmbedFailure(e,t){this.embedFailureCount+=1;let n=Math.min(36e5,6e4*2**Math.max(0,this.embedFailureCount-1));this.embedBackoffUntil=Date.now()+n,F.warn(`qmd embed failed (${e}): ${String(t)}; backing off for ${Math.ceil(n/1e3)}s`)}enqueueForcedUpdate(e){return this.queuedForcedRuns+=1,this.queuedForcedUpdate||=this.drainForcedUpdates(e).finally(()=>{this.queuedForcedUpdate=null}),this.queuedForcedUpdate}async drainForcedUpdates(e){for(await this.pendingUpdate?.catch(()=>void 0);!this.closed&&this.queuedForcedRuns>0;)--this.queuedForcedRuns,await this.runUpdate(`${e}:queued`,!0,{fromForcedQueue:!0})}async symlinkSharedModels(){let e=process.env.XDG_CACHE_HOME||(process.platform===`win32`?process.env.LOCALAPPDATA:void 0)||h.join(m.homedir(),`.cache`),t=h.join(e,`qmd`,`models`),n=h.join(this.xdgCacheHome,`qmd`,`models`);try{if(!(await p.stat(t).catch(e=>{if(e.code===`ENOENT`)return null;throw e}))?.isDirectory())return;try{await p.lstat(n);return}catch{}try{await p.symlink(t,n,`dir`)}catch(e){let r=e.code;if(process.platform===`win32`&&(r===`EPERM`||r===`ENOTSUP`))await p.symlink(t,n,`junction`);else throw e}F.debug(`symlinked qmd models: ${t} → ${n}`)}catch(e){F.warn(`failed to symlink qmd models directory: ${String(e)}`)}}async runQmd(e,t){return await x({commandSummary:`qmd ${e.join(` `)}`,spawnInvocation:y({command:this.qmd.command,args:e,env:this.env,packageName:`qmd`}),env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars,discardStdout:t?.discardOutput})}async ensureMcporterDaemonStarted(e){if(!e.enabled)return;if(!e.startDaemon){let e=globalThis;e.__openclawMcporterColdStartWarned||(e.__openclawMcporterColdStartWarned=!0,F.warn(`mcporter qmd bridge enabled but startDaemon=false; each query may cold-start QMD MCP. Consider setting memory.qmd.mcporter.startDaemon=true to keep it warm.`));return}let t=globalThis;t.__openclawMcporterDaemonStart||=(async()=>{try{await this.runMcporter([`daemon`,`start`],{timeoutMs:1e4})}catch(e){F.warn(`mcporter daemon start failed: ${String(e)}`),delete t.__openclawMcporterDaemonStart}})(),await t.__openclawMcporterDaemonStart}async runMcporter(e,t){let n=async e=>await x({commandSummary:`${e.command} ${e.argv.join(` `)}`,spawnInvocation:e,env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars}),r=y({command:`mcporter`,args:e,env:this.env,packageName:`mcporter`});try{return await n(r)}catch(t){if(!b({err:t,command:r.command,commandBase:`mcporter`}))throw t;return F.warn(`mcporter.cmd spawn returned EINVAL on Windows; retrying with bare mcporter`),await n({command:`mcporter`,argv:e,shell:!0,windowsHide:!0})}}async runQmdSearchViaMcporter(e){await this.ensureMcporterDaemonStarted(e.mcporter);let t=`${e.mcporter.serverName}.${e.tool}`,n={query:e.query,limit:e.limit,minScore:e.minScore};e.collection&&(n.collection=e.collection);let r=await this.runMcporter([`call`,t,`--args`,JSON.stringify(n),`--output`,`json`,`--timeout`,String(Math.max(0,e.timeoutMs))],{timeoutMs:Math.max(e.timeoutMs+2e3,5e3)}),i=JSON.parse(r.stdout),a=e=>typeof e==`object`&&!!e&&!Array.isArray(e),o=a(i)&&a(i.structuredContent)?i.structuredContent:i,s=a(o)&&Array.isArray(o.results)?o.results:Array.isArray(o)?o:[],c=[];for(let e of s){if(!a(e))continue;let t=e.docid,n=typeof t==`string`?t.replace(/^#/,``).trim():``;if(!n)continue;let r=e.score,i=typeof r==`number`?r:Number(r),o=typeof e.snippet==`string`?e.snippet:``;c.push({docid:n,score:Number.isFinite(i)?i:0,snippet:o})}return c}async readPartialText(e,t,n){let r=Math.max(1,t??1),i=Math.max(1,n??1/0),a;try{a=await p.open(e)}catch(e){if(s(e))return{missing:!0};throw e}let o=a.createReadStream({encoding:`utf-8`}),c=_.createInterface({input:o,crlfDelay:1/0}),l=[],u=0;try{for await(let e of c)if(u+=1,!(u<r)){if(l.length>=i)break;l.push(e)}}finally{c.close(),await a.close()}return{missing:!1,text:l.slice(0,i).join(`
|
|
4
4
|
`)}}async readFullText(e){try{return{missing:!1,text:await p.readFile(e,`utf-8`)}}catch(e){if(s(e))return{missing:!0};throw e}}ensureDb(){if(this.db)return this.db;let{DatabaseSync:e}=u();return this.db=new e(this.indexPath,{readOnly:!0}),this.db.exec(`PRAGMA busy_timeout = 1000`),this.db}async exportSessions(){if(!this.sessionExporter)return;let e=this.sessionExporter.dir;await p.mkdir(e,{recursive:!0});let t=await c(this.agentId),r=new Set,i=new Set,a=this.sessionExporter.retentionMs?Date.now()-this.sessionExporter.retentionMs:null;for(let o of t){let t=await l(o);if(!t||a&&t.mtimeMs<a)continue;let s=`${h.basename(o,`.jsonl`)}.md`,c=h.join(e,s);i.add(o);let u=this.exportedSessionState.get(o);(!u||u.hash!==t.hash||u.mtimeMs!==t.mtimeMs)&&await n({rootDir:e,relativePath:s,data:this.renderSessionMarkdown(t),encoding:`utf-8`}),this.exportedSessionState.set(o,{hash:t.hash,mtimeMs:t.mtimeMs,target:c}),r.add(c)}let o=await p.readdir(e).catch(()=>[]);for(let t of o){if(!t.endsWith(`.md`))continue;let n=h.join(e,t);r.has(n)||await p.rm(n,{force:!0})}for(let[t,n]of this.exportedSessionState)(!i.has(t)||!n.target.startsWith(e+h.sep))&&this.exportedSessionState.delete(t)}renderSessionMarkdown(e){return`${`# Session ${h.basename(e.absPath,h.extname(e.absPath))}`}\n\n${e.content?.trim().length?e.content.trim():`(empty)`}\n`}pickSessionCollectionName(){let e=new Set(this.qmd.collections.map(e=>e.name)),t=`sessions-${this.sanitizeCollectionNameSegment(this.agentId)}`;if(!e.has(t))return t;let n=2,r=`${t}-${n}`;for(;e.has(r);)n+=1,r=`${t}-${n}`;return r}sanitizeCollectionNameSegment(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``)||`agent`}async resolveDocLocation(e,t){let n=this.normalizeDocHints(t);if(!e)return this.resolveDocLocationFromHints(n);let r=e.startsWith(`#`)?e.slice(1):e;if(!r)return null;let i=`${n.preferredCollection??`*`}:${r}`,a=this.docPathCache.get(i);if(a)return a;let o=this.ensureDb(),s=[];try{s=o.prepare(`SELECT collection, path FROM documents WHERE hash = ? AND active = 1`).all(r),s.length===0&&(s=o.prepare(`SELECT collection, path FROM documents WHERE hash LIKE ? AND active = 1`).all(`${r}%`))}catch(e){throw this.isSqliteBusyError(e)?(F.debug(`qmd index is busy while resolving doc path: ${String(e)}`),this.createQmdBusyError(e)):e}if(s.length===0)return null;let c=this.pickDocLocation(s,n);return c?(this.docPathCache.set(i,c),c):null}resolveDocLocationFromHints(e){if(!e.preferredCollection||!e.preferredFile)return null;let t=this.toCollectionRelativePath(e.preferredCollection,e.preferredFile);return t?this.toDocLocation(e.preferredCollection,t):null}normalizeDocHints(e){let t=e?.preferredCollection?.trim(),n=e?.preferredFile?.trim();if(!n)return t?{preferredCollection:t}:{};let r=this.parseQmdFileUri(n);return{preferredCollection:r?.collection??t,preferredFile:r?.collectionRelativePath??n}}parseQmdFileUri(e){if(!e.toLowerCase().startsWith(`qmd://`))return null;try{let t=new URL(e),n=decodeURIComponent(t.hostname).trim(),r=decodeURIComponent(t.pathname).replace(/^\/+/,``).trim();return!n&&!r?null:{collection:n||void 0,collectionRelativePath:r||void 0}}catch{return null}}toCollectionRelativePath(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.trim();if(!r)return null;let i=h.normalize(r),a=h.isAbsolute(i)?i:h.resolve(n.path,i);if(!this.isWithinRoot(n.path,a))return null;let o=h.relative(n.path,a);return!o||o===`.`?null:o.replace(/\\/g,`/`)}pickDocLocation(e,t){if(t?.preferredCollection)for(let n of e){if(n.collection!==t.preferredCollection)continue;let e=this.toDocLocation(n.collection,n.path);if(e)return e}if(t?.preferredFile){let n=h.normalize(t.preferredFile);for(let t of e){let e=h.normalize(t.path);if(e!==n&&!e.endsWith(h.sep+n))continue;let r=this.toDocLocation(t.collection,t.path);if(r)return r}}for(let t of e){let e=this.toDocLocation(t.collection,t.path);if(e)return e}return null}extractSnippetLines(e){let t=I.exec(e);if(t){let e=Number(t[1]),n=Number(t[2]);if(Number.isFinite(e)&&Number.isFinite(n))return{startLine:e,endLine:e+n-1}}return{startLine:1,endLine:e.split(`
|
|
5
|
-
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=h.normalize(h.resolve(n.path,t)),a=h.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||h.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${h.sep}`)?!1:!h.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=h.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=h.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(h.sep)?this.workspaceDir:`${this.workspaceDir}${h.sep}`;return e===this.workspaceDir?!0:(e.endsWith(h.sep)?e:`${e}${h.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(h.sep)?e:`${e}${h.sep}`;return t===e?!0:(t.endsWith(h.sep)?t:`${t}${h.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
5
|
+
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=h.normalize(h.resolve(n.path,t)),a=h.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||h.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${h.sep}`)?!1:!h.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=h.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=h.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(h.sep)?this.workspaceDir:`${this.workspaceDir}${h.sep}`;return e===this.workspaceDir?!0:(e.endsWith(h.sep)?e:`${e}${h.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(h.sep)?e:`${e}${h.sep}`;return t===e?!0:(t.endsWith(h.sep)?t:`${t}${h.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
@@ -2,4 +2,4 @@ import{g as e}from"./paths-B4IRk3wi.js";import{t}from"./subsystem-C5XF2Fy5.js";i
|
|
|
2
2
|
`),a=Math.max(1,e.from??1),o=Math.max(1,e.lines??i.length);return{text:i.slice(a-1,a-1+o).join(`
|
|
3
3
|
`),path:t}}status(){let e=this.readCounts();return{backend:`qmd`,provider:`qmd`,model:`qmd`,requestedProvider:`qmd`,files:e.totalDocuments,chunks:e.totalDocuments,dirty:!1,workspaceDir:this.workspaceDir,dbPath:this.indexPath,sources:Array.from(this.sources),sourceCounts:e.sourceCounts,vector:{enabled:!0,available:!0},batch:{enabled:!1,failures:0,limit:0,wait:!1,concurrency:0,pollIntervalMs:0,timeoutMs:0},custom:{qmd:{collections:this.qmd.collections.length,lastUpdateAt:this.lastUpdateAt}}}}async probeEmbeddingAvailability(){return{ok:!0}}async probeVectorAvailability(){return!0}async close(){this.closed||(this.closed=!0,this.updateTimer&&=(clearInterval(this.updateTimer),null),this.queuedForcedRuns=0,await this.pendingUpdate?.catch(()=>void 0),await this.queuedForcedUpdate?.catch(()=>void 0),this.db&&=(this.db.close(),null))}async runUpdate(e,t,n){if(!this.closed){if(this.pendingUpdate)return t?this.enqueueForcedUpdate(e):this.pendingUpdate;if(this.queuedForcedUpdate&&!n?.fromForcedQueue)return t?this.enqueueForcedUpdate(e):this.queuedForcedUpdate;this.shouldSkipUpdate(t)||(this.pendingUpdate=(async()=>{if(this.sessionExporter&&await this.exportSessions(),await this.runQmdUpdateWithRetry(e),this.shouldRunEmbed(t))try{await H(async()=>{await this.runQmd([`embed`],{timeoutMs:this.qmd.update.embedTimeoutMs,discardOutput:!0})}),this.lastEmbedAt=Date.now(),this.embedBackoffUntil=null,this.embedFailureCount=0}catch(t){this.noteEmbedFailure(e,t)}this.lastUpdateAt=Date.now(),this.docPathCache.clear()})().finally(()=>{this.pendingUpdate=null}),await this.pendingUpdate)}}async runQmdUpdateWithRetry(e){let t=e===`boot`||e.startsWith(`boot:`)?3:1;for(let n=1;n<=t;n+=1)try{await this.runQmdUpdateOnce(e);return}catch(r){if(n>=t||!this.isRetryableUpdateError(r))throw r;let i=500*2**(n-1);F.warn(`qmd update retry ${n}/${t-1} after failure (${e}): ${String(r)}`),await new Promise(e=>setTimeout(e,i))}}async runQmdUpdateOnce(e){try{await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}catch(t){if(!await this.tryRepairNullByteCollections(t,e)&&!await this.tryRepairDuplicateDocumentConstraint(t,e))throw t;await this.runQmd([`update`],{timeoutMs:this.qmd.update.updateTimeoutMs,discardOutput:!0})}}isRetryableUpdateError(e){return this.isSqliteBusyError(e)?!0:(e instanceof Error?e.message:String(e)).toLowerCase().includes(`timed out`)}shouldRunEmbed(e){if(this.qmd.searchMode===`search`)return!1;let t=Date.now();if(this.embedBackoffUntil!==null&&t<this.embedBackoffUntil)return!1;let n=this.qmd.update.embedIntervalMs;return!!e||this.lastEmbedAt===null||n>0&&t-this.lastEmbedAt>n}noteEmbedFailure(e,t){this.embedFailureCount+=1;let n=Math.min(36e5,6e4*2**Math.max(0,this.embedFailureCount-1));this.embedBackoffUntil=Date.now()+n,F.warn(`qmd embed failed (${e}): ${String(t)}; backing off for ${Math.ceil(n/1e3)}s`)}enqueueForcedUpdate(e){return this.queuedForcedRuns+=1,this.queuedForcedUpdate||=this.drainForcedUpdates(e).finally(()=>{this.queuedForcedUpdate=null}),this.queuedForcedUpdate}async drainForcedUpdates(e){for(await this.pendingUpdate?.catch(()=>void 0);!this.closed&&this.queuedForcedRuns>0;)--this.queuedForcedRuns,await this.runUpdate(`${e}:queued`,!0,{fromForcedQueue:!0})}async symlinkSharedModels(){let e=process.env.XDG_CACHE_HOME||(process.platform===`win32`?process.env.LOCALAPPDATA:void 0)||m.join(p.homedir(),`.cache`),t=m.join(e,`qmd`,`models`),n=m.join(this.xdgCacheHome,`qmd`,`models`);try{if(!(await h.stat(t).catch(e=>{if(e.code===`ENOENT`)return null;throw e}))?.isDirectory())return;try{await h.lstat(n);return}catch{}try{await h.symlink(t,n,`dir`)}catch(e){let r=e.code;if(process.platform===`win32`&&(r===`EPERM`||r===`ENOTSUP`))await h.symlink(t,n,`junction`);else throw e}F.debug(`symlinked qmd models: ${t} → ${n}`)}catch(e){F.warn(`failed to symlink qmd models directory: ${String(e)}`)}}async runQmd(e,t){return await x({commandSummary:`qmd ${e.join(` `)}`,spawnInvocation:y({command:this.qmd.command,args:e,env:this.env,packageName:`qmd`}),env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars,discardStdout:t?.discardOutput})}async ensureMcporterDaemonStarted(e){if(!e.enabled)return;if(!e.startDaemon){let e=globalThis;e.__openclawMcporterColdStartWarned||(e.__openclawMcporterColdStartWarned=!0,F.warn(`mcporter qmd bridge enabled but startDaemon=false; each query may cold-start QMD MCP. Consider setting memory.qmd.mcporter.startDaemon=true to keep it warm.`));return}let t=globalThis;t.__openclawMcporterDaemonStart||=(async()=>{try{await this.runMcporter([`daemon`,`start`],{timeoutMs:1e4})}catch(e){F.warn(`mcporter daemon start failed: ${String(e)}`),delete t.__openclawMcporterDaemonStart}})(),await t.__openclawMcporterDaemonStart}async runMcporter(e,t){let n=async e=>await x({commandSummary:`${e.command} ${e.argv.join(` `)}`,spawnInvocation:e,env:this.env,cwd:this.workspaceDir,timeoutMs:t?.timeoutMs,maxOutputChars:this.maxQmdOutputChars}),r=y({command:`mcporter`,args:e,env:this.env,packageName:`mcporter`});try{return await n(r)}catch(t){if(!b({err:t,command:r.command,commandBase:`mcporter`}))throw t;return F.warn(`mcporter.cmd spawn returned EINVAL on Windows; retrying with bare mcporter`),await n({command:`mcporter`,argv:e,shell:!0,windowsHide:!0})}}async runQmdSearchViaMcporter(e){await this.ensureMcporterDaemonStarted(e.mcporter);let t=`${e.mcporter.serverName}.${e.tool}`,n={query:e.query,limit:e.limit,minScore:e.minScore};e.collection&&(n.collection=e.collection);let r=await this.runMcporter([`call`,t,`--args`,JSON.stringify(n),`--output`,`json`,`--timeout`,String(Math.max(0,e.timeoutMs))],{timeoutMs:Math.max(e.timeoutMs+2e3,5e3)}),i=JSON.parse(r.stdout),a=e=>typeof e==`object`&&!!e&&!Array.isArray(e),o=a(i)&&a(i.structuredContent)?i.structuredContent:i,s=a(o)&&Array.isArray(o.results)?o.results:Array.isArray(o)?o:[],c=[];for(let e of s){if(!a(e))continue;let t=e.docid,n=typeof t==`string`?t.replace(/^#/,``).trim():``;if(!n)continue;let r=e.score,i=typeof r==`number`?r:Number(r),o=typeof e.snippet==`string`?e.snippet:``;c.push({docid:n,score:Number.isFinite(i)?i:0,snippet:o})}return c}async readPartialText(e,t,n){let r=Math.max(1,t??1),i=Math.max(1,n??1/0),a;try{a=await h.open(e)}catch(e){if(s(e))return{missing:!0};throw e}let o=a.createReadStream({encoding:`utf-8`}),c=_.createInterface({input:o,crlfDelay:1/0}),l=[],u=0;try{for await(let e of c)if(u+=1,!(u<r)){if(l.length>=i)break;l.push(e)}}finally{c.close(),await a.close()}return{missing:!1,text:l.slice(0,i).join(`
|
|
4
4
|
`)}}async readFullText(e){try{return{missing:!1,text:await h.readFile(e,`utf-8`)}}catch(e){if(s(e))return{missing:!0};throw e}}ensureDb(){if(this.db)return this.db;let{DatabaseSync:e}=u();return this.db=new e(this.indexPath,{readOnly:!0}),this.db.exec(`PRAGMA busy_timeout = 1000`),this.db}async exportSessions(){if(!this.sessionExporter)return;let e=this.sessionExporter.dir;await h.mkdir(e,{recursive:!0});let t=await c(this.agentId),n=new Set,r=new Set,a=this.sessionExporter.retentionMs?Date.now()-this.sessionExporter.retentionMs:null;for(let o of t){let t=await l(o);if(!t||a&&t.mtimeMs<a)continue;let s=`${m.basename(o,`.jsonl`)}.md`,c=m.join(e,s);r.add(o);let u=this.exportedSessionState.get(o);(!u||u.hash!==t.hash||u.mtimeMs!==t.mtimeMs)&&await i({rootDir:e,relativePath:s,data:this.renderSessionMarkdown(t),encoding:`utf-8`}),this.exportedSessionState.set(o,{hash:t.hash,mtimeMs:t.mtimeMs,target:c}),n.add(c)}let o=await h.readdir(e).catch(()=>[]);for(let t of o){if(!t.endsWith(`.md`))continue;let r=m.join(e,t);n.has(r)||await h.rm(r,{force:!0})}for(let[t,n]of this.exportedSessionState)(!r.has(t)||!n.target.startsWith(e+m.sep))&&this.exportedSessionState.delete(t)}renderSessionMarkdown(e){return`${`# Session ${m.basename(e.absPath,m.extname(e.absPath))}`}\n\n${e.content?.trim().length?e.content.trim():`(empty)`}\n`}pickSessionCollectionName(){let e=new Set(this.qmd.collections.map(e=>e.name)),t=`sessions-${this.sanitizeCollectionNameSegment(this.agentId)}`;if(!e.has(t))return t;let n=2,r=`${t}-${n}`;for(;e.has(r);)n+=1,r=`${t}-${n}`;return r}sanitizeCollectionNameSegment(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``)||`agent`}async resolveDocLocation(e,t){let n=this.normalizeDocHints(t);if(!e)return this.resolveDocLocationFromHints(n);let r=e.startsWith(`#`)?e.slice(1):e;if(!r)return null;let i=`${n.preferredCollection??`*`}:${r}`,a=this.docPathCache.get(i);if(a)return a;let o=this.ensureDb(),s=[];try{s=o.prepare(`SELECT collection, path FROM documents WHERE hash = ? AND active = 1`).all(r),s.length===0&&(s=o.prepare(`SELECT collection, path FROM documents WHERE hash LIKE ? AND active = 1`).all(`${r}%`))}catch(e){throw this.isSqliteBusyError(e)?(F.debug(`qmd index is busy while resolving doc path: ${String(e)}`),this.createQmdBusyError(e)):e}if(s.length===0)return null;let c=this.pickDocLocation(s,n);return c?(this.docPathCache.set(i,c),c):null}resolveDocLocationFromHints(e){if(!e.preferredCollection||!e.preferredFile)return null;let t=this.toCollectionRelativePath(e.preferredCollection,e.preferredFile);return t?this.toDocLocation(e.preferredCollection,t):null}normalizeDocHints(e){let t=e?.preferredCollection?.trim(),n=e?.preferredFile?.trim();if(!n)return t?{preferredCollection:t}:{};let r=this.parseQmdFileUri(n);return{preferredCollection:r?.collection??t,preferredFile:r?.collectionRelativePath??n}}parseQmdFileUri(e){if(!e.toLowerCase().startsWith(`qmd://`))return null;try{let t=new URL(e),n=decodeURIComponent(t.hostname).trim(),r=decodeURIComponent(t.pathname).replace(/^\/+/,``).trim();return!n&&!r?null:{collection:n||void 0,collectionRelativePath:r||void 0}}catch{return null}}toCollectionRelativePath(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.trim();if(!r)return null;let i=m.normalize(r),a=m.isAbsolute(i)?i:m.resolve(n.path,i);if(!this.isWithinRoot(n.path,a))return null;let o=m.relative(n.path,a);return!o||o===`.`?null:o.replace(/\\/g,`/`)}pickDocLocation(e,t){if(t?.preferredCollection)for(let n of e){if(n.collection!==t.preferredCollection)continue;let e=this.toDocLocation(n.collection,n.path);if(e)return e}if(t?.preferredFile){let n=m.normalize(t.preferredFile);for(let t of e){let e=m.normalize(t.path);if(e!==n&&!e.endsWith(m.sep+n))continue;let r=this.toDocLocation(t.collection,t.path);if(r)return r}}for(let t of e){let e=this.toDocLocation(t.collection,t.path);if(e)return e}return null}extractSnippetLines(e){let t=I.exec(e);if(t){let e=Number(t[1]),n=Number(t[2]);if(Number.isFinite(e)&&Number.isFinite(n))return{startLine:e,endLine:e+n-1}}return{startLine:1,endLine:e.split(`
|
|
5
|
-
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=m.normalize(m.resolve(n.path,t)),a=m.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||m.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${m.sep}`)?!1:!m.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=m.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=m.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(m.sep)?this.workspaceDir:`${this.workspaceDir}${m.sep}`;return e===this.workspaceDir?!0:(e.endsWith(m.sep)?e:`${e}${m.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(m.sep)?e:`${e}${m.sep}`;return t===e?!0:(t.endsWith(m.sep)?t:`${t}${m.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
|
5
|
+
`).length}}readCounts(){try{let e=this.ensureDb().prepare(`SELECT collection, COUNT(*) as c FROM documents WHERE active = 1 GROUP BY collection`).all(),t=new Map;for(let e of this.sources)t.set(e,{files:0,chunks:0});let n=0;for(let r of e){let e=this.collectionRoots.get(r.collection)?.kind??`memory`,i=t.get(e)??{files:0,chunks:0};i.files+=r.c??0,i.chunks+=r.c??0,t.set(e,i),n+=r.c??0}return{totalDocuments:n,sourceCounts:Array.from(t.entries()).map(([e,t])=>({source:e,files:t.files,chunks:t.chunks}))}}catch(e){return F.warn(`failed to read qmd index stats: ${String(e)}`),{totalDocuments:0,sourceCounts:Array.from(this.sources).map(e=>({source:e,files:0,chunks:0}))}}}logScopeDenied(e){let t=w(e)??`unknown`,n=T(e)??`unknown`,r=e?.trim()||`<none>`;F.warn(`qmd search denied by scope (channel=${t}, chatType=${n}, session=${r})`)}isScopeAllowed(e){return C(this.qmd.scope,e)}toDocLocation(e,t){let n=this.collectionRoots.get(e);if(!n)return null;let r=t.replace(/\\/g,`/`),i=m.normalize(m.resolve(n.path,t)),a=m.relative(this.workspaceDir,i);return{rel:this.buildSearchPath(e,r,a,i),abs:i,source:n.kind}}buildSearchPath(e,t,n,r){return this.isInsideWorkspace(n)?n.replace(/\\/g,`/`)||m.basename(r):`qmd/${e}/${t.replace(/^\/+/,``)}`}isInsideWorkspace(e){return e?e.startsWith(`..`)||e.startsWith(`..${m.sep}`)?!1:!m.isAbsolute(e):!0}resolveReadPath(e){if(e.startsWith(`qmd/`)){let[,t,...n]=e.split(`/`);if(!t||n.length===0)throw Error(`invalid qmd path`);let r=this.collectionRoots.get(t);if(!r)throw Error(`unknown qmd collection: ${t}`);let i=n.join(`/`),a=m.resolve(r.path,i);if(!this.isWithinRoot(r.path,a))throw Error(`qmd path escapes collection`);return a}let t=m.resolve(this.workspaceDir,e);if(!this.isWithinWorkspace(t))throw Error(`path escapes workspace`);return t}isWithinWorkspace(e){let t=this.workspaceDir.endsWith(m.sep)?this.workspaceDir:`${this.workspaceDir}${m.sep}`;return e===this.workspaceDir?!0:(e.endsWith(m.sep)?e:`${e}${m.sep}`).startsWith(t)}isWithinRoot(e,t){let n=e.endsWith(m.sep)?e:`${e}${m.sep}`;return t===e?!0:(t.endsWith(m.sep)?t:`${t}${m.sep}`).startsWith(n)}clampResultsByInjectedChars(e){let t=this.qmd.limits.maxInjectedChars;if(!t||t<=0)return e;let n=t,r=[];for(let t of e){if(n<=0)break;let e=t.snippet??``;if(e.length<=n)r.push(t),n-=e.length;else{let i=e.slice(0,Math.max(0,n));r.push({...t,snippet:i});break}}return r}diversifyResultsBySource(e,t){let n=Math.max(0,t);if(n<=0)return[];if(e.length<=1)return e.slice(0,n);let r=new Map;for(let t of e){let e=r.get(t.source)??[];e.push(t),r.set(t.source,e)}let i=r.has(`sessions`),a=r.has(`memory`);if(!i||!a)return e.slice(0,n);let o=Array.from(r.entries()).toSorted((e,t)=>(t[1][0]?.score??0)-(e[1][0]?.score??0)).map(([e])=>e),s=[];for(;s.length<n;){let e=!1;for(let t of o){let i=r.get(t)?.shift();if(i&&(s.push(i),e=!0,s.length>=n))break}if(!e)break}return s}shouldSkipUpdate(e){if(e)return!1;let t=this.qmd.update.debounceMs;return t<=0||!this.lastUpdateAt?!1:Date.now()-this.lastUpdateAt<t}isSqliteBusyError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`sqlite_busy`)||t.includes(`database is locked`)}isUnsupportedQmdOptionError(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`unknown flag`)||t.includes(`unknown option`)||t.includes(`unrecognized option`)||t.includes(`flag provided but not defined`)||t.includes(`unexpected argument`)}createQmdBusyError(e){let t=e instanceof Error?e.message:String(e);return Error(`qmd index busy while reading results: ${t}`)}async waitForPendingUpdateBeforeSearch(){let e=this.pendingUpdate;e&&await Promise.race([e.catch(()=>void 0),new Promise(e=>setTimeout(e,500))])}async runQueryAcrossCollections(e,t,n,r){F.debug(`qmd ${r} multi-collection workaround active (${n.length} collections)`);let i=new Map;for(let a of n){let n=this.buildSearchArgs(r,e,t);n.push(`-c`,a);let o=await this.runQmd(n,{timeoutMs:this.qmd.limits.timeoutMs}),s=k(o.stdout,o.stderr);for(let e of s){let t=this.normalizeDocHints({preferredCollection:e.collection??a,preferredFile:e.file}),n=typeof e.docid==`string`&&e.docid.trim().length>0?e.docid:void 0,r={...e,docid:n,collection:t.preferredCollection??e.collection??a,file:t.preferredFile??e.file},o=this.buildQmdResultKey(r);if(!o)continue;let s=i.get(o),c=typeof s?.score==`number`?s.score:-1/0,l=typeof r.score==`number`?r.score:-1/0;(!s||l>c)&&i.set(o,r)}}return[...i.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}buildQmdResultKey(e){if(typeof e.docid==`string`&&e.docid.trim().length>0)return`docid:${e.docid}`;let t=this.normalizeDocHints({preferredCollection:e.collection,preferredFile:e.file});if(!t.preferredCollection||!t.preferredFile)return null;let n=this.toCollectionRelativePath(t.preferredCollection,t.preferredFile);return n?`file:${t.preferredCollection}:${n}`:null}async runMcporterAcrossCollections(e){let t=new Map;for(let n of e.collectionNames){let r=await this.runQmdSearchViaMcporter({mcporter:this.qmd.mcporter,tool:e.tool,query:e.query,limit:e.limit,minScore:e.minScore,collection:n,timeoutMs:this.qmd.limits.timeoutMs});for(let e of r){if(typeof e.docid!=`string`||!e.docid.trim())continue;let n=t.get(e.docid),r=typeof n?.score==`number`?n.score:-1/0,i=typeof e.score==`number`?e.score:-1/0;(!n||i>r)&&t.set(e.docid,e)}}return[...t.values()].toSorted((e,t)=>(t.score??0)-(e.score??0))}listManagedCollectionNames(){return this.managedCollectionNames}computeManagedCollectionNames(){let e=new Set,t=[];for(let n of this.qmd.collections){let r=n.name?.trim();!r||e.has(r)||(e.add(r),t.push(r))}return t}buildCollectionFilterArgs(e){return e.length===0?[]:e.filter(Boolean).flatMap(e=>[`-c`,e])}buildSearchArgs(e,t,n){let r=e===`search`?V(t):t;return e===`query`?[`query`,r,`--json`,`-n`,String(n)]:[e,r,`--json`,`-n`,String(n)]}};export{U as QmdMemoryManager};
|
package/dist/qr-cli-DUR7oW0_.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{A as e,p as t}from"./subsystem-BLbY429l.js";import{u as n}from"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Gi as r,Ki as i,Mi as a,as as o,ji as s,jo as c,ss as l}from"./auth-profiles-BhXA8Jy2.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import{a as u,d,l as f}from"./types.secrets-D4tbc3Wq.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 p}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"./call-BQT0zCgv.js";import"./runtime-web-tools-BWv0X5qp.js";import{a as m,s as h}from"./command-secret-targets-KM3OecbM.js";import{t as g}from"./links-CBnmRP9D.js";import _ from"node:os";import v from"qrcode-terminal";function y(e){let t=e.bind??`loopback`;if(t===`custom`){let t=e.customBindHost?.trim();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=custom`}:{error:`gateway.bind=custom requires gateway.customBindHost.`}}if(t===`tailnet`){let t=e.pickTailnetHost();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=tailnet`}:{error:`gateway.bind=tailnet set, but no tailnet IP was found.`}}if(t===`lan`){let t=e.pickLanHost();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=lan`}:{error:`gateway.bind=lan set, but no private LAN IP was found.`}}return null}const b=[`tailscale`,`/Applications/Tailscale.app/Contents/MacOS/Tailscale`];function x(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t===-1||n<=t)return{};try{return JSON.parse(e.slice(t,n+1))}catch{return{}}}function S(e){let t=x(e),n=typeof t.Self==`object`&&t.Self!==null?t.Self:void 0,r=typeof n?.DNSName==`string`?n.DNSName:void 0;if(r&&r.length>0)return r.replace(/\.$/,``);let i=Array.isArray(n?.TailscaleIPs)?n.TailscaleIPs:[];return i.length>0?i[0]??null:null}async function C(e){if(!e)return null;for(let t of b)try{let n=await e([t,`status`,`--json`],{timeoutMs:5e3});if(n.code!==0)continue;let r=n.stdout.trim();if(!r)continue;let i=S(r);if(i)return i}catch{continue}return null}function w(e,t){let n=e.trim();if(!n)return null;try{let e=new URL(n),t=e.protocol.replace(`:`,``);if(!t)return null;let r=t===`http`?`ws`:t===`https`?`wss`:t;if(r!==`ws`&&r!==`wss`)return null;let i=e.hostname;return i?`${r}://${i}${e.port?`:${e.port}`:``}`:null}catch{}let r=n.split(`/`)[0]??``;return r?`${t}://${r}`:null}function T(e,t){return t?.forceSecure||e.gateway?.tls?.enabled===!0?`wss`:`ws`}function E(e){return l(e)}function D(e){return o(e)}function O(e,t){let n=e();for(let e of Object.values(n))if(e)for(let n of e){let e=n?.family===`IPv4`;if(!n||n.internal||!e)continue;let r=n.address?.trim()??``;if(r&&t(r))return r}return null}function k(e){return O(e,E)}function A(e){return O(e,D)}function j(e){return e.OPENCLAW_GATEWAY_TOKEN?.trim()||e.CLAWDBOT_GATEWAY_TOKEN?.trim()||void 0}function M(e){return e.OPENCLAW_GATEWAY_PASSWORD?.trim()||e.CLAWDBOT_GATEWAY_PASSWORD?.trim()||void 0}function N(e,t){let n=e.gateway?.auth?.mode,r=e.secrets?.defaults,i=d({value:e.gateway?.auth?.token,defaults:r}).ref,a=d({value:e.gateway?.auth?.password,defaults:r}).ref,o=j(t),s=M(t),c=o||(i?void 0:f(e.gateway?.auth?.token)),l=s||(a?void 0:f(e.gateway?.auth?.password));return n===`password`?l?{password:l,label:`password`}:{error:`Gateway auth is set to password, but no password is configured.`}:n===`token`?c?{token:c,label:`token`}:{error:`Gateway auth is set to token, but no token is configured.`}:c?{token:c,label:`token`}:l?{password:l,label:`password`}:{error:`Gateway auth is not configured (no token or password).`}}async function P(e,t){if(j(t))return e;let n=e.gateway?.auth?.mode;if(n===`password`||n===`none`||n===`trusted-proxy`||n!==`token`&&(t.OPENCLAW_GATEWAY_PASSWORD?.trim()||t.CLAWDBOT_GATEWAY_PASSWORD?.trim()))return e;let r=await s({config:e,env:t,value:e.gateway?.auth?.token,path:`gateway.auth.token`});return r?{...e,gateway:{...e.gateway,auth:{...e.gateway?.auth,token:r}}}:e}async function F(e,t){if(M(t))return e;let n=e.gateway?.auth?.mode;if(n===`token`||n===`none`||n===`trusted-proxy`||n!==`password`&&(j(t)||u(e.gateway?.auth?.token,e.secrets?.defaults)))return e;let r=await s({config:e,env:t,value:e.gateway?.auth?.password,path:`gateway.auth.password`});return r?{...e,gateway:{...e.gateway,auth:{...e.gateway?.auth,password:r}}}:e}async function I(e,t){let r=T(e,{forceSecure:t.forceSecure}),i=n(e,t.env);if(typeof t.publicUrl==`string`&&t.publicUrl.trim()){let e=w(t.publicUrl,r);return e?{url:e,source:`plugins.entries.device-pair.config.publicUrl`}:{error:`Configured publicUrl is invalid.`}}let a=e.gateway?.remote?.url,o=typeof a==`string`&&a.trim()?w(a,r):null;if(t.preferRemoteUrl&&o)return{url:o,source:`gateway.remote.url`};let s=e.gateway?.tailscale?.mode??`off`;if(s===`serve`||s===`funnel`){let e=await C(t.runCommandWithTimeout);return e?{url:`wss://${e}`,source:`gateway.tailscale.mode=${s}`}:{error:`Tailscale Serve is enabled, but MagicDNS could not be resolved.`}}return o?{url:o,source:`gateway.remote.url`}:y({bind:e.gateway?.bind,customBindHost:e.gateway?.customBindHost,scheme:r,port:i,pickTailnetHost:()=>A(t.networkInterfaces),pickLanHost:()=>k(t.networkInterfaces)})||{error:`Gateway is only bound to loopback. Set gateway.bind=lan, enable tailscale serve, or configure plugins.entries.device-pair.config.publicUrl.`}}function L(e){let t=JSON.stringify(e);return Buffer.from(t,`utf8`).toString(`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}async function R(e,t={}){a(e);let n=t.env??process.env,r=await F(await P(e,n),n),i=N(r,n);if(i.error)return{ok:!1,error:i.error};let o=await I(r,{env:n,publicUrl:t.publicUrl,preferRemoteUrl:t.preferRemoteUrl,forceSecure:t.forceSecure,runCommandWithTimeout:t.runCommandWithTimeout,networkInterfaces:t.networkInterfaces??_.networkInterfaces});return o.url?i.label?{ok:!0,payload:{url:o.url,token:i.token,password:i.password},authLabel:i.label,urlSource:o.source??`unknown`}:{ok:!1,error:`Gateway auth is not configured (no token or password).`}:{ok:!1,error:o.error??`Gateway URL unavailable.`}}function z(e){return new Promise(t=>{v.generate(e,{small:!0},e=>{t(e)})})}function B(e){let t=e.plugins?.entries?.[`device-pair`]?.config?.publicUrl;if(typeof t!=`string`)return;let n=t.trim();return n.length>0?n:void 0}function V(e,t){if(r(t))return!1;let n=e.gateway?.auth?.mode;if(n===`password`)return!0;if(n===`token`||n===`none`||n===`trusted-proxy`)return!1;let a=i(t),o=u(e.gateway?.auth?.token,e.secrets?.defaults);return!a&&!o}async function H(e){let t=await s({config:e,env:process.env,value:e.gateway?.auth?.password,path:`gateway.auth.password`});t&&e.gateway?.auth&&(e.gateway.auth.password=t)}function U(n,r){if(n.length===0)return;let i=r.json===!0||r.setupCodeOnly===!0;for(let r of n){let n=e.warn(`[secrets] ${r}`);i?t.error(n):t.log(n)}}function W(n){n.command(`qr`).description(`Generate an iOS pairing QR code and setup code`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${g(`/cli/qr`,`docs.openclaw.ai/cli/qr`)}\n`).option(`--remote`,`Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)`,!1).option(`--url <url>`,`Override gateway URL used in the setup payload`).option(`--public-url <url>`,`Override gateway public URL used in the setup payload`).option(`--token <token>`,`Override gateway token for setup payload`).option(`--password <password>`,`Override gateway password for setup payload`).option(`--setup-code-only`,`Print only the setup code`,!1).option(`--no-ascii`,`Skip ASCII QR rendering`).option(`--json`,`Output JSON`,!1).action(async n=>{try{if(n.token&&n.password)throw Error(`Use either --token or --password, not both.`);let r=typeof n.token==`string`?n.token.trim():``,i=typeof n.password==`string`?n.password.trim():``,a=n.remote===!0,o=c();if(a&&!n.url&&!n.publicUrl){let e=o.gateway?.tailscale?.mode??`off`,t=o.gateway?.remote?.url;if(!(typeof t==`string`&&t.trim().length>0)&&!(e===`serve`||e===`funnel`))throw Error(`qr --remote requires gateway.remote.url (or gateway.tailscale.mode=serve/funnel).`)}let s=o,l=[];if(a&&!r&&!i){let e=await h({config:o,commandName:`qr --remote`,targetIds:m()});s=e.resolvedConfig,l=e.diagnostics}let u={...s,gateway:{...s.gateway,auth:{...s.gateway?.auth}}};if(U(l,n),r&&(u.gateway.auth.mode=`token`,u.gateway.auth.token=r,u.gateway.auth.password=void 0),i&&(u.gateway.auth.mode=`password`,u.gateway.auth.password=i,u.gateway.auth.token=void 0),a&&!r&&!i){let e=typeof u.gateway?.remote?.token==`string`?u.gateway.remote.token.trim():``,t=typeof u.gateway?.remote?.password==`string`?u.gateway.remote.password.trim():``;e?(u.gateway.auth.mode=`token`,u.gateway.auth.token=e,u.gateway.auth.password=void 0):t&&(u.gateway.auth.mode=`password`,u.gateway.auth.password=t,u.gateway.auth.token=void 0)}!a&&!i&&!r&&V(u,process.env)&&await H(u);let d=await R(u,{publicUrl:(typeof n.url==`string`&&n.url.trim()?n.url.trim():typeof n.publicUrl==`string`&&n.publicUrl.trim()?n.publicUrl.trim():void 0)??(a?void 0:B(u)),preferRemoteUrl:a,runCommandWithTimeout:async(e,t)=>await p(e,{timeoutMs:t.timeoutMs})});if(!d.ok)throw Error(d.error);let f=L(d.payload);if(n.setupCodeOnly){t.log(f);return}if(n.json){t.log(JSON.stringify({setupCode:f,gatewayUrl:d.payload.url,auth:d.authLabel,urlSource:d.urlSource},null,2));return}let g=[e.heading(`Pairing QR`),`Scan this with the OpenClaw iOS app (Onboarding -> Scan QR).`,``];if(n.ascii!==!1){let e=await z(f);g.push(e.trimEnd(),``)}g.push(`${e.muted(`Setup code:`)} ${f}`,`${e.muted(`Gateway:`)} ${d.payload.url}`,`${e.muted(`Auth:`)} ${d.authLabel}`,`${e.muted(`Source:`)} ${d.urlSource}`,``,`Approve after scan with:`,` ${e.command(`openclaw devices list`)}`,` ${e.command(`openclaw devices approve <requestId>`)}`),t.log(g.join(`
|
|
2
|
-
`))}catch(e){t.error(String(e)),t.exit(1)}})}export{W as registerQrCli};
|
|
2
|
+
`))}catch(e){t.error(String(e)),t.exit(1)}})}export{W as registerQrCli};
|
package/dist/qr-cli-kb3ygh9I.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{u as e}from"./paths-B4IRk3wi.js";import{A as t,p as n}from"./subsystem-C5XF2Fy5.js";import"./utils-UGOV_184.js";import{Ka as r,Sc as i,oo as a,qa as o,qs as s,so as c,wc as l}from"./model-selection-I1ctjFOB.js";import"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import{a as u,d,l as f}from"./types.secrets-C-5U96pc.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"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import{t as p}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"./call-BA3O_Qpl.js";import"./runtime-web-tools-CCIXUISf.js";import{a as m,s as h}from"./command-secret-targets-BBTiqQKa.js";import{t as g}from"./links-CySwdMcF.js";import _ from"node:os";import v from"qrcode-terminal";function y(e){let t=e.bind??`loopback`;if(t===`custom`){let t=e.customBindHost?.trim();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=custom`}:{error:`gateway.bind=custom requires gateway.customBindHost.`}}if(t===`tailnet`){let t=e.pickTailnetHost();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=tailnet`}:{error:`gateway.bind=tailnet set, but no tailnet IP was found.`}}if(t===`lan`){let t=e.pickLanHost();return t?{url:`${e.scheme}://${t}:${e.port}`,source:`gateway.bind=lan`}:{error:`gateway.bind=lan set, but no private LAN IP was found.`}}return null}const b=[`tailscale`,`/Applications/Tailscale.app/Contents/MacOS/Tailscale`];function x(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t===-1||n<=t)return{};try{return JSON.parse(e.slice(t,n+1))}catch{return{}}}function S(e){let t=x(e),n=typeof t.Self==`object`&&t.Self!==null?t.Self:void 0,r=typeof n?.DNSName==`string`?n.DNSName:void 0;if(r&&r.length>0)return r.replace(/\.$/,``);let i=Array.isArray(n?.TailscaleIPs)?n.TailscaleIPs:[];return i.length>0?i[0]??null:null}async function C(e){if(!e)return null;for(let t of b)try{let n=await e([t,`status`,`--json`],{timeoutMs:5e3});if(n.code!==0)continue;let r=n.stdout.trim();if(!r)continue;let i=S(r);if(i)return i}catch{continue}return null}function w(e,t){let n=e.trim();if(!n)return null;try{let e=new URL(n),t=e.protocol.replace(`:`,``);if(!t)return null;let r=t===`http`?`ws`:t===`https`?`wss`:t;if(r!==`ws`&&r!==`wss`)return null;let i=e.hostname;return i?`${r}://${i}${e.port?`:${e.port}`:``}`:null}catch{}let r=n.split(`/`)[0]??``;return r?`${t}://${r}`:null}function T(e,t){return t?.forceSecure||e.gateway?.tls?.enabled===!0?`wss`:`ws`}function E(e){return l(e)}function D(e){return i(e)}function O(e,t){let n=e();for(let e of Object.values(n))if(e)for(let n of e){let e=n?.family===`IPv4`;if(!n||n.internal||!e)continue;let r=n.address?.trim()??``;if(r&&t(r))return r}return null}function k(e){return O(e,E)}function A(e){return O(e,D)}function j(e){return e.OPENCLAW_GATEWAY_TOKEN?.trim()||e.CLAWDBOT_GATEWAY_TOKEN?.trim()||void 0}function M(e){return e.OPENCLAW_GATEWAY_PASSWORD?.trim()||e.CLAWDBOT_GATEWAY_PASSWORD?.trim()||void 0}function N(e,t){let n=e.gateway?.auth?.mode,r=e.secrets?.defaults,i=d({value:e.gateway?.auth?.token,defaults:r}).ref,a=d({value:e.gateway?.auth?.password,defaults:r}).ref,o=j(t),s=M(t),c=o||(i?void 0:f(e.gateway?.auth?.token)),l=s||(a?void 0:f(e.gateway?.auth?.password));return n===`password`?l?{password:l,label:`password`}:{error:`Gateway auth is set to password, but no password is configured.`}:n===`token`?c?{token:c,label:`token`}:{error:`Gateway auth is set to token, but no token is configured.`}:c?{token:c,label:`token`}:l?{password:l,label:`password`}:{error:`Gateway auth is not configured (no token or password).`}}async function P(e,t){if(j(t))return e;let n=e.gateway?.auth?.mode;if(n===`password`||n===`none`||n===`trusted-proxy`||n!==`token`&&(t.OPENCLAW_GATEWAY_PASSWORD?.trim()||t.CLAWDBOT_GATEWAY_PASSWORD?.trim()))return e;let i=await r({config:e,env:t,value:e.gateway?.auth?.token,path:`gateway.auth.token`});return i?{...e,gateway:{...e.gateway,auth:{...e.gateway?.auth,token:i}}}:e}async function F(e,t){if(M(t))return e;let n=e.gateway?.auth?.mode;if(n===`token`||n===`none`||n===`trusted-proxy`||n!==`password`&&(j(t)||u(e.gateway?.auth?.token,e.secrets?.defaults)))return e;let i=await r({config:e,env:t,value:e.gateway?.auth?.password,path:`gateway.auth.password`});return i?{...e,gateway:{...e.gateway,auth:{...e.gateway?.auth,password:i}}}:e}async function I(t,n){let r=T(t,{forceSecure:n.forceSecure}),i=e(t,n.env);if(typeof n.publicUrl==`string`&&n.publicUrl.trim()){let e=w(n.publicUrl,r);return e?{url:e,source:`plugins.entries.device-pair.config.publicUrl`}:{error:`Configured publicUrl is invalid.`}}let a=t.gateway?.remote?.url,o=typeof a==`string`&&a.trim()?w(a,r):null;if(n.preferRemoteUrl&&o)return{url:o,source:`gateway.remote.url`};let s=t.gateway?.tailscale?.mode??`off`;if(s===`serve`||s===`funnel`){let e=await C(n.runCommandWithTimeout);return e?{url:`wss://${e}`,source:`gateway.tailscale.mode=${s}`}:{error:`Tailscale Serve is enabled, but MagicDNS could not be resolved.`}}return o?{url:o,source:`gateway.remote.url`}:y({bind:t.gateway?.bind,customBindHost:t.gateway?.customBindHost,scheme:r,port:i,pickTailnetHost:()=>A(n.networkInterfaces),pickLanHost:()=>k(n.networkInterfaces)})||{error:`Gateway is only bound to loopback. Set gateway.bind=lan, enable tailscale serve, or configure plugins.entries.device-pair.config.publicUrl.`}}function L(e){let t=JSON.stringify(e);return Buffer.from(t,`utf8`).toString(`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}async function R(e,t={}){o(e);let n=t.env??process.env,r=await F(await P(e,n),n),i=N(r,n);if(i.error)return{ok:!1,error:i.error};let a=await I(r,{env:n,publicUrl:t.publicUrl,preferRemoteUrl:t.preferRemoteUrl,forceSecure:t.forceSecure,runCommandWithTimeout:t.runCommandWithTimeout,networkInterfaces:t.networkInterfaces??_.networkInterfaces});return a.url?i.label?{ok:!0,payload:{url:a.url,token:i.token,password:i.password},authLabel:i.label,urlSource:a.source??`unknown`}:{ok:!1,error:`Gateway auth is not configured (no token or password).`}:{ok:!1,error:a.error??`Gateway URL unavailable.`}}function z(e){return new Promise(t=>{v.generate(e,{small:!0},e=>{t(e)})})}function B(e){let t=e.plugins?.entries?.[`device-pair`]?.config?.publicUrl;if(typeof t!=`string`)return;let n=t.trim();return n.length>0?n:void 0}function V(e,t){if(a(t))return!1;let n=e.gateway?.auth?.mode;if(n===`password`)return!0;if(n===`token`||n===`none`||n===`trusted-proxy`)return!1;let r=c(t),i=u(e.gateway?.auth?.token,e.secrets?.defaults);return!r&&!i}async function H(e){let t=await r({config:e,env:process.env,value:e.gateway?.auth?.password,path:`gateway.auth.password`});t&&e.gateway?.auth&&(e.gateway.auth.password=t)}function U(e,r){if(e.length===0)return;let i=r.json===!0||r.setupCodeOnly===!0;for(let r of e){let e=t.warn(`[secrets] ${r}`);i?n.error(e):n.log(e)}}function W(e){e.command(`qr`).description(`Generate an iOS pairing QR code and setup code`).addHelpText(`after`,()=>`\n${t.muted(`Docs:`)} ${g(`/cli/qr`,`docs.openclaw.ai/cli/qr`)}\n`).option(`--remote`,`Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)`,!1).option(`--url <url>`,`Override gateway URL used in the setup payload`).option(`--public-url <url>`,`Override gateway public URL used in the setup payload`).option(`--token <token>`,`Override gateway token for setup payload`).option(`--password <password>`,`Override gateway password for setup payload`).option(`--setup-code-only`,`Print only the setup code`,!1).option(`--no-ascii`,`Skip ASCII QR rendering`).option(`--json`,`Output JSON`,!1).action(async e=>{try{if(e.token&&e.password)throw Error(`Use either --token or --password, not both.`);let r=typeof e.token==`string`?e.token.trim():``,i=typeof e.password==`string`?e.password.trim():``,a=e.remote===!0,o=s();if(a&&!e.url&&!e.publicUrl){let e=o.gateway?.tailscale?.mode??`off`,t=o.gateway?.remote?.url;if(!(typeof t==`string`&&t.trim().length>0)&&!(e===`serve`||e===`funnel`))throw Error(`qr --remote requires gateway.remote.url (or gateway.tailscale.mode=serve/funnel).`)}let c=o,l=[];if(a&&!r&&!i){let e=await h({config:o,commandName:`qr --remote`,targetIds:m()});c=e.resolvedConfig,l=e.diagnostics}let u={...c,gateway:{...c.gateway,auth:{...c.gateway?.auth}}};if(U(l,e),r&&(u.gateway.auth.mode=`token`,u.gateway.auth.token=r,u.gateway.auth.password=void 0),i&&(u.gateway.auth.mode=`password`,u.gateway.auth.password=i,u.gateway.auth.token=void 0),a&&!r&&!i){let e=typeof u.gateway?.remote?.token==`string`?u.gateway.remote.token.trim():``,t=typeof u.gateway?.remote?.password==`string`?u.gateway.remote.password.trim():``;e?(u.gateway.auth.mode=`token`,u.gateway.auth.token=e,u.gateway.auth.password=void 0):t&&(u.gateway.auth.mode=`password`,u.gateway.auth.password=t,u.gateway.auth.token=void 0)}!a&&!i&&!r&&V(u,process.env)&&await H(u);let d=await R(u,{publicUrl:(typeof e.url==`string`&&e.url.trim()?e.url.trim():typeof e.publicUrl==`string`&&e.publicUrl.trim()?e.publicUrl.trim():void 0)??(a?void 0:B(u)),preferRemoteUrl:a,runCommandWithTimeout:async(e,t)=>await p(e,{timeoutMs:t.timeoutMs})});if(!d.ok)throw Error(d.error);let f=L(d.payload);if(e.setupCodeOnly){n.log(f);return}if(e.json){n.log(JSON.stringify({setupCode:f,gatewayUrl:d.payload.url,auth:d.authLabel,urlSource:d.urlSource},null,2));return}let g=[t.heading(`Pairing QR`),`Scan this with the OpenClaw iOS app (Onboarding -> Scan QR).`,``];if(e.ascii!==!1){let e=await z(f);g.push(e.trimEnd(),``)}g.push(`${t.muted(`Setup code:`)} ${f}`,`${t.muted(`Gateway:`)} ${d.payload.url}`,`${t.muted(`Auth:`)} ${d.authLabel}`,`${t.muted(`Source:`)} ${d.urlSource}`,``,`Approve after scan with:`,` ${t.command(`openclaw devices list`)}`,` ${t.command(`openclaw devices approve <requestId>`)}`),n.log(g.join(`
|
|
2
|
-
`))}catch(e){n.error(String(e)),n.exit(1)}})}export{W as registerQrCli};
|
|
2
|
+
`))}catch(e){n.error(String(e)),n.exit(1)}})}export{W as registerQrCli};
|
|
@@ -3,4 +3,4 @@ import{t as e}from"./subsystem-C5XF2Fy5.js";import{r as t,w as n}from"./windows-
|
|
|
3
3
|
`),r=e.lineNo,i=t.lineNo;a.push({startLine:r,endLine:i,text:n,hash:P(n),embeddingInput:T(n)})},l=()=>{if(i<=0||o.length===0){o=[],s=0;return}let e=0,t=[];for(let n=o.length-1;n>=0;--n){let r=o[n];if(r&&(e+=r.line.length+1,t.unshift(r),e>=i))break}o=t,s=t.reduce((e,t)=>e+t.line.length+1,0)};for(let e=0;e<n.length;e+=1){let t=n[e]??``,i=e+1,a=[];if(t.length===0)a.push(``);else for(let e=0;e<t.length;e+=r)a.push(t.slice(e,e+r));for(let e of a){let t=e.length+1;s+t>r&&o.length>0&&(c(),l()),o.push({line:e,lineNo:i}),s+=t}}return c(),a}function z(e,t){if(!(!t||t.length===0))for(let n of e)n.startLine=t[n.startLine-1]??n.startLine,n.endLine=t[n.endLine-1]??n.endLine}function B(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function V(e,t){if(e.length===0||t.length===0)return 0;let n=Math.min(e.length,t.length),r=0,i=0,a=0;for(let o=0;o<n;o+=1){let n=e[o]??0,s=t[o]??0;r+=n*s,i+=n*n,a+=s*s}return i===0||a===0?0:r/(Math.sqrt(i)*Math.sqrt(a))}async function H(e,t){let{results:r,firstError:i,hasError:a}=await n({tasks:e,limit:t,errorMode:`stop`});if(a)throw i;return r}const U=e(`memory`);async function W(e){let t=i(e);try{return(await c.readdir(t,{withFileTypes:!0})).filter(e=>e.isFile()).map(e=>e.name).filter(e=>e.endsWith(`.jsonl`)).map(e=>s.join(t,e))}catch{return[]}}function G(e){return s.join(`sessions`,s.basename(e)).replace(/\\/g,`/`)}function K(e){return e.replace(/\s*\n+\s*/g,` `).replace(/\s+/g,` `).trim()}function re(e){if(typeof e==`string`)return K(e)||null;if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n;if(e.type!==`text`||typeof e.text!=`string`)continue;let r=K(e.text);r&&t.push(r)}return t.length===0?null:t.join(` `)}async function q(e){try{let t=await c.stat(e),n=(await c.readFile(e,`utf-8`)).split(`
|
|
4
4
|
`),i=[],a=[];for(let e=0;e<n.length;e++){let t=n[e];if(!t.trim())continue;let o;try{o=JSON.parse(t)}catch{continue}if(!o||typeof o!=`object`||o.type!==`message`)continue;let s=o.message;if(!s||typeof s.role!=`string`||s.role!==`user`&&s.role!==`assistant`)continue;let c=re(s.content);if(!c)continue;let l=r(c,{mode:`tools`}),u=s.role===`user`?`User`:`Assistant`;i.push(`${u}: ${l}`),a.push(e+1)}let o=i.join(`
|
|
5
5
|
`);return{path:G(e),absPath:e,mtimeMs:t.mtimeMs,size:t.size,hash:P(o+`
|
|
6
|
-
`+a.join(`,`)),content:o,lineMap:a}}catch(t){return U.debug(`Failed reading session file ${e}: ${String(t)}`),null}}const J=Symbol.for(`openclaw.warning-filter`);function Y(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 X(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 ie(){let e=globalThis;if(e[J]?.installed)return;let t=process.emitWarning.bind(process),n=((...e)=>{if(!Y(X(e)))return Reflect.apply(t,process,e)});process.emitWarning=n,e[J]={installed:!0}}const ae=a(import.meta.url);function oe(){ie();try{return ae(`node:sqlite`)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`SQLite support is unavailable in this Node runtime (missing node:sqlite). ${t}`,{cause:e})}}const se=new Set(`a.an.the.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.can.may.might.in.on.at.to.for.of.with.by.from.about.into.through.during.before.after.above.below.between.under.over.and.or.but.if.then.because.as.while.when.where.what.which.who.how.why.yesterday.today.tomorrow.earlier.later.recently.before.ago.just.now.thing.things.stuff.something.anything.everything.nothing.please.help.find.show.get.tell.give`.split(`.`)),ce=new Set(`el.la.los.las.un.una.unos.unas.este.esta.ese.esa.yo.me.mi.nosotros.nosotras.tu.tus.usted.ustedes.ellos.ellas.de.del.a.en.con.por.para.sobre.entre.y.o.pero.si.porque.como.es.son.fue.fueron.ser.estar.haber.tener.hacer.ayer.hoy.mañana.antes.despues.después.ahora.recientemente.que.qué.cómo.cuando.cuándo.donde.dónde.porqué.favor.ayuda`.split(`.`)),le=new Set(`o.a.os.as.um.uma.uns.umas.este.esta.esse.essa.eu.me.meu.minha.nos.nós.você.vocês.ele.ela.eles.elas.de.do.da.em.com.por.para.sobre.entre.e.ou.mas.se.porque.como.é.são.foi.foram.ser.estar.ter.fazer.ontem.hoje.amanhã.antes.depois.agora.recentemente.que.quê.quando.onde.porquê.favor.ajuda`.split(`.`)),ue=new Set(`ال.و.أو.لكن.ثم.بل.أنا.نحن.هو.هي.هم.هذا.هذه.ذلك.تلك.هنا.هناك.من.إلى.الى.في.على.عن.مع.بين.ل.ب.ك.كان.كانت.يكون.تكون.صار.أصبح.يمكن.ممكن.بالأمس.امس.اليوم.غدا.الآن.قبل.بعد.مؤخرا.لماذا.كيف.ماذا.متى.أين.هل.من فضلك.فضلا.ساعد`.split(`.`)),Z=new Set(`은.는.이.가.을.를.의.에.에서.로.으로.와.과.도.만.까지.부터.한테.에게.께.처럼.같이.보다.마다.밖에.대로.나.나는.내가.나를.너.우리.저.저희.그.그녀.그들.이것.저것.그것.여기.저기.거기.있다.없다.하다.되다.이다.아니다.보다.주다.오다.가다.것.거.등.수.때.곳.중.분.잘.더.또.매우.정말.아주.많이.너무.좀.그리고.하지만.그래서.그런데.그러나.또는.그러면.왜.어떻게.뭐.언제.어디.누구.무엇.어떤.어제.오늘.내일.최근.지금.아까.나중.전에.제발.부탁`.split(`.`)),de=[`에서`,`으로`,`에게`,`한테`,`처럼`,`같이`,`보다`,`까지`,`부터`,`마다`,`밖에`,`대로`,`은`,`는`,`이`,`가`,`을`,`를`,`의`,`에`,`로`,`와`,`과`,`도`,`만`].toSorted((e,t)=>t.length-e.length);function fe(e){for(let t of de)if(e.length>t.length&&e.endsWith(t))return e.slice(0,-t.length);return null}function pe(e){return/[\uac00-\ud7af]/.test(e)?e.length>=2:/^[a-z0-9_]+$/i.test(e)}const me=new Set(`これ.それ.あれ.この.その.あの.ここ.そこ.あそこ.する.した.して.です.ます.いる.ある.なる.できる.の.こと.もの.ため.そして.しかし.また.でも.から.まで.より.だけ.なぜ.どう.何.いつ.どこ.誰.どれ.昨日.今日.明日.最近.今.さっき.前.後`.split(`.`)),Q=new Set(`我.我们.你.你们.他.她.它.他们.这.那.这个.那个.这些.那些.的.了.着.过.得.地.吗.呢.吧.啊.呀.嘛.啦.是.有.在.被.把.给.让.用.到.去.来.做.说.看.找.想.要.能.会.可以.和.与.或.但.但是.因为.所以.如果.虽然.而.也.都.就.还.又.再.才.只.之前.以前.之后.以后.刚才.现在.昨天.今天.明天.最近.东西.事情.事.什么.哪个.哪些.怎么.为什么.多少.请.帮.帮忙.告诉`.split(`.`));function $(e){return se.has(e)||ce.has(e)||le.has(e)||ue.has(e)||Q.has(e)||Z.has(e)||me.has(e)}function he(e){return!(!e||e.length===0||/^[a-zA-Z]+$/.test(e)&&e.length<3||/^\d+$/.test(e)||/^[\p{P}\p{S}]+$/u.test(e))}function ge(e){let t=[],n=e.toLowerCase().trim().split(/[\s\p{P}]+/u).filter(Boolean);for(let e of n)if(/[\u3040-\u30ff]/.test(e)){let n=e.match(/[a-z0-9_]+|[\u30a0-\u30ffー]+|[\u4e00-\u9fff]+|[\u3040-\u309f]{2,}/g)??[];for(let e of n)if(/^[\u4e00-\u9fff]+$/.test(e)){t.push(e);for(let n=0;n<e.length-1;n++)t.push(e[n]+e[n+1])}else t.push(e)}else if(/[\u4e00-\u9fff]/.test(e)){let n=Array.from(e).filter(e=>/[\u4e00-\u9fff]/.test(e));t.push(...n);for(let e=0;e<n.length-1;e++)t.push(n[e]+n[e+1])}else if(/[\uac00-\ud7af\u3131-\u3163]/.test(e)){let n=fe(e),r=n!==null&&Z.has(n);!Z.has(e)&&!r&&t.push(e),n&&!Z.has(n)&&pe(n)&&t.push(n)}else t.push(e);return t}function _e(e){let t=ge(e),n=[],r=new Set;for(let e of t)$(e)||he(e)&&(r.has(e)||(r.add(e),n.push(e)));return n}export{y as A,b as C,h as D,v as E,m as O,w as S,_ as T,z as _,W as a,C as b,L as c,D as d,P as f,B as g,k as h,q as i,p as k,R as l,N as m,$ as n,G as o,A as p,oe as r,F as s,_e as t,V as u,H as v,x as w,S as x,ne as y};
|
|
6
|
+
`+a.join(`,`)),content:o,lineMap:a}}catch(t){return U.debug(`Failed reading session file ${e}: ${String(t)}`),null}}const J=Symbol.for(`openclaw.warning-filter`);function Y(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 X(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 ie(){let e=globalThis;if(e[J]?.installed)return;let t=process.emitWarning.bind(process),n=((...e)=>{if(!Y(X(e)))return Reflect.apply(t,process,e)});process.emitWarning=n,e[J]={installed:!0}}const ae=a(import.meta.url);function oe(){ie();try{return ae(`node:sqlite`)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`SQLite support is unavailable in this Node runtime (missing node:sqlite). ${t}`,{cause:e})}}const se=new Set(`a.an.the.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.can.may.might.in.on.at.to.for.of.with.by.from.about.into.through.during.before.after.above.below.between.under.over.and.or.but.if.then.because.as.while.when.where.what.which.who.how.why.yesterday.today.tomorrow.earlier.later.recently.before.ago.just.now.thing.things.stuff.something.anything.everything.nothing.please.help.find.show.get.tell.give`.split(`.`)),ce=new Set(`el.la.los.las.un.una.unos.unas.este.esta.ese.esa.yo.me.mi.nosotros.nosotras.tu.tus.usted.ustedes.ellos.ellas.de.del.a.en.con.por.para.sobre.entre.y.o.pero.si.porque.como.es.son.fue.fueron.ser.estar.haber.tener.hacer.ayer.hoy.mañana.antes.despues.después.ahora.recientemente.que.qué.cómo.cuando.cuándo.donde.dónde.porqué.favor.ayuda`.split(`.`)),le=new Set(`o.a.os.as.um.uma.uns.umas.este.esta.esse.essa.eu.me.meu.minha.nos.nós.você.vocês.ele.ela.eles.elas.de.do.da.em.com.por.para.sobre.entre.e.ou.mas.se.porque.como.é.são.foi.foram.ser.estar.ter.fazer.ontem.hoje.amanhã.antes.depois.agora.recentemente.que.quê.quando.onde.porquê.favor.ajuda`.split(`.`)),ue=new Set(`ال.و.أو.لكن.ثم.بل.أنا.نحن.هو.هي.هم.هذا.هذه.ذلك.تلك.هنا.هناك.من.إلى.الى.في.على.عن.مع.بين.ل.ب.ك.كان.كانت.يكون.تكون.صار.أصبح.يمكن.ممكن.بالأمس.امس.اليوم.غدا.الآن.قبل.بعد.مؤخرا.لماذا.كيف.ماذا.متى.أين.هل.من فضلك.فضلا.ساعد`.split(`.`)),Z=new Set(`은.는.이.가.을.를.의.에.에서.로.으로.와.과.도.만.까지.부터.한테.에게.께.처럼.같이.보다.마다.밖에.대로.나.나는.내가.나를.너.우리.저.저희.그.그녀.그들.이것.저것.그것.여기.저기.거기.있다.없다.하다.되다.이다.아니다.보다.주다.오다.가다.것.거.등.수.때.곳.중.분.잘.더.또.매우.정말.아주.많이.너무.좀.그리고.하지만.그래서.그런데.그러나.또는.그러면.왜.어떻게.뭐.언제.어디.누구.무엇.어떤.어제.오늘.내일.최근.지금.아까.나중.전에.제발.부탁`.split(`.`)),de=[`에서`,`으로`,`에게`,`한테`,`처럼`,`같이`,`보다`,`까지`,`부터`,`마다`,`밖에`,`대로`,`은`,`는`,`이`,`가`,`을`,`를`,`의`,`에`,`로`,`와`,`과`,`도`,`만`].toSorted((e,t)=>t.length-e.length);function fe(e){for(let t of de)if(e.length>t.length&&e.endsWith(t))return e.slice(0,-t.length);return null}function pe(e){return/[\uac00-\ud7af]/.test(e)?e.length>=2:/^[a-z0-9_]+$/i.test(e)}const me=new Set(`これ.それ.あれ.この.その.あの.ここ.そこ.あそこ.する.した.して.です.ます.いる.ある.なる.できる.の.こと.もの.ため.そして.しかし.また.でも.から.まで.より.だけ.なぜ.どう.何.いつ.どこ.誰.どれ.昨日.今日.明日.最近.今.さっき.前.後`.split(`.`)),Q=new Set(`我.我们.你.你们.他.她.它.他们.这.那.这个.那个.这些.那些.的.了.着.过.得.地.吗.呢.吧.啊.呀.嘛.啦.是.有.在.被.把.给.让.用.到.去.来.做.说.看.找.想.要.能.会.可以.和.与.或.但.但是.因为.所以.如果.虽然.而.也.都.就.还.又.再.才.只.之前.以前.之后.以后.刚才.现在.昨天.今天.明天.最近.东西.事情.事.什么.哪个.哪些.怎么.为什么.多少.请.帮.帮忙.告诉`.split(`.`));function $(e){return se.has(e)||ce.has(e)||le.has(e)||ue.has(e)||Q.has(e)||Z.has(e)||me.has(e)}function he(e){return!(!e||e.length===0||/^[a-zA-Z]+$/.test(e)&&e.length<3||/^\d+$/.test(e)||/^[\p{P}\p{S}]+$/u.test(e))}function ge(e){let t=[],n=e.toLowerCase().trim().split(/[\s\p{P}]+/u).filter(Boolean);for(let e of n)if(/[\u3040-\u30ff]/.test(e)){let n=e.match(/[a-z0-9_]+|[\u30a0-\u30ffー]+|[\u4e00-\u9fff]+|[\u3040-\u309f]{2,}/g)??[];for(let e of n)if(/^[\u4e00-\u9fff]+$/.test(e)){t.push(e);for(let n=0;n<e.length-1;n++)t.push(e[n]+e[n+1])}else t.push(e)}else if(/[\u4e00-\u9fff]/.test(e)){let n=Array.from(e).filter(e=>/[\u4e00-\u9fff]/.test(e));t.push(...n);for(let e=0;e<n.length-1;e++)t.push(n[e]+n[e+1])}else if(/[\uac00-\ud7af\u3131-\u3163]/.test(e)){let n=fe(e),r=n!==null&&Z.has(n);!Z.has(e)&&!r&&t.push(e),n&&!Z.has(n)&&pe(n)&&t.push(n)}else t.push(e);return t}function _e(e){let t=ge(e),n=[],r=new Set;for(let e of t)$(e)||he(e)&&(r.has(e)||(r.add(e),n.push(e)));return n}export{y as A,b as C,h as D,v as E,m as O,w as S,_ as T,z as _,W as a,C as b,L as c,D as d,P as f,B as g,k as h,q as i,p as k,R as l,N as m,$ as n,G as o,A as p,oe as r,F as s,_e as t,V as u,H as v,x as w,S as x,ne as y};
|