wednesdayai 0.5.1-dev.37 → 0.5.1-dev.38
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/{acp-cli-BCtWMJDr.js → acp-cli-DHAxJufY.js} +11 -11
- package/dist/{agent-scope-BXqrHhZ0.js → agent-scope-BZ0wFh-U.js} +21 -21
- package/dist/{agent-turn-enqueue-TStC2eAo.js → agent-turn-enqueue-DZ607FR0.js} +6 -6
- package/dist/{agent-turn-execute-B8YL98Ei.js → agent-turn-execute-CGTvDxUE.js} +152 -152
- package/dist/{agent-turn-recovery-adapter-DMCiX5id.js → agent-turn-recovery-adapter-bACrcJAQ.js} +3 -3
- package/dist/{agent-turn-runner-DKwd_tAc.js → agent-turn-runner-C3LuaN7w.js} +2 -2
- package/dist/{agent-turn-runner-Dqbqrgbg.js → agent-turn-runner-qSzYP-xO.js} +4 -4
- package/dist/{agents-DecMea6v.js → agents-C8johSLq.js} +21 -21
- package/dist/{agents.config-C9y5L4K8.js → agents.config-BjA0noNV.js} +3 -3
- package/dist/{api-key-rotation-muerimbF.js → api-key-rotation-D4lnO3Ok.js} +1 -1
- package/dist/{audio-preflight-BV83ctbI.js → audio-preflight-Djb8Ia-c.js} +3 -3
- package/dist/{audio-preflight-CP5CtdsH.js → audio-preflight-oL1-kPAm.js} +37 -37
- package/dist/{audio-transcription-runner-Bs4pG29e.js → audio-transcription-runner-BXSN8eBn.js} +27 -27
- package/dist/{audio-transcription-runner-DRUTJgZh.js → audio-transcription-runner-DhoPP3LM.js} +1 -1
- package/dist/{audit-CEciibi6.js → audit-CKbyr9j7.js} +31 -31
- package/dist/{auth-C4aicgu0.js → auth--kj7eWiw.js} +4 -4
- package/dist/{auth-choice-CzqQjA2v.js → auth-choice-BOcw0TMX.js} +15 -15
- package/dist/{auth-choice-CAZCvJj_.js → auth-choice-RfKE6K30.js} +13 -13
- package/dist/{auth-choice.apply-helpers-DWNqsu7M.js → auth-choice.apply-helpers-NHz-APrm.js} +1 -1
- package/dist/{auth-token-DEhILWtz.js → auth-token-BdrfJ6LM.js} +2 -2
- package/dist/{banner-CI86ZCI2.js → banner-BF4fYjB7.js} +4 -4
- package/dist/{bonjour-discovery-24oEkWjB.js → bonjour-discovery-BthO3c3w.js} +3 -3
- package/dist/{browser-cli-DhjLTPwH.js → browser-cli-sLIHnZHe.js} +19 -19
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-journal/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/{call-C4ArH9Si.js → call-BY-wbSIJ.js} +12 -12
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-account-context-CndjAqFL.js → channel-account-context-DIx7V4k-.js} +7 -7
- package/dist/{channel-options-OJHp5c5p.js → channel-options-B10KsMrg.js} +3 -3
- package/dist/{channel-selection-JkSKVHJp.js → channel-selection-BxBw-nya.js} +1 -1
- package/dist/{channels-cli-Z1jMieGO.js → channels-cli-C4-OqjW1.js} +119 -119
- package/dist/{channels-status-issues-KrOAESoD.js → channels-status-issues-DYdDrl6F.js} +1 -1
- package/dist/{chat-content-B2kNxQ3a.js → chat-content-Cp63XvqY.js} +3 -3
- package/dist/{chrome-CBtFbbNQ.js → chrome-CMvVElGc.js} +6 -6
- package/dist/{chrome-DgDNUC2A.js → chrome-DW9-DzcL.js} +8 -8
- package/dist/{chunk-TNziyyRO.js → chunk-DAmLsltN.js} +3 -3
- package/dist/{clack-prompter-BGz_-0Jy.js → clack-prompter-gj894fSZ.js} +5 -5
- package/dist/clawbot-cli-Uwda-gwl.js +31 -0
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-9kY6bXto.js +165 -0
- package/dist/{client-x4GnolXm.js → client-DsaKKPz1.js} +4 -4
- package/dist/{client-profiles-DeaEz84_.js → client-profiles-HTQt5I_7.js} +4 -4
- package/dist/{clipboard-CpnmAh1M.js → clipboard-Dwm1nI9r.js} +1 -1
- package/dist/{command-queue-DqvFUE_T.js → command-queue-D7PleaNJ.js} +1 -1
- package/dist/{command-registry-DZhaDT6k.js → command-registry-mp4MxXzC.js} +14 -14
- package/dist/{command-secret-targets-CX4FWTx8.js → command-secret-targets-MpNVd6gM.js} +4 -4
- package/dist/{commands-DYSm3eNj.js → commands-BSuDoyqC.js} +1 -1
- package/dist/{commands-registry-BbHkcgn_.js → commands-registry-CWGturUV.js} +3 -3
- package/dist/{completion-cli-KeHhpylY.js → completion-cli-D1oQvlFE.js} +16 -16
- package/dist/{config-2hPOvE4Z.js → config-D--rwfpd.js} +31 -31
- package/dist/{config-cli-D-H6Kr9B.js → config-cli-BXmt8okw.js} +10 -10
- package/dist/{config-guard-BvNFubkG.js → config-guard-Cw6VZZIa.js} +4 -4
- package/dist/{config-validation-CoY1swln.js → config-validation-ak7uy8sQ.js} +4 -4
- package/dist/{configure-DvBl6V3D.js → configure-Jq_Nd0lw.js} +25 -25
- package/dist/{control-ui-assets-DvutqvBd.js → control-ui-assets-D7LC9ugV.js} +3 -3
- package/dist/{controller-Cph9HEXR.js → controller-C5VfLHxD.js} +1 -1
- package/dist/{credentials-DLluMUaA.js → credentials-D2RfV9B5.js} +1 -1
- package/dist/{cron-cli-Bx35RD7d.js → cron-cli-BgEowQB-.js} +14 -14
- package/dist/{daemon-cli-DlS7PDJU.js → daemon-cli-BVlct7Qh.js} +19 -19
- package/dist/{daemon-install-P8cLD1fo.js → daemon-install-BXgUCwNe.js} +10 -10
- package/dist/{daemon-install-helpers-YbryCWUm.js → daemon-install-helpers-DN9p53IN.js} +13 -13
- package/dist/{delete-agent-sessions-C60hkBQ-.js → delete-agent-sessions-B4HnloYv.js} +1 -1
- package/dist/{deliver-BoOCdGXY.js → deliver-CiY0WQtq.js} +1 -1
- package/dist/{deliver-gllA2ft3.js → deliver-CjuGs2ZT.js} +12 -12
- package/dist/{devices-cli-Dc_tu4bW.js → devices-cli-BCEiHurA.js} +13 -13
- package/dist/{diagnostic-C2zSaTPq.js → diagnostic-jFNdnXCb.js} +4 -4
- package/dist/{diagnostics-CSh5FcKM.js → diagnostics-CbXyRsTN.js} +5 -5
- package/dist/{directory-cli-CcMw7ktc.js → directory-cli-CEQEXtQ_.js} +11 -11
- package/dist/{dm-policy-shared-DyPD8y1v.js → dm-policy-shared-BHHuPFZr.js} +5 -5
- package/dist/{dns-cli-Cxw9US4K.js → dns-cli-CfEIvluV.js} +10 -10
- package/dist/{docs-cli-BnnuPnNf.js → docs-cli-BvqOi7vO.js} +9 -9
- package/dist/{doctor-completion-B4D14F1Y.js → doctor-completion-Cbb3ZrZO.js} +3 -3
- package/dist/{doctor-config-flow-CY4BZ2VP.js → doctor-config-flow-zfYUW8HP.js} +17 -17
- package/dist/{enable-PpktglSI.js → enable-B7CD1rL9.js} +2 -2
- package/dist/entry.js +4 -4
- package/dist/{exec-EGo-G7vR.js → exec-DWOKM6EC.js} +2 -2
- package/dist/{exec-approvals-CImDpHtY.js → exec-approvals-CavJfWPl.js} +2 -2
- package/dist/{exec-approvals-allowlist-B3_jgDyG.js → exec-approvals-allowlist-CfzuCK0Q.js} +1 -1
- package/dist/{exec-approvals-cli-C6AHbPh4.js → exec-approvals-cli-uvLKhEsP.js} +22 -22
- package/dist/{exec-safe-bin-runtime-policy-h4hE5cjd.js → exec-safe-bin-runtime-policy-CY75nr5s.js} +2 -2
- package/dist/{extension-relay-auth-D49uIEqs.js → extension-relay-auth-CEkGLele.js} +10 -10
- package/dist/{fetch-BZPOzq9L.js → fetch-CLk1nKmU.js} +5 -5
- package/dist/{fetch-guard-laNnWRKl.js → fetch-guard-TJQinE0a.js} +2 -2
- package/dist/{fs-safe-db4fkk2l.js → fs-safe-sWugzmbo.js} +25 -25
- package/dist/{gateway-cli-Y92yCSUC.js → gateway-cli-C4Xm8OKF.js} +197 -197
- package/dist/{gateway-rpc-DogQQ77j.js → gateway-rpc-CIkWW5n2.js} +3 -3
- package/dist/{globals-BRyHSrWD.js → globals-3lUHnZas.js} +7 -7
- package/dist/{gmail-setup-utils-CahF-fra.js → gmail-setup-utils-CBsUX2F0.js} +2 -2
- package/dist/{health-CKyXEs4C.js → health-CkjZqvKv.js} +11 -11
- package/dist/{health-format-81amZFDs.js → health-format-CCvWwiB3.js} +1 -1
- package/dist/{heartbeat-tick-SbqJkBFN.js → heartbeat-tick-BVllHRaT.js} +1 -1
- package/dist/{help-format-CUXi0c_1.js → help-format-BQ0UHPHt.js} +1 -1
- package/dist/{helpers-CmoGqLct.js → helpers-DpVn76ht.js} +1 -1
- package/dist/{hooks-cli-BQlL_eiX.js → hooks-cli-Ced8bfd_.js} +107 -107
- package/dist/{hooks-status-BcYtOqKY.js → hooks-status-CxaWMb-v.js} +2 -2
- package/dist/{image-ops-BFv9Aw5H.js → image-ops-C0np5f9V.js} +11 -11
- package/dist/{inspect-DmQmgYu2.js → inspect-GlutPeaP.js} +4 -4
- package/dist/{install-safe-path-BZ4b1O0D.js → install-safe-path-2eEPQsHT.js} +25 -25
- package/dist/{installs-D16nEuyM.js → installs-DSwIaqJH.js} +10 -10
- package/dist/{ipv4-DV6XbKGD.js → ipv4-BexgmRwg.js} +2 -2
- package/dist/{ir-BbGjFYnq.js → ir-BoNkouUO.js} +8 -8
- package/dist/{issue-format-OFCh_2sH.js → issue-format-DhAa1_iS.js} +1 -1
- package/dist/{jobs-Pj6_tyn5.js → jobs-D8gtzx-n.js} +3 -3
- package/dist/{json-files-G3m05NRY.js → json-files-DNNBEygD.js} +7 -7
- package/dist/{lifecycle-core-BI6xkw0D.js → lifecycle-core-BP96hEWA.js} +9 -9
- package/dist/{links-BRY-h8H0.js → links-CPIBVJ0k.js} +1 -1
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{log-tail-DeaaUA7g.js → log-tail-DoAwmIXn.js} +7 -7
- package/dist/{logging-C7kf6mNZ.js → logging-CjgQOisq.js} +1 -1
- package/dist/{logs-cli-DQhMoYgT.js → logs-cli-CIeDTp3g.js} +18 -18
- package/dist/{manager-Be7W1lBp.js → manager-B5VtBnfA.js} +14 -14
- package/dist/{manager-C5AVBxrT.js → manager-vjvTALqw.js} +9 -9
- package/dist/{markdown-tables-i_PaXF56.js → markdown-tables-BwQlrMEW.js} +2 -2
- package/dist/{memory-cli-vUKqKvFg.js → memory-cli-DajAbkdp.js} +19 -19
- package/dist/{model-UbsJmYeh.js → model-A1TZLzNB.js} +2 -2
- package/dist/{model-catalog-D1B81cpq.js → model-catalog-BcJh6M8w.js} +4 -4
- package/dist/{model-picker-D7AGuTS7.js → model-picker-BYGP4JvH.js} +4 -4
- package/dist/{models-wwUL9ZYa.js → models-CaKTiIIq.js} +22 -22
- package/dist/{models-cli-DYk-Xwo5.js → models-cli-BA6zwth-.js} +107 -107
- package/dist/{models-config-CC5yFmpv.js → models-config-CBX2i56k.js} +7 -7
- package/dist/{node-cli-B7Zt1yCl.js → node-cli-BF1J4vkA.js} +43 -43
- package/dist/{node-command-policy-C-htkgT_.js → node-command-policy-S97zDTm2.js} +1 -1
- package/dist/{node-service-Ch4eBsUZ.js → node-service-Drxz78wf.js} +1 -1
- package/dist/{nodes-cli-CEm6ENzh.js → nodes-cli-BzNwotgj.js} +23 -23
- package/dist/{nodes-screen-DO6BNCQ6.js → nodes-screen-Brwiveoh.js} +8 -8
- package/dist/{note-Dq9MhE7Z.js → note-D-rFqUUL.js} +2 -2
- package/dist/{npm-pack-install-B__b0nDK.js → npm-pack-install-BwupN_XV.js} +23 -23
- package/dist/{npm-resolution-2lzpgd44.js → npm-resolution-DoQ0TbSm.js} +5 -5
- package/dist/{oauth-tls-preflight-CzOK4dkk.js → oauth-tls-preflight-CU1ceznS.js} +1 -1
- package/dist/{onboard-channels-CDVGqsGH.js → onboard-channels-aStIhqMG.js} +24 -24
- package/dist/{onboard-custom-BJe8lC0m.js → onboard-custom-CF-Qyb3Y.js} +4 -4
- package/dist/{onboard-helpers-ByS2aPrW.js → onboard-helpers-Bz91Pf6D.js} +13 -13
- package/dist/{onboard-hooks-ColglUdK.js → onboard-hooks-CP5ICg3d.js} +6 -6
- package/dist/{onboard-remote-CATwWYLS.js → onboard-remote-DkBLTgQh.js} +5 -5
- package/dist/{onboard-skills-CmLqdEyd.js → onboard-skills-BdbiUQFJ.js} +4 -4
- package/dist/{onboard-_LkcuZt4.js → onboard-uXr7A8A7.js} +11 -11
- package/dist/{onboarding-Z7sHNPIN.js → onboarding-CHVuwQW-.js} +18 -18
- package/dist/{onboarding.finalize-B2oQRJVj.js → onboarding.finalize-D4_usXNq.js} +115 -115
- package/dist/{onboarding.gateway-config-isEZPjpx.js → onboarding.gateway-config-DKqp9L2Q.js} +21 -21
- package/dist/{onboarding.secret-input--lcWBs-r.js → onboarding.secret-input-Bly8kI9z.js} +1 -1
- package/dist/{openai-model-default-BHLjGfhz.js → openai-model-default-hQ_Lz4xl.js} +2 -2
- package/dist/{openclaw-root-B6Tk0FH8.js → openclaw-root-CvJ5CJns.js} +2 -2
- package/dist/{operator-commands-WFKXbJHh.js → operator-commands-1PttwYpR.js} +6 -6
- package/dist/{outbound-attachment-BbJWA7EA.js → outbound-attachment-DK190u8V.js} +2 -2
- package/dist/{outbound-message-hooks-_I696mNI.js → outbound-message-hooks-BvKzCtP_.js} +5 -5
- package/dist/{pairing-cli-dhBxo6Vw.js → pairing-cli-CjvOW_Qy.js} +10 -10
- package/dist/{pairing-labels-BDuNTDsa.js → pairing-labels-BSl8PmyI.js} +1 -1
- package/dist/{pairing-store-ZXK7b5SG.js → pairing-store-BbBjVYYR.js} +4 -4
- package/dist/{path-alias-guards-L34PKmdW.js → path-alias-guards-DhwCAYKX.js} +3 -3
- package/dist/{path-safety-DHLkivTI.js → path-safety-Dibh-nnA.js} +1 -1
- package/dist/{pi-embedded-_YhHvi3M.js → pi-embedded-1pY41iFz.js} +18 -18
- package/dist/{pi-embedded-helpers--xcGBKr8.js → pi-embedded-helpers-BbOp_MHS.js} +6 -6
- package/dist/{pi-embedded-recovery-adapter-Cct1moq2.js → pi-embedded-recovery-adapter-mI-4XOPi.js} +37 -37
- package/dist/{pi-embedded-utils-Bqo7G8Hn.js → pi-embedded-utils-Df8_gFa-.js} +2 -2
- package/dist/{pi-model-discovery-Rjo2hv2p.js → pi-model-discovery-BWXqga5N.js} +1 -1
- package/dist/{pid-alive-TVJ4mVal.js → pid-alive-DIe5jzmE.js} +1 -1
- package/dist/{plugin-auto-enable-CbW6trDK.js → plugin-auto-enable-BtVVoq7k.js} +2 -2
- package/dist/{plugin-owned-work-recovery-adapter-CStAW3lt.js → plugin-owned-work-recovery-adapter-Civ7pCIM.js} +7 -7
- package/dist/{plugin-registry-BPGjlX1-.js → plugin-registry-B9Gdebb5.js} +4 -4
- package/dist/plugin-sdk/{agent-scope-Brtnf-qo.js → agent-scope-DsdTj4Lw.js} +1 -1
- package/dist/plugin-sdk/agent-turn-execute-B7OZd3j0.js +53 -0
- package/dist/plugin-sdk/{agent-turn-runner-BoyCp6a7.js → agent-turn-runner-DFx8RFgs.js} +7 -7
- package/dist/plugin-sdk/{api-key-rotation-rNPxdoXy.js → api-key-rotation-DLFDIQvI.js} +2 -2
- package/dist/plugin-sdk/{audio-preflight-7GBWBtz1.js → audio-preflight-BuvLfTSs.js} +18 -18
- package/dist/plugin-sdk/{audio-transcription-runner-Dh6ZjtWU.js → audio-transcription-runner-DVeHis5y.js} +10 -10
- package/dist/plugin-sdk/{auth-profiles-C9WuWuhF.js → auth-profiles-DWv_drRN.js} +3 -3
- package/dist/plugin-sdk/{chat-content-CLCeI_Qk.js → chat-content-CpswkXNb.js} +14 -14
- package/dist/plugin-sdk/{chrome-DT2r85gp.js → chrome-3OYkv183.js} +13 -13
- package/dist/plugin-sdk/{chunk-cBcZnYwM.js → chunk-BzqRmzIt.js} +4 -4
- package/dist/plugin-sdk/{command-queue-7UljN6ld.js → command-queue-CN4gqnUj.js} +2 -2
- package/dist/plugin-sdk/{commands-registry-D2pMVn_S.js → commands-registry-Bdwwpat-.js} +3 -3
- package/dist/plugin-sdk/deliver-B5KEZCZc.js +30 -0
- package/dist/plugin-sdk/{deliver-Bg_r4acr.js → deliver-hk3L8q2Q.js} +13 -13
- package/dist/plugin-sdk/{diagnostic-Cr-CoLa3.js → diagnostic-CEwjaZ_7.js} +5 -5
- package/dist/plugin-sdk/{diagnostic-session-state-DX8FyVQw.js → diagnostic-session-state-BzWdoxLm.js} +1 -1
- package/dist/plugin-sdk/{errors-D358LwuI.js → errors-CsbG_v7K.js} +1 -1
- package/dist/plugin-sdk/{fetch-Be4fqzal.js → fetch-DBno66KN.js} +1 -1
- package/dist/plugin-sdk/{fetch-ZGQKpqWb.js → fetch-WGWEe3le.js} +6 -6
- package/dist/plugin-sdk/{fetch-guard-BKTJU-gg.js → fetch-guard-A8GwiDhx.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-B3AzvZ4l.js → fs-safe-1aioFv3e.js} +3 -3
- package/dist/plugin-sdk/{inbound-context-BtSlo1sB.js → inbound-context-Bxf_1vgP.js} +1 -1
- package/dist/plugin-sdk/{ir-B4yx0AL3.js → ir-D_W-MQYl.js} +4 -4
- package/dist/plugin-sdk/{json-files-B__As2nb.js → json-files-BnqU_vp9.js} +6 -6
- package/dist/plugin-sdk/manager-B_wRtuCz.js +14 -0
- package/dist/plugin-sdk/{manager-BINTVC6-.js → manager-UVkpOLce.js} +7 -7
- package/dist/plugin-sdk/{markdown-tables-DFUNbiGy.js → markdown-tables-DN5kZ7HX.js} +3 -3
- package/dist/plugin-sdk/{monitor-Cv-Hb6Vg.js → monitor-1WWBQbrJ.js} +88 -88
- package/dist/plugin-sdk/{outbound-attachment-DRUsY_P3.js → outbound-attachment-D2FAxmw-.js} +2 -2
- package/dist/plugin-sdk/{path-alias-guards-CRi90QdZ.js → path-alias-guards-BaV88b3G.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-DpiYKs_-.js → pi-model-discovery-eQO5jtHE.js} +2 -2
- package/dist/plugin-sdk/provider-dispatcher-CIuwPWhR.js +53 -0
- package/dist/plugin-sdk/provider-media-understanding.js +7 -7
- package/dist/plugin-sdk/{proxy-env-CAAaD_vE.js → proxy-env-iizeE-yn.js} +1 -1
- package/dist/plugin-sdk/{pw-ai-DF_oDAcU.js → pw-ai-RkUVP2CG.js} +9 -9
- package/dist/plugin-sdk/{qmd-manager-DxXmjvMl.js → qmd-manager-DtWRq-3E.js} +8 -8
- package/dist/plugin-sdk/{qmd-scope-mVSXoI81.js → qmd-scope-hKKHM7ur.js} +1 -1
- package/dist/plugin-sdk/{query-expansion-Bu7AUpJ5.js → query-expansion-BF9IjXa5.js} +2 -2
- package/dist/plugin-sdk/{recorder-BsamU-hC.js → recorder-EjxEn6z5.js} +2 -2
- package/dist/plugin-sdk/{redact-Lv3jVFd_.js → redact-CuefNlXl.js} +1 -1
- package/dist/plugin-sdk/{registry-CSJhdmW7.js → registry-B-PTnKXn.js} +6 -6
- package/dist/plugin-sdk/replies-BWD2mqj4.js +24 -0
- package/dist/plugin-sdk/{replies-CFNkUmLR.js → replies-CgjY5QeJ.js} +5 -5
- package/dist/plugin-sdk/{reply-prefix-DNyziUbc.js → reply-prefix-B_4F5prZ.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-CBCLd9yp.js → resolve-route-BHhFfPZt.js} +4 -4
- package/dist/plugin-sdk/{send-b1bp0W-q.js → send-BCEdvryY.js} +8 -8
- package/dist/plugin-sdk/{send-kEZiGg40.js → send-BJGiPB1S.js} +8 -8
- package/dist/plugin-sdk/send-C6pt4yW6.js +21 -0
- package/dist/plugin-sdk/{send-DCt-5Eqo.js → send-CFy9VJtY.js} +6 -6
- package/dist/plugin-sdk/{send-Dx8aO_vF.js → send-CIwbHo3j.js} +16 -16
- package/dist/plugin-sdk/{send-1zs5bgjT.js → send-Ct68W7Yb.js} +7 -7
- package/dist/plugin-sdk/send-MGm8Xvbs.js +22 -0
- package/dist/plugin-sdk/send-WNRxCcA_.js +20 -0
- package/dist/plugin-sdk/{session-context-B4geQCsj.js → session-context-CMK0kc4L.js} +4 -4
- package/dist/plugin-sdk/{session-meta-cugffpHm.js → session-meta-CnQldSIv.js} +2 -2
- package/dist/plugin-sdk/{sessions-Dx1DxBM0.js → sessions-Bi3Stvmk.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-BIbJBws5.js → skill-commands-B-RjcEg8.js} +5 -5
- package/dist/plugin-sdk/{store-CP7sxsrB.js → store-BS62UMsC.js} +2 -2
- package/dist/plugin-sdk/subagent-registry-CWWUdAWI.js +53 -0
- package/dist/plugin-sdk/{subsystem-BRH2eiRx.js → subsystem-DbM6sYsb.js} +4 -4
- package/dist/plugin-sdk/{tables-C-7zslmS.js → tables-rlu-3LoD.js} +1 -1
- package/dist/plugin-sdk/testing.js +46 -46
- package/dist/plugin-sdk/{tokens-DEiV8tMG.js → tokens-DnxgKy4h.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-DnYfACQq.js → tool-loop-detection-CvzazEft.js} +1 -1
- package/dist/plugin-sdk/{user-run-recording-Cx-DPR7Y.js → user-run-recording-CuHcEoPI.js} +3 -3
- package/dist/{plugins-cli-B3yDmnzB.js → plugins-cli-xEbYlD1N.js} +110 -110
- package/dist/{ports-CbxaZ4JR.js → ports-DkQ0JgDq.js} +2 -2
- package/dist/{ports-CbjXbpjb.js → ports-R8I-Rd2p.js} +3 -3
- package/dist/{program-CiwRqh1J.js → program-Rzncx3aZ.js} +106 -106
- package/dist/{progress-80iGSJGv.js → progress-DGJz2cvq.js} +2 -2
- package/dist/{prompt-select-styled-Ds_J2iyU.js → prompt-select-styled-BeWIYKDx.js} +48 -48
- package/dist/{prompt-style-DUK2H9pQ.js → prompt-style-CevZQqqE.js} +1 -1
- package/dist/{provider-auth-helpers-C20ZUFM2.js → provider-auth-helpers-CLBGTBnJ.js} +6 -6
- package/dist/{proxy-env-BcMrDxNo.js → proxy-env-t-re7bCo.js} +1 -1
- package/dist/{push-apns-DspwiDEu.js → push-apns-CcZhsDRS.js} +10 -10
- package/dist/{pw-ai-BKN66RLi.js → pw-ai-6cOpjyxA.js} +1 -1
- package/dist/{pw-ai-BH-VHtsR.js → pw-ai-h0Uxwko3.js} +18 -18
- package/dist/{qmd-manager-JUjGk3hv.js → qmd-manager-DR95ckLZ.js} +25 -25
- package/dist/{qmd-scope-bewl8Eiz.js → qmd-scope-DGZXz9jW.js} +1 -1
- package/dist/{qr-cli-Bk-iHfQo.js → qr-cli-K0UQq59w.js} +9 -9
- package/dist/{query-expansion-BzoTldVy.js → query-expansion-DtX8mWw8.js} +10 -10
- package/dist/{reconcile-bundled-DM4QcNVH.js → reconcile-bundled-V0NDG76P.js} +3 -3
- package/dist/{recorder-CLU0QuFV.js → recorder-C5MQyLQu.js} +2 -2
- package/dist/{recovery-adapter-CjmLDOyV.js → recovery-adapter-BRrpxylo.js} +2 -2
- package/dist/{recovery-adapter-ye4l6Gn4.js → recovery-adapter-C1kHnt9q.js} +3 -3
- package/dist/{recovery-adapter-ipXNpK0H.js → recovery-adapter-D14MlfbA.js} +7 -7
- package/dist/{recovery-prompt-Bmmt8OXc.js → recovery-prompt-BEH6XjKs.js} +1 -1
- package/dist/{redact-snapshot-46g6fP3z.js → redact-snapshot-Dr2xSc0p.js} +2 -2
- package/dist/{register.agent-BAgBhHHu.js → register.agent-C5VjXiOa.js} +121 -121
- package/dist/register.configure-BrZHLfY5.js +169 -0
- package/dist/{register.maintenance-DZSlUCjt.js → register.maintenance-CRkCaoyK.js} +129 -129
- package/dist/{register.message-CmwWkv0S.js → register.message-T_8nxRk5.js} +100 -100
- package/dist/{register.onboard-D2FYzcez.js → register.onboard-V55Y2Ubu.js} +26 -26
- package/dist/{register.setup-Dviebdoo.js → register.setup-CADjhLHK.js} +29 -29
- package/dist/{register.status-health-sessions-ShjYv_Uh.js → register.status-health-sessions-DdVD0IOM.js} +119 -119
- package/dist/{register.subclis-DJxVoTQj.js → register.subclis-xNwfLrGG.js} +34 -34
- package/dist/{replies-DxPPKLeJ.js → replies-t1yaLy4q.js} +5 -5
- package/dist/{reply-directives-B_4oA3B0.js → reply-directives-De0PRN70.js} +2 -2
- package/dist/{reply-prefix-KAeJzNvt.js → reply-prefix-B0ufPLD2.js} +1 -1
- package/dist/{reset-CDG1YZWx.js → reset-DxYrusrF.js} +1 -1
- package/dist/{resolve-route-IeN1DK4w.js → resolve-route-CZXzecu6.js} +5 -5
- package/dist/{rpc-C7VnW-Aw.js → rpc-Bg0RuGsL.js} +3 -3
- package/dist/{run-main-CnNc7DLd.js → run-main-C-PQ_TDh.js} +119 -119
- package/dist/{runs-0PYx5aDJ.js → runs-DzlzC2_b.js} +7 -7
- package/dist/{runtime-B1z-tYeF.js → runtime-DxtfUxa-.js} +4 -4
- package/dist/{runtime-config-Dm2RpLJ7.js → runtime-config-DZ4anlFD.js} +1 -1
- package/dist/{runtime-config-collectors-Chqse-1v.js → runtime-config-collectors-rhm6uhD8.js} +1 -1
- package/dist/{runtime-guard-BGWl62dI.js → runtime-guard-7e_ZRPFH.js} +1 -1
- package/dist/{sandbox-DSs8pONL.js → sandbox-BcT2OU_g.js} +21 -21
- package/dist/{sandbox-cli-X1PaKHUO.js → sandbox-cli-Cghszshw.js} +33 -33
- package/dist/{secrets-cli-D1DpG6VH.js → secrets-cli-2cyObDEq.js} +16 -16
- package/dist/{security-cli-ZmvFe4nX.js → security-cli-y5Ln-Bce.js} +47 -47
- package/dist/{send-DizMtGn_.js → send-36dNynVs.js} +7 -7
- package/dist/{send-0JKFG0wR.js → send-CFvOM8pI.js} +6 -6
- package/dist/{send-BPuhxPvx.js → send-CVaGAWEm.js} +6 -6
- package/dist/{send-S06NYAWt.js → send-D1V_gt-x.js} +13 -13
- package/dist/{server-B_-KxUi3.js → server-DvHjKPLj.js} +24 -24
- package/dist/{server-context-D_ZTBjWX.js → server-context-DXaMid9A.js} +12 -12
- package/dist/{server-lifecycle-CAXoy64R.js → server-lifecycle-BHXiQH6m.js} +3 -3
- package/dist/{server-middleware-BxKu1j_s.js → server-middleware-CaVc3KiU.js} +1 -1
- package/dist/{server-node-events-3XEsy92y.js → server-node-events-D_Ue3RLX.js} +100 -100
- package/dist/{service-DMkBvr4B.js → service-DoOh34VG.js} +15 -15
- package/dist/{session-consumer-agents-CBqraSzI.js → session-consumer-agents-Zo97FAeD.js} +1 -1
- package/dist/{session-consumer-claim-sweep-AZ5o8Cu-.js → session-consumer-claim-sweep-xufX6DVl.js} +9 -9
- package/dist/{session-key-BRw3GFxY.js → session-key-Cr27HfX5.js} +1 -1
- package/dist/{session-meta-WRN3ZcJ5.js → session-meta-wyuckoIK.js} +1 -1
- package/dist/{session-storage-7cXTEQfZ.js → session-storage-CwLPwLoF.js} +22 -22
- package/dist/{session-storage-owner-BLPjnobT.js → session-storage-owner-D0BMYGR6.js} +53 -53
- package/dist/{session-store-targets-i0Ss9Rbv.js → session-store-targets-hup1YSx3.js} +3 -3
- package/dist/{session-utils-Btoq903T.js → session-utils-BsJs6MoS.js} +9 -9
- package/dist/{sessions-Dp4oQDh2.js → sessions-CXVIRQ7I.js} +6 -6
- package/dist/{sessions-DPV-OS7q.js → sessions-D5-WnU1c.js} +5 -5
- package/dist/{sessions-Bi3UGKUO.js → sessions-DQ3diYco.js} +17 -17
- package/dist/{sessions-claims-status-Dhd9Pthy.js → sessions-claims-status-BIYvHBRD.js} +11 -11
- package/dist/{sessions-maintenance-core-C2cCpUiU.js → sessions-maintenance-core-CmawGRLz.js} +8 -8
- package/dist/{setup-helpers-zG3DfqLd.js → setup-helpers-BQ-rg8A3.js} +1 -1
- package/dist/{shared-B32sbGiP.js → shared-CN5xidM6.js} +4 -4
- package/dist/{shared-COhRUP1S.js → shared-DCN12ugV.js} +2 -2
- package/dist/{skill-commands-BktltILY.js → skill-commands-DKmd3uhq.js} +7 -7
- package/dist/{skill-scanner-ubz0B8p_.js → skill-scanner-YQwX3yC-.js} +7 -7
- package/dist/{skills-cli-DE9fB_sx.js → skills-cli-mRBgNuUB.js} +9 -9
- package/dist/{skills-install-Cu_sfOVw.js → skills-install-B5X0Cyhn.js} +9 -9
- package/dist/{skills-CWQC3bQU.js → skills-rshN3U9G.js} +6 -6
- package/dist/{skills-status--U7Dyunf.js → skills-status-C40ecVhY.js} +3 -3
- package/dist/{status-CCetLhy5.js → status-D-NG9OFK.js} +49 -49
- package/dist/{status.update-CHNp32m-.js → status.update-BjR63JWs.js} +2 -2
- package/dist/{storage-config-CS0-6wW6.js → storage-config-BJj76p6F.js} +4 -4
- package/dist/{store-ccSeveJ0.js → store-BKtDaCRf.js} +7 -7
- package/dist/{subsystem-BNf8H-Zm.js → subsystem-xTuYkxuQ.js} +1 -1
- package/dist/{supervisor-RBm1KDN1.js → supervisor-CbcownOj.js} +2 -2
- package/dist/{system-cli-YRe6nHya.js → system-cli-CqiLRr8j.js} +13 -13
- package/dist/{system-run-command-CtzUrDfp.js → system-run-command-DmwSJZGF.js} +2 -2
- package/dist/{systemd-CyRDQg6V.js → systemd-DCrSOh9E.js} +11 -11
- package/dist/{systemd-hints-CPEnXHmj.js → systemd-hints-Dc0OitcD.js} +9 -9
- package/dist/{systemd-linger-AXTvmw5z.js → systemd-linger-j9L7X6dA.js} +2 -2
- package/dist/{table-BRTxbR4E.js → table-Buk61GwP.js} +2 -2
- package/dist/{tables-BhzelQWA.js → tables-B62PgWcr.js} +1 -1
- package/dist/{tailnet-CBZAvwAf.js → tailnet-B5JdDATD.js} +1 -1
- package/dist/{tailscale-IMHmOQwv.js → tailscale-BiCf3X3Y.js} +2 -2
- package/dist/{task-pipeline-boot-BqE_GrmQ.js → task-pipeline-boot-DgTg-CLO.js} +100 -100
- package/dist/{task-runlog-retention-v6UWCQjX.js → task-runlog-retention-Cq2OgFdi.js} +5 -5
- package/dist/{tasks-B4CFmiA3.js → tasks-B8WGpUhG.js} +11 -11
- package/dist/{tokens-B0SYKifB.js → tokens-D5eYPE3_.js} +1 -1
- package/dist/{tool-display-CjfVgl4p.js → tool-display-BuSkjyOX.js} +1 -1
- package/dist/{tool-loop-detection--ScllGh1.js → tool-loop-detection-DcldeAQA.js} +2 -2
- package/dist/{trash-DhfDhVld.js → trash-D8OVe313.js} +3 -3
- package/dist/{tui-BtDuMK-Q.js → tui-Bbgsj5cD.js} +9 -9
- package/dist/{tui-cli-AAdDdzBF.js → tui-cli-BB3hPnig.js} +35 -35
- package/dist/{update-MKP9QOUt.js → update-OC3VeAt9.js} +3 -3
- package/dist/{update-cli-BSA_q7RE.js → update-cli-DqM1XIf_.js} +139 -139
- package/dist/{update-runner-BMqGHvjP.js → update-runner-CtQqJO0C.js} +18 -18
- package/dist/{user-run-recording-Cw29-tG1.js → user-run-recording-DrY68KAf.js} +2 -2
- package/dist/{validation-cli-VaCU6by-.js → validation-cli-CdS1nA-4.js} +99 -99
- package/dist/{web-cli-Dp96CkEW.js → web-cli-DvWcPGwe.js} +3 -3
- package/dist/{webhooks-cli--2FyIwfR.js → webhooks-cli-VMJNe3gx.js} +10 -10
- package/dist/{widearea-dns-BhBfoR1S.js → widearea-dns-CvnQrk1m.js} +1 -1
- package/dist/{with-timeout-BbJQtRIl.js → with-timeout-DG_Ef3S1.js} +6 -6
- package/dist/{workspace-C4JU6kgP.js → workspace-C8NxbJFT.js} +2 -2
- package/dist/{workspace-dirs-DBNKIvKX.js → workspace-dirs-B1dGJTd4.js} +1 -1
- package/dist/{ws-BafnkIRl.js → ws-Dnz-ugxp.js} +2 -2
- package/dist/{wsl-CG9o9v6x.js → wsl-Bm8bcioC.js} +2 -2
- package/extensions/acpx/package.json +1 -1
- package/extensions/anthropic/package.json +1 -1
- package/extensions/bifrost/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/deepgram/package.json +1 -1
- package/extensions/deepinfra/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diffs/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/dream-cycle/package.json +1 -1
- package/extensions/elevenlabs/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/gemini-search/package.json +1 -1
- package/extensions/google/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/grok-search/package.json +1 -1
- package/extensions/groq/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/kimi-search/package.json +1 -1
- package/extensions/kokoro/package.json +1 -1
- package/extensions/learning-core/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +1 -1
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/mistral/package.json +1 -1
- package/extensions/moonshot/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +1 -1
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +1 -1
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/openai/package.json +1 -1
- package/extensions/openai-realtime/package.json +1 -1
- package/extensions/openrouter/package.json +1 -1
- package/extensions/perplexity-search/package.json +1 -1
- package/extensions/searxng-search/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +1 -1
- package/extensions/twitch/package.json +1 -1
- package/extensions/ui-surfaces/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +1 -1
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zai/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +1 -1
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +1 -1
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/clawbot-cli-D1k1DpEc.js +0 -31
- package/dist/cli-Dc-MpdqR.js +0 -165
- package/dist/plugin-sdk/agent-turn-execute-UxpRMk9j.js +0 -53
- package/dist/plugin-sdk/deliver-CM8QDSXe.js +0 -30
- package/dist/plugin-sdk/manager-DHw8x1pr.js +0 -14
- package/dist/plugin-sdk/provider-dispatcher-B7p6f3-i.js +0 -53
- package/dist/plugin-sdk/replies-Djswi7iH.js +0 -24
- package/dist/plugin-sdk/send-CTz3VFmd.js +0 -21
- package/dist/plugin-sdk/send-DsxMWGTy.js +0 -22
- package/dist/plugin-sdk/send-RHWHegWE.js +0 -20
- package/dist/plugin-sdk/subagent-registry-Ck6o6MPJ.js +0 -53
- package/dist/register.configure-zu159EnI.js +0 -169
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { _t as isRecord, xt as resolveHomeDir } from "./globals-
|
|
1
|
+
import { _t as isRecord, xt as resolveHomeDir } from "./globals-3lUHnZas.js";
|
|
2
2
|
import { f as resolveLegacyStateDirs, g as resolveStateDir, m as resolveOAuthDir, p as resolveNewStateDir, t as CONFIG_PATH } from "./paths-BMo6kTge.js";
|
|
3
|
-
import { Ar as listChannelPlugins, Oa as resolveCommandResolutionFromArgv, Vt as normalizeChatChannelId, _a as normalizeTrustedSafeBinDirs, di as parseToolsBySenderTypedKey, do as resolveSlackStreamingMode, fo as resolveTelegramPreviewStreamMode, g as OpenClawSchema, ha as isTrustedSafeBinPath, lo as resolveDiscordPreviewStreamMode, ma as getTrustedSafeBinDirs, n as migrateLegacyConfig, oo as formatSlackStreamModeMigrationMessage, so as formatSlackStreamingBooleanMigrationMessage, u as readConfigFileSnapshot, uo as resolveSlackNativeStreaming, xt as resolveEnableState, yt as normalizePluginsConfig } from "./config-
|
|
4
|
-
import { O as DEFAULT_ACCOUNT_ID, k as normalizeAccountId, p as normalizeAgentId } from "./session-key-
|
|
5
|
-
import { d as resolveDefaultAgentId } from "./agent-scope-
|
|
3
|
+
import { Ar as listChannelPlugins, Oa as resolveCommandResolutionFromArgv, Vt as normalizeChatChannelId, _a as normalizeTrustedSafeBinDirs, di as parseToolsBySenderTypedKey, do as resolveSlackStreamingMode, fo as resolveTelegramPreviewStreamMode, g as OpenClawSchema, ha as isTrustedSafeBinPath, lo as resolveDiscordPreviewStreamMode, ma as getTrustedSafeBinDirs, n as migrateLegacyConfig, oo as formatSlackStreamModeMigrationMessage, so as formatSlackStreamingBooleanMigrationMessage, u as readConfigFileSnapshot, uo as resolveSlackNativeStreaming, xt as resolveEnableState, yt as normalizePluginsConfig } from "./config-D--rwfpd.js";
|
|
4
|
+
import { O as DEFAULT_ACCOUNT_ID, k as normalizeAccountId, p as normalizeAgentId } from "./session-key-Cr27HfX5.js";
|
|
5
|
+
import { d as resolveDefaultAgentId } from "./agent-scope-BZ0wFh-U.js";
|
|
6
6
|
import { t as formatCliCommand } from "./command-format-DWAk9aIH.js";
|
|
7
|
-
import { r as resolveMergedSafeBinProfileFixtures, t as listInterpreterLikeSafeBins } from "./exec-safe-bin-runtime-policy-
|
|
8
|
-
import { i as readChannelAllowFromStore } from "./pairing-store-
|
|
9
|
-
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-
|
|
7
|
+
import { r as resolveMergedSafeBinProfileFixtures, t as listInterpreterLikeSafeBins } from "./exec-safe-bin-runtime-policy-CY75nr5s.js";
|
|
8
|
+
import { i as readChannelAllowFromStore } from "./pairing-store-BbBjVYYR.js";
|
|
9
|
+
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BtVVoq7k.js";
|
|
10
10
|
import { t as collectProviderDangerousNameMatchingScopes } from "./dangerous-name-matching-Dk-YDcqh.js";
|
|
11
|
-
import { n as shouldMoveSingleAccountChannelKey } from "./setup-helpers-
|
|
12
|
-
import { t as note } from "./note-
|
|
13
|
-
import { t as isWithinDir } from "./path-safety-
|
|
14
|
-
import { n as formatConfigIssueLines } from "./issue-format-
|
|
11
|
+
import { n as shouldMoveSingleAccountChannelKey } from "./setup-helpers-BQ-rg8A3.js";
|
|
12
|
+
import { t as note } from "./note-D-rFqUUL.js";
|
|
13
|
+
import { t as isWithinDir } from "./path-safety-Dibh-nnA.js";
|
|
14
|
+
import { n as formatConfigIssueLines } from "./issue-format-DhAa1_iS.js";
|
|
15
15
|
import { a as isMattermostMutableAllowEntry, i as isMSTeamsMutableAllowEntry, n as isGoogleChatMutableAllowEntry, o as isSlackMutableAllowEntry, r as isIrcMutableAllowEntry, t as isDiscordMutableAllowEntry } from "./mutable-allowlist-detectors-ftXTPFTt.js";
|
|
16
16
|
import os from "node:os";
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
import fs from "node:fs";
|
|
19
|
-
import
|
|
19
|
+
import fsPromises from "node:fs/promises";
|
|
20
20
|
|
|
21
21
|
//#region src/commands/doctor-legacy-config.ts
|
|
22
22
|
function normalizeCompatibilityConfigValues(cfg) {
|
|
@@ -1839,7 +1839,7 @@ async function maybeMigrateLegacyConfig() {
|
|
|
1839
1839
|
const targetDir = path.join(home, ".openclaw");
|
|
1840
1840
|
const targetPath = path.join(targetDir, "openclaw.json");
|
|
1841
1841
|
try {
|
|
1842
|
-
await
|
|
1842
|
+
await fsPromises.access(targetPath);
|
|
1843
1843
|
return changes;
|
|
1844
1844
|
} catch {}
|
|
1845
1845
|
const legacyCandidates = [
|
|
@@ -1849,14 +1849,14 @@ async function maybeMigrateLegacyConfig() {
|
|
|
1849
1849
|
];
|
|
1850
1850
|
let legacyPath = null;
|
|
1851
1851
|
for (const candidate of legacyCandidates) try {
|
|
1852
|
-
await
|
|
1852
|
+
await fsPromises.access(candidate);
|
|
1853
1853
|
legacyPath = candidate;
|
|
1854
1854
|
break;
|
|
1855
1855
|
} catch {}
|
|
1856
1856
|
if (!legacyPath) return changes;
|
|
1857
|
-
await
|
|
1857
|
+
await fsPromises.mkdir(targetDir, { recursive: true });
|
|
1858
1858
|
try {
|
|
1859
|
-
await
|
|
1859
|
+
await fsPromises.copyFile(legacyPath, targetPath, fsPromises.constants.COPYFILE_EXCL);
|
|
1860
1860
|
changes.push(`Migrated legacy config: ${legacyPath} -> ${targetPath}`);
|
|
1861
1861
|
} catch {}
|
|
1862
1862
|
return changes;
|
|
@@ -1918,7 +1918,7 @@ async function loadAndMaybeMigrateDoctorConfig(params) {
|
|
|
1918
1918
|
const mediaUnderstandingWarnings = collectMediaUnderstandingWarnings(candidate);
|
|
1919
1919
|
if (mediaUnderstandingWarnings.length > 0) note(mediaUnderstandingWarnings.join("\n"), "Doctor warnings");
|
|
1920
1920
|
if (params.loadChannelPlugins) try {
|
|
1921
|
-
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-
|
|
1921
|
+
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-B9Gdebb5.js").then((n) => n.n);
|
|
1922
1922
|
ensurePluginRegistryLoaded(candidate);
|
|
1923
1923
|
} catch {}
|
|
1924
1924
|
if (shouldRepair) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Vt as normalizeChatChannelId } from "./config-
|
|
2
|
-
import { r as ensurePluginAllowlisted } from "./plugin-auto-enable-
|
|
1
|
+
import { Vt as normalizeChatChannelId } from "./config-D--rwfpd.js";
|
|
2
|
+
import { r as ensurePluginAllowlisted } from "./plugin-auto-enable-BtVVoq7k.js";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/toggle-config.ts
|
|
5
5
|
function setPluginEnabledInConfig(config, pluginId, enabled) {
|
package/dist/entry.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Ht as isRootVersionInvocation, Rt as hasHelpOrVersion, Vt as isRootHelpInvocation } from "./globals-
|
|
2
|
+
import { Ht as isRootVersionInvocation, Rt as hasHelpOrVersion, Vt as isRootHelpInvocation } from "./globals-3lUHnZas.js";
|
|
3
3
|
import { y as resolveRequiredHomeDir } from "./paths-BMo6kTge.js";
|
|
4
4
|
import { t as isValidProfileName } from "./profile-utils-DMZjJPo2.js";
|
|
5
5
|
import { n as resolveProcessScopedMap } from "./plain-object-Doc_YkH1.js";
|
|
6
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
6
|
+
import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
|
|
7
7
|
import { t as parseBooleanValue } from "./boolean-C71HJEcH.js";
|
|
8
8
|
import { enableCompileCache } from "node:module";
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
@@ -381,7 +381,7 @@ if (!isMainModule({
|
|
|
381
381
|
}
|
|
382
382
|
function tryHandleRootHelpFastPath(argv) {
|
|
383
383
|
if (!isRootHelpInvocation(argv)) return false;
|
|
384
|
-
import("./program-
|
|
384
|
+
import("./program-Rzncx3aZ.js").then(({ buildProgram }) => {
|
|
385
385
|
buildProgram().outputHelp();
|
|
386
386
|
}).catch((error) => {
|
|
387
387
|
console.error("[openclaw] Failed to display help:", error instanceof Error ? error.stack ?? error.message : error);
|
|
@@ -400,7 +400,7 @@ if (!isMainModule({
|
|
|
400
400
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
401
401
|
process$1.argv = parsed.argv;
|
|
402
402
|
}
|
|
403
|
-
if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-
|
|
403
|
+
if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-C-PQ_TDh.js").then(({ runCli }) => runCli(process$1.argv)).then(() => flushStdio()).then(() => process$1.exit(process$1.exitCode ?? 0)).catch(async (error) => {
|
|
404
404
|
console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
405
405
|
await flushStdio();
|
|
406
406
|
process$1.exit(process$1.exitCode ?? 1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as shouldLogVerbose, h as getLogger, n as info, o as logVerboseConsole, t as danger, u as warn } from "./globals-
|
|
2
|
-
import { m as defaultRuntime, t as createSubsystemLogger } from "./subsystem-
|
|
1
|
+
import { c as shouldLogVerbose, h as getLogger, n as info, o as logVerboseConsole, t as danger, u as warn } from "./globals-3lUHnZas.js";
|
|
2
|
+
import { m as defaultRuntime, t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
|
|
3
3
|
import { t as resolveCommandStdio } from "./spawn-utils-CbEMbWcD.js";
|
|
4
4
|
import { execFile, spawn } from "node:child_process";
|
|
5
5
|
import process from "node:process";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _ as expandHomePrefix } from "./paths-BMo6kTge.js";
|
|
2
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
3
|
-
import { t as DEFAULT_AGENT_ID } from "./session-key-
|
|
2
|
+
import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
|
|
3
|
+
import { t as DEFAULT_AGENT_ID } from "./session-key-Cr27HfX5.js";
|
|
4
4
|
import path, { basename, dirname, join } from "node:path";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Da as resolveAllowlistCandidatePath, Ea as matchAllowlist, Fa as isShellWrapperExecutable, Ma as extractShellWrapperInlineCommand, Oa as resolveCommandResolutionFromArgv, Pa as isDispatchWrapperExecutable, Ra as unwrapKnownDispatchWrapperInvocation, Sa as isWindowsPlatform, Ta as DEFAULT_SAFE_BINS, Wa as SAFE_BIN_PROFILES, ba as analyzeShellCommand, ha as isTrustedSafeBinPath, va as validateSafeBinArgv, wa as splitCommandChain, za as unwrapKnownShellMultiplexerInvocation } from "./config-
|
|
1
|
+
import { Da as resolveAllowlistCandidatePath, Ea as matchAllowlist, Fa as isShellWrapperExecutable, Ma as extractShellWrapperInlineCommand, Oa as resolveCommandResolutionFromArgv, Pa as isDispatchWrapperExecutable, Ra as unwrapKnownDispatchWrapperInvocation, Sa as isWindowsPlatform, Ta as DEFAULT_SAFE_BINS, Wa as SAFE_BIN_PROFILES, ba as analyzeShellCommand, ha as isTrustedSafeBinPath, va as validateSafeBinArgv, wa as splitCommandChain, za as unwrapKnownShellMultiplexerInvocation } from "./config-D--rwfpd.js";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
4
|
//#region src/infra/exec-approvals-allowlist.ts
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { f as isRich, p as theme } from "./globals-
|
|
1
|
+
import { f as isRich, p as theme } from "./globals-3lUHnZas.js";
|
|
2
2
|
import "./paths-BMo6kTge.js";
|
|
3
|
-
import { m as defaultRuntime } from "./subsystem-
|
|
3
|
+
import { m as defaultRuntime } from "./subsystem-xTuYkxuQ.js";
|
|
4
4
|
import "./boolean-C71HJEcH.js";
|
|
5
|
-
import "./config-
|
|
5
|
+
import "./config-D--rwfpd.js";
|
|
6
6
|
import "./version-D_9__Xw6.js";
|
|
7
|
-
import "./agent-scope-
|
|
8
|
-
import "./exec-
|
|
7
|
+
import "./agent-scope-BZ0wFh-U.js";
|
|
8
|
+
import "./exec-DWOKM6EC.js";
|
|
9
9
|
import "./github-copilot-token-CvN6iidT.js";
|
|
10
|
-
import "./pid-alive-
|
|
10
|
+
import "./pid-alive-DIe5jzmE.js";
|
|
11
11
|
import "./static-app-DG39qMau.js";
|
|
12
12
|
import "./retry-policy-BIRWkDiU.js";
|
|
13
|
-
import "./tailnet-
|
|
14
|
-
import "./ws-
|
|
13
|
+
import "./tailnet-B5JdDATD.js";
|
|
14
|
+
import "./ws-Dnz-ugxp.js";
|
|
15
15
|
import "./task-run-types-CXp-wZyE.js";
|
|
16
|
-
import "./exec-approvals-allowlist-
|
|
17
|
-
import "./client-
|
|
18
|
-
import "./call-
|
|
16
|
+
import "./exec-approvals-allowlist-CfzuCK0Q.js";
|
|
17
|
+
import "./client-DsaKKPz1.js";
|
|
18
|
+
import "./call-BY-wbSIJ.js";
|
|
19
19
|
import "./pairing-token-D1vOP4TH.js";
|
|
20
20
|
import { n as formatTimeAgo } from "./format-relative-BwbQjKKI.js";
|
|
21
|
-
import { h as saveExecApprovals, l as readExecApprovalsSnapshot } from "./exec-approvals-
|
|
22
|
-
import { t as formatDocsLink } from "./links-
|
|
23
|
-
import "./progress-
|
|
24
|
-
import { n as callGatewayFromCli } from "./gateway-rpc-
|
|
25
|
-
import "./service-
|
|
26
|
-
import "./systemd-
|
|
27
|
-
import { t as renderTable } from "./table-
|
|
28
|
-
import { t as describeUnknownError } from "./shared-
|
|
29
|
-
import { a as resolveNodeId, r as nodesCallOpts } from "./rpc-
|
|
21
|
+
import { h as saveExecApprovals, l as readExecApprovalsSnapshot } from "./exec-approvals-CavJfWPl.js";
|
|
22
|
+
import { t as formatDocsLink } from "./links-CPIBVJ0k.js";
|
|
23
|
+
import "./progress-DGJz2cvq.js";
|
|
24
|
+
import { n as callGatewayFromCli } from "./gateway-rpc-CIkWW5n2.js";
|
|
25
|
+
import "./service-DoOh34VG.js";
|
|
26
|
+
import "./systemd-DCrSOh9E.js";
|
|
27
|
+
import { t as renderTable } from "./table-Buk61GwP.js";
|
|
28
|
+
import { t as describeUnknownError } from "./shared-DCN12ugV.js";
|
|
29
|
+
import { a as resolveNodeId, r as nodesCallOpts } from "./rpc-Bg0RuGsL.js";
|
|
30
30
|
import JSON5 from "json5";
|
|
31
|
-
import
|
|
31
|
+
import fsPromises from "node:fs/promises";
|
|
32
32
|
|
|
33
33
|
//#region src/cli/exec-approvals-cli.ts
|
|
34
34
|
async function readStdin() {
|
|
@@ -325,7 +325,7 @@ function registerExecApprovalsCli(program) {
|
|
|
325
325
|
if (!opts.file && !opts.stdin) exitWithError("Provide --file or --stdin.");
|
|
326
326
|
if (opts.file && opts.stdin) exitWithError("Use either --file or --stdin (not both).");
|
|
327
327
|
const { source, nodeId, targetLabel, baseHash } = await loadWritableSnapshotTarget(opts);
|
|
328
|
-
const raw = opts.stdin ? await readStdin() : await
|
|
328
|
+
const raw = opts.stdin ? await readStdin() : await fsPromises.readFile(String(opts.file), "utf8");
|
|
329
329
|
let file;
|
|
330
330
|
try {
|
|
331
331
|
file = JSON5.parse(raw);
|
package/dist/{exec-safe-bin-runtime-policy-h4hE5cjd.js → exec-safe-bin-runtime-policy-CY75nr5s.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Ga as normalizeSafeBinProfileFixtures, Ka as resolveSafeBinProfiles, _a as normalizeTrustedSafeBinDirs, ga as listWritableExplicitTrustedSafeBinDirs, ma as getTrustedSafeBinDirs } from "./config-
|
|
2
|
-
import { i as resolveSafeBins } from "./exec-approvals-allowlist-
|
|
1
|
+
import { Ga as normalizeSafeBinProfileFixtures, Ka as resolveSafeBinProfiles, _a as normalizeTrustedSafeBinDirs, ga as listWritableExplicitTrustedSafeBinDirs, ma as getTrustedSafeBinDirs } from "./config-D--rwfpd.js";
|
|
2
|
+
import { i as resolveSafeBins } from "./exec-approvals-allowlist-CfzuCK0Q.js";
|
|
3
3
|
|
|
4
4
|
//#region src/infra/exec-safe-bin-runtime-policy.ts
|
|
5
5
|
const INTERPRETER_LIKE_SAFE_BINS = new Set([
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { X as isPathInside, Y as isNotFoundPathError, kt as resolvePreferredOpenClawTmpDir } from "./globals-
|
|
2
|
-
import { c as loadConfig } from "./config-
|
|
3
|
-
import { i as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-
|
|
1
|
+
import { X as isPathInside, Y as isNotFoundPathError, kt as resolvePreferredOpenClawTmpDir } from "./globals-3lUHnZas.js";
|
|
2
|
+
import { c as loadConfig } from "./config-D--rwfpd.js";
|
|
3
|
+
import { i as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-sWugzmbo.js";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import
|
|
5
|
+
import fsPromises from "node:fs/promises";
|
|
6
6
|
import { createHmac } from "node:crypto";
|
|
7
7
|
|
|
8
8
|
//#region src/browser/constants.ts
|
|
@@ -56,28 +56,28 @@ function invalidPath(scopeLabel) {
|
|
|
56
56
|
}
|
|
57
57
|
async function resolveRealPathIfExists(targetPath) {
|
|
58
58
|
try {
|
|
59
|
-
return await
|
|
59
|
+
return await fsPromises.realpath(targetPath);
|
|
60
60
|
} catch {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
async function resolveTrustedRootRealPath(rootDir) {
|
|
65
65
|
try {
|
|
66
|
-
const rootLstat = await
|
|
66
|
+
const rootLstat = await fsPromises.lstat(rootDir);
|
|
67
67
|
if (!rootLstat.isDirectory() || rootLstat.isSymbolicLink()) return;
|
|
68
|
-
return await
|
|
68
|
+
return await fsPromises.realpath(rootDir);
|
|
69
69
|
} catch {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
async function validateCanonicalPathWithinRoot(params) {
|
|
74
74
|
try {
|
|
75
|
-
const candidateLstat = await
|
|
75
|
+
const candidateLstat = await fsPromises.lstat(params.candidatePath);
|
|
76
76
|
if (candidateLstat.isSymbolicLink()) return "invalid";
|
|
77
77
|
if (params.expect === "directory" && !candidateLstat.isDirectory()) return "invalid";
|
|
78
78
|
if (params.expect === "file" && !candidateLstat.isFile()) return "invalid";
|
|
79
79
|
if (params.expect === "file" && candidateLstat.nlink > 1) return "invalid";
|
|
80
|
-
const candidateRealPath = await
|
|
80
|
+
const candidateRealPath = await fsPromises.realpath(params.candidatePath);
|
|
81
81
|
return isPathInside(params.rootRealPath, candidateRealPath) ? "ok" : "invalid";
|
|
82
82
|
} catch (err) {
|
|
83
83
|
return isNotFoundPathError(err) ? "not-found" : "invalid";
|
|
@@ -155,7 +155,7 @@ async function resolveCheckedPathsWithinRoot(params) {
|
|
|
155
155
|
};
|
|
156
156
|
if (!rootRealPath || !raw || !path.isAbsolute(raw)) return lexicalPathResult;
|
|
157
157
|
try {
|
|
158
|
-
const resolvedExistingPath = await
|
|
158
|
+
const resolvedExistingPath = await fsPromises.realpath(raw);
|
|
159
159
|
const relativePath = path.relative(rootRealPath, resolvedExistingPath);
|
|
160
160
|
if (!isInRoot(relativePath)) return lexicalPathResult;
|
|
161
161
|
return {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { kt as resolvePreferredOpenClawTmpDir } from "./globals-
|
|
1
|
+
import { kt as resolvePreferredOpenClawTmpDir } from "./globals-3lUHnZas.js";
|
|
2
2
|
import { g as resolveStateDir } from "./paths-BMo6kTge.js";
|
|
3
3
|
import { n as resolveProcessScopedMap } from "./plain-object-Doc_YkH1.js";
|
|
4
|
-
import { c as loadConfig } from "./config-
|
|
5
|
-
import { u as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
4
|
+
import { c as loadConfig } from "./config-D--rwfpd.js";
|
|
5
|
+
import { u as resolveAgentWorkspaceDir } from "./agent-scope-BZ0wFh-U.js";
|
|
6
6
|
import { n as redactSensitiveText } from "./redact-OtHqr7lm.js";
|
|
7
7
|
import { r as formatErrorChainMessage } from "./errors-zRgI_PDI.js";
|
|
8
|
-
import { c as detectMime, l as extensionForMime } from "./image-ops-
|
|
8
|
+
import { c as detectMime, l as extensionForMime } from "./image-ops-C0np5f9V.js";
|
|
9
9
|
import { t as resolveNetworkSsrFPolicy } from "./ssrf-config-qRiQMP-8.js";
|
|
10
|
-
import { n as withStrictGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-
|
|
10
|
+
import { n as withStrictGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-TJQinE0a.js";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
|
|
13
13
|
//#region src/media/local-roots.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as logInfo, o as logWarn } from "./exec-
|
|
2
|
-
import { c as resolvePinnedHostnameWithPolicy, i as createPinnedDispatcher, n as SsrFBlockedError, o as isPrivateIpAddress, r as closeDispatcher, t as hasProxyEnvConfigured } from "./proxy-env-
|
|
1
|
+
import { a as logInfo, o as logWarn } from "./exec-DWOKM6EC.js";
|
|
2
|
+
import { c as resolvePinnedHostnameWithPolicy, i as createPinnedDispatcher, n as SsrFBlockedError, o as isPrivateIpAddress, r as closeDispatcher, t as hasProxyEnvConfigured } from "./proxy-env-t-re7bCo.js";
|
|
3
3
|
import { t as bindAbortRelay } from "./fetch-timeout-1Rifi233.js";
|
|
4
4
|
import { EnvHttpProxyAgent, FormData, ProxyAgent, fetch } from "undici";
|
|
5
5
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { J as hasNodeErrorCode, W as sameFileIdentity, X as isPathInside, Y as isNotFoundPathError, Z as isSymlinkOpenError } from "./globals-
|
|
1
|
+
import { J as hasNodeErrorCode, W as sameFileIdentity, X as isPathInside, Y as isNotFoundPathError, Z as isSymlinkOpenError } from "./globals-3lUHnZas.js";
|
|
2
2
|
import { _ as expandHomePrefix } from "./paths-BMo6kTge.js";
|
|
3
|
-
import { o as logWarn } from "./exec-
|
|
4
|
-
import { n as assertNoPathAliasEscape } from "./path-alias-guards-
|
|
3
|
+
import { o as logWarn } from "./exec-DWOKM6EC.js";
|
|
4
|
+
import { n as assertNoPathAliasEscape } from "./path-alias-guards-DhwCAYKX.js";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { constants } from "node:fs";
|
|
8
|
-
import
|
|
8
|
+
import fsPromises from "node:fs/promises";
|
|
9
9
|
import { randomUUID } from "node:crypto";
|
|
10
10
|
import { pipeline } from "node:stream/promises";
|
|
11
11
|
|
|
@@ -25,19 +25,19 @@ const ensureTrailingSep = (value) => value.endsWith(path.sep) ? value : value +
|
|
|
25
25
|
async function expandRelativePathWithHome(relativePath) {
|
|
26
26
|
let home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
27
27
|
try {
|
|
28
|
-
home = await
|
|
28
|
+
home = await fsPromises.realpath(home);
|
|
29
29
|
} catch {}
|
|
30
30
|
return expandHomePrefix(relativePath, { home });
|
|
31
31
|
}
|
|
32
32
|
async function openVerifiedLocalFile(filePath, options) {
|
|
33
33
|
try {
|
|
34
|
-
if ((await
|
|
34
|
+
if ((await fsPromises.lstat(filePath)).isDirectory()) throw new SafeOpenError("not-file", "not a file");
|
|
35
35
|
} catch (err) {
|
|
36
36
|
if (err instanceof SafeOpenError) throw err;
|
|
37
37
|
}
|
|
38
38
|
let handle;
|
|
39
39
|
try {
|
|
40
|
-
handle = await
|
|
40
|
+
handle = await fsPromises.open(filePath, OPEN_READ_FLAGS);
|
|
41
41
|
} catch (err) {
|
|
42
42
|
if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "file not found");
|
|
43
43
|
if (isSymlinkOpenError(err)) throw new SafeOpenError("symlink", "symlink open blocked", { cause: err });
|
|
@@ -45,13 +45,13 @@ async function openVerifiedLocalFile(filePath, options) {
|
|
|
45
45
|
throw err;
|
|
46
46
|
}
|
|
47
47
|
try {
|
|
48
|
-
const [stat, lstat] = await Promise.all([handle.stat(),
|
|
48
|
+
const [stat, lstat] = await Promise.all([handle.stat(), fsPromises.lstat(filePath)]);
|
|
49
49
|
if (lstat.isSymbolicLink()) throw new SafeOpenError("symlink", "symlink not allowed");
|
|
50
50
|
if (!stat.isFile()) throw new SafeOpenError("not-file", "not a file");
|
|
51
51
|
if (options?.rejectHardlinks && stat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
|
|
52
52
|
if (!sameFileIdentity(stat, lstat)) throw new SafeOpenError("path-mismatch", "path changed during read");
|
|
53
|
-
const realPath = await
|
|
54
|
-
const realStat = await
|
|
53
|
+
const realPath = await fsPromises.realpath(filePath);
|
|
54
|
+
const realStat = await fsPromises.stat(realPath);
|
|
55
55
|
if (options?.rejectHardlinks && realStat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
|
|
56
56
|
if (!sameFileIdentity(stat, realStat)) throw new SafeOpenError("path-mismatch", "path mismatch");
|
|
57
57
|
return {
|
|
@@ -69,7 +69,7 @@ async function openVerifiedLocalFile(filePath, options) {
|
|
|
69
69
|
async function resolvePathWithinRoot(params) {
|
|
70
70
|
let rootReal;
|
|
71
71
|
try {
|
|
72
|
-
rootReal = await
|
|
72
|
+
rootReal = await fsPromises.realpath(params.rootDir);
|
|
73
73
|
} catch (err) {
|
|
74
74
|
if (isNotFoundPathError(err)) throw new SafeOpenError("not-found", "root dir not found");
|
|
75
75
|
throw err;
|
|
@@ -170,7 +170,7 @@ function buildAtomicWriteTempPath(targetPath) {
|
|
|
170
170
|
return path.join(dir, `.${base}.${process.pid}.${randomUUID()}.tmp`);
|
|
171
171
|
}
|
|
172
172
|
async function writeTempFileForAtomicReplace(params) {
|
|
173
|
-
const tempHandle = await
|
|
173
|
+
const tempHandle = await fsPromises.open(params.tempPath, OPEN_WRITE_CREATE_FLAGS, params.mode);
|
|
174
174
|
try {
|
|
175
175
|
if (typeof params.data === "string") await tempHandle.writeFile(params.data, params.encoding ?? "utf8");
|
|
176
176
|
else await tempHandle.writeFile(params.data);
|
|
@@ -180,7 +180,7 @@ async function writeTempFileForAtomicReplace(params) {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
async function verifyAtomicWriteResult(params) {
|
|
183
|
-
const rootWithSep = ensureTrailingSep(await
|
|
183
|
+
const rootWithSep = ensureTrailingSep(await fsPromises.realpath(params.rootDir));
|
|
184
184
|
const opened = await openVerifiedLocalFile(params.targetPath, { rejectHardlinks: true });
|
|
185
185
|
try {
|
|
186
186
|
if (!sameFileIdentity(opened.stat, params.expectedStat)) throw new SafeOpenError("path-mismatch", "path changed during write");
|
|
@@ -191,13 +191,13 @@ async function verifyAtomicWriteResult(params) {
|
|
|
191
191
|
}
|
|
192
192
|
async function resolveOpenedFileRealPathForHandle(handle, ioPath) {
|
|
193
193
|
try {
|
|
194
|
-
return await
|
|
194
|
+
return await fsPromises.realpath(ioPath);
|
|
195
195
|
} catch (err) {
|
|
196
196
|
if (!isNotFoundPathError(err)) throw err;
|
|
197
197
|
}
|
|
198
198
|
const fdCandidates = process.platform === "linux" ? [`/proc/self/fd/${handle.fd}`, `/dev/fd/${handle.fd}`] : process.platform === "win32" ? [] : [`/dev/fd/${handle.fd}`];
|
|
199
199
|
for (const fdPath of fdCandidates) try {
|
|
200
|
-
return await
|
|
200
|
+
return await fsPromises.realpath(fdPath);
|
|
201
201
|
} catch {}
|
|
202
202
|
throw new SafeOpenError("path-mismatch", "unable to resolve opened file path");
|
|
203
203
|
}
|
|
@@ -212,10 +212,10 @@ async function openWritableFileWithinRoot(params) {
|
|
|
212
212
|
} catch (err) {
|
|
213
213
|
throw new SafeOpenError("invalid-path", "path alias escape blocked", { cause: err });
|
|
214
214
|
}
|
|
215
|
-
if (params.mkdir !== false) await
|
|
215
|
+
if (params.mkdir !== false) await fsPromises.mkdir(path.dirname(resolved), { recursive: true });
|
|
216
216
|
let ioPath = resolved;
|
|
217
217
|
try {
|
|
218
|
-
const resolvedRealPath = await
|
|
218
|
+
const resolvedRealPath = await fsPromises.realpath(resolved);
|
|
219
219
|
if (!isPathInside(rootWithSep, resolvedRealPath)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
|
|
220
220
|
ioPath = resolvedRealPath;
|
|
221
221
|
} catch (err) {
|
|
@@ -227,10 +227,10 @@ async function openWritableFileWithinRoot(params) {
|
|
|
227
227
|
let createdForWrite = false;
|
|
228
228
|
try {
|
|
229
229
|
try {
|
|
230
|
-
handle = await
|
|
230
|
+
handle = await fsPromises.open(ioPath, OPEN_WRITE_EXISTING_FLAGS, fileMode);
|
|
231
231
|
} catch (err) {
|
|
232
232
|
if (!isNotFoundPathError(err)) throw err;
|
|
233
|
-
handle = await
|
|
233
|
+
handle = await fsPromises.open(ioPath, OPEN_WRITE_CREATE_FLAGS, fileMode);
|
|
234
234
|
createdForWrite = true;
|
|
235
235
|
}
|
|
236
236
|
} catch (err) {
|
|
@@ -244,7 +244,7 @@ async function openWritableFileWithinRoot(params) {
|
|
|
244
244
|
if (!stat.isFile()) throw new SafeOpenError("invalid-path", "path is not a regular file under root");
|
|
245
245
|
if (stat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
|
|
246
246
|
try {
|
|
247
|
-
const lstat = await
|
|
247
|
+
const lstat = await fsPromises.lstat(ioPath);
|
|
248
248
|
if (lstat.isSymbolicLink() || !lstat.isFile()) throw new SafeOpenError("invalid-path", "path is not a regular file under root");
|
|
249
249
|
if (!sameFileIdentity(stat, lstat)) throw new SafeOpenError("path-mismatch", "path changed during write");
|
|
250
250
|
} catch (err) {
|
|
@@ -252,7 +252,7 @@ async function openWritableFileWithinRoot(params) {
|
|
|
252
252
|
}
|
|
253
253
|
const realPath = await resolveOpenedFileRealPathForHandle(handle, ioPath);
|
|
254
254
|
openedRealPath = realPath;
|
|
255
|
-
const realStat = await
|
|
255
|
+
const realStat = await fsPromises.stat(realPath);
|
|
256
256
|
if (!sameFileIdentity(stat, realStat)) throw new SafeOpenError("path-mismatch", "path mismatch");
|
|
257
257
|
if (realStat.nlink > 1) throw new SafeOpenError("invalid-path", "hardlinked path not allowed");
|
|
258
258
|
if (!isPathInside(rootWithSep, realPath)) throw new SafeOpenError("outside-workspace", "file is outside workspace root");
|
|
@@ -267,7 +267,7 @@ async function openWritableFileWithinRoot(params) {
|
|
|
267
267
|
const cleanupCreatedPath = createdForWrite && err instanceof SafeOpenError;
|
|
268
268
|
const cleanupPath = openedRealPath ?? ioPath;
|
|
269
269
|
await handle.close().catch(() => {});
|
|
270
|
-
if (cleanupCreatedPath) await
|
|
270
|
+
if (cleanupCreatedPath) await fsPromises.rm(cleanupPath, { force: true }).catch(() => {});
|
|
271
271
|
throw err;
|
|
272
272
|
}
|
|
273
273
|
}
|
|
@@ -290,7 +290,7 @@ async function writeFileWithinRoot(params) {
|
|
|
290
290
|
encoding: params.encoding,
|
|
291
291
|
mode: targetMode || 384
|
|
292
292
|
});
|
|
293
|
-
await
|
|
293
|
+
await fsPromises.rename(tempPath, destinationPath);
|
|
294
294
|
tempPath = null;
|
|
295
295
|
try {
|
|
296
296
|
await verifyAtomicWriteResult({
|
|
@@ -303,7 +303,7 @@ async function writeFileWithinRoot(params) {
|
|
|
303
303
|
throw err;
|
|
304
304
|
}
|
|
305
305
|
} finally {
|
|
306
|
-
if (tempPath) await
|
|
306
|
+
if (tempPath) await fsPromises.rm(tempPath, { force: true }).catch(() => {});
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
309
|
async function copyFileWithinRoot(params) {
|
|
@@ -331,7 +331,7 @@ async function copyFileWithinRoot(params) {
|
|
|
331
331
|
});
|
|
332
332
|
await pipeline(sourceStream, targetStream);
|
|
333
333
|
} catch (err) {
|
|
334
|
-
if (target?.createdForWrite) await
|
|
334
|
+
if (target?.createdForWrite) await fsPromises.rm(target.openedRealPath, { force: true }).catch(() => {});
|
|
335
335
|
throw err;
|
|
336
336
|
} finally {
|
|
337
337
|
if (!sourceClosedByStream) await source.handle.close().catch(() => {});
|