@qqbrowser/openclaw-qbot 0.0.139 → 0.0.142
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 -0
- package/dist/acp-cli-BaslDuk6.js +1 -0
- package/dist/acp-cli-f5-uI85a.js +1 -0
- package/dist/active-listener-Cce5tcPa.js +1 -0
- package/dist/active-listener-D8VOdVx3.js +1 -0
- package/dist/active-listener-DeKRt_UV.js +1 -0
- package/dist/active-listener-Dle9QX40.js +1 -0
- package/dist/agent-scope-DAWJwFfl.js +1 -0
- package/dist/agent-scope-DXZc3eNT.js +1 -0
- package/dist/agents-Bpp_F5In.js +1 -0
- package/dist/agents.config-B6LRG9eP.js +1 -0
- package/dist/agents.config-DfIJAGcd.js +1 -0
- package/dist/allow-from-B6dI7oz8.js +1 -0
- package/dist/allow-from-DEeVIPKS.js +1 -0
- package/dist/api-BeG0ObSq.js +1 -0
- package/dist/api-Dx8x1KTs.js +1 -0
- package/dist/api-key-rotation-BRt-vnRV.js +1 -0
- package/dist/api-key-rotation-CCH1wYVU.js +1 -0
- package/dist/api-key-rotation-D0QU-kQ9.js +1 -0
- package/dist/api-key-rotation-Di6QgXx7.js +1 -0
- package/dist/arg-split-BOqSMBuf.js +1 -0
- package/dist/arg-split-DE5RqDHq.js +1 -0
- package/dist/audio-preflight-B5o7P9qi.js +1 -0
- package/dist/audio-preflight-CxD7VCHW.js +1 -0
- package/dist/audio-preflight-DKSCBKRb.js +1 -0
- package/dist/audio-preflight-Dpk8-Bmk.js +1 -0
- package/dist/audio-transcription-runner-Bd1OZC6K.js +1 -0
- package/dist/audio-transcription-runner-D4Bp6MM7.js +1 -0
- package/dist/audio-transcription-runner-DPwmBYQj.js +1 -0
- package/dist/audio-transcription-runner-DSr6OIz1.js +1 -0
- package/dist/audit-C7RP7G_g.js +1 -0
- package/dist/audit-jkdcAUep.js +1 -0
- package/dist/audit-membership-runtime-BpRsMj5-.js +1 -0
- package/dist/audit-membership-runtime-BsfLZNBj.js +1 -0
- package/dist/audit-membership-runtime-DRHirRmx.js +1 -0
- package/dist/audit-membership-runtime-g0dEWJTp.js +1 -0
- package/dist/audit-membership-runtime-kdyToskD.js +1 -0
- package/dist/auth-choice-B7LSoXZ_.js +1 -0
- package/dist/auth-choice-CxMH4c-u.js +1 -0
- package/dist/auth-choice-DvTApGhx.js +1 -0
- package/dist/auth-choice-EQdNd7jO.js +1 -0
- package/dist/auth-choice-options-B3WQyS7I.js +1 -0
- package/dist/auth-choice-options-Dw14noox.js +1 -0
- package/dist/auth-choice-prompt-uegl56cf.js +1 -0
- package/dist/auth-choice-prompt-xYj13czb.js +1 -0
- package/dist/auth-choice.apply-helpers-B7S-PcH_.js +1 -0
- package/dist/auth-choice.apply-helpers-gaL-oSft.js +1 -0
- package/dist/auth-profiles-T8DuH3ax.js +1 -0
- package/dist/auth-token-9OTF1FmL.js +1 -0
- package/dist/auth-token-kGltuM6S.js +1 -0
- package/dist/banner-9u45RL26.js +1 -0
- package/dist/bonjour-discovery-CFZXPega.js +1 -0
- package/dist/bonjour-discovery-CjivQOxi.js +1 -0
- package/dist/boolean-Ch3DfXPy.js +1 -0
- package/dist/boolean-D15s2V33.js +1 -0
- package/dist/boolean-DypnRoRK.js +1 -0
- package/dist/brew-COcDl8CB.js +1 -0
- package/dist/brew-DDPm_HfE.js +1 -0
- package/dist/browser-cli-DQHE2iPY.js +1 -0
- package/dist/browser-cli-Dt0ds-an.js +1 -0
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +1 -0
- package/dist/bundled/bootstrap-extra-files/handler.js +1 -0
- package/dist/bundled/command-logger/handler.js +1 -0
- package/dist/bundled/session-memory/handler.js +1 -0
- package/dist/call-B8Fb4_oh.js +1 -0
- package/dist/call-CqoMqP5b.js +1 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +1705 -2
- package/dist/channel-account-context-BMPAMZEv.js +1 -0
- package/dist/channel-account-context-DAcarnqW.js +1 -0
- package/dist/channel-activity-B04WbrrK.js +1 -0
- package/dist/channel-activity-BBrgoad1.js +1 -0
- package/dist/channel-activity-CgbOWaay.js +1 -0
- package/dist/channel-activity-YIMhOAUo.js +1 -0
- package/dist/channel-activity-YjYNzCpJ.js +1 -0
- package/dist/channel-options-CEIzjOno.js +1 -0
- package/dist/channel-options-D2syI791.js +1 -0
- package/dist/channel-selection-BBeE1TmB.js +1 -0
- package/dist/channel-selection-CbNtbAEf.js +1 -0
- package/dist/channel-web-BrElpZAc.js +1 -0
- package/dist/channel-web-CxHbET4B.js +1 -0
- package/dist/channels/plugins/actions/discord.js +1 -0
- package/dist/channels/plugins/actions/signal.js +1 -0
- package/dist/channels/plugins/actions/telegram.js +1 -0
- package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -0
- package/dist/channels-cli-BmAJuuRs.js +1 -0
- package/dist/channels-cli-Dgosczr6.js +1 -0
- package/dist/channels-status-issues-8eFrGKyf.js +1 -0
- package/dist/channels-status-issues-PRgOT90w.js +1 -0
- package/dist/chat-envelope-Bznn2SoS.js +1 -0
- package/dist/chat-envelope-HVpKusFc.js +1 -0
- package/dist/clack-prompter-DBPdGdqp.js +1 -0
- package/dist/clack-prompter-Dq0aY6iM.js +1 -0
- package/dist/clawbot-cli-CgS7TkEx.js +1 -0
- package/dist/clawbot-cli-DZ2K0OTk.js +1 -0
- package/dist/cleanup-utils-BWm70DoD.js +1 -0
- package/dist/cleanup-utils-D-RhEX6F.js +1 -0
- package/dist/cli-BcnoCo4z.js +1 -0
- package/dist/cli-D8T2tphD.js +1 -0
- package/dist/cli-utils-BY7dLMFy.js +1 -0
- package/dist/cli-utils-BleB1eys.js +1 -0
- package/dist/clipboard-Bk8cviBt.js +1 -0
- package/dist/clipboard-CKT_VIkG.js +1 -0
- package/dist/cmd-argv-BBT5l8AV.js +1 -0
- package/dist/cmd-argv-Bh-KpaZ0.js +1 -0
- package/dist/command-format-BbDT1tlm.js +1 -0
- package/dist/command-format-CLxIPuLR.js +1 -0
- package/dist/command-options-BpOUDl2S.js +1 -0
- package/dist/command-options-Bq5nQxz6.js +1 -0
- package/dist/command-poll-backoff-BZLHYB2k.js +1 -0
- package/dist/command-poll-backoff-Cww_r-24.js +1 -0
- package/dist/command-poll-backoff-Df6cOQrX.js +1 -0
- package/dist/command-poll-backoff-endAPdwn.js +1 -0
- package/dist/command-registry-CfuXCRwV.js +1 -0
- package/dist/command-secret-targets-BVN3kiT9.js +1 -0
- package/dist/command-secret-targets-BlN-J_fA.js +1 -0
- package/dist/commands-CGpM84iR.js +1 -0
- package/dist/commands-Dy7duWlt.js +1 -0
- package/dist/commands-registry-B1x54ukc.js +1 -0
- package/dist/commands-registry-Cpl4QnG4.js +1 -0
- package/dist/commands-registry-D40KqYOm.js +1 -0
- package/dist/commands-registry-SeddSmFK.js +1 -0
- package/dist/compact-Dg66DXx_.js +1 -0
- package/dist/completion-cli-BZi4nuQb.js +1 -0
- package/dist/completion-cli-C40TWdsv.js +1 -0
- package/dist/config-BqW5S1xL.js +1 -0
- package/dist/config-D12ZLKqh.js +1 -0
- package/dist/config-cli-1ojSLwAj.js +1 -0
- package/dist/config-cli-CBte2b1h.js +1 -0
- package/dist/config-guard-BTNXbWoO.js +1 -0
- package/dist/config-guard-sYYx9zEF.js +1 -0
- package/dist/config-validation-C1La_IZU.js +1 -0
- package/dist/config-validation-DviYxW8Y.js +1 -0
- package/dist/configure-DJrNDEpR.js +1 -0
- package/dist/configure-kod4tmZa.js +1 -0
- package/dist/connection-auth-B_Uk6Vk8.js +1 -0
- package/dist/connection-auth-C8iru0UB.js +1 -0
- package/dist/context-window-guard-7crlatf9.js +1 -0
- package/dist/context-window-guard-CPChk363.js +1 -0
- package/dist/control-ui-assets-BIa0GGDg.js +1 -0
- package/dist/control-ui-assets-CTHGGgaX.js +1 -0
- package/dist/cron-cli-Dha16Lo-.js +1 -0
- package/dist/cron-cli-QHS2pKZ_.js +1 -0
- package/dist/daemon-cli-BuXTzSnU.js +1 -0
- package/dist/daemon-cli-DOTKuS7d.js +1 -0
- package/dist/daemon-cli.js +1 -0
- package/dist/daemon-install-C30rBssi.js +1 -0
- package/dist/daemon-install-HrqlOCrc.js +1 -0
- package/dist/daemon-install-plan.shared-CfA37Ut_.js +1 -0
- package/dist/daemon-install-plan.shared-Dx3DBXCG.js +1 -0
- package/dist/daemon-runtime-DHiDbRuC.js +1 -0
- package/dist/daemon-runtime-VcpeBRJV.js +1 -0
- package/dist/dangerous-name-matching-BOmvAibz.js +1 -0
- package/dist/dangerous-name-matching-DtllRqBD.js +1 -0
- package/dist/dangerous-tools-CFRYQJ6V.js +1 -0
- package/dist/dangerous-tools-oYCu5wfC.js +1 -0
- package/dist/deliver-56mQkDw3.js +1 -0
- package/dist/deliver-BFQ4Zx9z.js +1 -0
- package/dist/deliver-BHuhHfkH.js +1 -0
- package/dist/deliver-ClBkV2eD.js +1 -0
- package/dist/delivery-queue-CKbauSFq.js +1 -0
- package/dist/delivery-queue-nkPJu0fY.js +1 -0
- package/dist/device-pairing-CTFpaTrD.js +1 -0
- package/dist/device-pairing-QTK0dod3.js +1 -0
- package/dist/devices-cli-Ckxd0k0I.js +1 -0
- package/dist/devices-cli-Db36mBHq.js +1 -0
- package/dist/diagnostic-BrE4lMIf.js +1 -0
- package/dist/diagnostic-CDxNevIQ.js +1 -0
- package/dist/diagnostic-DOzHPnht.js +1 -0
- package/dist/diagnostic-DQq4Bwrs.js +1 -0
- package/dist/diagnostics-BgbeL9KE.js +1 -0
- package/dist/diagnostics-Cdctg9K_.js +1 -0
- package/dist/directory-cli-DDTaUkjW.js +1 -0
- package/dist/directory-cli-_gTFSHMW.js +1 -0
- package/dist/dns-cli--4PwtR2Y.js +1 -0
- package/dist/dns-cli-C4DwKquN.js +1 -0
- package/dist/docs-cli-Cdw9Iz9a.js +1 -0
- package/dist/docs-cli-ClD2UyX1.js +1 -0
- package/dist/doctor-completion-BJ6steqx.js +1 -0
- package/dist/doctor-completion-DMJhfrtC.js +1 -0
- package/dist/doctor-config-flow-D4F3mz4h.js +1 -0
- package/dist/doctor-config-flow-DnOyVZhQ.js +1 -0
- package/dist/enable-BhD84GhD.js +1 -0
- package/dist/enable-Ccf9wSM8.js +1 -0
- package/dist/entry-status-CCwwKO43.js +1 -0
- package/dist/entry-status-CoXkbJcX.js +1 -0
- package/dist/entry.js +1 -0
- package/dist/env-D7wNuBx1.js +1 -0
- package/dist/env-overrides-DHtB4kK3.js +1 -0
- package/dist/env-overrides-DXJbFrwI.js +1 -0
- package/dist/errors-6SQWM9dj.js +1 -0
- package/dist/errors-Bunti32V.js +1 -0
- package/dist/exec-B3eleY5O.js +1 -0
- package/dist/exec-DHqLtFYt.js +1 -0
- package/dist/exec-approvals-BXO9Cezj.js +1 -0
- package/dist/exec-approvals-BpBNEy6i.js +1 -0
- package/dist/exec-approvals-allowlist-CE3nYh0K.js +1 -0
- package/dist/exec-approvals-allowlist-D8mN7nxV.js +1 -0
- package/dist/exec-approvals-cli-CUcuN63y.js +1 -0
- package/dist/exec-approvals-cli-CxUGD08t.js +1 -0
- package/dist/exec-safe-bin-runtime-policy-Dt0GchLp.js +1 -0
- package/dist/exec-safe-bin-runtime-policy-dcCS_Adf.js +1 -0
- package/dist/fetch-B9tORjG8.js +1 -0
- package/dist/fetch-BJT3BrkJ.js +1 -0
- package/dist/fetch-B_wRifvZ.js +1 -0
- package/dist/fetch-Bn0mWg6a.js +1 -0
- package/dist/fetch-CQaNr5J1.js +1 -0
- package/dist/fetch-Ce-scEU-.js +1 -0
- package/dist/fetch-D0rZDHKO.js +1 -0
- package/dist/fetch-DHo17YmK.js +1 -0
- package/dist/fetch-Dh-apy46.js +1 -0
- package/dist/fetch-Dikjvc5M.js +1 -0
- package/dist/fetch-DsjPfQlp.js +1 -0
- package/dist/fetch-_g8lZ8K8.js +1 -0
- package/dist/fetch-guard-BrTtJw7h.js +1 -0
- package/dist/fetch-guard-D10s0raB.js +1 -0
- package/dist/fetch-guard-DPdY0NXR.js +1 -0
- package/dist/fetch-guard-cu7DGSRF.js +1 -0
- package/dist/fetch-hy0JKSsm.js +1 -0
- package/dist/fetch-timeout-CdYxWG9w.js +1 -0
- package/dist/fetch-timeout-Cj8_oAls.js +1 -0
- package/dist/fetch-timeout-DoOI_izT.js +1 -0
- package/dist/fetch-timeout-u8g99Ax0.js +1 -0
- package/dist/format-Bn1bwJKX.js +1 -0
- package/dist/format-Ce7I7s-k.js +1 -0
- package/dist/format-duration-C8AzNqKh.js +1 -0
- package/dist/format-duration-D5AMtmHa.js +1 -0
- package/dist/format-relative-B9pSIdGe.js +1 -0
- package/dist/format-relative-DkMjYy7z.js +1 -0
- package/dist/frontmatter-BkZkwkVO.js +1 -0
- package/dist/frontmatter-C7mzDNxd.js +1 -0
- package/dist/frontmatter-CzpfPBFl.js +1 -0
- package/dist/gateway-cli-CKu0FA7D.js +1 -0
- package/dist/gateway-cli-C_s9eMlC.js +1 -0
- package/dist/gateway-install-token-BCnuZeh1.js +1 -0
- package/dist/gateway-install-token-DiDvDPJQ.js +1 -0
- package/dist/gateway-rpc-iFvDyHYd.js +1 -0
- package/dist/gateway-rpc-tEEvY0kH.js +1 -0
- package/dist/github-copilot-token-C79yeDKS.js +1 -0
- package/dist/github-copilot-token-DGYAlOmV.js +1 -0
- package/dist/github-copilot-token-DePP-lIf.js +1 -0
- package/dist/github-copilot-token-wm6mbypz.js +1 -0
- package/dist/gmail-setup-utils-CYOH3zzx.js +1 -0
- package/dist/gmail-setup-utils-S-MyEGuj.js +1 -0
- package/dist/group-access-BHKVOhrj.js +1 -0
- package/dist/group-access-D2DOYMfr.js +1 -0
- package/dist/health-BgOggK9k.js +1 -0
- package/dist/health-PaRHFItm.js +1 -0
- package/dist/health-format-B1nj3Wfn.js +1 -0
- package/dist/health-format-VBr6LEpt.js +1 -0
- package/dist/heartbeat-visibility-BQ_esv2m.js +1 -0
- package/dist/heartbeat-visibility-q74UdY8O.js +1 -0
- package/dist/help-format-B4aEI7V9.js +1 -0
- package/dist/help-format-BRbF_INg.js +1 -0
- package/dist/helpers-COz1ghcB.js +1 -0
- package/dist/helpers-Cp8gcO6u.js +1 -0
- package/dist/hooks-cli-BzyzTNBx.js +1 -0
- package/dist/hooks-cli-CsBrScq0.js +1 -0
- package/dist/hooks-status-BHt-Xvh4.js +1 -0
- package/dist/hooks-status-CRJ4J0ZW.js +1 -0
- package/dist/image-BkWwI54C.js +1 -0
- package/dist/image-CcVQg-YN.js +1 -0
- package/dist/image-Cm1RUBqD.js +1 -0
- package/dist/image-DsoO5VP5.js +1 -0
- package/dist/index.js +1 -0
- package/dist/inspect-BKV-I1UE.js +1 -0
- package/dist/inspect-z59cgmYc.js +1 -0
- package/dist/install-safe-path-C6kc_8NW.js +1 -0
- package/dist/install-safe-path-iesxijn2.js +1 -0
- package/dist/installs-BNeI_oML.js +1 -0
- package/dist/installs-C1xQLuby.js +1 -0
- package/dist/ipv4-BOuNtoGn.js +1 -0
- package/dist/ipv4-CWdaEiVH.js +1 -0
- package/dist/ir-BF0M2kGp.js +1 -0
- package/dist/ir-D8Hh84ab.js +1 -0
- package/dist/ir-DBWscfBd.js +1 -0
- package/dist/ir-Dk7OQ4bA.js +1 -0
- package/dist/is-main-DG5ueqhF.js +1 -0
- package/dist/issue-format-BT7cQEt3.js +1 -0
- package/dist/issue-format-C_lNzrKa.js +1 -0
- package/dist/kill-tree-B3g7HrAO.js +1 -0
- package/dist/lifecycle-core-D9KNCvxY.js +1 -0
- package/dist/lifecycle-core-LM5UUUB1.js +1 -0
- package/dist/line/accounts.js +1 -0
- package/dist/line/send.js +1 -0
- package/dist/line/template-messages.js +1 -0
- package/dist/links-CBnmRP9D.js +1 -0
- package/dist/links-CySwdMcF.js +1 -0
- package/dist/llm-slug-generator.js +1 -0
- package/dist/load-options-BsOW74dp.js +1 -0
- package/dist/load-options-C7dLuybp.js +1 -0
- package/dist/load-options-DV4j6Aqb.js +1 -0
- package/dist/load-options-Dwt0CeEg.js +1 -0
- package/dist/local-roots-6waH0SZ0.js +1 -0
- package/dist/logger-5W0OocJW.js +1 -0
- package/dist/logger-Bl8URnrW.js +1 -0
- package/dist/logger-DwWqfo66.js +1 -0
- package/dist/logger-kQAOe3qp.js +1 -0
- package/dist/logging-Dqe9dxSX.js +1 -0
- package/dist/logging-tYw1NbJd.js +1 -0
- package/dist/login-BOlqRyr0.js +1 -0
- package/dist/login-CkWesqf_.js +1 -0
- package/dist/login-Do_NA1Je.js +1 -0
- package/dist/login-op9S8yqv.js +1 -0
- package/dist/login-qr-B6rxvoTS.js +1 -0
- package/dist/login-qr-BGH9zmhw.js +1 -0
- package/dist/login-qr-CiENvgog.js +1 -0
- package/dist/login-qr-DsV-lxFd.js +1 -0
- package/dist/login-qr-QcDMg23y.js +1 -0
- package/dist/logs-cli-B4eUg_87.js +1 -0
- package/dist/logs-cli-BA3Aso8a.js +1 -0
- package/dist/manager-4Y9fRgdw.js +1 -0
- package/dist/manager-C2YW7Hkq.js +1 -0
- package/dist/manager-Dtd_loL8.js +1 -0
- package/dist/manager-M1GKhLUC.js +1 -0
- package/dist/memory-cli-XaxtBQm1.js +1 -0
- package/dist/memory-cli-jhzJ3as7.js +1 -0
- package/dist/model-catalog-C1kpjR75.js +1 -0
- package/dist/model-catalog-COVzoZD9.js +1 -0
- package/dist/model-param-b-B0r2cPDw.js +1 -0
- package/dist/model-param-b-BqIr5rY5.js +1 -0
- package/dist/model-picker-D3ZSpr0i.js +1 -0
- package/dist/model-picker-bZNuI66U.js +1 -0
- package/dist/model-selection-B5JsBS9D.js +1 -0
- package/dist/model-selection-BlC_rXAN.js +1 -0
- package/dist/model-selection-vfhBuN9O.js +1 -0
- package/dist/models-C_Vg3Cty.js +1 -0
- package/dist/models-cli-CDZliTXq.js +1 -0
- package/dist/models-cli-bGr8jwAb.js +1 -0
- package/dist/models-config-CdMhNxKV.js +1 -0
- package/dist/models-config-_htt7eY5.js +1 -0
- package/dist/mutable-allowlist-detectors-C4rNVag8.js +1 -0
- package/dist/mutable-allowlist-detectors-CL0qe54J.js +1 -0
- package/dist/node-cli-5lYbDZ70.js +1 -0
- package/dist/node-cli-Br04Qmqo.js +1 -0
- package/dist/node-command-policy-CejeQemH.js +1 -0
- package/dist/node-command-policy-CqXhdnHh.js +1 -0
- package/dist/node-commands-8GBOiktk.js +1 -0
- package/dist/node-commands-DdkziOTx.js +1 -0
- package/dist/node-resolve-B3BJbmQX.js +1 -0
- package/dist/node-resolve-DLZf3-1V.js +1 -0
- package/dist/node-service-BRfrNp8l.js +1 -0
- package/dist/node-service-C0bl7jcZ.js +1 -0
- package/dist/node-shell-DyOfwHrh.js +1 -0
- package/dist/nodes-cli-8By8--bW.js +1 -0
- package/dist/nodes-cli-zq41EwJN.js +1 -0
- package/dist/nodes-screen-DECgxo6A.js +1 -0
- package/dist/note-D4GAwgha.js +1 -0
- package/dist/note-Dp-d_utk.js +1 -0
- package/dist/npm-pack-install-B23L-AtF.js +1 -0
- package/dist/npm-pack-install-C0te3Oap.js +1 -0
- package/dist/npm-resolution-BnJGLwhi.js +1 -0
- package/dist/npm-resolution-DWPloph4.js +1 -0
- package/dist/oauth-env-DAamJ1oz.js +1 -0
- package/dist/oauth-env-DSLBTWb1.js +1 -0
- package/dist/oauth-tls-preflight-BSBRDIfC.js +1 -0
- package/dist/oauth-tls-preflight-ByNjbUR5.js +1 -0
- package/dist/ollama-setup-BMEKWyIE.js +1 -0
- package/dist/ollama-setup-DlwS6Gl-.js +1 -0
- package/dist/onboard-B0BNCQaO.js +1 -0
- package/dist/onboard-CjVhdaiR.js +1 -0
- package/dist/onboard-channels-BMIOddLN.js +1 -0
- package/dist/onboard-channels-CZK_7xMR.js +1 -0
- package/dist/onboard-config-B7U20YRw.js +1 -0
- package/dist/onboard-config-DS9dUv8M.js +1 -0
- package/dist/onboard-custom-B03SlEHB.js +1 -0
- package/dist/onboard-custom-Bl0y8c-g.js +1 -0
- package/dist/onboard-helpers-PGl5bVPE.js +1 -0
- package/dist/onboard-helpers-zwybUJWu.js +1 -0
- package/dist/onboard-hooks-CERzXObm.js +1 -0
- package/dist/onboard-hooks-gQ3sxBNi.js +1 -0
- package/dist/onboard-provider-auth-flags-CqbipO7D.js +1 -0
- package/dist/onboard-provider-auth-flags-Dvwzdz37.js +1 -0
- package/dist/onboard-remote-BOpIRdDu.js +1 -0
- package/dist/onboard-remote-DPU-H_2O.js +1 -0
- package/dist/onboard-search-f2tJD4hg.js +1 -0
- package/dist/onboard-search-fslKKhyg.js +1 -0
- package/dist/onboard-skills-BMAJs6ly.js +1 -0
- package/dist/onboard-skills-CMSQc2Mm.js +1 -0
- package/dist/onboarding-B6ixWwgp.js +1 -0
- package/dist/onboarding-ouEqUuUr.js +1 -0
- package/dist/onboarding.finalize-Bgat5Npc.js +1 -0
- package/dist/onboarding.finalize-DsMVlTcH.js +1 -0
- package/dist/onboarding.gateway-config-BtLDJWJ2.js +1 -0
- package/dist/onboarding.gateway-config-y3pqsL9i.js +1 -0
- package/dist/onboarding.secret-input-BsBgh8Tc.js +1 -0
- package/dist/onboarding.secret-input-kO5OzYC7.js +1 -0
- package/dist/openai-codex-model-default-DuE2_wN7.js +1 -0
- package/dist/openai-codex-model-default-yVfRw-Mm.js +1 -0
- package/dist/openai-model-default-Bl8MHPb6.js +1 -0
- package/dist/openai-model-default-DJObMvLJ.js +1 -0
- package/dist/openclaw-exec-env-BWbOu_YC.js +1 -0
- package/dist/openclaw-root-CnsBf6ZU.js +1 -0
- package/dist/openclaw-root-D_0Q6--h.js +1 -0
- package/dist/outbound-BOSIEiEY.js +1 -0
- package/dist/outbound-BtUeDLjU.js +1 -0
- package/dist/outbound-Bx2Z2aYK.js +1 -0
- package/dist/outbound-Bz8bbrMI.js +1 -0
- package/dist/outbound-attachment-B7wMxwj6.js +1 -0
- package/dist/outbound-attachment-BgAe99RM.js +1 -0
- package/dist/outbound-attachment-Dds8xirj.js +1 -0
- package/dist/outbound-attachment-DqEKghQp.js +1 -0
- package/dist/pairing-cli-Bya9M-I_.js +1 -0
- package/dist/pairing-cli-D2JEhufv.js +1 -0
- package/dist/pairing-labels-BUU_-70B.js +1 -0
- package/dist/pairing-labels-D-kzQEL2.js +1 -0
- package/dist/pairing-store-BH-FTYkn.js +1 -0
- package/dist/pairing-store-Cg2UxreQ.js +1 -0
- package/dist/pairing-token-BjYBuREl.js +1 -0
- package/dist/pairing-token-DAR7V7FJ.js +1 -0
- package/dist/parse-duration-XTjMKl8s.js +1 -0
- package/dist/parse-finite-number-DqzUM-_s.js +1 -0
- package/dist/parse-finite-number-dBmDLLKL.js +1 -0
- package/dist/parse-log-line-CsYLg7Qu.js +1 -0
- package/dist/parse-log-line-NV-cipB_.js +1 -0
- package/dist/parse-port-Bv1Y9Wk5.js +1 -0
- package/dist/parse-port-JVwkxcZ8.js +1 -0
- package/dist/parse-timeout-DWSGfCkQ.js +1 -0
- package/dist/parse-timeout-Dx4QnVzo.js +1 -0
- package/dist/path-alias-guards-kY_ZbWs-.js +1 -0
- package/dist/path-alias-guards-mvyLCPlN.js +1 -0
- package/dist/path-env-BPd1Yd-i.js +1 -0
- package/dist/path-env-emdAQejM.js +1 -0
- package/dist/path-safety-BukYK8Kd.js +1 -0
- package/dist/path-safety-DaaMJFdt.js +1 -0
- package/dist/paths-B4IRk3wi.js +1 -0
- package/dist/paths-BfjJY2VL.js +1 -0
- package/dist/paths-BjD3T_xq.js +1 -0
- package/dist/paths-BpQOWYiT.js +1 -0
- package/dist/paths-CChBdtE8.js +1 -0
- package/dist/paths-CrCoPIVK.js +1 -0
- package/dist/paths-piJASC5k.js +1 -0
- package/dist/paths-yLEk_25I.js +1 -0
- package/dist/pi-embedded-BZSn84Bh.js +1 -0
- package/dist/pi-embedded-Dsz7p3MF.js +1 -0
- package/dist/pi-model-discovery-BbD1YJNx.js +1 -0
- package/dist/pi-model-discovery-CpjYoBQf.js +1 -0
- package/dist/pi-model-discovery-DeQdHV8O.js +1 -0
- package/dist/pi-model-discovery-Dps1PPWz.js +1 -0
- package/dist/pi-tools.before-tool-call.runtime-DseAq0gm.js +1 -0
- package/dist/pi-tools.before-tool-call.runtime-KKGILAuK.js +1 -0
- package/dist/pi-tools.before-tool-call.runtime-Pck2WdIO.js +1 -0
- package/dist/pi-tools.before-tool-call.runtime-ZzMJQ1BP.js +1 -0
- package/dist/pi-tools.policy-D40r0HmD.js +1 -0
- package/dist/plugin-auto-enable-DpVL6-ES.js +1 -0
- package/dist/plugin-auto-enable-NzmNh4oU.js +1 -0
- package/dist/plugin-install-plan-BobX0y9S.js +1 -0
- package/dist/plugin-install-plan-NvDGp0d8.js +1 -0
- package/dist/plugin-registry-C6dY-Et7.js +1 -0
- package/dist/plugin-registry-CIBiHZH1.js +1 -0
- package/dist/plugin-sdk/account-id.cjs +1 -0
- package/dist/plugin-sdk/account-id.js +1 -0
- package/dist/plugin-sdk/acpx.cjs +1 -0
- package/dist/plugin-sdk/acpx.js +1 -0
- package/dist/plugin-sdk/active-listener-BApFQlQn.js +1 -0
- package/dist/plugin-sdk/active-listener-BETopzG5.cjs +1 -0
- package/dist/plugin-sdk/active-listener-BEcmvyxh.cjs +1 -0
- package/dist/plugin-sdk/active-listener-BZPPbsNy.cjs +1 -0
- package/dist/plugin-sdk/active-listener-B_Mxemq7.cjs +1 -0
- package/dist/plugin-sdk/active-listener-BgW_qfd3.js +1 -0
- package/dist/plugin-sdk/active-listener-Coet66pF.cjs +1 -0
- package/dist/plugin-sdk/active-listener-CvML9qVF.js +1 -0
- package/dist/plugin-sdk/active-listener-DuO6KMXJ.js +1 -0
- package/dist/plugin-sdk/active-listener-DymzfmOG.cjs +1 -0
- package/dist/plugin-sdk/active-listener-ILBdBHMv.js +1 -0
- package/dist/plugin-sdk/active-listener-gRRIfN1q.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-Bj1A9Slo.cjs +1 -0
- package/dist/plugin-sdk/api-key-rotation-CFPNzksf.cjs +1 -0
- package/dist/plugin-sdk/api-key-rotation-CXY0AyM1.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-ClIwV8yq.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-D5Nr1xl3.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-DDCwA0KM.cjs +1 -0
- package/dist/plugin-sdk/api-key-rotation-DHMvXm70.cjs +1 -0
- package/dist/plugin-sdk/api-key-rotation-DaFFZfk5.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-DcREl_0x.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-X-5Fb7av.cjs +1 -0
- package/dist/plugin-sdk/api-key-rotation-_VfXYfHS.js +1 -0
- package/dist/plugin-sdk/api-key-rotation-wFUVOOfM.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-B1MP5_bc.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-BETx142T.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-BGRLhCLc.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-BNICfOY5.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-BV3Cav8M.js +1 -0
- package/dist/plugin-sdk/audio-preflight-BmO72Cqr.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-BpE8wFQc.js +1 -0
- package/dist/plugin-sdk/audio-preflight-CTAafaiH.js +1 -0
- package/dist/plugin-sdk/audio-preflight-D82aewIt.js +1 -0
- package/dist/plugin-sdk/audio-preflight-DmzxEaq3.cjs +1 -0
- package/dist/plugin-sdk/audio-preflight-DrSIYRnD.js +1 -0
- package/dist/plugin-sdk/audio-preflight-SZZoA2Ff.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-B54MyF1_.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-BIqM5H5q.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-BLAxZL-U.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-BVmaaA2k.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-BdY-TMcc.js +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-By3lSLub.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-CH5CoZrF.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-CMsp7bhn.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-ClGibmMi.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-QfEC19vE.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-g7L0m-Z5.cjs +1 -0
- package/dist/plugin-sdk/audio-transcription-runner-pVTD93vq.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-7LqcvqFo.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-BQFUzFc0.cjs +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-BYtdDX9G.cjs +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-BzEtBUX6.cjs +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-CBUmGrl4.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-ChlVgt2y.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-DLRX7LR0.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-DbJW5X3L.cjs +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-Du9LAxDa.cjs +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-DylNnj1m.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-voi5sPwF.js +1 -0
- package/dist/plugin-sdk/audit-membership-runtime-yWYvSpgZ.cjs +1 -0
- package/dist/plugin-sdk/bluebubbles.cjs +1 -0
- package/dist/plugin-sdk/bluebubbles.js +1 -0
- package/dist/plugin-sdk/channel-activity-BGK-Bj2_.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-BRHvpV0C.js +1 -0
- package/dist/plugin-sdk/channel-activity-CKfWFchu.js +1 -0
- package/dist/plugin-sdk/channel-activity-CLUi31fX.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-CVOp-PL4.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-CgXnZ0GC.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-CmYpOPAn.js +1 -0
- package/dist/plugin-sdk/channel-activity-CwaMf9qT.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-D5D5tBWf.cjs +1 -0
- package/dist/plugin-sdk/channel-activity-D7tpmatp.js +1 -0
- package/dist/plugin-sdk/channel-activity-DpxSOlXF.js +1 -0
- package/dist/plugin-sdk/channel-activity-spvDzlTl.js +1 -0
- package/dist/plugin-sdk/channel-web-4ZQVqsrt.js +1 -0
- package/dist/plugin-sdk/channel-web-9zn1Itpg.cjs +1 -0
- package/dist/plugin-sdk/channel-web-BrB00HKH.js +1 -0
- package/dist/plugin-sdk/channel-web-DN5La-Ol.cjs +1 -0
- package/dist/plugin-sdk/command-poll-backoff-4910Mpwp.js +1 -0
- package/dist/plugin-sdk/command-poll-backoff-BLJZzV5W.cjs +1 -0
- package/dist/plugin-sdk/command-poll-backoff-CUNcN0dv.cjs +1 -0
- package/dist/plugin-sdk/command-poll-backoff-Cww_r-24.js +1 -0
- package/dist/plugin-sdk/command-poll-backoff-D0lJhquZ.js +1 -0
- package/dist/plugin-sdk/command-poll-backoff-Glwt3wHa.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-5lStNoKW.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-C8wnXqNa.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-Cnr6PvIw.js +1 -0
- package/dist/plugin-sdk/commands-registry-CtYCWfuM.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-D2gv242l.js +1 -0
- package/dist/plugin-sdk/commands-registry-DI2vPscP.js +1 -0
- package/dist/plugin-sdk/commands-registry-DcBvmwSU.js +1 -0
- package/dist/plugin-sdk/commands-registry-DkUhCIDk.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-DsMbmie-.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-MCsWR5Vf.js +1 -0
- package/dist/plugin-sdk/commands-registry-SHZVq_qf.cjs +1 -0
- package/dist/plugin-sdk/commands-registry-kRjFifgj.js +1 -0
- package/dist/plugin-sdk/common-B4iFXuoZ.cjs +1 -0
- package/dist/plugin-sdk/common-B6fDMl_i.js +1 -0
- package/dist/plugin-sdk/compat.cjs +1 -0
- package/dist/plugin-sdk/compat.js +1 -0
- package/dist/plugin-sdk/config-ByA2hluR.js +1 -0
- package/dist/plugin-sdk/config-rBz8C_Hi.cjs +1 -0
- package/dist/plugin-sdk/copilot-proxy.cjs +1 -0
- package/dist/plugin-sdk/copilot-proxy.js +1 -0
- package/dist/plugin-sdk/core.cjs +1 -0
- package/dist/plugin-sdk/core.js +1 -0
- package/dist/plugin-sdk/deliver-B0fB4hAV.js +1 -0
- package/dist/plugin-sdk/deliver-BOLmjIJ3.js +1 -0
- package/dist/plugin-sdk/deliver-BrfVwkYz.cjs +1 -0
- package/dist/plugin-sdk/deliver-C-tChWTI.cjs +1 -0
- package/dist/plugin-sdk/deliver-CjQPkWS-.cjs +1 -0
- package/dist/plugin-sdk/deliver-D1P0FNTu.js +1 -0
- package/dist/plugin-sdk/deliver-DCrO9mvv.cjs +1 -0
- package/dist/plugin-sdk/deliver-DQLekoj2.cjs +1 -0
- package/dist/plugin-sdk/deliver-DkfCVM78.js +1 -0
- package/dist/plugin-sdk/deliver-Dkh3lqXR.js +1 -0
- package/dist/plugin-sdk/deliver-DsFtXFyr.cjs +1 -0
- package/dist/plugin-sdk/deliver-vYe_sYOL.js +1 -0
- package/dist/plugin-sdk/device-pair.cjs +1 -0
- package/dist/plugin-sdk/device-pair.js +1 -0
- package/dist/plugin-sdk/diagnostic-8iX73nz_.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-CLUtpxAp.js +1 -0
- package/dist/plugin-sdk/diagnostic-CVS4k9hh.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-CkePwN5F.js +1 -0
- package/dist/plugin-sdk/diagnostic-Cu1PGj0E.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-D0oCfBju.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-D7A9cQYf.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-DGLX0zXU.js +1 -0
- package/dist/plugin-sdk/diagnostic-DXscFT8t.cjs +1 -0
- package/dist/plugin-sdk/diagnostic-Efe4b81B.js +1 -0
- package/dist/plugin-sdk/diagnostic-EqHqw9xo.js +1 -0
- package/dist/plugin-sdk/diagnostic-vsjHZ_fY.js +1 -0
- package/dist/plugin-sdk/diagnostics-otel.cjs +1 -0
- package/dist/plugin-sdk/diagnostics-otel.js +1 -0
- package/dist/plugin-sdk/diffs.cjs +1 -0
- package/dist/plugin-sdk/diffs.js +1 -0
- package/dist/plugin-sdk/discord.cjs +1 -0
- package/dist/plugin-sdk/discord.js +1 -0
- package/dist/plugin-sdk/dispatch-5v3v8zzA.js +1 -0
- package/dist/plugin-sdk/dispatch-B6UbZCpL.cjs +1 -0
- package/dist/plugin-sdk/dispatch-BYlcmJ9u.js +1 -0
- package/dist/plugin-sdk/dispatch-C2YTqGlf.js +1 -0
- package/dist/plugin-sdk/dispatch-CNy3g9ma.cjs +1 -0
- package/dist/plugin-sdk/dispatch-DCSwqteL.js +1 -0
- package/dist/plugin-sdk/dispatch-DHbSBeFJ.js +1 -0
- package/dist/plugin-sdk/dispatch-DK5ub8qa.cjs +1 -0
- package/dist/plugin-sdk/dispatch-SWyfAZT0.cjs +1 -0
- package/dist/plugin-sdk/dispatch-mR2vLkGa.cjs +1 -0
- package/dist/plugin-sdk/feishu.cjs +1 -0
- package/dist/plugin-sdk/feishu.js +1 -0
- package/dist/plugin-sdk/fetch-7Iq9POda.js +1 -0
- package/dist/plugin-sdk/fetch-B1GR6-u4.js +1 -0
- package/dist/plugin-sdk/fetch-B27H-XCf.js +1 -0
- package/dist/plugin-sdk/fetch-BMYDLRWo.js +1 -0
- package/dist/plugin-sdk/fetch-BN9y3kTg.cjs +1 -0
- package/dist/plugin-sdk/fetch-BVEVk5YF.js +1 -0
- package/dist/plugin-sdk/fetch-BY6lVRlY.cjs +1 -0
- package/dist/plugin-sdk/fetch-Bi8krAaT.cjs +1 -0
- package/dist/plugin-sdk/fetch-BjXhwqrE.cjs +1 -0
- package/dist/plugin-sdk/fetch-BtZY623f.js +1 -0
- package/dist/plugin-sdk/fetch-C-HRWp5R.js +1 -0
- package/dist/plugin-sdk/fetch-C3LEMysf.js +1 -0
- package/dist/plugin-sdk/fetch-CCLWsYaQ.js +1 -0
- package/dist/plugin-sdk/fetch-CZewCAvu.cjs +1 -0
- package/dist/plugin-sdk/fetch-ClKErpni.cjs +1 -0
- package/dist/plugin-sdk/fetch-DBRI0sKI.js +1 -0
- package/dist/plugin-sdk/fetch-DQxuOB8o.cjs +1 -0
- package/dist/plugin-sdk/fetch-DUMEaqum.cjs +1 -0
- package/dist/plugin-sdk/fetch-DpwR_cJU.cjs +1 -0
- package/dist/plugin-sdk/fetch-J0IzopiJ.js +1 -0
- package/dist/plugin-sdk/fetch-guard-8I7EHbDM.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-CIJUkBIL.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-CY03i4gu.js +1 -0
- package/dist/plugin-sdk/fetch-guard-Cz-cgYmR.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-DB85MORy.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-DE9BslxX.js +1 -0
- package/dist/plugin-sdk/fetch-guard-DLNzldn9.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-DSvAbvSx.js +1 -0
- package/dist/plugin-sdk/fetch-guard-DXe8oqEE.js +1 -0
- package/dist/plugin-sdk/fetch-guard-DY9jpsXo.cjs +1 -0
- package/dist/plugin-sdk/fetch-guard-DbOZYxyN.js +1 -0
- package/dist/plugin-sdk/fetch-guard-_fifU0fX.js +1 -0
- package/dist/plugin-sdk/fetch-lw-aF17e.cjs +1 -0
- package/dist/plugin-sdk/fetch-timeout-6oZsqWxA.js +1 -0
- package/dist/plugin-sdk/fetch-timeout-BygUD0rd.cjs +1 -0
- package/dist/plugin-sdk/fetch-timeout-CLw1U7VS.js +1 -0
- package/dist/plugin-sdk/fetch-timeout-CX1w-9p4.cjs +1 -0
- package/dist/plugin-sdk/fetch-timeout-Coc9xyC3.cjs +1 -0
- package/dist/plugin-sdk/fetch-timeout-Cz6GuU_c.js +1 -0
- package/dist/plugin-sdk/fetch-timeout-DC8T2JCr.js +1 -0
- package/dist/plugin-sdk/fetch-timeout-DFDmks9T.cjs +1 -0
- package/dist/plugin-sdk/fetch-timeout-DkYpp08Q.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-BHdMLLqf.cjs +1 -0
- package/dist/plugin-sdk/github-copilot-token-Bt4PduRB.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-C1O2cBqk.cjs +1 -0
- package/dist/plugin-sdk/github-copilot-token-C1hiDugd.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-C8j8_NjX.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-CCrgp2py.cjs +1 -0
- package/dist/plugin-sdk/github-copilot-token-DoHgkI2r.cjs +1 -0
- package/dist/plugin-sdk/github-copilot-token-N8vnLZPw.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-TMkfxxD2.cjs +1 -0
- package/dist/plugin-sdk/github-copilot-token-vKAKX6iE.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-ylX_gawo.js +1 -0
- package/dist/plugin-sdk/github-copilot-token-zskwAEpd.cjs +1 -0
- package/dist/plugin-sdk/google-gemini-cli-auth.cjs +1 -0
- package/dist/plugin-sdk/google-gemini-cli-auth.js +1 -0
- package/dist/plugin-sdk/googlechat.cjs +1 -0
- package/dist/plugin-sdk/googlechat.js +1 -0
- package/dist/plugin-sdk/image-B6HEHWlJ.js +1 -0
- package/dist/plugin-sdk/image-Bte8cr4F.js +1 -0
- package/dist/plugin-sdk/image-BxafJgQ6.cjs +1 -0
- package/dist/plugin-sdk/image-CDI5SqeR.js +1 -0
- package/dist/plugin-sdk/image-CTgwucug.cjs +1 -0
- package/dist/plugin-sdk/image-CWnsS03L.js +1 -0
- package/dist/plugin-sdk/image-CoksjGBL.cjs +1 -0
- package/dist/plugin-sdk/image-CuOIoxl2.cjs +1 -0
- package/dist/plugin-sdk/image-DJyEMzkq.cjs +1 -0
- package/dist/plugin-sdk/image-DegWnAZU.cjs +1 -0
- package/dist/plugin-sdk/image-TCSQZpr6.js +1 -0
- package/dist/plugin-sdk/image-aG-5S1vd.js +1 -0
- package/dist/plugin-sdk/imessage.cjs +1 -0
- package/dist/plugin-sdk/imessage.js +1 -0
- package/dist/plugin-sdk/index.cjs +1 -0
- package/dist/plugin-sdk/index.js +1 -0
- package/dist/plugin-sdk/ir-8rDh7div.js +1 -0
- package/dist/plugin-sdk/ir-Bh6lKGdS.js +1 -0
- package/dist/plugin-sdk/ir-C3VNqnc2.cjs +1 -0
- package/dist/plugin-sdk/ir-CZOtKajq.cjs +1 -0
- package/dist/plugin-sdk/ir-CveCWs8q.cjs +1 -0
- package/dist/plugin-sdk/ir-DAxY-7c1.cjs +1 -0
- package/dist/plugin-sdk/ir-DSuLr2UE.cjs +1 -0
- package/dist/plugin-sdk/ir-DanxCjD-.cjs +1 -0
- package/dist/plugin-sdk/ir-Dgc6qZMX.js +1 -0
- package/dist/plugin-sdk/ir-OBi5zaEW.js +1 -0
- package/dist/plugin-sdk/ir-hQ6EW92h.js +1 -0
- package/dist/plugin-sdk/ir-ynWQeZD9.js +1 -0
- package/dist/plugin-sdk/irc.cjs +1 -0
- package/dist/plugin-sdk/irc.js +1 -0
- package/dist/plugin-sdk/keyed-async-queue.cjs +1 -0
- package/dist/plugin-sdk/keyed-async-queue.js +1 -0
- package/dist/plugin-sdk/line.cjs +1 -0
- package/dist/plugin-sdk/line.js +1 -0
- package/dist/plugin-sdk/llm-task.cjs +1 -0
- package/dist/plugin-sdk/llm-task.js +1 -0
- package/dist/plugin-sdk/load-options-B9Ss5YOO.js +1 -0
- package/dist/plugin-sdk/load-options-BOfn6Zgo.cjs +1 -0
- package/dist/plugin-sdk/load-options-BXvm8HVv.js +1 -0
- package/dist/plugin-sdk/load-options-Bb7u8yZz.cjs +1 -0
- package/dist/plugin-sdk/load-options-BcSg1ODN.js +1 -0
- package/dist/plugin-sdk/load-options-NqnXJ-Nh.cjs +1 -0
- package/dist/plugin-sdk/lobster.cjs +1 -0
- package/dist/plugin-sdk/lobster.js +1 -0
- package/dist/plugin-sdk/local-roots-5udQUs81.js +1 -0
- package/dist/plugin-sdk/local-roots-BmhNPIJm.cjs +1 -0
- package/dist/plugin-sdk/local-roots-C5UoE741.cjs +1 -0
- package/dist/plugin-sdk/local-roots-Ca8KoAAp.js +1 -0
- package/dist/plugin-sdk/local-roots-CeAYfmPb.cjs +1 -0
- package/dist/plugin-sdk/local-roots-Cu7YCpql.cjs +1 -0
- package/dist/plugin-sdk/local-roots-D0yN794S.js +1 -0
- package/dist/plugin-sdk/local-roots-D4i3H0UG.cjs +1 -0
- package/dist/plugin-sdk/local-roots-DGe-SRNu.js +1 -0
- package/dist/plugin-sdk/local-roots-bWA2msT0.js +1 -0
- package/dist/plugin-sdk/local-roots-tee85Q-1.js +1 -0
- package/dist/plugin-sdk/local-roots-wTkpE7go.cjs +1 -0
- package/dist/plugin-sdk/logger-6O6OsYBL.cjs +1 -0
- package/dist/plugin-sdk/logger-BlddiV_d.cjs +1 -0
- package/dist/plugin-sdk/logger-Bm93ZKOk.cjs +1 -0
- package/dist/plugin-sdk/logger-BtrWb0dj.js +1 -0
- package/dist/plugin-sdk/logger-C210xuWx.js +1 -0
- package/dist/plugin-sdk/logger-DJGHvDbX.js +1 -0
- package/dist/plugin-sdk/logger-DPlqYkRm.cjs +1 -0
- package/dist/plugin-sdk/logger-DUYnS-W3.cjs +1 -0
- package/dist/plugin-sdk/logger-DwWqfo66.js +1 -0
- package/dist/plugin-sdk/logger-vBDTZWl3.js +1 -0
- package/dist/plugin-sdk/login-B5IwNcl4.cjs +1 -0
- package/dist/plugin-sdk/login-BIbt7ZL_.js +1 -0
- package/dist/plugin-sdk/login-CxnDKwXC.js +1 -0
- package/dist/plugin-sdk/login-D5iTWowo.cjs +1 -0
- package/dist/plugin-sdk/login-DHE1rzB1.js +1 -0
- package/dist/plugin-sdk/login-DIPBcPQc.cjs +1 -0
- package/dist/plugin-sdk/login-DtDOozuU.js +1 -0
- package/dist/plugin-sdk/login-UrWNtI80.cjs +1 -0
- package/dist/plugin-sdk/login-VviMkBU2.js +1 -0
- package/dist/plugin-sdk/login-jQwwt6C-.js +1 -0
- package/dist/plugin-sdk/login-mGjCzJzb.cjs +1 -0
- package/dist/plugin-sdk/login-pZnnpj38.cjs +1 -0
- package/dist/plugin-sdk/login-qr-BexuTIDJ.cjs +1 -0
- package/dist/plugin-sdk/login-qr-C366Qlh-.cjs +1 -0
- package/dist/plugin-sdk/login-qr-CQY4ty0o.js +1 -0
- package/dist/plugin-sdk/login-qr-CSabEb-n.cjs +1 -0
- package/dist/plugin-sdk/login-qr-CUgNKijx.js +1 -0
- package/dist/plugin-sdk/login-qr-C_LEw1Bi.js +1 -0
- package/dist/plugin-sdk/login-qr-CcPvldsG.js +1 -0
- package/dist/plugin-sdk/login-qr-CnNGKwDR.cjs +1 -0
- package/dist/plugin-sdk/login-qr-DQm50pXk.js +1 -0
- package/dist/plugin-sdk/login-qr-DayvAWkx.js +1 -0
- package/dist/plugin-sdk/login-qr-eodIsL9V.cjs +1 -0
- package/dist/plugin-sdk/login-qr-yIJE7MmY.cjs +1 -0
- package/dist/plugin-sdk/manager-932XljTT.js +1 -0
- package/dist/plugin-sdk/manager-CGHd5p2T.js +1 -0
- package/dist/plugin-sdk/manager-CbGA_JDa.js +1 -0
- package/dist/plugin-sdk/manager-CdD7HaGW.cjs +1 -0
- package/dist/plugin-sdk/manager-CmAH_a7A.cjs +1 -0
- package/dist/plugin-sdk/manager-DIS4ywpb.cjs +1 -0
- package/dist/plugin-sdk/manager-DQ2C-2IU.cjs +1 -0
- package/dist/plugin-sdk/manager-DdvFnsT7.cjs +1 -0
- package/dist/plugin-sdk/manager-DfdDglld.js +1 -0
- package/dist/plugin-sdk/manager-MR9stU_p.js +1 -0
- package/dist/plugin-sdk/manager-WwW37IUu.js +1 -0
- package/dist/plugin-sdk/manager-gE9187gu.cjs +1 -0
- package/dist/plugin-sdk/matrix.cjs +1 -0
- package/dist/plugin-sdk/matrix.js +1 -0
- package/dist/plugin-sdk/mattermost.cjs +1 -0
- package/dist/plugin-sdk/mattermost.js +1 -0
- package/dist/plugin-sdk/memory-core.cjs +1 -0
- package/dist/plugin-sdk/memory-core.js +1 -0
- package/dist/plugin-sdk/minimax-portal-auth.cjs +1 -0
- package/dist/plugin-sdk/minimax-portal-auth.js +1 -0
- package/dist/plugin-sdk/model-auth-BpS4IWDi.cjs +1 -0
- package/dist/plugin-sdk/model-auth-BwajGuoF.cjs +1 -0
- package/dist/plugin-sdk/model-auth-C1YL9HcW.js +1 -0
- package/dist/plugin-sdk/model-auth-Cc-8H6Cu.js +1 -0
- package/dist/plugin-sdk/model-auth-Cw3fuhm_.js +1 -0
- package/dist/plugin-sdk/model-auth-CycDtQl-.js +1 -0
- package/dist/plugin-sdk/model-auth-D-7xiXhK.cjs +1 -0
- package/dist/plugin-sdk/model-auth-TFUxaK0f.cjs +1 -0
- package/dist/plugin-sdk/model-selection-BADTZM9n.cjs +1 -0
- package/dist/plugin-sdk/model-selection-DUAudCtL.js +1 -0
- package/dist/plugin-sdk/msteams.cjs +1 -0
- package/dist/plugin-sdk/msteams.js +1 -0
- package/dist/plugin-sdk/nextcloud-talk.cjs +1 -0
- package/dist/plugin-sdk/nextcloud-talk.js +1 -0
- package/dist/plugin-sdk/nostr.cjs +1 -0
- package/dist/plugin-sdk/nostr.js +1 -0
- package/dist/plugin-sdk/outbound-2Lo6mZEY.js +1 -0
- package/dist/plugin-sdk/outbound-9XFlZzaF.cjs +1 -0
- package/dist/plugin-sdk/outbound-BlWsUmjQ.js +1 -0
- package/dist/plugin-sdk/outbound-Bs2rUcWZ.cjs +1 -0
- package/dist/plugin-sdk/outbound-C18nEOFP.js +1 -0
- package/dist/plugin-sdk/outbound-CW3o4Eng.cjs +1 -0
- package/dist/plugin-sdk/outbound-CzsdW5sy.js +1 -0
- package/dist/plugin-sdk/outbound-DcP22VOo.cjs +1 -0
- package/dist/plugin-sdk/outbound-QhOJAEO8.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-1pf06Oiu.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-B8-ZVX2i.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-BDwI_tn0.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-BXhbJils.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-Bgf1pCh8.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-COgf85S8.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-CfN9OvMC.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-CftilZWd.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-Cujprd6T.cjs +1 -0
- package/dist/plugin-sdk/outbound-attachment-CvSHb9ci.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-DQYtdTUw.js +1 -0
- package/dist/plugin-sdk/outbound-attachment-FqWC0WJx.cjs +1 -0
- package/dist/plugin-sdk/outbound-dTvIiFIZ.js +1 -0
- package/dist/plugin-sdk/outbound-fZ1WJGfe.cjs +1 -0
- package/dist/plugin-sdk/outbound-oHoWYWxf.js +1 -0
- package/dist/plugin-sdk/paths-BPlgbwrb.cjs +1 -0
- package/dist/plugin-sdk/paths-Bcdg3ma0.cjs +1 -0
- package/dist/plugin-sdk/paths-BpQOWYiT.js +1 -0
- package/dist/plugin-sdk/paths-BvlJvmRS.cjs +1 -0
- package/dist/plugin-sdk/paths-CIcxeNL-.cjs +1 -0
- package/dist/plugin-sdk/paths-CXgWvWAM.js +1 -0
- package/dist/plugin-sdk/paths-Chp3zwtq.cjs +1 -0
- package/dist/plugin-sdk/paths-CnHSNSeR.js +1 -0
- package/dist/plugin-sdk/paths-Cqca1YmF.cjs +1 -0
- package/dist/plugin-sdk/paths-CtrEseGU.js +1 -0
- package/dist/plugin-sdk/paths-D55o_j8-.js +1 -0
- package/dist/plugin-sdk/paths-D90l3h_o.cjs +1 -0
- package/dist/plugin-sdk/paths-DaRoqzBQ.js +1 -0
- package/dist/plugin-sdk/paths-Dd7r1qlB.cjs +1 -0
- package/dist/plugin-sdk/paths-DhSjTRMz.js +1 -0
- package/dist/plugin-sdk/paths-Do0djuaj.js +1 -0
- package/dist/plugin-sdk/paths-J4JUiRsa.js +1 -0
- package/dist/plugin-sdk/paths-cBAF6Bj0.js +1 -0
- package/dist/plugin-sdk/paths-piJASC5k.js +1 -0
- package/dist/plugin-sdk/paths-rO4ehkyU.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-B9boErNZ.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-BJ8wTgFH.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-Bb2vCP6M.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-Bor7jHYd.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-BrTw1qE2.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-BuEMyAsU.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-CV9NTjC4.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-D5tLf04u.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-D5xlUS2J.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-DGoPUzBj.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-DMrqvV1O.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-DoY7qnlI.cjs +1 -0
- package/dist/plugin-sdk/pi-model-discovery-Dqq9Vm8o.js +1 -0
- package/dist/plugin-sdk/pi-model-discovery-zCuISPPq.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-4238P8NF.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BEoqzgFe.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BGPjibRD.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BJ_amISU.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BX2r_qPT.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CGLHFxSr.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CsNn_Lv8.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CsiKBTHg.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CuXQQk4F.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-DNatrz-3.cjs +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-PApjB0tY.js +1 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-xsXDBYNq.js +1 -0
- package/dist/plugin-sdk/polls-BuaJuIpV.cjs +1 -0
- package/dist/plugin-sdk/polls-CBAGZuJ6.js +1 -0
- package/dist/plugin-sdk/polls-CSKMbBIS.js +1 -0
- package/dist/plugin-sdk/polls-D0wY0FvT.cjs +1 -0
- package/dist/plugin-sdk/polls-PGxiE05J.js +1 -0
- package/dist/plugin-sdk/polls-yWqSCEP0.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-B765haXA.js +1 -0
- package/dist/plugin-sdk/proxy-env-Bcl14j2_.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-BlrHtJWH.js +1 -0
- package/dist/plugin-sdk/proxy-env-D48qBPAr.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-DGzNnnJh.js +1 -0
- package/dist/plugin-sdk/proxy-env-DQoJjkWE.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-DWw9TnOj.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-MEjSyzTr.js +1 -0
- package/dist/plugin-sdk/proxy-env-a590sPAz.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-k93igu7v.cjs +1 -0
- package/dist/plugin-sdk/proxy-env-m9eG3uZN.js +1 -0
- package/dist/plugin-sdk/proxy-env-t6hcaFqC.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-B9aXJVe-.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-BaA3JYgW.cjs +1 -0
- package/dist/plugin-sdk/proxy-fetch-BwXFVsHE.cjs +1 -0
- package/dist/plugin-sdk/proxy-fetch-BzcKzknk.cjs +1 -0
- package/dist/plugin-sdk/proxy-fetch-CYVChsKE.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-ClOb2LUH.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-DH7VIiBH.cjs +1 -0
- package/dist/plugin-sdk/proxy-fetch-DPOhfrou.cjs +1 -0
- package/dist/plugin-sdk/proxy-fetch-DXt2R_Z5.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-Del551nu.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-YCVHz7Rl.js +1 -0
- package/dist/plugin-sdk/proxy-fetch-qbrYAz8k.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-B0_rvdfF.js +1 -0
- package/dist/plugin-sdk/pw-ai-BqdrA15F.js +1 -0
- package/dist/plugin-sdk/pw-ai-CDzxu5B3.js +1 -0
- package/dist/plugin-sdk/pw-ai-CJIogpwF.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-CL_gU5PJ.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-Ca4aZTaG.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-CrfYxLI8.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-DCiFlwP8.js +1 -0
- package/dist/plugin-sdk/pw-ai-DSqXNmNZ.js +1 -0
- package/dist/plugin-sdk/pw-ai-Dh55xTz1.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-DxAvipyK.cjs +1 -0
- package/dist/plugin-sdk/pw-ai-U9nPHH-0.js +1 -0
- package/dist/plugin-sdk/qmd-manager-B3xNbdye.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-BMyDNBPi.js +1 -0
- package/dist/plugin-sdk/qmd-manager-BZhiv_zq.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-C3uVDbhW.js +1 -0
- package/dist/plugin-sdk/qmd-manager-CW46NrS-.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-C_e04BNg.js +1 -0
- package/dist/plugin-sdk/qmd-manager-CczVoslK.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-CzLKqPmR.js +1 -0
- package/dist/plugin-sdk/qmd-manager-DFh8b5N-.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-DXLfZZMI.js +1 -0
- package/dist/plugin-sdk/qmd-manager-FL9fAfNo.cjs +1 -0
- package/dist/plugin-sdk/qmd-manager-fWxbGqzk.js +1 -0
- package/dist/plugin-sdk/query-expansion-0zYzKrrd.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-BYSjmpkV.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-CAboqtWr.js +1 -0
- package/dist/plugin-sdk/query-expansion-C_DnhmUy.js +1 -0
- package/dist/plugin-sdk/query-expansion-Cb2vnF6y.js +1 -0
- package/dist/plugin-sdk/query-expansion-DCeqywxh.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-DF4LMxRQ.js +1 -0
- package/dist/plugin-sdk/query-expansion-DKJkqmNM.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-DO2CFW4z.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-DyCDaZbL.js +1 -0
- package/dist/plugin-sdk/query-expansion-cpXCyoDy.cjs +1 -0
- package/dist/plugin-sdk/query-expansion-r_iXkNzt.js +1 -0
- package/dist/plugin-sdk/qwen-portal-auth.cjs +1 -0
- package/dist/plugin-sdk/qwen-portal-auth.js +1 -0
- package/dist/plugin-sdk/render-6fCdtAr6.cjs +1 -0
- package/dist/plugin-sdk/render-CBsnn-2A.js +1 -0
- package/dist/plugin-sdk/render-CzHaQB0d.cjs +1 -0
- package/dist/plugin-sdk/render-DGmfCIRG.js +1 -0
- package/dist/plugin-sdk/render-DhTJXP1U.js +1 -0
- package/dist/plugin-sdk/render-Djx15dPh.js +1 -0
- package/dist/plugin-sdk/render-DxBO2Blp.cjs +1 -0
- package/dist/plugin-sdk/render-g5VlmgpF.cjs +1 -0
- package/dist/plugin-sdk/reply-0zCEbT4w.cjs +1 -0
- package/dist/plugin-sdk/reply-D-f2bbXy.js +1 -0
- package/dist/plugin-sdk/resolve-outbound-target-CrQGbaua.js +1 -0
- package/dist/plugin-sdk/resolve-outbound-target-H7Q9HcfW.js +1 -0
- package/dist/plugin-sdk/resolve-outbound-target-MS6Xpp17.cjs +1 -0
- package/dist/plugin-sdk/resolve-outbound-target-cDxjy3TL.cjs +1 -0
- package/dist/plugin-sdk/send-3VNTSIhr.js +1 -0
- package/dist/plugin-sdk/send-61GHLNYP.cjs +1 -0
- package/dist/plugin-sdk/send-6q4owAw0.js +1 -0
- package/dist/plugin-sdk/send-A2s5sPTd.js +1 -0
- package/dist/plugin-sdk/send-B2qa7CSk.js +1 -0
- package/dist/plugin-sdk/send-B3aEYvqG.cjs +1 -0
- package/dist/plugin-sdk/send-BAoqP09M.cjs +1 -0
- package/dist/plugin-sdk/send-BNBJ4CF8.js +1 -0
- package/dist/plugin-sdk/send-BTE2rI1E.js +1 -0
- package/dist/plugin-sdk/send-BlWuQHYB.js +1 -0
- package/dist/plugin-sdk/send-Bnvt7ZUE.cjs +1 -0
- package/dist/plugin-sdk/send-Bq6Mqs9G.cjs +1 -0
- package/dist/plugin-sdk/send-Bq787fi_.js +1 -0
- package/dist/plugin-sdk/send-BrAHLYBR.js +1 -0
- package/dist/plugin-sdk/send-Bt2eFBk2.js +1 -0
- package/dist/plugin-sdk/send-C4ZFbUux.js +1 -0
- package/dist/plugin-sdk/send-C4cyMW4S.cjs +1 -0
- package/dist/plugin-sdk/send-C8f5H4XV.cjs +1 -0
- package/dist/plugin-sdk/send-CDwTrbgT.cjs +1 -0
- package/dist/plugin-sdk/send-CEfs0Fsr.js +1 -0
- package/dist/plugin-sdk/send-CFuJjCNB.cjs +1 -0
- package/dist/plugin-sdk/send-CJGLeSJ8.cjs +1 -0
- package/dist/plugin-sdk/send-CL0W7jLW.js +1 -0
- package/dist/plugin-sdk/send-CLl490Gb.cjs +1 -0
- package/dist/plugin-sdk/send-CQtITZ7k.cjs +1 -0
- package/dist/plugin-sdk/send-CSGh_GVr.cjs +1 -0
- package/dist/plugin-sdk/send-CicLiXB4.js +1 -0
- package/dist/plugin-sdk/send-Cm7bEwx-.cjs +1 -0
- package/dist/plugin-sdk/send-CmO9z2-b.js +1 -0
- package/dist/plugin-sdk/send-Co_Wy2kT.cjs +1 -0
- package/dist/plugin-sdk/send-Cox_iyYB.cjs +1 -0
- package/dist/plugin-sdk/send-CuX4LcJ3.cjs +1 -0
- package/dist/plugin-sdk/send-CxMiTtxI.cjs +1 -0
- package/dist/plugin-sdk/send-CyyzWwDr.js +1 -0
- package/dist/plugin-sdk/send-D-HZnehy.cjs +1 -0
- package/dist/plugin-sdk/send-D-qD7BCb.js +1 -0
- package/dist/plugin-sdk/send-D3imkSlz.cjs +1 -0
- package/dist/plugin-sdk/send-D5UwpCoU.cjs +1 -0
- package/dist/plugin-sdk/send-D75OGJco.js +1 -0
- package/dist/plugin-sdk/send-DB4i1kUy.cjs +1 -0
- package/dist/plugin-sdk/send-DBjzdBda.cjs +1 -0
- package/dist/plugin-sdk/send-DPgRTM8s.js +1 -0
- package/dist/plugin-sdk/send-DPpBLiL4.js +1 -0
- package/dist/plugin-sdk/send-DV_afQnj.cjs +1 -0
- package/dist/plugin-sdk/send-DWuChr46.js +1 -0
- package/dist/plugin-sdk/send-DZ4szmEa.cjs +1 -0
- package/dist/plugin-sdk/send-DZr98eqE.cjs +1 -0
- package/dist/plugin-sdk/send-D_1K0zmx.cjs +1 -0
- package/dist/plugin-sdk/send-DaLB9Lca.js +1 -0
- package/dist/plugin-sdk/send-De4qiprb.js +1 -0
- package/dist/plugin-sdk/send-DeU-T5ps.js +1 -0
- package/dist/plugin-sdk/send-DtjJM0LO.js +1 -0
- package/dist/plugin-sdk/send-DvDCmTQf.js +1 -0
- package/dist/plugin-sdk/send-EvcsiFBC.cjs +1 -0
- package/dist/plugin-sdk/send-GuISe9C82.js +1 -0
- package/dist/plugin-sdk/send-IoGcE0w2.js +1 -0
- package/dist/plugin-sdk/send-JVdUTsN1.cjs +1 -0
- package/dist/plugin-sdk/send-NpNVFRmY.js +1 -0
- package/dist/plugin-sdk/send-XMOZsJcs.js +1 -0
- package/dist/plugin-sdk/send-h--iKoQE.cjs +1 -0
- package/dist/plugin-sdk/session-8BcB905y.cjs +1 -0
- package/dist/plugin-sdk/session-B2oURX5K.js +1 -0
- package/dist/plugin-sdk/session-BJhNqIOi.js +1 -0
- package/dist/plugin-sdk/session-BRgGsw96.cjs +1 -0
- package/dist/plugin-sdk/session-Be_7rXAz.js +1 -0
- package/dist/plugin-sdk/session-C66IXbE-.js +1 -0
- package/dist/plugin-sdk/session-CCYDbcyV.js +1 -0
- package/dist/plugin-sdk/session-CHu3C2m0.cjs +1 -0
- package/dist/plugin-sdk/session-DUlmK2IL.cjs +1 -0
- package/dist/plugin-sdk/session-DxTRZTnu.js +1 -0
- package/dist/plugin-sdk/session-DzhI0nj-.cjs +1 -0
- package/dist/plugin-sdk/session-WRCBgAzG.cjs +1 -0
- package/dist/plugin-sdk/sessions-DxXXAfdI.js +1 -0
- package/dist/plugin-sdk/sessions-Dz5JUL8j.cjs +1 -0
- package/dist/plugin-sdk/signal.cjs +1 -0
- package/dist/plugin-sdk/signal.js +1 -0
- package/dist/plugin-sdk/skill-commands-B4wI8ETo.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-BoTeA376.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-BwrYJu7Z.js +1 -0
- package/dist/plugin-sdk/skill-commands-BzkMuA58.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-CIAf9cWN.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-CKc7JO_c.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-Cvb6oXym.js +1 -0
- package/dist/plugin-sdk/skill-commands-DWDtyCtB.js +1 -0
- package/dist/plugin-sdk/skill-commands-Hmuw0PPK.js +1 -0
- package/dist/plugin-sdk/skill-commands-KyN0FGaC.cjs +1 -0
- package/dist/plugin-sdk/skill-commands-KzwEqk5p.js +1 -0
- package/dist/plugin-sdk/skill-commands-Ny38ZFIC.js +1 -0
- package/dist/plugin-sdk/slack.cjs +1 -0
- package/dist/plugin-sdk/slack.js +1 -0
- package/dist/plugin-sdk/synology-chat.cjs +1 -0
- package/dist/plugin-sdk/synology-chat.js +1 -0
- package/dist/plugin-sdk/tables-BIDWwpX8.js +1 -0
- package/dist/plugin-sdk/tables-Bk8lHaPx.cjs +1 -0
- package/dist/plugin-sdk/tables-BlNIkMV8.js +1 -0
- package/dist/plugin-sdk/tables-Bp0a2WRP.cjs +1 -0
- package/dist/plugin-sdk/tables-BtVUf77b.cjs +1 -0
- package/dist/plugin-sdk/tables-C4j5Bar_.js +1 -0
- package/dist/plugin-sdk/tables-CZGtYzDC.cjs +1 -0
- package/dist/plugin-sdk/tables-CnrHab5d.cjs +1 -0
- package/dist/plugin-sdk/tables-DtslIPYw.js +1 -0
- package/dist/plugin-sdk/tables-NrdtIJGp.cjs +1 -0
- package/dist/plugin-sdk/tables-XYb3T-vE.js +1 -0
- package/dist/plugin-sdk/tables-lbv-0tl3.js +1 -0
- package/dist/plugin-sdk/target-errors-9cdJA1L2.cjs +1 -0
- package/dist/plugin-sdk/target-errors-BEkhKWCq.cjs +1 -0
- package/dist/plugin-sdk/target-errors-BZRN-lPd.js +1 -0
- package/dist/plugin-sdk/target-errors-BrwqillR.cjs +1 -0
- package/dist/plugin-sdk/target-errors-Buo5pfom.js +1 -0
- package/dist/plugin-sdk/target-errors-CFzzcffg.js +1 -0
- package/dist/plugin-sdk/target-errors-DFmK5loi.js +1 -0
- package/dist/plugin-sdk/target-errors-DXqwykNX.js +1 -0
- package/dist/plugin-sdk/target-errors-Dd6CopYF.cjs +1 -0
- package/dist/plugin-sdk/target-errors-DeNJ10ks.cjs +1 -0
- package/dist/plugin-sdk/targets-BSc11Uk8.cjs +1 -0
- package/dist/plugin-sdk/targets-BSkiizml.js +1 -0
- package/dist/plugin-sdk/targets-CBI0xqve.cjs +1 -0
- package/dist/plugin-sdk/targets-CL5fYQi7.js +1 -0
- package/dist/plugin-sdk/targets-CUZWrFrm.cjs +1 -0
- package/dist/plugin-sdk/targets-CVEYTFPQ.js +1 -0
- package/dist/plugin-sdk/targets-Co2R6K14.cjs +1 -0
- package/dist/plugin-sdk/targets-CrkJkzil.js +1 -0
- package/dist/plugin-sdk/targets-D-m7SV9x.cjs +1 -0
- package/dist/plugin-sdk/targets-D8HTxbo4.js +1 -0
- package/dist/plugin-sdk/targets-DcGNB9nk.cjs +1 -0
- package/dist/plugin-sdk/targets-Dn9gDiEw.js +1 -0
- package/dist/plugin-sdk/targets-X28mff4s.cjs +1 -0
- package/dist/plugin-sdk/targets-uycXZ8vQ.js +1 -0
- package/dist/plugin-sdk/telegram.cjs +1 -0
- package/dist/plugin-sdk/telegram.js +1 -0
- package/dist/plugin-sdk/test-utils.cjs +1 -0
- package/dist/plugin-sdk/test-utils.js +1 -0
- package/dist/plugin-sdk/tlon.cjs +1 -0
- package/dist/plugin-sdk/tlon.js +1 -0
- package/dist/plugin-sdk/tokens-AAdZjj0M.js +1 -0
- package/dist/plugin-sdk/tokens-B20KNIDD.js +1 -0
- package/dist/plugin-sdk/tokens-B8ys7Q2e.js +1 -0
- package/dist/plugin-sdk/tokens-BPc1fcZ3.js +1 -0
- package/dist/plugin-sdk/tokens-BqABmXSe.js +1 -0
- package/dist/plugin-sdk/tokens-CXsPDJTr.cjs +1 -0
- package/dist/plugin-sdk/tokens-CnB4dJmp.cjs +1 -0
- package/dist/plugin-sdk/tokens-CytSl1X8.cjs +1 -0
- package/dist/plugin-sdk/tokens-DgPZk2Uu.js +1 -0
- package/dist/plugin-sdk/tokens-Dq2wDF3_.cjs +1 -0
- package/dist/plugin-sdk/tokens-DtrljGtQ.cjs +1 -0
- package/dist/plugin-sdk/tokens-g5KWvWhD.cjs +1 -0
- package/dist/plugin-sdk/twitch.cjs +1 -0
- package/dist/plugin-sdk/twitch.js +1 -0
- package/dist/plugin-sdk/utils-BJtJR72k.js +1 -0
- package/dist/plugin-sdk/utils-PPIvU9qw.cjs +1 -0
- package/dist/plugin-sdk/voice-call.cjs +1 -0
- package/dist/plugin-sdk/voice-call.js +1 -0
- package/dist/plugin-sdk/web-B-QDcVRv.cjs +1 -0
- package/dist/plugin-sdk/web-B2PwjHsu.cjs +1 -0
- package/dist/plugin-sdk/web-BdnQzLgF.js +1 -0
- package/dist/plugin-sdk/web-C9T7tf6w.js +1 -0
- package/dist/plugin-sdk/web-CODD4ksc.cjs +1 -0
- package/dist/plugin-sdk/web-CkdCvvR-.js +1 -0
- package/dist/plugin-sdk/web-_tj8xNZE.js +1 -0
- package/dist/plugin-sdk/web-pcTha_l7.cjs +1 -0
- package/dist/plugin-sdk/weixin.cjs +1 -0
- package/dist/plugin-sdk/weixin.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-Bhz2j1uz.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-Bm2UyRYg.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-Bolz0jl5.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-CJ3LDpaG.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-CL1Gmkb0.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-D-bZRT7s.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-DSGTTE8M.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-DjQxgMpW.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-DrPBBi5t.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-DtK657CZ.cjs +1 -0
- package/dist/plugin-sdk/whatsapp-actions-Xwev51_N.js +1 -0
- package/dist/plugin-sdk/whatsapp-actions-m7vLtNAA.js +1 -0
- package/dist/plugin-sdk/whatsapp.cjs +1 -0
- package/dist/plugin-sdk/whatsapp.js +1 -0
- package/dist/plugin-sdk/zalo.cjs +1 -0
- package/dist/plugin-sdk/zalo.js +1 -0
- package/dist/plugin-sdk/zalouser.cjs +1 -0
- package/dist/plugin-sdk/zalouser.js +1 -0
- package/dist/plugins-CYLrFT4h.js +1 -0
- package/dist/plugins-DNlgeTTc.js +1 -0
- package/dist/plugins-cli-BbjMbzJU.js +1 -0
- package/dist/plugins-cli-BiVMAr5T.js +1 -0
- package/dist/polls-BIVz6a4F.js +1 -0
- package/dist/polls-Bh5wc9-6.js +1 -0
- package/dist/polls-C_XSFz3d.js +1 -0
- package/dist/polls-DKJOFSzJ.js +1 -0
- package/dist/ports-B0XdGTfS.js +1 -0
- package/dist/ports-BR0PLRtq.js +1 -0
- package/dist/probe-auth-BMA0yM94.js +1 -0
- package/dist/probe-auth-VI96zmTK.js +1 -0
- package/dist/profile-utils-CWmra1aY.js +1 -0
- package/dist/program-BrAZTwFr.js +1 -0
- package/dist/program-context-B9ydtPje.js +1 -0
- package/dist/program-context-CH9p6anW.js +1 -0
- package/dist/progress-LNttnI-y.js +1 -0
- package/dist/progress-d1m2sqR1.js +1 -0
- package/dist/prompt-select-styled-BeJNbzSa.js +1 -0
- package/dist/prompt-select-styled-DIOWLjl0.js +1 -0
- package/dist/prompt-style-BThRSQJR.js +1 -0
- package/dist/prompt-style-CXKekIBY.js +1 -0
- package/dist/prompts-CMzglboN.js +1 -0
- package/dist/prompts-wv-lfVrJ.js +1 -0
- package/dist/provider-auth-helpers-1lU43eTW.js +1 -0
- package/dist/provider-auth-helpers-pBVCjBj9.js +1 -0
- package/dist/provider-env-vars-D8p6Ohpj.js +1 -0
- package/dist/provider-env-vars-Dt0Q29Su.js +1 -0
- package/dist/proxy-env-BNhTHkd_.js +1 -0
- package/dist/proxy-env-DcmW_urA.js +1 -0
- package/dist/proxy-env-DrC3TIGh.js +1 -0
- package/dist/proxy-env-FJr5nlvs.js +1 -0
- package/dist/proxy-fetch-BADsUK4d.js +1 -0
- package/dist/proxy-fetch-BZ9O8Dvj.js +1 -0
- package/dist/proxy-fetch-DnjU1fEB.js +1 -0
- package/dist/proxy-fetch-gWETR3cl.js +1 -0
- package/dist/push-apns-BGUOmD5M.js +1 -0
- package/dist/push-apns-B_a2MBJ4.js +1 -0
- package/dist/pw-ai-C-Ffkwai.js +1 -0
- package/dist/pw-ai-CV1H1Vrs.js +1 -0
- package/dist/pw-ai-D_MB1lrR.js +1 -0
- package/dist/pw-ai-_l9lVice.js +1 -0
- package/dist/qmd-manager-C_e04BNg.js +1 -0
- package/dist/qmd-manager-DSQ_mDCl.js +1 -0
- package/dist/qmd-manager-DcBYbt_V.js +1 -0
- package/dist/qmd-manager-NLI0R6kp.js +1 -0
- package/dist/qr-cli-3aG6CB6K.js +1 -0
- package/dist/qr-cli-fiJxD5M4.js +1 -0
- package/dist/query-expansion-0OxEb1Io.js +1 -0
- package/dist/query-expansion-BUUx_oWg.js +1 -0
- package/dist/query-expansion-r_iXkNzt.js +1 -0
- package/dist/reaction-level-DVPHL14p.js +1 -0
- package/dist/reaction-message-id-BEEe7X3D.js +1 -0
- package/dist/read-only-account-inspect-DBwAwB3_.js +1 -0
- package/dist/redact-3_CiXMY6.js +1 -0
- package/dist/redact-CnRxK70G.js +1 -0
- package/dist/register.agent-CX78s_X9.js +1 -0
- package/dist/register.agent-DLDKQENq.js +1 -0
- package/dist/register.backup-DkFoTcuT.js +1 -0
- package/dist/register.backup-PzF5rmeU.js +1 -0
- package/dist/register.configure-BA5u9hT3.js +1 -0
- package/dist/register.configure-BhPtf3Qo.js +1 -0
- package/dist/register.maintenance-BhsBepKS.js +1 -0
- package/dist/register.maintenance-r_MzNK3-.js +1 -0
- package/dist/register.message-CTF--Z2a.js +1 -0
- package/dist/register.message-jcZ875be.js +1 -0
- package/dist/register.onboard-C3yL50_c.js +1 -0
- package/dist/register.onboard-CNwnStUk.js +1 -0
- package/dist/register.setup-BRJMzgfU.js +1 -0
- package/dist/register.setup-BvsS-zgm.js +1 -0
- package/dist/register.status-health-sessions-DVc__2pc.js +1 -0
- package/dist/register.status-health-sessions-Dqmkw820.js +1 -0
- package/dist/register.subclis-D-24j83X.js +1 -0
- package/dist/registry-BptzrW8D.js +1 -0
- package/dist/registry-hFAtCSWG.js +1 -0
- package/dist/render-BXEUPIHe.js +1 -0
- package/dist/render-CBsnn-2A.js +1 -0
- package/dist/render-D8OWO2hT.js +1 -0
- package/dist/render-DrrPmnMI.js +1 -0
- package/dist/reply-l-Y47HP4.js +1 -0
- package/dist/restart-CHXEHdSC.js +1 -0
- package/dist/rpc-B3ReBNXG.js +1 -0
- package/dist/rpc-DumDLalJ.js +1 -0
- package/dist/run-main-B_YBE_TN.js +1 -0
- package/dist/runtime-BC5Ep2pJ.js +1 -0
- package/dist/runtime-Dlg2-Omq.js +1 -0
- package/dist/runtime-guard-DFYBaYZS.js +1 -0
- package/dist/runtime-guard-DX2Ie4ri.js +1 -0
- package/dist/runtime-status-CqFBmdRd.js +1 -0
- package/dist/runtime-status-DszMjvJK.js +1 -0
- package/dist/runtime-web-tools-D8fms06-.js +1 -0
- package/dist/runtime-web-tools-bz76ZaRc.js +1 -0
- package/dist/sandbox-cli-BDorUBm-.js +1 -0
- package/dist/sandbox-cli-Bq40R5Vs.js +1 -0
- package/dist/scan-paths-C13EseXp.js +1 -0
- package/dist/scan-paths-CWtvWW40.js +1 -0
- package/dist/search-manager-Bp9x20r6.js +1 -0
- package/dist/secret-file-C7JffiM_.js +1 -0
- package/dist/secret-file-D60EFEOe.js +1 -0
- package/dist/secret-file-DuWm26jS.js +1 -0
- package/dist/secrets-cli-Bo6PC32U.js +1 -0
- package/dist/secrets-cli-CoXJv3Jp.js +1 -0
- package/dist/secure-random-D7JQgiK-.js +1 -0
- package/dist/security-cli-CgZL2KKh.js +1 -0
- package/dist/security-cli-DVOfhwAP.js +1 -0
- package/dist/send-B7sHR38c2.js +1 -0
- package/dist/send-Bx2Qr7VH.js +1 -0
- package/dist/send-C-AP01PR.js +1 -0
- package/dist/send-C1CJ-GHU.js +1 -0
- package/dist/send-C48Y9SAq.js +1 -0
- package/dist/send-CVplsJpw.js +1 -0
- package/dist/send-CW81y5Wz.js +1 -0
- package/dist/send-CYgHok1p.js +1 -0
- package/dist/send-Cgd_VJHR.js +1 -0
- package/dist/send-Chz0YMoJ.js +1 -0
- package/dist/send-D9hVVn7p2.js +1 -0
- package/dist/send-DKrzj_Ts.js +1 -0
- package/dist/send-DRLSCwCk.js +1 -0
- package/dist/send-DavpkzhH.js +1 -0
- package/dist/send-DbeEC2a3.js +1 -0
- package/dist/send-DkiKKUkt.js +1 -0
- package/dist/send-DlfVd5mL.js +1 -0
- package/dist/send-JYgM9Sm-2.js +1 -0
- package/dist/send-hZFDcGLM.js +1 -0
- package/dist/send-vthbs31u.js +1 -0
- package/dist/server-DpyBukwA.js +1 -0
- package/dist/server-IgiSKzXH.js +1 -0
- package/dist/server-node-events-CFSY_-4t.js +1 -0
- package/dist/server-node-events-ZFwmPwQ-.js +1 -0
- package/dist/service-BtB9epJk.js +1 -0
- package/dist/service-DZ9EbS15.js +1 -0
- package/dist/session-C9TDmUS7.js +1 -0
- package/dist/session-CUUGjiV3.js +1 -0
- package/dist/session-DA-i5xQ-.js +1 -0
- package/dist/session-bk3gFwO4.js +1 -0
- package/dist/session-cost-usage-BgqKixv0.js +1 -0
- package/dist/session-cost-usage-CHtVgnE8.js +1 -0
- package/dist/session-key-C7F_iqYg.js +1 -0
- package/dist/session-key-D3P0tf5P.js +1 -0
- package/dist/session-utils-8acNlxwP.js +1 -0
- package/dist/sessions-BsxT0V2m.js +1 -0
- package/dist/shared-9x5sqYRb.js +1 -0
- package/dist/shared-BKWhOp64.js +1 -0
- package/dist/shared-GesXrZzd.js +1 -0
- package/dist/skill-commands-BWW6mc6t.js +1 -0
- package/dist/skill-commands-CSF6wVPU.js +1 -0
- package/dist/skill-commands-Db232ZRp.js +1 -0
- package/dist/skill-commands-HJHHZqt6.js +1 -0
- package/dist/skill-scanner-CUUF3Fvo.js +1 -0
- package/dist/skill-scanner-CkxXNioD.js +1 -0
- package/dist/skills-CKTicUKS.js +1 -0
- package/dist/skills-DHbOKEGc.js +1 -0
- package/dist/skills-cli-9Ls94z5H.js +1 -0
- package/dist/skills-cli-BY7OhJzj.js +1 -0
- package/dist/skills-install-CIdGCXSy.js +1 -0
- package/dist/skills-install-DIdiVt9Y.js +1 -0
- package/dist/skills-status-BWIugRCz.js +1 -0
- package/dist/skills-status-DswSl5aD.js +1 -0
- package/dist/sqlite-CILF3z9U.js +1 -0
- package/dist/stagger-DmFYysrJ.js +1 -0
- package/dist/stagger-DxzgG2jd.js +1 -0
- package/dist/status-C-9fSiMn.js +1 -0
- package/dist/status-CeBGmSAz.js +1 -0
- package/dist/status-DYqPF0rB.js +1 -0
- package/dist/status-JIPeVrsc.js +1 -0
- package/dist/status.update-B_8Gumuc.js +1 -0
- package/dist/status.update-DoSzHu2F.js +1 -0
- package/dist/string-normalization-BrUPaXaM.js +1 -0
- package/dist/string-normalization-DJT5zuUF.js +1 -0
- package/dist/subsystem-BLbY429l.js +1 -0
- package/dist/subsystem-Bc2XrjUz.js +1 -0
- package/dist/subsystem-C5XF2Fy5.js +1 -0
- package/dist/system-cli-CeZfoVPN.js +1 -0
- package/dist/system-cli-DZkTYB9d.js +1 -0
- package/dist/system-run-command-BKfMiqQM.js +1 -0
- package/dist/system-run-command-DEWnZE0r.js +1 -0
- package/dist/systemd-D7odsu4K.js +1 -0
- package/dist/systemd-DbevZh65.js +1 -0
- package/dist/systemd-hints-C0DKDl35.js +1 -0
- package/dist/systemd-hints-lXpMy-kY.js +1 -0
- package/dist/systemd-linger-C2MJD6KG.js +1 -0
- package/dist/systemd-linger-cWKbFNpu.js +1 -0
- package/dist/table-CR7TFMew.js +1 -0
- package/dist/table-CY440fI1.js +1 -0
- package/dist/tables-Brc2lNcB.js +1 -0
- package/dist/tables-CrXdLc_6.js +1 -0
- package/dist/tables-Oieq7UbT.js +1 -0
- package/dist/tables-btcG3yFT.js +1 -0
- package/dist/target-errors-CRlevJJ5.js +1 -0
- package/dist/target-errors-CgWAJOam.js +1 -0
- package/dist/target-errors-CpKXh2RS.js +1 -0
- package/dist/target-errors-a35Md15n.js +1 -0
- package/dist/targets-4EaxWBal.js +1 -0
- package/dist/targets-BJTo7bqu.js +1 -0
- package/dist/targets-BYVMrXDf.js +1 -0
- package/dist/targets-Bq6rS6-Z.js +1 -0
- package/dist/targets-CL5fYQi7.js +1 -0
- package/dist/targets-fozeWOOg.js +1 -0
- package/dist/targets-m_41k_Mv.js +1 -0
- package/dist/telegram/audit.js +1 -0
- package/dist/text-format-CvrvBBre.js +1 -0
- package/dist/text-format-DEWK6oCT.js +1 -0
- package/dist/token-DnTmiyJu.js +1 -0
- package/dist/tokens-B2fq-rL6.js +1 -0
- package/dist/tokens-CL2fSjGl.js +1 -0
- package/dist/tokens-DRM8vzJx.js +1 -0
- package/dist/tokens-XGbQGn67.js +1 -0
- package/dist/tool-display-DJDtttQg.js +1 -0
- package/dist/tool-display-DjuSUUbH.js +1 -0
- package/dist/tui-B506apla.js +1 -0
- package/dist/tui-CJUkUxHb.js +1 -0
- package/dist/tui-cli-BEdGHmhc.js +1 -0
- package/dist/tui-cli-Cq_eXDAV.js +1 -0
- package/dist/types.secrets-C-5U96pc.js +1 -0
- package/dist/types.secrets-D4tbc3Wq.js +1 -0
- package/dist/update-BGrxUIyz.js +1 -0
- package/dist/update-CwTy5DPl.js +1 -0
- package/dist/update-cli-BwBMOeP0.js +1 -0
- package/dist/update-cli-YrBbmw4f.js +1 -0
- package/dist/update-runner-BvtyRBD2.js +1 -0
- package/dist/update-runner-DYamgo1V.js +1 -0
- package/dist/usage-format-BWD8FJFL.js +1 -0
- package/dist/usage-format-yPwal8Iz.js +1 -0
- package/dist/utils-CGdo13HV.js +1 -0
- package/dist/utils-D3t-vPka.js +1 -0
- package/dist/utils-R-mFyVJi.js +1 -0
- package/dist/utils-UGOV_184.js +1 -0
- package/dist/version-q3SkUw2K.js +1 -0
- package/dist/warning-filter.js +1 -0
- package/dist/web-Cq3xWCaD.js +1 -0
- package/dist/web-DwcxsgH0.js +1 -0
- package/dist/webhooks-cli-CIeyainW.js +1 -0
- package/dist/webhooks-cli-DSNAve_D.js +1 -0
- package/dist/whatsapp-actions-B6gt1KeB.js +1 -0
- package/dist/whatsapp-actions-DACoH7qd.js +1 -0
- package/dist/whatsapp-actions-iQhIeMya.js +1 -0
- package/dist/whatsapp-actions-tmjID75a.js +1 -0
- package/dist/widearea-dns-BDx7vkV2.js +1 -0
- package/dist/widearea-dns-BFjqKXu_.js +1 -0
- package/dist/windows-spawn-7oINn5ao.js +1 -0
- package/dist/windows-spawn-AB7ItGAE.js +1 -0
- package/dist/with-timeout-WveKxvFV.js +1 -0
- package/dist/with-timeout-c1CzdShT.js +1 -0
- package/dist/workspace-B0ZQeHXg.js +1 -0
- package/dist/workspace-C45T1Cxg.js +1 -0
- package/dist/workspace-dirs-A8Vib9_B.js +1 -0
- package/dist/workspace-dirs-BhF1Dzxt.js +1 -0
- package/dist/workspace-xNEpaJvu.js +1 -0
- package/dist/wsl-DHxB2Ew_.js +1 -0
- package/dist/wsl-Ok7GaSJ6.js +1 -0
- package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +2 -2
- package/node_modules/@aws-sdk/token-providers/package.json +1 -1
- package/node_modules/@grammyjs/types/package.json +1 -1
- package/node_modules/@line/bot-sdk/dist/channel-access-token/api/channelAccessTokenClient.js +49 -3
- package/node_modules/@line/bot-sdk/dist/cjs/channel-access-token/api/channelAccessTokenClient.js +49 -3
- package/node_modules/@line/bot-sdk/dist/cjs/client.js +636 -0
- package/node_modules/@line/bot-sdk/dist/cjs/endpoints.js +7 -0
- package/node_modules/@line/bot-sdk/dist/cjs/exceptions.js +15 -1
- package/node_modules/@line/bot-sdk/dist/cjs/http-axios.js +2 -6
- package/node_modules/@line/bot-sdk/dist/cjs/http-fetch.js +5 -13
- package/node_modules/@line/bot-sdk/dist/cjs/index.js +3 -1
- package/node_modules/@line/bot-sdk/dist/cjs/insight/api/insightClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/liff/api/liffClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.factory.generated.js +66 -0
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.generated.js +1999 -0
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.js +61 -0
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceBlobClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiBlobClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/module/api/lineModuleClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/module-attach/api/lineModuleAttachClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/shop/api/shopClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/cjs/utils.js +10 -0
- package/node_modules/@line/bot-sdk/dist/cjs/version.js +1 -1
- package/node_modules/@line/bot-sdk/dist/client.js +636 -0
- package/node_modules/@line/bot-sdk/dist/endpoints.js +7 -0
- package/node_modules/@line/bot-sdk/dist/exceptions.js +15 -1
- package/node_modules/@line/bot-sdk/dist/http-axios.js +2 -6
- package/node_modules/@line/bot-sdk/dist/http-fetch.js +5 -13
- package/node_modules/@line/bot-sdk/dist/index.js +1 -0
- package/node_modules/@line/bot-sdk/dist/insight/api/insightClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/liff/api/liffClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/line-bot-client.factory.generated.js +63 -0
- package/node_modules/@line/bot-sdk/dist/line-bot-client.generated.js +1995 -0
- package/node_modules/@line/bot-sdk/dist/line-bot-client.js +58 -0
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceBlobClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiBlobClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/module/api/lineModuleClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/module-attach/api/lineModuleAttachClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/shop/api/shopClient.js +3 -0
- package/node_modules/@line/bot-sdk/dist/utils.js +9 -0
- package/node_modules/@line/bot-sdk/dist/version.js +1 -1
- package/node_modules/@line/bot-sdk/package.json +10 -7
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/clipboard.linux-x64-gnu.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/package.json +25 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/clipboard.linux-x64-musl.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +25 -0
- package/node_modules/@slack/bolt/dist/App.js +22 -30
- package/node_modules/@slack/bolt/dist/Assistant.js +21 -37
- package/node_modules/@slack/bolt/dist/CustomFunction.js +1 -43
- package/node_modules/@slack/bolt/dist/context/create-function-complete.js +23 -0
- package/node_modules/@slack/bolt/dist/context/create-function-fail.js +23 -0
- package/node_modules/@slack/bolt/dist/context/create-respond.js +11 -0
- package/node_modules/@slack/bolt/dist/context/create-say-stream.js +16 -0
- package/node_modules/@slack/bolt/dist/context/create-say.js +17 -0
- package/node_modules/@slack/bolt/dist/context/create-set-status.js +21 -0
- package/node_modules/@slack/bolt/dist/context/index.js +16 -0
- package/node_modules/@slack/bolt/dist/helpers.js +79 -3
- package/node_modules/@slack/bolt/dist/index.js +10 -8
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js +5 -1
- package/node_modules/@slack/bolt/dist/types/events/index.js +0 -4
- package/node_modules/@slack/bolt/package.json +7 -7
- package/node_modules/@smithy/config-resolver/package.json +10 -11
- package/node_modules/@smithy/core/dist-cjs/getSmithyContext.js +6 -0
- package/node_modules/@smithy/core/dist-cjs/index.js +1 -1
- package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +21 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +21 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +46 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/index.js +6 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/resolveAuthOptions.js +24 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/getHttpSigningMiddleware.js +19 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/httpSigningMiddleware.js +27 -0
- package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/index.js +5 -0
- package/node_modules/@smithy/core/dist-cjs/normalizeProvider.js +10 -0
- package/node_modules/@smithy/core/dist-cjs/pagination/createPaginator.js +44 -0
- package/node_modules/@smithy/core/dist-cjs/request-builder/requestBuilder.js +5 -0
- package/node_modules/@smithy/core/dist-cjs/setFeature.js +14 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +17 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +38 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +15 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/index.js +6 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/noAuth.js +9 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/index.js +6 -0
- package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/memoizeIdentityProvider.js +61 -0
- package/node_modules/@smithy/core/package.json +15 -16
- package/node_modules/@smithy/credential-provider-imds/package.json +9 -10
- package/node_modules/@smithy/eventstream-codec/dist-cjs/index.js +13 -0
- package/node_modules/@smithy/eventstream-codec/package.json +6 -7
- package/node_modules/@smithy/eventstream-serde-browser/package.json +7 -8
- package/node_modules/@smithy/eventstream-serde-config-resolver/package.json +7 -8
- package/node_modules/@smithy/eventstream-serde-node/package.json +7 -8
- package/node_modules/@smithy/eventstream-serde-universal/package.json +9 -10
- package/node_modules/@smithy/fetch-http-handler/package.json +12 -13
- package/node_modules/@smithy/hash-node/package.json +6 -7
- package/node_modules/@smithy/invalid-dependency/package.json +6 -7
- package/node_modules/@smithy/middleware-content-length/package.json +7 -8
- package/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +2 -2
- package/node_modules/@smithy/middleware-endpoint/package.json +13 -14
- package/node_modules/@smithy/middleware-retry/dist-cjs/index.js +70 -29
- package/node_modules/@smithy/middleware-retry/dist-es/index.js +5 -4
- package/node_modules/@smithy/middleware-retry/dist-es/longPollMiddleware.js +15 -0
- package/node_modules/@smithy/middleware-retry/dist-es/parseRetryAfterHeader.js +49 -0
- package/node_modules/@smithy/middleware-retry/dist-es/{StandardRetryStrategy.js → retry-pre-sra-deprecated/StandardRetryStrategy.js} +1 -1
- package/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js +13 -20
- package/node_modules/@smithy/middleware-retry/package.json +16 -16
- package/node_modules/@smithy/middleware-serde/package.json +10 -11
- package/node_modules/@smithy/middleware-stack/package.json +7 -8
- package/node_modules/@smithy/node-config-provider/package.json +8 -9
- package/node_modules/@smithy/node-http-handler/package.json +10 -11
- package/node_modules/@smithy/property-provider/package.json +6 -7
- package/node_modules/@smithy/protocol-http/package.json +6 -7
- package/node_modules/@smithy/querystring-builder/package.json +6 -7
- package/node_modules/@smithy/querystring-parser/package.json +6 -7
- package/node_modules/@smithy/service-error-classification/package.json +6 -7
- package/node_modules/@smithy/shared-ini-file-loader/package.json +7 -8
- package/node_modules/@smithy/signature-v4/dist-cjs/index.js +13 -0
- package/node_modules/@smithy/signature-v4/package.json +9 -10
- package/node_modules/@smithy/smithy-client/dist-cjs/index.js +1 -1
- package/node_modules/@smithy/smithy-client/package.json +14 -15
- package/node_modules/@smithy/types/package.json +7 -8
- package/node_modules/@smithy/url-parser/package.json +7 -8
- package/node_modules/@smithy/util-defaults-mode-browser/package.json +8 -9
- package/node_modules/@smithy/util-defaults-mode-node/package.json +11 -12
- package/node_modules/@smithy/util-endpoints/package.json +9 -10
- package/node_modules/@smithy/util-middleware/package.json +6 -7
- package/node_modules/@smithy/util-retry/dist-cjs/index.js +123 -76
- package/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js +7 -4
- package/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js +2 -2
- package/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js +24 -25
- package/node_modules/@smithy/util-retry/dist-es/DefaultRetryBackoffStrategy.js +14 -0
- package/node_modules/@smithy/util-retry/dist-es/DefaultRetryToken.js +25 -0
- package/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js +39 -26
- package/node_modules/@smithy/util-retry/dist-es/index.js +1 -0
- package/node_modules/@smithy/util-retry/dist-es/retries-2026-config.js +18 -0
- package/node_modules/@smithy/util-retry/package.json +10 -11
- package/node_modules/@smithy/util-stream/package.json +12 -13
- package/node_modules/@snazzah/davey-linux-x64-gnu/davey.linux-x64-gnu.node +0 -0
- package/node_modules/@snazzah/davey-linux-x64-gnu/package.json +43 -0
- package/node_modules/@snazzah/davey-linux-x64-musl/davey.linux-x64-musl.node +0 -0
- package/node_modules/@snazzah/davey-linux-x64-musl/package.json +43 -0
- package/node_modules/dotenv/lib/main.js +1 -1
- package/node_modules/dotenv/package.json +1 -1
- package/node_modules/dotenv/skills/dotenv/SKILL.md +32 -52
- package/node_modules/dotenv/skills/dotenvx/SKILL.md +57 -273
- package/node_modules/grammy/out/bot.js +1 -0
- package/node_modules/grammy/out/context.js +35 -0
- package/node_modules/grammy/out/convenience/keyboard.js +30 -2
- package/node_modules/grammy/out/core/api.js +34 -0
- package/node_modules/grammy/out/filter.js +6 -2
- package/node_modules/grammy/out/web.mjs +58 -10
- package/node_modules/grammy/package.json +2 -2
- package/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js +12 -0
- package/node_modules/lru-cache/dist/commonjs/index.js +227 -130
- package/node_modules/lru-cache/dist/commonjs/index.min.js +1 -1
- package/node_modules/lru-cache/dist/esm/diagnostics-channel-esm.d.mts.map +1 -0
- package/node_modules/lru-cache/dist/esm/diagnostics-channel.js +17 -0
- package/node_modules/lru-cache/dist/esm/index.js +227 -130
- package/node_modules/lru-cache/dist/esm/index.min.js +1 -1
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel-node.d.mts.map +1 -0
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js +8 -0
- package/node_modules/lru-cache/dist/esm/node/index.js +1688 -0
- package/node_modules/lru-cache/dist/esm/node/index.min.js +2 -0
- package/node_modules/lru-cache/package.json +29 -9
- package/node_modules/netmask/dist/netmask.js +58 -0
- package/node_modules/netmask/dist/netmask4.js +189 -0
- package/node_modules/netmask/dist/netmask6.js +187 -0
- package/node_modules/netmask/package.json +15 -6
- package/node_modules/path-expression-matcher/lib/pem.cjs +1 -1
- package/node_modules/path-expression-matcher/lib/pem.d.cts +93 -0
- package/node_modules/path-expression-matcher/lib/pem.min.js +1 -1
- package/node_modules/path-expression-matcher/package.json +1 -1
- package/node_modules/path-expression-matcher/src/ExpressionSet.js +189 -0
- package/node_modules/path-expression-matcher/src/Matcher.js +50 -20
- package/node_modules/path-expression-matcher/src/index.js +3 -2
- package/node_modules/strnum/package.json +1 -1
- package/package.json +1 -1
- package/preset-config.json +12 -0
- package/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js +0 -14
- package/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js +0 -11
- package/node_modules/netmask/CREDITS.md +0 -30
- package/node_modules/netmask/lib/netmask.coffee +0 -167
- package/node_modules/netmask/lib/netmask.js +0 -208
- package/node_modules/strnum/.github/SECURITY.md +0 -5
- package/node_modules/strnum/.vscode/launch.json +0 -25
- package/node_modules/strnum/algo.stflow +0 -84
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
- /package/node_modules/@smithy/middleware-retry/dist-es/{AdaptiveRetryStrategy.js → retry-pre-sra-deprecated/AdaptiveRetryStrategy.js} +0 -0
- /package/node_modules/@smithy/middleware-retry/dist-es/{defaultRetryQuota.js → retry-pre-sra-deprecated/defaultRetryQuota.js} +0 -0
- /package/node_modules/@smithy/middleware-retry/dist-es/{delayDecider.js → retry-pre-sra-deprecated/delayDecider.js} +0 -0
- /package/node_modules/@smithy/middleware-retry/dist-es/{retryDecider.js → retry-pre-sra-deprecated/retryDecider.js} +0 -0
- /package/node_modules/@smithy/middleware-retry/dist-es/{types.js → retry-pre-sra-deprecated/types.js} +0 -0
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{A as e,p as t}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-T8DuH3ax.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./send-CW81y5Wz.js";import"./send-DavpkzhH.js";import"./compact-Dg66DXx_.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-_htt7eY5.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-BHuhHfkH.js";import"./diagnostic-DQq4Bwrs.js";import"./send-DkiKKUkt.js";import"./pi-model-discovery-CpjYoBQf.js";import"./exec-approvals-allowlist-D8mN7nxV.js";import"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import"./model-catalog-COVzoZD9.js";import"./fetch-CQaNr5J1.js";import"./audio-transcription-runner-Bd1OZC6K.js";import"./fetch-guard-BrTtJw7h.js";import"./image-BkWwI54C.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-D0QU-kQ9.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-D8Hh84ab.js";import"./render-DrrPmnMI.js";import"./target-errors-CgWAJOam.js";import"./commands-Dy7duWlt.js";import"./commands-registry-Cpl4QnG4.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-8acNlxwP.js";import"./sqlite-CILF3z9U.js";import"./call-B8Fb4_oh.js";import"./pi-tools.policy-D40r0HmD.js";import"./pairing-store-BH-FTYkn.js";import"./fetch-Dh-apy46.js";import"./skill-commands-CSF6wVPU.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-DAR7V7FJ.js";import"./channel-activity-BBrgoad1.js";import"./tables-Brc2lNcB.js";import"./kill-tree-B3g7HrAO.js";import"./runtime-web-tools-D8fms06-.js";import"./runtime-Dlg2-Omq.js";import"./node-shell-DyOfwHrh.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BBeE1TmB.js";import"./plugin-auto-enable-NzmNh4oU.js";import"./send-CVplsJpw.js";import"./outbound-attachment-BgAe99RM.js";import"./delivery-queue-nkPJu0fY.js";import"./send-C48Y9SAq.js";import"./system-run-command-BKfMiqQM.js";import"./fetch-Ce-scEU-.js";import"./command-secret-targets-BlN-J_fA.js";import"./connection-auth-B_Uk6Vk8.js";import"./onboard-helpers-PGl5bVPE.js";import"./prompt-style-BThRSQJR.js";import"./pairing-labels-D-kzQEL2.js";import"./search-manager-Bp9x20r6.js";import"./manager-C2YW7Hkq.js";import"./memory-cli-XaxtBQm1.js";import{t as n}from"./links-CBnmRP9D.js";import{n as r,t as i}from"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import"./clack-prompter-DBPdGdqp.js";import"./issue-format-C_lNzrKa.js";import"./table-CR7TFMew.js";import"./openai-codex-model-default-DuE2_wN7.js";import"./auth-token-kGltuM6S.js";import"./logging-tYw1NbJd.js";import{c as a}from"./provider-auth-helpers-pBVCjBj9.js";import"./oauth-tls-preflight-BSBRDIfC.js";import{_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,modelsListCommand as _,modelsStatusCommand as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,x as D,y as O}from"./models-C_Vg3Cty.js";function k(e){return r(t,e)}function A(r){let A=r.command(`models`).description(`Model discovery, scanning, and configuration`).option(`--status-json`,"Output JSON (alias for `models status --json`)",!1).option(`--status-plain`,"Plain output (alias for `models status --plain`)",!1).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${n(`/cli/models`,`docs.openclaw.ai/cli/models`)}\n`);A.command(`list`).description(`List models (configured by default)`).option(`--all`,`Show full model catalog`,!1).option(`--local`,`Filter to local models`,!1).option(`--provider <name>`,`Filter by provider`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain line output`,!1).action(async e=>{await k(async()=>{await _(e,t)})}),A.command(`status`).description(`Show configured model state`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).option(`--check`,`Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)`,!1).option(`--probe`,`Probe configured provider auth (live)`,!1).option(`--probe-provider <name>`,`Only probe a single provider`).option(`--probe-profile <id>`,`Only probe specific auth profile ids (repeat or comma-separated)`,(e,t)=>{let n=Array.isArray(t)?t:t?[t]:[];return n.push(e),n}).option(`--probe-timeout <ms>`,`Per-probe timeout in ms`).option(`--probe-concurrency <n>`,`Concurrent probes`).option(`--probe-max-tokens <n>`,`Probe max tokens (best-effort)`).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await v({json:!!e.json,plain:!!e.plain,check:!!e.check,probe:!!e.probe,probeProvider:e.probeProvider,probeProfile:e.probeProfile,probeTimeout:e.probeTimeout,probeConcurrency:e.probeConcurrency,probeMaxTokens:e.probeMaxTokens,agent:r},t)})}),A.command(`set`).description(`Set the default model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await y(e,t)})}),A.command(`set-image`).description(`Set the image model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await w(e,t)})});let j=A.command(`aliases`).description(`Manage model aliases`);j.command(`list`).description(`List model aliases`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await c(e,t)})}),j.command(`add`).description(`Add or update a model alias`).argument(`<alias>`,`Alias name`).argument(`<model>`,`Model id or alias`).action(async(e,n)=>{await k(async()=>{await O(e,n,t)})}),j.command(`remove`).description(`Remove a model alias`).argument(`<alias>`,`Alias name`).action(async e=>{await k(async()=>{await D(e,t)})});let M=A.command(`fallbacks`).description(`Manage model fallback list`);M.command(`list`).description(`List fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await T(e,t)})}),M.command(`add`).description(`Add a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await l(e,t)})}),M.command(`remove`).description(`Remove a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await u(e,t)})}),M.command(`clear`).description(`Clear all fallback models`).action(async()=>{await k(async()=>{await h(t)})});let N=A.command(`image-fallbacks`).description(`Manage image model fallback list`);N.command(`list`).description(`List image fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await b(e,t)})}),N.command(`add`).description(`Add an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await m(e,t)})}),N.command(`remove`).description(`Remove an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await C(e,t)})}),N.command(`clear`).description(`Clear all image fallback models`).action(async()=>{await k(async()=>{await s(t)})}),A.command(`scan`).description(`Scan OpenRouter free models for tools + images`).option(`--min-params <b>`,`Minimum parameter size (billions)`).option(`--max-age-days <days>`,`Skip models older than N days`).option(`--provider <name>`,`Filter by provider prefix`).option(`--max-candidates <n>`,`Max fallback candidates`,`6`).option(`--timeout <ms>`,`Per-probe timeout in ms`).option(`--concurrency <n>`,`Probe concurrency`).option(`--no-probe`,`Skip live probes; list free candidates only`).option(`--yes`,`Accept defaults without prompting`,!1).option(`--no-input`,`Disable prompts (use defaults)`).option(`--set-default`,`Set agents.defaults.model to the first selection`,!1).option(`--set-image`,`Set agents.defaults.imageModel to the first image selection`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await k(async()=>{await S(e,t)})}),A.action(async e=>{await k(async()=>{await v({json:!!e?.statusJson,plain:!!e?.statusPlain,agent:e?.agent},t)})});let P=A.command(`auth`).description(`Manage model auth profiles`);P.option(`--agent <id>`,`Agent id for auth order get/set/clear`),P.action(()=>{P.help()}),P.command(`add`).description(`Interactive auth helper (setup-token or paste token)`).action(async()=>{await k(async()=>{await p({},t)})}),P.command(`login`).description(`Run a provider plugin auth flow (OAuth/API key)`).option(`--provider <id>`,`Provider id registered by a plugin`).option(`--method <id>`,`Provider auth method id`).option(`--set-default`,`Apply the provider's default model recommendation`,!1).action(async e=>{await k(async()=>{await f({provider:e.provider,method:e.method,setDefault:!!e.setDefault},t)})}),P.command(`setup-token`).description(`Run a provider CLI to create/sync a token (TTY required)`).option(`--provider <name>`,`Provider id (default: anthropic)`).option(`--yes`,`Skip confirmation`,!1).action(async e=>{await k(async()=>{await E({provider:e.provider,yes:!!e.yes},t)})}),P.command(`paste-token`).description(`Paste a token into auth-profiles.json and update config`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--profile-id <id>`,`Auth profile id (default: <provider>:manual)`).option(`--expires-in <duration>`,`Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.`).action(async e=>{await k(async()=>{await o({provider:e.provider,profileId:e.profileId,expiresIn:e.expiresIn},t)})}),P.command(`login-github-copilot`).description(`Login to GitHub Copilot via GitHub device flow (TTY required)`).option(`--profile-id <id>`,`Auth profile id (default: github-copilot:github)`).option(`--yes`,`Overwrite existing profile without prompting`,!1).action(async e=>{await k(async()=>{await a({profileId:e.profileId,yes:!!e.yes},t)})});let F=P.command(`order`).description(`Manage per-agent auth profile order overrides`);F.command(`get`).description(`Show per-agent auth order override (from auth-profiles.json)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--json`,`Output JSON`,!1).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await x({provider:e.provider,agent:r,json:!!e.json},t)})}),F.command(`set`).description(`Set per-agent auth order override (locks rotation to this list)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).argument(`<profileIds...>`,`Auth profile ids (e.g. anthropic:default)`).action(async(e,n,r)=>{let a=i(r,`agent`)??n.agent;await k(async()=>{await g({provider:n.provider,agent:a,order:e},t)})}),F.command(`clear`).description(`Clear per-agent auth order override (fall back to config/round-robin)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await d({provider:e.provider,agent:r},t)})})}export{A as registerModelsCli};
|
|
2
|
+
//# sourceMappingURL=models-cli-CDZliTXq.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import"./paths-B4IRk3wi.js";import{A as e,O as t,k as n,p as r}from"./subsystem-C5XF2Fy5.js";import{S as i}from"./utils-UGOV_184.js";import{A as a,Cs as o,D as s,Fl as c,Gl as l,Kl as u,M as d,O as f,P as p,Qs as m,Rl as h,Tt as g,Ul as _,Ws as v,Yl as y,au as b,c as x,d as S,ec as C,f as w,fu as ee,g as te,gt as T,h as ne,i as E,j as D,jt as re,nu as ie,pu as O,qs as k,r as ae,tu as oe,v as A,wt as se,yc as ce}from"./model-selection-BlC_rXAN.js";import{Ut as le,Yr as ue,a as de,f as fe,ft as pe,ht as me,i as he,mt as ge,o as _e,r as j}from"./reply-l-Y47HP4.js";import{F as M,N,P as ve,a as ye,d as be,f as P,j as F,l as xe,s as Se}from"./agent-scope-DXZc3eNT.js";import{r as Ce}from"./string-normalization-BrUPaXaM.js";import"./openclaw-root-D_0Q6--h.js";import{i as I,l as we}from"./types.secrets-C-5U96pc.js";import"./github-copilot-token-DGYAlOmV.js";import{t as Te}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./send-Cgd_VJHR.js";import"./send-hZFDcGLM.js";import{i as Ee,s as De}from"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./audio-transcription-runner-D4Bp6MM7.js";import"./image-DsoO5VP5.js";import"./models-config-CdMhNxKV.js";import"./tool-display-DjuSUUbH.js";import"./fetch-guard-DPdY0NXR.js";import"./api-key-rotation-BRt-vnRV.js";import"./local-roots-6waH0SZ0.js";import{n as L}from"./model-catalog-C1kpjR75.js";import"./proxy-fetch-BADsUK4d.js";import"./tokens-XGbQGn67.js";import"./deliver-ClBkV2eD.js";import"./commands-CGpM84iR.js";import"./commands-registry-B1x54ukc.js";import"./pairing-store-Cg2UxreQ.js";import"./fetch-Dikjvc5M.js";import"./call-CqoMqP5b.js";import"./with-timeout-WveKxvFV.js";import"./diagnostic-DOzHPnht.js";import"./send-B7sHR38c2.js";import{n as Oe,t as ke}from"./pi-model-discovery-Dps1PPWz.js";import"./exec-approvals-allowlist-CE3nYh0K.js";import"./exec-safe-bin-runtime-policy-Dt0GchLp.js";import"./ir-Dk7OQ4bA.js";import"./render-D8OWO2hT.js";import"./target-errors-a35Md15n.js";import"./read-only-account-inspect-DBwAwB3_.js";import"./channel-selection-CbNtbAEf.js";import"./plugin-auto-enable-DpVL6-ES.js";import"./send-C-AP01PR.js";import"./outbound-attachment-B7wMxwj6.js";import"./delivery-queue-CKbauSFq.js";import"./send-DbeEC2a3.js";import"./channel-activity-YjYNzCpJ.js";import"./tables-Oieq7UbT.js";import"./fetch-Bn0mWg6a.js";import"./skill-commands-HJHHZqt6.js";import"./workspace-dirs-BhF1Dzxt.js";import"./pairing-token-BjYBuREl.js";import"./restart-CHXEHdSC.js";import"./runtime-web-tools-bz76ZaRc.js";import{i as R,s as z}from"./command-secret-targets-BVN3kiT9.js";import"./session-cost-usage-BgqKixv0.js";import"./connection-auth-C8iru0UB.js";import{f as B}from"./onboard-helpers-zwybUJWu.js";import{n as V,r as Ae,t as H}from"./prompt-style-CXKekIBY.js";import"./pairing-labels-BUU_-70B.js";import"./memory-cli-jhzJ3as7.js";import"./query-expansion-0OxEb1Io.js";import"./manager-M1GKhLUC.js";import{t as U}from"./links-CySwdMcF.js";import{n as W,t as G}from"./cli-utils-BY7dLMFy.js";import"./help-format-BRbF_INg.js";import{r as je}from"./progress-LNttnI-y.js";import"./exec-approvals-BpBNEy6i.js";import"./nodes-screen-DECgxo6A.js";import"./system-run-command-DEWnZE0r.js";import"./runtime-BC5Ep2pJ.js";import"./stagger-DmFYysrJ.js";import"./provider-env-vars-D8p6Ohpj.js";import"./note-D4GAwgha.js";import{t as Me}from"./clack-prompter-Dq0aY6iM.js";import"./issue-format-BT7cQEt3.js";import{n as Ne,t as Pe}from"./table-CY440fI1.js";import{t as Fe}from"./model-param-b-BqIr5rY5.js";import{n as K}from"./format-Bn1bwJKX.js";import{a as q,c as Ie,d as Le,f as Re,i as ze,l as Be,m as J,n as Ve,o as He,p as Ue,r as We,s as Ge,t as Ke,u as qe}from"./openai-codex-model-default-yVfRw-Mm.js";import{Mt as Je,h as Ye,n as Xe}from"./auth-token-9OTF1FmL.js";import{t as Ze}from"./oauth-env-DSLBTWb1.js";import{n as Y}from"./logging-Dqe9dxSX.js";import{a as Qe,c as $e,i as et,n as tt,o as nt,r as rt,s as it,t as at}from"./provider-auth-helpers-1lU43eTW.js";import"./oauth-tls-preflight-ByNjbUR5.js";import ot from"node:path";import st from"node:fs/promises";import ct from"node:crypto";import{complete as lt,getEnvApiKey as ut,getModel as dt}from"@mariozechner/pi-ai";import{Type as ft}from"@sinclair/typebox";import{cancel as pt,confirm as mt,isCancel as ht,multiselect as gt,select as _t,text as vt}from"@clack/prompts";async function yt(e){try{let{snapshot:e}=await m();if(e.valid)return e.resolved}catch{}return e}async function bt(e){let t=k(),n=await yt(t),{resolvedConfig:r,diagnostics:i}=await z({config:t,commandName:e.commandName,targetIds:R()});if(e.runtime)for(let t of i)e.runtime.log(`[secrets] ${t}`);return C(r,n),{sourceConfig:n,resolvedConfig:r,diagnostics:i}}async function X(e){return(await bt(e)).resolvedConfig}async function xt(e,t){ze(e);let n=(await X({commandName:`models aliases list`,runtime:t})).agents?.defaults?.models??{},r=Object.entries(n).reduce((e,[t,n])=>{let r=n?.alias?.trim();return r&&(e[r]=t),e},{});if(e.json){t.log(JSON.stringify({aliases:r},null,2));return}if(e.plain){for(let[e,n]of Object.entries(r))t.log(`${e} ${n}`);return}if(t.log(`Aliases (${Object.keys(r).length}):`),Object.keys(r).length===0){t.log(`- none`);return}for(let[e,n]of Object.entries(r))t.log(`- ${e} -> ${n}`)}async function St(e,t,n){let r=qe(e),i=Ue({raw:t,cfg:await X({commandName:`models aliases add`,runtime:n})});await J(e=>{let t=`${i.provider}/${i.model}`,n={...e.agents?.defaults?.models};for(let[e,i]of Object.entries(n)){let n=i?.alias?.trim();if(n&&n===r&&e!==t)throw Error(`Alias ${r} already points to ${e}.`)}return n[t]={...n[t]??{},alias:r},{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:n}}}}),Y(n),n.log(`Alias ${r} -> ${i.provider}/${i.model}`)}async function Ct(e,t){let n=qe(e),r=await J(e=>{let t={...e.agents?.defaults?.models},r=!1;for(let[e,i]of Object.entries(t))if(i?.alias?.trim()===n){t[e]={...i,alias:void 0},r=!0;break}if(!r)throw Error(`Alias not found: ${n}`);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t}}}});Y(t),(!r.agents?.defaults?.models||Object.values(r.agents.defaults.models).every(e=>!e?.alias?.trim()))&&t.log(`No aliases configured.`)}function wt(e){return(typeof e==`symbol`||ht(e))&&(pt(`Cancelled.`),process.exit(0)),e}const Tt=async e=>wt(await mt({...e,message:V(e.message)})),Et=async e=>wt(await vt({...e,message:V(e.message)})),Dt=async e=>wt(await _t({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:H(e.hint)})}));function Ot(e){let t=e?.trim();return t?S(t)===`anthropic`?`anthropic`:`custom`:null}function kt(e){return`${S(e)}:manual`}async function At(e,t){let n=Ot(e.provider??`anthropic`);if(n!==`anthropic`)throw Error(`Only --provider anthropic is supported for setup-token.`);if(!process.stdin.isTTY)throw Error(`setup-token requires an interactive TTY.`);if(!e.yes&&!await Tt({message:"Have you run `claude setup-token` and copied the token?",initialValue:!0}))return;let r=await Et({message:`Paste Anthropic setup-token`,validate:e=>Xe(String(e??``))}),i=String(r??``).trim(),a=kt(n);u({profileId:a,credential:{type:`token`,provider:n,token:i}}),await J(e=>Ye(e,{profileId:a,provider:n,mode:`token`})),Y(t),t.log(`Auth profile: ${a} (${n}/token)`)}async function jt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let r=S(n),i=e.profileId?.trim()||kt(r),a=await Et({message:`Paste token for ${r}`,validate:e=>e?.trim()?void 0:`Required`}),o=String(a??``).trim(),s=e.expiresIn?.trim()&&e.expiresIn.trim().length>0?Date.now()+ce(String(e.expiresIn??``).trim(),{defaultUnit:`d`}):void 0;u({profileId:i,credential:{type:`token`,provider:r,token:o,...s?{expires:s}:{}}}),await J(e=>Ye(e,{profileId:i,provider:r,mode:`token`})),Y(t),t.log(`Auth profile: ${i} (${r}/token)`)}async function Mt(e,t){let n=await Dt({message:`Token provider`,options:[{value:`anthropic`,label:`anthropic`},{value:`custom`,label:`custom (type provider id)`}]}),r=n===`custom`?S(String(await Et({message:`Provider id`,validate:e=>e?.trim()?void 0:`Required`}))):n;if(await Dt({message:`Token method`,options:[...r===`anthropic`?[{value:`setup-token`,label:`setup-token (claude)`,hint:"Paste a setup-token from `claude setup-token`"}]:[],{value:`paste`,label:`paste token`}]})===`setup-token`){await At({provider:r},t);return}let i=kt(r);await jt({provider:r,profileId:String(await Et({message:`Profile id`,initialValue:i,validate:e=>e?.trim()?void 0:`Required`})).trim(),expiresIn:await Tt({message:`Does this token expire?`,initialValue:!1})?String(await Et({message:`Expires in (duration)`,initialValue:`365d`,validate:e=>{try{ce(String(e??``),{defaultUnit:`d`});return}catch{return`Invalid duration (e.g. 365d, 12h, 30m)`}}})).trim():void 0},t)}function Nt(e,t){let n=t?.trim();if(!n)return null;let r=et(e,n);if(r)return r;let i=e.map(e=>e.id).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),a=i.length>0?i.join(`, `):`(none)`;throw Error(`Unknown provider "${n}". Loaded providers: ${a}. Verify plugins via \`${Te(`openclaw plugins list --json`)}\`.`)}function Pt(e){return e.type===`api_key`?`api_key`:e.type===`token`?`token`:`oauth`}async function Ft(e){let t=await Qe({prompter:e.prompter,runtime:e.runtime,isRemote:Ze(),openUrl:async e=>{await B(e)},localBrowserMessage:`Complete sign-in in browser…`});if(!t)throw Error(`OpenAI Codex OAuth did not return credentials.`);let n=await Je(`openai-codex`,t,e.agentDir,{syncSiblingAgents:!0});await J(t=>{let r=Ye(t,{profileId:n,provider:`openai-codex`,mode:`oauth`});return e.opts.setDefault&&(r=Ve(r).next),r}),Y(e.runtime),e.runtime.log(`Auth profile: ${n} (openai-codex/oauth)`),e.opts.setDefault?e.runtime.log(`Default model set to ${Ke}`):e.runtime.log(`Default model available: ${Ke} (use --set-default to apply)`)}async function It(e,t){if(!process.stdin.isTTY)throw Error(`models auth login requires an interactive TTY.`);let n=await Ie(),r=P(n),i=ye(n,r),a=be(n,r)??F(),o=S(String(e.provider??``)),s=Me();if(o===`openai-codex`){await Ft({opts:e,runtime:t,prompter:s,agentDir:i});return}let c=it({config:n,workspaceDir:a});if(c.length===0)throw Error(`No provider plugins found. Install one via \`${Te(`openclaw plugins install`)}\`.`);let l=Nt(c,e.provider)??await s.select({message:`Select a provider`,options:c.map(e=>({value:e.id,label:e.label,hint:e.docsPath?`Docs: ${e.docsPath}`:void 0}))}).then(e=>et(c,String(e)));if(!l)throw Error(`Unknown provider. Use --provider <id> to pick a provider plugin.`);let d=rt(l,e.method)??(l.auth.length===1?l.auth[0]:await s.select({message:`Auth method for ${l.label}`,options:l.auth.map(e=>({value:e.id,label:e.label,hint:e.hint}))}).then(e=>l.auth.find(t=>t.id===String(e))));if(!d)throw Error(`Unknown auth method. Use --method <id> to select one.`);let f=Ze(),p=await d.run({config:n,agentDir:i,workspaceDir:a,prompter:s,runtime:t,isRemote:f,openUrl:async e=>{await B(e)},oauth:{createVpsAwareHandlers:e=>nt(e)}});for(let e of p.profiles)u({profileId:e.profileId,credential:e.credential,agentDir:i});await J(t=>{let n=t;p.configPatch&&(n=tt(n,p.configPatch));for(let e of p.profiles)n=Ye(n,{profileId:e.profileId,provider:e.credential.provider,mode:Pt(e.credential)});return e.setDefault&&p.defaultModel&&(n=at(n,p.defaultModel)),n}),Y(t);for(let e of p.profiles)t.log(`Auth profile: ${e.profileId} (${e.credential.provider}/${Pt(e.credential)})`);p.defaultModel&&t.log(e.setDefault?`Default model set to ${p.defaultModel}`:`Default model available: ${p.defaultModel} (use --set-default to apply)`),p.notes&&p.notes.length>0&&await s.note(p.notes.join(`
|
|
2
2
|
`),`Provider notes`)}function Lt(e,t){let n=Le({cfg:e,rawAgentId:t})??P(e);return{agentId:n,agentDir:ye(e,n)}}function Rt(e,t){let n=S(t),r=e.order?.[n];return Array.isArray(r)?r:[]}async function zt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let r=S(n),i=await X({commandName:`models auth-order`,runtime:t}),{agentId:a,agentDir:o}=Lt(i,e.agent);return{cfg:i,agentId:a,agentDir:o,provider:r}}async function Bt(e,t){let{agentId:n,agentDir:r,provider:a}=await zt(e,t),o=Rt(y(r,{allowKeychainPrompt:!1}),a);if(e.json){t.log(JSON.stringify({agentId:n,agentDir:r,provider:a,authStorePath:i(`${r}/auth-profiles.json`),order:o.length>0?o:null},null,2));return}t.log(`Agent: ${n}`),t.log(`Provider: ${a}`),t.log(`Auth file: ${i(`${r}/auth-profiles.json`)}`),t.log(o.length>0?`Order override: ${o.join(`, `)}`:`Order override: (none)`)}async function Vt(e,t){let{agentId:n,agentDir:r,provider:i}=await zt(e,t);if(!await l({agentDir:r,provider:i,order:null}))throw Error(`Failed to update auth-profiles.json (lock busy?).`);t.log(`Agent: ${n}`),t.log(`Provider: ${i}`),t.log(`Cleared per-agent order override.`)}async function Ht(e,t){let{agentId:n,agentDir:r,provider:i}=await zt(e,t),a=y(r,{allowKeychainPrompt:!1}),o=i,s=Ce(e.order??[]);if(s.length===0)throw Error(`Missing profile ids. Provide one or more profile ids.`);for(let e of s){let t=a.profiles[e];if(!t)throw Error(`Auth profile "${e}" not found in ${r}.`);if(S(t.provider)!==o)throw Error(`Auth profile "${e}" is for ${t.provider}, not ${i}.`)}let c=await l({agentDir:r,provider:i,order:s});if(!c)throw Error(`Failed to update auth-profiles.json (lock busy?).`);t.log(`Agent: ${n}`),t.log(`Provider: ${i}`),t.log(`Order override: ${Rt(c,i).join(`, `)}`)}function Ut(e,t){return N(e.agents?.defaults?.[t])}function Wt(e,t){let n=M(e.agents?.defaults?.[t.key]);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,[t.key]:Be(n,{fallbacks:t.fallbacks}),...t.models?{models:t.models}:void 0}}}}async function Gt(e,t,n){ze(t);let r=Ut(await X({commandName:`models ${e.key} list`,runtime:n}),e.key);if(t.json){n.log(JSON.stringify({fallbacks:r},null,2));return}if(t.plain){for(let e of r)n.log(e);return}if(n.log(`${e.label} (${r.length}):`),r.length===0){n.log(`- none`);return}for(let e of r)n.log(`- ${e}`)}async function Kt(e,t,n){let r=await J(n=>{let r=Ue({raw:t,cfg:n}),i=x(r.provider,r.model),a={...n.agents?.defaults?.models};a[i]||(a[i]={});let o=Ut(n,e.key);return Re({cfg:n,entries:o}).includes(i)?n:Wt(n,{key:e.key,fallbacks:[...o,i],models:a})});Y(n),n.log(`${e.logPrefix}: ${Ut(r,e.key).join(`, `)}`)}async function qt(e,t,n){let r=await J(n=>{let r=Ue({raw:t,cfg:n}),i=x(r.provider,r.model),a=ae({cfg:n,defaultProvider:O}),o=Ut(n,e.key),s=o.filter(e=>{let t=A({raw:String(e??``),defaultProvider:O,aliasIndex:a});return t?x(t.ref.provider,t.ref.model)!==i:!0});if(s.length===o.length)throw Error(`${e.notFoundLabel} not found: ${i}`);return Wt(n,{key:e.key,fallbacks:s})});Y(n),n.log(`${e.logPrefix}: ${Ut(r,e.key).join(`, `)}`)}async function Jt(e,t){await J(t=>Wt(t,{key:e.key,fallbacks:[]})),Y(t),t.log(e.clearedMessage)}async function Yt(e,t){return await Gt({label:`Fallbacks`,key:`model`},e,t)}async function Xt(e,t){return await Kt({label:`Fallbacks`,key:`model`,logPrefix:`Fallbacks`},e,t)}async function Zt(e,t){return await qt({label:`Fallbacks`,key:`model`,notFoundLabel:`Fallback`,logPrefix:`Fallbacks`},e,t)}async function Qt(e){return await Jt({key:`model`,clearedMessage:`Fallback list cleared.`},e)}async function $t(e,t){return await Gt({label:`Image fallbacks`,key:`imageModel`},e,t)}async function en(e,t){return await Kt({label:`Image fallbacks`,key:`imageModel`,logPrefix:`Image fallbacks`},e,t)}async function tn(e,t){return await qt({label:`Image fallbacks`,key:`imageModel`,notFoundLabel:`Image fallback`,logPrefix:`Image fallbacks`},e,t)}async function nn(e){return await Jt({key:`imageModel`,clearedMessage:`Image fallback list cleared.`},e)}function rn(e){let t=ne({cfg:e,defaultProvider:O,defaultModel:ee}),n=ae({cfg:e,defaultProvider:O}),r=[],i=new Map,a=new Map;for(let[e,t]of n.byKey.entries())a.set(e,t);let o=(e,t)=>{let n=x(e.provider,e.model);i.has(n)||(i.set(n,new Set),r.push(n)),i.get(n)?.add(t)};o(t,`default`);let s=N(e.agents?.defaults?.model),c=N(e.agents?.defaults?.imageModel),l=ve(e.agents?.defaults?.imageModel)??``;if(s.forEach((e,t)=>{let r=A({raw:String(e??``),defaultProvider:O,aliasIndex:n});r&&o(r.ref,`fallback#${t+1}`)}),l){let e=A({raw:l,defaultProvider:O,aliasIndex:n});e&&o(e.ref,`image`)}c.forEach((e,t)=>{let r=A({raw:String(e??``),defaultProvider:O,aliasIndex:n});r&&o(r.ref,`img-fallback#${t+1}`)});for(let t of Object.keys(e.agents?.defaults?.models??{})){let e=w(String(t??``),O);e&&o(e,`configured`)}return{entries:r.map(e=>{let t=e.indexOf(`/`);return{key:e,ref:{provider:t===-1?e:e.slice(0,t),model:t===-1?``:e.slice(t+1)},tags:i.get(e)??new Set,aliases:a.get(e)??[]}})}}const an=`MODEL_AVAILABILITY_UNAVAILABLE`;function on(e){return e instanceof Error?e.stack??`${e.name}: ${e.message}`:String(e)}function sn(e){return e instanceof Error?e.code===an:!1}const cn=(e,t,n)=>!t||!n?!1:!!(_(n,e).length>0||e===`amazon-bedrock`&&D()||d(e)||f(t,e));function ln(e){let t=Error(e);return t.code=an,t}function un(e){return sn(e)&&e instanceof Error?e:ln(`Model availability unavailable: getAvailable() failed.\n${on(e)}`)}function dn(e){if(!Array.isArray(e))throw ln(`Model availability unavailable: getAvailable() returned a non-array value.`);for(let t of e)if(!t||typeof t!=`object`||typeof t.provider!=`string`||typeof t.id!=`string`)throw ln(`Model availability unavailable: getAvailable() returned invalid model entries.`);return e}function fn(e){let t;try{t=e.getAvailable()}catch(e){throw un(e)}try{return dn(t)}catch(e){throw un(e)}}async function pn(e,t){let n=ie(),r=Oe(ke(n),n),i=r.getAll(),a,o;try{let e=fn(r);a=new Set(e.map(e=>x(e.provider,e.id)))}catch(e){if(!sn(e))throw e;a=void 0,o||=on(e)}return{registry:r,models:i,availableKeys:a,availabilityErrorMessage:o}}function mn(e){let{model:t,key:n,tags:r,aliases:i=[],availableKeys:a,cfg:o,authStore:s,allowProviderAvailabilityFallback:c=!1}=e;if(!t)return{key:n,name:n,input:`-`,contextWindow:null,local:null,available:null,tags:[...r,`missing`],missing:!0};let l=t.input.join(`+`)||`text`,u=Ge(t.baseUrl),d=a?.has(x(t.provider,t.id))??!1,f=a!==void 0&&!c?d:d||(o&&s?cn(t.provider,o,s):!1),p=i.length>0?[`alias:${i.join(`,`)}`]:[],m=new Set(r);if(p.length>0){for(let e of m)(e===`alias`||e.startsWith(`alias:`))&&m.delete(e);for(let e of p)m.add(e)}return{key:n,name:t.name||t.id,input:l,contextWindow:t.contextWindow??null,local:u,available:f,tags:Array.from(m),missing:!1}}function hn(e,t){return!(e.provider&&t.provider.toLowerCase()!==e.provider||e.local&&!Ge(t.baseUrl??``))}function gn(e){let t=e.context.configuredByKey.get(e.key);return mn({model:e.model,key:e.key,tags:t?Array.from(t.tags):[],aliases:t?.aliases??[],availableKeys:e.context.availableKeys,cfg:e.context.cfg,authStore:e.context.authStore,allowProviderAvailabilityFallback:e.allowProviderAvailabilityFallback??!1})}async function _n(e,t){let n=await pn(e,t);return{...n,discoveredKeys:new Set(n.models.map(e=>x(e.provider,e.id)))}}function vn(e){let t=new Set,n=[...e.models].toSorted((e,t)=>{let n=e.provider.localeCompare(t.provider);return n===0?e.id.localeCompare(t.id):n});for(let r of n){if(!hn(e.context.filter,r))continue;let n=x(r.provider,r.id);e.rows.push(gn({model:r,key:n,context:e.context})),t.add(n)}return t}async function yn(e){let t=await L({config:e.context.cfg});for(let n of t){if(e.context.filter.provider&&n.provider.toLowerCase()!==e.context.filter.provider)continue;let t=x(n.provider,n.id);if(e.seenKeys.has(t))continue;let r=ue({provider:n.provider,modelId:n.id,modelRegistry:e.modelRegistry,cfg:e.context.cfg});!r||!hn(e.context.filter,r)||(e.rows.push(gn({model:r,key:t,context:e.context,allowProviderAvailabilityFallback:!e.context.discoveredKeys.has(t)})),e.seenKeys.add(t))}}function bn(e){for(let t of e.entries){if(e.context.filter.provider&&t.ref.provider.toLowerCase()!==e.context.filter.provider)continue;let n=ue({provider:t.ref.provider,modelId:t.ref.model,modelRegistry:e.modelRegistry,cfg:e.context.cfg});e.context.filter.local&&n&&!Ge(n.baseUrl??``)||e.context.filter.local&&!n||e.rows.push(mn({model:n,key:t.key,tags:Array.from(t.tags),aliases:t.aliases,availableKeys:e.context.availableKeys,cfg:e.context.cfg,authStore:e.context.authStore,allowProviderAvailabilityFallback:n?!e.context.discoveredKeys.has(x(n.provider,n.id)):!1}))}}const xn=e=>!!(n()&&!e?.json&&!e?.plain),Z=(e,t)=>e.padEnd(t),Sn=(t,n)=>n?t===`default`?e.success(t):t===`image`?e.accentBright(t):t===`configured`?e.accent(t):t===`missing`?e.error(t):t.startsWith(`fallback#`)||t.startsWith(`img-fallback#`)?e.warn(t):t.startsWith(`alias:`)?e.accentDim(t):e.muted(t):t,Cn=(e,t)=>e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`;function wn(n,r,i={}){if(i.json){r.log(JSON.stringify({count:n.length,models:n},null,2));return}if(i.plain){for(let e of n)r.log(e.key);return}let a=xn(i),o=[Z(`Model`,42),Z(`Input`,10),Z(`Ctx`,8),Z(`Local`,5),Z(`Auth`,5),`Tags`].join(` `);r.log(a?e.heading(o):o);for(let i of n){let n=Z(Cn(i.key,42),42),o=Z(i.input||`-`,10),s=Z(He(i.contextWindow),8),c=Z(i.local===null?`-`:i.local?`yes`:`no`,5),l=Z(i.available===null?`-`:i.available?`yes`:`no`,5),u=i.tags.length>0?a?i.tags.map(e=>Sn(e,a)).join(`,`):i.tags.join(`,`):``,d=t(a,i.input.includes(`image`)?e.accentBright:e.info,o),f=t(a,i.local===null?e.muted:i.local?e.success:e.muted,c),p=t(a,i.available===null?e.muted:i.available?e.success:e.error,l),m=[a?e.accent(n):n,d,s,f,p,u].join(` `);r.log(m)}}async function Tn(e,t){ze(e);let{ensureAuthProfileStore:n}=await import(`./model-selection-BlC_rXAN.js`).then(e=>e.Ct),{ensureOpenClawModelsJson:r}=await import(`./models-config-CdMhNxKV.js`).then(e=>e.n),{sourceConfig:i,resolvedConfig:a}=await bt({commandName:`models list`,runtime:t}),o=n(),s=(()=>{let t=e.provider?.trim();if(t)return w(`${t}/_`,`anthropic`)?.provider??t.toLowerCase()})(),c,l=new Set,u,d;try{await r(i??a);let e=await _n(a,{sourceConfig:i});c=e.registry,l=e.discoveredKeys,u=e.availableKeys,d=e.availabilityErrorMessage}catch(e){t.error(`Model registry unavailable:\n${on(e)}`),process.exitCode=1;return}d!==void 0&&t.error(`Model availability lookup failed; falling back to auth heuristics for discovered models: ${d}`);let{entries:f}=rn(a),p=new Map(f.map(e=>[e.key,e])),m=[],h={cfg:a,authStore:o,availableKeys:u,configuredByKey:p,discoveredKeys:l,filter:{provider:s,local:e.local}};if(e.all){let e=vn({rows:m,models:c?.getAll()??[],context:h});c&&await yn({rows:m,modelRegistry:c,context:h,seenKeys:e})}else{let e=c;if(!e){t.error(`Model registry unavailable.`),process.exitCode=1;return}bn({rows:m,entries:f,modelRegistry:e,context:h})}if(m.length===0){t.log(`No models found.`);return}wn(m,t,e)}function En(e){return T(e,{includeEnvVarName:!1})?`marker(${e.trim()})`:j(e)}function Dn(e){let t=typeof e.value==`string`?e.value.trim():``;if(t){let n=En(t);return e.kind===`token`?`token:${n}`:n}if(e.ref){let t=`ref(${e.ref.source}:${e.ref.id})`;return e.kind===`token`?`token:${t}`:t}return e.kind===`token`?`token:missing`:`missing`}function On(e){let{provider:t,cfg:n,store:r}=e,a=Date.now(),o=_(r,t),c=(e,t)=>{let n=re(r,t);if(!n||a>=n)return e;let i=r.usageStats?.[t];return`${e} [${typeof i?.disabledUntil==`number`&&a<i.disabledUntil?`disabled${i.disabledReason?`:${i.disabledReason}`:``}`:`cooldown`} ${_e(n-a)}]`},l=o.map(e=>{let t=r.profiles[e];if(!t)return`${e}=missing`;if(t.type===`api_key`)return c(`${e}=${Dn({value:t.key,ref:t.keyRef,kind:`api-key`})}`,e);if(t.type===`token`)return c(`${e}=${Dn({value:t.token,ref:t.tokenRef,kind:`token`})}`,e);let i=b({cfg:n,store:r,profileId:e}),a=i===e?``:i.startsWith(e)?i.slice(e.length).trim():`(${i})`;return c(`${e}=OAuth${a?` ${a}`:``}`,e)}),u=o.filter(e=>r.profiles[e]?.type===`oauth`).length,f=o.filter(e=>r.profiles[e]?.type===`token`).length,m=o.filter(e=>r.profiles[e]?.type===`api_key`).length,h=d(t),g=s(n,t),v=p({cfg:n,provider:t});return{provider:t,effective:o.length>0?{kind:`profiles`,detail:i(oe())}:h?{kind:`env`,detail:h.source.includes(`OAUTH_TOKEN`)||h.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:j(h.apiKey)}:v?{kind:`models.json`,detail:En(v.apiKey)}:{kind:`missing`,detail:`missing`},profiles:{count:o.length,oauth:u,token:f,apiKey:m,labels:l},...h?{env:{value:h.source.includes(`OAUTH_TOKEN`)||h.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:j(h.apiKey),source:h.source}}:{},...g?{modelsJson:{value:En(g),source:`models.json: ${i(e.modelsPath)}`}}:{}}}function kn(e){return e?e===`auth`||e===`auth_permanent`?`auth`:e===`rate_limit`||e===`overloaded`?`rate_limit`:e===`billing`?`billing`:e===`timeout`?`timeout`:e===`format`?`format`:`unknown`:`unknown`}function An(e){let t=new Map;for(let n of e){let e=w(String(n??``),O);if(!e)continue;let r=t.get(e.provider)??[];r.includes(e.model)||r.push(e.model),t.set(e.provider,r)}return t}function jn(e){let{provider:t,candidates:n,catalog:r}=e,i=n.get(t);if(i&&i.length>0)return{provider:t,model:i[0]};let a=r.find(e=>e.provider===t);return a?{provider:a.provider,model:a.id}:null}function Mn(e){return e===`missing_credential`?`missing_credential`:e===`expired`?`expired`:e===`invalid_expires`?`invalid_expires`:e===`unresolved_ref`?`unresolved_ref`:`ineligible_profile`}function Nn(e){let t=`Auth profile credentials are missing or expired.`;return e===`expired`?`${t}\n↳ Auth reason [expired]: token credentials are expired.`:e===`invalid_expires`?`${t}\n↳ Auth reason [invalid_expires]: token expires must be a positive Unix ms timestamp.`:e===`missing_credential`?`${t}\n↳ Auth reason [missing_credential]: no inline credential or SecretRef is configured.`:e===`unresolved_ref`?`${t}\n↳ Auth reason [unresolved_ref]: configured SecretRef could not be resolved.`:`${t}\n↳ Auth reason [ineligible_profile]: profile is incompatible with provider config.`}function Pn(e,t){let n=t.secrets?.defaults;return e.type===`api_key`?we(e.key)===void 0?I(e.keyRef,n):null:e.type===`token`&&we(e.token)===void 0?I(e.tokenRef,n):null}function Fn(e){return`Auth profile credentials are missing or expired.\n↳ Auth reason [unresolved_ref]: could not resolve SecretRef "${e}".`}async function In(e){if(!e.profile)return null;let t=Pn(e.profile,e.cfg);if(!t)return null;try{return await o(t,{config:e.cfg,env:process.env,cache:e.cache}),null}catch{return{reasonCode:`unresolved_ref`,error:Fn(`${t.source}:${t.provider}:${t.id}`)}}}async function Ln(e){let{cfg:t,providers:n,modelCandidates:r,options:i}=e,a=y(),o=i.provider?.trim(),s=o?S(o):null,c=new Set((i.profileIds??[]).map(e=>e.trim()).filter(Boolean)),l={},u=await L({config:t}),p=An(r),m=[],h=[];for(let e of n){let n=S(e);if(s&&n!==s)continue;let r=jn({provider:n,candidates:p,catalog:u}),i=_(a,n),o=E(a.order,n)??E(t?.auth?.order,n),v=o&&o.length>0?new Set(g({cfg:t,store:a,provider:n})):null,y=c.size?i.filter(e=>c.has(e)):i;if(y.length>0){for(let e of y){let i=a.profiles[e],s=i?.type,c=b({cfg:t,store:a,profileId:e});if(o&&!o.includes(e)){h.push({provider:n,profileId:e,model:r?`${r.provider}/${r.model}`:void 0,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:`excluded_by_auth_order`,error:`Excluded by auth.order for this provider.`});continue}if(v&&!v.has(e)){let i=Mn(se({cfg:t,store:a,provider:n,profileId:e}).reasonCode);h.push({provider:n,model:r?`${r.provider}/${r.model}`:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:i,error:Nn(i)});continue}let u=await In({cfg:t,profile:i,cache:l});if(u){h.push({provider:n,model:r?`${r.provider}/${r.model}`:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:u.reasonCode,error:u.error});continue}if(!r){h.push({provider:n,model:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}m.push({provider:n,model:r,profileId:e,label:c,source:`profile`,mode:s})}continue}if(c.size>0)continue;let x=d(n),C=f(t,n);if(!x&&!C)continue;let w=x?`env`:`models.json`,ee=x?`env`:`models.json`,te=x?.source.includes(`OAUTH_TOKEN`)?`oauth`:`api_key`;if(!r){h.push({provider:n,model:void 0,label:w,source:ee,mode:te,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}m.push({provider:n,model:r,label:w,source:ee,mode:te})}return{targets:m,results:h}}async function Rn(e){let{cfg:t,agentId:n,agentDir:r,workspaceDir:i,sessionDir:a,target:o,timeoutMs:s,maxTokens:c}=e;if(!o.model)return{provider:o.provider,model:void 0,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`};let l=`probe-${o.provider}-${ct.randomUUID()}`,u=Ee(l,n);await st.mkdir(a,{recursive:!0});let d=Date.now();try{return await fe({sessionId:l,sessionFile:u,agentId:n,workspaceDir:i,agentDir:r,config:t,prompt:`Reply with OK. Do not use tools.`,provider:o.model.provider,model:o.model.model,authProfileId:o.profileId,authProfileIdSource:o.profileId?`user`:void 0,timeoutMs:s,runId:`probe-${ct.randomUUID()}`,lane:`auth-probe:${o.provider}:${o.profileId??o.source}`,thinkLevel:`off`,reasoningLevel:`off`,verboseLevel:`off`,streamParams:{maxTokens:c}}),{provider:o.provider,model:`${o.model.provider}/${o.model.model}`,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:`ok`,latencyMs:Date.now()-d}}catch(e){let t=le(e);return{provider:o.provider,model:`${o.model.provider}/${o.model.model}`,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:kn(t.reason),error:K(t.message),latencyMs:Date.now()-d}}}async function zn(e){let{cfg:t,targets:n,timeoutMs:r,maxTokens:i,onProgress:a}=e,o=Math.max(1,Math.min(n.length||1,e.concurrency)),s=P(t),c=ie(),l=be(t,s)??F(),u=De(s);await st.mkdir(l,{recursive:!0});let d=0,f=Array.from({length:n.length}),p=0,m=async()=>{for(;;){let e=p;if(p+=1,e>=n.length)return;let o=n[e];a?.({completed:d,total:n.length,label:`Probing ${o.provider}${o.profileId?` (${o.label})`:``}`}),f[e]=await Rn({cfg:t,agentId:s,agentDir:c,workspaceDir:l,sessionDir:u,target:o,timeoutMs:r,maxTokens:i}),d+=1,a?.({completed:d,total:n.length})}};return await Promise.all(Array.from({length:o},()=>m())),f.filter(e=>!!e)}async function Bn(e){let t=Date.now(),n=await Ln({cfg:e.cfg,providers:e.providers,modelCandidates:e.modelCandidates,options:e.options}),r=n.targets.length;e.onProgress?.({completed:0,total:r});let i=r?await zn({cfg:e.cfg,targets:n.targets,timeoutMs:e.options.timeoutMs,maxTokens:e.options.maxTokens,concurrency:e.options.concurrency,onProgress:e.onProgress}):[],a=Date.now();return{startedAt:t,finishedAt:a,durationMs:a-t,totalTargets:r,options:e.options,results:[...n.results,...i]}}function Vn(e){return!e&&e!==0?`-`:q(e)}function Hn(e){return e.slice().toSorted((e,t)=>{let n=e.provider.localeCompare(t.provider);if(n!==0)return n;let r=e.label||e.profileId||``,i=t.label||t.profileId||``;return r.localeCompare(i)})}function Un(e){return e.totalTargets===0?`No probe targets.`:`Probed ${e.totalTargets} target${e.totalTargets===1?``:`s`} in ${q(e.durationMs)}`}async function Wn(n,r){if(ze(n),n.plain&&n.probe)throw Error(`--probe cannot be used with --plain output.`);let a=v().configPath,o=await X({commandName:`models status`,runtime:r}),s=Le({cfg:o,rawAgentId:n.agent}),l=s?ye(o,s):ie(),u=s?Se(o,s):void 0,f=s?xe(o,s):void 0,p=s?te({cfg:o,agentId:s}):ne({cfg:o,defaultProvider:O,defaultModel:ee}),m=ve(o.agents?.defaults?.model)??``,g=u??m,_=`${p.provider}/${p.model}`,b=g||_,x=N(o.agents?.defaults?.model),S=f??x,C=ve(o.agents?.defaults?.imageModel)??``,T=N(o.agents?.defaults?.imageModel),E=Object.entries(o.agents?.defaults?.models??{}).reduce((e,[t,n])=>{let r=typeof n?.alias==`string`?n.alias.trim():void 0;return r&&(e[r]=t),e},{}),D=Object.keys(o.agents?.defaults?.models??{}),k=y(l),se=ot.join(l,`models.json`),ce=new Set(Object.values(k.profiles).map(e=>e.provider).filter(e=>!!e)),le=new Set(Object.keys(o.models?.providers??{}).map(e=>typeof e==`string`?e.trim():``).filter(Boolean)),ue=new Set,fe=new Set;for(let e of[b,...S,C,...T,...D]){let t=w(String(e??``),O);t?.provider&&ue.add(t.provider)}for(let e of[b,...S,C,...T]){let t=w(String(e??``),O);t?.provider&&fe.add(t.provider)}let j=new Set;for(let e of[`anthropic`,`github-copilot`,`google-vertex`,`openai`,`google`,`groq`,`cerebras`,`xai`,`openrouter`,`zai`,`mistral`,`synthetic`])d(e)&&j.add(e);let M=Array.from(new Set([...ce,...le,...ue,...j])).map(e=>typeof e==`string`?e.trim():``).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),be=c(),P=h(process.env)||o.env?.shellEnv?.enabled===!0,F=M.map(e=>On({provider:e,cfg:o,store:k,modelsPath:se})).filter(e=>e.profiles.count>0||!!e.env||!!e.modelsJson),Ce=new Map(F.map(e=>[e.provider,e])),I=Array.from(fe).filter(e=>!Ce.has(e)).toSorted((e,t)=>e.localeCompare(t)),we=n.probeProfile?(Array.isArray(n.probeProfile)?n.probeProfile:[n.probeProfile]).flatMap(e=>String(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean):[],Ee=n.probeTimeout?Number(n.probeTimeout):8e3;if(!Number.isFinite(Ee)||Ee<=0)throw Error(`--probe-timeout must be a positive number (ms).`);let De=n.probeConcurrency?Number(n.probeConcurrency):2;if(!Number.isFinite(De)||De<=0)throw Error(`--probe-concurrency must be > 0.`);let L=n.probeMaxTokens?Number(n.probeMaxTokens):8;if(!Number.isFinite(L)||L<=0)throw Error(`--probe-max-tokens must be > 0.`);let Oe=ae({cfg:o,defaultProvider:O}),ke=[g||_,...S,C,...T,...D].filter(Boolean).map(e=>A({raw:String(e??``),defaultProvider:O,aliasIndex:Oe})?.ref).filter(e=>!!e).map(e=>`${e.provider}/${e.model}`),R;n.probe&&(R=await je({label:`Probing auth profiles…`,total:1},async e=>await Bn({cfg:o,providers:M,modelCandidates:ke,options:{provider:n.probeProvider,profileIds:we,timeoutMs:Ee,concurrency:De,maxTokens:L},onProgress:e})));let z=F.filter(e=>e.profiles.oauth>0||e.profiles.token>0||e.env?.value===`OAuth (env)`).map(e=>{let t=e.profiles.oauth+e.profiles.token+(e.env?.value===`OAuth (env)`?1:0);return`${e.provider} (${t})`}),B=de({store:k,cfg:o,warnAfterMs:he,providers:M}),V=B.profiles.filter(e=>e.type===`oauth`||e.type===`token`),Ae=(()=>{let e=Date.now(),t=[];for(let n of Object.keys(k.usageStats??{})){let r=re(k,n);if(!r||e>=r)continue;let i=k.usageStats?.[n],a=typeof i?.disabledUntil==`number`&&e<i.disabledUntil?`disabled`:`cooldown`;t.push({profileId:n,provider:k.profiles[n]?.provider,kind:a,reason:i?.disabledReason,until:r,remainingMs:r-e})}return t.toSorted((e,t)=>e.remainingMs-t.remainingMs)})(),H=(()=>{let e=V.some(e=>[`expired`,`missing`].includes(e.status))||I.length>0,t=V.some(e=>e.status===`expiring`);return e?1:t?2:0})();if(n.json){r.log(JSON.stringify({configPath:a,...s?{agentId:s}:{},agentDir:l,defaultModel:b,resolvedDefault:_,fallbacks:S,imageModel:C||null,imageFallbacks:T,...s?{modelConfig:{defaultSource:u?`agent`:`defaults`,fallbacksSource:f===void 0?`defaults`:`agent`}}:{},aliases:E,allowed:D,auth:{storePath:oe(l),shellEnvFallback:{enabled:P,appliedKeys:be},providersWithOAuth:z,missingProvidersInUse:I,providers:F,unusableProfiles:Ae,oauth:{warnAfterMs:B.warnAfterMs,profiles:B.profiles,providers:B.providers},probes:R}},null,2)),n.check&&r.exit(H);return}if(n.plain){r.log(_),n.check&&r.exit(H);return}let U=xn(n),W=n=>t(U,e.accent,n.padEnd(14)),G=(e,t)=>W(t?`${e} (${t})`:e),Me=g&&g!==_?`${_} (from ${g})`:_;r.log(`${W(`Config`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(a))}`),r.log(`${W(`Agent dir`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(l))}`),r.log(`${G(`Default`,s?u?`agent`:`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,e.success,Me)}`),r.log(`${G(`Fallbacks (${S.length||0})`,s?f===void 0?`defaults`:`agent`:void 0)}${t(U,e.muted,`:`)} ${t(U,S.length?e.warn:e.muted,S.length?S.join(`, `):`-`)}`),r.log(`${G(`Image model`,s?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,C?e.accentBright:e.muted,C||`-`)}`),r.log(`${G(`Image fallbacks (${T.length||0})`,s?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,T.length?e.accentBright:e.muted,T.length?T.join(`, `):`-`)}`),r.log(`${W(`Aliases (${Object.keys(E).length||0})`)}${t(U,e.muted,`:`)} ${t(U,Object.keys(E).length?e.accent:e.muted,Object.keys(E).length?Object.entries(E).map(([t,n])=>U?`${e.accentDim(t)} ${e.muted(`->`)} ${e.info(n)}`:`${t} -> ${n}`).join(`, `):`-`)}`),r.log(`${W(`Configured models (${D.length||0})`)}${t(U,e.muted,`:`)} ${t(U,D.length?e.info:e.muted,D.length?D.join(`, `):`all`)}`),r.log(``),r.log(t(U,e.heading,`Auth overview`)),r.log(`${W(`Auth store`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(oe(l)))}`),r.log(`${W(`Shell env`)}${t(U,e.muted,`:`)} ${t(U,P?e.success:e.muted,P?`on`:`off`)}${be.length?t(U,e.muted,` (applied: ${be.join(`, `)})`):``}`),r.log(`${W(`Providers w/ OAuth/tokens (${z.length||0})`)}${t(U,e.muted,`:`)} ${t(U,z.length?e.info:e.muted,z.length?z.join(`, `):`-`)}`);let Fe=n=>t(U,e.warn,n),K=(n,r)=>`${Fe(n)}=${t(U,e.info,r)}`,q=()=>t(U,e.muted,` | `);for(let n of F){let i=q(),a=[];a.push(K(`effective`,`${t(U,e.accentBright,n.effective.kind)}:${t(U,e.muted,n.effective.detail)}`)),n.profiles.count>0&&(a.push(K(`profiles`,`${n.profiles.count} (oauth=${n.profiles.oauth}, token=${n.profiles.token}, api_key=${n.profiles.apiKey})`)),n.profiles.labels.length>0&&a.push(t(U,e.info,n.profiles.labels.join(`, `)))),n.env&&a.push(K(`env`,`${n.env.value}${i}${K(`source`,n.env.source)}`)),n.modelsJson&&a.push(K(`models.json`,`${n.modelsJson.value}${i}${K(`source`,n.modelsJson.source)}`)),r.log(`- ${e.heading(n.provider)} ${a.join(i)}`)}if(I.length>0){r.log(``),r.log(t(U,e.heading,`Missing auth`));for(let t of I){let n=t===`anthropic`?`Run \`claude setup-token\`, then \`${Te(`openclaw models auth setup-token`)}\` or \`${Te(`openclaw configure`)}\`.`:`Run \`${Te(`openclaw configure`)}\` or set an API key env var.`;r.log(`- ${e.heading(t)} ${n}`)}}if(r.log(``),r.log(t(U,e.heading,`OAuth/token status`)),V.length===0)r.log(t(U,e.muted,`- none`));else{let n=new Map,i=Array.from(new Set(V.map(e=>me(e.provider)).filter(e=>!!e)));if(i.length>0)try{let e=await pe({providers:i,agentDir:l,timeoutMs:3500});for(let t of e.providers){let e=ge(t,{now:Date.now(),maxWindows:2,includeResets:!0});e&&n.set(t.provider,e)}}catch{}let a=n=>n===`ok`?t(U,e.success,`ok`):n===`static`?t(U,e.muted,`static`):n===`expiring`?t(U,e.warn,`expiring`):n===`missing`?t(U,e.warn,`unknown`):t(U,e.error,`expired`),o=new Map;for(let e of V){let t=o.get(e.provider);t?t.push(e):o.set(e.provider,[e])}for(let[i,s]of o){let o=me(i),c=o?n.get(o):void 0,l=c?t(U,e.muted,` usage: ${c}`):``;r.log(`- ${t(U,e.heading,i)}${l}`);for(let n of s){let i=n.label||n.profileId,o=t(U,e.accent,i),s=a(n.status),c=n.status===`static`?``:n.expiresAt?` expires in ${_e(n.remainingMs)}`:` expires unknown`;r.log(` - ${o} ${s}${c}`)}}}if(R)if(r.log(``),r.log(t(U,e.heading,`Auth probes`)),R.results.length===0)r.log(t(U,e.muted,`- none`));else{let n=Pe(),i=Hn(R.results),a=t=>t===`ok`?e.success:t===`rate_limit`||t===`timeout`||t===`billing`?e.warn:t===`auth`||t===`format`?e.error:e.muted,o=i.map(n=>{let r=t(U,a(n.status),n.status),i=Vn(n.latencyMs),o=n.model??`${n.provider}/-`,s=n.mode?` ${t(U,e.muted,`(${n.mode})`)}`:``,c=`${t(U,e.accent,n.label)}${s}`,l=n.error?.trim(),u=l?`\n${t(U,e.muted,`↳ ${l}`)}`:``,d=`${r}${t(U,e.muted,` · ${i}`)}${u}`;return{Model:t(U,e.heading,o),Profile:c,Status:d}});r.log(Ne({width:n,columns:[{key:`Model`,header:`Model`,minWidth:18},{key:`Profile`,header:`Profile`,minWidth:24},{key:`Status`,header:`Status`,minWidth:12}],rows:o}).trimEnd()),r.log(t(U,e.muted,Un(R)))}n.check&&r.exit(H)}const Gn={name:`ping`,description:`Return OK.`,parameters:ft.Object({})};function Kn(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?null:e>0xe8d4a51000?Math.round(e):Math.round(e*1e3)}function qn(e){return e&&e.toLowerCase().split(/[^a-z]+/).filter(Boolean).includes(`image`)?[`text`,`image`]:[`text`]}function Q(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null}function Jn(e){if(!e||typeof e!=`object`)return null;let t=e,n=Q(t.prompt),r=Q(t.completion),i=Q(t.request)??0,a=Q(t.image)??0,o=Q(t.web_search)??0,s=Q(t.internal_reasoning)??0;return n===null||r===null?null:{prompt:n,completion:r,request:i,image:a,webSearch:o,internalReasoning:s}}function Yn(e){return e.id.endsWith(`:free`)?!0:e.pricing?e.pricing.prompt===0&&e.pricing.completion===0:!1}async function Xn(e,t){let n=new AbortController,r=setTimeout(n.abort.bind(n),e);try{return await t(n.signal)}finally{clearTimeout(r)}}async function Zn(e){let t=await e(`https://openrouter.ai/api/v1/models`,{headers:{Accept:`application/json`}});if(!t.ok)throw Error(`OpenRouter /models failed: HTTP ${t.status}`);let n=await t.json();return(Array.isArray(n.data)?n.data:[]).map(e=>{if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``;if(!n)return null;let r=typeof t.name==`string`&&t.name.trim()?t.name.trim():n,i=typeof t.context_length==`number`&&Number.isFinite(t.context_length)?t.context_length:null,a=typeof t.max_completion_tokens==`number`&&Number.isFinite(t.max_completion_tokens)?t.max_completion_tokens:typeof t.max_output_tokens==`number`&&Number.isFinite(t.max_output_tokens)?t.max_output_tokens:null,o=Array.isArray(t.supported_parameters)?t.supported_parameters.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean):[];return{id:n,name:r,contextLength:i,maxCompletionTokens:a,supportedParameters:o,supportedParametersCount:o.length,supportsToolsMeta:o.includes(`tools`),modality:typeof t.modality==`string`&&t.modality.trim()?t.modality.trim():null,inferredParamB:Fe(`${n} ${r}`),createdAtMs:Kn(t.created_at),pricing:Jn(t.pricing)}}).filter(e=>!!e)}async function Qn(e,t,n){let r={messages:[{role:`user`,content:`Call the ping tool with {} and nothing else.`,timestamp:Date.now()}],tools:[Gn]},i=Date.now();try{return(await Xn(n,n=>lt(e,r,{apiKey:t,maxTokens:256,temperature:0,toolChoice:`required`,signal:n}))).content.some(e=>e.type===`toolCall`)?{ok:!0,latencyMs:Date.now()-i}:{ok:!1,latencyMs:Date.now()-i,error:`No tool call returned`}}catch(e){return{ok:!1,latencyMs:Date.now()-i,error:e instanceof Error?e.message:String(e)}}}async function $n(e,t,n){let r={messages:[{role:`user`,content:[{type:`text`,text:`Reply with OK.`},{type:`image`,data:`iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+X3mIAAAAASUVORK5CYII=`,mimeType:`image/png`}],timestamp:Date.now()}]},i=Date.now();try{return await Xn(n,n=>lt(e,r,{apiKey:t,maxTokens:16,temperature:0,signal:n})),{ok:!0,latencyMs:Date.now()-i}}catch(e){return{ok:!1,latencyMs:Date.now()-i,error:e instanceof Error?e.message:String(e)}}}function er(e){return e.input?.includes(`image`)?e:{...e,input:Array.from(new Set([...e.input??[],`image`]))}}function tr(e){let{entry:t,isFree:n}=e;return{id:t.id,name:t.name,provider:`openrouter`,modelRef:`openrouter/${t.id}`,contextLength:t.contextLength,maxCompletionTokens:t.maxCompletionTokens,supportedParametersCount:t.supportedParametersCount,supportsToolsMeta:t.supportsToolsMeta,modality:t.modality,inferredParamB:t.inferredParamB,createdAtMs:t.createdAtMs,pricing:t.pricing,isFree:n,tool:e.tool,image:e.image}}async function nr(e,t,n,r){let i=Math.max(1,Math.floor(t)),a=Array.from({length:e.length},()=>void 0),o=0,s=0,c=async()=>{for(;;){let t=o;if(o+=1,t>=e.length)return;a[t]=await n(e[t],t),s+=1,r?.onProgress?.(s,e.length)}};return e.length===0?(r?.onProgress?.(0,0),a):(await Promise.all(Array.from({length:Math.min(i,e.length)},()=>c())),a)}async function rr(e={}){let t=e.fetchImpl??fetch,n=e.probe??!0,r=e.apiKey?.trim()||ut(`openrouter`)||``;if(n&&!r)throw Error(`Missing OpenRouter API key. Set OPENROUTER_API_KEY to run models scan.`);let i=Math.max(1,Math.floor(e.timeoutMs??12e3)),a=Math.max(1,Math.floor(e.concurrency??3)),o=Math.max(0,Math.floor(e.minParamB??0)),s=Math.max(0,Math.floor(e.maxAgeDays??0)),c=e.providerFilter?.trim().toLowerCase()??``,l=await Zn(t),u=Date.now(),d=l.filter(e=>!(!Yn(e)||c&&(e.id.split(`/`)[0]?.toLowerCase()??``)!==c||o>0&&(e.inferredParamB??0)<o||s>0&&e.createdAtMs&&(u-e.createdAtMs)/(1440*60*1e3)>s)),f=dt(`openrouter`,`openrouter/auto`);return e.onProgress?.({phase:`probe`,completed:0,total:d.length}),nr(d,a,async e=>{let t=Yn(e);if(!n)return tr({entry:e,isFree:t,tool:{ok:!1,latencyMs:null,skipped:!0},image:{ok:!1,latencyMs:null,skipped:!0}});let a={...f,id:e.id,name:e.name||e.id,contextWindow:e.contextLength??f.contextWindow,maxTokens:e.maxCompletionTokens??f.maxTokens,input:qn(e.modality),reasoning:f.reasoning};return tr({entry:e,isFree:t,tool:await Qn(a,r,i),image:a.input?.includes(`image`)?await $n(er(a),r,i):{ok:!1,latencyMs:null,skipped:!0}})},{onProgress:(t,n)=>e.onProgress?.({phase:`probe`,completed:t,total:n})})}const ir=e=>gt({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:H(e.hint)})});function ar(e,t){if(ht(e))throw pt(Ae(`Model scan cancelled.`)??`Model scan cancelled.`),t.exit(0),Error(`unreachable`);return e}function or(e){return e.slice().toSorted((e,t)=>{let n=e.image.ok?1:0,r=t.image.ok?1:0;if(n!==r)return r-n;let i=e.tool.latencyMs??1/0,a=t.tool.latencyMs??1/0;return i===a?cr(e,t):i-a})}function sr(e){return e.slice().toSorted((e,t)=>{let n=e.image.latencyMs??1/0,r=t.image.latencyMs??1/0;return n===r?cr(e,t):n-r})}function cr(e,t){let n=e.contextLength??0,r=t.contextLength??0;if(n!==r)return r-n;let i=e.inferredParamB??0,a=t.inferredParamB??0;return i===a?e.modelRef.localeCompare(t.modelRef):a-i}function lr(e){return[e.tool.ok?`tool ${q(e.tool.latencyMs)}`:`tool fail`,e.image.skipped?`img skip`:e.image.ok?`img ${q(e.image.latencyMs)}`:`img fail`,e.contextLength?`ctx ${He(e.contextLength)}`:`ctx ?`,e.inferredParamB?`${e.inferredParamB}b`:null].filter(Boolean).join(` | `)}function ur(e,t){let n=e.filter(e=>e.tool.ok),r=e.filter(e=>e.image.ok),i=e.filter(e=>e.tool.ok&&e.image.ok),a=r.filter(e=>!e.tool.ok);t.log(`Scan results: tested ${e.length}, tool ok ${n.length}, image ok ${r.length}, tool+image ok ${i.length}, image only ${a.length}`)}function dr(e,t){let n=[Z(`Model`,42),Z(`Tool`,10),Z(`Image`,10),Z(`Ctx`,8),Z(`Params`,8),`Notes`].join(` `);t.log(n);for(let n of e){let e=Z(Cn(n.modelRef,42),42),r=Z(n.tool.ok?q(n.tool.latencyMs):`fail`,10),i=Z(n.image.ok?q(n.image.latencyMs):n.image.skipped?`skip`:`fail`,10),a=Z(He(n.contextLength),8),o=Z(n.inferredParamB?`${n.inferredParamB}b`:`-`,8),s=n.modality?`modality:${n.modality}`:``;t.log([e,r,i,a,o,s].join(` `))}}async function fr(e,t){let n=e.minParams?Number(e.minParams):void 0;if(n!==void 0&&(!Number.isFinite(n)||n<0))throw Error(`--min-params must be >= 0`);let r=e.maxAgeDays?Number(e.maxAgeDays):void 0;if(r!==void 0&&(!Number.isFinite(r)||r<0))throw Error(`--max-age-days must be >= 0`);let i=e.maxCandidates?Number(e.maxCandidates):6;if(!Number.isFinite(i)||i<=0)throw Error(`--max-candidates must be > 0`);let o=e.timeout?Number(e.timeout):void 0;if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw Error(`--timeout must be > 0`);let s=e.concurrency?Number(e.concurrency):void 0;if(s!==void 0&&(!Number.isFinite(s)||s<=0))throw Error(`--concurrency must be > 0`);let c=await X({commandName:`models scan`,runtime:t}),l=e.probe??!0,u;if(l)try{u=(await a({provider:`openrouter`,cfg:c})).apiKey}catch{u=void 0}let d=await je({label:`Scanning OpenRouter models...`,indeterminate:!1,enabled:e.json!==!0},async t=>await rr({apiKey:u??void 0,minParamB:n,maxAgeDays:r,providerFilter:e.provider,timeoutMs:o,concurrency:s,probe:l,onProgress:({phase:e,completed:n,total:r})=>{e===`probe`&&t({completed:n,total:r,label:`${l?`Probing models`:`Scanning models`} (${n}/${r})`})}}));if(!l){e.json?t.log(JSON.stringify(d,null,2)):(t.log(`Found ${d.length} OpenRouter free models (metadata only; pass --probe to test tools/images).`),dr(or(d),t));return}let f=d.filter(e=>e.tool.ok);if(f.length===0)throw Error(`No tool-capable OpenRouter free models found.`);let p=or(d),m=or(f),h=sr(d.filter(e=>e.image.ok)),g=m.filter(e=>e.image.ok),_=(g.length>0?g:m).slice(0,Math.floor(i)).map(e=>e.modelRef),v=h.slice(0,Math.floor(i)).map(e=>e.modelRef);e.json||(ur(d,t),dr(p,t));let y=e.input===!1,b=process.stdin.isTTY&&!e.yes&&!y&&!e.json,x=_,S=v;if(b)x=ar(await ir({message:`Select fallback models (ordered)`,options:m.map(e=>({value:e.modelRef,label:e.modelRef,hint:lr(e)})),initialValues:_}),t),h.length>0&&(S=ar(await ir({message:`Select image fallback models (ordered)`,options:h.map(e=>({value:e.modelRef,label:e.modelRef,hint:lr(e)})),initialValues:v}),t));else if(!process.stdin.isTTY&&!e.yes&&!y&&!e.json)throw Error(`Non-interactive scan: pass --yes to apply defaults.`);if(x.length===0)throw Error(`No models selected for fallbacks.`);if(e.setImage&&S.length===0)throw Error(`No image-capable models selected for image model.`);if(await J(t=>{let n={...t.agents?.defaults?.models};for(let e of x)n[e]||(n[e]={});for(let e of S)n[e]||(n[e]={});let r=M(t.agents?.defaults?.imageModel),i=S.length>0?{...r?.primary?{primary:r.primary}:void 0,fallbacks:S,...e.setImage?{primary:S[0]}:{}}:t.agents?.defaults?.imageModel,a=M(t.agents?.defaults?.model),o={...t.agents?.defaults,model:{...a?.primary?{primary:a.primary}:void 0,fallbacks:x,...e.setDefault?{primary:x[0]}:{}},...i?{imageModel:i}:{},models:n};return{...t,agents:{...t.agents,defaults:o}}}),e.json){t.log(JSON.stringify({selected:x,selectedImages:S,setDefault:!!e.setDefault,setImage:!!e.setImage,results:d,warnings:[]},null,2));return}Y(t),t.log(`Fallbacks: ${x.join(`, `)}`),S.length>0&&t.log(`Image fallbacks: ${S.join(`, `)}`),e.setDefault&&t.log(`Default model: ${x[0]}`),e.setImage&&S.length>0&&t.log(`Image model: ${S[0]}`)}async function pr(e,t){let n=await J(t=>We({cfg:t,modelRaw:e,field:`model`}));Y(t),t.log(`Default model: ${ve(n.agents?.defaults?.model)??e}`)}async function mr(e,t){let n=await J(t=>We({cfg:t,modelRaw:e,field:`imageModel`}));Y(t),t.log(`Image model: ${ve(n.agents?.defaults?.imageModel)??e}`)}function $(e){return W(r,e)}function hr(t){let n=t.command(`models`).description(`Model discovery, scanning, and configuration`).option(`--status-json`,"Output JSON (alias for `models status --json`)",!1).option(`--status-plain`,"Plain output (alias for `models status --plain`)",!1).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${U(`/cli/models`,`docs.openclaw.ai/cli/models`)}\n`);n.command(`list`).description(`List models (configured by default)`).option(`--all`,`Show full model catalog`,!1).option(`--local`,`Filter to local models`,!1).option(`--provider <name>`,`Filter by provider`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain line output`,!1).action(async e=>{await $(async()=>{await Tn(e,r)})}),n.command(`status`).description(`Show configured model state`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).option(`--check`,`Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)`,!1).option(`--probe`,`Probe configured provider auth (live)`,!1).option(`--probe-provider <name>`,`Only probe a single provider`).option(`--probe-profile <id>`,`Only probe specific auth profile ids (repeat or comma-separated)`,(e,t)=>{let n=Array.isArray(t)?t:t?[t]:[];return n.push(e),n}).option(`--probe-timeout <ms>`,`Per-probe timeout in ms`).option(`--probe-concurrency <n>`,`Concurrent probes`).option(`--probe-max-tokens <n>`,`Probe max tokens (best-effort)`).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Wn({json:!!e.json,plain:!!e.plain,check:!!e.check,probe:!!e.probe,probeProvider:e.probeProvider,probeProfile:e.probeProfile,probeTimeout:e.probeTimeout,probeConcurrency:e.probeConcurrency,probeMaxTokens:e.probeMaxTokens,agent:n},r)})}),n.command(`set`).description(`Set the default model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await pr(e,r)})}),n.command(`set-image`).description(`Set the image model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await mr(e,r)})});let i=n.command(`aliases`).description(`Manage model aliases`);i.command(`list`).description(`List model aliases`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await xt(e,r)})}),i.command(`add`).description(`Add or update a model alias`).argument(`<alias>`,`Alias name`).argument(`<model>`,`Model id or alias`).action(async(e,t)=>{await $(async()=>{await St(e,t,r)})}),i.command(`remove`).description(`Remove a model alias`).argument(`<alias>`,`Alias name`).action(async e=>{await $(async()=>{await Ct(e,r)})});let a=n.command(`fallbacks`).description(`Manage model fallback list`);a.command(`list`).description(`List fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await Yt(e,r)})}),a.command(`add`).description(`Add a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await Xt(e,r)})}),a.command(`remove`).description(`Remove a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await Zt(e,r)})}),a.command(`clear`).description(`Clear all fallback models`).action(async()=>{await $(async()=>{await Qt(r)})});let o=n.command(`image-fallbacks`).description(`Manage image model fallback list`);o.command(`list`).description(`List image fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await $t(e,r)})}),o.command(`add`).description(`Add an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await en(e,r)})}),o.command(`remove`).description(`Remove an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await tn(e,r)})}),o.command(`clear`).description(`Clear all image fallback models`).action(async()=>{await $(async()=>{await nn(r)})}),n.command(`scan`).description(`Scan OpenRouter free models for tools + images`).option(`--min-params <b>`,`Minimum parameter size (billions)`).option(`--max-age-days <days>`,`Skip models older than N days`).option(`--provider <name>`,`Filter by provider prefix`).option(`--max-candidates <n>`,`Max fallback candidates`,`6`).option(`--timeout <ms>`,`Per-probe timeout in ms`).option(`--concurrency <n>`,`Probe concurrency`).option(`--no-probe`,`Skip live probes; list free candidates only`).option(`--yes`,`Accept defaults without prompting`,!1).option(`--no-input`,`Disable prompts (use defaults)`).option(`--set-default`,`Set agents.defaults.model to the first selection`,!1).option(`--set-image`,`Set agents.defaults.imageModel to the first image selection`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await $(async()=>{await fr(e,r)})}),n.action(async e=>{await $(async()=>{await Wn({json:!!e?.statusJson,plain:!!e?.statusPlain,agent:e?.agent},r)})});let s=n.command(`auth`).description(`Manage model auth profiles`);s.option(`--agent <id>`,`Agent id for auth order get/set/clear`),s.action(()=>{s.help()}),s.command(`add`).description(`Interactive auth helper (setup-token or paste token)`).action(async()=>{await $(async()=>{await Mt({},r)})}),s.command(`login`).description(`Run a provider plugin auth flow (OAuth/API key)`).option(`--provider <id>`,`Provider id registered by a plugin`).option(`--method <id>`,`Provider auth method id`).option(`--set-default`,`Apply the provider's default model recommendation`,!1).action(async e=>{await $(async()=>{await It({provider:e.provider,method:e.method,setDefault:!!e.setDefault},r)})}),s.command(`setup-token`).description(`Run a provider CLI to create/sync a token (TTY required)`).option(`--provider <name>`,`Provider id (default: anthropic)`).option(`--yes`,`Skip confirmation`,!1).action(async e=>{await $(async()=>{await At({provider:e.provider,yes:!!e.yes},r)})}),s.command(`paste-token`).description(`Paste a token into auth-profiles.json and update config`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--profile-id <id>`,`Auth profile id (default: <provider>:manual)`).option(`--expires-in <duration>`,`Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.`).action(async e=>{await $(async()=>{await jt({provider:e.provider,profileId:e.profileId,expiresIn:e.expiresIn},r)})}),s.command(`login-github-copilot`).description(`Login to GitHub Copilot via GitHub device flow (TTY required)`).option(`--profile-id <id>`,`Auth profile id (default: github-copilot:github)`).option(`--yes`,`Overwrite existing profile without prompting`,!1).action(async e=>{await $(async()=>{await $e({profileId:e.profileId,yes:!!e.yes},r)})});let c=s.command(`order`).description(`Manage per-agent auth profile order overrides`);c.command(`get`).description(`Show per-agent auth order override (from auth-profiles.json)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--json`,`Output JSON`,!1).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Bt({provider:e.provider,agent:n,json:!!e.json},r)})}),c.command(`set`).description(`Set per-agent auth order override (locks rotation to this list)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).argument(`<profileIds...>`,`Auth profile ids (e.g. anthropic:default)`).action(async(e,t,n)=>{let i=G(n,`agent`)??t.agent;await $(async()=>{await Ht({provider:t.provider,agent:i,order:e},r)})}),c.command(`clear`).description(`Clear per-agent auth order override (fall back to config/round-robin)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Vt({provider:e.provider,agent:n},r)})})}export{hr as registerModelsCli};
|
|
3
|
+
//# sourceMappingURL=models-cli-bGr8jwAb.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{d as t}from"./utils-UGOV_184.js";import{Ks as n,Ol as r,T as i,Ys as a,gt as o,nu as s,qs as c,w as l}from"./model-selection-BlC_rXAN.js";import u from"node:path";import d from"node:fs/promises";function f(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function p(e){return e.explicitPresent&&f(e.explicitValue)?e.explicitValue:f(e.implicitValue)?e.implicitValue:f(e.explicitValue)?e.explicitValue:void 0}function m(e){if(!e||typeof e!=`object`)return``;let t=e.id;return typeof t==`string`?t.trim():``}function h(e,t){let n=Array.isArray(e.models)?e.models:[],r=Array.isArray(t.models)?t.models:[];if(n.length===0)return{...e,...t};let i=new Map(n.map(e=>[m(e),e]).filter(([e])=>!!e)),a=new Set,o=r.map(e=>{let t=m(e);if(!t)return e;a.add(t);let n=i.get(t);if(!n)return e;let r=p({explicitPresent:`contextWindow`in e,explicitValue:e.contextWindow,implicitValue:n.contextWindow}),o=p({explicitPresent:`maxTokens`in e,explicitValue:e.maxTokens,implicitValue:n.maxTokens});return{...e,input:n.input,reasoning:`reasoning`in e?e.reasoning:n.reasoning,...r===void 0?{}:{contextWindow:r},...o===void 0?{}:{maxTokens:o}}});for(let e of n){let t=m(e);!t||a.has(t)||(a.add(t),o.push(e))}return{...e,...t,models:o}}function g(e){let t=e.implicit?{...e.implicit}:{};for(let[n,r]of Object.entries(e.explicit??{})){let e=n.trim();if(!e)continue;let i=t[e];t[e]=i?h(i,r):r}return t}function _(e){if(typeof e?.api==`string`)return e.api.trim()||void 0}function v(e){if(!Array.isArray(e?.models))return;let t=e.models.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e.api;return typeof t==`string`&&t.trim()?[t.trim()]:[]}).toSorted();return t.length>0?JSON.stringify(t):void 0}function y(e){return _(e)??v(e)}function b(e){let{providerKey:t,existing:n,nextEntry:r,secretRefManagedProviders:i}=e,a=typeof r.apiKey==`string`?r.apiKey:``;return a&&o(a)?!1:!i.has(t)&&typeof n.apiKey==`string`&&n.apiKey.length>0&&!o(n.apiKey,{includeEnvVarName:!1})}function x(e){let{providerKey:t,existing:n,nextEntry:r,explicitBaseUrlProviders:i}=e;if(i.has(t)||typeof n.baseUrl!=`string`||n.baseUrl.length===0)return!1;let a=y(n),o=y(r);return!a||!o||a===o}function S(e){let{nextProviders:t,existingProviders:n,secretRefManagedProviders:r,explicitBaseUrlProviders:i}=e,a={};for(let[e,t]of Object.entries(n))a[e]=t;for(let[e,o]of Object.entries(t)){let t=n[e];if(!t){a[e]=o;continue}let s={};b({providerKey:e,existing:t,nextEntry:o,secretRefManagedProviders:r})&&(s.apiKey=t.apiKey),x({providerKey:e,existing:t,nextEntry:o,explicitBaseUrlProviders:i})&&(s.baseUrl=t.baseUrl),a[e]={...o,...s}}return a}async function C(e){let{cfg:t,agentDir:n,env:r}=e,a=t.models?.providers??{};return g({implicit:await i({agentDir:n,config:t,env:r,explicitProviders:a}),explicit:a})}function w(e){return new Set(Object.entries(e?.providers??{}).map(([e,t])=>[e.trim(),t]).filter(([e,t])=>!!e&&typeof t?.baseUrl==`string`&&t.baseUrl.trim()).map(([e])=>e))}async function T(e){if(e.mode!==`merge`)return e.providers;let n=e.existingParsed;if(!t(n)||!t(n.providers))return e.providers;let r=n.providers;return S({nextProviders:e.providers,existingProviders:r,secretRefManagedProviders:e.secretRefManagedProviders,explicitBaseUrlProviders:e.explicitBaseUrlProviders})}async function E(e){let{cfg:t,agentDir:n,env:r}=e,i=await C({cfg:t,agentDir:n,env:r});if(Object.keys(i).length===0)return{action:`skip`};let a=t.models?.mode??`merge`,o=new Set,s=l({providers:i,agentDir:n,env:r,secretDefaults:t.secrets?.defaults,secretRefManagedProviders:o})??i,c=await T({mode:a,existingParsed:e.existingParsed,providers:s,secretRefManagedProviders:o,explicitBaseUrlProviders:w(t.models)}),u=`${JSON.stringify({providers:c},null,2)}\n`;return e.existingRaw===u?{action:`noop`}:{action:`write`,contents:u}}var D=e({ensureOpenClawModelsJson:()=>P});const O=new Map;async function k(e){try{let t=await d.readFile(e,`utf8`);return{raw:t,parsed:JSON.parse(t)}}catch{return{raw:``,parsed:null}}}async function A(e){await d.chmod(e,384).catch(()=>{})}async function j(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;await d.writeFile(n,t,{mode:384}),await d.rename(n,e)}function M(e){let t=n();return e?t?a(e):e:t??c()}async function N(e,t){let n=O.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e}),a=n.then(()=>i);O.set(e,a);try{return await n,await t()}finally{r(),O.get(e)===a&&O.delete(e)}}async function P(e,t){let n=M(e),i=t?.trim()?t.trim():s(),a=u.join(i,`models.json`);return await N(a,async()=>{let e=r(n),t=await k(a),o=await E({cfg:n,agentDir:i,env:e,existingRaw:t.raw,existingParsed:t.parsed});return o.action===`skip`?{agentDir:i,wrote:!1}:o.action===`noop`?(await A(a),{agentDir:i,wrote:!1}):(await d.mkdir(i,{recursive:!0,mode:448}),await j(a,o.contents),await A(a),{agentDir:i,wrote:!0})})}export{D as n,P as t};
|
|
2
|
+
//# sourceMappingURL=models-config-CdMhNxKV.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{Ao as t,Mc as n,No as r,al as i,eu as a,il as o,jo as s,uc as c}from"./auth-profiles-T8DuH3ax.js";import{u as l}from"./utils-CGdo13HV.js";import u from"node:path";import d from"node:fs/promises";function f(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function p(e){return e.explicitPresent&&f(e.explicitValue)?e.explicitValue:f(e.implicitValue)?e.implicitValue:f(e.explicitValue)?e.explicitValue:void 0}function m(e){if(!e||typeof e!=`object`)return``;let t=e.id;return typeof t==`string`?t.trim():``}function h(e,t){let n=Array.isArray(e.models)?e.models:[],r=Array.isArray(t.models)?t.models:[];if(n.length===0)return{...e,...t};let i=new Map(n.map(e=>[m(e),e]).filter(([e])=>!!e)),a=new Set,o=r.map(e=>{let t=m(e);if(!t)return e;a.add(t);let n=i.get(t);if(!n)return e;let r=p({explicitPresent:`contextWindow`in e,explicitValue:e.contextWindow,implicitValue:n.contextWindow}),o=p({explicitPresent:`maxTokens`in e,explicitValue:e.maxTokens,implicitValue:n.maxTokens});return{...e,input:n.input,reasoning:`reasoning`in e?e.reasoning:n.reasoning,...r===void 0?{}:{contextWindow:r},...o===void 0?{}:{maxTokens:o}}});for(let e of n){let t=m(e);!t||a.has(t)||(a.add(t),o.push(e))}return{...e,...t,models:o}}function g(e){let t=e.implicit?{...e.implicit}:{};for(let[n,r]of Object.entries(e.explicit??{})){let e=n.trim();if(!e)continue;let i=t[e];t[e]=i?h(i,r):r}return t}function _(e){if(typeof e?.api==`string`)return e.api.trim()||void 0}function v(e){if(!Array.isArray(e?.models))return;let t=e.models.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e.api;return typeof t==`string`&&t.trim()?[t.trim()]:[]}).toSorted();return t.length>0?JSON.stringify(t):void 0}function y(e){return _(e)??v(e)}function b(e){let{providerKey:t,existing:n,nextEntry:r,secretRefManagedProviders:i}=e,o=typeof r.apiKey==`string`?r.apiKey:``;return o&&a(o)?!1:!i.has(t)&&typeof n.apiKey==`string`&&n.apiKey.length>0&&!a(n.apiKey,{includeEnvVarName:!1})}function x(e){let{providerKey:t,existing:n,nextEntry:r,explicitBaseUrlProviders:i}=e;if(i.has(t)||typeof n.baseUrl!=`string`||n.baseUrl.length===0)return!1;let a=y(n),o=y(r);return!a||!o||a===o}function S(e){let{nextProviders:t,existingProviders:n,secretRefManagedProviders:r,explicitBaseUrlProviders:i}=e,a={};for(let[e,t]of Object.entries(n))a[e]=t;for(let[e,o]of Object.entries(t)){let t=n[e];if(!t){a[e]=o;continue}let s={};b({providerKey:e,existing:t,nextEntry:o,secretRefManagedProviders:r})&&(s.apiKey=t.apiKey),x({providerKey:e,existing:t,nextEntry:o,explicitBaseUrlProviders:i})&&(s.baseUrl=t.baseUrl),a[e]={...o,...s}}return a}async function C(e){let{cfg:t,agentDir:n,env:r}=e,a=t.models?.providers??{};return g({implicit:await i({agentDir:n,config:t,env:r,explicitProviders:a}),explicit:a})}function w(e){return new Set(Object.entries(e?.providers??{}).map(([e,t])=>[e.trim(),t]).filter(([e,t])=>!!e&&typeof t?.baseUrl==`string`&&t.baseUrl.trim()).map(([e])=>e))}async function T(e){if(e.mode!==`merge`)return e.providers;let t=e.existingParsed;if(!l(t)||!l(t.providers))return e.providers;let n=t.providers;return S({nextProviders:e.providers,existingProviders:n,secretRefManagedProviders:e.secretRefManagedProviders,explicitBaseUrlProviders:e.explicitBaseUrlProviders})}async function E(e){let{cfg:t,agentDir:n,env:r}=e,i=await C({cfg:t,agentDir:n,env:r});if(Object.keys(i).length===0)return{action:`skip`};let a=t.models?.mode??`merge`,s=new Set,c=o({providers:i,agentDir:n,env:r,secretDefaults:t.secrets?.defaults,secretRefManagedProviders:s})??i,l=await T({mode:a,existingParsed:e.existingParsed,providers:c,secretRefManagedProviders:s,explicitBaseUrlProviders:w(t.models)}),u=`${JSON.stringify({providers:l},null,2)}\n`;return e.existingRaw===u?{action:`noop`}:{action:`write`,contents:u}}var D=e({ensureOpenClawModelsJson:()=>P});const O=new Map;async function k(e){try{let t=await d.readFile(e,`utf8`);return{raw:t,parsed:JSON.parse(t)}}catch{return{raw:``,parsed:null}}}async function A(e){await d.chmod(e,384).catch(()=>{})}async function j(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;await d.writeFile(n,t,{mode:384}),await d.rename(n,e)}function M(e){let n=t();return e?n?r(e):e:n??s()}async function N(e,t){let n=O.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e}),a=n.then(()=>i);O.set(e,a);try{return await n,await t()}finally{r(),O.get(e)===a&&O.delete(e)}}async function P(e,t){let r=M(e),i=t?.trim()?t.trim():n(),a=u.join(i,`models.json`);return await N(a,async()=>{let e=c(r),t=await k(a),n=await E({cfg:r,agentDir:i,env:e,existingRaw:t.raw,existingParsed:t.parsed});return n.action===`skip`?{agentDir:i,wrote:!1}:n.action===`noop`?(await A(a),{agentDir:i,wrote:!1}):(await d.mkdir(i,{recursive:!0,mode:448}),await j(a,n.contents),await A(a),{agentDir:i,wrote:!0})})}export{D as n,P as t};
|
|
2
|
+
//# sourceMappingURL=models-config-_htt7eY5.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
function e(e){return(typeof e==`string`?e:typeof e==`number`?String(e):``).trim().replace(/^(telegram|tg):/i,``).trim()}function t(e){return/^-?\d+$/.test(e)}function n(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^<@!?/,``).replace(/>$/,``);if(/^\d+$/.test(n))return!1;for(let e of[`discord:`,`user:`,`pk:`])if(t.startsWith(e))return t.slice(e.length).trim().length===0;return!0}function r(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.match(/^<@([A-Z0-9]+)>$/i);if(n&&/^[A-Z0-9]{8,}$/i.test(n[1]??``))return!1;let r=t.replace(/^(slack|user):/i,``).trim();return!(/^[UWBCGDT][A-Z0-9]{2,}$/.test(r)||/^[A-Z0-9]{8,}$/i.test(r))}function i(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(googlechat|google-chat|gchat):/i,``).trim();return n?n.replace(/^users\//i,``).includes(`@`):!1}function a(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(msteams|user):/i,``).trim();return/\s/.test(n)||n.includes(`@`)}function o(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(mattermost|user):/i,``).replace(/^@/,``).trim().toLowerCase();return!/^[a-z0-9]{26}$/.test(n)}function s(e){let t=e.trim().toLowerCase();if(!t||t===`*`)return!1;let n=t.replace(/^irc:/,``).replace(/^user:/,``).trim();return!n.includes(`!`)&&!n.includes(`@`)}export{o as a,e as c,a as i,i as n,r as o,s as r,t as s,n as t};
|
|
2
|
+
//# sourceMappingURL=mutable-allowlist-detectors-C4rNVag8.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
function e(e){return(typeof e==`string`?e:typeof e==`number`?String(e):``).trim().replace(/^(telegram|tg):/i,``).trim()}function t(e){return/^-?\d+$/.test(e)}function n(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^<@!?/,``).replace(/>$/,``);if(/^\d+$/.test(n))return!1;for(let e of[`discord:`,`user:`,`pk:`])if(t.startsWith(e))return t.slice(e.length).trim().length===0;return!0}function r(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.match(/^<@([A-Z0-9]+)>$/i);if(n&&/^[A-Z0-9]{8,}$/i.test(n[1]??``))return!1;let r=t.replace(/^(slack|user):/i,``).trim();return!(/^[UWBCGDT][A-Z0-9]{2,}$/.test(r)||/^[A-Z0-9]{8,}$/i.test(r))}function i(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(googlechat|google-chat|gchat):/i,``).trim();return n?n.replace(/^users\//i,``).includes(`@`):!1}function a(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(msteams|user):/i,``).trim();return/\s/.test(n)||n.includes(`@`)}function o(e){let t=e.trim();if(!t||t===`*`)return!1;let n=t.replace(/^(mattermost|user):/i,``).replace(/^@/,``).trim().toLowerCase();return!/^[a-z0-9]{26}$/.test(n)}function s(e){let t=e.trim().toLowerCase();if(!t||t===`*`)return!1;let n=t.replace(/^irc:/,``).replace(/^user:/,``).trim();return!n.includes(`!`)&&!n.includes(`@`)}export{o as a,e as c,a as i,i as n,r as o,s as r,t as s,n as t};
|
|
2
|
+
//# sourceMappingURL=mutable-allowlist-detectors-CL0qe54J.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import{d as e,g as t}from"./paths-B4IRk3wi.js";import{A as n,O as r,p as i}from"./subsystem-C5XF2Fy5.js";import"./utils-UGOV_184.js";import{Gc as a,Mi as o,Ml as s,Qc as c,Si as l,Vc as u,Xc as d,Xi as f,Yi as p,Zc as m,Zi as h,cl as g,il as _,ol as v,pa as y,qs as b,sl as x,ul as S,xi as C}from"./model-selection-BlC_rXAN.js";import{i as ee}from"./agent-scope-DXZc3eNT.js";import{s as w}from"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import{t as T}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import{S as te,x as ne}from"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import{i as E}from"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import{r as re}from"./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{dn as ie,g as ae}from"./call-CqoMqP5b.js";import{n as oe,t as D}from"./with-timeout-WveKxvFV.js";import{n as se,r as ce,t as le}from"./exec-approvals-allowlist-CE3nYh0K.js";import{r as ue,t as de}from"./exec-safe-bin-runtime-policy-Dt0GchLp.js";import{t as fe}from"./connection-auth-C8iru0UB.js";import{t as pe}from"./links-CySwdMcF.js";import{t as me}from"./help-format-BRbF_INg.js";import{_ as he,c as ge,f as O,h as _e,m as ve,n as ye,o as be,p as xe,r as Se,v as Ce}from"./exec-approvals-BpBNEy6i.js";import{n as we,o as Te,t as Ee}from"./system-run-command-DEWnZE0r.js";import{_ as De,g as Oe,l as ke,v as Ae}from"./arg-split-DE5RqDHq.js";import{t as je}from"./path-env-BPd1Yd-i.js";import"./runtime-guard-DFYBaYZS.js";import"./issue-format-BT7cQEt3.js";import{l as Me,n as Ne,p as Pe,t as Fe}from"./daemon-install-plan.shared-CfA37Ut_.js";import{r as Ie,t as Le}from"./daemon-runtime-DHiDbRuC.js";import"./systemd-D7odsu4K.js";import"./service-BtB9epJk.js";import{a as Re,f as ze,g as Be,h as Ve,i as He,m as k,r as Ue,t as We}from"./lifecycle-core-LM5UUUB1.js";import{c as Ge,l as Ke,u as qe}from"./systemd-hints-C0DKDl35.js";import{t as Je}from"./parse-port-Bv1Y9Wk5.js";import{i as Ye,n as Xe,t as Ze}from"./node-commands-8GBOiktk.js";import{t as A}from"./node-service-BRfrNp8l.js";import j from"node:fs";import M from"node:path";import N from"node:fs/promises";import{spawn as Qe,spawnSync as $e}from"node:child_process";import P from"node:crypto";function et(){return M.join(t(),`node.json`)}function F(e){let t={version:1,nodeId:``,token:e?.token,displayName:e?.displayName,gateway:e?.gateway};return e?.version===1&&typeof e.nodeId==`string`&&(t.nodeId=e.nodeId.trim()),t.nodeId||=P.randomUUID(),t}async function I(){let e=et();try{let t=await N.readFile(e,`utf8`);return F(JSON.parse(t))}catch{return null}}async function tt(e){await o(et(),e,{mode:384})}async function nt(){let e=F(await I());return await tt(e),e}async function rt(e){let{socketPath:t,token:n,request:r}=e;if(!t||!n)return null;let i=e.timeoutMs??2e4,a=JSON.stringify(r),o=P.randomBytes(16).toString(`hex`),s=Date.now(),c=P.createHmac(`sha256`,n).update(`${o}:${s}:${a}`).digest(`hex`);return await Ce({socketPath:t,payload:JSON.stringify({type:`exec`,id:P.randomUUID(),nonce:o,ts:s,hmac:c,requestJson:a}),timeoutMs:i,accept:e=>{let t=e;if(t?.type===`exec-res`)return t.ok===!0&&t.payload?{ok:!0,payload:t.payload}:t.ok===!1&&t.error?{ok:!1,error:t.error}:null}})}const it=10*1024*1024;function at(e){return Array.isArray(e)?e.map(e=>e.trim()).filter(Boolean):[]}function ot(){let e=b().nodeHost?.browserProxy,t=at(e?.allowProfiles);return{enabled:e?.enabled!==!1,allowProfiles:t}}let L=null;async function st(){return L||(L=(async()=>{let e=b();if(!y(e.browser,e).enabled||!await h())throw Error(`browser control disabled`)})(),L)}function R(e){let{allowProfiles:t,profile:n}=e;return t.length?n?t.includes(n.trim()):!1:!0}function ct(e){let t=new Set,n=typeof e==`object`&&e?e:null;if(!n)return[];typeof n.path==`string`&&n.path.trim()&&t.add(n.path.trim()),typeof n.imagePath==`string`&&n.imagePath.trim()&&t.add(n.imagePath.trim());let r=n.download;if(r&&typeof r==`object`){let e=r.path;typeof e==`string`&&e.trim()&&t.add(e.trim())}return[...t]}async function lt(e){let t=await N.stat(e).catch(()=>null);if(!t||!t.isFile())return null;if(t.size>it)throw Error(`browser proxy file exceeds ${Math.round(it/(1024*1024))}MB`);let n=await N.readFile(e),r=await re({buffer:n,filePath:e});return{path:e,base64:n.toString(`base64`),mimeType:r}}function ut(e){if(!e)throw Error(`INVALID_REQUEST: paramsJSON required`);return JSON.parse(e)}function dt(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(1,Math.floor(e)):2e4}function ft(e){return String(e).includes(`browser proxy request timed out`)}function pt(e){return e===`/act`||e===`/navigate`||e===`/pdf`||e===`/screenshot`||e===`/snapshot`}async function mt(e){let t=e.profile?{profile:e.profile}:{};try{let n=await D(n=>e.dispatcher.dispatch({method:`GET`,path:`/`,query:t,signal:n}),750,`browser proxy status`);if(n.status>=400||!n.body||typeof n.body!=`object`)return null;let r=n.body;return{running:r.running,cdpHttp:r.cdpHttp,cdpReady:r.cdpReady,cdpUrl:r.cdpUrl}}catch{return null}}function ht(e){let t=[`browser proxy timed out for ${e.method} ${e.path} after ${e.timeoutMs}ms`,e.wsBacked?`ws-backed browser action`:`browser action`];if(e.profile&&t.push(`profile=${e.profile}`),e.status){let n=[`running=${String(e.status.running)}`,`cdpHttp=${String(e.status.cdpHttp)}`,`cdpReady=${String(e.status.cdpReady)}`];typeof e.status.cdpUrl==`string`&&e.status.cdpUrl.trim()&&n.push(`cdpUrl=${e.status.cdpUrl}`),t.push(`status(${n.join(`, `)})`)}return t.join(`; `)}async function gt(e){let t=ut(e),n=typeof t.path==`string`?t.path.trim():``;if(!n)throw Error(`INVALID_REQUEST: path required`);let r=ot();if(!r.enabled)throw Error(`UNAVAILABLE: node browser proxy disabled`);await st();let i=b(),a=y(i.browser,i),o=typeof t.profile==`string`?t.profile.trim():``,s=r.allowProfiles;if(s.length>0){if(n!==`/profiles`){if(!R({allowProfiles:s,profile:o||a.defaultProfile}))throw Error(`INVALID_REQUEST: browser profile not allowed`)}else if(o&&!R({allowProfiles:s,profile:o}))throw Error(`INVALID_REQUEST: browser profile not allowed`)}let c=typeof t.method==`string`?t.method.toUpperCase():`GET`,l=n.startsWith(`/`)?n:`/${n}`,u=t.body,d=dt(t.timeoutMs),m={};o&&(m.profile=o);let h=t.query??{};for(let[e,t]of Object.entries(h))t!=null&&(m[e]=typeof t==`string`?t:String(t));let g=p(f()),_;try{_=await D(e=>g.dispatch({method:c===`DELETE`?`DELETE`:c===`POST`?`POST`:`GET`,path:l,query:m,body:u,signal:e}),d,`browser proxy request`)}catch(e){if(!ft(e))throw e;let t=o||a.defaultProfile,n=await mt({dispatcher:g,profile:l===`/profiles`?void 0:t});throw Error(ht({method:c,path:l,profile:l===`/profiles`?void 0:t||void 0,timeoutMs:d,wsBacked:pt(l),status:n}),{cause:e})}if(_.status>=400){let e=_.body&&typeof _.body==`object`&&`error`in _.body?String(_.body.error):`HTTP ${_.status}`;throw Error(e)}let v=_.body;if(s.length>0&&l===`/profiles`){let e=typeof v==`object`&&v?v:{};e.profiles=(Array.isArray(e.profiles)?e.profiles:[]).filter(e=>{if(!e||typeof e!=`object`)return!1;let t=e.name;return typeof t==`string`&&s.includes(t)})}let x,S=ct(v);if(S.length>0){let e=await Promise.all(S.map(async e=>{try{let t=await lt(e);if(!t)throw Error(`file not found`);return t}catch(t){throw Error(`browser proxy file read failed for ${e}: ${String(t)}`,{cause:t})}}));e.length>0&&(x=e)}let C=x?{result:v,files:x}:{result:v};return JSON.stringify(C)}function _t(e){return e===`allow-once`||e===`allow-always`?e:null}function vt(e){return e?.windowsShellWrapperBlocked?`SYSTEM_RUN_DENIED: allowlist miss (Windows shell wrappers like cmd.exe /c require approval; approve once/always or run with --ask on-miss|always)`:e?.shellWrapperBlocked?`SYSTEM_RUN_DENIED: allowlist miss (shell wrappers like sh/bash/zsh -c require approval; approve once/always or run with --ask on-miss|always)`:`SYSTEM_RUN_DENIED: allowlist miss`}function yt(e){let t=e.security===`allowlist`&&e.shellWrapperInvocation,n=t&&e.isWindows&&e.cmdInvocation,r=t?!1:e.analysisOk,i=t?!1:e.allowlistSatisfied,a=e.approvalDecision!==null||e.approved===!0;if(e.security===`deny`)return{allowed:!1,eventReason:`security=deny`,errorMessage:`SYSTEM_RUN_DISABLED: security=deny`,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:!1,approvalDecision:e.approvalDecision,approvedByAsk:a};let o=ve({ask:e.ask,security:e.security,analysisOk:r,allowlistSatisfied:i});return o&&!a?{allowed:!1,eventReason:`approval-required`,errorMessage:`SYSTEM_RUN_DENIED: approval required`,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}:e.security===`allowlist`&&(!r||!i)&&!a?{allowed:!1,eventReason:`allowlist-miss`,errorMessage:vt({shellWrapperBlocked:t,windowsShellWrapperBlocked:n}),analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}:{allowed:!0,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}}function bt(e){if(e.shellCommand){let t=se({command:e.shellCommand,allowlist:e.approvals.allowlist,safeBins:e.safeBins,safeBinProfiles:e.safeBinProfiles,cwd:e.cwd,env:e.env,trustedSafeBinDirs:e.trustedSafeBinDirs,skillBins:e.skillBins,autoAllowSkills:e.autoAllowSkills,platform:process.platform});return{analysisOk:t.analysisOk,allowlistMatches:t.allowlistMatches,allowlistSatisfied:e.security===`allowlist`&&t.analysisOk?t.allowlistSatisfied:!1,segments:t.segments}}let t=u({argv:e.argv,cwd:e.cwd,env:e.env}),n=le({analysis:t,allowlist:e.approvals.allowlist,safeBins:e.safeBins,safeBinProfiles:e.safeBinProfiles,cwd:e.cwd,trustedSafeBinDirs:e.trustedSafeBinDirs,skillBins:e.skillBins,autoAllowSkills:e.autoAllowSkills});return{analysisOk:t.ok,allowlistMatches:n.allowlistMatches,allowlistSatisfied:e.security===`allowlist`&&t.ok?n.allowlistSatisfied:!1,segments:t.segments}}function xt(e){if(e.security!==`allowlist`||e.policy.approvedByAsk||e.shellCommand||!e.policy.analysisOk||!e.policy.allowlistSatisfied||e.segments.length!==1)return;let t=a(e.segments[0]);return t&&t.length>0?t:null}function St(e){let t=e.plannedAllowlistArgv??e.argv;return e.security===`allowlist`&&e.isWindows&&!e.policy.approvedByAsk&&e.shellCommand&&e.policy.analysisOk&&e.policy.allowlistSatisfied&&e.segments.length===1&&e.segments[0]?.argv.length>0&&(t=e.segments[0].argv),t}function Ct(e){if(!e.truncated)return;let t=`... (truncated)`;e.stderr.trim().length>0?e.stderr=`${e.stderr}\n${t}`:e.stdout=`${e.stdout}\n${t}`}const wt=[/^(?:node|nodejs)$/,/^perl$/,/^php$/,/^python(?:\d+(?:\.\d+)*)?$/,/^ruby$/],Tt=new Set([`esno`,`jiti`,`ts-node`,`ts-node-esm`,`tsx`,`vite-node`]),Et=new Set([`add`,`audit`,`completions`,`create`,`exec`,`help`,`init`,`install`,`link`,`outdated`,`patch`,`pm`,`publish`,`remove`,`repl`,`run`,`test`,`unlink`,`update`,`upgrade`,`x`]),z=new Set(`--backend.--bunfig.--conditions.--config.--console-depth.--cwd.--define.--elide-lines.--env-file.--extension-order.--filter.--hot.--inspect.--inspect-brk.--inspect-wait.--install.--jsx-factory.--jsx-fragment.--jsx-import-source.--loader.--origin.--port.--preload.--smol.--tsconfig-override.-c.-e.-p.-r`.split(`.`)),Dt=new Set([`--cached-only`,`--cert`,`--config`,`--env-file`,`--ext`,`--harmony-import-attributes`,`--import-map`,`--inspect`,`--inspect-brk`,`--inspect-wait`,`--location`,`--log-level`,`--lock`,`--node-modules-dir`,`--no-check`,`--preload`,`--reload`,`--seed`,`--strace-ops`,`--unstable-bare-node-builtins`,`--v8-flags`,`--watch`,`--watch-exclude`,`-L`]);function B(e){return typeof e==`string`&&e.trim()||null}function Ot(e){let t=M.resolve(e),n=[],r=t;for(;;){n.unshift(r);let e=M.dirname(r);if(e===r)return n;r=e}}function kt(e){try{return j.accessSync(e,j.constants.W_OK),!0}catch{return!1}}function At(e){for(let t of Ot(e))try{if(!j.lstatSync(t).isSymbolicLink())continue;if(kt(M.dirname(t)))return!0}catch{return!0}return!1}function jt(e){return e.shellCommand===null?(e.wrapperChain?.length??0)===0:!1}function V(e){return P.createHash(`sha256`).update(j.readFileSync(e)).digest(`hex`)}function Mt(e){return e.startsWith(`.`)||e.startsWith(`/`)||e.startsWith(`\\`)||e.includes(`/`)||e.includes(`\\`)||M.extname(e).length>0}function H(e,t){if(!e)return!1;try{return j.statSync(M.resolve(t??process.cwd(),e)).isFile()}catch{return!1}}function U(e){let t=e,n=0;for(;;){let e=v(t);if(e.kind===`unwrapped`){n+=t.length-e.argv.length,t=e.argv;continue}let r=x(t);if(r.kind===`unwrapped`){n+=t.length-r.argv.length,t=r.argv;continue}return{argv:t,baseIndex:n}}}function Nt(e){if(S(e,g,{allowCombinedC:!0}).valueTokenIndex!==null)return null;let t=!1;for(let n=1;n<e.length;n+=1){let r=e[n]?.trim()??``;if(r){if(r===`-`)return null;if(!t&&r===`--`){t=!0;continue}if(!t&&r===`-s`)return null;if(!(!t&&r.startsWith(`-`)))return n}}return null}function W(e){let t=!1;for(let n=e.startIndex;n<e.argv.length;n+=1){let r=e.argv[n]?.trim()??``;if(r){if(t)return H(r,e.cwd)?n:null;if(r===`--`){t=!0;continue}if(r===`-`)return null;if(r.startsWith(`-`)){!r.includes(`=`)&&e.optionsWithValue?.has(r)&&(n+=1);continue}return H(r,e.cwd)?n:null}}return null}function Pt(e){let t=!1;for(let n=e.startIndex;n<e.argv.length;n+=1){let r=e.argv[n]?.trim()??``;if(r){if(t)return n;if(r===`--`){t=!0;continue}if(r===`-`)return null;if(r.startsWith(`-`)){!r.includes(`=`)&&e.optionsWithValue?.has(r)&&(n+=1);continue}return n}}return null}function Ft(e){let t=!1,n=[];for(let r=e.startIndex;r<e.argv.length;r+=1){let i=e.argv[r]?.trim()??``;if(i){if(t){H(i,e.cwd)&&n.push(r);continue}if(i===`--`){t=!0;continue}if(i===`-`)return[];i.startsWith(`-`)||H(i,e.cwd)&&n.push(r)}}return n}function It(e){let t=Ft({argv:e.argv,startIndex:1,cwd:e.cwd});return t.length===1?t[0]:null}function Lt(e){let t=Pt({argv:e.argv,startIndex:1,optionsWithValue:z});if(t===null)return null;let n=e.argv[t]?.trim()??``;return n===`run`?W({argv:e.argv,startIndex:t+1,cwd:e.cwd,optionsWithValue:z}):Et.has(n)||!Mt(n)?null:t}function Rt(e){return(e.argv[1]?.trim()??``)===`run`?W({argv:e.argv,startIndex:2,cwd:e.cwd,optionsWithValue:Dt}):null}function G(e){return Tt.has(e)||de(e)}function zt(e,t){let n=U(e),r=_(n.argv[0]??``);if(!r)return null;if(c.has(r)){let e=Nt(n.argv);return e===null?null:n.baseIndex+e}if(wt.some(e=>e.test(r))){let e=n.argv[1]?.trim()??``;if(e&&e!==`-`&&!e.startsWith(`-`))return n.baseIndex+1}if(r===`bun`){let e=Lt({argv:n.argv,cwd:t});if(e!==null)return n.baseIndex+e}if(r===`deno`){let e=Rt({argv:n.argv,cwd:t});if(e!==null)return n.baseIndex+e}if(!G(r))return null;let i=It({argv:n.argv,cwd:t});return i===null?null:n.baseIndex+i}function Bt(e){if(e.shellCommand!==null)return!1;let t=_(U(e.argv).argv[0]??``);return!t||c.has(t)?!1:G(t)}function K(e){let t=zt(e.argv,e.cwd);if(t===null)return Bt({argv:e.argv,shellCommand:e.shellCommand})?{ok:!1,message:`SYSTEM_RUN_DENIED: approval cannot safely bind this interpreter/runtime command`}:{ok:!0,snapshot:null};let n=e.argv[t]?.trim();if(!n)return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a stable script operand`};let r=M.resolve(e.cwd??process.cwd(),n),i,a;try{i=j.realpathSync(r),a=j.statSync(i)}catch{return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires an existing script operand`}}return a.isFile()?{ok:!0,snapshot:{argvIndex:t,path:i,sha256:V(i)}}:{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a file script operand`}}function Vt(e){let t=M.resolve(e),n,r,i,a;try{n=j.lstatSync(t),r=j.statSync(t),i=j.realpathSync(t),a=j.statSync(i)}catch{return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires an existing canonical cwd`}}return r.isDirectory()?At(t)?{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires canonical cwd (no symlink path components)`}:n.isSymbolicLink()?{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires canonical cwd (no symlink cwd)`}:!w(r,n)||!w(r,a)||!w(n,a)?{ok:!1,message:`SYSTEM_RUN_DENIED: approval cwd identity mismatch`}:{ok:!0,snapshot:{cwd:i,stat:r}}:{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires cwd to be a directory`}}function Ht(e){let t=Vt(e.snapshot.cwd);return t.ok?w(e.snapshot.stat,t.snapshot.stat):!1}function Ut(e){let t=e.argv[e.snapshot.argvIndex]?.trim();if(!t)return!1;let n=M.resolve(e.cwd??process.cwd(),t),r;try{r=j.realpathSync(n)}catch{return!1}if(r!==e.snapshot.path)return!1;try{return V(r)===e.snapshot.sha256}catch{return!1}}function Wt(e){if(!e.approvedByAsk)return{ok:!0,argv:e.argv,argvChanged:!1,cwd:e.cwd,approvedCwdSnapshot:void 0};let t=e.cwd,n;if(t){let e=Vt(t);if(!e.ok)return e;t=e.snapshot.cwd,n=e.snapshot}if(e.argv.length===0)return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let r=d(e.argv,t);if(!jt({shellCommand:e.shellCommand,wrapperChain:r?.wrapperChain}))return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let i=r?.resolvedRealPath??r?.resolvedPath;if(!i)return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a stable executable path`};if(i===e.argv[0])return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let a=[...e.argv];return a[0]=i,{ok:!0,argv:a,argvChanged:!0,cwd:t,approvedCwdSnapshot:n}}function Gt(e){let t=we({command:e.command,rawCommand:e.rawCommand});if(!t.ok)return{ok:!1,message:t.message};if(t.argv.length===0)return{ok:!1,message:`command required`};let n=Wt({approvedByAsk:!0,argv:t.argv,shellCommand:t.shellPayload,cwd:B(e.cwd)??void 0});if(!n.ok)return{ok:!1,message:n.message};let r=Ee(n.argv),i=t.previewText?.trim()&&t.previewText.trim()!==r?t.previewText.trim():null,a=K({argv:n.argv,cwd:n.cwd,shellCommand:t.shellPayload});return a.ok?{ok:!0,plan:{argv:n.argv,cwd:n.cwd??null,commandText:r,commandPreview:i,agentId:B(e.agentId),sessionKey:B(e.sessionKey),mutableFileOperand:a.snapshot??void 0}}:{ok:!1,message:a.message}}const Kt=new Set,qt=`SYSTEM_RUN_DENIED: approval cwd changed before execution`;function Jt(e){Kt.has(e)||(Kt.add(e),E(e))}function Yt(e){switch(e){case`security=deny`:case`approval-required`:case`allowlist-miss`:case`execution-plan-miss`:case`companion-unavailable`:case`permission:screenRecording`:return e;default:return`approval-required`}}async function q(e,t,n){await e.sendNodeEvent(e.client,`exec.denied`,e.buildExecEventPayload({sessionKey:t.sessionKey,runId:t.runId,host:`node`,command:t.commandText,reason:n.reason,suppressNotifyOnExit:t.suppressNotifyOnExit})),await e.sendInvokeResult({ok:!1,error:{code:`UNAVAILABLE`,message:n.message}})}async function Xt(e){let t=we({command:e.params.command,rawCommand:e.params.rawCommand});if(!t.ok)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:t.message}}),null;if(t.argv.length===0)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:`command required`}}),null;let n=t.shellPayload,r=t.commandText,i=e.params.systemRunPlan===void 0?null:Te(e.params.systemRunPlan);if(e.params.systemRunPlan!==void 0&&!i)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:`systemRunPlan invalid`}}),null;let a=e.params.agentId?.trim()||void 0,o=e.params.sessionKey?.trim()||`node`,s=e.params.runId?.trim()||P.randomUUID(),c=e.params.suppressNotifyOnExit===!0,l=te({overrides:e.params.env??void 0,shellWrapper:n!==null});return{argv:t.argv,shellPayload:n,commandText:r,commandPreview:t.previewText,approvalPlan:i,agentId:a,sessionKey:o,runId:s,execution:{sessionKey:o,runId:s,commandText:r,suppressNotifyOnExit:c},approvalDecision:_t(e.params.approvalDecision),envOverrides:l,env:e.sanitizeEnv(l),cwd:e.params.cwd?.trim()||void 0,timeoutMs:e.params.timeoutMs??void 0,needsScreenRecording:e.params.needsScreenRecording===!0,approved:e.params.approved===!0,suppressNotifyOnExit:c}}async function Zt(e,t){let n=b(),r=t.agentId?ee(n,t.agentId)?.tools?.exec:void 0,i=e.resolveExecSecurity(r?.security??n.tools?.exec?.security),a=e.resolveExecAsk(r?.ask??n.tools?.exec?.ask),o=_e(t.agentId,{security:i,ask:a}),s=o.agent.security,c=o.agent.ask,l=o.agent.autoAllowSkills,{safeBins:u,safeBinProfiles:d,trustedSafeBinDirs:f}=ue({global:n.tools?.exec,local:r,onWarning:Jt}),p=l?await e.skillBins.current():[],{analysisOk:m,allowlistMatches:h,allowlistSatisfied:g,segments:_}=bt({shellCommand:t.shellPayload,argv:t.argv,approvals:o,security:s,safeBins:u,safeBinProfiles:d,trustedSafeBinDirs:f,cwd:t.cwd,env:t.env,skillBins:p,autoAllowSkills:l}),v=process.platform===`win32`,y=t.shellPayload?e.isCmdExeInvocation(_[0]?.argv??[]):e.isCmdExeInvocation(t.argv),x=yt({security:s,ask:c,analysisOk:m,allowlistSatisfied:g,approvalDecision:t.approvalDecision,approved:t.approved,isWindows:v,cmdInvocation:y,shellWrapperInvocation:t.shellPayload!==null});if(m=x.analysisOk,g=x.allowlistSatisfied,!x.allowed)return await q(e,t.execution,{reason:x.eventReason,message:x.errorMessage}),null;if(s===`allowlist`&&t.shellPayload&&!x.approvedByAsk)return await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval required`}),null;let S=Wt({approvedByAsk:x.approvedByAsk,argv:t.argv,shellCommand:t.shellPayload,cwd:t.cwd});if(!S.ok)return await q(e,t.execution,{reason:`approval-required`,message:S.message}),null;let C=x.approvedByAsk?S.approvedCwdSnapshot:void 0;if(x.approvedByAsk&&S.cwd&&!C)return await q(e,t.execution,{reason:`approval-required`,message:qt}),null;let w=xt({security:s,shellCommand:t.shellPayload,policy:x,segments:_});return w===null?(await q(e,t.execution,{reason:`execution-plan-miss`,message:`SYSTEM_RUN_DENIED: execution plan mismatch`}),null):{...t,argv:S.argv,cwd:S.cwd,approvals:o,security:s,policy:x,allowlistMatches:h,analysisOk:m,allowlistSatisfied:g,segments:_,plannedAllowlistArgv:w??void 0,isWindows:v,approvedCwdSnapshot:C}}async function Qt(e,t){if(t.approvedCwdSnapshot&&!Ht({snapshot:t.approvedCwdSnapshot})){E(`security: system.run approval cwd drift blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:qt});return}let n=t.approvalPlan?K({argv:t.argv,cwd:t.cwd,shellCommand:t.shellPayload}):null;if(n&&!n.ok){E(`security: system.run approval script binding blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:n.message});return}if(n?.snapshot&&!t.approvalPlan?.mutableFileOperand){E(`security: system.run approval script binding missing (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval missing script operand binding`});return}if(t.approvalPlan?.mutableFileOperand&&!Ut({snapshot:t.approvalPlan.mutableFileOperand,argv:t.argv,cwd:t.cwd})){E(`security: system.run approval script drift blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval script operand changed before execution`});return}if(e.preferMacAppExecHost){let n={command:t.plannedAllowlistArgv??t.argv,rawCommand:t.commandText||null,cwd:t.cwd??null,env:t.envOverrides??null,timeoutMs:t.timeoutMs??null,needsScreenRecording:t.needsScreenRecording,agentId:t.agentId??null,sessionKey:t.sessionKey??null,approvalDecision:t.approvalDecision},r=await e.runViaMacAppExecHost({approvals:t.approvals,request:n});if(!r){if(e.execHostEnforced||!e.execHostFallbackAllowed){await q(e,t.execution,{reason:`companion-unavailable`,message:`COMPANION_APP_UNAVAILABLE: macOS app exec host unreachable`});return}}else if(r.ok){let n=r.payload;await e.sendExecFinishedEvent({sessionKey:t.sessionKey,runId:t.runId,commandText:t.commandText,result:n,suppressNotifyOnExit:t.suppressNotifyOnExit}),await e.sendInvokeResult({ok:!0,payloadJSON:JSON.stringify(n)});return}else{await q(e,t.execution,{reason:Yt(r.error.reason),message:r.error.message});return}}if(t.policy.approvalDecision===`allow-always`&&t.security===`allowlist`&&t.policy.analysisOk){let e=ce({segments:t.segments,cwd:t.cwd,env:t.env,platform:process.platform});for(let n of e)n&&ye(t.approvals.file,t.agentId,n)}if(t.allowlistMatches.length>0){let e=new Set;for(let n of t.allowlistMatches)!n?.pattern||e.has(n.pattern)||(e.add(n.pattern),xe(t.approvals.file,t.agentId,n,t.commandText,t.segments[0]?.resolution?.resolvedPath))}if(t.needsScreenRecording){await q(e,t.execution,{reason:`permission:screenRecording`,message:`PERMISSION_MISSING: screenRecording`});return}let r=St({plannedAllowlistArgv:t.plannedAllowlistArgv,argv:t.argv,security:t.security,isWindows:t.isWindows,policy:t.policy,shellCommand:t.shellPayload,segments:t.segments}),i=await e.runCommand(r,t.cwd,t.env,t.timeoutMs);Ct(i),await e.sendExecFinishedEvent({sessionKey:t.sessionKey,runId:t.runId,commandText:t.commandText,result:i,suppressNotifyOnExit:t.suppressNotifyOnExit}),await e.sendInvokeResult({ok:!0,payloadJSON:JSON.stringify({exitCode:i.exitCode,timedOut:i.timedOut,success:i.success,stdout:i.stdout,stderr:i.stderr,error:i.error??null})})}async function $t(e){let t=await Xt(e);if(!t)return;let n=await Zt(e,t);n&&await Qt(e,n)}const en=2e5,tn={65001:`utf-8`,54936:`gb18030`,936:`gbk`,950:`big5`,932:`shift_jis`,949:`euc-kr`,1252:`windows-1252`};let J;const nn=process.env.OPENCLAW_NODE_EXEC_HOST?.trim().toLowerCase()===`app`,rn=process.env.OPENCLAW_NODE_EXEC_FALLBACK?.trim().toLowerCase()!==`0`,an=process.platform===`darwin`&&nn;function on(e){return e===`deny`||e===`allowlist`||e===`full`?e:`allowlist`}function sn(e){let t=e[0]?.trim();if(!t)return!1;let n=M.win32.basename(t).toLowerCase();return n===`cmd.exe`||n===`cmd`}function cn(e){return e===`off`||e===`on-miss`||e===`always`?e:`on-miss`}function ln(e){return ne({overrides:e,blockPathOverrides:!0})}function un(e,t){return e.length<=t?{text:e,truncated:!1}:{text:`... (truncated) ${e.slice(e.length-t)}`,truncated:!0}}function dn(e){if(!e)return null;let t=e.match(/\b(\d{3,5})\b/);if(!t?.[1])return null;let n=Number.parseInt(t[1],10);return!Number.isFinite(n)||n<=0?null:n}function fn(){if(process.platform!==`win32`)return null;if(J!==void 0)return J;try{let e=$e(`cmd.exe`,[`/d`,`/s`,`/c`,`chcp`],{windowsHide:!0,encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}),t=dn(`${e.stdout??``}\n${e.stderr??``}`);J=t===null?null:tn[t]??null}catch{J=null}return J}function pn(e){let t=e.buffer.toString(`utf8`);if((e.platform??process.platform)!==`win32`)return t;let n=e.windowsEncoding??fn();if(!n||n.toLowerCase()===`utf-8`)return t;try{return new TextDecoder(n).decode(e.buffer)}catch{return t}}function mn(e){let t=e.socket?.path?.trim();return{...e,socket:t?{path:t}:void 0}}function hn(e,t){if(!t.exists)return;if(!t.hash)throw Error(`INVALID_REQUEST: exec approvals base hash unavailable; reload and retry`);let n=typeof e.baseHash==`string`?e.baseHash.trim():``;if(!n)throw Error(`INVALID_REQUEST: exec approvals base hash required; reload and retry`);if(n!==t.hash)throw Error(`INVALID_REQUEST: exec approvals changed; reload and retry`)}async function gn(e,t,n,r){return await new Promise(i=>{let a=[],o=[],s=0,c=!1,l=!1,u=!1,d=fn(),f=Qe(e[0],e.slice(1),{cwd:t,env:n,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),p=(e,t)=>{if(s>=en){c=!0;return}let n=en-s,r=e.length>n?e.subarray(0,n):e;s+=r.length,t===`stdout`?a.push(r):o.push(r),e.length>n&&(c=!0)};f.stdout?.on(`data`,e=>p(e,`stdout`)),f.stderr?.on(`data`,e=>p(e,`stderr`));let m;r&&r>0&&(m=setTimeout(()=>{l=!0;try{f.kill(`SIGKILL`)}catch{}},r));let h=(e,t)=>{if(u)return;u=!0,m&&clearTimeout(m);let n=pn({buffer:Buffer.concat(a),windowsEncoding:d}),r=pn({buffer:Buffer.concat(o),windowsEncoding:d});i({exitCode:e,timedOut:l,success:e===0&&!l&&!t,stdout:n,stderr:r,error:t??null,truncated:c})};f.on(`error`,e=>{h(void 0,e.message)}),f.on(`exit`,e=>{h(e===null?void 0:e,null)})})}function _n(e){return(e?.PATH??e?.Path??process.env.PATH??process.env.Path??`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`).split(M.delimiter).filter(Boolean)}function vn(e,t){if(e.includes(`/`)||e.includes(`\\`))return null;let n=process.platform===`win32`?(process.env.PATHEXT??process.env.PathExt??`.EXE;.CMD;.BAT;.COM`).split(`;`).map(e=>e.toLowerCase()):[``];for(let r of _n(t))for(let t of n){let n=M.join(r,e+t);if(j.existsSync(n))return n}return null}async function yn(e,t){let n=e.bins.map(e=>e.trim()).filter(Boolean),r={};for(let e of n){let n=vn(e,t);n&&(r[e]=n)}return{bins:r}}function bn(e){if(!e.output)return e;let t=e.output.trim();if(!t)return e;let{text:n}=un(t,2e4);return{...e,output:n}}async function xn(e){let t=[e.result.stdout,e.result.stderr,e.result.error].filter(Boolean).join(`
|
|
2
2
|
`);await Dn(e.client,`exec.finished`,bn({sessionKey:e.sessionKey,runId:e.runId,host:`node`,command:e.commandText,exitCode:e.result.exitCode??void 0,timedOut:e.result.timedOut,success:e.result.success,output:t,suppressNotifyOnExit:e.suppressNotifyOnExit}))}async function Sn(e){let{approvals:t,request:n}=e;return await rt({socketPath:t.socketPath,token:t.token,request:n})}async function Y(e,t,n){await $(e,t,{ok:!0,payloadJSON:JSON.stringify(n)})}async function Cn(e,t,n){await $(e,t,{ok:!0,payloadJSON:n})}async function X(e,t,n,r){await $(e,t,{ok:!1,error:{code:n,message:r}})}async function Z(e,t,n){await X(e,t,`INVALID_REQUEST`,String(n))}async function wn(e,t,n){let r=String(e.command??``);if(r===`system.execApprovals.get`){try{Se();let n=O();await Y(t,e,{path:n.path,exists:n.exists,hash:n.hash,file:mn(n.file)})}catch(n){let r=String(n);await X(t,e,r.toLowerCase().includes(`timed out`)?`TIMEOUT`:`INVALID_REQUEST`,r)}return}if(r===`system.execApprovals.set`){try{let n=Q(e.paramsJSON);if(!n.file||typeof n.file!=`object`)throw Error(`INVALID_REQUEST: exec approvals file required`);Se();let r=O();hn(n,r),he(be({normalized:ge(n.file),current:r.file}));let i=O();await Y(t,e,{path:i.path,exists:i.exists,hash:i.hash,file:mn(i.file)})}catch(n){await Z(t,e,n)}return}if(r===`system.which`){try{let n=Q(e.paramsJSON);if(!Array.isArray(n.bins))throw Error(`INVALID_REQUEST: bins required`);await Y(t,e,await yn(n,ln(void 0)))}catch(n){await Z(t,e,n)}return}if(r===`browser.proxy`){try{await Cn(t,e,await gt(e.paramsJSON))}catch(n){await Z(t,e,n)}return}if(r===`system.run.prepare`){try{let n=Gt(Q(e.paramsJSON));if(!n.ok){await X(t,e,`INVALID_REQUEST`,n.message);return}await Y(t,e,{plan:n.plan})}catch(n){await Z(t,e,n)}return}if(r!==`system.run`){await X(t,e,`UNAVAILABLE`,`command not supported`);return}let i;try{i=Q(e.paramsJSON)}catch(n){await Z(t,e,n);return}if(!Array.isArray(i.command)||i.command.length===0){await X(t,e,`INVALID_REQUEST`,`command required`);return}await $t({client:t,params:i,skillBins:n,execHostEnforced:nn,execHostFallbackAllowed:rn,resolveExecSecurity:on,resolveExecAsk:cn,isCmdExeInvocation:sn,sanitizeEnv:ln,runCommand:gn,runViaMacAppExecHost:Sn,sendNodeEvent:Dn,buildExecEventPayload:bn,sendInvokeResult:async n=>{await $(t,e,n)},sendExecFinishedEvent:async({sessionKey:e,runId:n,commandText:r,result:i})=>{await xn({client:t,sessionKey:e,runId:n,commandText:r,result:i})},preferMacAppExecHost:an})}function Q(e){if(!e)throw Error(`INVALID_REQUEST: paramsJSON required`);return JSON.parse(e)}function Tn(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``,r=typeof t.nodeId==`string`?t.nodeId.trim():``,i=typeof t.command==`string`?t.command.trim():``;return!n||!r||!i?null:{id:n,nodeId:r,command:i,paramsJSON:typeof t.paramsJSON==`string`?t.paramsJSON:t.params===void 0?null:JSON.stringify(t.params),timeoutMs:typeof t.timeoutMs==`number`?t.timeoutMs:null,idempotencyKey:typeof t.idempotencyKey==`string`?t.idempotencyKey:null}}async function $(e,t,n){try{await e.request(`node.invoke.result`,En(t,n))}catch{}}function En(e,t){let n={id:e.id,nodeId:e.nodeId,ok:t.ok};return t.payload!==void 0&&(n.payload=t.payload),typeof t.payloadJSON==`string`&&(n.payloadJSON=t.payloadJSON),t.error&&(n.error=t.error),n}async function Dn(e,t,n){try{await e.request(`node.event`,{event:t,payloadJSON:n?JSON.stringify(n):null})}catch{}}const On=`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`;function kn(e,t){return e.includes(`/`)||e.includes(`\\`)?null:m(e,t)??null}function An(e,t){let n=[],r=new Set;for(let i of e){let e=i.trim();if(!e)continue;let a=kn(e,t);if(!a)continue;let o=`${e}\u0000${a}`;r.has(o)||(r.add(o),n.push({name:e,resolvedPath:a}))}return n.toSorted((e,t)=>e.name.localeCompare(t.name)||e.resolvedPath.localeCompare(t.resolvedPath))}var jn=class{constructor(e,t){this.bins=[],this.lastRefresh=0,this.ttlMs=9e4,this.fetch=e,this.pathEnv=t}async current(e=!1){return(e||Date.now()-this.lastRefresh>this.ttlMs)&&await this.refresh(),this.bins}async refresh(){try{this.bins=An(await this.fetch(),this.pathEnv),this.lastRefresh=Date.now()}catch{this.lastRefresh||(this.bins=[])}}};function Mn(){je({pathEnv:process.env.PATH??``});let e=process.env.PATH??``;return e.trim()?e:(process.env.PATH=On,On)}async function Nn(e){return await fe({config:(e.config.gateway?.mode===`remote`?`remote`:`local`)==`local`?Pn(e.config):e.config,env:e.env,includeLegacyEnv:!1,localTokenPrecedence:`env-first`,localPasswordPrecedence:`env-first`,remoteTokenPrecedence:`env-first`,remotePasswordPrecedence:`env-first`})}function Pn(e){if(!e.gateway?.remote?.token&&!e.gateway?.remote?.password)return e;let t=structuredClone(e);return t.gateway?.remote&&(t.gateway.remote.token=void 0,t.gateway.remote.password=void 0),t}async function Fn(e){let t=await nt(),n=e.nodeId?.trim()||t.nodeId;n!==t.nodeId&&(t.nodeId=n);let r=e.displayName?.trim()||t.displayName||await oe();t.displayName=r;let i={host:e.gatewayHost,port:e.gatewayPort,tls:e.gatewayTls??b().gateway?.tls?.enabled??!1,tlsFingerprint:e.gatewayTlsFingerprint};t.gateway=i,await tt(t);let a=b(),o=y(a.browser,a),c=a.nodeHost?.browserProxy?.enabled!==!1&&o.enabled,{token:u,password:d}=await Nn({config:a,env:process.env}),f=i.host??`127.0.0.1`,p=i.port??18789,m=`${i.tls?`wss`:`ws`}://${f}:${p}`,h=Mn();console.log(`node host PATH: ${h}`);let g=new ae({url:m,token:u||void 0,password:d||void 0,instanceId:n,clientName:l.NODE_HOST,clientDisplayName:r,clientVersion:s,platform:process.platform,mode:C.NODE,role:`node`,scopes:[],caps:[`system`,...c?[`browser`]:[]],commands:[...Ye,...Xe,...c?[Ze]:[]],pathEnv:h,permissions:void 0,deviceIdentity:ie(),tlsFingerprint:i.tlsFingerprint,onEvent:e=>{if(e.event!==`node.invoke.request`)return;let t=Tn(e.payload);t&&wn(t,g,_)},onConnectError:e=>{console.error(`node host gateway connect failed: ${e.message}`)},onClose:(e,t)=>{console.error(`node host gateway closed (${e}): ${t}`)}}),_=new jn(async()=>{let e=await g.request(`skills.bins`,{});return Array.isArray(e?.bins)?e.bins.map(e=>String(e)):[]},h);g.start(),await new Promise(()=>{})}async function In(e){let{devMode:t,nodePath:n}=await Ne({env:e.env,runtime:e.runtime,devMode:e.devMode,nodePath:e.nodePath}),{programArguments:r,workingDirectory:i}=await Pe({host:e.host,port:e.port,tls:e.tls,tlsFingerprint:e.tlsFingerprint,nodeId:e.nodeId,displayName:e.displayName,dev:t,runtime:e.runtime,nodePath:n});await Fe({env:e.env,runtime:e.runtime,programArguments:r,warn:e.warn,title:`Node daemon runtime`});let a=Me({env:e.env});return{programArguments:r,workingDirectory:i,environment:a,description:ke({version:a.OPENCLAW_SERVICE_VERSION})}}const Ln=Le;function Rn(e){return Ie(e)}function zn(){return Ke({installCommand:T(`openclaw node install`),startCommand:T(`openclaw node start`),launchAgentPlistPath:`~/Library/LaunchAgents/${Oe()}.plist`,systemdServiceName:De(),windowsTaskName:Ae()})}function Bn(e=process.env){return Ge({env:e,systemdServiceName:De(),windowsTaskName:Ae()})}function Vn(e,t){let n=e.host?.trim()||t?.gateway?.host||`127.0.0.1`,r=Je(e.port);return e.port!==void 0&&r===null?{host:n,port:null}:{host:n,port:r??t?.gateway?.port??18789}}async function Hn(t){let n=!!t.json,{stdout:r,warnings:a,emit:o,fail:s}=Ve({action:`install`,json:n});if(e(process.env)){s(`Nix mode detected; service install is disabled.`);return}let c=await I(),{host:l,port:u}=Vn(t,c);if(!Number.isFinite(u??NaN)||(u??0)<=0){s(`Invalid port`);return}let d=t.runtime?String(t.runtime):Ln;if(!Rn(d)){s(`Invalid --runtime (use "node" or "bun")`);return}let f=A(),p=!1;try{p=await f.isLoaded({env:process.env})}catch(e){s(`Node service check failed: ${String(e)}`);return}if(p&&!t.force){o({ok:!0,result:`already-installed`,message:`Node service already ${f.loadedText}.`,service:k(f,p),warnings:a.length?a:void 0}),n||(i.log(`Node service already ${f.loadedText}.`),i.log(`Reinstall with: ${T(`openclaw node install --force`)}`));return}let m=t.tlsFingerprint?.trim()||c?.gateway?.tlsFingerprint,h=!!t.tls||!!m||!!c?.gateway?.tls,{programArguments:g,workingDirectory:_,environment:v,description:y}=await In({env:process.env,host:l,port:u??18789,tls:h,tlsFingerprint:m||void 0,nodeId:t.nodeId,displayName:t.displayName,runtime:d,warn:e=>{n?a.push(e):i.log(e)}});await Be({serviceNoun:`Node`,service:f,warnings:a,emit:o,fail:s,install:async()=>{await f.install({env:process.env,stdout:r,programArguments:g,workingDirectory:_,environment:v,description:y})}})}async function Un(e={}){return await He({serviceNoun:`Node`,service:A(),opts:e,stopBeforeUninstall:!1,assertNotLoadedAfterUninstall:!1})}async function Wn(e={}){await We({serviceNoun:`Node`,service:A(),renderStartHints:zn,opts:e})}async function Gn(e={}){return await Ue({serviceNoun:`Node`,service:A(),opts:e})}async function Kn(e={}){let t=!!e.json,n=A(),[a,o,s]=await Promise.all([n.isLoaded({env:process.env}).catch(()=>!1),n.readCommand(process.env).catch(()=>null),n.readRuntime(process.env).catch(e=>({status:`unknown`,detail:String(e)}))]),c={service:{...k(n,a),command:o,runtime:s}};if(t){i.log(JSON.stringify(c,null,2));return}let{rich:l,label:u,accent:d,infoText:f,okText:p,warnText:m,errorText:h}=Re(),g=a?p(n.loadedText):m(n.notLoadedText);i.log(`${u(`Service:`)} ${d(n.label)} (${g})`),o?.programArguments?.length&&i.log(`${u(`Command:`)} ${f(o.programArguments.join(` `))}`),o?.sourcePath&&i.log(`${u(`Service file:`)} ${f(o.sourcePath)}`),o?.workingDirectory&&i.log(`${u(`Working dir:`)} ${f(o.workingDirectory)}`);let _=qe(s);if(_){let e=ze(s?.status);i.log(`${u(`Runtime:`)} ${r(l,e,_)}`)}if(!a){i.log(``);for(let e of zn())i.log(`${m(`Start with:`)} ${f(e)}`);return}let v={...process.env,...o?.environment??void 0},y={...v,OPENCLAW_LOG_PREFIX:v.OPENCLAW_LOG_PREFIX??`node`};if(s?.missingUnit){i.error(h(`Service unit not found.`));for(let e of Bn(y))i.error(h(e));return}if(s?.status===`stopped`){i.error(h(`Service is loaded but not running.`));for(let e of Bn(y))i.error(h(e))}}function qn(e,t){return Je(e)??t}function Jn(e){let t=e.command(`node`).description(`Run and manage the headless node host service`).addHelpText(`after`,()=>`\n${n.heading(`Examples:`)}\n${me([[`openclaw node run --host 127.0.0.1 --port 18789`,`Run the node host in the foreground.`],[`openclaw node status`,`Check node host service status.`],[`openclaw node install`,`Install the node host service.`],[`openclaw node restart`,`Restart the installed node host service.`]])}\n\n${n.muted(`Docs:`)} ${pe(`/cli/node`,`docs.openclaw.ai/cli/node`)}\n`);t.command(`run`).description(`Run the headless node host (foreground)`).option(`--host <host>`,`Gateway host`).option(`--port <port>`,`Gateway port`).option(`--tls`,`Use TLS for the gateway connection`,!1).option(`--tls-fingerprint <sha256>`,`Expected TLS certificate fingerprint (sha256)`).option(`--node-id <id>`,`Override node id (clears pairing token)`).option(`--display-name <name>`,`Override node display name`).action(async e=>{let t=await I();await Fn({gatewayHost:e.host?.trim()||t?.gateway?.host||`127.0.0.1`,gatewayPort:qn(e.port,t?.gateway?.port??18789),gatewayTls:!!e.tls||!!e.tlsFingerprint,gatewayTlsFingerprint:e.tlsFingerprint,nodeId:e.nodeId,displayName:e.displayName})}),t.command(`status`).description(`Show node host status`).option(`--json`,`Output JSON`,!1).action(async e=>{await Kn(e)}),t.command(`install`).description(`Install the node host service (launchd/systemd/schtasks)`).option(`--host <host>`,`Gateway host`).option(`--port <port>`,`Gateway port`).option(`--tls`,`Use TLS for the gateway connection`,!1).option(`--tls-fingerprint <sha256>`,`Expected TLS certificate fingerprint (sha256)`).option(`--node-id <id>`,`Override node id (clears pairing token)`).option(`--display-name <name>`,`Override node display name`).option(`--runtime <runtime>`,`Service runtime (node|bun). Default: node`).option(`--force`,`Reinstall/overwrite if already installed`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await Hn(e)}),t.command(`uninstall`).description(`Uninstall the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Un(e)}),t.command(`stop`).description(`Stop the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Gn(e)}),t.command(`restart`).description(`Restart the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Wn(e)})}export{Jn as registerNodeCli};
|
|
3
|
+
//# sourceMappingURL=node-cli-5lYbDZ70.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import{A as e,O as t,p as n}from"./subsystem-BLbY429l.js";import{d as r,g as i}from"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Fs as a,Gs as o,Lr as s,Ns as c,Os as l,Ps as u,Qr as d,Rr as f,Us as p,Vs as m,Ws as h,br as g,jo as _,lr as v,qs as y,ur as b,ws as x,zr as S}from"./auth-profiles-T8DuH3ax.js";import{t as C}from"./command-format-CLxIPuLR.js";import{i as ee}from"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import{s as w}from"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import{S as te,x as ne}from"./env-overrides-DHtB4kK3.js";import{t as re}from"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import{i as T}from"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import{r as ie}from"./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{n as ae,t as oe}from"./with-timeout-c1CzdShT.js";import{n as se,r as ce,t as le}from"./exec-approvals-allowlist-D8mN7nxV.js";import{r as ue,t as de}from"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import{dn as fe,g as pe}from"./call-B8Fb4_oh.js";import{_ as me,g as he,l as ge,v as _e}from"./arg-split-BOqSMBuf.js";import{n as E,o as ve,t as ye}from"./system-run-command-BKfMiqQM.js";import{t as be}from"./connection-auth-B_Uk6Vk8.js";import{t as xe}from"./links-CBnmRP9D.js";import{t as Se}from"./help-format-B4aEI7V9.js";import{_ as Ce,c as we,f as D,h as Te,m as Ee,n as De,o as Oe,p as ke,r as Ae,v as je}from"./exec-approvals-BXO9Cezj.js";import{t as Me}from"./path-env-emdAQejM.js";import"./issue-format-C_lNzrKa.js";import{l as Ne,n as Pe,p as Fe,t as Ie}from"./daemon-install-plan.shared-Dx3DBXCG.js";import"./runtime-guard-DX2Ie4ri.js";import{r as Le,t as Re}from"./daemon-runtime-VcpeBRJV.js";import"./systemd-DbevZh65.js";import"./service-DZ9EbS15.js";import{a as ze,f as Be,g as Ve,h as He,i as Ue,m as We,r as Ge,t as Ke}from"./lifecycle-core-D9KNCvxY.js";import{c as qe,l as Je,u as Ye}from"./systemd-hints-lXpMy-kY.js";import{t as Xe}from"./parse-port-JVwkxcZ8.js";import{i as Ze,n as Qe,t as $e}from"./node-commands-DdkziOTx.js";import{t as O}from"./node-service-C0bl7jcZ.js";import{spawn as et,spawnSync as tt}from"node:child_process";import k from"node:path";import A from"node:fs";import j from"node:fs/promises";import M from"node:crypto";function nt(){return k.join(i(),`node.json`)}function N(e){let t={version:1,nodeId:``,token:e?.token,displayName:e?.displayName,gateway:e?.gateway};return e?.version===1&&typeof e.nodeId==`string`&&(t.nodeId=e.nodeId.trim()),t.nodeId||=M.randomUUID(),t}async function P(){let e=nt();try{let t=await j.readFile(e,`utf8`);return N(JSON.parse(t))}catch{return null}}async function rt(e){await g(nt(),e,{mode:384})}async function it(){let e=N(await P());return await rt(e),e}async function at(e){let{socketPath:t,token:n,request:r}=e;if(!t||!n)return null;let i=e.timeoutMs??2e4,a=JSON.stringify(r),o=M.randomBytes(16).toString(`hex`),s=Date.now(),c=M.createHmac(`sha256`,n).update(`${o}:${s}:${a}`).digest(`hex`);return await je({socketPath:t,payload:JSON.stringify({type:`exec`,id:M.randomUUID(),nonce:o,ts:s,hmac:c,requestJson:a}),timeoutMs:i,accept:e=>{let t=e;if(t?.type===`exec-res`)return t.ok===!0&&t.payload?{ok:!0,payload:t.payload}:t.ok===!1&&t.error?{ok:!1,error:t.error}:null}})}const ot=10*1024*1024;function st(e){return Array.isArray(e)?e.map(e=>e.trim()).filter(Boolean):[]}function ct(){let e=_().nodeHost?.browserProxy,t=st(e?.allowProfiles);return{enabled:e?.enabled!==!1,allowProfiles:t}}let F=null;async function lt(){return F||(F=(async()=>{let e=_();if(!d(e.browser,e).enabled||!await S())throw Error(`browser control disabled`)})(),F)}function I(e){let{allowProfiles:t,profile:n}=e;return t.length?n?t.includes(n.trim()):!1:!0}function ut(e){let t=new Set,n=typeof e==`object`&&e?e:null;if(!n)return[];typeof n.path==`string`&&n.path.trim()&&t.add(n.path.trim()),typeof n.imagePath==`string`&&n.imagePath.trim()&&t.add(n.imagePath.trim());let r=n.download;if(r&&typeof r==`object`){let e=r.path;typeof e==`string`&&e.trim()&&t.add(e.trim())}return[...t]}async function dt(e){let t=await j.stat(e).catch(()=>null);if(!t||!t.isFile())return null;if(t.size>ot)throw Error(`browser proxy file exceeds ${Math.round(ot/(1024*1024))}MB`);let n=await j.readFile(e),r=await ie({buffer:n,filePath:e});return{path:e,base64:n.toString(`base64`),mimeType:r}}function ft(e){if(!e)throw Error(`INVALID_REQUEST: paramsJSON required`);return JSON.parse(e)}function pt(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(1,Math.floor(e)):2e4}function mt(e){return String(e).includes(`browser proxy request timed out`)}function ht(e){return e===`/act`||e===`/navigate`||e===`/pdf`||e===`/screenshot`||e===`/snapshot`}async function gt(e){let t=e.profile?{profile:e.profile}:{};try{let n=await oe(n=>e.dispatcher.dispatch({method:`GET`,path:`/`,query:t,signal:n}),750,`browser proxy status`);if(n.status>=400||!n.body||typeof n.body!=`object`)return null;let r=n.body;return{running:r.running,cdpHttp:r.cdpHttp,cdpReady:r.cdpReady,cdpUrl:r.cdpUrl}}catch{return null}}function _t(e){let t=[`browser proxy timed out for ${e.method} ${e.path} after ${e.timeoutMs}ms`,e.wsBacked?`ws-backed browser action`:`browser action`];if(e.profile&&t.push(`profile=${e.profile}`),e.status){let n=[`running=${String(e.status.running)}`,`cdpHttp=${String(e.status.cdpHttp)}`,`cdpReady=${String(e.status.cdpReady)}`];typeof e.status.cdpUrl==`string`&&e.status.cdpUrl.trim()&&n.push(`cdpUrl=${e.status.cdpUrl}`),t.push(`status(${n.join(`, `)})`)}return t.join(`; `)}async function vt(e){let t=ft(e),n=typeof t.path==`string`?t.path.trim():``;if(!n)throw Error(`INVALID_REQUEST: path required`);let r=ct();if(!r.enabled)throw Error(`UNAVAILABLE: node browser proxy disabled`);await lt();let i=_(),a=d(i.browser,i),o=typeof t.profile==`string`?t.profile.trim():``,c=r.allowProfiles;if(c.length>0){if(n!==`/profiles`){if(!I({allowProfiles:c,profile:o||a.defaultProfile}))throw Error(`INVALID_REQUEST: browser profile not allowed`)}else if(o&&!I({allowProfiles:c,profile:o}))throw Error(`INVALID_REQUEST: browser profile not allowed`)}let l=typeof t.method==`string`?t.method.toUpperCase():`GET`,u=n.startsWith(`/`)?n:`/${n}`,p=t.body,m=pt(t.timeoutMs),h={};o&&(h.profile=o);let g=t.query??{};for(let[e,t]of Object.entries(g))t!=null&&(h[e]=typeof t==`string`?t:String(t));let v=s(f()),y;try{y=await oe(e=>v.dispatch({method:l===`DELETE`?`DELETE`:l===`POST`?`POST`:`GET`,path:u,query:h,body:p,signal:e}),m,`browser proxy request`)}catch(e){if(!mt(e))throw e;let t=o||a.defaultProfile,n=await gt({dispatcher:v,profile:u===`/profiles`?void 0:t});throw Error(_t({method:l,path:u,profile:u===`/profiles`?void 0:t||void 0,timeoutMs:m,wsBacked:ht(u),status:n}),{cause:e})}if(y.status>=400){let e=y.body&&typeof y.body==`object`&&`error`in y.body?String(y.body.error):`HTTP ${y.status}`;throw Error(e)}let b=y.body;if(c.length>0&&u===`/profiles`){let e=typeof b==`object`&&b?b:{};e.profiles=(Array.isArray(e.profiles)?e.profiles:[]).filter(e=>{if(!e||typeof e!=`object`)return!1;let t=e.name;return typeof t==`string`&&c.includes(t)})}let x,S=ut(b);if(S.length>0){let e=await Promise.all(S.map(async e=>{try{let t=await dt(e);if(!t)throw Error(`file not found`);return t}catch(t){throw Error(`browser proxy file read failed for ${e}: ${String(t)}`,{cause:t})}}));e.length>0&&(x=e)}let C=x?{result:b,files:x}:{result:b};return JSON.stringify(C)}function yt(e){return e===`allow-once`||e===`allow-always`?e:null}function bt(e){return e?.windowsShellWrapperBlocked?`SYSTEM_RUN_DENIED: allowlist miss (Windows shell wrappers like cmd.exe /c require approval; approve once/always or run with --ask on-miss|always)`:e?.shellWrapperBlocked?`SYSTEM_RUN_DENIED: allowlist miss (shell wrappers like sh/bash/zsh -c require approval; approve once/always or run with --ask on-miss|always)`:`SYSTEM_RUN_DENIED: allowlist miss`}function xt(e){let t=e.security===`allowlist`&&e.shellWrapperInvocation,n=t&&e.isWindows&&e.cmdInvocation,r=t?!1:e.analysisOk,i=t?!1:e.allowlistSatisfied,a=e.approvalDecision!==null||e.approved===!0;if(e.security===`deny`)return{allowed:!1,eventReason:`security=deny`,errorMessage:`SYSTEM_RUN_DISABLED: security=deny`,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:!1,approvalDecision:e.approvalDecision,approvedByAsk:a};let o=Ee({ask:e.ask,security:e.security,analysisOk:r,allowlistSatisfied:i});return o&&!a?{allowed:!1,eventReason:`approval-required`,errorMessage:`SYSTEM_RUN_DENIED: approval required`,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}:e.security===`allowlist`&&(!r||!i)&&!a?{allowed:!1,eventReason:`allowlist-miss`,errorMessage:bt({shellWrapperBlocked:t,windowsShellWrapperBlocked:n}),analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}:{allowed:!0,analysisOk:r,allowlistSatisfied:i,shellWrapperBlocked:t,windowsShellWrapperBlocked:n,requiresAsk:o,approvalDecision:e.approvalDecision,approvedByAsk:a}}function St(e){if(e.shellCommand){let t=se({command:e.shellCommand,allowlist:e.approvals.allowlist,safeBins:e.safeBins,safeBinProfiles:e.safeBinProfiles,cwd:e.cwd,env:e.env,trustedSafeBinDirs:e.trustedSafeBinDirs,skillBins:e.skillBins,autoAllowSkills:e.autoAllowSkills,platform:process.platform});return{analysisOk:t.analysisOk,allowlistMatches:t.allowlistMatches,allowlistSatisfied:e.security===`allowlist`&&t.analysisOk?t.allowlistSatisfied:!1,segments:t.segments}}let t=x({argv:e.argv,cwd:e.cwd,env:e.env}),n=le({analysis:t,allowlist:e.approvals.allowlist,safeBins:e.safeBins,safeBinProfiles:e.safeBinProfiles,cwd:e.cwd,trustedSafeBinDirs:e.trustedSafeBinDirs,skillBins:e.skillBins,autoAllowSkills:e.autoAllowSkills});return{analysisOk:t.ok,allowlistMatches:n.allowlistMatches,allowlistSatisfied:e.security===`allowlist`&&t.ok?n.allowlistSatisfied:!1,segments:t.segments}}function Ct(e){if(e.security!==`allowlist`||e.policy.approvedByAsk||e.shellCommand||!e.policy.analysisOk||!e.policy.allowlistSatisfied||e.segments.length!==1)return;let t=l(e.segments[0]);return t&&t.length>0?t:null}function wt(e){let t=e.plannedAllowlistArgv??e.argv;return e.security===`allowlist`&&e.isWindows&&!e.policy.approvedByAsk&&e.shellCommand&&e.policy.analysisOk&&e.policy.allowlistSatisfied&&e.segments.length===1&&e.segments[0]?.argv.length>0&&(t=e.segments[0].argv),t}function Tt(e){if(!e.truncated)return;let t=`... (truncated)`;e.stderr.trim().length>0?e.stderr=`${e.stderr}\n${t}`:e.stdout=`${e.stdout}\n${t}`}const Et=[/^(?:node|nodejs)$/,/^perl$/,/^php$/,/^python(?:\d+(?:\.\d+)*)?$/,/^ruby$/],Dt=new Set([`esno`,`jiti`,`ts-node`,`ts-node-esm`,`tsx`,`vite-node`]),Ot=new Set([`add`,`audit`,`completions`,`create`,`exec`,`help`,`init`,`install`,`link`,`outdated`,`patch`,`pm`,`publish`,`remove`,`repl`,`run`,`test`,`unlink`,`update`,`upgrade`,`x`]),L=new Set(`--backend.--bunfig.--conditions.--config.--console-depth.--cwd.--define.--elide-lines.--env-file.--extension-order.--filter.--hot.--inspect.--inspect-brk.--inspect-wait.--install.--jsx-factory.--jsx-fragment.--jsx-import-source.--loader.--origin.--port.--preload.--smol.--tsconfig-override.-c.-e.-p.-r`.split(`.`)),kt=new Set([`--cached-only`,`--cert`,`--config`,`--env-file`,`--ext`,`--harmony-import-attributes`,`--import-map`,`--inspect`,`--inspect-brk`,`--inspect-wait`,`--location`,`--log-level`,`--lock`,`--node-modules-dir`,`--no-check`,`--preload`,`--reload`,`--seed`,`--strace-ops`,`--unstable-bare-node-builtins`,`--v8-flags`,`--watch`,`--watch-exclude`,`-L`]);function R(e){return typeof e==`string`&&e.trim()||null}function At(e){let t=k.resolve(e),n=[],r=t;for(;;){n.unshift(r);let e=k.dirname(r);if(e===r)return n;r=e}}function jt(e){try{return A.accessSync(e,A.constants.W_OK),!0}catch{return!1}}function Mt(e){for(let t of At(e))try{if(!A.lstatSync(t).isSymbolicLink())continue;if(jt(k.dirname(t)))return!0}catch{return!0}return!1}function Nt(e){return e.shellCommand===null?(e.wrapperChain?.length??0)===0:!1}function z(e){return M.createHash(`sha256`).update(A.readFileSync(e)).digest(`hex`)}function Pt(e){return e.startsWith(`.`)||e.startsWith(`/`)||e.startsWith(`\\`)||e.includes(`/`)||e.includes(`\\`)||k.extname(e).length>0}function B(e,t){if(!e)return!1;try{return A.statSync(k.resolve(t??process.cwd(),e)).isFile()}catch{return!1}}function V(e){let t=e,n=0;for(;;){let e=p(t);if(e.kind===`unwrapped`){n+=t.length-e.argv.length,t=e.argv;continue}let r=h(t);if(r.kind===`unwrapped`){n+=t.length-r.argv.length,t=r.argv;continue}return{argv:t,baseIndex:n}}}function Ft(e){if(y(e,o,{allowCombinedC:!0}).valueTokenIndex!==null)return null;let t=!1;for(let n=1;n<e.length;n+=1){let r=e[n]?.trim()??``;if(r){if(r===`-`)return null;if(!t&&r===`--`){t=!0;continue}if(!t&&r===`-s`)return null;if(!(!t&&r.startsWith(`-`)))return n}}return null}function H(e){let t=!1;for(let n=e.startIndex;n<e.argv.length;n+=1){let r=e.argv[n]?.trim()??``;if(r){if(t)return B(r,e.cwd)?n:null;if(r===`--`){t=!0;continue}if(r===`-`)return null;if(r.startsWith(`-`)){!r.includes(`=`)&&e.optionsWithValue?.has(r)&&(n+=1);continue}return B(r,e.cwd)?n:null}}return null}function It(e){let t=!1;for(let n=e.startIndex;n<e.argv.length;n+=1){let r=e.argv[n]?.trim()??``;if(r){if(t)return n;if(r===`--`){t=!0;continue}if(r===`-`)return null;if(r.startsWith(`-`)){!r.includes(`=`)&&e.optionsWithValue?.has(r)&&(n+=1);continue}return n}}return null}function Lt(e){let t=!1,n=[];for(let r=e.startIndex;r<e.argv.length;r+=1){let i=e.argv[r]?.trim()??``;if(i){if(t){B(i,e.cwd)&&n.push(r);continue}if(i===`--`){t=!0;continue}if(i===`-`)return[];i.startsWith(`-`)||B(i,e.cwd)&&n.push(r)}}return n}function Rt(e){let t=Lt({argv:e.argv,startIndex:1,cwd:e.cwd});return t.length===1?t[0]:null}function zt(e){let t=It({argv:e.argv,startIndex:1,optionsWithValue:L});if(t===null)return null;let n=e.argv[t]?.trim()??``;return n===`run`?H({argv:e.argv,startIndex:t+1,cwd:e.cwd,optionsWithValue:L}):Ot.has(n)||!Pt(n)?null:t}function Bt(e){return(e.argv[1]?.trim()??``)===`run`?H({argv:e.argv,startIndex:2,cwd:e.cwd,optionsWithValue:kt}):null}function U(e){return Dt.has(e)||de(e)}function Vt(e,t){let n=V(e),r=m(n.argv[0]??``);if(!r)return null;if(a.has(r)){let e=Ft(n.argv);return e===null?null:n.baseIndex+e}if(Et.some(e=>e.test(r))){let e=n.argv[1]?.trim()??``;if(e&&e!==`-`&&!e.startsWith(`-`))return n.baseIndex+1}if(r===`bun`){let e=zt({argv:n.argv,cwd:t});if(e!==null)return n.baseIndex+e}if(r===`deno`){let e=Bt({argv:n.argv,cwd:t});if(e!==null)return n.baseIndex+e}if(!U(r))return null;let i=Rt({argv:n.argv,cwd:t});return i===null?null:n.baseIndex+i}function Ht(e){if(e.shellCommand!==null)return!1;let t=m(V(e.argv).argv[0]??``);return!t||a.has(t)?!1:U(t)}function W(e){let t=Vt(e.argv,e.cwd);if(t===null)return Ht({argv:e.argv,shellCommand:e.shellCommand})?{ok:!1,message:`SYSTEM_RUN_DENIED: approval cannot safely bind this interpreter/runtime command`}:{ok:!0,snapshot:null};let n=e.argv[t]?.trim();if(!n)return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a stable script operand`};let r=k.resolve(e.cwd??process.cwd(),n),i,a;try{i=A.realpathSync(r),a=A.statSync(i)}catch{return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires an existing script operand`}}return a.isFile()?{ok:!0,snapshot:{argvIndex:t,path:i,sha256:z(i)}}:{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a file script operand`}}function G(e){let t=k.resolve(e),n,r,i,a;try{n=A.lstatSync(t),r=A.statSync(t),i=A.realpathSync(t),a=A.statSync(i)}catch{return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires an existing canonical cwd`}}return r.isDirectory()?Mt(t)?{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires canonical cwd (no symlink path components)`}:n.isSymbolicLink()?{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires canonical cwd (no symlink cwd)`}:!w(r,n)||!w(r,a)||!w(n,a)?{ok:!1,message:`SYSTEM_RUN_DENIED: approval cwd identity mismatch`}:{ok:!0,snapshot:{cwd:i,stat:r}}:{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires cwd to be a directory`}}function Ut(e){let t=G(e.snapshot.cwd);return t.ok?w(e.snapshot.stat,t.snapshot.stat):!1}function Wt(e){let t=e.argv[e.snapshot.argvIndex]?.trim();if(!t)return!1;let n=k.resolve(e.cwd??process.cwd(),t),r;try{r=A.realpathSync(n)}catch{return!1}if(r!==e.snapshot.path)return!1;try{return z(r)===e.snapshot.sha256}catch{return!1}}function Gt(e){if(!e.approvedByAsk)return{ok:!0,argv:e.argv,argvChanged:!1,cwd:e.cwd,approvedCwdSnapshot:void 0};let t=e.cwd,n;if(t){let e=G(t);if(!e.ok)return e;t=e.snapshot.cwd,n=e.snapshot}if(e.argv.length===0)return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let r=c(e.argv,t);if(!Nt({shellCommand:e.shellCommand,wrapperChain:r?.wrapperChain}))return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let i=r?.resolvedRealPath??r?.resolvedPath;if(!i)return{ok:!1,message:`SYSTEM_RUN_DENIED: approval requires a stable executable path`};if(i===e.argv[0])return{ok:!0,argv:e.argv,argvChanged:!1,cwd:t,approvedCwdSnapshot:n};let a=[...e.argv];return a[0]=i,{ok:!0,argv:a,argvChanged:!0,cwd:t,approvedCwdSnapshot:n}}function Kt(e){let t=E({command:e.command,rawCommand:e.rawCommand});if(!t.ok)return{ok:!1,message:t.message};if(t.argv.length===0)return{ok:!1,message:`command required`};let n=Gt({approvedByAsk:!0,argv:t.argv,shellCommand:t.shellPayload,cwd:R(e.cwd)??void 0});if(!n.ok)return{ok:!1,message:n.message};let r=ye(n.argv),i=t.previewText?.trim()&&t.previewText.trim()!==r?t.previewText.trim():null,a=W({argv:n.argv,cwd:n.cwd,shellCommand:t.shellPayload});return a.ok?{ok:!0,plan:{argv:n.argv,cwd:n.cwd??null,commandText:r,commandPreview:i,agentId:R(e.agentId),sessionKey:R(e.sessionKey),mutableFileOperand:a.snapshot??void 0}}:{ok:!1,message:a.message}}const K=new Set,qt=`SYSTEM_RUN_DENIED: approval cwd changed before execution`;function Jt(e){K.has(e)||(K.add(e),T(e))}function Yt(e){switch(e){case`security=deny`:case`approval-required`:case`allowlist-miss`:case`execution-plan-miss`:case`companion-unavailable`:case`permission:screenRecording`:return e;default:return`approval-required`}}async function q(e,t,n){await e.sendNodeEvent(e.client,`exec.denied`,e.buildExecEventPayload({sessionKey:t.sessionKey,runId:t.runId,host:`node`,command:t.commandText,reason:n.reason,suppressNotifyOnExit:t.suppressNotifyOnExit})),await e.sendInvokeResult({ok:!1,error:{code:`UNAVAILABLE`,message:n.message}})}async function Xt(e){let t=E({command:e.params.command,rawCommand:e.params.rawCommand});if(!t.ok)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:t.message}}),null;if(t.argv.length===0)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:`command required`}}),null;let n=t.shellPayload,r=t.commandText,i=e.params.systemRunPlan===void 0?null:ve(e.params.systemRunPlan);if(e.params.systemRunPlan!==void 0&&!i)return await e.sendInvokeResult({ok:!1,error:{code:`INVALID_REQUEST`,message:`systemRunPlan invalid`}}),null;let a=e.params.agentId?.trim()||void 0,o=e.params.sessionKey?.trim()||`node`,s=e.params.runId?.trim()||M.randomUUID(),c=e.params.suppressNotifyOnExit===!0,l=te({overrides:e.params.env??void 0,shellWrapper:n!==null});return{argv:t.argv,shellPayload:n,commandText:r,commandPreview:t.previewText,approvalPlan:i,agentId:a,sessionKey:o,runId:s,execution:{sessionKey:o,runId:s,commandText:r,suppressNotifyOnExit:c},approvalDecision:yt(e.params.approvalDecision),envOverrides:l,env:e.sanitizeEnv(l),cwd:e.params.cwd?.trim()||void 0,timeoutMs:e.params.timeoutMs??void 0,needsScreenRecording:e.params.needsScreenRecording===!0,approved:e.params.approved===!0,suppressNotifyOnExit:c}}async function Zt(e,t){let n=_(),r=t.agentId?ee(n,t.agentId)?.tools?.exec:void 0,i=e.resolveExecSecurity(r?.security??n.tools?.exec?.security),a=e.resolveExecAsk(r?.ask??n.tools?.exec?.ask),o=Te(t.agentId,{security:i,ask:a}),s=o.agent.security,c=o.agent.ask,l=o.agent.autoAllowSkills,{safeBins:u,safeBinProfiles:d,trustedSafeBinDirs:f}=ue({global:n.tools?.exec,local:r,onWarning:Jt}),p=l?await e.skillBins.current():[],{analysisOk:m,allowlistMatches:h,allowlistSatisfied:g,segments:v}=St({shellCommand:t.shellPayload,argv:t.argv,approvals:o,security:s,safeBins:u,safeBinProfiles:d,trustedSafeBinDirs:f,cwd:t.cwd,env:t.env,skillBins:p,autoAllowSkills:l}),y=process.platform===`win32`,b=t.shellPayload?e.isCmdExeInvocation(v[0]?.argv??[]):e.isCmdExeInvocation(t.argv),x=xt({security:s,ask:c,analysisOk:m,allowlistSatisfied:g,approvalDecision:t.approvalDecision,approved:t.approved,isWindows:y,cmdInvocation:b,shellWrapperInvocation:t.shellPayload!==null});if(m=x.analysisOk,g=x.allowlistSatisfied,!x.allowed)return await q(e,t.execution,{reason:x.eventReason,message:x.errorMessage}),null;if(s===`allowlist`&&t.shellPayload&&!x.approvedByAsk)return await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval required`}),null;let S=Gt({approvedByAsk:x.approvedByAsk,argv:t.argv,shellCommand:t.shellPayload,cwd:t.cwd});if(!S.ok)return await q(e,t.execution,{reason:`approval-required`,message:S.message}),null;let C=x.approvedByAsk?S.approvedCwdSnapshot:void 0;if(x.approvedByAsk&&S.cwd&&!C)return await q(e,t.execution,{reason:`approval-required`,message:qt}),null;let w=Ct({security:s,shellCommand:t.shellPayload,policy:x,segments:v});return w===null?(await q(e,t.execution,{reason:`execution-plan-miss`,message:`SYSTEM_RUN_DENIED: execution plan mismatch`}),null):{...t,argv:S.argv,cwd:S.cwd,approvals:o,security:s,policy:x,allowlistMatches:h,analysisOk:m,allowlistSatisfied:g,segments:v,plannedAllowlistArgv:w??void 0,isWindows:y,approvedCwdSnapshot:C}}async function Qt(e,t){if(t.approvedCwdSnapshot&&!Ut({snapshot:t.approvedCwdSnapshot})){T(`security: system.run approval cwd drift blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:qt});return}let n=t.approvalPlan?W({argv:t.argv,cwd:t.cwd,shellCommand:t.shellPayload}):null;if(n&&!n.ok){T(`security: system.run approval script binding blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:n.message});return}if(n?.snapshot&&!t.approvalPlan?.mutableFileOperand){T(`security: system.run approval script binding missing (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval missing script operand binding`});return}if(t.approvalPlan?.mutableFileOperand&&!Wt({snapshot:t.approvalPlan.mutableFileOperand,argv:t.argv,cwd:t.cwd})){T(`security: system.run approval script drift blocked (runId=${t.runId})`),await q(e,t.execution,{reason:`approval-required`,message:`SYSTEM_RUN_DENIED: approval script operand changed before execution`});return}if(e.preferMacAppExecHost){let n={command:t.plannedAllowlistArgv??t.argv,rawCommand:t.commandText||null,cwd:t.cwd??null,env:t.envOverrides??null,timeoutMs:t.timeoutMs??null,needsScreenRecording:t.needsScreenRecording,agentId:t.agentId??null,sessionKey:t.sessionKey??null,approvalDecision:t.approvalDecision},r=await e.runViaMacAppExecHost({approvals:t.approvals,request:n});if(!r){if(e.execHostEnforced||!e.execHostFallbackAllowed){await q(e,t.execution,{reason:`companion-unavailable`,message:`COMPANION_APP_UNAVAILABLE: macOS app exec host unreachable`});return}}else if(r.ok){let n=r.payload;await e.sendExecFinishedEvent({sessionKey:t.sessionKey,runId:t.runId,commandText:t.commandText,result:n,suppressNotifyOnExit:t.suppressNotifyOnExit}),await e.sendInvokeResult({ok:!0,payloadJSON:JSON.stringify(n)});return}else{await q(e,t.execution,{reason:Yt(r.error.reason),message:r.error.message});return}}if(t.policy.approvalDecision===`allow-always`&&t.security===`allowlist`&&t.policy.analysisOk){let e=ce({segments:t.segments,cwd:t.cwd,env:t.env,platform:process.platform});for(let n of e)n&&De(t.approvals.file,t.agentId,n)}if(t.allowlistMatches.length>0){let e=new Set;for(let n of t.allowlistMatches)!n?.pattern||e.has(n.pattern)||(e.add(n.pattern),ke(t.approvals.file,t.agentId,n,t.commandText,t.segments[0]?.resolution?.resolvedPath))}if(t.needsScreenRecording){await q(e,t.execution,{reason:`permission:screenRecording`,message:`PERMISSION_MISSING: screenRecording`});return}let r=wt({plannedAllowlistArgv:t.plannedAllowlistArgv,argv:t.argv,security:t.security,isWindows:t.isWindows,policy:t.policy,shellCommand:t.shellPayload,segments:t.segments}),i=await e.runCommand(r,t.cwd,t.env,t.timeoutMs);Tt(i),await e.sendExecFinishedEvent({sessionKey:t.sessionKey,runId:t.runId,commandText:t.commandText,result:i,suppressNotifyOnExit:t.suppressNotifyOnExit}),await e.sendInvokeResult({ok:!0,payloadJSON:JSON.stringify({exitCode:i.exitCode,timedOut:i.timedOut,success:i.success,stdout:i.stdout,stderr:i.stderr,error:i.error??null})})}async function $t(e){let t=await Xt(e);if(!t)return;let n=await Zt(e,t);n&&await Qt(e,n)}const en=2e5,tn={65001:`utf-8`,54936:`gb18030`,936:`gbk`,950:`big5`,932:`shift_jis`,949:`euc-kr`,1252:`windows-1252`};let J;const nn=process.env.OPENCLAW_NODE_EXEC_HOST?.trim().toLowerCase()===`app`,rn=process.env.OPENCLAW_NODE_EXEC_FALLBACK?.trim().toLowerCase()!==`0`,an=process.platform===`darwin`&&nn;function on(e){return e===`deny`||e===`allowlist`||e===`full`?e:`allowlist`}function sn(e){let t=e[0]?.trim();if(!t)return!1;let n=k.win32.basename(t).toLowerCase();return n===`cmd.exe`||n===`cmd`}function cn(e){return e===`off`||e===`on-miss`||e===`always`?e:`on-miss`}function ln(e){return ne({overrides:e,blockPathOverrides:!0})}function un(e,t){return e.length<=t?{text:e,truncated:!1}:{text:`... (truncated) ${e.slice(e.length-t)}`,truncated:!0}}function dn(e){if(!e)return null;let t=e.match(/\b(\d{3,5})\b/);if(!t?.[1])return null;let n=Number.parseInt(t[1],10);return!Number.isFinite(n)||n<=0?null:n}function fn(){if(process.platform!==`win32`)return null;if(J!==void 0)return J;try{let e=tt(`cmd.exe`,[`/d`,`/s`,`/c`,`chcp`],{windowsHide:!0,encoding:`utf8`,stdio:[`ignore`,`pipe`,`pipe`]}),t=dn(`${e.stdout??``}\n${e.stderr??``}`);J=t===null?null:tn[t]??null}catch{J=null}return J}function pn(e){let t=e.buffer.toString(`utf8`);if((e.platform??process.platform)!==`win32`)return t;let n=e.windowsEncoding??fn();if(!n||n.toLowerCase()===`utf-8`)return t;try{return new TextDecoder(n).decode(e.buffer)}catch{return t}}function mn(e){let t=e.socket?.path?.trim();return{...e,socket:t?{path:t}:void 0}}function hn(e,t){if(!t.exists)return;if(!t.hash)throw Error(`INVALID_REQUEST: exec approvals base hash unavailable; reload and retry`);let n=typeof e.baseHash==`string`?e.baseHash.trim():``;if(!n)throw Error(`INVALID_REQUEST: exec approvals base hash required; reload and retry`);if(n!==t.hash)throw Error(`INVALID_REQUEST: exec approvals changed; reload and retry`)}async function gn(e,t,n,r){return await new Promise(i=>{let a=[],o=[],s=0,c=!1,l=!1,u=!1,d=fn(),f=et(e[0],e.slice(1),{cwd:t,env:n,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),p=(e,t)=>{if(s>=en){c=!0;return}let n=en-s,r=e.length>n?e.subarray(0,n):e;s+=r.length,t===`stdout`?a.push(r):o.push(r),e.length>n&&(c=!0)};f.stdout?.on(`data`,e=>p(e,`stdout`)),f.stderr?.on(`data`,e=>p(e,`stderr`));let m;r&&r>0&&(m=setTimeout(()=>{l=!0;try{f.kill(`SIGKILL`)}catch{}},r));let h=(e,t)=>{if(u)return;u=!0,m&&clearTimeout(m);let n=pn({buffer:Buffer.concat(a),windowsEncoding:d}),r=pn({buffer:Buffer.concat(o),windowsEncoding:d});i({exitCode:e,timedOut:l,success:e===0&&!l&&!t,stdout:n,stderr:r,error:t??null,truncated:c})};f.on(`error`,e=>{h(void 0,e.message)}),f.on(`exit`,e=>{h(e===null?void 0:e,null)})})}function _n(e){return(e?.PATH??e?.Path??process.env.PATH??process.env.Path??`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`).split(k.delimiter).filter(Boolean)}function vn(e,t){if(e.includes(`/`)||e.includes(`\\`))return null;let n=process.platform===`win32`?(process.env.PATHEXT??process.env.PathExt??`.EXE;.CMD;.BAT;.COM`).split(`;`).map(e=>e.toLowerCase()):[``];for(let r of _n(t))for(let t of n){let n=k.join(r,e+t);if(A.existsSync(n))return n}return null}async function yn(e,t){let n=e.bins.map(e=>e.trim()).filter(Boolean),r={};for(let e of n){let n=vn(e,t);n&&(r[e]=n)}return{bins:r}}function bn(e){if(!e.output)return e;let t=e.output.trim();if(!t)return e;let{text:n}=un(t,2e4);return{...e,output:n}}async function xn(e){let t=[e.result.stdout,e.result.stderr,e.result.error].filter(Boolean).join(`
|
|
2
2
|
`);await Dn(e.client,`exec.finished`,bn({sessionKey:e.sessionKey,runId:e.runId,host:`node`,command:e.commandText,exitCode:e.result.exitCode??void 0,timedOut:e.result.timedOut,success:e.result.success,output:t,suppressNotifyOnExit:e.suppressNotifyOnExit}))}async function Sn(e){let{approvals:t,request:n}=e;return await at({socketPath:t.socketPath,token:t.token,request:n})}async function Y(e,t,n){await $(e,t,{ok:!0,payloadJSON:JSON.stringify(n)})}async function Cn(e,t,n){await $(e,t,{ok:!0,payloadJSON:n})}async function X(e,t,n,r){await $(e,t,{ok:!1,error:{code:n,message:r}})}async function Z(e,t,n){await X(e,t,`INVALID_REQUEST`,String(n))}async function wn(e,t,n){let r=String(e.command??``);if(r===`system.execApprovals.get`){try{Ae();let n=D();await Y(t,e,{path:n.path,exists:n.exists,hash:n.hash,file:mn(n.file)})}catch(n){let r=String(n);await X(t,e,r.toLowerCase().includes(`timed out`)?`TIMEOUT`:`INVALID_REQUEST`,r)}return}if(r===`system.execApprovals.set`){try{let n=Q(e.paramsJSON);if(!n.file||typeof n.file!=`object`)throw Error(`INVALID_REQUEST: exec approvals file required`);Ae();let r=D();hn(n,r),Ce(Oe({normalized:we(n.file),current:r.file}));let i=D();await Y(t,e,{path:i.path,exists:i.exists,hash:i.hash,file:mn(i.file)})}catch(n){await Z(t,e,n)}return}if(r===`system.which`){try{let n=Q(e.paramsJSON);if(!Array.isArray(n.bins))throw Error(`INVALID_REQUEST: bins required`);await Y(t,e,await yn(n,ln(void 0)))}catch(n){await Z(t,e,n)}return}if(r===`browser.proxy`){try{await Cn(t,e,await vt(e.paramsJSON))}catch(n){await Z(t,e,n)}return}if(r===`system.run.prepare`){try{let n=Kt(Q(e.paramsJSON));if(!n.ok){await X(t,e,`INVALID_REQUEST`,n.message);return}await Y(t,e,{plan:n.plan})}catch(n){await Z(t,e,n)}return}if(r!==`system.run`){await X(t,e,`UNAVAILABLE`,`command not supported`);return}let i;try{i=Q(e.paramsJSON)}catch(n){await Z(t,e,n);return}if(!Array.isArray(i.command)||i.command.length===0){await X(t,e,`INVALID_REQUEST`,`command required`);return}await $t({client:t,params:i,skillBins:n,execHostEnforced:nn,execHostFallbackAllowed:rn,resolveExecSecurity:on,resolveExecAsk:cn,isCmdExeInvocation:sn,sanitizeEnv:ln,runCommand:gn,runViaMacAppExecHost:Sn,sendNodeEvent:Dn,buildExecEventPayload:bn,sendInvokeResult:async n=>{await $(t,e,n)},sendExecFinishedEvent:async({sessionKey:e,runId:n,commandText:r,result:i})=>{await xn({client:t,sessionKey:e,runId:n,commandText:r,result:i})},preferMacAppExecHost:an})}function Q(e){if(!e)throw Error(`INVALID_REQUEST: paramsJSON required`);return JSON.parse(e)}function Tn(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``,r=typeof t.nodeId==`string`?t.nodeId.trim():``,i=typeof t.command==`string`?t.command.trim():``;return!n||!r||!i?null:{id:n,nodeId:r,command:i,paramsJSON:typeof t.paramsJSON==`string`?t.paramsJSON:t.params===void 0?null:JSON.stringify(t.params),timeoutMs:typeof t.timeoutMs==`number`?t.timeoutMs:null,idempotencyKey:typeof t.idempotencyKey==`string`?t.idempotencyKey:null}}async function $(e,t,n){try{await e.request(`node.invoke.result`,En(t,n))}catch{}}function En(e,t){let n={id:e.id,nodeId:e.nodeId,ok:t.ok};return t.payload!==void 0&&(n.payload=t.payload),typeof t.payloadJSON==`string`&&(n.payloadJSON=t.payloadJSON),t.error&&(n.error=t.error),n}async function Dn(e,t,n){try{await e.request(`node.event`,{event:t,payloadJSON:n?JSON.stringify(n):null})}catch{}}const On=`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`;function kn(e,t){return e.includes(`/`)||e.includes(`\\`)?null:u(e,t)??null}function An(e,t){let n=[],r=new Set;for(let i of e){let e=i.trim();if(!e)continue;let a=kn(e,t);if(!a)continue;let o=`${e}\u0000${a}`;r.has(o)||(r.add(o),n.push({name:e,resolvedPath:a}))}return n.toSorted((e,t)=>e.name.localeCompare(t.name)||e.resolvedPath.localeCompare(t.resolvedPath))}var jn=class{constructor(e,t){this.bins=[],this.lastRefresh=0,this.ttlMs=9e4,this.fetch=e,this.pathEnv=t}async current(e=!1){return(e||Date.now()-this.lastRefresh>this.ttlMs)&&await this.refresh(),this.bins}async refresh(){try{this.bins=An(await this.fetch(),this.pathEnv),this.lastRefresh=Date.now()}catch{this.lastRefresh||(this.bins=[])}}};function Mn(){Me({pathEnv:process.env.PATH??``});let e=process.env.PATH??``;return e.trim()?e:(process.env.PATH=On,On)}async function Nn(e){return await be({config:(e.config.gateway?.mode===`remote`?`remote`:`local`)==`local`?Pn(e.config):e.config,env:e.env,includeLegacyEnv:!1,localTokenPrecedence:`env-first`,localPasswordPrecedence:`env-first`,remoteTokenPrecedence:`env-first`,remotePasswordPrecedence:`env-first`})}function Pn(e){if(!e.gateway?.remote?.token&&!e.gateway?.remote?.password)return e;let t=structuredClone(e);return t.gateway?.remote&&(t.gateway.remote.token=void 0,t.gateway.remote.password=void 0),t}async function Fn(e){let t=await it(),n=e.nodeId?.trim()||t.nodeId;n!==t.nodeId&&(t.nodeId=n);let r=e.displayName?.trim()||t.displayName||await ae();t.displayName=r;let i={host:e.gatewayHost,port:e.gatewayPort,tls:e.gatewayTls??_().gateway?.tls?.enabled??!1,tlsFingerprint:e.gatewayTlsFingerprint};t.gateway=i,await rt(t);let a=_(),o=d(a.browser,a),s=a.nodeHost?.browserProxy?.enabled!==!1&&o.enabled,{token:c,password:l}=await Nn({config:a,env:process.env}),u=i.host??`127.0.0.1`,f=i.port??18789,p=`${i.tls?`wss`:`ws`}://${u}:${f}`,m=Mn();console.log(`node host PATH: ${m}`);let h=new pe({url:p,token:c||void 0,password:l||void 0,instanceId:n,clientName:b.NODE_HOST,clientDisplayName:r,clientVersion:re,platform:process.platform,mode:v.NODE,role:`node`,scopes:[],caps:[`system`,...s?[`browser`]:[]],commands:[...Ze,...Qe,...s?[$e]:[]],pathEnv:m,permissions:void 0,deviceIdentity:fe(),tlsFingerprint:i.tlsFingerprint,onEvent:e=>{if(e.event!==`node.invoke.request`)return;let t=Tn(e.payload);t&&wn(t,h,g)},onConnectError:e=>{console.error(`node host gateway connect failed: ${e.message}`)},onClose:(e,t)=>{console.error(`node host gateway closed (${e}): ${t}`)}}),g=new jn(async()=>{let e=await h.request(`skills.bins`,{});return Array.isArray(e?.bins)?e.bins.map(e=>String(e)):[]},m);h.start(),await new Promise(()=>{})}async function In(e){let{devMode:t,nodePath:n}=await Pe({env:e.env,runtime:e.runtime,devMode:e.devMode,nodePath:e.nodePath}),{programArguments:r,workingDirectory:i}=await Fe({host:e.host,port:e.port,tls:e.tls,tlsFingerprint:e.tlsFingerprint,nodeId:e.nodeId,displayName:e.displayName,dev:t,runtime:e.runtime,nodePath:n});await Ie({env:e.env,runtime:e.runtime,programArguments:r,warn:e.warn,title:`Node daemon runtime`});let a=Ne({env:e.env});return{programArguments:r,workingDirectory:i,environment:a,description:ge({version:a.OPENCLAW_SERVICE_VERSION})}}const Ln=Re;function Rn(e){return Le(e)}function zn(){return Je({installCommand:C(`openclaw node install`),startCommand:C(`openclaw node start`),launchAgentPlistPath:`~/Library/LaunchAgents/${he()}.plist`,systemdServiceName:me(),windowsTaskName:_e()})}function Bn(e=process.env){return qe({env:e,systemdServiceName:me(),windowsTaskName:_e()})}function Vn(e,t){let n=e.host?.trim()||t?.gateway?.host||`127.0.0.1`,r=Xe(e.port);return e.port!==void 0&&r===null?{host:n,port:null}:{host:n,port:r??t?.gateway?.port??18789}}async function Hn(e){let t=!!e.json,{stdout:i,warnings:a,emit:o,fail:s}=He({action:`install`,json:t});if(r(process.env)){s(`Nix mode detected; service install is disabled.`);return}let c=await P(),{host:l,port:u}=Vn(e,c);if(!Number.isFinite(u??NaN)||(u??0)<=0){s(`Invalid port`);return}let d=e.runtime?String(e.runtime):Ln;if(!Rn(d)){s(`Invalid --runtime (use "node" or "bun")`);return}let f=O(),p=!1;try{p=await f.isLoaded({env:process.env})}catch(e){s(`Node service check failed: ${String(e)}`);return}if(p&&!e.force){o({ok:!0,result:`already-installed`,message:`Node service already ${f.loadedText}.`,service:We(f,p),warnings:a.length?a:void 0}),t||(n.log(`Node service already ${f.loadedText}.`),n.log(`Reinstall with: ${C(`openclaw node install --force`)}`));return}let m=e.tlsFingerprint?.trim()||c?.gateway?.tlsFingerprint,h=!!e.tls||!!m||!!c?.gateway?.tls,{programArguments:g,workingDirectory:_,environment:v,description:y}=await In({env:process.env,host:l,port:u??18789,tls:h,tlsFingerprint:m||void 0,nodeId:e.nodeId,displayName:e.displayName,runtime:d,warn:e=>{t?a.push(e):n.log(e)}});await Ve({serviceNoun:`Node`,service:f,warnings:a,emit:o,fail:s,install:async()=>{await f.install({env:process.env,stdout:i,programArguments:g,workingDirectory:_,environment:v,description:y})}})}async function Un(e={}){return await Ue({serviceNoun:`Node`,service:O(),opts:e,stopBeforeUninstall:!1,assertNotLoadedAfterUninstall:!1})}async function Wn(e={}){await Ke({serviceNoun:`Node`,service:O(),renderStartHints:zn,opts:e})}async function Gn(e={}){return await Ge({serviceNoun:`Node`,service:O(),opts:e})}async function Kn(e={}){let r=!!e.json,i=O(),[a,o,s]=await Promise.all([i.isLoaded({env:process.env}).catch(()=>!1),i.readCommand(process.env).catch(()=>null),i.readRuntime(process.env).catch(e=>({status:`unknown`,detail:String(e)}))]),c={service:{...We(i,a),command:o,runtime:s}};if(r){n.log(JSON.stringify(c,null,2));return}let{rich:l,label:u,accent:d,infoText:f,okText:p,warnText:m,errorText:h}=ze(),g=a?p(i.loadedText):m(i.notLoadedText);n.log(`${u(`Service:`)} ${d(i.label)} (${g})`),o?.programArguments?.length&&n.log(`${u(`Command:`)} ${f(o.programArguments.join(` `))}`),o?.sourcePath&&n.log(`${u(`Service file:`)} ${f(o.sourcePath)}`),o?.workingDirectory&&n.log(`${u(`Working dir:`)} ${f(o.workingDirectory)}`);let _=Ye(s);if(_){let e=Be(s?.status);n.log(`${u(`Runtime:`)} ${t(l,e,_)}`)}if(!a){n.log(``);for(let e of zn())n.log(`${m(`Start with:`)} ${f(e)}`);return}let v={...process.env,...o?.environment??void 0},y={...v,OPENCLAW_LOG_PREFIX:v.OPENCLAW_LOG_PREFIX??`node`};if(s?.missingUnit){n.error(h(`Service unit not found.`));for(let e of Bn(y))n.error(h(e));return}if(s?.status===`stopped`){n.error(h(`Service is loaded but not running.`));for(let e of Bn(y))n.error(h(e))}}function qn(e,t){return Xe(e)??t}function Jn(t){let n=t.command(`node`).description(`Run and manage the headless node host service`).addHelpText(`after`,()=>`\n${e.heading(`Examples:`)}\n${Se([[`openclaw node run --host 127.0.0.1 --port 18789`,`Run the node host in the foreground.`],[`openclaw node status`,`Check node host service status.`],[`openclaw node install`,`Install the node host service.`],[`openclaw node restart`,`Restart the installed node host service.`]])}\n\n${e.muted(`Docs:`)} ${xe(`/cli/node`,`docs.openclaw.ai/cli/node`)}\n`);n.command(`run`).description(`Run the headless node host (foreground)`).option(`--host <host>`,`Gateway host`).option(`--port <port>`,`Gateway port`).option(`--tls`,`Use TLS for the gateway connection`,!1).option(`--tls-fingerprint <sha256>`,`Expected TLS certificate fingerprint (sha256)`).option(`--node-id <id>`,`Override node id (clears pairing token)`).option(`--display-name <name>`,`Override node display name`).action(async e=>{let t=await P();await Fn({gatewayHost:e.host?.trim()||t?.gateway?.host||`127.0.0.1`,gatewayPort:qn(e.port,t?.gateway?.port??18789),gatewayTls:!!e.tls||!!e.tlsFingerprint,gatewayTlsFingerprint:e.tlsFingerprint,nodeId:e.nodeId,displayName:e.displayName})}),n.command(`status`).description(`Show node host status`).option(`--json`,`Output JSON`,!1).action(async e=>{await Kn(e)}),n.command(`install`).description(`Install the node host service (launchd/systemd/schtasks)`).option(`--host <host>`,`Gateway host`).option(`--port <port>`,`Gateway port`).option(`--tls`,`Use TLS for the gateway connection`,!1).option(`--tls-fingerprint <sha256>`,`Expected TLS certificate fingerprint (sha256)`).option(`--node-id <id>`,`Override node id (clears pairing token)`).option(`--display-name <name>`,`Override node display name`).option(`--runtime <runtime>`,`Service runtime (node|bun). Default: node`).option(`--force`,`Reinstall/overwrite if already installed`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await Hn(e)}),n.command(`uninstall`).description(`Uninstall the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Un(e)}),n.command(`stop`).description(`Stop the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Gn(e)}),n.command(`restart`).description(`Restart the node host service (launchd/systemd/schtasks)`).option(`--json`,`Output JSON`,!1).action(async e=>{await Wn(e)})}export{Jn as registerNodeCli};
|
|
3
|
+
//# sourceMappingURL=node-cli-Br04Qmqo.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{sn as e}from"./call-B8Fb4_oh.js";import{i as t,r as n,t as r}from"./node-commands-DdkziOTx.js";const i=[`canvas.present`,`canvas.hide`,`canvas.navigate`,`canvas.eval`,`canvas.snapshot`,`canvas.a2ui.push`,`canvas.a2ui.pushJSONL`,`canvas.a2ui.reset`],a=[`camera.list`],o=[`camera.snap`,`camera.clip`],s=[`screen.record`],c=[`location.get`],l=[...[`notifications.list`],`notifications.actions`],u=[`device.info`,`device.status`],d=[...u,`device.permissions`,`device.health`],f=[`contacts.search`],p=[`contacts.add`],m=[`calendar.events`],h=[`calendar.add`],g=[`reminders.list`],_=[`reminders.add`],v=[`photos.latest`],y=[`motion.activity`,`motion.pedometer`],b=[`sms.send`],x=[n],S=[...t,n,r],C=[...i,...a,...c,n],w=[...o,...s,...p,...h,..._,...b],T={ios:[...i,...a,...c,...u,...f,...m,...g,...v,...y,...x],android:[...i,...a,...c,...l,n,...d,...f,...m,...g,...v,...y],macos:[...i,...a,...c,...u,...f,...m,...g,...v,...y,...S],linux:[...S],windows:[...S],unknown:[...C]},E=[{id:`ios`,prefixes:[`ios`]},{id:`android`,prefixes:[`android`]},{id:`macos`,prefixes:[`mac`,`darwin`]},{id:`windows`,prefixes:[`win`]},{id:`linux`,prefixes:[`linux`]}],D=[{id:`ios`,tokens:[`iphone`,`ipad`,`ios`]},{id:`android`,tokens:[`android`]},{id:`macos`,tokens:[`mac`]},{id:`windows`,tokens:[`windows`]},{id:`linux`,tokens:[`linux`]}];function O(e){for(let t of E)if(t.prefixes.some(t=>e.startsWith(t)))return t.id}function k(e){for(let t of D)if(t.tokens.some(t=>e.includes(t)))return t.id}function A(t,n){return O(e(t))||(k(e(n))??`unknown`)}function j(e,t){let n=T[A(t?.platform,t?.deviceFamily)]??T.unknown,r=e.gateway?.nodes?.allowCommands??[],i=new Set(e.gateway?.nodes?.denyCommands??[]),a=new Set([...n,...r].map(e=>e.trim()).filter(Boolean));for(let e of i){let t=e.trim();t&&a.delete(t)}return a}function M(e){let t=e.command.trim();if(!t)return{ok:!1,reason:`command required`};if(!e.allowlist.has(t))return{ok:!1,reason:`command not allowlisted`};if(Array.isArray(e.declaredCommands)&&e.declaredCommands.length>0){if(!e.declaredCommands.includes(t))return{ok:!1,reason:`command not declared by node`}}else return{ok:!1,reason:`node did not declare commands`};return{ok:!0}}export{M as n,j as r,w as t};
|
|
2
|
+
//# sourceMappingURL=node-command-policy-CejeQemH.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{sn as e}from"./call-CqoMqP5b.js";import{i as t,r as n,t as r}from"./node-commands-8GBOiktk.js";const i=[`canvas.present`,`canvas.hide`,`canvas.navigate`,`canvas.eval`,`canvas.snapshot`,`canvas.a2ui.push`,`canvas.a2ui.pushJSONL`,`canvas.a2ui.reset`],a=[`camera.list`],o=[`camera.snap`,`camera.clip`],s=[`screen.record`],c=[`location.get`],l=[...[`notifications.list`],`notifications.actions`],u=[`device.info`,`device.status`],d=[...u,`device.permissions`,`device.health`],f=[`contacts.search`],p=[`contacts.add`],m=[`calendar.events`],h=[`calendar.add`],g=[`reminders.list`],_=[`reminders.add`],v=[`photos.latest`],y=[`motion.activity`,`motion.pedometer`],b=[`sms.send`],x=[n],S=[...t,n,r],C=[...i,...a,...c,n],w=[...o,...s,...p,...h,..._,...b],T={ios:[...i,...a,...c,...u,...f,...m,...g,...v,...y,...x],android:[...i,...a,...c,...l,n,...d,...f,...m,...g,...v,...y],macos:[...i,...a,...c,...u,...f,...m,...g,...v,...y,...S],linux:[...S],windows:[...S],unknown:[...C]},E=[{id:`ios`,prefixes:[`ios`]},{id:`android`,prefixes:[`android`]},{id:`macos`,prefixes:[`mac`,`darwin`]},{id:`windows`,prefixes:[`win`]},{id:`linux`,prefixes:[`linux`]}],D=[{id:`ios`,tokens:[`iphone`,`ipad`,`ios`]},{id:`android`,tokens:[`android`]},{id:`macos`,tokens:[`mac`]},{id:`windows`,tokens:[`windows`]},{id:`linux`,tokens:[`linux`]}];function O(e){for(let t of E)if(t.prefixes.some(t=>e.startsWith(t)))return t.id}function k(e){for(let t of D)if(t.tokens.some(t=>e.includes(t)))return t.id}function A(t,n){return O(e(t))||(k(e(n))??`unknown`)}function j(e,t){let n=T[A(t?.platform,t?.deviceFamily)]??T.unknown,r=e.gateway?.nodes?.allowCommands??[],i=new Set(e.gateway?.nodes?.denyCommands??[]),a=new Set([...n,...r].map(e=>e.trim()).filter(Boolean));for(let e of i){let t=e.trim();t&&a.delete(t)}return a}function M(e){let t=e.command.trim();if(!t)return{ok:!1,reason:`command required`};if(!e.allowlist.has(t))return{ok:!1,reason:`command not allowlisted`};if(Array.isArray(e.declaredCommands)&&e.declaredCommands.length>0){if(!e.declaredCommands.includes(t))return{ok:!1,reason:`command not declared by node`}}else return{ok:!1,reason:`node did not declare commands`};return{ok:!0}}export{M as n,j as r,w as t};
|
|
2
|
+
//# sourceMappingURL=node-command-policy-CqXhdnHh.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
function e(e){return typeof e==`object`&&e?e:{}}function t(t){let n=e(t);return{pending:Array.isArray(n.pending)?n.pending:[],paired:Array.isArray(n.paired)?n.paired:[]}}function n(t){let n=e(t);return Array.isArray(n.nodes)?n.nodes:[]}function r(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+/,``).replace(/-+$/,``)}function i(e){return e.map(e=>e.displayName||e.remoteIp||e.nodeId).filter(Boolean).join(`, `)}function a(e,t){let n=t.trim();if(!n)return[];let i=r(n);return e.filter(e=>{if(e.nodeId===n||typeof e.remoteIp==`string`&&e.remoteIp===n)return!0;let t=typeof e.displayName==`string`?e.displayName:``;return!!(t&&r(t)===i||n.length>=6&&e.nodeId.startsWith(n))})}function o(e,t){let n=t.trim();if(!n)throw Error(`node required`);let r=a(e,n);if(r.length===1)return r[0]?.nodeId??``;if(r.length===0){let t=i(e);throw Error(`unknown node: ${n}${t?` (known: ${t})`:``}`)}let o=r.filter(e=>e.connected===!0),s=o.length>0?o:r;if(s.length===1)return s[0]?.nodeId??``;throw Error(`ambiguous node: ${n} (matches: ${s.map(e=>e.displayName||e.remoteIp||e.nodeId).join(`, `)})`)}function s(e,t,n={}){let r=String(t??``).trim();if(!r){if(n.allowDefault===!0&&n.pickDefaultNode){let t=n.pickDefaultNode(e);if(t)return t.nodeId}throw Error(`node required`)}return o(e,r)}function c(e,t,n={}){let r=s(e,t,n);return e.find(e=>e.nodeId===r)??{nodeId:r}}export{t as i,s as n,n as r,c as t};
|
|
2
|
+
//# sourceMappingURL=node-resolve-B3BJbmQX.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
function e(e){return typeof e==`object`&&e?e:{}}function t(t){let n=e(t);return{pending:Array.isArray(n.pending)?n.pending:[],paired:Array.isArray(n.paired)?n.paired:[]}}function n(t){let n=e(t);return Array.isArray(n.nodes)?n.nodes:[]}function r(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+/,``).replace(/-+$/,``)}function i(e){return e.map(e=>e.displayName||e.remoteIp||e.nodeId).filter(Boolean).join(`, `)}function a(e,t){let n=t.trim();if(!n)return[];let i=r(n);return e.filter(e=>{if(e.nodeId===n||typeof e.remoteIp==`string`&&e.remoteIp===n)return!0;let t=typeof e.displayName==`string`?e.displayName:``;return!!(t&&r(t)===i||n.length>=6&&e.nodeId.startsWith(n))})}function o(e,t){let n=t.trim();if(!n)throw Error(`node required`);let r=a(e,n);if(r.length===1)return r[0]?.nodeId??``;if(r.length===0){let t=i(e);throw Error(`unknown node: ${n}${t?` (known: ${t})`:``}`)}let o=r.filter(e=>e.connected===!0),s=o.length>0?o:r;if(s.length===1)return s[0]?.nodeId??``;throw Error(`ambiguous node: ${n} (matches: ${s.map(e=>e.displayName||e.remoteIp||e.nodeId).join(`, `)})`)}function s(e,t,n={}){let r=String(t??``).trim();if(!r){if(n.allowDefault===!0&&n.pickDefaultNode){let t=n.pickDefaultNode(e);if(t)return t.nodeId}throw Error(`node required`)}return o(e,r)}function c(e,t,n={}){let r=s(e,t,n);return e.find(e=>e.nodeId===r)??{nodeId:r}}export{t as i,s as n,n as r,c as t};
|
|
2
|
+
//# sourceMappingURL=node-resolve-DLZf3-1V.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{_ as e,c as t,g as n,o as r,s as i,v as a}from"./arg-split-DE5RqDHq.js";import{n as o}from"./service-BtB9epJk.js";function s(o){return{...o,OPENCLAW_LAUNCHD_LABEL:n(),OPENCLAW_SYSTEMD_UNIT:e(),OPENCLAW_WINDOWS_TASK_NAME:a(),OPENCLAW_TASK_SCRIPT_NAME:t,OPENCLAW_LOG_PREFIX:`node`,OPENCLAW_SERVICE_MARKER:i,OPENCLAW_SERVICE_KIND:r}}function c(o){return{...o,env:s(o.env),environment:{...o.environment,OPENCLAW_LAUNCHD_LABEL:n(),OPENCLAW_SYSTEMD_UNIT:e(),OPENCLAW_WINDOWS_TASK_NAME:a(),OPENCLAW_TASK_SCRIPT_NAME:t,OPENCLAW_LOG_PREFIX:`node`,OPENCLAW_SERVICE_MARKER:i,OPENCLAW_SERVICE_KIND:r}}}function l(){let e=o();return{...e,install:async t=>e.install(c(t)),uninstall:async t=>e.uninstall({...t,env:s(t.env)}),stop:async t=>e.stop({...t,env:s(t.env??{})}),restart:async t=>e.restart({...t,env:s(t.env??{})}),isLoaded:async t=>e.isLoaded({env:s(t.env??{})}),readCommand:t=>e.readCommand(s(t)),readRuntime:t=>e.readRuntime(s(t))}}export{l as t};
|
|
2
|
+
//# sourceMappingURL=node-service-BRfrNp8l.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{_ as e,c as t,g as n,o as r,s as i,v as a}from"./arg-split-BOqSMBuf.js";import{n as o}from"./service-DZ9EbS15.js";function s(o){return{...o,OPENCLAW_LAUNCHD_LABEL:n(),OPENCLAW_SYSTEMD_UNIT:e(),OPENCLAW_WINDOWS_TASK_NAME:a(),OPENCLAW_TASK_SCRIPT_NAME:t,OPENCLAW_LOG_PREFIX:`node`,OPENCLAW_SERVICE_MARKER:i,OPENCLAW_SERVICE_KIND:r}}function c(o){return{...o,env:s(o.env),environment:{...o.environment,OPENCLAW_LAUNCHD_LABEL:n(),OPENCLAW_SYSTEMD_UNIT:e(),OPENCLAW_WINDOWS_TASK_NAME:a(),OPENCLAW_TASK_SCRIPT_NAME:t,OPENCLAW_LOG_PREFIX:`node`,OPENCLAW_SERVICE_MARKER:i,OPENCLAW_SERVICE_KIND:r}}}function l(){let e=o();return{...e,install:async t=>e.install(c(t)),uninstall:async t=>e.uninstall({...t,env:s(t.env)}),stop:async t=>e.stop({...t,env:s(t.env??{})}),restart:async t=>e.restart({...t,env:s(t.env??{})}),isLoaded:async t=>e.isLoaded({env:s(t.env??{})}),readCommand:t=>e.readCommand(s(t)),readRuntime:t=>e.readRuntime(s(t))}}export{l as t};
|
|
2
|
+
//# sourceMappingURL=node-service-C0bl7jcZ.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{H as e}from"./subsystem-BLbY429l.js";import{bi as t}from"./auth-profiles-T8DuH3ax.js";import{r as n}from"./command-format-CLxIPuLR.js";import{t as r}from"./fetch-guard-BrTtJw7h.js";import{c as i,l as a,n as o,o as s,t as c}from"./system-run-command-BKfMiqQM.js";import*as l from"node:path";import u from"node:path";import d from"node:fs";import*as f from"node:fs/promises";import{randomUUID as p}from"node:crypto";function m(e){return typeof e==`object`&&e?e:{}}function h(e){return typeof e==`string`?e:void 0}function g(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function _(e){return typeof e==`boolean`?e:void 0}function v(t){let n=t.tmpDir??e();return t.tmpDir||d.mkdirSync(n,{recursive:!0,mode:448}),{tmpDir:n,id:t.id??p(),ext:t.ext.startsWith(`.`)?t.ext:`.${t.ext}`}}const y=250*1024*1024;function b(e){let t=m(e),n=h(t.format),r=h(t.base64),i=h(t.url),a=g(t.width),o=g(t.height);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.snap payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},width:a,height:o}}function x(e){let t=m(e),n=h(t.format),r=h(t.base64),i=h(t.url),a=g(t.durationMs),o=_(t.hasAudio);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.clip payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},durationMs:a,hasAudio:o}}function S(e){let{tmpDir:t,id:r,ext:i}=v({tmpDir:e.tmpDir,id:e.id,ext:e.ext}),a=e.facing?`-${e.facing}`:``,o=n();return l.join(t,`${o}-camera-${e.kind}${a}-${r}${i}`)}async function C(e,n,i){let a=new URL(n);if(a.protocol!==`https:`)throw Error(`writeUrlToFile: only https URLs are allowed, got ${a.protocol}`);let o=t(i.expectedHost);if(!o)throw Error(`writeUrlToFile: expectedHost is required`);if(t(a.hostname)!==o)throw Error(`writeUrlToFile: url host ${a.hostname} must match node host ${i.expectedHost}`);let s={allowPrivateNetwork:!0,allowedHostnames:[o],hostnameAllowlist:[o]},c=async()=>{},l=0;try{let a=await r({url:n,auditContext:`writeUrlToFile`,policy:s});c=a.release;let u=new URL(a.finalUrl);if(u.protocol!==`https:`)throw Error(`writeUrlToFile: redirect resolved to non-https URL ${a.finalUrl}`);if(t(u.hostname)!==o)throw Error(`writeUrlToFile: redirect host ${u.hostname} must match node host ${i.expectedHost}`);let d=a.response;if(!d.ok)throw Error(`failed to download ${n}: ${d.status} ${d.statusText}`);let p=d.headers.get(`content-length`),m=p?Number.parseInt(p,10):void 0;if(typeof m==`number`&&Number.isFinite(m)&&m>y)throw Error(`writeUrlToFile: content-length ${m} exceeds max ${y}`);let h=d.body;if(!h)throw Error(`failed to download ${n}: empty response body`);let g=await f.open(e,`w`),_;try{let e=h.getReader();for(;;){let{done:t,value:n}=await e.read();if(t)break;if(!(!n||n.byteLength===0)){if(l+=n.byteLength,l>y)throw Error(`writeUrlToFile: downloaded ${l} bytes, exceeds max ${y}`);await g.write(n)}}}catch(e){_=e}finally{await g.close()}if(_)throw await f.unlink(e).catch(()=>{}),_}finally{await c()}return{path:e,bytes:l}}async function w(e,t){let n=Buffer.from(t,`base64`);return await f.writeFile(e,n),{path:e,bytes:n.length}}function T(e){let t=e?.trim();if(!t)throw Error(`camera URL payload requires node remoteIp`);return t}async function E(e){if(e.payload.url){await C(e.filePath,e.payload.url,{expectedHost:T(e.expectedHost)});return}if(e.payload.base64){await w(e.filePath,e.payload.base64);return}throw Error(e.invalidPayloadMessage??`invalid camera payload`)}async function D(e){let t=S({kind:`clip`,facing:e.facing,ext:e.payload.format,tmpDir:e.tmpDir,id:e.id});return await E({filePath:t,payload:e.payload,expectedHost:e.expectedHost,invalidPayloadMessage:`invalid camera.clip payload`}),t}function O(e){let t=m(e),n=h(t.format),r=h(t.base64);if(!n||!r)throw Error(`invalid canvas.snapshot payload`);return{format:n,base64:r}}function k(e){let{tmpDir:t,id:r,ext:i}=v(e),a=n();return l.join(t,`${a}-canvas-snapshot-${r}${i}`)}function A(e){if(!Array.isArray(e)||e.length===0)return;let t={};for(let n of e){if(typeof n!=`string`)continue;let e=n.indexOf(`=`);if(e<=0)continue;let r=n.slice(0,e).trim();r&&(t[r]=n.slice(e+1))}return Object.keys(t).length>0?t:void 0}function j(e){let t=m(e),n=h(t.format),r=h(t.base64);if(!n||!r)throw Error(`invalid screen.record payload`);return{format:n,base64:r,durationMs:typeof t.durationMs==`number`?t.durationMs:void 0,fps:typeof t.fps==`number`?t.fps:void 0,screenIndex:typeof t.screenIndex==`number`?t.screenIndex:void 0,hasAudio:typeof t.hasAudio==`boolean`?t.hasAudio:void 0}}function M(e){let{tmpDir:t,id:n,ext:r}=v(e);return l.join(t,`openclaw-screen-record-${n}${r}`)}async function N(e,t){return w(e,t)}function P(e){return typeof e==`string`?e:``}function F(e,t){let n=i(e);return!n||n===t?null:n}function I(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=s(t.plan);if(n)return{plan:n};if(!t.plan||typeof t.plan!=`object`||Array.isArray(t.plan))return null;let r=t.plan,o=a(r.argv),c=i(r.rawCommand)??i(t.commandText)??i(t.cmdText);return o.length===0||!c?null:{plan:{argv:o,cwd:i(r.cwd),commandText:c,commandPreview:i(r.commandPreview),agentId:i(r.agentId),sessionKey:i(r.sessionKey)}}}function L(e){let t=(i(e.host)??``)===`node`?s(e.systemRunPlan):null,n=a(e.commandArgv),r=P(e.command),o=t?t.commandText||c(t.argv):r,l=t?F(t.commandPreview??r,o):null,u=t?{...t,commandPreview:l}:null;return{plan:u,commandArgv:u?.argv??(n.length>0?n:void 0),commandText:o,commandPreview:l,cwd:u?.cwd??i(e.cwd),agentId:u?.agentId??i(e.agentId),sessionKey:u?.sessionKey??i(e.sessionKey)}}function R(e){let t=s(e.plan??null);if(t)return{ok:!0,plan:t,argv:[...t.argv],cwd:t.cwd,agentId:t.agentId,sessionKey:t.sessionKey,commandText:t.commandText};let n=o({command:e.command,rawCommand:e.rawCommand});return n.ok?{ok:!0,plan:null,argv:n.argv,cwd:i(e.cwd),agentId:i(e.agentId),sessionKey:i(e.sessionKey),commandText:n.commandText}:{ok:!1,message:n.message,details:n.details}}function z(e){if(`PATH`in e)return`PATH`;for(let t of Object.keys(e))if(t.toUpperCase()===`PATH`)return t;return`PATH`}function B(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||t.has(e)||(t.add(e),n.push(e))}return n}function V(e,t){if(t.length===0)return e;let n=(e??``).split(u.delimiter).map(e=>e.trim()).filter(Boolean),r=new Set(t);return[...t,...n.filter(e=>!r.has(e))].join(u.delimiter)}function H(e,t,n){if(!Array.isArray(t)||t.length===0)return;let r=z(e);if(n?.requireExisting&&!e[r])return;let i=V(e[r],t);i&&(e[r]=i)}function U(e,t){return String(t??``).trim().toLowerCase().startsWith(`win`)?[`cmd.exe`,`/d`,`/s`,`/c`,e]:[`/bin/sh`,`-lc`,e]}export{b as _,B as a,E as b,R as c,N as d,A as f,x as g,S as h,V as i,j as l,O as m,H as n,I as o,k as p,z as r,L as s,U as t,M as u,w as v,D as y};
|
|
2
|
+
//# sourceMappingURL=node-shell-DyOfwHrh.js.map
|
|
@@ -2,3 +2,4 @@ import{A as e,k as t,p as n}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_x
|
|
|
2
2
|
`))})}),{timeoutMs:6e4}),R(t.command(`clip`).description(`Capture a short video clip from a node camera (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--facing <front|back>`,`Camera facing`,`front`).option(`--device-id <id>`,`Camera device id (from nodes camera list)`).option(`--duration <ms|10s|1m>`,`Duration (default 3000ms; supports ms/s/m, e.g. 10s)`,`3000`).option(`--no-audio`,`Disable audio capture`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 90000)`,`90000`).action(async e=>{await U(`camera clip`,async()=>{let t=await F(e,String(e.node??``)),r=t.nodeId,i=W(String(e.facing??`front`)),a=c(String(e.duration??`3000`)),o=e.audio!==!1,l=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,u=e.deviceId?String(e.deviceId).trim():void 0,d=await I(`node.invoke`,e,B({nodeId:r,command:`camera.clip`,params:{facing:i,durationMs:Number.isFinite(a)?a:void 0,includeAudio:o,format:`mp4`,deviceId:u||void 0},timeoutMs:l})),f=_((typeof d==`object`&&d?d:{}).payload),p=await ne({payload:f,facing:i,expectedHost:t.remoteIp});if(e.json){n.log(JSON.stringify({file:{facing:i,path:p,durationMs:f.durationMs,hasAudio:f.hasAudio}},null,2));return}n.log(`MEDIA:${s(p)}`)})}),{timeoutMs:9e4})}const K=[`beginRendering`,`surfaceUpdate`,`dataModelUpdate`,`deleteSurface`,`createSurface`];function q(e){let t=`main`,n=`root`,r=`text`;return[{surfaceUpdate:{surfaceId:t,components:[{id:n,component:{Column:{children:{explicitList:[r]}}}},{id:r,component:{Text:{text:{literalString:e},usageHint:`body`}}}]}},{beginRendering:{surfaceId:t,root:n}}].map(e=>JSON.stringify(e)).join(`
|
|
3
3
|
`)}function se(e){let t=e.split(/\r?\n/),n=[],r=!1,i=!1,a=0;if(t.forEach((e,t)=>{let o=e.trim();if(!o)return;a+=1;let s;try{s=JSON.parse(o)}catch(e){n.push(`line ${t+1}: ${String(e)}`);return}if(!s||typeof s!=`object`||Array.isArray(s)){n.push(`line ${t+1}: expected JSON object`);return}let c=s,l=K.filter(e=>e in c);if(l.length!==1){n.push(`line ${t+1}: expected exactly one action key (${K.join(`, `)})`);return}l[0]===`createSurface`?i=!0:r=!0}),a===0&&n.push(`no JSONL messages found`),r&&i&&n.push(`mixed A2UI v0.8 and v0.9 messages in one file`),n.length>0)throw Error(`Invalid A2UI JSONL:\n- ${n.join(`
|
|
4
4
|
- `)}`);return{version:i?`v0.9`:`v0.8`,messageCount:a}}async function J(e,t,n){let r=await P(e,String(e.node??``)),i=T(e.invokeTimeout);return await I(`node.invoke`,e,B({nodeId:r,command:t,params:n,timeoutMs:typeof i==`number`?i:void 0}))}function ce(e){let t=e.command(`canvas`).description(`Capture or render canvas content from a paired node`);R(t.command(`snapshot`).description(`Capture a canvas snapshot (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--format <png|jpg|jpeg>`,`Image format`,`jpg`).option(`--max-width <px>`,`Max width in px (optional)`).option(`--quality <0-1>`,`JPEG quality (optional)`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await U(`canvas snapshot`,async()=>{let t=String(e.format??`jpg`).trim().toLowerCase(),r=t===`jpg`||t===`jpeg`?`jpeg`:`png`;if(r!==`png`&&r!==`jpeg`)throw Error(`invalid format: ${String(e.format)} (expected png|jpg|jpeg)`);let i=e.maxWidth?Number.parseInt(String(e.maxWidth),10):void 0,a=e.quality?Number.parseFloat(String(e.quality)):void 0,o=await J(e,`canvas.snapshot`,{format:r,maxWidth:Number.isFinite(i)?i:void 0,quality:Number.isFinite(a)?a:void 0}),c=b((typeof o==`object`&&o?o:{}).payload),l=ee({ext:c.format===`jpeg`?`jpg`:c.format});if(await w(l,c.base64),e.json){n.log(JSON.stringify({file:{path:l,format:c.format}},null,2));return}n.log(`MEDIA:${s(l)}`)})}),{timeoutMs:6e4}),R(t.command(`present`).description(`Show the canvas (optionally with a target URL/path)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--target <urlOrPath>`,`Target URL/path (optional)`).option(`--x <px>`,`Placement x coordinate`).option(`--y <px>`,`Placement y coordinate`).option(`--width <px>`,`Placement width`).option(`--height <px>`,`Placement height`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await U(`canvas present`,async()=>{let t={x:e.x?Number.parseFloat(e.x):void 0,y:e.y?Number.parseFloat(e.y):void 0,width:e.width?Number.parseFloat(e.width):void 0,height:e.height?Number.parseFloat(e.height):void 0},r={};if(e.target&&(r.url=String(e.target)),(Number.isFinite(t.x)||Number.isFinite(t.y)||Number.isFinite(t.width)||Number.isFinite(t.height))&&(r.placement=t),await J(e,`canvas.present`,r),!e.json){let{ok:e}=H();n.log(e(`canvas present ok`))}})})),R(t.command(`hide`).description(`Hide the canvas`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await U(`canvas hide`,async()=>{if(await J(e,`canvas.hide`,void 0),!e.json){let{ok:e}=H();n.log(e(`canvas hide ok`))}})})),R(t.command(`navigate`).description(`Navigate the canvas to a URL`).argument(`<url>`,`Target URL/path`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await U(`canvas navigate`,async()=>{if(await J(t,`canvas.navigate`,{url:e}),!t.json){let{ok:e}=H();n.log(e(`canvas navigate ok`))}})})),R(t.command(`eval`).description(`Evaluate JavaScript in the canvas`).argument(`[js]`,`JavaScript to evaluate`).option(`--js <code>`,`JavaScript to evaluate`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await U(`canvas eval`,async()=>{let r=t.js??e;if(!r)throw Error(`missing --js or <js>`);let i=await J(t,`canvas.eval`,{javaScript:r});if(t.json){n.log(JSON.stringify(i,null,2));return}let a=typeof i==`object`&&i?i.payload:void 0;if(a?.result)n.log(a.result);else{let{ok:e}=H();n.log(e(`canvas eval ok`))}})}));let r=t.command(`a2ui`).description(`Render A2UI content on the canvas`);R(r.command(`push`).description(`Push A2UI JSONL to the canvas`).option(`--jsonl <path>`,`Path to JSONL payload`).option(`--text <text>`,`Render a quick A2UI text payload`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await U(`canvas a2ui push`,async()=>{let t=!!e.jsonl,r=typeof e.text==`string`;if(t===r)throw Error(`provide exactly one of --jsonl or --text`);let i=r?q(String(e.text??``)):await V.readFile(String(e.jsonl),`utf8`),{version:a,messageCount:o}=se(i);if(a===`v0.9`)throw Error(`Detected A2UI v0.9 JSONL (createSurface). OpenClaw currently supports v0.8 only.`);if(await J(e,`canvas.a2ui.pushJSONL`,{jsonl:i}),!e.json){let{ok:e}=H();n.log(e(`canvas a2ui push ok (v0.8, ${o} message${o===1?``:`s`})`))}})})),R(r.command(`reset`).description(`Reset A2UI renderer state`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await U(`canvas a2ui reset`,async()=>{if(await J(e,`canvas.a2ui.reset`,void 0),!e.json){let{ok:e}=H();n.log(e(`canvas a2ui reset ok`))}})}))}function le(e,t){let n=e?.tools?.exec;if(!t)return n?{security:n.security,ask:n.ask,node:n.node,pathPrepend:n.pathPrepend,safeBins:n.safeBins}:void 0;let r=a(e,t)?.tools?.exec;return{security:r?.security??n?.security,ask:r?.ask??n?.ask,node:r?.node??n?.node,pathPrepend:r?.pathPrepend??n?.pathPrepend,safeBins:r?.safeBins??n?.safeBins}}async function ue(e,t){try{let n=f(await I(`node.list`,e,{})).find(e=>e.nodeId===t);return typeof n?.platform==`string`?n.platform:null}catch{return null}}function de(e){let t=S(e);if(!t)throw Error(`invalid system.run.prepare response`);return t}function fe(e,t){let n=O(t?.security)??`allowlist`,r=O(e.security);if(e.security&&!r)throw Error(`invalid --security (use deny|allowlist|full)`);let i=A(t?.ask)??k().defaults?.ask??`on-miss`,a=A(e.ask);if(e.ask&&!a)throw Error(`invalid --ask (use off|on-miss|always)`);return{security:j(n,r??n),ask:D(i,a??i)}}async function pe(e){let t=g(e.opts.env),n=T(e.opts.commandTimeout),r=T(e.opts.invokeTimeout),i=Array.isArray(e.command)?e.command:[],a;if(e.raw){a=e.raw;let t=await ue(e.opts,e.nodeId);i=te(a,t??void 0)}let o=t?{...t}:void 0;return o&&x(o,e.execDefaults?.pathPrepend,{requireExisting:!0}),{prepared:de((await I(`node.invoke`,e.opts,{nodeId:e.nodeId,command:`system.run.prepare`,params:{command:i,rawCommand:a,cwd:e.opts.cwd,agentId:e.agentId},idempotencyKey:`prepare-${l()}`}))?.payload),nodeEnv:o,timeoutMs:n,invokeTimeout:r}}async function me(e){let t=await I(`exec.approvals.node.get`,e.opts,{nodeId:e.nodeId}),n=t&&typeof t==`object`?t.file:void 0;if(!n||typeof n!=`object`)throw Error(`exec approvals unavailable`);let r=ae({file:n,agentId:e.agentId,overrides:{security:e.security,ask:e.ask}});return{approvals:r,hostSecurity:j(e.security,r.agent.security),hostAsk:D(e.ask,r.agent.ask),askFallback:r.agent.askFallback}}async function he(e){let t=!1,n=null,r=null;if(!(e.hostAsk===`always`||e.hostAsk===`on-miss`))return{approvedByAsk:t,approvalDecision:n,approvalId:r};r=crypto.randomUUID();let i=oe,a=Math.max(T(e.opts.timeout)??0,i+1e4),o=await I(`exec.approval.request`,e.opts,{id:r,systemRunPlan:e.approvalPlan,cwd:e.approvalPlan.cwd,nodeId:e.nodeId,host:`node`,security:e.hostSecurity,ask:e.hostAsk,agentId:e.approvalPlan.agentId??e.agentId,resolvedPath:void 0,sessionKey:e.approvalPlan.sessionKey??void 0,timeoutMs:i},{transportTimeoutMs:a}),s=o&&typeof o==`object`?o.decision??null:null;if(s===`deny`)throw Error(`exec denied: user denied`);if(!s){if(e.askFallback===`full`)t=!0,n=`allow-once`;else if(e.askFallback!==`allowlist`)throw Error(`exec denied: approval required (approval UI not available)`)}return s===`allow-once`&&(t=!0,n=`allow-once`),s===`allow-always`&&(t=!0,n=`allow-always`),{approvedByAsk:t,approvalDecision:n,approvalId:r}}function ge(e){let t={nodeId:e.nodeId,command:`system.run`,params:{command:e.approvalPlan.argv,rawCommand:e.approvalPlan.commandText,cwd:e.approvalPlan.cwd,env:e.nodeEnv,timeoutMs:e.timeoutMs,needsScreenRecording:e.needsScreenRecording},idempotencyKey:String(e.idempotencyKey??l())};return(e.approvalPlan.agentId??e.fallbackAgentId)&&(t.params.agentId=e.approvalPlan.agentId??e.fallbackAgentId),e.approvalPlan.sessionKey&&(t.params.sessionKey=e.approvalPlan.sessionKey),t.params.approved=e.approvedByAsk,e.approvalDecision&&(t.params.approvalDecision=e.approvalDecision),e.approvedByAsk&&e.approvalId&&(t.params.runId=e.approvalId),e.invokeTimeout!==void 0&&(t.timeoutMs=e.invokeTimeout),t}function _e(e){R(e.command(`invoke`).description(`Invoke a command on a paired node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--command <command>`,`Command (e.g. canvas.eval)`).option(`--params <json>`,`JSON object string for params`,`{}`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).option(`--idempotency-key <key>`,`Idempotency key (optional)`).action(async e=>{await U(`invoke`,async()=>{let t=await P(e,String(e.node??``)),r=String(e.command??``).trim();if(!t||!r){let{error:e}=H();n.error(e(`--node and --command required`)),n.exit(1);return}let i=JSON.parse(String(e.params??`{}`)),a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:r,params:i,idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await I(`node.invoke`,e,o);n.log(JSON.stringify(s,null,2))})}),{timeoutMs:3e4}),R(e.command(`run`).description(`Run a shell command on a node (mac only)`).option(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--cwd <path>`,`Working directory`).option(`--env <key=val>`,`Environment override (repeatable)`,(e,t=[])=>[...t,e]).option(`--raw <command>`,`Run a raw shell command string (sh -lc / cmd.exe /c)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--ask <mode>`,`Exec ask mode (off|on-miss|always)`).option(`--security <mode>`,`Exec security mode (deny|allowlist|full)`).option(`--command-timeout <ms>`,`Command timeout (ms)`).option(`--needs-screen-recording`,`Require screen recording permission`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 30000)`,`30000`).argument(`[command...]`,`Command and args`).action(async(e,t)=>{await U(`run`,async()=>{let a=r(),o=t.agent?.trim()||i(a),s=le(a,o),c=typeof t.raw==`string`?t.raw.trim():``;if(c&&Array.isArray(e)&&e.length>0)throw Error(`use --raw or argv, not both`);if(!c&&(!Array.isArray(e)||e.length===0))throw Error(`command required`);let l=String(t.node??``).trim()||s?.node?.trim()||``;if(!l)throw Error(`node required (set --node or tools.exec.node)`);let u=await P(t,l),d=await pe({opts:t,command:e,raw:c,nodeId:u,agentId:o,execDefaults:s}),f=d.prepared.plan,p=fe(t,s),m=await me({opts:t,nodeId:u,agentId:o,security:p.security,ask:p.ask});if(m.hostSecurity===`deny`)throw Error(`exec denied: host=node security=deny`);let h=await he({opts:t,nodeId:u,agentId:o,approvalPlan:f,hostSecurity:m.hostSecurity,hostAsk:m.hostAsk,askFallback:m.askFallback}),g=await I(`node.invoke`,t,ge({nodeId:u,approvalPlan:f,nodeEnv:d.nodeEnv,timeoutMs:d.timeoutMs,invokeTimeout:d.invokeTimeout,approvedByAsk:h.approvedByAsk,approvalDecision:h.approvalDecision,approvalId:h.approvalId,idempotencyKey:t.idempotencyKey,fallbackAgentId:o,needsScreenRecording:t.needsScreenRecording===!0}));if(t.json){n.log(JSON.stringify(g,null,2));return}let _=typeof g==`object`&&g?g.payload:void 0,v=typeof _?.stdout==`string`?_.stdout:``,y=typeof _?.stderr==`string`?_.stderr:``,b=typeof _?.exitCode==`number`?_.exitCode:null,x=_?.timedOut===!0,S=_?.success===!0;if(v&&process.stdout.write(v),y&&process.stderr.write(y),x){let{error:e}=H();n.error(e(`run timed out`)),n.exit(1);return}if(b!==null&&b!==0){let e=L(`${y}\n${v}`);if(e){let{warn:t}=H();n.error(t(e))}}if(b!==null&&b!==0&&!S){let{error:e}=H();n.error(e(`run exit ${b}`)),n.exit(1);return}})}),{timeoutMs:35e3})}function ve(e){R(e.command(`location`).description(`Fetch location from a paired node`).command(`get`).description(`Fetch the current location from a node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--max-age <ms>`,`Use cached location newer than this (ms)`).option(`--accuracy <coarse|balanced|precise>`,`Desired accuracy (default: balanced/precise depending on node setting)`).option(`--location-timeout <ms>`,`Location fix timeout (ms)`,`10000`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await U(`location get`,async()=>{let t=await P(e,String(e.node??``)),r=e.maxAge?Number.parseInt(String(e.maxAge),10):void 0,i=typeof e.accuracy==`string`?e.accuracy.trim().toLowerCase():void 0,a=i===`coarse`||i===`balanced`||i===`precise`?i:void 0,o=e.locationTimeout?Number.parseInt(String(e.locationTimeout),10):void 0,s=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,c={nodeId:t,command:`location.get`,params:{maxAgeMs:Number.isFinite(r)?r:void 0,desiredAccuracy:a,timeoutMs:Number.isFinite(o)?o:void 0},idempotencyKey:l()};typeof s==`number`&&Number.isFinite(s)&&(c.timeoutMs=s);let u=await I(`node.invoke`,e,c),d=typeof u==`object`&&u?u:{},f=d.payload&&typeof d.payload==`object`?d.payload:{};if(e.json){n.log(JSON.stringify(f,null,2));return}let p=f.lat,m=f.lon,h=f.accuracyMeters;if(typeof p==`number`&&typeof m==`number`){let e=typeof h==`number`?` ±${h.toFixed(1)}m`:``;n.log(`${p},${m}${e}`);return}n.log(JSON.stringify(f))})}),{timeoutMs:3e4})}function ye(e){R(e.command(`notify`).description(`Send a local notification on a node (mac only)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Notification title`).option(`--body <text>`,`Notification body`).option(`--sound <name>`,`Notification sound`).option(`--priority <passive|active|timeSensitive>`,`Notification priority`).option(`--delivery <system|overlay|auto>`,`Delivery mode`,`system`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).action(async e=>{await U(`notify`,async()=>{let t=await P(e,String(e.node??``)),r=String(e.title??``).trim(),i=String(e.body??``).trim();if(!r&&!i)throw Error(`missing --title or --body`);let a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:`system.notify`,params:{title:r,body:i,sound:e.sound,priority:e.priority,delivery:e.delivery},idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await I(`node.invoke`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let{ok:c}=H();n.log(c(`notify ok`))})}))}function Y(e){let{pending:t,now:n,tableWidth:r,theme:i}=e,a=t.map(e=>({Request:e.requestId,Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,IP:e.remoteIp??``,Requested:typeof e.ts==`number`?u(Math.max(0,n-e.ts)):i.muted(`unknown`),Repair:e.isRepair?i.warn(`yes`):``}));return{heading:i.heading(`Pending`),table:M({width:r,columns:[{key:`Request`,header:`Request`,minWidth:8},{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`IP`,header:`IP`,minWidth:10},{key:`Requested`,header:`Requested`,minWidth:12},{key:`Repair`,header:`Repair`,minWidth:6}],rows:a}).trimEnd()}}function X(e){R(e.command(`pending`).description(`List pending pairing requests`).action(async e=>{await U(`pending`,async()=>{let{pending:t}=d(await I(`node.pair.list`,e,{}));if(e.json){n.log(JSON.stringify(t,null,2));return}if(t.length===0){let{muted:e}=H();n.log(e(`No pending pairing requests.`));return}let{heading:r,warn:i,muted:a}=H(),o=N(),s=Y({pending:t,now:Date.now(),tableWidth:o,theme:{heading:r,warn:i,muted:a}});n.log(s.heading),n.log(s.table)})})),R(e.command(`approve`).description(`Approve a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await U(`approve`,async()=>{let r=await I(`node.pair.approve`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),R(e.command(`reject`).description(`Reject a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await U(`reject`,async()=>{let r=await I(`node.pair.reject`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),R(e.command(`rename`).description(`Rename a paired node (display name override)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--name <displayName>`,`New display name`).action(async e=>{await U(`rename`,async()=>{let t=await P(e,String(e.node??``)),r=String(e.name??``).trim();if(!t||!r){n.error(`--node and --name required`),n.exit(1);return}let i=await I(`node.rename`,e,{nodeId:t,displayName:r});if(e.json){n.log(JSON.stringify(i,null,2));return}let{ok:a}=H();n.log(a(`node rename ok: ${t} -> ${r}`))})}))}function be(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return t===`sandbox`||t===`production`?t:null}function xe(e){R(e.command(`push`).description(`Send an APNs test push to an iOS node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Push title`,`OpenClaw`).option(`--body <text>`,`Push body`).option(`--environment <sandbox|production>`,`Override APNs environment`).action(async e=>{await U(`push`,async()=>{let t=await P(e,String(e.node??``)),r=String(e.title??``).trim()||`OpenClaw`,i=String(e.body??``).trim()||`Push test for node ${t}`,a=be(e.environment);if(e.environment&&!a)throw Error(`invalid --environment (use sandbox|production)`);let o={nodeId:t,title:r,body:i};a&&(o.environment=a);let s=await I(`push.test`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let c=typeof s==`object`&&s?s:{},l=c.ok===!0,u=typeof c.status==`number`?c.status:0,d=typeof c.reason==`string`&&c.reason.trim().length>0?c.reason.trim():void 0,f=typeof c.environment==`string`&&c.environment.trim().length>0?c.environment.trim():`unknown`,{ok:p,error:m}=H(),h=l?p:m;n.log(h(`push.test status=${u} ok=${l} env=${f}`)),d&&n.log(`reason: ${d}`)})}),{timeoutMs:25e3})}function Se(e){R(e.command(`screen`).description(`Capture screen recordings from a paired node`).command(`record`).description(`Capture a short screen recording from a node (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--screen <index>`,`Screen index (0 = primary)`,`0`).option(`--duration <ms|10s>`,`Clip duration (ms or 10s)`,`10000`).option(`--fps <fps>`,`Frames per second`,`10`).option(`--no-audio`,`Disable microphone audio capture`).option(`--out <path>`,`Output path`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 120000)`,`120000`).action(async e=>{await U(`screen record`,async()=>{let t=await P(e,String(e.node??``)),r=c(e.duration??``),i=Number.parseInt(String(e.screen??`0`),10),a=Number.parseFloat(String(e.fps??`10`)),o=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,l=await I(`node.invoke`,e,B({nodeId:t,command:`screen.record`,params:{durationMs:Number.isFinite(r)?r:void 0,screenIndex:Number.isFinite(i)?i:void 0,fps:Number.isFinite(a)?a:void 0,format:`mp4`,includeAudio:e.audio!==!1},timeoutMs:o})),u=y((typeof l==`object`&&l?l:{}).payload),d=await h(e.out??C({ext:u.format||`mp4`}),u.base64);if(e.json){n.log(JSON.stringify({file:{path:d.path,durationMs:u.durationMs,fps:u.fps,screenIndex:u.screenIndex,hasAudio:u.hasAudio}},null,2));return}n.log(`MEDIA:${s(d.path)}`)})}),{timeoutMs:18e4})}function Z(e){let t=e.trim();return t?t.toLowerCase().startsWith(`v`)?t:/^\d/.test(t)?`v${t}`:t:e}function Ce(e){let t=e.coreVersion?.trim()||void 0,n=e.uiVersion?.trim()||void 0;if(t||n)return{core:t,ui:n};let r=e.version?.trim();if(!r)return{core:void 0,ui:void 0};let i=e.platform?.trim().toLowerCase()??``;return i===`darwin`||i===`linux`||i===`win32`||i===`windows`?{core:r,ui:void 0}:{core:void 0,ui:r}}function Q(e){let{core:t,ui:n}=Ce(e),r=[];return t&&r.push(`core ${Z(t)}`),n&&r.push(`ui ${Z(n)}`),r.length>0?r.join(` · `):null}function we(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.split(`:`).filter(Boolean);return o(n.length<=3?t:`${n.slice(0,2).join(`:`)}:…:${n.slice(-1)[0]}`)}function $(e,t){if(e==null)return;let r=typeof e==`string`?e.trim():typeof e==`number`?String(e).trim():null;if(r===null){n.error(`${t}: invalid duration value`),n.exit(1);return}if(r)try{return c(r)}catch(e){let r=e instanceof Error?e.message:String(e);n.error(`${t}: ${r}`),n.exit(1);return}}function Te(e){R(e.command(`status`).description(`List known nodes with connection status and capabilities`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await U(`status`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),i=await I(`node.list`,e,{}),a=typeof i==`object`&&i?i:{},{ok:o,warn:s,muted:c}=H(),l=N(),p=Date.now(),m=f(i),h=r===void 0?null:new Map(d(await I(`node.pair.list`,e,{})).paired.map(e=>[e.nodeId,e])),g=m.filter(e=>{if(t&&!e.connected)return!1;if(r!==void 0){let t=h?.get(e.nodeId),n=typeof t?.lastConnectedAtMs==`number`?t.lastConnectedAtMs:typeof e.connectedAtMs==`number`?e.connectedAtMs:void 0;if(typeof n!=`number`||p-n>r)return!1}return!0});if(e.json){let e=typeof a.ts==`number`?a.ts:Date.now();n.log(JSON.stringify({...a,ts:e,nodes:g},null,2));return}let _=g.filter(e=>!!e.paired).length,v=g.filter(e=>!!e.connected).length,y=g.length===m.length?``:` (of ${m.length})`;if(n.log(`Known: ${g.length}${y} · Paired: ${_} · Connected: ${v}`),g.length===0)return;let b=g.map(e=>{let t=e.displayName?.trim()?e.displayName.trim():e.nodeId,n=z(e.permissions),r=Q(e),i=we(e.pathEnv),a=[e.deviceFamily?`device: ${e.deviceFamily}`:null,e.modelIdentifier?`hw: ${e.modelIdentifier}`:null,n?`perms: ${n}`:null,r,i?`path: ${i}`:null].filter(Boolean),l=Array.isArray(e.caps)?e.caps.map(String).filter(Boolean).toSorted().join(`, `):`?`,d=e.paired?o(`paired`):s(`unpaired`),f=e.connected?o(`connected`):c(`disconnected`),m=typeof e.connectedAtMs==`number`?` (${u(Math.max(0,p-e.connectedAtMs))})`:``;return{Node:t,ID:e.nodeId,IP:e.remoteIp??``,Detail:a.join(` · `),Status:`${d} · ${f}${m}`,Caps:l}});n.log(M({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`ID`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`Detail`,header:`Detail`,minWidth:18,flex:!0},{key:`Status`,header:`Status`,minWidth:18},{key:`Caps`,header:`Caps`,minWidth:12,flex:!0}],rows:b}).trimEnd())})})),R(e.command(`describe`).description(`Describe a node (capabilities + supported invoke commands)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).action(async e=>{await U(`describe`,async()=>{let t=await P(e,String(e.node??``)),r=await I(`node.describe`,e,{nodeId:t});if(e.json){n.log(JSON.stringify(r,null,2));return}let i=typeof r==`object`&&r?r:{},a=typeof i.displayName==`string`?i.displayName:t,o=!!i.connected,s=!!i.paired,c=Array.isArray(i.caps)?i.caps.map(String).filter(Boolean).toSorted():null,l=Array.isArray(i.commands)?i.commands.map(String).filter(Boolean).toSorted():[],u=z(i.permissions),d=typeof i.deviceFamily==`string`?i.deviceFamily:null,f=typeof i.modelIdentifier==`string`?i.modelIdentifier:null,p=typeof i.remoteIp==`string`?i.remoteIp:null,m=typeof i.pathEnv==`string`?i.pathEnv:null,h=Q(i),{heading:g,ok:_,warn:v,muted:y}=H(),b=`${s?_(`paired`):v(`unpaired`)} · ${o?_(`connected`):y(`disconnected`)}`,x=N(),S=[{Field:`ID`,Value:t},a?{Field:`Name`,Value:a}:null,p?{Field:`IP`,Value:p}:null,d?{Field:`Device`,Value:d}:null,f?{Field:`Model`,Value:f}:null,u?{Field:`Perms`,Value:u}:null,h?{Field:`Version`,Value:h}:null,m?{Field:`PATH`,Value:m}:null,{Field:`Status`,Value:b},{Field:`Caps`,Value:c?c.join(`, `):`?`}].filter(Boolean);if(n.log(g(`Node`)),n.log(M({width:x,columns:[{key:`Field`,header:`Field`,minWidth:8},{key:`Value`,header:`Value`,minWidth:24,flex:!0}],rows:S}).trimEnd()),n.log(``),n.log(g(`Commands`)),l.length===0){n.log(y(`- (none reported)`));return}for(let e of l)n.log(`- ${e}`)})})),R(e.command(`list`).description(`List pending and paired nodes`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await U(`list`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),{pending:i,paired:a}=d(await I(`node.pair.list`,e,{})),{heading:o,muted:s,warn:c}=H(),l=N(),p=Date.now(),m=t||r!==void 0,h=m?[]:i,g=m?new Map(f(await I(`node.list`,e,{})).map(e=>[e.nodeId,e])):null,_=a.filter(e=>{if(t&&!g?.get(e.nodeId)?.connected)return!1;if(r!==void 0){let t=g?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;if(typeof n!=`number`||p-n>r)return!1}return!0}),v=m&&_.length!==a.length?` (of ${a.length})`:``;if(n.log(`Pending: ${h.length} · Paired: ${_.length}${v}`),e.json){n.log(JSON.stringify({pending:h,paired:_},null,2));return}if(h.length>0){let e=Y({pending:h,now:p,tableWidth:l,theme:{heading:o,warn:c,muted:s}});n.log(``),n.log(e.heading),n.log(e.table)}if(_.length>0){let e=_.map(e=>{let t=g?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;return{Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,Id:e.nodeId,IP:e.remoteIp??``,LastConnect:typeof n==`number`?u(Math.max(0,p-n)):s(`unknown`)}});n.log(``),n.log(o(`Paired`)),n.log(M({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`Id`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`LastConnect`,header:`Last Connect`,minWidth:14}],rows:e}).trimEnd())}})}))}function Ee(t){let n=t.command(`nodes`).description(`Manage gateway-owned nodes (pairing, status, invoke, and media)`).addHelpText(`after`,()=>`\n${e.heading(`Examples:`)}\n${ie([[`openclaw nodes status`,`List known nodes with live status.`],[`openclaw nodes pairing pending`,`Show pending node pairing requests.`],[`openclaw nodes run --node <id> --raw "uname -a"`,`Run a shell command on a node.`],[`openclaw nodes camera snap --node <id>`,`Capture a photo from a node camera.`]])}\n\n${e.muted(`Docs:`)} ${re(`/cli/nodes`,`docs.openclaw.ai/cli/nodes`)}\n`);Te(n),X(n),_e(n),ye(n),xe(n),ce(n),G(n),Se(n),ve(n)}export{Ee as registerNodesCli};
|
|
5
|
+
//# sourceMappingURL=nodes-cli-8By8--bW.js.map
|