@gguf/claw 2026.2.9 → 2026.2.13
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/CHANGELOG.md +159 -0
- package/LICENSE +1 -1
- package/dist/{accounts-MyAvfCVH.js → accounts-54zZMYCo.js} +5 -2
- package/dist/{accounts-DbzMEfKN.js → accounts-Bvh0DFxS.js} +5 -2
- package/dist/{acp-cli-MZ3h1E1n.js → acp-cli-BslcOPdx.js} +146 -25
- package/dist/{acp-cli-DKJRTfwB.js → acp-cli-D6rk5cOh.js} +145 -24
- package/dist/{agent-whSJT2Lk.js → agent-C0yL70cy.js} +26 -20
- package/dist/{agent-c1QNeDmV.js → agent-DjZxytiC.js} +26 -20
- package/dist/{agent-scope-D3me2AZa.js → agent-scope-Bkr9fZtl.js} +31 -14
- package/dist/{agent-scope-Dp8sREli.js → agent-scope-DASgjz2_.js} +199 -14
- package/dist/{agent-scope-DnyDZ5RH.js → agent-scope-GYIs5dyU.js} +30 -13
- package/dist/{agent-scope-Dpav7C-i.js → agent-scope-okUOVjE5.js} +32 -11
- package/dist/audio-preflight-B0kLz-Ma.js +60 -0
- package/dist/audio-preflight-BCs_J33s.js +60 -0
- package/dist/audio-preflight-CTl2RCyF.js +71 -0
- package/dist/audio-preflight-MhF6YlAY.js +74 -0
- package/dist/{audit-BFYy1qSw.js → audit-BYfhZ7LA.js} +454 -31
- package/dist/{audit-Dn2cBl2x.js → audit-CfPZ_5Id.js} +452 -29
- package/dist/auth-9nTeB2Je.js +602 -0
- package/dist/auth-CLhyWwAU.js +593 -0
- package/dist/{auth-health-Cx5exPMV.js → auth-health-CWiLyzSr.js} +1 -1
- package/dist/{auth-health-DjT4fUpw.js → auth-health-qD4RND47.js} +1 -1
- package/dist/{auth-profiles-FJ3VY25a.js → auth-profiles-Cp9MtUdM.js} +353 -33
- package/dist/build-info.json +2 -2
- package/dist/bundled/boot-md/handler.js +33 -25
- package/dist/bundled/session-memory/handler.js +33 -22
- package/dist/{call-CD2IZCHT.js → call-CjEdFGAf.js} +7 -7
- package/dist/{call-CM25qgxz.js → call-DAfkvtVq.js} +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +7 -1
- package/dist/{channel-options-CremuJyh.js → channel-options-B8dPzlyO.js} +4 -4
- package/dist/{channel-options-D-JnJ4Ft.js → channel-options-Bq5IC5Tv.js} +12 -7
- package/dist/{channel-selection-DAHCVAX4.js → channel-selection-BaW1xXEa.js} +2 -2
- package/dist/{channel-selection-DPV9hvY8.js → channel-selection-dR0jCgTn.js} +2 -2
- package/dist/{channels-cli-6deHFr9t.js → channels-cli-hPo28hWS.js} +61 -56
- package/dist/{channels-cli-D3tKmhlt.js → channels-cli-zi3rO0jq.js} +62 -57
- package/dist/{channels-status-issues-BN1ICfdy.js → channels-status-issues-kb-M2Fi0.js} +1 -1
- package/dist/{channels-status-issues-DFhI_u0p.js → channels-status-issues-ketdwZun.js} +1 -1
- package/dist/{chrome-B2UjqY-9.js → chrome--Fe8F5Kf.js} +24 -12
- package/dist/{chrome-COabMr6f.js → chrome-BWeMtFGf.js} +24 -12
- package/dist/{chrome-CQd_MVOA.js → chrome-Bx24uq7B.js} +27 -15
- package/dist/{chrome-CxRJz4ZD.js → chrome-n_3rtK2c.js} +22 -11
- package/dist/{clack-prompter-BkNZ4Xdw.js → clack-prompter-B-tJmODa.js} +5 -5
- package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-DpuKn_Uy.js} +5 -5
- package/dist/cli/daemon-cli.js +8 -1
- package/dist/cli-9lwO6Ttx.js +94 -0
- package/dist/cli-CNNdyxPO.js +91 -0
- package/dist/{client-DMloFP_O.js → client-BhZjzrH2.js} +73 -9
- package/dist/{client-C0gQ7hrj.js → client-DyAxKXKY.js} +73 -9
- package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
- package/dist/{command-options-BQdH6qnK.js → command-options-BDV7Xgs-.js} +9 -4
- package/dist/{commands-BWHYcc83.js → commands-gOiRcfoU.js} +4 -4
- package/dist/{tui-formatters-BDP_71Xt.js → commands-registry-6NUFrejL.js} +6 -114
- package/dist/{tui-formatters-CIx4sCQO.js → commands-registry-DGgkLQ7A.js} +6 -114
- package/dist/{completion-cli-DEJia0V1.js → completion-cli-B1kHKJZX.js} +30 -30
- package/dist/{completion-cli-D_0fx2O6.js → completion-cli-Drks7xRK.js} +3 -3
- package/dist/{config-CQt4vGxI.js → config-7NCznPmF.js} +336 -97
- package/dist/{config-fCnPoWjU.js → config-B8v0zg48.js} +295 -99
- package/dist/{config-Bj2eDa02.js → config-CeWMHOiQ.js} +295 -99
- package/dist/{config-ethqi73X.js → config-D8pgDSNo.js} +358 -99
- package/dist/{config-guard-BJuqQvng.js → config-guard-RbHxYc9j.js} +212 -63
- package/dist/{configure-skrLiSwW.js → configure-DLp2Xz7L.js} +59 -40
- package/dist/{configure-C-pYuYg_.js → configure-Su1S0gi-.js} +58 -39
- package/dist/control-auth-BlWU-jBl.js +54 -0
- package/dist/control-auth-C8rIqEdA.js +54 -0
- package/dist/{control-service-BDgF-FZ0.js → control-service-BNDthc1N.js} +11 -5
- package/dist/{control-service-Djd_WI3_.js → control-service-COF59GQe.js} +10 -4
- package/dist/control-ui/assets/{index-CnB9IO4a.js → index-BECn2L1T.js} +369 -368
- package/dist/control-ui/assets/index-BECn2L1T.js.map +1 -0
- package/dist/control-ui/assets/index-DRPcd1Z4.css +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/{cron-cli-CB6CufAb.js → cron-cli-CSy4-JGS.js} +20 -20
- package/dist/{cron-cli-Db6fardJ.js → cron-cli-Db3uCDIT.js} +21 -21
- package/dist/{daemon-cli-Xe22v7lZ.js → daemon-cli-BLbzcTuD.js} +61 -22
- package/dist/{daemon-cli-BlHK0ly2.js → daemon-cli-DR0D35MO.js} +60 -21
- package/dist/{daemon-runtime-CMqH8BUE.js → daemon-runtime-ZWXvLDxx.js} +3 -3
- package/dist/{daemon-runtime-DwQFvDXZ.js → daemon-runtime-pVcZ2KDE.js} +3 -3
- package/dist/{deliver-CD7-BhYD.js → deliver-BHNoC9Yk.js} +396 -290
- package/dist/{deliver-BdGjIcTC.js → deliver-C_5eGQrX.js} +392 -286
- package/dist/{deliver-nTKaXF--.js → deliver-DPHZlWgr.js} +392 -287
- package/dist/{deliver-CDMGxRoW.js → deliver-geVWJ52I.js} +394 -288
- package/dist/{deps-BDQ_K8zf.js → deps-CP0dcOgD.js} +2 -2
- package/dist/{deps-D60FbgTP.js → deps-DW5r2IEk.js} +2 -2
- package/dist/{devices-cli-N559801X.js → devices-cli-BViqX5pl.js} +15 -15
- package/dist/{devices-cli-IxmPLIk8.js → devices-cli-DpYaY-iM.js} +14 -14
- package/dist/{directory-cli-Caq-OYk8.js → directory-cli-BWD1DdKf.js} +16 -16
- package/dist/{directory-cli-ClrdmQL-.js → directory-cli-BcvZfkfo.js} +17 -17
- package/dist/{dispatcher-BfXtm4Dl.js → dispatcher-4Qn951N3.js} +5 -3
- package/dist/{dns-cli-DgVO0Pkw.js → dns-cli-_Ych2tu9.js} +12 -12
- package/dist/{dns-cli-BTNZkWHs.js → dns-cli-gQCxUXgU.js} +13 -13
- package/dist/{docs-cli-9Xan7C6D.js → docs-cli-Bseiau7J.js} +7 -7
- package/dist/{docs-cli-DZULc91f.js → docs-cli-DzBTlWQE.js} +8 -8
- package/dist/{doctor-D39rZvNH.js → doctor-BNkYYahD.js} +37 -36
- package/dist/{doctor-Dq1YeYdH.js → doctor-DzIgdPx1.js} +37 -36
- package/dist/entry.js +77 -21
- package/dist/{env-B5YXooWp.js → env-BUuSkE19.js} +1 -1
- package/dist/{exec-DFOtZbI0.js → exec-BPQSKwGa.js} +5 -3
- package/dist/{exec-B8JKbXKW.js → exec-DqZFMawz.js} +5 -3
- package/dist/{exec-Bas1hoSJ.js → exec-EKUaAU91.js} +57 -18
- package/dist/{exec-CiH_vkWn.js → exec-_PSUrMP8.js} +528 -19
- package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Bqk-tIxY.js} +134 -51
- package/dist/{exec-approvals-C9InMoAB.js → exec-approvals-C67V-ljH.js} +134 -51
- package/dist/{exec-approvals-cli-EASbqFd-.js → exec-approvals-cli-D6vfSqQu.js} +22 -22
- package/dist/{exec-approvals-cli-DPHItoxG.js → exec-approvals-cli-DAdoki_R.js} +21 -21
- package/dist/extensionAPI.js +8518 -9140
- package/dist/fetch-Bz1WxfzV.js +285 -0
- package/dist/fetch-D2O8s8I1.js +285 -0
- package/dist/fetch-Dm-nCwa_.js +285 -0
- package/dist/fetch-wuOZDzdT.js +285 -0
- package/dist/{gateway-cli-BFqUIif8.js → gateway-cli-C-k7JPlr.js} +1868 -1072
- package/dist/{gateway-cli-v4kSPsLE.js → gateway-cli-DIIJ9Z0Y.js} +1870 -1074
- package/dist/{gateway-rpc-D6LrkcSA.js → gateway-rpc-D6jLh81b.js} +3 -3
- package/dist/{gateway-rpc-dHFK02Kk.js → gateway-rpc-aqysUyf5.js} +3 -3
- package/dist/{github-copilot-auth-CQIWc0hC.js → github-copilot-auth-BUqfX7hG.js} +316 -52
- package/dist/{github-copilot-auth-D2jfnapd.js → github-copilot-auth-By-nyRb6.js} +316 -52
- package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-C9W4SY9o.js} +7 -4
- package/dist/{github-copilot-token-BW-SEg7E.js → github-copilot-token-CiF5Iyi2.js} +6 -3
- package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DatTe1w-.js} +6 -3
- package/dist/{github-copilot-token-wCk9Fg_E.js → github-copilot-token-c9Igt3ZH.js} +6 -3
- package/dist/{gmail-setup-utils-CVNgLkXL.js → gmail-setup-utils-HvKMdooP.js} +4 -4
- package/dist/{gmail-setup-utils-CAM1vbUS.js → gmail-setup-utils-c-iF00aL.js} +3 -3
- package/dist/{health-format-C77hrjEQ.js → health-format-BORnJOeS.js} +106 -44
- package/dist/{health-format-DDYtlkB9.js → health-format-Nd0jcoqM.js} +105 -43
- package/dist/{help-format-CUnac_bT.js → help-format-Cd5PLwXe.js} +1 -1
- package/dist/{help-format-aiW76js8.js → help-format-DYBEvMOX.js} +1 -1
- package/dist/{hooks-cli-DsflBRxX.js → hooks-cli-3KdsbdRi.js} +53 -47
- package/dist/{hooks-cli-C7kctMuZ.js → hooks-cli-BThja6wK.js} +53 -47
- package/dist/{hooks-status-DRAVHSPg.js → hooks-status-BbIz0zmm.js} +6 -5
- package/dist/{hooks-status-lHWrY64E.js → hooks-status-DPJORMB6.js} +6 -5
- package/dist/{image--gbzucyh.js → image-BaJKrmCs.js} +12 -8
- package/dist/{image-ORs4LLwg.js → image-D-5pUELC.js} +13 -9
- package/dist/{image-DMnjYGdA.js → image-TvL5YI_W.js} +13 -9
- package/dist/{image-BVNytEIn.js → image-bodq5cUH.js} +13 -9
- package/dist/index.js +261 -109
- package/dist/{installs-CXGV291R.js → installs-BrOMqREO.js} +7 -6
- package/dist/{installs-89zeUsVn.js → installs-z69au9Te.js} +7 -6
- package/dist/{links-Dg90NTyF.js → links-AVB88xxH.js} +1 -1
- package/dist/{links-7M-j83As.js → links-DpxpaKe1.js} +1 -1
- package/dist/llm-slug-generator.js +18 -19
- package/dist/{loader-BnzQyT31.js → loader-CS-5lMQa.js} +3694 -4531
- package/dist/{logging-DuK6YXuK.js → logging-B3KnAryz.js} +2 -2
- package/dist/{logging-CNq0UUgf.js → logging-DEPo2hji.js} +1 -1
- package/dist/{login-qr-CJ__cE3-.js → login-qr--28WL1TN.js} +11 -5
- package/dist/{login-qr-BVeOFfNW.js → login-qr-4o2aC2UE.js} +9 -4
- package/dist/{login-qr-BJChByHH.js → login-qr-BUdeu1Sl.js} +8 -2
- package/dist/{login-qr-KUOtNJaQ.js → login-qr-BsYM2E1y.js} +12 -6
- package/dist/{logs-cli-Cm7AiarR.js → logs-cli-DDMD5w5_.js} +38 -22
- package/dist/{logs-cli-BWmtAsjp.js → logs-cli-DvPoVKCN.js} +38 -22
- package/dist/{manager-C-jXr9ks.js → manager-CXo1uqmO.js} +102 -86
- package/dist/{manager-CMFBuvVd.js → manager-ChW0jk7T.js} +101 -85
- package/dist/{manager-D2Ndphg3.js → manager-DUOe7ud6.js} +100 -85
- package/dist/{manager-BsdlwsL5.js → manager-PoxUqdN_.js} +98 -82
- package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-CVsqjgX0.js} +40 -2
- package/dist/{manifest-registry-DyMRD3rY.js → manifest-registry-jeAPx6AW.js} +40 -2
- package/dist/{message-channel-CHRYQtAM.js → message-channel-CTtrEkmW.js} +1 -1
- package/dist/{message-channel-BlgPSDAh.js → message-channel-DWcu72r7.js} +1 -1
- package/dist/{model-auth-BqjMkNFs.js → model-auth-BvODRbV0.js} +362 -35
- package/dist/{model-selection-DbsbOAoh.js → model-selection-B53OvWCf.js} +353 -33
- package/dist/{model-selection-DlV6wnTr.js → model-selection-vC82fEiP.js} +331 -30
- package/dist/{models-cli-DIFBrK4W.js → models-cli-DqsKsOgd.js} +66 -55
- package/dist/{models-cli-0XhQQbMW.js → models-cli-NV0bnh8l.js} +66 -55
- package/dist/{node-cli-BMUfVCSq.js → node-cli-C7YleuBk.js} +54 -44
- package/dist/{node-cli-DY4lzhDA.js → node-cli-CxwoHnZ6.js} +54 -44
- package/dist/{node-service-DQ-tiSie.js → node-service-C7f_uvx9.js} +2 -2
- package/dist/{node-service-u8g85nD3.js → node-service-De_WkxJe.js} +2 -2
- package/dist/{nodes-cli-BX6oWnLC.js → nodes-cli-BxrMVI9V.js} +25 -23
- package/dist/{nodes-cli-CVHzcQo2.js → nodes-cli-Clb0ocwB.js} +24 -22
- package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-CVL9363A.js} +48 -6
- package/dist/{nodes-screen-lykd2cny.js → nodes-screen-DsHJIN2I.js} +47 -5
- package/dist/{note-Ci08TSbV.js → note-Duiadw1g.js} +1 -1
- package/dist/{note-DVO1KLaW.js → note-uC6iDp4y.js} +2 -2
- package/dist/{onboard-channels-DTkFFbzS.js → onboard-channels-C5Iaafwb.js} +10 -10
- package/dist/{onboard-channels-CtDnwaF5.js → onboard-channels-C5uL3i8d.js} +11 -11
- package/dist/{onboard-skills-BnAcpzfX.js → onboard-skills-BFxdI1Y1.js} +1143 -112
- package/dist/{onboard-skills-DuoDzEmI.js → onboard-skills-DUG8Y0se.js} +1142 -111
- package/dist/{onboarding-DvhiiHh0.js → onboarding-ClzElK4D.js} +56 -48
- package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BKsZvO6K.js} +6 -2
- package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-CEnmuBUN.js} +6 -2
- package/dist/{pairing-cli-BKJHBxwT.js → pairing-cli-BWWFZF7Q.js} +16 -16
- package/dist/{pairing-cli-DJHjPBwu.js → pairing-cli-BrFLxnug.js} +16 -16
- package/dist/{pairing-labels-xImhiJax.js → pairing-labels-C8KULWNH.js} +1 -1
- package/dist/{pairing-labels-CHxlh3tT.js → pairing-labels-Dt2vXyI7.js} +1 -1
- package/dist/{pairing-store-CO6umWFP.js → pairing-store-Dz-ArTQS.js} +3 -3
- package/dist/{pairing-store-BpPUNzmB.js → pairing-store-gQdv7Ruh.js} +2 -2
- package/dist/{path-env-Nq83EHH9.js → path-env-BRKerjt1.js} +2 -2
- package/dist/{path-env-CXWUFfFv.js → path-env-OJAyUeWW.js} +1 -1
- package/dist/paths-BZK4Ct0I.js +81 -0
- package/dist/paths-DWYi0R_2.js +78 -0
- package/dist/{paths-Bkhd_qY8.js → paths-DdKf4lHp.js} +35 -5
- package/dist/paths-SFzVNGbc.js +78 -0
- package/dist/pi-auth-json-D7hGObyW.js +12 -0
- package/dist/pi-auth-json-DgvHjfJy.js +8 -0
- package/dist/pi-auth-json-la6lnAzY.js +79 -0
- package/dist/pi-auth-json-p3vsMR7W.js +79 -0
- package/dist/{pi-embedded-C1qKCgDT.js → pi-embedded-De6SeAPs.js} +9518 -9968
- package/dist/{pi-embedded-helpers-DtPn5RC8.js → pi-embedded-helpers-BrUBxrE2.js} +70 -10
- package/dist/{pi-embedded-helpers-DhEkdWB1.js → pi-embedded-helpers-D0mqOwwq.js} +821 -128
- package/dist/{pi-embedded-helpers-7AjuNiiJ.js → pi-embedded-helpers-DpJb0kUk.js} +69 -9
- package/dist/{pi-embedded-helpers-BTkXgwJ7.js → pi-embedded-helpers-ZI1UCSRM.js} +927 -136
- package/dist/{pi-tools.policy-gG96mWwA.js → pi-tools.policy-z5Wd_2WN.js} +4 -4
- package/dist/{plugin-auto-enable-D5ye7QnB.js → plugin-auto-enable-B8mX3rX3.js} +14 -5
- package/dist/{plugin-auto-enable-BROgMZcf.js → plugin-auto-enable-OO0eDINB.js} +14 -5
- package/dist/plugin-sdk/agents/apply-patch-update.d.ts +3 -1
- package/dist/plugin-sdk/agents/apply-patch.d.ts +11 -3
- package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +5 -0
- package/dist/plugin-sdk/agents/auth-profiles.d.ts +1 -1
- package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
- package/dist/plugin-sdk/agents/bash-tools.exec.d.ts +26 -0
- package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
- package/dist/plugin-sdk/agents/huggingface-models.d.ts +17 -0
- package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
- package/dist/plugin-sdk/agents/openclaw-tools.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-auth-json.d.ts +14 -0
- package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
- package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/images.d.ts +9 -4
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-tools.read.d.ts +8 -3
- package/dist/plugin-sdk/agents/sandbox/constants.d.ts +1 -1
- package/dist/plugin-sdk/agents/sandbox/docker.d.ts +14 -3
- package/dist/plugin-sdk/agents/sandbox/fs-bridge.d.ts +56 -0
- package/dist/plugin-sdk/agents/sandbox/types.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
- package/dist/plugin-sdk/agents/subagent-registry.d.ts +3 -1
- package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
- package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
- package/dist/plugin-sdk/agents/tools/common.d.ts +4 -0
- package/dist/plugin-sdk/agents/tools/image-tool.d.ts +9 -1
- package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
- package/dist/plugin-sdk/agents/usage.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/memory-flush.d.ts +2 -2
- package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
- package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
- package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
- package/dist/plugin-sdk/auto-reply/status.d.ts +2 -0
- package/dist/plugin-sdk/auto-reply/templating.d.ts +3 -0
- package/dist/plugin-sdk/auto-reply/thinking.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
- package/dist/plugin-sdk/browser/cdp.helpers.d.ts +2 -1
- package/dist/plugin-sdk/browser/client-actions-core.d.ts +1 -0
- package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
- package/dist/plugin-sdk/browser/pw-ai.d.ts +1 -1
- package/dist/plugin-sdk/browser/pw-session.d.ts +25 -0
- package/dist/plugin-sdk/browser/pw-tools-core.interactions.d.ts +2 -0
- package/dist/plugin-sdk/browser/routes/dispatcher.d.ts +1 -0
- package/dist/plugin-sdk/browser/routes/types.d.ts +5 -0
- package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
- package/dist/plugin-sdk/channels/registry.d.ts +2 -2
- package/dist/plugin-sdk/cli/nodes-camera.d.ts +8 -2
- package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
- package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
- package/dist/plugin-sdk/commands/onboard-helpers.d.ts +1 -0
- package/dist/plugin-sdk/commands/onboard-types.d.ts +9 -1
- package/dist/plugin-sdk/commands/signal-install.d.ts +20 -0
- package/dist/plugin-sdk/config/config.d.ts +1 -1
- package/dist/plugin-sdk/config/group-policy.d.ts +3 -0
- package/dist/plugin-sdk/config/merge-patch.d.ts +1 -0
- package/dist/plugin-sdk/config/sessions/paths.d.ts +14 -4
- package/dist/plugin-sdk/config/sessions/store.d.ts +8 -0
- package/dist/plugin-sdk/config/sessions/types.d.ts +8 -0
- package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
- package/dist/plugin-sdk/config/types.channels.d.ts +2 -0
- package/dist/plugin-sdk/config/types.d.ts +1 -0
- package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
- package/dist/plugin-sdk/config/types.gateway.d.ts +35 -0
- package/dist/plugin-sdk/config/types.hooks.d.ts +23 -1
- package/dist/plugin-sdk/config/types.irc.d.ts +96 -0
- package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
- package/dist/plugin-sdk/config/types.openclaw.d.ts +6 -0
- package/dist/plugin-sdk/config/types.queue.d.ts +1 -0
- package/dist/plugin-sdk/config/types.slack.d.ts +2 -0
- package/dist/plugin-sdk/config/types.telegram.d.ts +2 -0
- package/dist/plugin-sdk/config/validation.d.ts +20 -0
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
- package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +193 -2
- package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +3 -2
- package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +378 -0
- package/dist/plugin-sdk/config/zod-schema.providers.d.ts +176 -0
- package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.session.d.ts +1 -0
- package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
- package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
- package/dist/plugin-sdk/cron/types.d.ts +2 -0
- package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
- package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
- package/dist/plugin-sdk/gateway/auth-rate-limit.d.ts +59 -0
- package/dist/plugin-sdk/gateway/auth.d.ts +47 -0
- package/dist/plugin-sdk/gateway/net.d.ts +5 -0
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +7 -7
- package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
- package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +21 -0
- package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -1
- package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
- package/dist/plugin-sdk/gateway/session-utils.types.d.ts +1 -0
- package/dist/plugin-sdk/imessage/send.d.ts +12 -0
- package/dist/plugin-sdk/index.js +2147 -900
- package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
- package/dist/plugin-sdk/infra/brew.d.ts +8 -0
- package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
- package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
- package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +8 -1
- package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
- package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
- package/dist/plugin-sdk/infra/outbound/message.d.ts +2 -0
- package/dist/plugin-sdk/infra/outbound/outbound-send-service.d.ts +2 -0
- package/dist/plugin-sdk/infra/session-cost-usage.d.ts +3 -0
- package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
- package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
- package/dist/plugin-sdk/logging/console.d.ts +4 -0
- package/dist/plugin-sdk/logging/logger.d.ts +1 -1
- package/dist/plugin-sdk/logging/state.d.ts +1 -0
- package/dist/plugin-sdk/logging.d.ts +2 -2
- package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
- package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
- package/dist/plugin-sdk/media/input-files.d.ts +5 -0
- package/dist/plugin-sdk/media/store.d.ts +10 -0
- package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
- package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
- package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
- package/dist/plugin-sdk/memory/embedding-chunk-limits.d.ts +3 -0
- package/dist/plugin-sdk/memory/embedding-input-limits.d.ts +2 -0
- package/dist/plugin-sdk/memory/embedding-model-limits.d.ts +2 -0
- package/dist/plugin-sdk/memory/embeddings.d.ts +1 -0
- package/dist/plugin-sdk/memory/internal.d.ts +11 -0
- package/dist/plugin-sdk/memory/manager.d.ts +0 -6
- package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
- package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
- package/dist/plugin-sdk/memory/session-files.d.ts +2 -0
- package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
- package/dist/plugin-sdk/providers/github-copilot-token.d.ts +3 -0
- package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
- package/dist/plugin-sdk/security/external-content.d.ts +1 -1
- package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
- package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
- package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
- package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
- package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
- package/dist/plugin-sdk/slack/monitor/media.d.ts +21 -0
- package/dist/plugin-sdk/slack/types.d.ts +1 -0
- package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
- package/dist/plugin-sdk/telegram/fetch.d.ts +1 -0
- package/dist/plugin-sdk/telegram/monitor.d.ts +1 -0
- package/dist/plugin-sdk/telegram/send.d.ts +3 -0
- package/dist/plugin-sdk/tts/tts.d.ts +2 -2
- package/dist/plugin-sdk/utils/fetch-timeout.d.ts +2 -0
- package/dist/plugin-sdk/web/media.d.ts +12 -2
- package/dist/{plugins-CQw3z3Nw.js → plugins-CTjLu-z-.js} +4 -4
- package/dist/{plugins-B7F0Ly9G.js → plugins-CxrdL_IZ.js} +3 -3
- package/dist/{plugins-cli-CJ74eHvr.js → plugins-cli-CbX97Kvt.js} +259 -49
- package/dist/{plugins-cli-ubDwUAzK.js → plugins-cli-Dn9OeO53.js} +257 -47
- package/dist/{ports-kYsTYQdA.js → ports-C8YYHVlc.js} +2 -2
- package/dist/{program-1bQ15ivo.js → program-D-mNC0It.js} +86 -83
- package/dist/{progress-Da1ehW-x.js → progress-COHv-uNT.js} +1 -1
- package/dist/{progress-COzt9PNY.js → progress-DZb6yPcJ.js} +1 -1
- package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-Cf1r1L6k.js} +1 -1
- package/dist/{prompt-style-DjZDxcFg.js → prompt-style-lSlXMhsd.js} +1 -1
- package/dist/{pw-ai-CQ4-gUNR.js → pw-ai-6GzTgK5g.js} +205 -32
- package/dist/{pw-ai-1NN0FrJb.js → pw-ai-C8YhJRaI.js} +207 -32
- package/dist/{pw-ai-qEMUq5Mt.js → pw-ai-CKGenizV.js} +203 -29
- package/dist/{pw-ai-IOqEXO1O.js → pw-ai-D7devT89.js} +206 -32
- package/dist/{qmd-manager-CEwp3el1.js → qmd-manager-CQzWovq-.js} +71 -90
- package/dist/{qmd-manager-D6N3qvQ5.js → qmd-manager-Cs8RJVQp.js} +73 -90
- package/dist/{qmd-manager-C48QzrRe.js → qmd-manager-DdgrQ2kc.js} +71 -88
- package/dist/{qmd-manager-DaUqCKB_.js → qmd-manager-dyIoOvKl.js} +73 -90
- package/dist/{register.subclis-Cm-VJ5nP.js → register.subclis-ifHtmF3e.js} +29 -29
- package/dist/{reply-CBs4e9Rm.js → reply-VIHqsQ-k.js} +7906 -8743
- package/dist/{routes-9ygR0GOk.js → routes-CaCvio4Q.js} +36 -15
- package/dist/{routes-BrWrBk2R.js → routes-Cpfxk96k.js} +36 -14
- package/dist/{rpc-Cjuz2Gv1.js → rpc-BhB01Bhj.js} +3 -3
- package/dist/{rpc-DhkLVY5H.js → rpc-C5WsS_Ne.js} +3 -3
- package/dist/{run-main-BlZ5l-X9.js → run-main-DVy6KJTe.js} +88 -85
- package/dist/runner-B7CKBC80.js +1800 -0
- package/dist/runner-BEy5ZGFv.js +1901 -0
- package/dist/runner-Bv0BmJPF.js +1800 -0
- package/dist/runner-ChqVEgPx.js +1901 -0
- package/dist/{sandbox-qt49csTr.js → sandbox-BAChxjC5.js} +627 -157
- package/dist/{sandbox-CPZiaKcS.js → sandbox-DNHDwHw8.js} +628 -158
- package/dist/{sandbox-cli-C6_iNuqO.js → sandbox-cli-9oq67QEg.js} +22 -22
- package/dist/{sandbox-cli-C_wK-KAE.js → sandbox-cli-BiNq9yUe.js} +22 -22
- package/dist/{security-cli-CTTD1vms.js → security-cli-CRg03hvq.js} +28 -28
- package/dist/{security-cli-DRpGF2Yc.js → security-cli-LmBBHnmh.js} +28 -28
- package/dist/{server-context-lyNcqJYD.js → server-context-FwqBRH3K.js} +10 -10
- package/dist/{server-context-39mkstUs.js → server-context-RY7lRaxl.js} +9 -9
- package/dist/{server-node-events-V_G9BRRw.js → server-node-events-BbHOZX3O.js} +48 -43
- package/dist/{server-node-events-o9G18PaE.js → server-node-events-CngNLVL-.js} +50 -45
- package/dist/{service-DOlJdIqe.js → service-BnqdBTAK.js} +8 -4
- package/dist/{service-DDPRbf8a.js → service-DZN7KRok.js} +8 -4
- package/dist/{service-audit-VDRrWefh.js → service-audit-0Eil3ISN.js} +4 -4
- package/dist/{service-audit-CVy00Ze_.js → service-audit-B8KIOe8A.js} +4 -4
- package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-B-tyjp76.js} +14 -14
- package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-BYUb7fov.js} +14 -14
- package/dist/{shared-BnpC3wMU.js → shared-BCdNboU1.js} +3 -3
- package/dist/{shared-CagUDdmp.js → shared-CsAwU6-q.js} +3 -3
- package/dist/{shared-BDk_zC9p.js → shared-Csn6DLBA.js} +5 -5
- package/dist/{shared-C92wo-6f.js → shared-DEanAgja.js} +4 -4
- package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BrGkh5K7.js} +1 -1
- package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-CucvxYhu.js} +1 -1
- package/dist/{skills-Ccsv3IQq.js → skills-CE7by2IF.js} +151 -8
- package/dist/{skills-_eKGrw9z.js → skills-Dz15dAM4.js} +152 -9
- package/dist/{skills-cli-DqvLjooh.js → skills-cli-B5b75pDK.js} +13 -13
- package/dist/{skills-cli-DUncybht.js → skills-cli-CbCDrYwp.js} +13 -13
- package/dist/{skills-status-Cp2ZFhIx.js → skills-status-B99Us6yS.js} +2 -2
- package/dist/{skills-status-Ck0CCFZG.js → skills-status-ChM7JE47.js} +3 -3
- package/dist/{sqlite-DODNHWJb.js → sqlite-2UsPaJz5.js} +97 -2
- package/dist/{sqlite-cSdsHVEw.js → sqlite-CASnHrgX.js} +97 -1
- package/dist/{sqlite-Bwo2rASR.js → sqlite-CVWiMkGu.js} +97 -1
- package/dist/{sqlite-CpqIbY4-.js → sqlite-CcIWkGaM.js} +97 -1
- package/dist/{status-Bmx9_1C7.js → status-CKuX1-zb.js} +3 -3
- package/dist/{status-CBGgwlTW.js → status-Cm4q6o-I.js} +57 -49
- package/dist/{status-DkJgtvSz.js → status-DD2iqGc9.js} +4 -4
- package/dist/{subsystem-DPnkvS73.js → subsystem-DHfJG4gk.js} +73 -20
- package/dist/{system-cli-9fQ1uLiz.js → system-cli-BVJDR474.js} +87 -15
- package/dist/{system-cli-Gq8OWHFg.js → system-cli-C3Y_9VpI.js} +88 -16
- package/dist/{systemd-Pa7LURHB.js → systemd-DxddcFsa.js} +3 -3
- package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-BVLopJ9O.js} +1 -1
- package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-BThjV1Sr.js} +2 -2
- package/dist/{systemd-linger-6_naJcJp.js → systemd-linger-D3Va1Cv7.js} +2 -2
- package/dist/{systemd-BEWwfwn0.js → systemd-s3S2HVog.js} +3 -3
- package/dist/{table-Bb9gAVIp.js → table-BIk8Aan_.js} +2 -2
- package/dist/{table-cCoGqLsk.js → table-Bvka_vkc.js} +1 -1
- package/dist/{tool-display-DUVhO36P.js → tool-display-DbdMQFZx.js} +2 -2
- package/dist/{tool-display-DNOVCI6J.js → tool-display-kpW5Hg2z.js} +2 -2
- package/dist/{tui-DDVqLwqT.js → tui-B40Z2jMa.js} +120 -14
- package/dist/{tui-cli-CurbazQf.js → tui-cli-Bwa6K7xR.js} +28 -28
- package/dist/{tui-cli-BeN2K38I.js → tui-cli-DD6g7uZb.js} +27 -27
- package/dist/{tui-B9zLJxf6.js → tui-lFMZUnx6.js} +121 -13
- package/dist/{update-Ct9sqJC_.js → update-Bos8PPCG.js} +3 -3
- package/dist/{update--i077azM.js → update-Cg8MtrEr.js} +3 -3
- package/dist/{update-cli-CT5W0kpw.js → update-cli-CC-wTeje.js} +92 -73
- package/dist/{update-cli-C87lNK1S.js → update-cli-CULnXFL_.js} +91 -72
- package/dist/{update-runner-BIttRDyV.js → update-runner-BaLsla0c.js} +11 -11
- package/dist/{update-runner-xbeVkAD9.js → update-runner-Dbsdl5AU.js} +10 -10
- package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
- package/dist/{utils-BTaR--Ln.js → utils-BtIMES3N.js} +1 -1
- package/dist/{webhooks-cli-Db3zyJaw.js → webhooks-cli-ClHLUu_j.js} +21 -13
- package/dist/{webhooks-cli-DUUa8gVY.js → webhooks-cli-DVXr2uyN.js} +21 -13
- package/dist/{widearea-dns-BgYasW6m.js → widearea-dns-C4RnIR9O.js} +3 -3
- package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-Ypwgjpsr.js} +3 -3
- package/dist/{ws-C0k_dhCP.js → ws-BcJt4pcg.js} +24 -2
- package/dist/{ws-DtDKpbLR.js → ws-MC-rTJLe.js} +24 -2
- package/dist/{ws-log-cMNgAyLy.js → ws-log-WrJ4QYu7.js} +1 -1
- package/dist/{ws-log-C6vm_XMA.js → ws-log-lip4ETlm.js} +2 -2
- package/dist/{wsl-rfIr_Sde.js → wsl-BvTIzy-8.js} +5 -3
- package/docs/assets/install-script.svg +1 -0
- package/docs/automation/hooks.md +1 -38
- package/docs/automation/webhook.md +52 -2
- package/docs/channels/discord.md +389 -381
- package/docs/channels/grammy.md +1 -1
- package/docs/channels/imessage.md +229 -218
- package/docs/channels/index.md +1 -0
- package/docs/channels/irc.md +234 -0
- package/docs/channels/msteams.md +2 -0
- package/docs/channels/pairing.md +1 -1
- package/docs/channels/slack.md +295 -415
- package/docs/channels/telegram.md +397 -460
- package/docs/channels/whatsapp.md +338 -310
- package/docs/ci.md +0 -12
- package/docs/cli/hooks.md +1 -14
- package/docs/cli/index.md +6 -1
- package/docs/cli/logs.md +4 -0
- package/docs/cli/onboard.md +33 -0
- package/docs/cli/plugins.md +20 -1
- package/docs/cli/security.md +2 -0
- package/docs/concepts/architecture.md +0 -16
- package/docs/concepts/memory.md +7 -4
- package/docs/concepts/model-providers.md +27 -0
- package/docs/concepts/session-tool.md +1 -0
- package/docs/concepts/system-prompt.md +13 -0
- package/docs/docs.json +18 -12
- package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +229 -0
- package/docs/gateway/configuration-examples.md +9 -2
- package/docs/gateway/configuration-reference.md +2345 -0
- package/docs/gateway/configuration.md +338 -3297
- package/docs/gateway/index.md +162 -238
- package/docs/gateway/openai-http-api.md +1 -0
- package/docs/gateway/openresponses-http-api.md +16 -0
- package/docs/gateway/remote-gateway-readme.md +0 -16
- package/docs/gateway/security/index.md +4 -16
- package/docs/gateway/tools-invoke-http-api.md +26 -1
- package/docs/help/faq.md +9 -0
- package/docs/help/testing.md +11 -0
- package/docs/install/docker.md +18 -0
- package/docs/install/hetzner.md +21 -0
- package/docs/install/installer.md +20 -0
- package/docs/nodes/audio.md +19 -0
- package/docs/platforms/mac/release.md +7 -7
- package/docs/providers/glm.md +3 -3
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +3 -0
- package/docs/providers/litellm.md +153 -0
- package/docs/providers/together.md +2 -2
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/zai.md +2 -2
- package/docs/reference/credits.md +4 -28
- package/docs/reference/test.md +2 -1
- package/docs/reference/token-use.md +1 -1
- package/docs/reference/transcript-hygiene.md +18 -0
- package/docs/start/getting-started.md +5 -0
- package/docs/start/onboarding-overview.md +51 -0
- package/docs/start/onboarding.md +1 -0
- package/docs/start/openclaw.md +0 -16
- package/docs/start/wizard-cli-automation.md +17 -0
- package/docs/start/wizard-cli-reference.md +12 -0
- package/docs/start/wizard.md +3 -1
- package/docs/tools/browser.md +6 -0
- package/docs/zh-CN/automation/hooks.md +1 -38
- package/docs/zh-CN/cli/hooks.md +1 -14
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/monitor.test.ts +40 -28
- package/extensions/bluebubbles/src/monitor.ts +0 -4
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +10 -10
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +2 -5
- package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
- package/extensions/feishu/src/bot.test.ts +265 -0
- package/extensions/feishu/src/bot.ts +73 -18
- package/extensions/feishu/src/channel.test.ts +48 -0
- package/extensions/feishu/src/channel.ts +1 -3
- package/extensions/feishu/src/config-schema.ts +6 -0
- package/extensions/feishu/src/docx.ts +14 -4
- package/extensions/feishu/src/media.test.ts +151 -0
- package/extensions/feishu/src/media.ts +27 -13
- package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
- package/extensions/feishu/src/reply-dispatcher.ts +124 -67
- package/extensions/feishu/src/streaming-card.ts +223 -0
- package/extensions/feishu/src/targets.test.ts +16 -0
- package/extensions/feishu/src/targets.ts +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/oauth.test.ts +4 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/channel.ts +3 -20
- package/extensions/googlechat/src/resolve-target.test.ts +138 -0
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/index.ts +17 -0
- package/extensions/irc/openclaw.plugin.json +9 -0
- package/extensions/irc/package.json +14 -0
- package/extensions/irc/src/accounts.ts +268 -0
- package/extensions/irc/src/channel.ts +367 -0
- package/extensions/irc/src/client.test.ts +43 -0
- package/extensions/irc/src/client.ts +439 -0
- package/extensions/irc/src/config-schema.test.ts +27 -0
- package/extensions/irc/src/config-schema.ts +97 -0
- package/extensions/irc/src/control-chars.ts +22 -0
- package/extensions/irc/src/inbound.ts +334 -0
- package/extensions/irc/src/monitor.test.ts +43 -0
- package/extensions/irc/src/monitor.ts +158 -0
- package/extensions/irc/src/normalize.test.ts +46 -0
- package/extensions/irc/src/normalize.ts +117 -0
- package/extensions/irc/src/onboarding.test.ts +118 -0
- package/extensions/irc/src/onboarding.ts +479 -0
- package/extensions/irc/src/policy.test.ts +132 -0
- package/extensions/irc/src/policy.ts +157 -0
- package/extensions/irc/src/probe.ts +64 -0
- package/extensions/irc/src/protocol.test.ts +44 -0
- package/extensions/irc/src/protocol.ts +169 -0
- package/extensions/irc/src/runtime.ts +14 -0
- package/extensions/irc/src/send.ts +99 -0
- package/extensions/irc/src/types.ts +94 -0
- 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 +6 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
- package/extensions/matrix/node_modules/.bin/markdown-it.CMD +2 -2
- package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +2 -2
- package/extensions/matrix/package.json +2 -2
- package/extensions/matrix/src/matrix/monitor/media.ts +4 -2
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/index.ts +6 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
- package/extensions/memory-lancedb/package.json +2 -2
- package/extensions/minimax-portal-auth/index.ts +7 -5
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/media-helpers.test.ts +9 -0
- package/extensions/msteams/src/media-helpers.ts +15 -1
- package/extensions/msteams/src/mentions.test.ts +235 -0
- package/extensions/msteams/src/mentions.ts +114 -0
- package/extensions/msteams/src/messenger.test.ts +81 -1
- package/extensions/msteams/src/messenger.ts +11 -2
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +2 -2
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/telegram/src/channel.ts +1 -0
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/onboarding.test.ts +5 -0
- package/extensions/twitch/src/outbound.test.ts +17 -6
- package/extensions/twitch/src/outbound.ts +12 -10
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/media-stream.ts +7 -1
- package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
- package/extensions/voice-call/src/providers/twilio.ts +12 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/whatsapp/src/channel.ts +6 -16
- package/extensions/whatsapp/src/resolve-target.test.ts +154 -0
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +26 -22
- package/dist/auth-BcNHFK-i.js +0 -184
- package/dist/auth-DkjJ3pm-.js +0 -184
- package/dist/boolean-M-esQJt6.js +0 -30
- package/dist/bundled/soul-evil/HOOK.md +0 -71
- package/dist/bundled/soul-evil/handler.js +0 -194
- package/dist/cli-B631__JU.js +0 -89
- package/dist/cli-DVhCVZZ6.js +0 -86
- package/dist/config-CI7EpvlP.js +0 -15
- package/dist/constants-DuoCkWRh.js +0 -65
- package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
- package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
- package/dist/date-time-c6HTX6IW.js +0 -187
- package/dist/frontmatter-xwTm0734.js +0 -105
- package/dist/parse-DqAvJRIf.js +0 -23
- package/dist/parse-duration-De_tAQSe.js +0 -24
- package/dist/parse-timeout-DV8NQQWk.js +0 -16
- package/dist/paths-IivnSNkP.js +0 -51
- package/dist/paths-MnZaxqPw.js +0 -48
- package/dist/paths-uoGO2aiO.js +0 -48
- package/dist/pi-model-discovery-DzFOAbQt.js +0 -20
- package/dist/plugin-sdk/tui/tui-formatters.d.ts +0 -31
- package/dist/session-key-nXYQSv-a.js +0 -167
- package/dist/tailscale-DU6DgqVy.js +0 -225
- package/dist/tailscale-DzJUWmKf.js +0 -252
- package/dist/utils-dp_OM900.js +0 -476
- package/docs/hooks/soul-evil.md +0 -69
- package/docs/zh-CN/hooks/soul-evil.md +0 -72
- package/skills/local-places/SERVER_README.md +0 -101
- package/skills/local-places/SKILL.md +0 -102
- package/skills/local-places/pyproject.toml +0 -21
- package/skills/local-places/src/local_places/__init__.py +0 -2
- package/skills/local-places/src/local_places/google_places.py +0 -314
- package/skills/local-places/src/local_places/main.py +0 -65
- package/skills/local-places/src/local_places/schemas.py +0 -107
- /package/dist/{archive-CXhvR9nU.js → archive-aSMUcOc6.js} +0 -0
- /package/dist/{archive-D0z3LZDK.js → archive-beaSfAzA.js} +0 -0
- /package/dist/{brew-BIrWdDps.js → brew-DlQQMJ3n.js} +0 -0
- /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.js} +0 -0
- /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
- /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-CodyYLHe.js} +0 -0
- /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
- /package/dist/{constants-CNTiY-ZN.js → constants-BvQ6S8j5.js} +0 -0
- /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
- /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
- /package/dist/{errors-x4NYs-1P.js → errors-Cojm0Kl7.js} +0 -0
- /package/dist/{format-CaxeRcue.js → format-CL8VOhxX.js} +0 -0
- /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
- /package/dist/{format-duration-CEmFWLyX.js → format-duration--hQihAvf.js} +0 -0
- /package/dist/{format-duration-DCXJx2ba.js → format-duration-84n6_DgO.js} +0 -0
- /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Cywx6ldk.js} +0 -0
- /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
- /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
- /package/dist/{helpers-DdwqKAAS.js → helpers-ByYj2Aq5.js} +0 -0
- /package/dist/{helpers-CRzoyyXS.js → helpers-CUVSCDJV.js} +0 -0
- /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
- /package/dist/{is-main-qJ675wPV.js → is-main-B9A8S9YC.js} +0 -0
- /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.js} +0 -0
- /package/dist/{logging-BzvBIA3Y.js → logging-D-Jq2wIo.js} +0 -0
- /package/dist/{logging-CfEk_PnX.js → logging-fywhKCmE.js} +0 -0
- /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
- /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BuRiE-Ij.js} +0 -0
- /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-CfVgwy6x.js} +0 -0
- /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
- /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
- /package/dist/{pi-model-discovery-DzEIEgHL.js → pi-model-discovery-EwKVHlZB.js} +0 -0
- /package/dist/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
- /package/dist/{prompts-CXLLIBwP.js → prompts-Dszjy1n_.js} +0 -0
- /package/dist/{redact-BRmQPYDR.js → redact-BIMJ3ntQ.js} +0 -0
- /package/dist/{redact-BHmk44DI.js → redact-BRsnXqwD.js} +0 -0
- /package/dist/{redact-DAKeu7PA.js → redact-UvkXqguc.js} +0 -0
- /package/dist/{status-Cv36yYdi.js → status-C_dMhoE0.js} +0 -0
- /package/dist/{status-Drziap9H.js → status-DCkF_L3U.js} +0 -0
- /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
- /package/dist/{tailnet-CL5GtL7t.js → tailnet-DATIFSsY.js} +0 -0
- /package/dist/{tailnet-DGRSvYuQ.js → tailnet-uoFvUSsw.js} +0 -0
- /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
- /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
- /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-Ch7wLX-j.js} +0 -0
- /package/dist/{usage-format-6Uar63S0.js → usage-format-Bhl_WCWP.js} +0 -0
- /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw.ps1 +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.ps1 +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.ps1 +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { a as resolveOAuthDir, n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-rb94mUrR.js";
|
|
2
|
-
import { M as normalizeAgentId, T as DEFAULT_AGENT_ID, c as resolveDefaultAgentId, j as normalizeAccountId, s as resolveAgentWorkspaceDir, w as DEFAULT_ACCOUNT_ID } from "./agent-scope-
|
|
3
|
-
import { A as isPlainObject, I as resolveConfigDir, N as jidToE164, R as resolveUserPath, Z as success, j as isRecord, m as CHANNEL_IDS, nt as getChildLogger, q as info, u as defaultRuntime, y as normalizeChatChannelId } from "./exec-
|
|
4
|
-
import { D as shouldEnableShellEnvFallback, E as shouldDeferShellEnvFallback, T as resolveShellEnvFallbackTimeoutMs, U as DEFAULT_CONTEXT_TOKENS, s as parseModelRef, w as loadShellEnvFallback } from "./model-selection-
|
|
2
|
+
import { M as normalizeAgentId, T as DEFAULT_AGENT_ID, c as resolveDefaultAgentId, j as normalizeAccountId, s as resolveAgentWorkspaceDir, w as DEFAULT_ACCOUNT_ID } from "./agent-scope-okUOVjE5.js";
|
|
3
|
+
import { A as isPlainObject$1, I as resolveConfigDir, N as jidToE164, R as resolveUserPath, Z as success, j as isRecord, m as CHANNEL_IDS, nt as getChildLogger, q as info, u as defaultRuntime, y as normalizeChatChannelId } from "./exec-EKUaAU91.js";
|
|
4
|
+
import { D as shouldEnableShellEnvFallback, E as shouldDeferShellEnvFallback, T as resolveShellEnvFallbackTimeoutMs, U as DEFAULT_CONTEXT_TOKENS, s as parseModelRef, w as loadShellEnvFallback } from "./model-selection-vC82fEiP.js";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import fs from "node:fs";
|
|
8
8
|
import os from "node:os";
|
|
9
9
|
import JSON5 from "json5";
|
|
10
10
|
import fs$1 from "node:fs/promises";
|
|
11
|
+
import { isDeepStrictEqual } from "node:util";
|
|
11
12
|
import { fileURLToPath } from "node:url";
|
|
12
13
|
import crypto from "node:crypto";
|
|
13
14
|
import dotenv from "dotenv";
|
|
@@ -49,6 +50,9 @@ function maybeRestoreCredsFromBackup(authDir) {
|
|
|
49
50
|
if (!backupRaw) return;
|
|
50
51
|
JSON.parse(backupRaw);
|
|
51
52
|
fs.copyFileSync(backupPath, credsPath);
|
|
53
|
+
try {
|
|
54
|
+
fs.chmodSync(credsPath, 384);
|
|
55
|
+
} catch {}
|
|
52
56
|
logger.warn({ credsPath }, "restored corrupted WhatsApp creds.json from backup");
|
|
53
57
|
} catch {}
|
|
54
58
|
}
|
|
@@ -765,7 +769,7 @@ function substituteString(value, env, configPath) {
|
|
|
765
769
|
function substituteAny(value, env, path) {
|
|
766
770
|
if (typeof value === "string") return substituteString(value, env, path);
|
|
767
771
|
if (Array.isArray(value)) return value.map((item, index) => substituteAny(item, env, `${path}[${index}]`));
|
|
768
|
-
if (isPlainObject(value)) {
|
|
772
|
+
if (isPlainObject$1(value)) {
|
|
769
773
|
const result = {};
|
|
770
774
|
for (const [key, val] of Object.entries(value)) result[key] = substituteAny(val, env, path ? `${path}.${key}` : key);
|
|
771
775
|
return result;
|
|
@@ -835,7 +839,7 @@ var CircularIncludeError = class extends ConfigIncludeError {
|
|
|
835
839
|
/** Deep merge: arrays concatenate, objects merge recursively, primitives: source wins */
|
|
836
840
|
function deepMerge(target, source) {
|
|
837
841
|
if (Array.isArray(target) && Array.isArray(source)) return [...target, ...source];
|
|
838
|
-
if (isPlainObject(target) && isPlainObject(source)) {
|
|
842
|
+
if (isPlainObject$1(target) && isPlainObject$1(source)) {
|
|
839
843
|
const result = { ...target };
|
|
840
844
|
for (const key of Object.keys(source)) result[key] = key in result ? deepMerge(result[key], source[key]) : source[key];
|
|
841
845
|
return result;
|
|
@@ -852,7 +856,7 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
852
856
|
}
|
|
853
857
|
process(obj) {
|
|
854
858
|
if (Array.isArray(obj)) return obj.map((item) => this.process(item));
|
|
855
|
-
if (!isPlainObject(obj)) return obj;
|
|
859
|
+
if (!isPlainObject$1(obj)) return obj;
|
|
856
860
|
if (!(INCLUDE_KEY in obj)) return this.processObject(obj);
|
|
857
861
|
return this.processInclude(obj);
|
|
858
862
|
}
|
|
@@ -866,7 +870,7 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
866
870
|
const otherKeys = Object.keys(obj).filter((k) => k !== INCLUDE_KEY);
|
|
867
871
|
const included = this.resolveInclude(includeValue);
|
|
868
872
|
if (otherKeys.length === 0) return included;
|
|
869
|
-
if (!isPlainObject(included)) throw new ConfigIncludeError("Sibling keys require included content to be an object", typeof includeValue === "string" ? includeValue : INCLUDE_KEY);
|
|
873
|
+
if (!isPlainObject$1(included)) throw new ConfigIncludeError("Sibling keys require included content to be an object", typeof includeValue === "string" ? includeValue : INCLUDE_KEY);
|
|
870
874
|
const rest = {};
|
|
871
875
|
for (const key of otherKeys) rest[key] = this.process(obj[key]);
|
|
872
876
|
return deepMerge(included, rest);
|
|
@@ -929,6 +933,30 @@ function resolveConfigIncludes(obj, configPath, resolver = defaultResolver) {
|
|
|
929
933
|
return new IncludeProcessor(configPath, resolver).process(obj);
|
|
930
934
|
}
|
|
931
935
|
|
|
936
|
+
//#endregion
|
|
937
|
+
//#region src/infra/exec-safety.ts
|
|
938
|
+
const SHELL_METACHARS = /[;&|`$<>]/;
|
|
939
|
+
const CONTROL_CHARS = /[\r\n]/;
|
|
940
|
+
const QUOTE_CHARS = /["']/;
|
|
941
|
+
const BARE_NAME_PATTERN = /^[A-Za-z0-9._+-]+$/;
|
|
942
|
+
function isLikelyPath(value) {
|
|
943
|
+
if (value.startsWith(".") || value.startsWith("~")) return true;
|
|
944
|
+
if (value.includes("/") || value.includes("\\")) return true;
|
|
945
|
+
return /^[A-Za-z]:[\\/]/.test(value);
|
|
946
|
+
}
|
|
947
|
+
function isSafeExecutableValue(value) {
|
|
948
|
+
if (!value) return false;
|
|
949
|
+
const trimmed = value.trim();
|
|
950
|
+
if (!trimmed) return false;
|
|
951
|
+
if (trimmed.includes("\0")) return false;
|
|
952
|
+
if (CONTROL_CHARS.test(trimmed)) return false;
|
|
953
|
+
if (SHELL_METACHARS.test(trimmed)) return false;
|
|
954
|
+
if (QUOTE_CHARS.test(trimmed)) return false;
|
|
955
|
+
if (isLikelyPath(trimmed)) return true;
|
|
956
|
+
if (trimmed.startsWith("-")) return false;
|
|
957
|
+
return BARE_NAME_PATTERN.test(trimmed);
|
|
958
|
+
}
|
|
959
|
+
|
|
932
960
|
//#endregion
|
|
933
961
|
//#region src/config/legacy.shared.ts
|
|
934
962
|
const getRecord = (value) => isRecord(value) ? value : null;
|
|
@@ -950,16 +978,16 @@ const mergeMissing = (target, source) => {
|
|
|
950
978
|
if (isRecord(existing) && isRecord(value)) mergeMissing(existing, value);
|
|
951
979
|
}
|
|
952
980
|
};
|
|
953
|
-
const AUDIO_TRANSCRIPTION_CLI_ALLOWLIST = new Set(["whisper"]);
|
|
954
981
|
const mapLegacyAudioTranscription = (value) => {
|
|
955
982
|
const transcriber = getRecord(value);
|
|
956
983
|
const command = Array.isArray(transcriber?.command) ? transcriber?.command : null;
|
|
957
984
|
if (!command || command.length === 0) return null;
|
|
958
|
-
|
|
985
|
+
if (typeof command[0] !== "string") return null;
|
|
986
|
+
if (!command.every((part) => typeof part === "string")) return null;
|
|
987
|
+
const rawExecutable = command[0].trim();
|
|
959
988
|
if (!rawExecutable) return null;
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
const args = command.slice(1).map((part) => String(part));
|
|
989
|
+
if (!isSafeExecutableValue(rawExecutable)) return null;
|
|
990
|
+
const args = command.slice(1);
|
|
963
991
|
const timeoutSeconds = typeof transcriber?.timeoutSeconds === "number" ? transcriber?.timeoutSeconds : void 0;
|
|
964
992
|
const result = {
|
|
965
993
|
command: rawExecutable,
|
|
@@ -1423,30 +1451,35 @@ const LEGACY_CONFIG_MIGRATIONS_PART_2 = [
|
|
|
1423
1451
|
mediaAudio.models = [mapped];
|
|
1424
1452
|
changes.push("Moved routing.transcribeAudio → tools.media.audio.models.");
|
|
1425
1453
|
} else changes.push("Removed routing.transcribeAudio (tools.media.audio.models already set).");
|
|
1426
|
-
} else changes.push("Removed routing.transcribeAudio (
|
|
1454
|
+
} else changes.push("Removed routing.transcribeAudio (invalid or empty command).");
|
|
1427
1455
|
delete routing.transcribeAudio;
|
|
1428
1456
|
}
|
|
1457
|
+
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
id: "audio.transcription-v2",
|
|
1462
|
+
describe: "Move audio.transcription to tools.media.audio.models",
|
|
1463
|
+
apply: (raw, changes) => {
|
|
1429
1464
|
const audio = getRecord(raw.audio);
|
|
1430
|
-
if (audio?.transcription
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
}
|
|
1465
|
+
if (audio?.transcription === void 0) return;
|
|
1466
|
+
const mapped = mapLegacyAudioTranscription(audio.transcription);
|
|
1467
|
+
if (mapped) {
|
|
1468
|
+
const mediaAudio = ensureRecord(ensureRecord(ensureRecord(raw, "tools"), "media"), "audio");
|
|
1469
|
+
if ((Array.isArray(mediaAudio.models) ? mediaAudio.models : []).length === 0) {
|
|
1470
|
+
mediaAudio.enabled = true;
|
|
1471
|
+
mediaAudio.models = [mapped];
|
|
1472
|
+
changes.push("Moved audio.transcription → tools.media.audio.models.");
|
|
1473
|
+
} else changes.push("Removed audio.transcription (tools.media.audio.models already set).");
|
|
1474
|
+
delete audio.transcription;
|
|
1475
|
+
if (Object.keys(audio).length === 0) delete raw.audio;
|
|
1476
|
+
else raw.audio = audio;
|
|
1477
|
+
} else {
|
|
1478
|
+
delete audio.transcription;
|
|
1479
|
+
changes.push("Removed audio.transcription (invalid or empty command).");
|
|
1480
|
+
if (Object.keys(audio).length === 0) delete raw.audio;
|
|
1481
|
+
else raw.audio = audio;
|
|
1448
1482
|
}
|
|
1449
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
1450
1483
|
}
|
|
1451
1484
|
}
|
|
1452
1485
|
];
|
|
@@ -1771,6 +1804,26 @@ function findLegacyConfigIssues(raw) {
|
|
|
1771
1804
|
return issues;
|
|
1772
1805
|
}
|
|
1773
1806
|
|
|
1807
|
+
//#endregion
|
|
1808
|
+
//#region src/config/merge-patch.ts
|
|
1809
|
+
function applyMergePatch(base, patch) {
|
|
1810
|
+
if (!isPlainObject$1(patch)) return patch;
|
|
1811
|
+
const result = isPlainObject$1(base) ? { ...base } : {};
|
|
1812
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
1813
|
+
if (value === null) {
|
|
1814
|
+
delete result[key];
|
|
1815
|
+
continue;
|
|
1816
|
+
}
|
|
1817
|
+
if (isPlainObject$1(value)) {
|
|
1818
|
+
const baseValue = result[key];
|
|
1819
|
+
result[key] = applyMergePatch(isPlainObject$1(baseValue) ? baseValue : {}, value);
|
|
1820
|
+
continue;
|
|
1821
|
+
}
|
|
1822
|
+
result[key] = value;
|
|
1823
|
+
}
|
|
1824
|
+
return result;
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1774
1827
|
//#endregion
|
|
1775
1828
|
//#region src/config/normalize-paths.ts
|
|
1776
1829
|
const PATH_VALUE_RE = /^~(?=$|[\\/])/;
|
|
@@ -1789,11 +1842,11 @@ function normalizeAny(key, value) {
|
|
|
1789
1842
|
return value.map((entry) => {
|
|
1790
1843
|
if (typeof entry === "string") return normalizeChildren ? normalizeStringValue(key, entry) : entry;
|
|
1791
1844
|
if (Array.isArray(entry)) return normalizeAny(void 0, entry);
|
|
1792
|
-
if (isPlainObject(entry)) return normalizeAny(void 0, entry);
|
|
1845
|
+
if (isPlainObject$1(entry)) return normalizeAny(void 0, entry);
|
|
1793
1846
|
return entry;
|
|
1794
1847
|
});
|
|
1795
1848
|
}
|
|
1796
|
-
if (!isPlainObject(value)) return value;
|
|
1849
|
+
if (!isPlainObject$1(value)) return value;
|
|
1797
1850
|
for (const [childKey, childValue] of Object.entries(value)) {
|
|
1798
1851
|
const next = normalizeAny(childKey, childValue);
|
|
1799
1852
|
if (next !== childValue) value[childKey] = next;
|
|
@@ -1844,7 +1897,7 @@ function setConfigValueAtPath(root, path, value) {
|
|
|
1844
1897
|
for (let idx = 0; idx < path.length - 1; idx += 1) {
|
|
1845
1898
|
const key = path[idx];
|
|
1846
1899
|
const next = cursor[key];
|
|
1847
|
-
if (!isPlainObject(next)) cursor[key] = {};
|
|
1900
|
+
if (!isPlainObject$1(next)) cursor[key] = {};
|
|
1848
1901
|
cursor = cursor[key];
|
|
1849
1902
|
}
|
|
1850
1903
|
cursor[path[path.length - 1]] = value;
|
|
@@ -1855,7 +1908,7 @@ function unsetConfigValueAtPath(root, path) {
|
|
|
1855
1908
|
for (let idx = 0; idx < path.length - 1; idx += 1) {
|
|
1856
1909
|
const key = path[idx];
|
|
1857
1910
|
const next = cursor[key];
|
|
1858
|
-
if (!isPlainObject(next)) return false;
|
|
1911
|
+
if (!isPlainObject$1(next)) return false;
|
|
1859
1912
|
stack.push({
|
|
1860
1913
|
node: cursor,
|
|
1861
1914
|
key
|
|
@@ -1868,7 +1921,7 @@ function unsetConfigValueAtPath(root, path) {
|
|
|
1868
1921
|
for (let idx = stack.length - 1; idx >= 0; idx -= 1) {
|
|
1869
1922
|
const { node, key } = stack[idx];
|
|
1870
1923
|
const child = node[key];
|
|
1871
|
-
if (isPlainObject(child) && Object.keys(child).length === 0) delete node[key];
|
|
1924
|
+
if (isPlainObject$1(child) && Object.keys(child).length === 0) delete node[key];
|
|
1872
1925
|
else break;
|
|
1873
1926
|
}
|
|
1874
1927
|
return true;
|
|
@@ -1876,7 +1929,7 @@ function unsetConfigValueAtPath(root, path) {
|
|
|
1876
1929
|
function getConfigValueAtPath(root, path) {
|
|
1877
1930
|
let cursor = root;
|
|
1878
1931
|
for (const key of path) {
|
|
1879
|
-
if (!isPlainObject(cursor)) return;
|
|
1932
|
+
if (!isPlainObject$1(cursor)) return;
|
|
1880
1933
|
cursor = cursor[key];
|
|
1881
1934
|
}
|
|
1882
1935
|
return cursor;
|
|
@@ -1886,7 +1939,7 @@ function getConfigValueAtPath(root, path) {
|
|
|
1886
1939
|
//#region src/config/runtime-overrides.ts
|
|
1887
1940
|
let overrides = {};
|
|
1888
1941
|
function mergeOverrides(base, override) {
|
|
1889
|
-
if (!isPlainObject(base) || !isPlainObject(override)) return override;
|
|
1942
|
+
if (!isPlainObject$1(base) || !isPlainObject$1(override)) return override;
|
|
1890
1943
|
const next = { ...base };
|
|
1891
1944
|
for (const [key, value] of Object.entries(override)) {
|
|
1892
1945
|
if (value === void 0) continue;
|
|
@@ -1979,6 +2032,46 @@ const normalizePluginsConfig = (config) => {
|
|
|
1979
2032
|
entries: normalizePluginEntries(config?.entries)
|
|
1980
2033
|
};
|
|
1981
2034
|
};
|
|
2035
|
+
const hasExplicitMemorySlot = (plugins) => Boolean(plugins?.slots && Object.prototype.hasOwnProperty.call(plugins.slots, "memory"));
|
|
2036
|
+
const hasExplicitMemoryEntry = (plugins) => Boolean(plugins?.entries && Object.prototype.hasOwnProperty.call(plugins.entries, "memory-core"));
|
|
2037
|
+
const hasExplicitPluginConfig = (plugins) => {
|
|
2038
|
+
if (!plugins) return false;
|
|
2039
|
+
if (typeof plugins.enabled === "boolean") return true;
|
|
2040
|
+
if (Array.isArray(plugins.allow) && plugins.allow.length > 0) return true;
|
|
2041
|
+
if (Array.isArray(plugins.deny) && plugins.deny.length > 0) return true;
|
|
2042
|
+
if (plugins.load?.paths && Array.isArray(plugins.load.paths) && plugins.load.paths.length > 0) return true;
|
|
2043
|
+
if (plugins.slots && Object.keys(plugins.slots).length > 0) return true;
|
|
2044
|
+
if (plugins.entries && Object.keys(plugins.entries).length > 0) return true;
|
|
2045
|
+
return false;
|
|
2046
|
+
};
|
|
2047
|
+
function applyTestPluginDefaults(cfg, env = process.env) {
|
|
2048
|
+
if (!env.VITEST) return cfg;
|
|
2049
|
+
const plugins = cfg.plugins;
|
|
2050
|
+
if (hasExplicitPluginConfig(plugins)) {
|
|
2051
|
+
if (hasExplicitMemorySlot(plugins) || hasExplicitMemoryEntry(plugins)) return cfg;
|
|
2052
|
+
return {
|
|
2053
|
+
...cfg,
|
|
2054
|
+
plugins: {
|
|
2055
|
+
...plugins,
|
|
2056
|
+
slots: {
|
|
2057
|
+
...plugins?.slots,
|
|
2058
|
+
memory: "none"
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
};
|
|
2062
|
+
}
|
|
2063
|
+
return {
|
|
2064
|
+
...cfg,
|
|
2065
|
+
plugins: {
|
|
2066
|
+
...plugins,
|
|
2067
|
+
enabled: false,
|
|
2068
|
+
slots: {
|
|
2069
|
+
...plugins?.slots,
|
|
2070
|
+
memory: "none"
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
};
|
|
2074
|
+
}
|
|
1982
2075
|
function resolveEnableState(id, origin, config) {
|
|
1983
2076
|
if (!config.enabled) return {
|
|
1984
2077
|
enabled: false,
|
|
@@ -2574,28 +2667,8 @@ function parseDurationMs(raw, opts) {
|
|
|
2574
2667
|
}
|
|
2575
2668
|
|
|
2576
2669
|
//#endregion
|
|
2577
|
-
//#region src/
|
|
2578
|
-
const
|
|
2579
|
-
const CONTROL_CHARS = /[\r\n]/;
|
|
2580
|
-
const QUOTE_CHARS = /["']/;
|
|
2581
|
-
const BARE_NAME_PATTERN = /^[A-Za-z0-9._+-]+$/;
|
|
2582
|
-
function isLikelyPath(value) {
|
|
2583
|
-
if (value.startsWith(".") || value.startsWith("~")) return true;
|
|
2584
|
-
if (value.includes("/") || value.includes("\\")) return true;
|
|
2585
|
-
return /^[A-Za-z]:[\\/]/.test(value);
|
|
2586
|
-
}
|
|
2587
|
-
function isSafeExecutableValue(value) {
|
|
2588
|
-
if (!value) return false;
|
|
2589
|
-
const trimmed = value.trim();
|
|
2590
|
-
if (!trimmed) return false;
|
|
2591
|
-
if (trimmed.includes("\0")) return false;
|
|
2592
|
-
if (CONTROL_CHARS.test(trimmed)) return false;
|
|
2593
|
-
if (SHELL_METACHARS.test(trimmed)) return false;
|
|
2594
|
-
if (QUOTE_CHARS.test(trimmed)) return false;
|
|
2595
|
-
if (isLikelyPath(trimmed)) return true;
|
|
2596
|
-
if (trimmed.startsWith("-")) return false;
|
|
2597
|
-
return BARE_NAME_PATTERN.test(trimmed);
|
|
2598
|
-
}
|
|
2670
|
+
//#region src/config/zod-schema.sensitive.ts
|
|
2671
|
+
const sensitive = z.registry();
|
|
2599
2672
|
|
|
2600
2673
|
//#endregion
|
|
2601
2674
|
//#region src/config/zod-schema.core.ts
|
|
@@ -2632,7 +2705,7 @@ const ModelDefinitionSchema = z.object({
|
|
|
2632
2705
|
}).strict();
|
|
2633
2706
|
const ModelProviderSchema = z.object({
|
|
2634
2707
|
baseUrl: z.string().min(1),
|
|
2635
|
-
apiKey: z.string().optional(),
|
|
2708
|
+
apiKey: z.string().optional().register(sensitive),
|
|
2636
2709
|
auth: z.union([
|
|
2637
2710
|
z.literal("api-key"),
|
|
2638
2711
|
z.literal("aws-sdk"),
|
|
@@ -2747,7 +2820,7 @@ const TtsConfigSchema = z.object({
|
|
|
2747
2820
|
allowSeed: z.boolean().optional()
|
|
2748
2821
|
}).strict().optional(),
|
|
2749
2822
|
elevenlabs: z.object({
|
|
2750
|
-
apiKey: z.string().optional(),
|
|
2823
|
+
apiKey: z.string().optional().register(sensitive),
|
|
2751
2824
|
baseUrl: z.string().optional(),
|
|
2752
2825
|
voiceId: z.string().optional(),
|
|
2753
2826
|
modelId: z.string().optional(),
|
|
@@ -2767,7 +2840,7 @@ const TtsConfigSchema = z.object({
|
|
|
2767
2840
|
}).strict().optional()
|
|
2768
2841
|
}).strict().optional(),
|
|
2769
2842
|
openai: z.object({
|
|
2770
|
-
apiKey: z.string().optional(),
|
|
2843
|
+
apiKey: z.string().optional().register(sensitive),
|
|
2771
2844
|
model: z.string().optional(),
|
|
2772
2845
|
voice: z.string().optional()
|
|
2773
2846
|
}).strict().optional(),
|
|
@@ -2856,6 +2929,7 @@ const QueueModeBySurfaceSchema = z.object({
|
|
|
2856
2929
|
whatsapp: QueueModeSchema.optional(),
|
|
2857
2930
|
telegram: QueueModeSchema.optional(),
|
|
2858
2931
|
discord: QueueModeSchema.optional(),
|
|
2932
|
+
irc: QueueModeSchema.optional(),
|
|
2859
2933
|
slack: QueueModeSchema.optional(),
|
|
2860
2934
|
mattermost: QueueModeSchema.optional(),
|
|
2861
2935
|
signal: QueueModeSchema.optional(),
|
|
@@ -3115,17 +3189,17 @@ const ToolsWebSearchSchema = z.object({
|
|
|
3115
3189
|
z.literal("perplexity"),
|
|
3116
3190
|
z.literal("grok")
|
|
3117
3191
|
]).optional(),
|
|
3118
|
-
apiKey: z.string().optional(),
|
|
3192
|
+
apiKey: z.string().optional().register(sensitive),
|
|
3119
3193
|
maxResults: z.number().int().positive().optional(),
|
|
3120
3194
|
timeoutSeconds: z.number().int().positive().optional(),
|
|
3121
3195
|
cacheTtlMinutes: z.number().nonnegative().optional(),
|
|
3122
3196
|
perplexity: z.object({
|
|
3123
|
-
apiKey: z.string().optional(),
|
|
3197
|
+
apiKey: z.string().optional().register(sensitive),
|
|
3124
3198
|
baseUrl: z.string().optional(),
|
|
3125
3199
|
model: z.string().optional()
|
|
3126
3200
|
}).strict().optional(),
|
|
3127
3201
|
grok: z.object({
|
|
3128
|
-
apiKey: z.string().optional(),
|
|
3202
|
+
apiKey: z.string().optional().register(sensitive),
|
|
3129
3203
|
model: z.string().optional(),
|
|
3130
3204
|
inlineCitations: z.boolean().optional()
|
|
3131
3205
|
}).strict().optional()
|
|
@@ -3243,7 +3317,7 @@ const MemorySearchSchema = z.object({
|
|
|
3243
3317
|
]).optional(),
|
|
3244
3318
|
remote: z.object({
|
|
3245
3319
|
baseUrl: z.string().optional(),
|
|
3246
|
-
apiKey: z.string().optional(),
|
|
3320
|
+
apiKey: z.string().optional().register(sensitive),
|
|
3247
3321
|
headers: z.record(z.string(), z.string()).optional(),
|
|
3248
3322
|
batch: z.object({
|
|
3249
3323
|
enabled: z.boolean().optional(),
|
|
@@ -3552,7 +3626,8 @@ const BindingsSchema = z.array(z.object({
|
|
|
3552
3626
|
id: z.string()
|
|
3553
3627
|
}).strict().optional(),
|
|
3554
3628
|
guildId: z.string().optional(),
|
|
3555
|
-
teamId: z.string().optional()
|
|
3629
|
+
teamId: z.string().optional(),
|
|
3630
|
+
roles: z.array(z.string()).optional()
|
|
3556
3631
|
}).strict()
|
|
3557
3632
|
}).strict()).optional();
|
|
3558
3633
|
const BroadcastStrategySchema = z.enum(["parallel", "sequential"]);
|
|
@@ -3591,7 +3666,8 @@ const HookMappingSchema = z.object({
|
|
|
3591
3666
|
action: z.union([z.literal("wake"), z.literal("agent")]).optional(),
|
|
3592
3667
|
wakeMode: z.union([z.literal("now"), z.literal("next-heartbeat")]).optional(),
|
|
3593
3668
|
name: z.string().optional(),
|
|
3594
|
-
|
|
3669
|
+
agentId: z.string().optional(),
|
|
3670
|
+
sessionKey: z.string().optional().register(sensitive),
|
|
3595
3671
|
messageTemplate: z.string().optional(),
|
|
3596
3672
|
textTemplate: z.string().optional(),
|
|
3597
3673
|
deliver: z.boolean().optional(),
|
|
@@ -3601,6 +3677,7 @@ const HookMappingSchema = z.object({
|
|
|
3601
3677
|
z.literal("whatsapp"),
|
|
3602
3678
|
z.literal("telegram"),
|
|
3603
3679
|
z.literal("discord"),
|
|
3680
|
+
z.literal("irc"),
|
|
3604
3681
|
z.literal("slack"),
|
|
3605
3682
|
z.literal("signal"),
|
|
3606
3683
|
z.literal("imessage"),
|
|
@@ -3623,7 +3700,7 @@ const InternalHookHandlerSchema = z.object({
|
|
|
3623
3700
|
const HookConfigSchema = z.object({
|
|
3624
3701
|
enabled: z.boolean().optional(),
|
|
3625
3702
|
env: z.record(z.string(), z.string()).optional()
|
|
3626
|
-
}).
|
|
3703
|
+
}).passthrough();
|
|
3627
3704
|
const HookInstallRecordSchema = z.object({
|
|
3628
3705
|
source: z.union([
|
|
3629
3706
|
z.literal("npm"),
|
|
@@ -3649,7 +3726,7 @@ const HooksGmailSchema = z.object({
|
|
|
3649
3726
|
label: z.string().optional(),
|
|
3650
3727
|
topic: z.string().optional(),
|
|
3651
3728
|
subscription: z.string().optional(),
|
|
3652
|
-
pushToken: z.string().optional(),
|
|
3729
|
+
pushToken: z.string().optional().register(sensitive),
|
|
3653
3730
|
hookUrl: z.string().optional(),
|
|
3654
3731
|
includeBody: z.boolean().optional(),
|
|
3655
3732
|
maxBytes: z.number().int().positive().optional(),
|
|
@@ -3822,7 +3899,7 @@ const TelegramAccountSchemaBase = z.object({
|
|
|
3822
3899
|
customCommands: z.array(TelegramCustomCommandSchema).optional(),
|
|
3823
3900
|
configWrites: z.boolean().optional(),
|
|
3824
3901
|
dmPolicy: DmPolicySchema.optional().default("pairing"),
|
|
3825
|
-
botToken: z.string().optional(),
|
|
3902
|
+
botToken: z.string().optional().register(sensitive),
|
|
3826
3903
|
tokenFile: z.string().optional(),
|
|
3827
3904
|
replyToMode: ReplyToModeSchema.optional(),
|
|
3828
3905
|
groups: z.record(z.string(), TelegramGroupSchema.optional()).optional(),
|
|
@@ -3848,8 +3925,9 @@ const TelegramAccountSchemaBase = z.object({
|
|
|
3848
3925
|
network: z.object({ autoSelectFamily: z.boolean().optional() }).strict().optional(),
|
|
3849
3926
|
proxy: z.string().optional(),
|
|
3850
3927
|
webhookUrl: z.string().optional(),
|
|
3851
|
-
webhookSecret: z.string().optional(),
|
|
3928
|
+
webhookSecret: z.string().optional().register(sensitive),
|
|
3852
3929
|
webhookPath: z.string().optional(),
|
|
3930
|
+
webhookHost: z.string().optional(),
|
|
3853
3931
|
actions: z.object({
|
|
3854
3932
|
reactions: z.boolean().optional(),
|
|
3855
3933
|
sendMessage: z.boolean().optional(),
|
|
@@ -3936,6 +4014,7 @@ const DiscordGuildChannelSchema = z.object({
|
|
|
3936
4014
|
skills: z.array(z.string()).optional(),
|
|
3937
4015
|
enabled: z.boolean().optional(),
|
|
3938
4016
|
users: z.array(z.union([z.string(), z.number()])).optional(),
|
|
4017
|
+
roles: z.array(z.union([z.string(), z.number()])).optional(),
|
|
3939
4018
|
systemPrompt: z.string().optional(),
|
|
3940
4019
|
includeThreadStarter: z.boolean().optional(),
|
|
3941
4020
|
autoThread: z.boolean().optional()
|
|
@@ -3952,6 +4031,7 @@ const DiscordGuildSchema = z.object({
|
|
|
3952
4031
|
"allowlist"
|
|
3953
4032
|
]).optional(),
|
|
3954
4033
|
users: z.array(z.union([z.string(), z.number()])).optional(),
|
|
4034
|
+
roles: z.array(z.union([z.string(), z.number()])).optional(),
|
|
3955
4035
|
channels: z.record(z.string(), DiscordGuildChannelSchema.optional()).optional()
|
|
3956
4036
|
}).strict();
|
|
3957
4037
|
const DiscordAccountSchema = z.object({
|
|
@@ -3961,7 +4041,7 @@ const DiscordAccountSchema = z.object({
|
|
|
3961
4041
|
enabled: z.boolean().optional(),
|
|
3962
4042
|
commands: ProviderCommandsSchema,
|
|
3963
4043
|
configWrites: z.boolean().optional(),
|
|
3964
|
-
token: z.string().optional(),
|
|
4044
|
+
token: z.string().optional().register(sensitive),
|
|
3965
4045
|
allowBots: z.boolean().optional(),
|
|
3966
4046
|
groupPolicy: GroupPolicySchema.optional().default("allowlist"),
|
|
3967
4047
|
historyLimit: z.number().int().min(0).optional(),
|
|
@@ -4012,7 +4092,7 @@ const DiscordAccountSchema = z.object({
|
|
|
4012
4092
|
}).strict().optional(),
|
|
4013
4093
|
pluralkit: z.object({
|
|
4014
4094
|
enabled: z.boolean().optional(),
|
|
4015
|
-
token: z.string().optional()
|
|
4095
|
+
token: z.string().optional().register(sensitive)
|
|
4016
4096
|
}).strict().optional(),
|
|
4017
4097
|
responsePrefix: z.string().optional()
|
|
4018
4098
|
}).strict();
|
|
@@ -4105,7 +4185,8 @@ const SlackChannelSchema = z.object({
|
|
|
4105
4185
|
}).strict();
|
|
4106
4186
|
const SlackThreadSchema = z.object({
|
|
4107
4187
|
historyScope: z.enum(["thread", "channel"]).optional(),
|
|
4108
|
-
inheritParent: z.boolean().optional()
|
|
4188
|
+
inheritParent: z.boolean().optional(),
|
|
4189
|
+
initialHistoryLimit: z.number().int().min(0).optional()
|
|
4109
4190
|
}).strict();
|
|
4110
4191
|
const SlackReplyToModeByChatTypeSchema = z.object({
|
|
4111
4192
|
direct: ReplyToModeSchema.optional(),
|
|
@@ -4115,16 +4196,16 @@ const SlackReplyToModeByChatTypeSchema = z.object({
|
|
|
4115
4196
|
const SlackAccountSchema = z.object({
|
|
4116
4197
|
name: z.string().optional(),
|
|
4117
4198
|
mode: z.enum(["socket", "http"]).optional(),
|
|
4118
|
-
signingSecret: z.string().optional(),
|
|
4199
|
+
signingSecret: z.string().optional().register(sensitive),
|
|
4119
4200
|
webhookPath: z.string().optional(),
|
|
4120
4201
|
capabilities: z.array(z.string()).optional(),
|
|
4121
4202
|
markdown: MarkdownConfigSchema,
|
|
4122
4203
|
enabled: z.boolean().optional(),
|
|
4123
4204
|
commands: ProviderCommandsSchema,
|
|
4124
4205
|
configWrites: z.boolean().optional(),
|
|
4125
|
-
botToken: z.string().optional(),
|
|
4126
|
-
appToken: z.string().optional(),
|
|
4127
|
-
userToken: z.string().optional(),
|
|
4206
|
+
botToken: z.string().optional().register(sensitive),
|
|
4207
|
+
appToken: z.string().optional().register(sensitive),
|
|
4208
|
+
userToken: z.string().optional().register(sensitive),
|
|
4128
4209
|
userTokenReadOnly: z.boolean().optional().default(true),
|
|
4129
4210
|
allowBots: z.boolean().optional(),
|
|
4130
4211
|
requireMention: z.boolean().optional(),
|
|
@@ -4170,7 +4251,7 @@ const SlackAccountSchema = z.object({
|
|
|
4170
4251
|
}).strict();
|
|
4171
4252
|
const SlackConfigSchema = SlackAccountSchema.extend({
|
|
4172
4253
|
mode: z.enum(["socket", "http"]).optional().default("socket"),
|
|
4173
|
-
signingSecret: z.string().optional(),
|
|
4254
|
+
signingSecret: z.string().optional().register(sensitive),
|
|
4174
4255
|
webhookPath: z.string().optional().default("/slack/events"),
|
|
4175
4256
|
accounts: z.record(z.string(), SlackAccountSchema.optional()).optional()
|
|
4176
4257
|
}).superRefine((value, ctx) => {
|
|
@@ -4260,6 +4341,84 @@ const SignalConfigSchema = SignalAccountSchemaBase.extend({ accounts: z.record(z
|
|
|
4260
4341
|
message: "channels.signal.dmPolicy=\"open\" requires channels.signal.allowFrom to include \"*\""
|
|
4261
4342
|
});
|
|
4262
4343
|
});
|
|
4344
|
+
const IrcGroupSchema = z.object({
|
|
4345
|
+
requireMention: z.boolean().optional(),
|
|
4346
|
+
tools: ToolPolicySchema,
|
|
4347
|
+
toolsBySender: ToolPolicyBySenderSchema$1,
|
|
4348
|
+
skills: z.array(z.string()).optional(),
|
|
4349
|
+
enabled: z.boolean().optional(),
|
|
4350
|
+
allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
|
4351
|
+
systemPrompt: z.string().optional()
|
|
4352
|
+
}).strict();
|
|
4353
|
+
const IrcNickServSchema = z.object({
|
|
4354
|
+
enabled: z.boolean().optional(),
|
|
4355
|
+
service: z.string().optional(),
|
|
4356
|
+
password: z.string().optional().register(sensitive),
|
|
4357
|
+
passwordFile: z.string().optional(),
|
|
4358
|
+
register: z.boolean().optional(),
|
|
4359
|
+
registerEmail: z.string().optional()
|
|
4360
|
+
}).strict();
|
|
4361
|
+
const IrcAccountSchemaBase = z.object({
|
|
4362
|
+
name: z.string().optional(),
|
|
4363
|
+
capabilities: z.array(z.string()).optional(),
|
|
4364
|
+
markdown: MarkdownConfigSchema,
|
|
4365
|
+
enabled: z.boolean().optional(),
|
|
4366
|
+
configWrites: z.boolean().optional(),
|
|
4367
|
+
host: z.string().optional(),
|
|
4368
|
+
port: z.number().int().min(1).max(65535).optional(),
|
|
4369
|
+
tls: z.boolean().optional(),
|
|
4370
|
+
nick: z.string().optional(),
|
|
4371
|
+
username: z.string().optional(),
|
|
4372
|
+
realname: z.string().optional(),
|
|
4373
|
+
password: z.string().optional().register(sensitive),
|
|
4374
|
+
passwordFile: z.string().optional(),
|
|
4375
|
+
nickserv: IrcNickServSchema.optional(),
|
|
4376
|
+
channels: z.array(z.string()).optional(),
|
|
4377
|
+
dmPolicy: DmPolicySchema.optional().default("pairing"),
|
|
4378
|
+
allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
|
4379
|
+
groupAllowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
|
4380
|
+
groupPolicy: GroupPolicySchema.optional().default("allowlist"),
|
|
4381
|
+
groups: z.record(z.string(), IrcGroupSchema.optional()).optional(),
|
|
4382
|
+
mentionPatterns: z.array(z.string()).optional(),
|
|
4383
|
+
historyLimit: z.number().int().min(0).optional(),
|
|
4384
|
+
dmHistoryLimit: z.number().int().min(0).optional(),
|
|
4385
|
+
dms: z.record(z.string(), DmConfigSchema.optional()).optional(),
|
|
4386
|
+
textChunkLimit: z.number().int().positive().optional(),
|
|
4387
|
+
chunkMode: z.enum(["length", "newline"]).optional(),
|
|
4388
|
+
blockStreaming: z.boolean().optional(),
|
|
4389
|
+
blockStreamingCoalesce: BlockStreamingCoalesceSchema.optional(),
|
|
4390
|
+
mediaMaxMb: z.number().positive().optional(),
|
|
4391
|
+
heartbeat: ChannelHeartbeatVisibilitySchema,
|
|
4392
|
+
responsePrefix: z.string().optional()
|
|
4393
|
+
}).strict();
|
|
4394
|
+
const IrcAccountSchema = IrcAccountSchemaBase.superRefine((value, ctx) => {
|
|
4395
|
+
requireOpenAllowFrom({
|
|
4396
|
+
policy: value.dmPolicy,
|
|
4397
|
+
allowFrom: value.allowFrom,
|
|
4398
|
+
ctx,
|
|
4399
|
+
path: ["allowFrom"],
|
|
4400
|
+
message: "channels.irc.dmPolicy=\"open\" requires channels.irc.allowFrom to include \"*\""
|
|
4401
|
+
});
|
|
4402
|
+
if (value.nickserv?.register && !value.nickserv.registerEmail?.trim()) ctx.addIssue({
|
|
4403
|
+
code: z.ZodIssueCode.custom,
|
|
4404
|
+
path: ["nickserv", "registerEmail"],
|
|
4405
|
+
message: "channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail"
|
|
4406
|
+
});
|
|
4407
|
+
});
|
|
4408
|
+
const IrcConfigSchema = IrcAccountSchemaBase.extend({ accounts: z.record(z.string(), IrcAccountSchema.optional()).optional() }).superRefine((value, ctx) => {
|
|
4409
|
+
requireOpenAllowFrom({
|
|
4410
|
+
policy: value.dmPolicy,
|
|
4411
|
+
allowFrom: value.allowFrom,
|
|
4412
|
+
ctx,
|
|
4413
|
+
path: ["allowFrom"],
|
|
4414
|
+
message: "channels.irc.dmPolicy=\"open\" requires channels.irc.allowFrom to include \"*\""
|
|
4415
|
+
});
|
|
4416
|
+
if (value.nickserv?.register && !value.nickserv.registerEmail?.trim()) ctx.addIssue({
|
|
4417
|
+
code: z.ZodIssueCode.custom,
|
|
4418
|
+
path: ["nickserv", "registerEmail"],
|
|
4419
|
+
message: "channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail"
|
|
4420
|
+
});
|
|
4421
|
+
});
|
|
4263
4422
|
const IMessageAccountSchemaBase = z.object({
|
|
4264
4423
|
name: z.string().optional(),
|
|
4265
4424
|
capabilities: z.array(z.string()).optional(),
|
|
@@ -4340,7 +4499,7 @@ const BlueBubblesAccountSchemaBase = z.object({
|
|
|
4340
4499
|
configWrites: z.boolean().optional(),
|
|
4341
4500
|
enabled: z.boolean().optional(),
|
|
4342
4501
|
serverUrl: z.string().optional(),
|
|
4343
|
-
password: z.string().optional(),
|
|
4502
|
+
password: z.string().optional().register(sensitive),
|
|
4344
4503
|
webhookPath: z.string().optional(),
|
|
4345
4504
|
dmPolicy: DmPolicySchema.optional().default("pairing"),
|
|
4346
4505
|
allowFrom: z.array(BlueBubblesAllowFromEntry).optional(),
|
|
@@ -4399,7 +4558,7 @@ const MSTeamsConfigSchema = z.object({
|
|
|
4399
4558
|
markdown: MarkdownConfigSchema,
|
|
4400
4559
|
configWrites: z.boolean().optional(),
|
|
4401
4560
|
appId: z.string().optional(),
|
|
4402
|
-
appPassword: z.string().optional(),
|
|
4561
|
+
appPassword: z.string().optional().register(sensitive),
|
|
4403
4562
|
tenantId: z.string().optional(),
|
|
4404
4563
|
webhook: z.object({
|
|
4405
4564
|
port: z.number().int().positive().optional(),
|
|
@@ -4547,6 +4706,7 @@ const ChannelsSchema = z.object({
|
|
|
4547
4706
|
whatsapp: WhatsAppConfigSchema.optional(),
|
|
4548
4707
|
telegram: TelegramConfigSchema.optional(),
|
|
4549
4708
|
discord: DiscordConfigSchema.optional(),
|
|
4709
|
+
irc: IrcConfigSchema.optional(),
|
|
4550
4710
|
googlechat: GoogleChatConfigSchema.optional(),
|
|
4551
4711
|
slack: SlackConfigSchema.optional(),
|
|
4552
4712
|
signal: SignalConfigSchema.optional(),
|
|
@@ -4730,6 +4890,11 @@ const MemoryQmdLimitsSchema = z.object({
|
|
|
4730
4890
|
}).strict();
|
|
4731
4891
|
const MemoryQmdSchema = z.object({
|
|
4732
4892
|
command: z.string().optional(),
|
|
4893
|
+
searchMode: z.union([
|
|
4894
|
+
z.literal("query"),
|
|
4895
|
+
z.literal("search"),
|
|
4896
|
+
z.literal("vsearch")
|
|
4897
|
+
]).optional(),
|
|
4733
4898
|
includeDefaultMemory: z.boolean().optional(),
|
|
4734
4899
|
paths: z.array(MemoryQmdPathSchema).optional(),
|
|
4735
4900
|
sessions: MemoryQmdSessionSchema.optional(),
|
|
@@ -4890,7 +5055,11 @@ const OpenClawSchema = z.object({
|
|
|
4890
5055
|
hooks: z.object({
|
|
4891
5056
|
enabled: z.boolean().optional(),
|
|
4892
5057
|
path: z.string().optional(),
|
|
4893
|
-
token: z.string().optional(),
|
|
5058
|
+
token: z.string().optional().register(sensitive),
|
|
5059
|
+
defaultSessionKey: z.string().optional(),
|
|
5060
|
+
allowRequestSessionKey: z.boolean().optional(),
|
|
5061
|
+
allowedSessionKeyPrefixes: z.array(z.string()).optional(),
|
|
5062
|
+
allowedAgentIds: z.array(z.string()).optional(),
|
|
4894
5063
|
maxBodyBytes: z.number().int().positive().optional(),
|
|
4895
5064
|
presets: z.array(z.string()).optional(),
|
|
4896
5065
|
transformsDir: z.string().optional(),
|
|
@@ -4929,7 +5098,7 @@ const OpenClawSchema = z.object({
|
|
|
4929
5098
|
voiceAliases: z.record(z.string(), z.string()).optional(),
|
|
4930
5099
|
modelId: z.string().optional(),
|
|
4931
5100
|
outputFormat: z.string().optional(),
|
|
4932
|
-
apiKey: z.string().optional(),
|
|
5101
|
+
apiKey: z.string().optional().register(sensitive),
|
|
4933
5102
|
interruptOnSpeech: z.boolean().optional()
|
|
4934
5103
|
}).strict().optional(),
|
|
4935
5104
|
gateway: z.object({
|
|
@@ -4952,11 +5121,15 @@ const OpenClawSchema = z.object({
|
|
|
4952
5121
|
}).strict().optional(),
|
|
4953
5122
|
auth: z.object({
|
|
4954
5123
|
mode: z.union([z.literal("token"), z.literal("password")]).optional(),
|
|
4955
|
-
token: z.string().optional(),
|
|
4956
|
-
password: z.string().optional(),
|
|
5124
|
+
token: z.string().optional().register(sensitive),
|
|
5125
|
+
password: z.string().optional().register(sensitive),
|
|
4957
5126
|
allowTailscale: z.boolean().optional()
|
|
4958
5127
|
}).strict().optional(),
|
|
4959
5128
|
trustedProxies: z.array(z.string()).optional(),
|
|
5129
|
+
tools: z.object({
|
|
5130
|
+
deny: z.array(z.string()).optional(),
|
|
5131
|
+
allow: z.array(z.string()).optional()
|
|
5132
|
+
}).strict().optional(),
|
|
4960
5133
|
tailscale: z.object({
|
|
4961
5134
|
mode: z.union([
|
|
4962
5135
|
z.literal("off"),
|
|
@@ -4968,8 +5141,8 @@ const OpenClawSchema = z.object({
|
|
|
4968
5141
|
remote: z.object({
|
|
4969
5142
|
url: z.string().optional(),
|
|
4970
5143
|
transport: z.union([z.literal("ssh"), z.literal("direct")]).optional(),
|
|
4971
|
-
token: z.string().optional(),
|
|
4972
|
-
password: z.string().optional(),
|
|
5144
|
+
token: z.string().optional().register(sensitive),
|
|
5145
|
+
password: z.string().optional().register(sensitive),
|
|
4973
5146
|
tlsFingerprint: z.string().optional(),
|
|
4974
5147
|
sshTarget: z.string().optional(),
|
|
4975
5148
|
sshIdentity: z.string().optional()
|
|
@@ -4995,8 +5168,10 @@ const OpenClawSchema = z.object({
|
|
|
4995
5168
|
responses: z.object({
|
|
4996
5169
|
enabled: z.boolean().optional(),
|
|
4997
5170
|
maxBodyBytes: z.number().int().positive().optional(),
|
|
5171
|
+
maxUrlParts: z.number().int().nonnegative().optional(),
|
|
4998
5172
|
files: z.object({
|
|
4999
5173
|
allowUrl: z.boolean().optional(),
|
|
5174
|
+
urlAllowlist: z.array(z.string()).optional(),
|
|
5000
5175
|
allowedMimes: z.array(z.string()).optional(),
|
|
5001
5176
|
maxBytes: z.number().int().positive().optional(),
|
|
5002
5177
|
maxChars: z.number().int().positive().optional(),
|
|
@@ -5010,6 +5185,7 @@ const OpenClawSchema = z.object({
|
|
|
5010
5185
|
}).strict().optional(),
|
|
5011
5186
|
images: z.object({
|
|
5012
5187
|
allowUrl: z.boolean().optional(),
|
|
5188
|
+
urlAllowlist: z.array(z.string()).optional(),
|
|
5013
5189
|
allowedMimes: z.array(z.string()).optional(),
|
|
5014
5190
|
maxBytes: z.number().int().positive().optional(),
|
|
5015
5191
|
maxRedirects: z.number().int().nonnegative().optional(),
|
|
@@ -5049,7 +5225,7 @@ const OpenClawSchema = z.object({
|
|
|
5049
5225
|
}).strict().optional(),
|
|
5050
5226
|
entries: z.record(z.string(), z.object({
|
|
5051
5227
|
enabled: z.boolean().optional(),
|
|
5052
|
-
apiKey: z.string().optional(),
|
|
5228
|
+
apiKey: z.string().optional().register(sensitive),
|
|
5053
5229
|
env: z.record(z.string(), z.string()).optional(),
|
|
5054
5230
|
config: z.record(z.string(), z.unknown()).optional()
|
|
5055
5231
|
}).strict()).optional()
|
|
@@ -5147,7 +5323,11 @@ function validateIdentityAvatar(config) {
|
|
|
5147
5323
|
}
|
|
5148
5324
|
return issues;
|
|
5149
5325
|
}
|
|
5150
|
-
|
|
5326
|
+
/**
|
|
5327
|
+
* Validates config without applying runtime defaults.
|
|
5328
|
+
* Use this when you need the raw validated config (e.g., for writing back to file).
|
|
5329
|
+
*/
|
|
5330
|
+
function validateConfigObjectRaw(raw) {
|
|
5151
5331
|
const legacyIssues = findLegacyConfigIssues(raw);
|
|
5152
5332
|
if (legacyIssues.length > 0) return {
|
|
5153
5333
|
ok: false,
|
|
@@ -5179,11 +5359,25 @@ function validateConfigObject(raw) {
|
|
|
5179
5359
|
};
|
|
5180
5360
|
return {
|
|
5181
5361
|
ok: true,
|
|
5182
|
-
config:
|
|
5362
|
+
config: validated.data
|
|
5363
|
+
};
|
|
5364
|
+
}
|
|
5365
|
+
function validateConfigObject(raw) {
|
|
5366
|
+
const result = validateConfigObjectRaw(raw);
|
|
5367
|
+
if (!result.ok) return result;
|
|
5368
|
+
return {
|
|
5369
|
+
ok: true,
|
|
5370
|
+
config: applyModelDefaults(applyAgentDefaults(applySessionDefaults(result.config)))
|
|
5183
5371
|
};
|
|
5184
5372
|
}
|
|
5185
5373
|
function validateConfigObjectWithPlugins(raw) {
|
|
5186
|
-
|
|
5374
|
+
return validateConfigObjectWithPluginsBase(raw, { applyDefaults: true });
|
|
5375
|
+
}
|
|
5376
|
+
function validateConfigObjectRawWithPlugins(raw) {
|
|
5377
|
+
return validateConfigObjectWithPluginsBase(raw, { applyDefaults: false });
|
|
5378
|
+
}
|
|
5379
|
+
function validateConfigObjectWithPluginsBase(raw, opts) {
|
|
5380
|
+
const base = opts.applyDefaults ? validateConfigObject(raw) : validateConfigObjectRaw(raw);
|
|
5187
5381
|
if (!base.ok) return {
|
|
5188
5382
|
ok: false,
|
|
5189
5383
|
issues: base.issues,
|
|
@@ -5395,6 +5589,38 @@ function coerceConfig(value) {
|
|
|
5395
5589
|
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
5396
5590
|
return value;
|
|
5397
5591
|
}
|
|
5592
|
+
function isPlainObject(value) {
|
|
5593
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5594
|
+
}
|
|
5595
|
+
function cloneUnknown(value) {
|
|
5596
|
+
return structuredClone(value);
|
|
5597
|
+
}
|
|
5598
|
+
function createMergePatch(base, target) {
|
|
5599
|
+
if (!isPlainObject(base) || !isPlainObject(target)) return cloneUnknown(target);
|
|
5600
|
+
const patch = {};
|
|
5601
|
+
const keys = new Set([...Object.keys(base), ...Object.keys(target)]);
|
|
5602
|
+
for (const key of keys) {
|
|
5603
|
+
const hasBase = key in base;
|
|
5604
|
+
if (!(key in target)) {
|
|
5605
|
+
patch[key] = null;
|
|
5606
|
+
continue;
|
|
5607
|
+
}
|
|
5608
|
+
const targetValue = target[key];
|
|
5609
|
+
if (!hasBase) {
|
|
5610
|
+
patch[key] = cloneUnknown(targetValue);
|
|
5611
|
+
continue;
|
|
5612
|
+
}
|
|
5613
|
+
const baseValue = base[key];
|
|
5614
|
+
if (isPlainObject(baseValue) && isPlainObject(targetValue)) {
|
|
5615
|
+
const childPatch = createMergePatch(baseValue, targetValue);
|
|
5616
|
+
if (isPlainObject(childPatch) && Object.keys(childPatch).length === 0) continue;
|
|
5617
|
+
patch[key] = childPatch;
|
|
5618
|
+
continue;
|
|
5619
|
+
}
|
|
5620
|
+
if (!isDeepStrictEqual(baseValue, targetValue)) patch[key] = cloneUnknown(targetValue);
|
|
5621
|
+
}
|
|
5622
|
+
return patch;
|
|
5623
|
+
}
|
|
5398
5624
|
async function rotateConfigBackups(configPath, ioFs) {
|
|
5399
5625
|
if (CONFIG_BACKUP_COUNT <= 1) return;
|
|
5400
5626
|
const backupBase = `${configPath}.bak`;
|
|
@@ -5548,6 +5774,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5548
5774
|
exists: false,
|
|
5549
5775
|
raw: null,
|
|
5550
5776
|
parsed: {},
|
|
5777
|
+
resolved: {},
|
|
5551
5778
|
valid: true,
|
|
5552
5779
|
config: applyTalkApiKey(applyModelDefaults(applyCompactionDefaults(applyContextPruningDefaults(applyAgentDefaults(applySessionDefaults(applyMessageDefaults({}))))))),
|
|
5553
5780
|
hash,
|
|
@@ -5565,6 +5792,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5565
5792
|
exists: true,
|
|
5566
5793
|
raw,
|
|
5567
5794
|
parsed: {},
|
|
5795
|
+
resolved: {},
|
|
5568
5796
|
valid: false,
|
|
5569
5797
|
config: {},
|
|
5570
5798
|
hash,
|
|
@@ -5588,6 +5816,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5588
5816
|
exists: true,
|
|
5589
5817
|
raw,
|
|
5590
5818
|
parsed: parsedRes.parsed,
|
|
5819
|
+
resolved: coerceConfig(parsedRes.parsed),
|
|
5591
5820
|
valid: false,
|
|
5592
5821
|
config: coerceConfig(parsedRes.parsed),
|
|
5593
5822
|
hash,
|
|
@@ -5610,6 +5839,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5610
5839
|
exists: true,
|
|
5611
5840
|
raw,
|
|
5612
5841
|
parsed: parsedRes.parsed,
|
|
5842
|
+
resolved: coerceConfig(resolved),
|
|
5613
5843
|
valid: false,
|
|
5614
5844
|
config: coerceConfig(resolved),
|
|
5615
5845
|
hash,
|
|
@@ -5629,6 +5859,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5629
5859
|
exists: true,
|
|
5630
5860
|
raw,
|
|
5631
5861
|
parsed: parsedRes.parsed,
|
|
5862
|
+
resolved: coerceConfig(resolvedConfigRaw),
|
|
5632
5863
|
valid: false,
|
|
5633
5864
|
config: coerceConfig(resolvedConfigRaw),
|
|
5634
5865
|
hash,
|
|
@@ -5642,6 +5873,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5642
5873
|
exists: true,
|
|
5643
5874
|
raw,
|
|
5644
5875
|
parsed: parsedRes.parsed,
|
|
5876
|
+
resolved: coerceConfig(resolvedConfigRaw),
|
|
5645
5877
|
valid: true,
|
|
5646
5878
|
config: normalizeConfigPaths(applyTalkApiKey(applyModelDefaults(applyAgentDefaults(applySessionDefaults(applyLoggingDefaults(applyMessageDefaults(validated.config))))))),
|
|
5647
5879
|
hash,
|
|
@@ -5655,6 +5887,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5655
5887
|
exists: true,
|
|
5656
5888
|
raw: null,
|
|
5657
5889
|
parsed: {},
|
|
5890
|
+
resolved: {},
|
|
5658
5891
|
valid: false,
|
|
5659
5892
|
config: {},
|
|
5660
5893
|
hash: hashConfigRaw(null),
|
|
@@ -5669,7 +5902,13 @@ function createConfigIO(overrides = {}) {
|
|
|
5669
5902
|
}
|
|
5670
5903
|
async function writeConfigFile(cfg) {
|
|
5671
5904
|
clearConfigCache();
|
|
5672
|
-
|
|
5905
|
+
let persistCandidate = cfg;
|
|
5906
|
+
const snapshot = await readConfigFileSnapshot();
|
|
5907
|
+
if (snapshot.valid && snapshot.exists) {
|
|
5908
|
+
const patch = createMergePatch(snapshot.config, cfg);
|
|
5909
|
+
persistCandidate = applyMergePatch(snapshot.resolved, patch);
|
|
5910
|
+
}
|
|
5911
|
+
const validated = validateConfigObjectRawWithPlugins(persistCandidate);
|
|
5673
5912
|
if (!validated.ok) {
|
|
5674
5913
|
const issue = validated.issues[0];
|
|
5675
5914
|
const pathLabel = issue?.path ? issue.path : "<root>";
|
|
@@ -5684,7 +5923,7 @@ function createConfigIO(overrides = {}) {
|
|
|
5684
5923
|
recursive: true,
|
|
5685
5924
|
mode: 448
|
|
5686
5925
|
});
|
|
5687
|
-
const json = JSON.stringify(
|
|
5926
|
+
const json = JSON.stringify(stampConfigVersion(validated.config), null, 2).trimEnd().concat("\n");
|
|
5688
5927
|
const tmp = path.join(dir, `${path.basename(configPath)}.${process.pid}.${crypto.randomUUID()}.tmp`);
|
|
5689
5928
|
await deps.fs.promises.writeFile(tmp, json, {
|
|
5690
5929
|
encoding: "utf-8",
|
|
@@ -5760,4 +5999,4 @@ async function writeConfigFile(cfg) {
|
|
|
5760
5999
|
}
|
|
5761
6000
|
|
|
5762
6001
|
//#endregion
|
|
5763
|
-
export {
|
|
6002
|
+
export { VERSION as A, webAuthExists as B, unsetConfigOverride as C, unsetConfigValueAtPath as D, setConfigValueAtPath as E, maybeRestoreCredsFromBackup as F, readWebSelfId as I, resolveDefaultWebAuthDir as L, getWebAuthAgeMs as M, logWebSelfId as N, isSafeExecutableValue as O, logoutWeb as P, resolveWebCredsBackupPath as R, setConfigOverride as S, parseConfigPath as T, normalizePluginsConfig as _, validateConfigObjectWithPlugins as a, getConfigOverrides as b, normalizeTelegramCommandName as c, validateJsonSchemaValue as d, loadPluginManifestRegistry as f, applyTestPluginDefaults as g, MANIFEST_KEY as h, writeConfigFile as i, resolveWhatsAppAccount as j, resolveAgentMaxConcurrent as k, resolveTelegramCustomCommands as l, LEGACY_MANIFEST_KEYS as m, readConfigFileSnapshot as n, parseByteSize as o, discoverOpenClawPlugins as p, resolveConfigSnapshotHash as r, TELEGRAM_COMMAND_NAME_PATTERN as s, loadConfig as t, parseDurationMs as u, resolveEnableState as v, getConfigValueAtPath as w, resetConfigOverrides as x, resolveMemorySlotDecision as y, resolveWebCredsPath as z };
|