@guadskill/openclaw-proxy 2026.2.9 → 2026.2.11
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/{accounts-x7cMEV1E.js → accounts-Dx4aJi3x.js} +7 -7
- package/dist/{acp-cli-0GGdXLLK.js → acp-cli-B0GEswoT.js} +4 -4
- package/dist/{acp-cli-D1H6dacV.js → acp-cli-OHiTwyKP.js} +4 -4
- package/dist/{agent-2SW8ZCfI.js → agent-CVUy1Thi.js} +10 -10
- package/dist/{agent-DU-T91C5.js → agent-D-ZY5Ay1.js} +10 -10
- package/dist/{agent-scope-DiPc4_Q2.js → agent-scope-Bxl1Ieu_.js} +1 -1
- package/dist/{agent-scope-BUn6DjX7.js → agent-scope-C7vPz4km.js} +1 -1
- package/dist/{agent-scope-CjgJmjE6.js → agent-scope-DUR7NPNo.js} +1 -1
- package/dist/{agent-scope--25ynMc2.js → agent-scope-QnsNO5IK.js} +11 -11
- package/dist/{archive-D0z3LZDK.js → archive-1r-XD_by.js} +9 -9
- package/dist/{audit-CqsOSGgc.js → audit-DJRS7Nza.js} +8 -8
- package/dist/{audit-CLbFGfQc.js → audit-Dnyfbisl.js} +16 -16
- package/dist/{auth-health-6CQOjiY2.js → auth-health-CE7uy9mo.js} +1 -1
- package/dist/{auth-health-BA7lqVxs.js → auth-health-ov3toXHm.js} +1 -1
- package/dist/{auth-profiles-Dg1lg7TZ.js → auth-profiles-kZZY0kCW.js} +1 -1
- package/dist/build-info.json +2 -2
- package/dist/bundled/boot-md/handler.js +9 -9
- package/dist/bundled/session-memory/handler.js +9 -9
- package/dist/{call-DfFtEDcF.js → call-BUcaYa5a.js} +8 -8
- package/dist/{call-BRBaanei.js → call-D_Z9T8iV.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DxeLpgAW.js → channel-options-P2xeFf1J.js} +5 -5
- package/dist/{channel-options-lyL-8lwT.js → channel-options-oOUobhHQ.js} +3 -3
- package/dist/{channel-selection-KB-Du2K8.js → channel-selection-CmhD8GeJ.js} +1 -1
- package/dist/{channel-selection-Cm-kszg3.js → channel-selection-Dc2O9U87.js} +1 -1
- package/dist/{channels-cli-CwCvT3wp.js → channels-cli-BYZOMEVn.js} +25 -25
- package/dist/{channels-cli-D8NQgCvh.js → channels-cli-C-TQm_--.js} +36 -36
- package/dist/{channels-status-issues-CtDHK5Hb.js → channels-status-issues-CZVE---T.js} +1 -1
- package/dist/{channels-status-issues-D4zjQ5gR.js → channels-status-issues-CftEAWF4.js} +1 -1
- package/dist/{chrome-y0SuEptk.js → chrome-No6wyyAY.js} +2 -2
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-BhOaKx0R.js → cli-98b8BoLE.js} +25 -25
- package/dist/{cli-BdLB0dU9.js → cli-9Gs7jI45.js} +21 -21
- package/dist/{command-options-BsaSCNbW.js → command-options-DFbsypaU.js} +3 -3
- package/dist/{commands-D1Vz_pbj.js → commands-DoVIOYAz.js} +3 -3
- package/dist/{completion-cli-B8UeXoAi.js → completion-cli-BkcNcF2W.js} +27 -27
- package/dist/{completion-cli-DSp3IYfG.js → completion-cli-DzFGiqKN.js} +13 -13
- package/dist/{config-BiUz0L4n.js → config-C_ZMbYir.js} +2 -2
- package/dist/{config-DBR-pg8M.js → config-DFgdMueL.js} +2 -2
- package/dist/{config-Cq5jWpQW.js → config-NtjUezp5.js} +2 -2
- package/dist/{config-guard-BIEzm1Di.js → config-guard-GXJBeXgt.js} +34 -34
- package/dist/{config-JotyqXJB.js → config-yg3MNzIZ.js} +2 -2
- package/dist/{configure-CupQ7QSD.js → configure-Cn-9vqSs.js} +10 -10
- package/dist/{configure-Cec4HsdK.js → configure-Mwbu9bfG.js} +8 -8
- package/dist/{control-service-CH6Bbr0T.js → control-service-CzkpRVn7.js} +4 -4
- package/dist/{control-service-YHi9oKDx.js → control-service-_2M8iCv6.js} +1 -1
- package/dist/{cron-cli-DQ37nGTc.js → cron-cli-Bkwkuduu.js} +7 -7
- package/dist/{cron-cli-BPtSqQjc.js → cron-cli-sBpc08kN.js} +6 -6
- package/dist/{daemon-cli-BwvNtNCH.js → daemon-cli-BQFZUZXG.js} +7 -7
- package/dist/{daemon-cli-ByQDMi6B.js → daemon-cli-D7bFcRv4.js} +11 -11
- package/dist/{daemon-runtime-Dg88Ac7J.js → daemon-runtime-DLtjWz00.js} +10 -10
- package/dist/{daemon-runtime-LePuvITk.js → daemon-runtime-q4XITAGg.js} +1 -1
- package/dist/{deliver-BpcYe8zG.js → deliver-BFZRT50l.js} +7 -7
- package/dist/{deliver-Dpg3LSwN.js → deliver-BRCyIScz.js} +5 -5
- package/dist/{deliver-D4rMk52D.js → deliver-CR0uQwr7.js} +3 -3
- package/dist/{deliver-C9Vwdw7k.js → deliver-D_PB5CG5.js} +2 -2
- package/dist/{deps-DWlD7Lyt.js → deps-BBw98Cve.js} +2 -2
- package/dist/{deps-qtgH7RGM.js → deps-Dlhl7sML.js} +2 -2
- package/dist/{devices-cli-CcGB1MVD.js → devices-cli-3aLFbDvW.js} +4 -4
- package/dist/{devices-cli-p9SUggMY.js → devices-cli-Dn5X9lnL.js} +4 -4
- package/dist/{directory-cli-CixpfARf.js → directory-cli-Cc06wNL1.js} +5 -5
- package/dist/{directory-cli-CgKDzRjU.js → directory-cli-Dj48rao9.js} +6 -6
- package/dist/{dispatcher-DsTwmVoy.js → dispatcher-DLLOC08H.js} +1 -1
- package/dist/{dns-cli-y3RAyaeD.js → dns-cli-CugZCOE9.js} +3 -3
- package/dist/{dns-cli--ew6Hcon.js → dns-cli-kXKz4kmo.js} +3 -3
- package/dist/{docs-cli-BPPPY68C.js → docs-cli-BUeU34DD.js} +1 -1
- package/dist/{docs-cli-B8ZWuZdG.js → docs-cli-DPM7sbYQ.js} +1 -1
- package/dist/{doctor-CqYHOc7o.js → doctor-D_er5eUz.js} +18 -18
- package/dist/{doctor--sUBhPRM.js → doctor-iSnCqUEi.js} +33 -33
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-AoKQ4upV.js → exec-approvals-cli-DTdAAPIs.js} +11 -11
- package/dist/{exec-approvals-cli-C2XQFrdV.js → exec-approvals-cli-DyvEEBBB.js} +6 -6
- package/dist/extensionAPI.js +16 -16
- package/dist/{gateway-cli-FFlyXx90.js → gateway-cli-BUHCHKE6.js} +116 -116
- package/dist/{gateway-cli-x9uFfaiq.js → gateway-cli-DfFbLb7d.js} +43 -43
- package/dist/{gateway-rpc-CpSS8vbu.js → gateway-rpc-CUNihWum.js} +1 -1
- package/dist/{gateway-rpc-BUee5Dv6.js → gateway-rpc-ftABAYn5.js} +1 -1
- package/dist/{github-copilot-auth-C9U7LmQC.js → github-copilot-auth-DbUZnSyk.js} +5 -5
- package/dist/{github-copilot-auth-DhRqdPvp.js → github-copilot-auth-TxtjXx5m.js} +5 -5
- package/dist/{gmail-setup-utils-DwjED-x8.js → gmail-setup-utils-CBKE602c.js} +1 -1
- package/dist/{gmail-setup-utils-BElJpBPG.js → gmail-setup-utils-DFeZNixL.js} +1 -1
- package/dist/{health-format-xY8AE8iJ.js → health-format-BSrJdaJW.js} +10 -9
- package/dist/{health-format-BB0NTRxV.js → health-format-fowslicT.js} +12 -11
- package/dist/{hooks-cli-LD-Df2Bi.js → hooks-cli-BoczEJfK.js} +23 -23
- package/dist/{hooks-cli-D0QnfArE.js → hooks-cli-DoLBB8PN.js} +49 -49
- package/dist/{hooks-status-DzV884al.js → hooks-status-Dbj4IlQS.js} +1 -1
- package/dist/{hooks-status-B-1h3DT9.js → hooks-status-Dr9j7oSo.js} +1 -1
- package/dist/{image-C19aQZmj.js → image-BNNazXqI.js} +3 -3
- package/dist/{image-zzNMmsKZ.js → image-CE9CeS1j.js} +3 -3
- package/dist/{image-D1s2KO45.js → image-CY3Qb62D.js} +8 -8
- package/dist/{image-A6XShsr8.js → image-Crv76CGv.js} +3 -3
- package/dist/index.js +44 -44
- package/dist/{installs-lwst-G4F.js → installs-CJqCIvn4.js} +18 -18
- package/dist/llm-slug-generator.js +9 -9
- package/dist/{loader-t5G-bNh2.js → loader-BNGc0TMW.js} +115 -115
- package/dist/{login-qr-dW3zLPde.js → login-qr-BJHBXw2B.js} +1 -1
- package/dist/{login-qr-fi3WTytg.js → login-qr-BoEpQD7W.js} +2 -2
- package/dist/{login-qr-zHjaf-a-.js → login-qr-CojPlIrx.js} +1 -1
- package/dist/{login-qr-zBlKORpc.js → login-qr-O0Sg-Lht.js} +1 -1
- package/dist/{logs-cli-CNG1ybOs.js → logs-cli-BkQZaLP1.js} +5 -5
- package/dist/{logs-cli-BrwNjHyP.js → logs-cli-DbqvSWfV.js} +5 -5
- package/dist/{manager-BG8ogneZ.js → manager-BLQprOme.js} +3 -3
- package/dist/{manager-D1OOirj8.js → manager-DBEZGESO.js} +2 -2
- package/dist/{manager-CdFcVnZR.js → manager-DLK8bAAA.js} +15 -15
- package/dist/{manager-Bctrvc9j.js → manager-DQXILjKz.js} +2 -2
- package/dist/{model-auth-DisTMlNO.js → model-auth-B3m7mkvr.js} +1 -1
- package/dist/{model-selection-GZFHUD7x.js → model-selection-9N1nn0U_.js} +1 -1
- package/dist/{model-selection-Dcc6YSVW.js → model-selection-BqJ7D4pt.js} +1 -1
- package/dist/{models-cli-B2zLu81b.js → models-cli-DKJ429Km.js} +23 -23
- package/dist/{models-cli-DAT-ArET.js → models-cli-tBSLfpEB.js} +30 -30
- package/dist/{node-cli-ClBB_NxA.js → node-cli-az-8UhFP.js} +20 -20
- package/dist/{node-cli-etrHRm1x.js → node-cli-xTfEqY2t.js} +7 -7
- package/dist/{node-service-BDoNNRp-.js → node-service-CkPOvRv0.js} +1 -1
- package/dist/{nodes-cli-BaBGaJqV.js → nodes-cli-DfTrE8mE.js} +8 -8
- package/dist/{nodes-cli-CGt1ECiI.js → nodes-cli-U9s_odmo.js} +5 -5
- package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-DufGlxX3.js} +2 -2
- package/dist/{onboard-channels-CCcLnNq7.js → onboard-channels-B12vl_Fz.js} +5 -5
- package/dist/{onboard-channels-BTsEmF84.js → onboard-channels-Bi5gN7Cg.js} +4 -4
- package/dist/{onboard-skills-DTqkozry.js → onboard-skills-Cli5aapW.js} +9 -9
- package/dist/{onboard-skills-COOhVMtI.js → onboard-skills-bQdrzd5W.js} +8 -8
- package/dist/{onboarding-B_hfq1-Z.js → onboarding-KdG_ApLH.js} +20 -20
- package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BTW4x2Wd.js} +1 -1
- package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-zKi4apQH.js} +3 -3
- package/dist/{pairing-cli-IMM6zTxT.js → pairing-cli-ByfGNmaZ.js} +7 -7
- package/dist/{pairing-cli-A-97MaNg.js → pairing-cli-C_IQMrN0.js} +6 -6
- package/dist/{pairing-labels-Bb4yiJHg.js → pairing-labels-B6MQ_Hha.js} +1 -1
- package/dist/{pairing-labels-DP5H8gf6.js → pairing-labels-B6ViJi8r.js} +1 -1
- package/dist/{pairing-store-DnhpK1SH.js → pairing-store-Cc67v-m7.js} +1 -1
- package/dist/{pairing-store-DiCaUGXP.js → pairing-store-DKhgYwjg.js} +1 -1
- package/dist/{paths-fJtAVDc0.js → paths-BifbScbU.js} +1 -1
- package/dist/{pi-embedded-DQydpubI.js → pi-embedded-DPQwlpO6.js} +15 -15
- package/dist/{pi-embedded-helpers-BJ-cu3iK.js → pi-embedded-helpers-DBsbz1Wq.js} +4 -4
- package/dist/{pi-embedded-helpers-4Lpm0TfW.js → pi-embedded-helpers-DwhRDCwp.js} +2 -2
- package/dist/{pi-embedded-helpers-B8LSSkHe.js → pi-embedded-helpers-Z2gqd4I2.js} +3 -3
- package/dist/{pi-embedded-helpers-DadKWPQE.js → pi-embedded-helpers-n7o6YJmY.js} +6 -6
- package/dist/{pi-tools.policy-DLLm-j7M.js → pi-tools.policy-CiKYFXrw.js} +3 -3
- package/dist/{plugin-auto-enable-B78nMu3L.js → plugin-auto-enable-CTA5rOU5.js} +1 -1
- package/dist/{plugin-auto-enable-Arz-7wiT.js → plugin-auto-enable-CrzdP1Nz.js} +2 -2
- package/dist/{plugins-CRUvG4uT.js → plugins-CO1rgH0r.js} +1 -1
- package/dist/{plugins-cli-CjpTlFhI.js → plugins-cli-BKilQedx.js} +22 -22
- package/dist/{plugins-cli-DrQ1Deuw.js → plugins-cli-CkZgCEVA.js} +30 -30
- package/dist/{plugins-U0QQZWlW.js → plugins-ia9SOGpI.js} +1 -1
- package/dist/{ports-BcNVanDX.js → ports-DbnuiZZO.js} +1 -1
- package/dist/{program-CDSRl7eR.js → program-CFqsq13P.js} +58 -58
- package/dist/{pw-ai-Bpd-iaBB.js → pw-ai-BOyUF0Kj.js} +4 -4
- package/dist/{qmd-manager-DZhFcVTt.js → qmd-manager-BM5DP4s8.js} +1 -1
- package/dist/{qmd-manager-CjTG-nW_.js → qmd-manager-BRXyEw0a.js} +19 -19
- package/dist/{qmd-manager-qe1SLQy3.js → qmd-manager-CWFe938c.js} +1 -1
- package/dist/{qmd-manager-D4W1VfWC.js → qmd-manager-h50GTfkl.js} +2 -2
- package/dist/{register.subclis-COUZSGkI.js → register.subclis-CYsvBF5c.js} +28 -28
- package/dist/{reply-CcYZSt6t.js → reply-CH7VZ1jT.js} +28 -28
- package/dist/{routes-CnhRELg3.js → routes-BUDqG0bE.js} +17 -17
- package/dist/{routes-Sj0W9JUC.js → routes-dtswuSI-.js} +1 -1
- package/dist/{rpc-wf5KzhJ_.js → rpc-BeN1YXM7.js} +1 -1
- package/dist/{rpc-BlzExEft.js → rpc-CUy4VHNF.js} +1 -1
- package/dist/{run-main-CadL0LaU.js → run-main-Couc_fdJ.js} +60 -60
- package/dist/{sandbox-CXXC0AOA.js → sandbox-D889a-F8.js} +21 -21
- package/dist/{sandbox-cli-B-c6pLqW.js → sandbox-cli-BNvoe8W3.js} +10 -10
- package/dist/{sandbox-cli-CEQpi4Wb.js → sandbox-cli-DACJb2g8.js} +7 -7
- package/dist/{sandbox-BR9JVXBT.js → sandbox-nFkFFEb7.js} +5 -5
- package/dist/{security-cli-MV9q0KXT.js → security-cli-DvqT9LWk.js} +11 -11
- package/dist/{security-cli-CxnkY7T2.js → security-cli-m_PAeVLY.js} +21 -21
- package/dist/{server-context-B0LbMz_e.js → server-context-qxpb5Ln6.js} +4 -4
- package/dist/{server-node-events-ClBp_ky8.js → server-node-events-Cb6KgBy9.js} +23 -23
- package/dist/{server-node-events-DZQVhZjc.js → server-node-events-Cz7z8PCq.js} +27 -27
- package/dist/{service-DQwKxszE.js → service-CJ_9zG2c.js} +15 -15
- package/dist/{service-audit-D6Jk8jFU.js → service-audit-CURwIRFh.js} +13 -13
- package/dist/{service-audit-JR0RZ8xC.js → service-audit-DtmRGU4O.js} +1 -1
- package/dist/{shared-C_dY3J1K.js → shared-BFnl2Cjh.js} +1 -1
- package/dist/{shared-DN6M8u_S.js → shared-CXK7Zt_F.js} +1 -1
- package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BT7PBklM.js} +5 -5
- package/dist/{skills-C1QRKLvh.js → skills-Cgy3X3tK.js} +1 -1
- package/dist/{skills-cli-DDTkkerI.js → skills-cli-B2zxU_2n.js} +5 -5
- package/dist/{skills-cli-DbqgzF80.js → skills-cli-Bg8bkl9E.js} +5 -5
- package/dist/{skills-status-GulhEBnV.js → skills-status-8m5p33dD.js} +1 -1
- package/dist/{skills-status-C_QDsl6j.js → skills-status-BA2DOmHk.js} +1 -1
- package/dist/{skills-CwXLq-nk.js → skills-w-kwwPb2.js} +1 -1
- package/dist/{sqlite-DODNHWJb.js → sqlite-DmufeXxk.js} +8 -8
- package/dist/{status-Y2KMsWuk.js → status-BX5HXftW.js} +3 -3
- package/dist/{status-CErwIaup.js → status-CHFPyXak.js} +31 -31
- package/dist/{status-CtFS7XRr.js → status-CTMeUEYd.js} +3 -3
- package/dist/{system-cli-C0JWELUD.js → system-cli-BzCBKn-l.js} +5 -5
- package/dist/{system-cli-BVweBOhJ.js → system-cli-C886Ufmu.js} +5 -5
- package/dist/{systemd-aL_mEluy.js → systemd-D8TmVYdf.js} +5 -5
- package/dist/{systemd-linger-CEPF4JN6.js → systemd-linger-C57Dz7hA.js} +1 -1
- package/dist/{tui-B9ggfGhy.js → tui-B8ryM4-q.js} +5 -5
- package/dist/{tui-C_gTxPke.js → tui-DMtfTPeq.js} +5 -5
- package/dist/{tui-cli-Zj_x6Bvj.js → tui-cli-BBTZ6Uea.js} +14 -14
- package/dist/{tui-cli-CYc8ZHxI.js → tui-cli-CainEme8.js} +11 -11
- package/dist/{tui-formatters-C1oQXn1l.js → tui-formatters-6nR_zzUg.js} +3 -3
- package/dist/{tui-formatters-CCOWLfCX.js → tui-formatters-Cmrdmcx8.js} +3 -3
- package/dist/{update-C-9KsS1m.js → update-DkJ6rvG7.js} +3 -3
- package/dist/{update-cli-ClAzvLLE.js → update-cli-C72mF9AM.js} +34 -34
- package/dist/{update-cli-Cyh2BgJf.js → update-cli-MVVbpgcz.js} +53 -53
- package/dist/{update-runner-BT3WGHmf.js → update-runner-CsWAyRQf.js} +6 -6
- package/dist/{update-runner-Br_pa9Xw.js → update-runner-CztlHuQ9.js} +25 -25
- package/dist/{webhooks-cli-Ch9h1RT2.js → webhooks-cli-BH_Y2RXv.js} +5 -5
- package/dist/{webhooks-cli-DBWL77uP.js → webhooks-cli-DZaS4YoE.js} +5 -5
- package/dist/{wsl-CtSDIi51.js → wsl-C-eVEqs4.js} +3 -3
- package/package.json +1 -1
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/index-BeKTXH1m.js +0 -7601
- package/dist/control-ui/assets/index-BeKTXH1m.js.map +0 -1
- package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.svg +0 -22
- package/dist/control-ui/index.html +0 -17
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
import { A as getChildLogger, C as setVerbose, D as colorize, E as warn, F as CONFIG_PATH, L as STATE_DIR, O as isRich, P as normalizeLogLevel, Q as CHAT_CHANNEL_ORDER, T as success, X as resolveStateDir, a as parseBooleanValue$1, at as normalizeChannelId, ct as requireActivePluginRegistry, it as normalizeAnyChannelId, k as theme, lt as setActivePluginRegistry, n as isTruthyEnvValue, o as createSubsystemLogger, p as defaultRuntime, pt as resolveRequiredHomeDir, v as danger, w as shouldLogVerbose, x as logVerbose, y as info } from "./entry.js";
|
|
2
|
-
import { C as buildAllowedModelSet, Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, Et as resolveAuthProfileDisplayLabel, I as resolveModelRefFromString, L as resolveThinkingDefault, N as resolveConfiguredModelRef, O as modelKey, P as resolveDefaultModelForAgent, S as resolveOpenClawAgentDir, T as buildModelAliasIndex, Tt as DEFAULT_PROVIDER, U as normalizeGoogleModelId, _ as ensureAuthProfileStore, _t as resolveShellEnvFallbackTimeoutMs, a as markAuthProfileUsed, at as getApiKeyForModel, ct as resolveApiKeyForProvider, dt as resolveModelAuthMode, ht as getShellPathFromLoginShell, i as markAuthProfileFailure, k as normalizeProviderId, m as markAuthProfileGood, n as resolveAuthProfileOrder, ot as getCustomProviderApiKey, p as listProfilesForProvider, pt as normalizeSecretInput, r as isProfileInCooldown, s as resolveApiKeyForProfile, st as requireApiKey, ut as resolveEnvApiKey, w as buildConfiguredAllowlistKeys, wt as DEFAULT_MODEL, x as resolveAuthStorePathForDisplay } from "./auth-profiles-
|
|
2
|
+
import { C as buildAllowedModelSet, Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, Et as resolveAuthProfileDisplayLabel, I as resolveModelRefFromString, L as resolveThinkingDefault, N as resolveConfiguredModelRef, O as modelKey, P as resolveDefaultModelForAgent, S as resolveOpenClawAgentDir, T as buildModelAliasIndex, Tt as DEFAULT_PROVIDER, U as normalizeGoogleModelId, _ as ensureAuthProfileStore, _t as resolveShellEnvFallbackTimeoutMs, a as markAuthProfileUsed, at as getApiKeyForModel, ct as resolveApiKeyForProvider, dt as resolveModelAuthMode, ht as getShellPathFromLoginShell, i as markAuthProfileFailure, k as normalizeProviderId, m as markAuthProfileGood, n as resolveAuthProfileOrder, ot as getCustomProviderApiKey, p as listProfilesForProvider, pt as normalizeSecretInput, r as isProfileInCooldown, s as resolveApiKeyForProfile, st as requireApiKey, ut as resolveEnvApiKey, w as buildConfiguredAllowlistKeys, wt as DEFAULT_MODEL, x as resolveAuthStorePathForDisplay } from "./auth-profiles-kZZY0kCW.js";
|
|
3
3
|
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
4
4
|
import { _ as isSubagentSessionKey, a as buildAgentPeerSessionKey, c as normalizeAccountId$3, d as resolveAgentIdFromSessionKey, f as resolveThreadSessionKeys, g as isAcpSessionKey, i as buildAgentMainSessionKey, l as normalizeAgentId, n as DEFAULT_AGENT_ID, o as buildGroupHistoryKey, p as sanitizeAgentId, r as DEFAULT_MAIN_KEY, s as classifySessionKeyShape, t as DEFAULT_ACCOUNT_ID$1, u as normalizeMainKey, v as parseAgentSessionKey, y as resolveThreadParentSessionKey } from "./session-key-BRdRr5Ah.js";
|
|
5
5
|
import { C as sliceUtf16Safe, S as sleep, T as truncateUtf16Safe, _ as resolveJidToE164, b as shortenHomeInString, c as escapeRegExp, d as isRecord, f as isSelfChatMode, m as normalizeE164, n as clamp, p as jidToE164, r as clampInt, t as CONFIG_DIR, u as isPlainObject, v as resolveUserPath, w as toWhatsappJid, x as shortenHomePath } from "./utils-Bx1WKTCk.js";
|
|
6
6
|
import { a as logDebug, c as logWarn, i as spawnWithFallback, n as runExec, o as logError, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
|
|
7
|
-
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-
|
|
8
|
-
import { C as loadWorkspaceBootstrapFiles, S as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, x as ensureAgentWorkspace } from "./agent-scope
|
|
7
|
+
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-zKi4apQH.js";
|
|
8
|
+
import { C as loadWorkspaceBootstrapFiles, S as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, x as ensureAgentWorkspace } from "./agent-scope-QnsNO5IK.js";
|
|
9
9
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-SLWintYd.js";
|
|
10
10
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DzEIEgHL.js";
|
|
11
|
-
import { C as setConfigValueAtPath, S as parseConfigPath, _ as getConfigOverrides, b as unsetConfigOverride, c as writeConfigFile, d as TELEGRAM_COMMAND_NAME_PATTERN, f as normalizeTelegramCommandName, g as validateJsonSchemaValue, h as parseDurationMs, i as loadConfig, j as VERSION, k as resolveAgentMaxConcurrent, l as validateConfigObjectWithPlugins, m as isSafeExecutableValue, o as readConfigFileSnapshot, p as resolveTelegramCustomCommands, s as resolveConfigSnapshotHash, v as resetConfigOverrides, w as unsetConfigValueAtPath, x as getConfigValueAtPath, y as setConfigOverride } from "./config-
|
|
11
|
+
import { C as setConfigValueAtPath, S as parseConfigPath, _ as getConfigOverrides, b as unsetConfigOverride, c as writeConfigFile, d as TELEGRAM_COMMAND_NAME_PATTERN, f as normalizeTelegramCommandName, g as validateJsonSchemaValue, h as parseDurationMs, i as loadConfig, j as VERSION, k as resolveAgentMaxConcurrent, l as validateConfigObjectWithPlugins, m as isSafeExecutableValue, o as readConfigFileSnapshot, p as resolveTelegramCustomCommands, s as resolveConfigSnapshotHash, v as resetConfigOverrides, w as unsetConfigValueAtPath, x as getConfigValueAtPath, y as setConfigOverride } from "./config-DFgdMueL.js";
|
|
12
12
|
import { c as normalizePluginsConfig, l as resolveEnableState, n as discoverOpenClawPlugins, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-C_FL6H2P.js";
|
|
13
|
-
import { a as resolveBrowserConfig } from "./server-context-
|
|
13
|
+
import { a as resolveBrowserConfig } from "./server-context-qxpb5Ln6.js";
|
|
14
14
|
import { t as pickPrimaryTailnetIPv4 } from "./tailnet-CL5GtL7t.js";
|
|
15
15
|
import { o as pickPrimaryLanIPv4 } from "./ws-CtFyzK73.js";
|
|
16
|
-
import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-
|
|
16
|
+
import { C as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-No6wyyAY.js";
|
|
17
17
|
import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-x4NYs-1P.js";
|
|
18
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
18
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-CzkpRVn7.js";
|
|
19
19
|
import { kt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-BCOZgvlo.js";
|
|
20
|
-
import { i as randomIdempotencyKey, n as callGateway } from "./call-
|
|
20
|
+
import { i as randomIdempotencyKey, n as callGateway } from "./call-BUcaYa5a.js";
|
|
21
21
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-BlgPSDAh.js";
|
|
22
22
|
import { t as formatDocsLink } from "./links-CSYf2PwL.js";
|
|
23
|
-
import { _ as normalizeChatType, a as normalizeWhatsAppTarget, b as normalizeDiscordToken, c as resolveTelegramAccount, d as listBindings, g as resolveSlackBotToken, h as resolveSlackAppToken, i as isWhatsAppGroupJid, l as resolveTelegramToken, n as listChannelPlugins, o as listEnabledTelegramAccounts, p as resolveSlackAccount, r as normalizeChannelId$1, s as listTelegramAccountIds, t as getChannelPlugin, v as listEnabledDiscordAccounts, y as resolveDiscordAccount } from "./plugins-
|
|
24
|
-
import { a as logoutWeb, d as webAuthExists, i as logWebSelfId, n as resolveWhatsAppAccount, r as getWebAuthAgeMs, s as readWebSelfId } from "./accounts-
|
|
23
|
+
import { _ as normalizeChatType, a as normalizeWhatsAppTarget, b as normalizeDiscordToken, c as resolveTelegramAccount, d as listBindings, g as resolveSlackBotToken, h as resolveSlackAppToken, i as isWhatsAppGroupJid, l as resolveTelegramToken, n as listChannelPlugins, o as listEnabledTelegramAccounts, p as resolveSlackAccount, r as normalizeChannelId$1, s as listTelegramAccountIds, t as getChannelPlugin, v as listEnabledDiscordAccounts, y as resolveDiscordAccount } from "./plugins-CO1rgH0r.js";
|
|
24
|
+
import { a as logoutWeb, d as webAuthExists, i as logWebSelfId, n as resolveWhatsAppAccount, r as getWebAuthAgeMs, s as readWebSelfId } from "./accounts-Dx4aJi3x.js";
|
|
25
25
|
import { n as withProgress, r as withProgressTotals } from "./progress-Da1ehW-x.js";
|
|
26
26
|
import { r as stylePromptTitle } from "./prompt-style-Dc0C5HC9.js";
|
|
27
|
-
import { i as resolveMemorySearchConfig, n as resolveRetryConfig, r as retryAsync } from "./manager-
|
|
27
|
+
import { i as resolveMemorySearchConfig, n as resolveRetryConfig, r as retryAsync } from "./manager-DLK8bAAA.js";
|
|
28
28
|
import { a as resolveSessionTranscriptsDirForAgent, n as resolveSessionFilePath, o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-C27OFaz1.js";
|
|
29
29
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-CZ8CG4ht.js";
|
|
30
|
-
import { c as listMemoryFiles, l as normalizeExtraMemoryPaths } from "./sqlite-
|
|
31
|
-
import { C as mediaKindFromMime, _ as imageMimeFromFormat, b as kindFromMime, g as getFileExtension, h as extensionForMime, i as SsrFBlockedError, m as detectMime, n as getMediaDir, p as resizeToJpeg, r as saveMediaBuffer, u as getImageMetadata, v as isAudioFileName, x as MAX_IMAGE_BYTES, y as isGifMedia } from "./routes-
|
|
32
|
-
import { A as buildBootstrapContextFiles, B as normalizeThinkLevel, C as isLikelyContextOverflowError, D as parseImageDimensionError, E as isTimeoutErrorMessage, F as formatXHighModelHint, G as sanitizeImageBlocks, H as normalizeVerboseLevel, K as sanitizeToolResultImages, M as resolveBootstrapMaxChars, N as sanitizeGoogleTurnOrdering, O as parseImageSizeError, P as formatThinkingLevels, R as normalizeElevatedLevel, S as isFailoverErrorMessage, T as isRawApiErrorPayload, U as resolveResponseUsageMode, V as normalizeUsageDisplay, W as supportsXHighThinking, _ as isBillingAssistantError, a as isMessagingToolDuplicateNormalized, b as isContextOverflowError, c as downgradeOpenAIReasoningBlocks, d as BILLING_ERROR_USER_MESSAGE, f as classifyFailoverReason, g as isAuthAssistantError, h as getApiErrorPayloadFingerprint, j as ensureSessionHeader, k as sanitizeUserFacingText, l as isAntigravityClaude, m as formatRawAssistantErrorForUi, n as validateGeminiTurns, o as normalizeTextForComparison, p as formatAssistantErrorText, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as isGoogleModelApi, v as isCloudCodeAssistFormatError, w as isRateLimitAssistantError, x as isFailoverAssistantError, y as isCompactionFailureError, z as normalizeReasoningLevel } from "./pi-embedded-helpers-
|
|
33
|
-
import { A as chunkMarkdownIR, B as chunkMarkdownText, C as throwIfAborted, D as HEARTBEAT_TOKEN, E as parseInlineDirectives$1, F as MediaFetchError, G as resolveTextChunkLimit, H as chunkText, I as fetchRemoteMedia, J as parseFenceSpans, K as findFenceSpanAt, L as fetchWithSsrFGuard, M as markdownToIRWithMeta, N as loadWebMedia, O as SILENT_REPLY_TOKEN, P as loadWebMediaRaw, R as resolveMarkdownTableMode, S as normalizeTargetForProvider, T as splitMediaFromOutput, U as chunkTextWithMode, V as chunkMarkdownTextWithMode, W as resolveChunkMode, _ as signalCheck, b as buildTargetResolverSignature, c as applyReplyThreading, d as shouldSuppressMessagingToolReplies, f as createReplyToModeFilterForChannel, g as sendTypingSignal, h as sendReadReceiptSignal, j as markdownToIR, k as isSilentReplyText, l as filterMessagingToolDuplicates, m as sendMessageSignal, o as normalizeReplyPayloadsForDelivery, p as resolveReplyToMode, q as isSafeFenceBreak, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as isRenderablePayload, v as signalRpcRequest, w as parseReplyDirectives, x as normalizeChannelTargetInput, y as streamSignalEvents, z as chunkByNewline } from "./deliver-
|
|
34
|
-
import { $ as stripPluginOnlyAllowlist, A as resolveSessionResetType, B as resolveConversationLabel, C as normalizeDeliveryContext, D as evaluateSessionFreshness, E as resolveSessionKey$1, H as resolveGroupSessionKey, I as resolveMainSessionKey, J as collectExplicitAllowlist, K as applyOwnerOnlyToolPolicy, M as DEFAULT_RESET_TRIGGERS, N as canonicalizeMainSessionAlias, O as resolveChannelResetConfig, Q as resolveToolProfilePolicy, R as deriveSessionMetaPatch, S as mergeDeliveryContext, U as resolveSandboxConfigForAgent, V as buildGroupDisplayName, Y as expandPolicyWithPluginGroups, Z as normalizeToolName, _ as updateSessionStoreEntry, a as ensureSandboxWorkspaceForSession, at as resolveChannelGroupPolicy, b as deliveryContextFromSession, c as resolveSandboxRuntimeStatus, ct as listEnabledSignalAccounts, d as loadSessionStore, f as readSessionUpdatedAt, g as updateSessionStore, h as updateLastRoute, it as listChannelDocks, j as resolveThreadFlag, k as resolveSessionResetPolicy, l as appendAssistantMessageToSessionTranscript, lt as resolveSignalAccount, o as resolveSandboxContext, ot as resolveChannelGroupRequireMention, p as recordSessionMetaFromInbound, q as buildPluginToolGroups, rt as getChannelDock, ut as resolveIMessageAccount, v as isCacheEnabled, w as normalizeSessionDeliveryFields, x as deliveryContextKey, y as resolveCacheTtlMs$1 } from "./sandbox-
|
|
35
|
-
import { _ as parseCommandArgs, b as serializeCommandArgs, d as findCommandByNativeName, f as listChatCommands, g as normalizeCommandBody, h as listNativeCommandSpecsForConfig, i as extractTextFromMessage, m as listNativeCommandSpecs, p as listChatCommandsForConfig, u as buildCommandTextFromArgs, v as resolveCommandArgChoices, x as shouldHandleTextCommands, y as resolveCommandArgMenu } from "./tui-formatters-
|
|
36
|
-
import { i as getMachineDisplayName, r as createBrowserRouteDispatcher, t as isWSL } from "./wsl-
|
|
37
|
-
import { a as resolveSkillsPromptForRun, i as loadWorkspaceSkillEntries, l as applySkillEnvOverrides, n as buildWorkspaceSkillCommandSpecs, r as buildWorkspaceSkillSnapshot, s as resolvePluginSkillDirs, u as applySkillEnvOverridesFromSnapshot } from "./skills-
|
|
38
|
-
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractAssistantThinking, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as describeImageWithModel, u as extractThinkingFromTaggedStream, v as ensureOpenClawModelsJson } from "./image-
|
|
30
|
+
import { c as listMemoryFiles, l as normalizeExtraMemoryPaths } from "./sqlite-DmufeXxk.js";
|
|
31
|
+
import { C as mediaKindFromMime, _ as imageMimeFromFormat, b as kindFromMime, g as getFileExtension, h as extensionForMime, i as SsrFBlockedError, m as detectMime, n as getMediaDir, p as resizeToJpeg, r as saveMediaBuffer, u as getImageMetadata, v as isAudioFileName, x as MAX_IMAGE_BYTES, y as isGifMedia } from "./routes-BUDqG0bE.js";
|
|
32
|
+
import { A as buildBootstrapContextFiles, B as normalizeThinkLevel, C as isLikelyContextOverflowError, D as parseImageDimensionError, E as isTimeoutErrorMessage, F as formatXHighModelHint, G as sanitizeImageBlocks, H as normalizeVerboseLevel, K as sanitizeToolResultImages, M as resolveBootstrapMaxChars, N as sanitizeGoogleTurnOrdering, O as parseImageSizeError, P as formatThinkingLevels, R as normalizeElevatedLevel, S as isFailoverErrorMessage, T as isRawApiErrorPayload, U as resolveResponseUsageMode, V as normalizeUsageDisplay, W as supportsXHighThinking, _ as isBillingAssistantError, a as isMessagingToolDuplicateNormalized, b as isContextOverflowError, c as downgradeOpenAIReasoningBlocks, d as BILLING_ERROR_USER_MESSAGE, f as classifyFailoverReason, g as isAuthAssistantError, h as getApiErrorPayloadFingerprint, j as ensureSessionHeader, k as sanitizeUserFacingText, l as isAntigravityClaude, m as formatRawAssistantErrorForUi, n as validateGeminiTurns, o as normalizeTextForComparison, p as formatAssistantErrorText, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as isGoogleModelApi, v as isCloudCodeAssistFormatError, w as isRateLimitAssistantError, x as isFailoverAssistantError, y as isCompactionFailureError, z as normalizeReasoningLevel } from "./pi-embedded-helpers-n7o6YJmY.js";
|
|
33
|
+
import { A as chunkMarkdownIR, B as chunkMarkdownText, C as throwIfAborted, D as HEARTBEAT_TOKEN, E as parseInlineDirectives$1, F as MediaFetchError, G as resolveTextChunkLimit, H as chunkText, I as fetchRemoteMedia, J as parseFenceSpans, K as findFenceSpanAt, L as fetchWithSsrFGuard, M as markdownToIRWithMeta, N as loadWebMedia, O as SILENT_REPLY_TOKEN, P as loadWebMediaRaw, R as resolveMarkdownTableMode, S as normalizeTargetForProvider, T as splitMediaFromOutput, U as chunkTextWithMode, V as chunkMarkdownTextWithMode, W as resolveChunkMode, _ as signalCheck, b as buildTargetResolverSignature, c as applyReplyThreading, d as shouldSuppressMessagingToolReplies, f as createReplyToModeFilterForChannel, g as sendTypingSignal, h as sendReadReceiptSignal, j as markdownToIR, k as isSilentReplyText, l as filterMessagingToolDuplicates, m as sendMessageSignal, o as normalizeReplyPayloadsForDelivery, p as resolveReplyToMode, q as isSafeFenceBreak, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as isRenderablePayload, v as signalRpcRequest, w as parseReplyDirectives, x as normalizeChannelTargetInput, y as streamSignalEvents, z as chunkByNewline } from "./deliver-BFZRT50l.js";
|
|
34
|
+
import { $ as stripPluginOnlyAllowlist, A as resolveSessionResetType, B as resolveConversationLabel, C as normalizeDeliveryContext, D as evaluateSessionFreshness, E as resolveSessionKey$1, H as resolveGroupSessionKey, I as resolveMainSessionKey, J as collectExplicitAllowlist, K as applyOwnerOnlyToolPolicy, M as DEFAULT_RESET_TRIGGERS, N as canonicalizeMainSessionAlias, O as resolveChannelResetConfig, Q as resolveToolProfilePolicy, R as deriveSessionMetaPatch, S as mergeDeliveryContext, U as resolveSandboxConfigForAgent, V as buildGroupDisplayName, Y as expandPolicyWithPluginGroups, Z as normalizeToolName, _ as updateSessionStoreEntry, a as ensureSandboxWorkspaceForSession, at as resolveChannelGroupPolicy, b as deliveryContextFromSession, c as resolveSandboxRuntimeStatus, ct as listEnabledSignalAccounts, d as loadSessionStore, f as readSessionUpdatedAt, g as updateSessionStore, h as updateLastRoute, it as listChannelDocks, j as resolveThreadFlag, k as resolveSessionResetPolicy, l as appendAssistantMessageToSessionTranscript, lt as resolveSignalAccount, o as resolveSandboxContext, ot as resolveChannelGroupRequireMention, p as recordSessionMetaFromInbound, q as buildPluginToolGroups, rt as getChannelDock, ut as resolveIMessageAccount, v as isCacheEnabled, w as normalizeSessionDeliveryFields, x as deliveryContextKey, y as resolveCacheTtlMs$1 } from "./sandbox-D889a-F8.js";
|
|
35
|
+
import { _ as parseCommandArgs, b as serializeCommandArgs, d as findCommandByNativeName, f as listChatCommands, g as normalizeCommandBody, h as listNativeCommandSpecsForConfig, i as extractTextFromMessage, m as listNativeCommandSpecs, p as listChatCommandsForConfig, u as buildCommandTextFromArgs, v as resolveCommandArgChoices, x as shouldHandleTextCommands, y as resolveCommandArgMenu } from "./tui-formatters-Cmrdmcx8.js";
|
|
36
|
+
import { i as getMachineDisplayName, r as createBrowserRouteDispatcher, t as isWSL } from "./wsl-C-eVEqs4.js";
|
|
37
|
+
import { a as resolveSkillsPromptForRun, i as loadWorkspaceSkillEntries, l as applySkillEnvOverrides, n as buildWorkspaceSkillCommandSpecs, r as buildWorkspaceSkillSnapshot, s as resolvePluginSkillDirs, u as applySkillEnvOverridesFromSnapshot } from "./skills-w-kwwPb2.js";
|
|
38
|
+
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractAssistantThinking, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as describeImageWithModel, u as extractThinkingFromTaggedStream, v as ensureOpenClawModelsJson } from "./image-CY3Qb62D.js";
|
|
39
39
|
import { a as evaluateShellAllowlist, d as requiresExecApproval, f as resolveExecApprovals, h as resolveSafeBins, o as maxAsk, p as resolveExecApprovalsFromFile, s as minSecurity, t as addAllowlistEntry, u as recordAllowlistUse } from "./exec-approvals-BrCstKZw.js";
|
|
40
|
-
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as buildNodeShellCommand, i as parseEnvPairs, l as parseCameraSnapPayload, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-
|
|
40
|
+
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as buildNodeShellCommand, i as parseEnvPairs, l as parseCameraSnapPayload, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-DufGlxX3.js";
|
|
41
41
|
import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact } from "./format-duration-DCXJx2ba.js";
|
|
42
42
|
import { n as redactSensitiveText } from "./redact-BHmk44DI.js";
|
|
43
43
|
import { n as resolveToolDisplay } from "./tool-display-Ds0HgmMB.js";
|
|
44
44
|
import { t as parseAbsoluteTimeMs } from "./parse-Cjiudy6x.js";
|
|
45
45
|
import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-DuoCkWRh.js";
|
|
46
|
-
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-
|
|
46
|
+
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-Dc2O9U87.js";
|
|
47
47
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BCaCYTnJ.js";
|
|
48
48
|
import { t as parseTimeoutMs } from "./parse-timeout-DMW-z4Iz.js";
|
|
49
49
|
import { c as derivePromptTokens, d as normalizeUsage, l as deriveSessionTotalTokens, n as loadCostUsageSummary, o as extractToolCallNames, r as loadSessionCostSummary, s as hasToolCall, u as hasNonzeroUsage } from "./session-cost-usage-LOtSLoh7.js";
|
|
50
50
|
import { n as formatTimeAgo } from "./format-relative-CZOlQ2pA.js";
|
|
51
51
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd$1, t as estimateUsageCost } from "./usage-format-C4JfTbSp.js";
|
|
52
|
-
import { a as isToolAllowedByPolicies, c as resolveSubagentToolPolicy, i as filterToolsByPolicy, n as resolveNativeCommandsEnabled, o as resolveEffectiveToolPolicy, r as resolveNativeSkillsEnabled, s as resolveGroupToolPolicy, t as isNativeCommandsExplicitlyDisabled } from "./commands-
|
|
53
|
-
import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-
|
|
54
|
-
import { a as formatError$1, i as createWaSocket, n as startWebLoginWithQr, o as getStatusCode$1, r as waitForWebLogin, s as waitForWaConnection } from "./login-qr-
|
|
52
|
+
import { a as isToolAllowedByPolicies, c as resolveSubagentToolPolicy, i as filterToolsByPolicy, n as resolveNativeCommandsEnabled, o as resolveEffectiveToolPolicy, r as resolveNativeSkillsEnabled, s as resolveGroupToolPolicy, t as isNativeCommandsExplicitlyDisabled } from "./commands-DoVIOYAz.js";
|
|
53
|
+
import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-DKhgYwjg.js";
|
|
54
|
+
import { a as formatError$1, i as createWaSocket, n as startWebLoginWithQr, o as getStatusCode$1, r as waitForWebLogin, s as waitForWaConnection } from "./login-qr-BoEpQD7W.js";
|
|
55
55
|
import { r as withManager } from "./cli-utils-DKF-leO3.js";
|
|
56
|
-
import { t as resolvePairingIdLabel } from "./pairing-labels-
|
|
56
|
+
import { t as resolvePairingIdLabel } from "./pairing-labels-B6ViJi8r.js";
|
|
57
57
|
import { createRequire } from "node:module";
|
|
58
58
|
import { execSync, spawn, spawnSync } from "node:child_process";
|
|
59
59
|
import path from "node:path";
|
|
@@ -61,7 +61,7 @@ import process$1 from "node:process";
|
|
|
61
61
|
import os, { homedir, tmpdir } from "node:os";
|
|
62
62
|
import fs, { constants, existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
63
63
|
import { inspect } from "node:util";
|
|
64
|
-
import
|
|
64
|
+
import fsPromises from "node:fs/promises";
|
|
65
65
|
import { fileURLToPath } from "node:url";
|
|
66
66
|
import { complete, completeSimple, streamSimple } from "@mariozechner/pi-ai";
|
|
67
67
|
import crypto, { randomUUID } from "node:crypto";
|
|
@@ -1398,7 +1398,7 @@ async function getMemorySearchManager(params) {
|
|
|
1398
1398
|
const cached = QMD_MANAGER_CACHE.get(cacheKey);
|
|
1399
1399
|
if (cached) return { manager: cached };
|
|
1400
1400
|
try {
|
|
1401
|
-
const { QmdMemoryManager } = await import("./qmd-manager-
|
|
1401
|
+
const { QmdMemoryManager } = await import("./qmd-manager-BRXyEw0a.js");
|
|
1402
1402
|
const primary = await QmdMemoryManager.create({
|
|
1403
1403
|
cfg: params.cfg,
|
|
1404
1404
|
agentId: params.agentId,
|
|
@@ -1408,7 +1408,7 @@ async function getMemorySearchManager(params) {
|
|
|
1408
1408
|
const wrapper = new FallbackMemoryManager({
|
|
1409
1409
|
primary,
|
|
1410
1410
|
fallbackFactory: async () => {
|
|
1411
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
1411
|
+
const { MemoryIndexManager } = await import("./manager-DLK8bAAA.js").then((n) => n.t);
|
|
1412
1412
|
return await MemoryIndexManager.get(params);
|
|
1413
1413
|
}
|
|
1414
1414
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -1421,7 +1421,7 @@ async function getMemorySearchManager(params) {
|
|
|
1421
1421
|
}
|
|
1422
1422
|
}
|
|
1423
1423
|
try {
|
|
1424
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
1424
|
+
const { MemoryIndexManager } = await import("./manager-DLK8bAAA.js").then((n) => n.t);
|
|
1425
1425
|
return { manager: await MemoryIndexManager.get(params) };
|
|
1426
1426
|
} catch (err) {
|
|
1427
1427
|
return {
|
|
@@ -1662,7 +1662,7 @@ async function imageResult(params) {
|
|
|
1662
1662
|
}, params.label);
|
|
1663
1663
|
}
|
|
1664
1664
|
async function imageResultFromFile(params) {
|
|
1665
|
-
const buf = await
|
|
1665
|
+
const buf = await fsPromises.readFile(params.path);
|
|
1666
1666
|
const mimeType = await detectMime({ buffer: buf.slice(0, 256) }) ?? "image/png";
|
|
1667
1667
|
return await imageResult({
|
|
1668
1668
|
label: params.label,
|
|
@@ -4977,7 +4977,7 @@ function resolvePluginTools(params) {
|
|
|
4977
4977
|
//#endregion
|
|
4978
4978
|
//#region src/agents/apply-patch-update.ts
|
|
4979
4979
|
async function applyUpdateHunk(filePath, chunks) {
|
|
4980
|
-
const originalLines = (await
|
|
4980
|
+
const originalLines = (await fsPromises.readFile(filePath, "utf8").catch((err) => {
|
|
4981
4981
|
throw new Error(`Failed to read file to update ${filePath}: ${err}`);
|
|
4982
4982
|
})).split("\n");
|
|
4983
4983
|
if (originalLines.length > 0 && originalLines[originalLines.length - 1] === "") originalLines.pop();
|
|
@@ -5147,7 +5147,7 @@ async function assertNoSymlink(relative, root) {
|
|
|
5147
5147
|
for (const part of parts) {
|
|
5148
5148
|
current = path.join(current, part);
|
|
5149
5149
|
try {
|
|
5150
|
-
if ((await
|
|
5150
|
+
if ((await fsPromises.lstat(current)).isSymbolicLink()) throw new Error(`Symlink not allowed in sandbox path: ${current}`);
|
|
5151
5151
|
} catch (err) {
|
|
5152
5152
|
if (err.code === "ENOENT") return;
|
|
5153
5153
|
throw err;
|
|
@@ -5226,13 +5226,13 @@ async function applyPatch(input, options) {
|
|
|
5226
5226
|
if (hunk.kind === "add") {
|
|
5227
5227
|
const target = await resolvePatchPath(hunk.path, options);
|
|
5228
5228
|
await ensureDir(target.resolved);
|
|
5229
|
-
await
|
|
5229
|
+
await fsPromises.writeFile(target.resolved, hunk.contents, "utf8");
|
|
5230
5230
|
recordSummary(summary, seen, "added", target.display);
|
|
5231
5231
|
continue;
|
|
5232
5232
|
}
|
|
5233
5233
|
if (hunk.kind === "delete") {
|
|
5234
5234
|
const target = await resolvePatchPath(hunk.path, options);
|
|
5235
|
-
await
|
|
5235
|
+
await fsPromises.rm(target.resolved);
|
|
5236
5236
|
recordSummary(summary, seen, "deleted", target.display);
|
|
5237
5237
|
continue;
|
|
5238
5238
|
}
|
|
@@ -5241,11 +5241,11 @@ async function applyPatch(input, options) {
|
|
|
5241
5241
|
if (hunk.movePath) {
|
|
5242
5242
|
const moveTarget = await resolvePatchPath(hunk.movePath, options);
|
|
5243
5243
|
await ensureDir(moveTarget.resolved);
|
|
5244
|
-
await
|
|
5245
|
-
await
|
|
5244
|
+
await fsPromises.writeFile(moveTarget.resolved, applied, "utf8");
|
|
5245
|
+
await fsPromises.rm(target.resolved);
|
|
5246
5246
|
recordSummary(summary, seen, "modified", moveTarget.display);
|
|
5247
5247
|
} else {
|
|
5248
|
-
await
|
|
5248
|
+
await fsPromises.writeFile(target.resolved, applied, "utf8");
|
|
5249
5249
|
recordSummary(summary, seen, "modified", target.display);
|
|
5250
5250
|
}
|
|
5251
5251
|
}
|
|
@@ -5269,7 +5269,7 @@ function formatSummary(summary) {
|
|
|
5269
5269
|
async function ensureDir(filePath) {
|
|
5270
5270
|
const parent = path.dirname(filePath);
|
|
5271
5271
|
if (!parent || parent === ".") return;
|
|
5272
|
-
await
|
|
5272
|
+
await fsPromises.mkdir(parent, { recursive: true });
|
|
5273
5273
|
}
|
|
5274
5274
|
async function resolvePatchPath(filePath, options) {
|
|
5275
5275
|
if (options.sandboxRoot) {
|
|
@@ -6018,7 +6018,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
6018
6018
|
cwd: process.cwd(),
|
|
6019
6019
|
root: params.sandbox.workspaceDir
|
|
6020
6020
|
});
|
|
6021
|
-
if (!(await
|
|
6021
|
+
if (!(await fsPromises.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
|
|
6022
6022
|
const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
|
|
6023
6023
|
const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
|
|
6024
6024
|
return {
|
|
@@ -9218,7 +9218,7 @@ function createCanvasTool() {
|
|
|
9218
9218
|
});
|
|
9219
9219
|
}
|
|
9220
9220
|
case "a2ui_push": {
|
|
9221
|
-
const jsonl = typeof params.jsonl === "string" && params.jsonl.trim() ? params.jsonl : typeof params.jsonlPath === "string" && params.jsonlPath.trim() ? await
|
|
9221
|
+
const jsonl = typeof params.jsonl === "string" && params.jsonl.trim() ? params.jsonl : typeof params.jsonlPath === "string" && params.jsonlPath.trim() ? await fsPromises.readFile(params.jsonlPath.trim(), "utf8") : "";
|
|
9222
9222
|
if (!jsonl.trim()) throw new Error("jsonl or jsonlPath required");
|
|
9223
9223
|
await invoke("canvas.a2ui.pushJSONL", { jsonl });
|
|
9224
9224
|
return jsonResult({ ok: true });
|
|
@@ -9854,27 +9854,27 @@ function resolveRestartSentinelPath(env = process.env) {
|
|
|
9854
9854
|
}
|
|
9855
9855
|
async function writeRestartSentinel(payload, env = process.env) {
|
|
9856
9856
|
const filePath = resolveRestartSentinelPath(env);
|
|
9857
|
-
await
|
|
9857
|
+
await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
|
|
9858
9858
|
const data = {
|
|
9859
9859
|
version: 1,
|
|
9860
9860
|
payload
|
|
9861
9861
|
};
|
|
9862
|
-
await
|
|
9862
|
+
await fsPromises.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
|
|
9863
9863
|
return filePath;
|
|
9864
9864
|
}
|
|
9865
9865
|
async function readRestartSentinel(env = process.env) {
|
|
9866
9866
|
const filePath = resolveRestartSentinelPath(env);
|
|
9867
9867
|
try {
|
|
9868
|
-
const raw = await
|
|
9868
|
+
const raw = await fsPromises.readFile(filePath, "utf-8");
|
|
9869
9869
|
let parsed;
|
|
9870
9870
|
try {
|
|
9871
9871
|
parsed = JSON.parse(raw);
|
|
9872
9872
|
} catch {
|
|
9873
|
-
await
|
|
9873
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
9874
9874
|
return null;
|
|
9875
9875
|
}
|
|
9876
9876
|
if (!parsed || parsed.version !== 1 || !parsed.payload) {
|
|
9877
|
-
await
|
|
9877
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
9878
9878
|
return null;
|
|
9879
9879
|
}
|
|
9880
9880
|
return parsed;
|
|
@@ -9886,7 +9886,7 @@ async function consumeRestartSentinel(env = process.env) {
|
|
|
9886
9886
|
const filePath = resolveRestartSentinelPath(env);
|
|
9887
9887
|
const parsed = await readRestartSentinel(env);
|
|
9888
9888
|
if (!parsed) return null;
|
|
9889
|
-
await
|
|
9889
|
+
await fsPromises.unlink(filePath).catch(() => {});
|
|
9890
9890
|
return parsed;
|
|
9891
9891
|
}
|
|
9892
9892
|
function formatRestartSentinelMessage(payload) {
|
|
@@ -10673,7 +10673,7 @@ async function resolveSandboxedImagePath(params) {
|
|
|
10673
10673
|
const candidateRel = path.join("media", "inbound", name);
|
|
10674
10674
|
const candidateAbs = path.join(params.sandboxRoot, candidateRel);
|
|
10675
10675
|
try {
|
|
10676
|
-
await
|
|
10676
|
+
await fsPromises.stat(candidateAbs);
|
|
10677
10677
|
} catch {
|
|
10678
10678
|
throw err;
|
|
10679
10679
|
}
|
|
@@ -16674,7 +16674,7 @@ async function routeReply(params) {
|
|
|
16674
16674
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
16675
16675
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
16676
16676
|
try {
|
|
16677
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
16677
|
+
const { deliverOutboundPayloads } = await import("./deliver-BFZRT50l.js").then((n) => n.n);
|
|
16678
16678
|
return {
|
|
16679
16679
|
ok: true,
|
|
16680
16680
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -23846,7 +23846,7 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
23846
23846
|
};
|
|
23847
23847
|
let content;
|
|
23848
23848
|
try {
|
|
23849
|
-
content = await
|
|
23849
|
+
content = await fsPromises.readFile(sessionFile, "utf-8");
|
|
23850
23850
|
} catch (err) {
|
|
23851
23851
|
if (err?.code === "ENOENT") return {
|
|
23852
23852
|
repaired: false,
|
|
@@ -23894,15 +23894,15 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
23894
23894
|
const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
|
|
23895
23895
|
const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
|
|
23896
23896
|
try {
|
|
23897
|
-
const stat = await
|
|
23898
|
-
await
|
|
23899
|
-
if (stat) await
|
|
23900
|
-
await
|
|
23901
|
-
if (stat) await
|
|
23902
|
-
await
|
|
23897
|
+
const stat = await fsPromises.stat(sessionFile).catch(() => null);
|
|
23898
|
+
await fsPromises.writeFile(backupPath, content, "utf-8");
|
|
23899
|
+
if (stat) await fsPromises.chmod(backupPath, stat.mode);
|
|
23900
|
+
await fsPromises.writeFile(tmpPath, cleaned, "utf-8");
|
|
23901
|
+
if (stat) await fsPromises.chmod(tmpPath, stat.mode);
|
|
23902
|
+
await fsPromises.rename(tmpPath, sessionFile);
|
|
23903
23903
|
} catch (err) {
|
|
23904
23904
|
try {
|
|
23905
|
-
await
|
|
23905
|
+
await fsPromises.unlink(tmpPath);
|
|
23906
23906
|
} catch (cleanupErr) {
|
|
23907
23907
|
params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
|
|
23908
23908
|
}
|
|
@@ -24528,7 +24528,7 @@ function registerCleanupHandlers() {
|
|
|
24528
24528
|
}
|
|
24529
24529
|
async function readLockPayload(lockPath) {
|
|
24530
24530
|
try {
|
|
24531
|
-
const raw = await
|
|
24531
|
+
const raw = await fsPromises.readFile(lockPath, "utf8");
|
|
24532
24532
|
const parsed = JSON.parse(raw);
|
|
24533
24533
|
if (typeof parsed.pid !== "number") return null;
|
|
24534
24534
|
if (typeof parsed.createdAt !== "string") return null;
|
|
@@ -24546,10 +24546,10 @@ async function acquireSessionWriteLock(params) {
|
|
|
24546
24546
|
const staleMs = params.staleMs ?? 1800 * 1e3;
|
|
24547
24547
|
const sessionFile = path.resolve(params.sessionFile);
|
|
24548
24548
|
const sessionDir = path.dirname(sessionFile);
|
|
24549
|
-
await
|
|
24549
|
+
await fsPromises.mkdir(sessionDir, { recursive: true });
|
|
24550
24550
|
let normalizedDir = sessionDir;
|
|
24551
24551
|
try {
|
|
24552
|
-
normalizedDir = await
|
|
24552
|
+
normalizedDir = await fsPromises.realpath(sessionDir);
|
|
24553
24553
|
} catch {}
|
|
24554
24554
|
const normalizedSessionFile = path.join(normalizedDir, path.basename(sessionFile));
|
|
24555
24555
|
const lockPath = `${normalizedSessionFile}.lock`;
|
|
@@ -24563,7 +24563,7 @@ async function acquireSessionWriteLock(params) {
|
|
|
24563
24563
|
if (current.count > 0) return;
|
|
24564
24564
|
HELD_LOCKS.delete(normalizedSessionFile);
|
|
24565
24565
|
await current.handle.close();
|
|
24566
|
-
await
|
|
24566
|
+
await fsPromises.rm(current.lockPath, { force: true });
|
|
24567
24567
|
} };
|
|
24568
24568
|
}
|
|
24569
24569
|
const startedAt = Date.now();
|
|
@@ -24571,7 +24571,7 @@ async function acquireSessionWriteLock(params) {
|
|
|
24571
24571
|
while (Date.now() - startedAt < timeoutMs) {
|
|
24572
24572
|
attempt += 1;
|
|
24573
24573
|
try {
|
|
24574
|
-
const handle = await
|
|
24574
|
+
const handle = await fsPromises.open(lockPath, "wx");
|
|
24575
24575
|
await handle.writeFile(JSON.stringify({
|
|
24576
24576
|
pid: process.pid,
|
|
24577
24577
|
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -24588,7 +24588,7 @@ async function acquireSessionWriteLock(params) {
|
|
|
24588
24588
|
if (current.count > 0) return;
|
|
24589
24589
|
HELD_LOCKS.delete(normalizedSessionFile);
|
|
24590
24590
|
await current.handle.close();
|
|
24591
|
-
await
|
|
24591
|
+
await fsPromises.rm(current.lockPath, { force: true });
|
|
24592
24592
|
} };
|
|
24593
24593
|
} catch (err) {
|
|
24594
24594
|
if (err.code !== "EEXIST") throw err;
|
|
@@ -24597,7 +24597,7 @@ async function acquireSessionWriteLock(params) {
|
|
|
24597
24597
|
const stale = !Number.isFinite(createdAt) || Date.now() - createdAt > staleMs;
|
|
24598
24598
|
const alive = payload?.pid ? isAlive(payload.pid) : false;
|
|
24599
24599
|
if (stale || !alive) {
|
|
24600
|
-
await
|
|
24600
|
+
await fsPromises.rm(lockPath, { force: true });
|
|
24601
24601
|
continue;
|
|
24602
24602
|
}
|
|
24603
24603
|
const delay = Math.min(1e3, 50 * attempt);
|
|
@@ -25419,7 +25419,7 @@ async function prewarmSessionFile(sessionFile) {
|
|
|
25419
25419
|
if (!isSessionManagerCacheEnabled()) return;
|
|
25420
25420
|
if (isSessionManagerCached(sessionFile)) return;
|
|
25421
25421
|
try {
|
|
25422
|
-
const handle = await
|
|
25422
|
+
const handle = await fsPromises.open(sessionFile, "r");
|
|
25423
25423
|
try {
|
|
25424
25424
|
const buffer = Buffer$1.alloc(4096);
|
|
25425
25425
|
await handle.read(buffer, 0, buffer.length, 0);
|
|
@@ -26014,7 +26014,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
26014
26014
|
reason: describeUnknownError(err)
|
|
26015
26015
|
};
|
|
26016
26016
|
}
|
|
26017
|
-
await
|
|
26017
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
26018
26018
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
26019
26019
|
const sandbox = await resolveSandboxContext({
|
|
26020
26020
|
config: params.config,
|
|
@@ -26022,7 +26022,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
26022
26022
|
workspaceDir: resolvedWorkspace
|
|
26023
26023
|
});
|
|
26024
26024
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
26025
|
-
await
|
|
26025
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
26026
26026
|
await ensureSessionHeader({
|
|
26027
26027
|
sessionFile: params.sessionFile,
|
|
26028
26028
|
sessionId: params.sessionId,
|
|
@@ -26469,12 +26469,12 @@ function getWriter$1(filePath) {
|
|
|
26469
26469
|
const existing = writers$1.get(filePath);
|
|
26470
26470
|
if (existing) return existing;
|
|
26471
26471
|
const dir = path.dirname(filePath);
|
|
26472
|
-
const ready =
|
|
26472
|
+
const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
|
|
26473
26473
|
let queue = Promise.resolve();
|
|
26474
26474
|
const writer = {
|
|
26475
26475
|
filePath,
|
|
26476
26476
|
write: (line) => {
|
|
26477
|
-
queue = queue.then(() => ready).then(() =>
|
|
26477
|
+
queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
|
|
26478
26478
|
}
|
|
26479
26479
|
};
|
|
26480
26480
|
writers$1.set(filePath, writer);
|
|
@@ -26616,12 +26616,12 @@ function getWriter(filePath) {
|
|
|
26616
26616
|
const existing = writers.get(filePath);
|
|
26617
26617
|
if (existing) return existing;
|
|
26618
26618
|
const dir = path.dirname(filePath);
|
|
26619
|
-
const ready =
|
|
26619
|
+
const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
|
|
26620
26620
|
let queue = Promise.resolve();
|
|
26621
26621
|
const writer = {
|
|
26622
26622
|
filePath,
|
|
26623
26623
|
write: (line) => {
|
|
26624
|
-
queue = queue.then(() => ready).then(() =>
|
|
26624
|
+
queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
|
|
26625
26625
|
}
|
|
26626
26626
|
};
|
|
26627
26627
|
writers.set(filePath, writer);
|
|
@@ -28598,7 +28598,7 @@ async function prepareSessionManagerForRun(params) {
|
|
|
28598
28598
|
return;
|
|
28599
28599
|
}
|
|
28600
28600
|
if (params.hadSessionFile && header && !hasAssistant) {
|
|
28601
|
-
await
|
|
28601
|
+
await fsPromises.writeFile(params.sessionFile, "", "utf-8");
|
|
28602
28602
|
sm.fileEntries = [header];
|
|
28603
28603
|
sm.byId?.clear?.();
|
|
28604
28604
|
sm.labelsById?.clear?.();
|
|
@@ -28726,7 +28726,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
|
|
|
28726
28726
|
return null;
|
|
28727
28727
|
}
|
|
28728
28728
|
if (ref.type === "path") try {
|
|
28729
|
-
await
|
|
28729
|
+
await fsPromises.stat(targetPath);
|
|
28730
28730
|
} catch {
|
|
28731
28731
|
log$6.debug(`Native image: file not found: ${targetPath}`);
|
|
28732
28732
|
return null;
|
|
@@ -28896,7 +28896,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
28896
28896
|
const prevCwd = process.cwd();
|
|
28897
28897
|
const runAbortController = new AbortController();
|
|
28898
28898
|
log$6.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
|
|
28899
|
-
await
|
|
28899
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
28900
28900
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
28901
28901
|
const sandbox = await resolveSandboxContext({
|
|
28902
28902
|
config: params.config,
|
|
@@ -28904,7 +28904,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
28904
28904
|
workspaceDir: resolvedWorkspace
|
|
28905
28905
|
});
|
|
28906
28906
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
28907
|
-
await
|
|
28907
|
+
await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
|
|
28908
28908
|
let restoreSkillEnv;
|
|
28909
28909
|
process.chdir(effectiveWorkspace);
|
|
28910
28910
|
try {
|
|
@@ -29123,7 +29123,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
29123
29123
|
sessionFile: params.sessionFile,
|
|
29124
29124
|
warn: (message) => log$6.warn(message)
|
|
29125
29125
|
});
|
|
29126
|
-
const hadSessionFile = await
|
|
29126
|
+
const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
|
|
29127
29127
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
29128
29128
|
modelApi: params.model?.api,
|
|
29129
29129
|
provider: params.provider,
|
|
@@ -29773,7 +29773,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
29773
29773
|
try {
|
|
29774
29774
|
while (true) {
|
|
29775
29775
|
attemptedThinking.add(thinkLevel);
|
|
29776
|
-
await
|
|
29776
|
+
await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
|
|
29777
29777
|
const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
|
|
29778
29778
|
const attempt = await runEmbeddedAttempt({
|
|
29779
29779
|
sessionId: params.sessionId,
|
|
@@ -32228,7 +32228,7 @@ var MediaAttachmentCache = class {
|
|
|
32228
32228
|
const size = await this.ensureLocalStat(entry);
|
|
32229
32229
|
if (entry.resolvedPath) {
|
|
32230
32230
|
if (size !== void 0 && size > params.maxBytes) throw new MediaUnderstandingSkipError("maxBytes", `Attachment ${params.attachmentIndex + 1} exceeds maxBytes ${params.maxBytes}`);
|
|
32231
|
-
const buffer = await
|
|
32231
|
+
const buffer = await fsPromises.readFile(entry.resolvedPath);
|
|
32232
32232
|
entry.buffer = buffer;
|
|
32233
32233
|
entry.bufferMime = entry.bufferMime ?? entry.attachment.mime ?? await detectMime({
|
|
32234
32234
|
buffer,
|
|
@@ -32296,10 +32296,10 @@ var MediaAttachmentCache = class {
|
|
|
32296
32296
|
});
|
|
32297
32297
|
const extension = path.extname(bufferResult.fileName || "") || "";
|
|
32298
32298
|
const tmpPath = path.join(os.tmpdir(), `openclaw-media-${crypto.randomUUID()}${extension}`);
|
|
32299
|
-
await
|
|
32299
|
+
await fsPromises.writeFile(tmpPath, bufferResult.buffer);
|
|
32300
32300
|
entry.tempPath = tmpPath;
|
|
32301
32301
|
entry.tempCleanup = async () => {
|
|
32302
|
-
await
|
|
32302
|
+
await fsPromises.unlink(tmpPath).catch(() => {});
|
|
32303
32303
|
};
|
|
32304
32304
|
return {
|
|
32305
32305
|
path: tmpPath,
|
|
@@ -32337,7 +32337,7 @@ var MediaAttachmentCache = class {
|
|
|
32337
32337
|
if (!entry.resolvedPath) return;
|
|
32338
32338
|
if (entry.statSize !== void 0) return entry.statSize;
|
|
32339
32339
|
try {
|
|
32340
|
-
const stat = await
|
|
32340
|
+
const stat = await fsPromises.stat(entry.resolvedPath);
|
|
32341
32341
|
if (!stat.isFile()) {
|
|
32342
32342
|
entry.resolvedPath = void 0;
|
|
32343
32343
|
return;
|
|
@@ -32482,9 +32482,9 @@ function candidateBinaryNames(name) {
|
|
|
32482
32482
|
}
|
|
32483
32483
|
async function isExecutable(filePath) {
|
|
32484
32484
|
try {
|
|
32485
|
-
if (!(await
|
|
32485
|
+
if (!(await fsPromises.stat(filePath)).isFile()) return false;
|
|
32486
32486
|
if (process.platform === "win32") return true;
|
|
32487
|
-
await
|
|
32487
|
+
await fsPromises.access(filePath, constants.X_OK);
|
|
32488
32488
|
return true;
|
|
32489
32489
|
} catch {
|
|
32490
32490
|
return false;
|
|
@@ -32521,7 +32521,7 @@ async function hasBinary(name) {
|
|
|
32521
32521
|
async function fileExists(filePath) {
|
|
32522
32522
|
if (!filePath) return false;
|
|
32523
32523
|
try {
|
|
32524
|
-
await
|
|
32524
|
+
await fsPromises.stat(filePath);
|
|
32525
32525
|
return true;
|
|
32526
32526
|
} catch {
|
|
32527
32527
|
return false;
|
|
@@ -32836,7 +32836,7 @@ async function resolveCliOutput(params) {
|
|
|
32836
32836
|
const commandId = commandBase(params.command);
|
|
32837
32837
|
const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
|
|
32838
32838
|
if (fileOutput && await fileExists(fileOutput)) try {
|
|
32839
|
-
const content = await
|
|
32839
|
+
const content = await fsPromises.readFile(fileOutput, "utf8");
|
|
32840
32840
|
if (content.trim()) return content.trim();
|
|
32841
32841
|
} catch {}
|
|
32842
32842
|
if (commandId === "gemini") {
|
|
@@ -33100,7 +33100,7 @@ async function runCliEntry(params) {
|
|
|
33100
33100
|
maxBytes,
|
|
33101
33101
|
timeoutMs
|
|
33102
33102
|
});
|
|
33103
|
-
const outputDir = await
|
|
33103
|
+
const outputDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "openclaw-media-cli-"));
|
|
33104
33104
|
const mediaPath = pathResult.path;
|
|
33105
33105
|
const outputBase = path.join(outputDir, path.parse(mediaPath).name);
|
|
33106
33106
|
const templCtx = {
|
|
@@ -33134,7 +33134,7 @@ async function runCliEntry(params) {
|
|
|
33134
33134
|
model: command
|
|
33135
33135
|
};
|
|
33136
33136
|
} finally {
|
|
33137
|
-
await
|
|
33137
|
+
await fsPromises.rm(outputDir, {
|
|
33138
33138
|
recursive: true,
|
|
33139
33139
|
force: true
|
|
33140
33140
|
}).catch(() => {});
|
|
@@ -34542,7 +34542,7 @@ async function createModelSelectionState(params) {
|
|
|
34542
34542
|
}
|
|
34543
34543
|
}
|
|
34544
34544
|
if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
|
|
34545
|
-
const { ensureAuthProfileStore } = await import("./auth-profiles-
|
|
34545
|
+
const { ensureAuthProfileStore } = await import("./auth-profiles-kZZY0kCW.js").then((n) => n.t);
|
|
34546
34546
|
const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
|
|
34547
34547
|
const providerKey = normalizeProviderId(provider);
|
|
34548
34548
|
if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
|
|
@@ -35624,7 +35624,7 @@ function resolvePaths(baseDir) {
|
|
|
35624
35624
|
}
|
|
35625
35625
|
async function readJSON(filePath) {
|
|
35626
35626
|
try {
|
|
35627
|
-
const raw = await
|
|
35627
|
+
const raw = await fsPromises.readFile(filePath, "utf8");
|
|
35628
35628
|
return JSON.parse(raw);
|
|
35629
35629
|
} catch {
|
|
35630
35630
|
return null;
|
|
@@ -35632,15 +35632,15 @@ async function readJSON(filePath) {
|
|
|
35632
35632
|
}
|
|
35633
35633
|
async function writeJSONAtomic(filePath, value) {
|
|
35634
35634
|
const dir = path.dirname(filePath);
|
|
35635
|
-
await
|
|
35635
|
+
await fsPromises.mkdir(dir, { recursive: true });
|
|
35636
35636
|
const tmp = `${filePath}.${randomUUID()}.tmp`;
|
|
35637
|
-
await
|
|
35637
|
+
await fsPromises.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
|
|
35638
35638
|
try {
|
|
35639
|
-
await
|
|
35639
|
+
await fsPromises.chmod(tmp, 384);
|
|
35640
35640
|
} catch {}
|
|
35641
|
-
await
|
|
35641
|
+
await fsPromises.rename(tmp, filePath);
|
|
35642
35642
|
try {
|
|
35643
|
-
await
|
|
35643
|
+
await fsPromises.chmod(filePath, 384);
|
|
35644
35644
|
} catch {}
|
|
35645
35645
|
}
|
|
35646
35646
|
function pruneExpiredPending(pendingById, nowMs) {
|
|
@@ -41029,18 +41029,18 @@ function appendImagePathsToPrompt(prompt, paths) {
|
|
|
41029
41029
|
return `${trimmed}${trimmed ? "\n\n" : ""}${paths.join("\n")}`;
|
|
41030
41030
|
}
|
|
41031
41031
|
async function writeCliImages(images) {
|
|
41032
|
-
const tempDir = await
|
|
41032
|
+
const tempDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "openclaw-cli-images-"));
|
|
41033
41033
|
const paths = [];
|
|
41034
41034
|
for (let i = 0; i < images.length; i += 1) {
|
|
41035
41035
|
const image = images[i];
|
|
41036
41036
|
const ext = resolveImageExtension(image.mimeType);
|
|
41037
41037
|
const filePath = path.join(tempDir, `image-${i + 1}.${ext}`);
|
|
41038
41038
|
const buffer = Buffer.from(image.data, "base64");
|
|
41039
|
-
await
|
|
41039
|
+
await fsPromises.writeFile(filePath, buffer, { mode: 384 });
|
|
41040
41040
|
paths.push(filePath);
|
|
41041
41041
|
}
|
|
41042
41042
|
const cleanup = async () => {
|
|
41043
|
-
await
|
|
41043
|
+
await fsPromises.rm(tempDir, {
|
|
41044
41044
|
recursive: true,
|
|
41045
41045
|
force: true
|
|
41046
41046
|
});
|
|
@@ -43589,7 +43589,7 @@ async function stageSandboxMedia(params) {
|
|
|
43589
43589
|
};
|
|
43590
43590
|
try {
|
|
43591
43591
|
const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
|
|
43592
|
-
await
|
|
43592
|
+
await fsPromises.mkdir(destDir, { recursive: true });
|
|
43593
43593
|
const usedNames = /* @__PURE__ */ new Set();
|
|
43594
43594
|
const staged = /* @__PURE__ */ new Map();
|
|
43595
43595
|
for (const raw of rawPaths) {
|
|
@@ -43621,7 +43621,7 @@ async function stageSandboxMedia(params) {
|
|
|
43621
43621
|
usedNames.add(fileName);
|
|
43622
43622
|
const dest = path.join(destDir, fileName);
|
|
43623
43623
|
if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
|
|
43624
|
-
else await
|
|
43624
|
+
else await fsPromises.copyFile(source, dest);
|
|
43625
43625
|
const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
|
|
43626
43626
|
staged.set(source, stagedPath);
|
|
43627
43627
|
}
|
|
@@ -48255,8 +48255,8 @@ async function describeStickerImage(params) {
|
|
|
48255
48255
|
const { provider, model } = resolved;
|
|
48256
48256
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
48257
48257
|
try {
|
|
48258
|
-
const buffer = await
|
|
48259
|
-
const { describeImageWithModel } = await import("./image-
|
|
48258
|
+
const buffer = await fsPromises.readFile(imagePath);
|
|
48259
|
+
const { describeImageWithModel } = await import("./image-CY3Qb62D.js").then((n) => n.n);
|
|
48260
48260
|
return (await describeImageWithModel({
|
|
48261
48261
|
buffer,
|
|
48262
48262
|
fileName: "sticker.webp",
|
|
@@ -48613,7 +48613,7 @@ function createWhatsAppLoginTool() {
|
|
|
48613
48613
|
force: Type.Optional(Type.Boolean())
|
|
48614
48614
|
}),
|
|
48615
48615
|
execute: async (_toolCallId, args) => {
|
|
48616
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
48616
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BoEpQD7W.js").then((n) => n.t);
|
|
48617
48617
|
if ((args?.action ?? "start") === "wait") {
|
|
48618
48618
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
48619
48619
|
return {
|
|
@@ -51041,7 +51041,7 @@ function formatExtraPaths(workspaceDir, extraPaths) {
|
|
|
51041
51041
|
}
|
|
51042
51042
|
async function checkReadableFile(pathname) {
|
|
51043
51043
|
try {
|
|
51044
|
-
await
|
|
51044
|
+
await fsPromises.access(pathname, fs.constants.R_OK);
|
|
51045
51045
|
return { exists: true };
|
|
51046
51046
|
} catch (err) {
|
|
51047
51047
|
const code = err.code;
|
|
@@ -51058,7 +51058,7 @@ async function scanSessionFiles(agentId) {
|
|
|
51058
51058
|
try {
|
|
51059
51059
|
return {
|
|
51060
51060
|
source: "sessions",
|
|
51061
|
-
totalFiles: (await
|
|
51061
|
+
totalFiles: (await fsPromises.readdir(sessionsDir, { withFileTypes: true })).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).length,
|
|
51062
51062
|
issues
|
|
51063
51063
|
};
|
|
51064
51064
|
} catch (err) {
|
|
@@ -51090,7 +51090,7 @@ async function scanMemoryFiles(workspaceDir, extraPaths = []) {
|
|
|
51090
51090
|
if (alt.issue) issues.push(alt.issue);
|
|
51091
51091
|
const resolvedExtraPaths = normalizeExtraMemoryPaths(workspaceDir, extraPaths);
|
|
51092
51092
|
for (const extraPath of resolvedExtraPaths) try {
|
|
51093
|
-
if ((await
|
|
51093
|
+
if ((await fsPromises.lstat(extraPath)).isSymbolicLink()) continue;
|
|
51094
51094
|
const extraCheck = await checkReadableFile(extraPath);
|
|
51095
51095
|
if (extraCheck.issue) issues.push(extraCheck.issue);
|
|
51096
51096
|
} catch (err) {
|
|
@@ -51100,7 +51100,7 @@ async function scanMemoryFiles(workspaceDir, extraPaths = []) {
|
|
|
51100
51100
|
}
|
|
51101
51101
|
let dirReadable = null;
|
|
51102
51102
|
try {
|
|
51103
|
-
await
|
|
51103
|
+
await fsPromises.access(memoryDir, fs.constants.R_OK);
|
|
51104
51104
|
dirReadable = true;
|
|
51105
51105
|
} catch (err) {
|
|
51106
51106
|
const code = err.code;
|
|
@@ -55352,7 +55352,7 @@ async function ensureWorkspaceAndSessions(workspaceDir, runtime, options) {
|
|
|
55352
55352
|
});
|
|
55353
55353
|
runtime.log(`Workspace OK: ${shortenHomePath(ws.dir)}`);
|
|
55354
55354
|
const sessionsDir = resolveSessionTranscriptsDirForAgent(options?.agentId);
|
|
55355
|
-
await
|
|
55355
|
+
await fsPromises.mkdir(sessionsDir, { recursive: true });
|
|
55356
55356
|
runtime.log(`Sessions OK: ${shortenHomePath(sessionsDir)}`);
|
|
55357
55357
|
}
|
|
55358
55358
|
function resolveNodeManagerOptions() {
|
|
@@ -55374,7 +55374,7 @@ function resolveNodeManagerOptions() {
|
|
|
55374
55374
|
async function moveToTrash(pathname, runtime) {
|
|
55375
55375
|
if (!pathname) return;
|
|
55376
55376
|
try {
|
|
55377
|
-
await
|
|
55377
|
+
await fsPromises.access(pathname);
|
|
55378
55378
|
} catch {
|
|
55379
55379
|
return;
|
|
55380
55380
|
}
|
|
@@ -55397,7 +55397,7 @@ async function detectBinary(name) {
|
|
|
55397
55397
|
if (!isSafeExecutableValue(name)) return false;
|
|
55398
55398
|
const resolved = name.startsWith("~") ? resolveUserPath(name) : name;
|
|
55399
55399
|
if (path.isAbsolute(resolved) || resolved.startsWith(".") || resolved.includes("/") || resolved.includes("\\")) try {
|
|
55400
|
-
await
|
|
55400
|
+
await fsPromises.access(resolved);
|
|
55401
55401
|
return true;
|
|
55402
55402
|
} catch {
|
|
55403
55403
|
return false;
|
|
@@ -55714,7 +55714,7 @@ function normalizeAllowList$1(list) {
|
|
|
55714
55714
|
async function detectRemoteHostFromCliPath(cliPath) {
|
|
55715
55715
|
try {
|
|
55716
55716
|
const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
|
|
55717
|
-
const content = await
|
|
55717
|
+
const content = await fsPromises.readFile(expanded, "utf8");
|
|
55718
55718
|
const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
|
|
55719
55719
|
if (userHostMatch) return userHostMatch[1];
|
|
55720
55720
|
return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
|
|
@@ -64389,7 +64389,7 @@ function safeParseState(raw) {
|
|
|
64389
64389
|
async function readTelegramUpdateOffset(params) {
|
|
64390
64390
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
64391
64391
|
try {
|
|
64392
|
-
return safeParseState(await
|
|
64392
|
+
return safeParseState(await fsPromises.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
|
|
64393
64393
|
} catch (err) {
|
|
64394
64394
|
if (err.code === "ENOENT") return null;
|
|
64395
64395
|
return null;
|
|
@@ -64398,7 +64398,7 @@ async function readTelegramUpdateOffset(params) {
|
|
|
64398
64398
|
async function writeTelegramUpdateOffset(params) {
|
|
64399
64399
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
64400
64400
|
const dir = path.dirname(filePath);
|
|
64401
|
-
await
|
|
64401
|
+
await fsPromises.mkdir(dir, {
|
|
64402
64402
|
recursive: true,
|
|
64403
64403
|
mode: 448
|
|
64404
64404
|
});
|
|
@@ -64407,9 +64407,9 @@ async function writeTelegramUpdateOffset(params) {
|
|
|
64407
64407
|
version: STORE_VERSION,
|
|
64408
64408
|
lastUpdateId: params.updateId
|
|
64409
64409
|
};
|
|
64410
|
-
await
|
|
64411
|
-
await
|
|
64412
|
-
await
|
|
64410
|
+
await fsPromises.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
|
|
64411
|
+
await fsPromises.chmod(tmp, 384);
|
|
64412
|
+
await fsPromises.rename(tmp, filePath);
|
|
64413
64413
|
}
|
|
64414
64414
|
|
|
64415
64415
|
//#endregion
|