@gguf/claw 2026.2.4 → 2026.2.5
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 +50 -1
- package/LICENSE +1 -1
- package/README.md +50 -43
- package/dist/{accounts-BlHoTziG.js → accounts-BgZmhIm6.js} +4 -4
- package/dist/{accounts-B5QZU96b.js → accounts-Dto4p9zB.js} +2 -2
- package/dist/{acp-cli-DU_cVWbN.js → acp-cli-BOKabdeW.js} +15 -15
- package/dist/{acp-cli-O8LcQigE.js → acp-cli-BwcHtBDk.js} +19 -19
- package/dist/{agent-BBI-UGkN.js → agent-DztWhVCH.js} +20 -13
- package/dist/{agent-DuQt3QDO.js → agent-_H-0rbHV.js} +21 -14
- package/dist/{agent-scope-jm0ZdXwM.js → agent-scope-C9VjJXEK.js} +5 -180
- package/dist/{agent-scope-CrgUOY3f.js → agent-scope-CMs5Y7l-.js} +6 -181
- package/dist/{agent-scope-COnICB_7.js → agent-scope-Csu2B6AM.js} +2 -2
- package/dist/{audit-D-OqdjQu.js → audit-BWbjQmyv.js} +182 -15
- package/dist/{audit-CWGOX7Eh.js → audit-ZY6Dk5Ec.js} +183 -16
- package/dist/{auth-viF_w60n.js → auth-CbhB03Rz.js} +2 -2
- package/dist/{auth-DK3l201_.js → auth-DksjO6WG.js} +2 -2
- package/dist/{auth-health-DcKoxhDo.js → auth-health-C4bElkgf.js} +1 -1
- package/dist/{auth-health-Ba9GTScq.js → auth-health-Ctf-_JFE.js} +1 -1
- package/dist/{auth-profiles-CfFGCDJa.js → auth-profiles-CYBuGiBb.js} +38 -13
- package/dist/build-info.json +2 -2
- package/dist/{call-CfqL-4Nc.js → call-90HgQQ8o.js} +34 -8
- package/dist/{call-CPBhMXxo.js → call-BTbA5OB4.js} +35 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +29 -44
- package/dist/{channel-options-eRR8_a8h.js → channel-options-DrUmtdd9.js} +3 -3
- package/dist/{channel-options-BCSvD6JM.js → channel-options-uftAnT5P.js} +7 -7
- package/dist/{channel-selection-BAwiO0li.js → channel-selection-CJWYmCLf.js} +2 -2
- package/dist/{channel-selection-BCn8_qun.js → channel-selection-PZuuCvrp.js} +2 -2
- package/dist/{channel-summary-BkqO8zZ9.js → channel-summary-D9nzC5WB.js} +8 -42
- package/dist/{channel-summary-C8GoEKgH.js → channel-summary-DUiKDBLv.js} +9 -43
- package/dist/{channels-cli-CBGINubh.js → channels-cli-PAlqhOZ7.js} +56 -54
- package/dist/{channels-cli-yQo-Rzw6.js → channels-cli-PPk5wwuy.js} +59 -57
- package/dist/{channels-status-issues-C9vMMPG0.js → channels-status-issues-CJ8PJgDc.js} +1 -1
- package/dist/{channels-status-issues-DRXQXvhY.js → channels-status-issues-CrS1r5sr.js} +1 -1
- package/dist/{chrome-DlqPCh1y.js → chrome-B3IuUad-.js} +2 -2
- package/dist/{chrome-D2LUApAY.js → chrome-BNSd7Bie.js} +5 -5
- package/dist/{clack-prompter-OmDa1Hm1.js → clack-prompter-CEKDd_Vg.js} +5 -5
- package/dist/{clack-prompter-BJuVh97L.js → clack-prompter-DuBVnTKy.js} +4 -4
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-DBAccB3n.js +86 -0
- package/dist/cli-DD5dW58-.js +89 -0
- package/dist/{client-zqMhLTAX.js → client-BYVbRnuQ.js} +13 -5
- package/dist/{client-cU7Xg1MO.js → client-CxbkcEZ7.js} +12 -4
- package/dist/{command-options-51bBgSJL.js → command-options-DUUINcz0.js} +3 -3
- package/dist/{commands-DMKDOFmC.js → commands-DAC7XMAT.js} +5 -4
- package/dist/completion-cli-BPIeQDFy.js +773 -0
- package/dist/{completion-cli-BoF86Oeq.js → completion-cli-BbhA_JbG.js} +62 -15
- package/dist/{config-qgIz1lbh.js → config-CAuZ-EkU.js} +93 -31
- package/dist/{config-CGsoho7J.js → config-CG73z4h6.js} +61 -28
- package/dist/{config-DCT1RAo6.js → config-CKLedg5Y.js} +92 -30
- package/dist/{config-guard-CJuPkD5Y.js → config-guard-a5ynrKd-.js} +181 -57
- package/dist/{configure-C1_0rFdQ.js → configure-B47GYdlB.js} +33 -23
- package/dist/{configure-D0OAmW2s.js → configure-ChnTy7Jz.js} +31 -21
- package/dist/{control-service-BW5sW2U1.js → control-service-CS61Road.js} +13 -6
- package/dist/{control-service-Ds9ompnU.js → control-service-D2E9NKqQ.js} +12 -5
- package/dist/control-ui/assets/{index-RwcW4Xl0.css → index-BoXosYY6.css} +1 -1
- package/dist/control-ui/assets/index-Dm6g1E26.js +7553 -0
- package/dist/control-ui/assets/index-Dm6g1E26.js.map +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/{cron-cli-Bn_e3WGb.js → cron-cli-CssI71-c.js} +20 -19
- package/dist/{cron-cli-BVARiNrv.js → cron-cli-Ys53MyTg.js} +24 -23
- package/dist/{daemon-cli-fHXAapHL.js → daemon-cli-B6aLZ8OE.js} +28 -23
- package/dist/{daemon-cli-yy_MAYxv.js → daemon-cli-CMKd_D6h.js} +26 -21
- package/dist/{daemon-runtime-vNkYv9tq.js → daemon-runtime-BCn_QIHK.js} +64 -7
- package/dist/{daemon-runtime-ELWW7q0C.js → daemon-runtime-DMd0mgTK.js} +64 -7
- package/dist/{deliver-Bsvrattg.js → deliver-C3bnXkg5.js} +12 -10
- package/dist/{deliver-Dl8TEyHM.js → deliver-CZPhTA7x.js} +7 -5
- package/dist/{deliver-eE21zdeQ.js → deliver-Cau4HL7W.js} +11 -9
- package/dist/{deps-BrcOX0ht.js → deps-BG1LonF6.js} +2 -2
- package/dist/{deps-wXkiMwLZ.js → deps-ytXmI88x.js} +2 -2
- package/dist/{devices-cli-BjlwgE6B.js → devices-cli-Cm0ENrXH.js} +16 -16
- package/dist/{devices-cli-BVc_Ic5O.js → devices-cli-D_rnGkqO.js} +12 -12
- package/dist/{directory-cli-cc9ivzEM.js → directory-cli-CGLolzJC.js} +15 -15
- package/dist/{directory-cli-CULRQACb.js → directory-cli-CTtv_AB7.js} +19 -19
- package/dist/{dispatcher-BNB5aCZ6.js → dispatcher-6oI-H42S.js} +1 -1
- package/dist/{dns-cli-BwDdBlsK.js → dns-cli-BRkJGLqK.js} +15 -15
- package/dist/{dns-cli-B79COhmu.js → dns-cli-CoeI4817.js} +11 -11
- package/dist/{docs-cli-BM55jf4Y.js → docs-cli-BH9bMx3a.js} +7 -7
- package/dist/{docs-cli-t7IEzxr8.js → docs-cli-Bh1Coji2.js} +10 -10
- package/dist/{doctor-CT9JPoCt.js → doctor-CwSrWRCp.js} +43 -38
- package/dist/{doctor-OmfNRlMS.js → doctor-JnMryC_M.js} +40 -35
- package/dist/entry.js +12 -8
- package/dist/{env-DOcCob95.js → env-0_mKbEWW.js} +2 -2
- package/dist/{errors-DdT2Dtkb.js → errors-CZ9opC6L.js} +4 -4
- package/dist/{exec-B7WKla_0.js → exec-BMnoMcZW.js} +1 -1
- package/dist/{exec-CTo4hK94.js → exec-HEWTMJ7j.js} +1 -1
- package/dist/{exec-approvals-WdYFyy5N.js → exec-approvals-BCEFzcbC.js} +19 -2
- package/dist/{exec-approvals-CK-Umdr3.js → exec-approvals-DZixgolZ.js} +19 -2
- package/dist/{exec-approvals-cli-DD_z4fL9.js → exec-approvals-cli-D7aVv5hN.js} +19 -19
- package/dist/{exec-approvals-cli-BK2toX2b.js → exec-approvals-cli-DzLp5G7t.js} +23 -23
- package/dist/extensionAPI.js +1186 -267
- package/dist/{gateway-cli-BCC0T5iY.js → gateway-cli-DHP5DRUH.js} +910 -199
- package/dist/{gateway-cli-BTlr6Uwl.js → gateway-cli-ape0pnBU.js} +912 -202
- package/dist/{gateway-rpc-CMAcradB.js → gateway-rpc-C8rNIC0P.js} +3 -3
- package/dist/{gateway-rpc-SvVB4Fmv.js → gateway-rpc-CWnTaSEY.js} +3 -3
- package/dist/{github-copilot-auth-BHLcQ1sN.js → github-copilot-auth-B_lK1g__.js} +173 -87
- package/dist/{github-copilot-auth-BoRchp_Q.js → github-copilot-auth-C8Uf0Q03.js} +174 -88
- package/dist/{github-copilot-token-BEtihsn6.js → github-copilot-token-B3SA95yo.js} +8 -2
- package/dist/{github-copilot-token-rP-6QdKv.js → github-copilot-token-SLWintYd.js} +7 -1
- package/dist/{github-copilot-token-VZsS4013.js → github-copilot-token-pGSmVaW-.js} +8 -2
- package/dist/{gmail-setup-utils-4czdWNCN.js → gmail-setup-utils-Bi6W14MK.js} +3 -3
- package/dist/{gmail-setup-utils-B1CTmT2V.js → gmail-setup-utils-QpN7TEXS.js} +4 -4
- package/dist/{health-format-B4_A88V3.js → health-format-B3eStY5r.js} +215 -21
- package/dist/{health-format-Ct8J0fwc.js → health-format-ND2rUbQO.js} +213 -19
- package/dist/{help-format-CGcnDM3D.js → help-format-Bozi4K9H.js} +1 -1
- package/dist/{helpers-DfgBr1D5.js → helpers-BIc7L8EF.js} +1 -1
- package/dist/{helpers-Cw9kFCkw.js → helpers-D66_XoIz.js} +1 -1
- package/dist/{hooks-cli-NmkXLKmj.js → hooks-cli-BMu_-4Ru.js} +49 -49
- package/dist/{hooks-cli-B-28F__A.js → hooks-cli-CmeQxEOM.js} +45 -45
- package/dist/{hooks-status-I3Y60zVN.js → hooks-status-CKmUPU-M.js} +3 -3
- package/dist/{hooks-status-XV9oQICf.js → hooks-status-DepPyfBb.js} +4 -4
- package/dist/{image-ClOB6QDJ.js → image-Ca_PtqY7.js} +8 -6
- package/dist/{image-BYmtfVH8.js → image-CgBndiQy.js} +9 -7
- package/dist/{image-CXg7Z0WD.js → image-nRwqkmtf.js} +8 -6
- package/dist/index.js +231 -105
- package/dist/{installs-C5cjVarj.js → installs-BhEjOqPy.js} +43 -6
- package/dist/{installs-W4Pc1LJz.js → installs-DsJkyWfL.js} +43 -6
- package/dist/{links-C9fyAH-V.js → links-B5pRdmo1.js} +1 -1
- package/dist/{links-jGisPfXW.js → links-D0uzJbi6.js} +1 -1
- package/dist/{loader-BYWxo-_j.js → loader-_Pj-TZS2.js} +920 -491
- package/dist/{logging-BnUUuH3y.js → logging-Cc7m6PTv.js} +1 -1
- package/dist/{logging-CLCWl7Iu.js → logging-TXWhN8jG.js} +2 -2
- package/dist/{login-qr-C2H_iQJU.js → login-qr-BIlr0vwe.js} +12 -7
- package/dist/{login-qr-7WOtj6zE.js → login-qr-CcOWO_dR.js} +9 -4
- package/dist/{login-qr-sEcxw1_U.js → login-qr-Cmsf7BGt.js} +11 -6
- package/dist/{logs-cli-C5v4fEDj.js → logs-cli-5L3NxTsc.js} +19 -19
- package/dist/{logs-cli-nVwK5g60.js → logs-cli-DtiFFkZL.js} +15 -15
- package/dist/{manager-rDmdE7O9.js → manager-BXiIQku7.js} +9 -7
- package/dist/{manager-JSP5pLyv.js → manager-C4ILl-d3.js} +10 -8
- package/dist/{manager-BArueSTR.js → manager-LpytrxUw.js} +12 -10
- package/dist/{manifest-registry-tuAcHxrV.js → manifest-registry-C69Z-I4v.js} +1 -1
- package/dist/{manifest-registry-BFpLJJDB.js → manifest-registry-DHaa1SJb.js} +1 -1
- package/dist/{message-channel-CAFcg7mw.js → message-channel-BlgPSDAh.js} +6 -1
- package/dist/{message-channel-CQGWXVL4.js → message-channel-Bpfe5l5f.js} +7 -2
- package/dist/{model-selection-Cp1maz7B.js → model-selection-DMUrNhQP.js} +41 -16
- package/dist/{model-selection-Cs1y6OBv.js → model-selection-mzTqrNoj.js} +38 -14
- package/dist/{models-cli-n9a8pESx.js → models-cli-DHzyyLvp.js} +49 -49
- package/dist/{models-cli-DGnLcr4X.js → models-cli-EhrWjNLH.js} +53 -53
- package/dist/{net-DaJz_a4n.js → net-C8YRVt16.js} +1 -1
- package/dist/{net-DeiCIMU6.js → net-CWMMy37F.js} +1 -1
- package/dist/{node-cli-rtEq-YyU.js → node-cli-2oYmIWJt.js} +30 -30
- package/dist/{node-cli-AOO0HsM1.js → node-cli-DH7Ykym5.js} +26 -26
- package/dist/{node-service-CjtBRyjp.js → node-service-BAYHx0E7.js} +2 -2
- package/dist/{node-service-BW_LhY5w.js → node-service-Lc1LlnFH.js} +2 -2
- package/dist/{nodes-cli-Coxj5hDA.js → nodes-cli-Bc5K-0Lt.js} +22 -22
- package/dist/{nodes-cli-ChBsNXzz.js → nodes-cli-hT8yYD7S.js} +18 -18
- package/dist/{nodes-screen-Ln98EX_f.js → nodes-screen-DGlNPbk4.js} +2 -2
- package/dist/{nodes-screen-DOhGEibx.js → nodes-screen-DT5HvhJV.js} +2 -2
- package/dist/{note-BFpD-42H.js → note-B5HnoeZX.js} +2 -2
- package/dist/{note-CBiVaqG7.js → note-Ci08TSbV.js} +1 -1
- package/dist/{onboard-channels-CF7lTDNu.js → onboard-channels-D-ZQTy5V.js} +9 -8
- package/dist/{onboard-channels-CJCy7TTQ.js → onboard-channels-DKT27PdN.js} +10 -9
- package/dist/{onboard-skills-DdFGj9pt.js → onboard-skills-YobctE-R.js} +259 -194
- package/dist/{onboard-skills-fL84FI8F.js → onboard-skills-s8J5xbUr.js} +259 -194
- package/dist/{onboarding-DcN1avQK.js → onboarding-BP4-5uzE.js} +96 -60
- package/dist/{pairing-cli-DbP9KqPL.js → pairing-cli-C8KHRjaU.js} +15 -15
- package/dist/{pairing-cli-B7RQFp4r.js → pairing-cli-i7wiTmYC.js} +19 -19
- package/dist/{pairing-labels-DK2aLSd2.js → pairing-labels-BbydDT7w.js} +1 -1
- package/dist/{pairing-labels-C6I3dD-m.js → pairing-labels-CtqLxbG6.js} +1 -1
- package/dist/{pairing-store-BnMngoWQ.js → pairing-store-DFq7WtOv.js} +2 -2
- package/dist/{pairing-store-DMex6WWe.js → pairing-store-DTfv_FGA.js} +1 -1
- package/dist/{path-env-CuGC6r1F.js → path-env-DP3DsVge.js} +2 -2
- package/dist/{path-env-CUhrC5DA.js → path-env-h3xp5PqO.js} +1 -1
- package/dist/{paths-xPuk88Yf.js → paths-B4kigINg.js} +2 -2
- package/dist/{paths-50eo6DV6.js → paths-Bb0nwPeu.js} +2 -2
- package/dist/{paths-RvF0P6tQ.js → paths-CTg8F3AE.js} +1 -1
- package/dist/{pi-embedded-helpers-DJgCXZEz.js → pi-embedded-helpers-BB4uACeq.js} +175 -170
- package/dist/{pi-embedded-helpers-DiK8Qn1l.js → pi-embedded-helpers-BxqZh6U7.js} +43 -19
- package/dist/{pi-embedded-helpers-CC00lEFI.js → pi-embedded-helpers-DF8SAHU-.js} +175 -170
- package/dist/{pi-model-discovery-DjGamP_B.js → pi-model-discovery-CV2V1HHz.js} +8 -1
- package/dist/{pi-model-discovery-CnK2Dol8.js → pi-model-discovery-DzEIEgHL.js} +8 -1
- package/dist/{pi-model-discovery-CsRo-xMp.js → pi-model-discovery-EhM2JAQo.js} +8 -1
- package/dist/{pi-tools.policy-DleRi9eC.js → pi-tools.policy-BQ8N5y8a.js} +5 -4
- package/dist/{plugin-auto-enable-JQ63k0Ce.js → plugin-auto-enable-Ci7TBlH2.js} +5 -5
- package/dist/{plugin-auto-enable-CIVp3SAp.js → plugin-auto-enable-DyW8lHTT.js} +4 -4
- package/dist/plugin-sdk/index.d.ts +228 -283
- package/dist/plugin-sdk/index.js +22528 -69091
- package/dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js +37 -0
- package/dist/{plugins-TrKFfrLt.js → plugins-BUPpq5aS.js} +3 -2
- package/dist/{plugins-D1CxUobm.js → plugins-BYIWo0Cp.js} +5 -4
- package/dist/{plugins-cli-17wYux52.js → plugins-cli-CGfxctIx.js} +50 -49
- package/dist/{plugins-cli-VyQWn_LW.js → plugins-cli-Dr_R2-FY.js} +46 -45
- package/dist/{ports-B27T1uRn.js → ports-0V-Mu4ch.js} +2 -2
- package/dist/{program-BA9_uWfO.js → program-oR55MCAT.js} +84 -81
- package/dist/{progress-uNDQDtGB.js → progress-xpLtQsNY.js} +1 -1
- package/dist/{prompt-style-gfROyHgB.js → prompt-style-vzh0MGHs.js} +1 -1
- package/dist/{pw-ai-BC4dLE7k.js → pw-ai-B7Fvw8DW.js} +4 -4
- package/dist/{pw-ai-DlTBXZjY.js → pw-ai-DYpQO6HI.js} +6 -6
- package/dist/{pw-ai-BEqPnalN.js → pw-ai-tNPuRNn3.js} +4 -4
- package/dist/{qmd-manager-8xWxIGbO.js → qmd-manager-BKkFEEN_.js} +9 -8
- package/dist/{plugin-sdk/qmd-manager-DvkA01DP.js → qmd-manager-CF52nuBg.js} +6 -6
- package/dist/{qmd-manager-BSCOmXYZ.js → qmd-manager-Dub8jfbo.js} +7 -6
- package/dist/{register.subclis-CWWz9WdX.js → register.subclis-BpIR6Iqi.js} +36 -30
- package/dist/{reply-CoztdrN_.js → reply-B8pOiUNN.js} +935 -506
- package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
- package/dist/{routes-yI5QIzeL.js → routes-BSfXf8a5.js} +5 -5
- package/dist/{routes-Ds-tIZFJ.js → routes-DchZU3EK.js} +6 -6
- package/dist/{rpc-HF82_iLh.js → rpc-DqI3QH59.js} +3 -3
- package/dist/{rpc-HdKLb6jx.js → rpc-Vo2ACfn-.js} +3 -3
- package/dist/{run-main-B3krVvc1.js → run-main-DrVUUPHV.js} +84 -84
- package/dist/{sandbox-BXUfp_qv.js → sandbox-CV8VwPij.js} +36 -16
- package/dist/{sandbox-Cnq9TXEn.js → sandbox-DuqLKN5J.js} +34 -14
- package/dist/{sandbox-cli-C7j1V6tb.js → sandbox-cli-C0_Hrk7i.js} +25 -24
- package/dist/{sandbox-cli-CnS9JJlO.js → sandbox-cli-Ces6i3n2.js} +21 -20
- package/dist/{security-cli-Clg7RQT3.js → security-cli-CybLT9XS.js} +32 -30
- package/dist/{security-cli-BGd4NO4l.js → security-cli-T7yrd3lb.js} +28 -26
- package/dist/{server-context-D2cv-pIA.js → server-context-vChIAqjH.js} +6 -6
- package/dist/{server-context-CM_E6wD5.js → server-context-yKyxyxOJ.js} +5 -5
- package/dist/{server-node-events-IMwI538C.js → server-node-events-BR2vHqf6.js} +44 -43
- package/dist/{server-node-events-C5EqDe_U.js → server-node-events-D39FA0NG.js} +48 -47
- package/dist/{service-CAxAjHNB.js → service-BZesBIaG.js} +3 -3
- package/dist/{service-BoDHq_LN.js → service-_JwSmGSn.js} +2 -2
- package/dist/{service-audit-Bf33pqEM.js → service-audit-C-IA4omi.js} +6 -6
- package/dist/{service-audit-DBSAGhm8.js → service-audit-DDX1kO3k.js} +6 -6
- package/dist/session-cost-usage-BTXosU1k.js +692 -0
- package/dist/session-cost-usage-CBP4Hv9D.js +692 -0
- package/dist/session-key-CZkcvAtx.js +177 -0
- package/dist/session-key-Dm2EOhrH.js +177 -0
- package/dist/{shared-ChNOqAzp.js → shared-BmtNKsPq.js} +4 -4
- package/dist/{shared-D42-KbPa.js → shared-C1XLEyB0.js} +3 -3
- package/dist/{shared-xZjRQa6y.js → shared-C8_5pNbb.js} +4 -4
- package/dist/{shared-DBGw227P.js → shared-fnGLWyZ6.js} +3 -3
- package/dist/skill-scanner-BoGjHXUZ.js +255 -0
- package/dist/skill-scanner-Bp1D9gra.js +255 -0
- package/dist/{skills-DtwGIkTI.js → skills-CmU0Q92f.js} +3 -3
- package/dist/{skills-C4b1FA1e.js → skills-D5JDj3TR.js} +5 -5
- package/dist/{skills-cli-BPkuJAz9.js → skills-cli-C1yJvIkL.js} +16 -16
- package/dist/{skills-cli-b0ZmGlmh.js → skills-cli-DBC5zFat.js} +12 -12
- package/dist/{skills-status-CSCMqNZP.js → skills-status-CEvVUD3U.js} +3 -3
- package/dist/{skills-status-CWkBweWW.js → skills-status-DtXrj3fy.js} +2 -2
- package/dist/{status-BIWeu5mN.js → status-BRXuHUsK.js} +94 -58
- package/dist/{status-CcM6W8r4.js → status-BTGXSvZ1.js} +3 -3
- package/dist/{status-PjegR5Cv.js → status-DBZ5Z7ng.js} +4 -4
- package/dist/{subsystem-46MXi6Ip.js → subsystem-CAq3uyo7.js} +1 -1
- package/dist/{system-cli-B4FEIE5d.js → system-cli-Dqnt-b0D.js} +13 -13
- package/dist/{system-cli-BL_QZ1VP.js → system-cli-SJLtqI47.js} +17 -17
- package/dist/{systemd-DAgZTW06.js → systemd-8sIc6isV.js} +2 -2
- package/dist/{systemd-CNYEkRek.js → systemd-B-3NdMmA.js} +3 -3
- package/dist/{systemd-hints-CcgK8AJE.js → systemd-hints-DO88c_nD.js} +1 -1
- package/dist/{systemd-hints-okqOoOug.js → systemd-hints-Wim4Bq6j.js} +1 -1
- package/dist/{systemd-linger-CTe0ZDxD.js → systemd-linger-N-cIaegf.js} +8 -3
- package/dist/{systemd-linger-Cbkoh9qw.js → systemd-linger-SsSOsJST.js} +8 -3
- package/dist/{table-f0EgX-YI.js → table-CJSx0YID.js} +1 -1
- package/dist/{table-DuNe7Qes.js → table-CLtGjVsx.js} +2 -2
- package/dist/{tailscale-BUcKO8Rr.js → tailscale-9MusRvOi.js} +1 -1
- package/dist/{tailscale-Cvk3mQDZ.js → tailscale-BVGD9gSD.js} +2 -2
- package/dist/{tool-display-rIUh61kT.js → tool-display-BxZG0o1b.js} +2 -2
- package/dist/{tool-display-BMYWrp0L.js → tool-display-DmgKs6-V.js} +2 -2
- package/dist/{tui-cV-R-JXi.js → tui-DPorsF4z.js} +203 -75
- package/dist/{tui-DBmFYQTk.js → tui-XH6_v0qC.js} +204 -74
- package/dist/{tui-cli-B_CKOjZ1.js → tui-cli-DRSIBDgZ.js} +30 -29
- package/dist/{tui-cli-CVdJ28TX.js → tui-cli-DV_JAtnq.js} +26 -25
- package/dist/{update-BDyA5Iqy.js → update-DNAVcIQ7.js} +3 -3
- package/dist/{update-BIB5jGcv.js → update-DzMcwy1G.js} +3 -3
- package/dist/{update-cli-p49uMWby.js → update-cli-OAcZiYuA.js} +112 -27
- package/dist/{update-cli-C5vwquH_.js → update-cli-tQcy8mkI.js} +109 -23
- package/dist/{update-runner-8XFxQglY.js → update-runner-2i8_mIG5.js} +254 -17
- package/dist/{update-runner-s8Rs8ex3.js → update-runner-BDdk_K2S.js} +254 -17
- package/dist/usage-format-DvowRSs-.js +36 -0
- package/dist/usage-format-E3bMcUMV.js +36 -0
- package/dist/{utils-Dg0Xbl6w.js → utils-CKSrBNwq.js} +2 -2
- package/dist/{webhooks-cli-DkQGQ2ae.js → webhooks-cli-BztQHEco.js} +11 -11
- package/dist/{webhooks-cli-kRN8qR7B.js → webhooks-cli-ZAn97osC.js} +15 -15
- package/dist/{widearea-dns-BIhjVRG1.js → widearea-dns-CsSylzXH.js} +2 -2
- package/dist/{widearea-dns-D4yoSNNw.js → widearea-dns-D9Al4QRv.js} +2 -2
- package/dist/{ws-log-DQ6nkLys.js → ws-log-B7UNLFLC.js} +3 -3
- package/dist/{ws-log-C4IerKk4.js → ws-log-DJIXahf0.js} +2 -2
- package/dist/{wsl-DASmek7h.js → wsl-ATjkMwMA.js} +1 -1
- package/docs/.i18n/glossary.zh-CN.json +20 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/bedrock.md +3 -3
- package/docs/channels/discord.md +2 -1
- package/docs/channels/feishu.md +72 -2
- package/docs/channels/telegram.md +19 -0
- package/docs/cli/devices.md +3 -0
- package/docs/cli/gateway.md +3 -0
- package/docs/cli/index.md +2 -0
- package/docs/cli/onboard.md +16 -2
- package/docs/concepts/features.md +53 -0
- package/docs/concepts/memory.md +1 -1
- package/docs/concepts/messages.md +1 -1
- package/docs/concepts/model-providers.md +11 -11
- package/docs/concepts/models.md +1 -1
- package/docs/concepts/multi-agent.md +2 -2
- package/docs/concepts/session.md +19 -3
- package/docs/docs.json +331 -182
- package/docs/gateway/cli-backends.md +7 -5
- package/docs/gateway/configuration-examples.md +4 -4
- package/docs/gateway/configuration.md +34 -16
- package/docs/gateway/heartbeat.md +61 -1
- package/docs/gateway/local-models.md +3 -3
- package/docs/gateway/network-model.md +17 -0
- package/docs/gateway/remote.md +3 -1
- package/docs/gateway/security/index.md +1 -1
- package/docs/help/faq.md +25 -26
- package/docs/help/submitting-a-pr.md +214 -0
- package/docs/help/submitting-an-issue.md +165 -0
- package/docs/index.md +127 -193
- package/docs/install/docker.md +2 -2
- package/docs/{platforms → install}/exe-dev.md +4 -3
- package/docs/{platforms → install}/fly.md +1 -1
- package/docs/install/index.md +4 -2
- package/docs/nodes/media-understanding.md +2 -2
- package/docs/platforms/digitalocean.md +2 -2
- package/docs/platforms/index.md +4 -4
- package/docs/platforms/linux.md +1 -1
- package/docs/platforms/mac/release.md +7 -7
- package/docs/platforms/oracle.md +1 -1
- package/docs/platforms/raspberry-pi.md +1 -1
- package/docs/providers/anthropic.md +3 -3
- package/docs/providers/index.md +1 -1
- package/docs/providers/minimax.md +3 -3
- package/docs/providers/models.md +1 -1
- package/docs/providers/ollama.md +60 -6
- package/docs/providers/openai.md +2 -2
- package/docs/providers/opencode.md +1 -1
- package/docs/providers/vercel-ai-gateway.md +1 -1
- package/docs/reference/credits.md +27 -0
- package/docs/reference/wizard.md +268 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +64 -0
- package/docs/start/getting-started.md +109 -197
- package/docs/start/hubs.md +12 -0
- package/docs/start/onboarding.md +51 -81
- package/docs/start/openclaw.md +3 -20
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +14 -1
- package/docs/start/wizard-cli-automation.md +141 -0
- package/docs/start/wizard-cli-reference.md +244 -0
- package/docs/start/wizard.md +48 -289
- package/docs/style.css +3 -0
- package/docs/testing.md +9 -9
- package/docs/token-use.md +2 -2
- package/docs/tools/index.md +3 -0
- package/docs/tools/llm-task.md +1 -1
- package/docs/tools/thinking.md +1 -0
- package/docs/tui.md +3 -0
- package/docs/vps.md +6 -6
- package/docs/web/control-ui.md +2 -0
- package/docs/web/dashboard.md +7 -7
- package/docs/zh-CN/channels/feishu.md +119 -3
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/remote.md +1 -1
- package/docs/zh-CN/help/faq.md +5 -5
- package/docs/zh-CN/index.md +124 -202
- package/docs/zh-CN/install/docker.md +1 -1
- package/docs/zh-CN/platforms/digitalocean.md +2 -2
- package/docs/zh-CN/platforms/index.md +4 -4
- package/docs/zh-CN/platforms/linux.md +1 -1
- package/docs/zh-CN/platforms/oracle.md +1 -1
- package/docs/zh-CN/platforms/raspberry-pi.md +1 -1
- package/docs/zh-CN/providers/ollama.md +1 -1
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +1 -1
- package/docs/zh-CN/start/hubs.md +39 -30
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/vps.md +4 -4
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/monitor.ts +9 -0
- package/extensions/copilot-proxy/index.ts +1 -0
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/index.ts +49 -1
- package/extensions/feishu/openclaw.plugin.json +1 -0
- package/extensions/feishu/package.json +9 -5
- package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
- package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
- package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
- package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
- package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
- package/extensions/feishu/src/accounts.ts +144 -0
- package/extensions/feishu/src/bitable.ts +459 -0
- package/extensions/feishu/src/bot.ts +871 -0
- package/extensions/feishu/src/channel.ts +267 -202
- package/extensions/feishu/src/client.ts +118 -0
- package/extensions/feishu/src/config-schema.ts +152 -26
- package/extensions/feishu/src/directory.ts +177 -0
- package/extensions/feishu/src/doc-schema.ts +47 -0
- package/extensions/feishu/src/docx.ts +521 -0
- package/extensions/feishu/src/drive-schema.ts +46 -0
- package/extensions/feishu/src/drive.ts +227 -0
- package/extensions/feishu/src/media.ts +527 -0
- package/extensions/feishu/src/mention.ts +126 -0
- package/extensions/feishu/src/monitor.ts +190 -0
- package/extensions/feishu/src/onboarding.ts +278 -200
- package/extensions/feishu/src/outbound.ts +40 -0
- package/extensions/feishu/src/perm-schema.ts +52 -0
- package/extensions/feishu/src/perm.ts +173 -0
- package/extensions/feishu/src/policy.ts +104 -0
- package/extensions/feishu/src/probe.ts +44 -0
- package/extensions/feishu/src/reactions.ts +160 -0
- package/extensions/feishu/src/reply-dispatcher.ts +184 -0
- package/extensions/feishu/src/runtime.ts +14 -0
- package/extensions/feishu/src/send.ts +358 -0
- package/extensions/feishu/src/targets.ts +78 -0
- package/extensions/feishu/src/tools-config.ts +21 -0
- package/extensions/feishu/src/types.ts +75 -0
- package/extensions/feishu/src/typing.ts +80 -0
- package/extensions/feishu/src/wiki-schema.ts +55 -0
- package/extensions/feishu/src/wiki.ts +232 -0
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/monitor.ts +12 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +6 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/matrix/src/config-schema.ts +1 -0
- package/extensions/matrix/src/matrix/monitor/handler.ts +9 -5
- package/extensions/matrix/src/types.ts +2 -0
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mattermost/src/channel.test.ts +24 -0
- package/extensions/mattermost/src/config-schema.ts +1 -0
- package/extensions/mattermost/src/mattermost/monitor.ts +9 -5
- package/extensions/mattermost/src/types.ts +2 -0
- package/extensions/memory-core/package.json +1 -1
- 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/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -0
- package/extensions/msteams/src/reply-dispatcher.ts +7 -5
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -0
- package/extensions/nextcloud-talk/src/inbound.ts +10 -0
- package/extensions/nextcloud-talk/src/send.ts +7 -2
- package/extensions/nextcloud-talk/src/types.ts +2 -0
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +1 -1
- 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/tlon/package.json +1 -1
- package/extensions/tlon/src/config-schema.ts +2 -0
- package/extensions/tlon/src/monitor/index.ts +41 -14
- package/extensions/tlon/src/monitor/utils.ts +1 -0
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/config-schema.ts +2 -0
- package/extensions/twitch/src/monitor.ts +11 -0
- package/extensions/twitch/src/types.ts +2 -0
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/manager.test.ts +30 -0
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalo/src/config-schema.ts +1 -0
- package/extensions/zalo/src/monitor.ts +11 -0
- package/extensions/zalo/src/types.ts +2 -0
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/extensions/zalouser/src/config-schema.ts +1 -0
- package/extensions/zalouser/src/monitor.ts +12 -1
- package/extensions/zalouser/src/types.ts +2 -0
- package/package.json +14 -14
- package/dist/auth-profiles-3t9aTwDR.js +0 -11
- package/dist/auth-profiles-BYvLI-zr.js +0 -7
- package/dist/auth-profiles-DswR7tzt.js +0 -7
- package/dist/cli-BxIwNzhi.js +0 -89
- package/dist/cli-wFmvNjpg.js +0 -86
- package/dist/command-format-SkzzRqR1.js +0 -52
- package/dist/completion-cli-vxe-jqwC.js +0 -390
- package/dist/config-BwVg6hhl.js +0 -13
- package/dist/config-jKcyRiMo.js +0 -10
- package/dist/configure-DaecSBSI.js +0 -60
- package/dist/configure-t-7r9i4H.js +0 -64
- package/dist/control-service-Dag9b-dU.js +0 -16
- package/dist/control-service-DsUyuevF.js +0 -12
- package/dist/control-ui/assets/index-ryaCcbyp.js +0 -4584
- package/dist/control-ui/assets/index-ryaCcbyp.js.map +0 -1
- package/dist/daemon-cli-CUkUiGoK.js +0 -53
- package/dist/daemon-cli-D6FF4tmP.js +0 -49
- package/dist/deliver-BGnJ4-vz.js +0 -12
- package/dist/deliver-CXpx7BNb.js +0 -25
- package/dist/deliver-Ds2yqOA3.js +0 -21
- package/dist/doctor-BwqqPqMX.js +0 -58
- package/dist/doctor-DGrfzoKj.js +0 -62
- package/dist/github-copilot-token-B0CUgVkW.js +0 -4
- package/dist/github-copilot-token-B_uWT0Yi.js +0 -4
- package/dist/github-copilot-token-CXUZ9Lrb.js +0 -3
- package/dist/image-CgTMdnmz.js +0 -28
- package/dist/image-D1O-ebQc.js +0 -14
- package/dist/image-njq9Rf6U.js +0 -24
- package/dist/login-qr-BfbIJ1wP.js +0 -12
- package/dist/login-qr-CGWNrSQq.js +0 -9
- package/dist/login-qr-CUV9HZCg.js +0 -16
- package/dist/manager-DKpTd5pc.js +0 -10
- package/dist/manager-Dr_eVHpN.js +0 -10
- package/dist/manager-DtFcs1NT.js +0 -14
- package/dist/pi-model-discovery-BOramrmp.js +0 -3
- package/dist/pi-model-discovery-Bj98Srfa.js +0 -3
- package/dist/pi-model-discovery-DHPwfwKu.js +0 -3
- package/dist/plugin-sdk/agent-scope-qNPdmst1.js +0 -606
- package/dist/plugin-sdk/auth-profiles-D0LhX8iB.js +0 -7
- package/dist/plugin-sdk/chrome-DMuEXuKT.js +0 -1953
- package/dist/plugin-sdk/config-D5CsedNn.js +0 -5623
- package/dist/plugin-sdk/deliver-DOlMKwJ9.js +0 -12
- package/dist/plugin-sdk/deliver-Dl2ednkv.js +0 -2555
- package/dist/plugin-sdk/exec-CjyVHUuE.js +0 -1107
- package/dist/plugin-sdk/github-copilot-token-BoPqI-5_.js +0 -97
- package/dist/plugin-sdk/github-copilot-token-YEH9Bwov.js +0 -4
- package/dist/plugin-sdk/image-B_t0xXCb.js +0 -1419
- package/dist/plugin-sdk/image-DYTdodiR.js +0 -14
- package/dist/plugin-sdk/login-qr-B7ec28AI.js +0 -9
- package/dist/plugin-sdk/login-qr-BVBRxQRt.js +0 -470
- package/dist/plugin-sdk/manager-B-EITu1a.js +0 -10
- package/dist/plugin-sdk/manager-WCGzgWdf.js +0 -2868
- package/dist/plugin-sdk/model-selection-Bo7pocNu.js +0 -2667
- package/dist/plugin-sdk/paths-BFxmmTT5.js +0 -164
- package/dist/plugin-sdk/paths-Bkjq_KcG.js +0 -40
- package/dist/plugin-sdk/pi-embedded-helpers-fm5_Eokw.js +0 -8755
- package/dist/plugin-sdk/pi-model-discovery-CLgDNnGq.js +0 -13
- package/dist/plugin-sdk/pi-model-discovery-P2-pVRmz.js +0 -3
- package/dist/plugin-sdk/pw-ai-BN7Cwl9J.js +0 -1649
- package/dist/qmd-manager-CzArLjr6.js +0 -615
- package/dist/redact-BR0IM00e.js +0 -94
- package/dist/register.subclis-Bo-xmQ-W.js +0 -342
- package/dist/register.subclis-BuT7ZpPf.js +0 -3
- package/dist/restart-sentinel-CdcBcziq.js +0 -65
- package/dist/restart-sentinel-DywisDen.js +0 -65
- package/dist/runtime-guard-BG6JybtL.js +0 -60
- package/dist/runtime-guard-DvBpNsbR.js +0 -60
- package/dist/sqlite-Dz6S6ijV.js +0 -215
- package/dist/status.update-2ZdxeIeT.js +0 -79
- package/dist/status.update-ChwCPLBt.js +0 -79
- package/dist/systemd-linger-BZb1Uwsd.js +0 -7
- package/dist/systemd-linger-DemNCT5l.js +0 -9
- package/dist/transcript-events-fUhPZcB5.js +0 -17
- package/docs/_config.yml +0 -53
- package/docs/_layouts/default.html +0 -145
- package/docs/assets/docs-chat-widget.js +0 -667
- package/docs/assets/markdown.css +0 -179
- package/docs/assets/terminal.css +0 -473
- package/docs/assets/theme.js +0 -55
- package/extensions/feishu/README.md +0 -47
- /package/dist/{archive-BrH5WBhI.js → archive-D0z3LZDK.js} +0 -0
- /package/dist/{archive-mFgwsll-.js → archive-Dy3Ezb-5.js} +0 -0
- /package/dist/{boolean-CE7i9tBR.js → boolean-BgXe2hyu.js} +0 -0
- /package/dist/{brew-0HRgjHZw.js → brew-CAcErcKz.js} +0 -0
- /package/dist/{brew-Qdppmdlx.js → brew-CcZV0dSS.js} +0 -0
- /package/dist/{cli-utils-CukoNm8O.js → cli-utils-BkRQdAoC.js} +0 -0
- /package/dist/{cli-utils-DFbPmfWB.js → cli-utils-ByANh4Sp.js} +0 -0
- /package/dist/{plugin-sdk/command-format-CFzL448l.js → command-format-CFzL448l.js} +0 -0
- /package/dist/{command-format-BQK1OIvH.js → command-format-ChfKqObn.js} +0 -0
- /package/dist/{command-format-3xiXujG0.js → command-format-ayFsmwwz.js} +0 -0
- /package/dist/{constants-3er_81qc.js → constants-D1op9uGI.js} +0 -0
- /package/dist/{constants-CLUi6T-M.js → constants-HPrOsATF.js} +0 -0
- /package/dist/{exec-BIMFe4XS.js → exec-B8JKbXKW.js} +0 -0
- /package/dist/{format-BnjMmWWT.js → format-B7OjpGnt.js} +0 -0
- /package/dist/{format-hyFOmVZc.js → format-CS7EI0xF.js} +0 -0
- /package/dist/{help-format-af1XWYxC.js → help-format-CfZ94KRN.js} +0 -0
- /package/dist/{helpers-HZ-6iA1e.js → helpers-5yebzF4C.js} +0 -0
- /package/dist/{helpers-uGhPZ_kK.js → helpers-EKm3X92T.js} +0 -0
- /package/dist/{is-main-DD0MG3N8.js → is-main-B6kCyqsv.js} +0 -0
- /package/dist/{is-main-DrJg4t1R.js → is-main-qJ675wPV.js} +0 -0
- /package/dist/{logging-BdnOSVPD.js → logging-BWRYHvLp.js} +0 -0
- /package/dist/{logging-fywhKCmE.js → logging-CfEk_PnX.js} +0 -0
- /package/dist/{openclaw-root-Dean7Fp2.js → openclaw-root-9ILYSmJ9.js} +0 -0
- /package/dist/{openclaw-root-CJKDUIBP.js → openclaw-root-Cvotktkd.js} +0 -0
- /package/dist/{parse-BB0Cqon8.js → parse-BZz5lHzQ.js} +0 -0
- /package/dist/{parse-DLFPuO7w.js → parse-gTOGQPH6.js} +0 -0
- /package/dist/{parse-log-line-B3U8Kflp.js → parse-log-line-C6szvNBZ.js} +0 -0
- /package/dist/{parse-log-line-BmyeB3J2.js → parse-log-line-CARp5QyJ.js} +0 -0
- /package/dist/{parse-timeout-BIB19Upi.js → parse-timeout-CbVKLZ4B.js} +0 -0
- /package/dist/{parse-timeout-CmBmmqZZ.js → parse-timeout-Du-wHHNi.js} +0 -0
- /package/dist/{paths-VslOJiD2.js → paths-B1kfl4h5.js} +0 -0
- /package/dist/{paths-BDd7_JUB.js → paths-scjhy7N2.js} +0 -0
- /package/dist/{progress-Dn3kWpaL.js → progress-Da1ehW-x.js} +0 -0
- /package/dist/{prompt-style-D5D7b3cX.js → prompt-style-Dc0C5HC9.js} +0 -0
- /package/dist/{prompts-CIDznuZR.js → prompts-CXLLIBwP.js} +0 -0
- /package/dist/{prompts-CSlE5VZB.js → prompts-FbZThK8w.js} +0 -0
- /package/dist/{redact-BKh-zp-c.js → redact-B8YiFlwn.js} +0 -0
- /package/dist/{plugin-sdk/redact-wH73ib3-.js → redact-BIMJ3ntQ.js} +0 -0
- /package/dist/{redact-CDPAzwi8.js → redact-DJCFY628.js} +0 -0
- /package/dist/{plugin-sdk/sqlite-CqVsQPIl.js → sqlite-BKl1HJFe.js} +0 -0
- /package/dist/{sqlite-C59YNxdL.js → sqlite-Dnmf3LS7.js} +0 -0
- /package/dist/{sqlite-B_L84oiu.js → sqlite-DqUEZnjO.js} +0 -0
- /package/dist/{status-DkW6wMxZ.js → status-CRIEi8Mc.js} +0 -0
- /package/dist/{status-IDW1pkc0.js → status-tCu4RWZH.js} +0 -0
- /package/dist/{tailnet-BijMqkqa.js → tailnet-Byp3obcc.js} +0 -0
- /package/dist/{tailnet-Bk5cGmwE.js → tailnet-DLDGNuH2.js} +0 -0
- /package/dist/{plugin-sdk/transcript-events-DOI14YeV.js → transcript-events-CZ8CG4ht.js} +0 -0
- /package/dist/{transcript-events-Cj85Mq0h.js → transcript-events-ChU6IQwp.js} +0 -0
- /package/dist/{transcript-events-DW_H__a1.js → transcript-events-JLH5W4He.js} +0 -0
- /package/dist/{utils-PmTbZoD1.js → utils-DX85MiPR.js} +0 -0
- /package/dist/{ws-Cxo2p9fH.js → ws-CEcdsnN9.js} +0 -0
- /package/dist/{ws-DlSkA_BG.js → ws-D091yo4M.js} +0 -0
- /package/docs/{platforms → install}/gcp.md +0 -0
- /package/docs/{platforms → install}/hetzner.md +0 -0
- /package/docs/{platforms → install}/macos-vm.md +0 -0
- /package/docs/{northflank.mdx → install/northflank.mdx} +0 -0
- /package/docs/{railway.mdx → install/railway.mdx} +0 -0
- /package/docs/{render.mdx → install/render.mdx} +0 -0
- /package/docs/zh-CN/{platforms → install}/exe-dev.md +0 -0
- /package/docs/zh-CN/{platforms → install}/fly.md +0 -0
- /package/docs/zh-CN/{platforms → install}/gcp.md +0 -0
- /package/docs/zh-CN/{platforms → install}/hetzner.md +0 -0
- /package/docs/zh-CN/{platforms → install}/macos-vm.md +0 -0
- /package/docs/zh-CN/{northflank.mdx → install/northflank.mdx} +0 -0
- /package/docs/zh-CN/{railway.mdx → install/railway.mdx} +0 -0
- /package/docs/zh-CN/{render.mdx → install/render.mdx} +0 -0
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { B as resolveConfigPath, J as resolveOAuthDir, X as resolveStateDir } from "./entry.js";
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import {
|
|
4
|
-
import { n as runExec } from "./exec-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
3
|
+
import { c as normalizeAgentId } from "./session-key-CZkcvAtx.js";
|
|
4
|
+
import { n as runExec } from "./exec-B8JKbXKW.js";
|
|
5
|
+
import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-C9VjJXEK.js";
|
|
6
|
+
import { D as MAX_INCLUDE_DEPTH, E as INCLUDE_KEY, r as createConfigIO } from "./config-CKLedg5Y.js";
|
|
7
|
+
import { a as MANIFEST_KEY } from "./manifest-registry-C69Z-I4v.js";
|
|
8
|
+
import { a as resolveBrowserConfig, o as resolveProfile } from "./server-context-yKyxyxOJ.js";
|
|
9
|
+
import { i as resolveGatewayAuth } from "./auth-DksjO6WG.js";
|
|
10
|
+
import { t as GatewayClient } from "./client-CxbkcEZ7.js";
|
|
11
|
+
import { t as buildGatewayConnectionDetails } from "./call-90HgQQ8o.js";
|
|
12
|
+
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-BlgPSDAh.js";
|
|
13
|
+
import { n as listChannelPlugins } from "./plugins-BUPpq5aS.js";
|
|
14
|
+
import { t as resolveChannelDefaultAccountId } from "./helpers-D66_XoIz.js";
|
|
15
|
+
import { t as scanDirectoryWithSummary } from "./skill-scanner-Bp1D9gra.js";
|
|
16
|
+
import { G as resolveSandboxToolPolicyForAgent, Q as resolveToolProfilePolicy, U as resolveSandboxConfigForAgent } from "./sandbox-DuqLKN5J.js";
|
|
17
|
+
import { i as loadWorkspaceSkillEntries } from "./skills-CmU0Q92f.js";
|
|
18
|
+
import { a as isToolAllowedByPolicies, n as resolveNativeCommandsEnabled, r as resolveNativeSkillsEnabled } from "./commands-DAC7XMAT.js";
|
|
19
|
+
import { i as readChannelAllowFromStore } from "./pairing-store-DTfv_FGA.js";
|
|
16
20
|
import path from "node:path";
|
|
17
21
|
import os from "node:os";
|
|
18
22
|
import JSON5 from "json5";
|
|
@@ -577,7 +581,7 @@ function isClaudeModel(id) {
|
|
|
577
581
|
return /\bclaude-/i.test(id);
|
|
578
582
|
}
|
|
579
583
|
function isClaude45OrHigher(id) {
|
|
580
|
-
return /\bclaude-[^\s/]*?(?:-4-?5\b|4\.5\b)/i.test(id);
|
|
584
|
+
return /\bclaude-[^\s/]*?(?:-4-?(?:[5-9]|[1-9]\d)\b|4\.(?:[5-9]|[1-9]\d)\b|-[5-9](?:\b|[.-]))/i.test(id);
|
|
581
585
|
}
|
|
582
586
|
function collectModelHygieneFindings(cfg) {
|
|
583
587
|
const findings = [];
|
|
@@ -1045,6 +1049,162 @@ async function readConfigSnapshotForAudit(params) {
|
|
|
1045
1049
|
configPath: params.configPath
|
|
1046
1050
|
}).readConfigFileSnapshot();
|
|
1047
1051
|
}
|
|
1052
|
+
function isPathInside(basePath, candidatePath) {
|
|
1053
|
+
const base = path.resolve(basePath);
|
|
1054
|
+
const candidate = path.resolve(candidatePath);
|
|
1055
|
+
const rel = path.relative(base, candidate);
|
|
1056
|
+
return rel === "" || !rel.startsWith(`..${path.sep}`) && rel !== ".." && !path.isAbsolute(rel);
|
|
1057
|
+
}
|
|
1058
|
+
function extensionUsesSkippedScannerPath(entry) {
|
|
1059
|
+
return entry.split(/[\\/]+/).filter(Boolean).some((segment) => segment === "node_modules" || segment.startsWith(".") && segment !== "." && segment !== "..");
|
|
1060
|
+
}
|
|
1061
|
+
async function readPluginManifestExtensions(pluginPath) {
|
|
1062
|
+
const manifestPath = path.join(pluginPath, "package.json");
|
|
1063
|
+
const raw = await fs.readFile(manifestPath, "utf-8").catch(() => "");
|
|
1064
|
+
if (!raw.trim()) return [];
|
|
1065
|
+
const extensions = JSON.parse(raw)?.[MANIFEST_KEY]?.extensions;
|
|
1066
|
+
if (!Array.isArray(extensions)) return [];
|
|
1067
|
+
return extensions.map((entry) => typeof entry === "string" ? entry.trim() : "").filter(Boolean);
|
|
1068
|
+
}
|
|
1069
|
+
function listWorkspaceDirs(cfg) {
|
|
1070
|
+
const dirs = /* @__PURE__ */ new Set();
|
|
1071
|
+
const list = cfg.agents?.list;
|
|
1072
|
+
if (Array.isArray(list)) {
|
|
1073
|
+
for (const entry of list) if (entry && typeof entry === "object" && typeof entry.id === "string") dirs.add(resolveAgentWorkspaceDir(cfg, entry.id));
|
|
1074
|
+
}
|
|
1075
|
+
dirs.add(resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg)));
|
|
1076
|
+
return [...dirs];
|
|
1077
|
+
}
|
|
1078
|
+
function formatCodeSafetyDetails(findings, rootDir) {
|
|
1079
|
+
return findings.map((finding) => {
|
|
1080
|
+
const relPath = path.relative(rootDir, finding.file);
|
|
1081
|
+
const normalizedPath = (relPath && relPath !== "." && !relPath.startsWith("..") ? relPath : path.basename(finding.file)).replaceAll("\\", "/");
|
|
1082
|
+
return ` - [${finding.ruleId}] ${finding.message} (${normalizedPath}:${finding.line})`;
|
|
1083
|
+
}).join("\n");
|
|
1084
|
+
}
|
|
1085
|
+
async function collectPluginsCodeSafetyFindings(params) {
|
|
1086
|
+
const findings = [];
|
|
1087
|
+
const extensionsDir = path.join(params.stateDir, "extensions");
|
|
1088
|
+
const st = await safeStat(extensionsDir);
|
|
1089
|
+
if (!st.ok || !st.isDir) return findings;
|
|
1090
|
+
const pluginDirs = (await fs.readdir(extensionsDir, { withFileTypes: true }).catch((err) => {
|
|
1091
|
+
findings.push({
|
|
1092
|
+
checkId: "plugins.code_safety.scan_failed",
|
|
1093
|
+
severity: "warn",
|
|
1094
|
+
title: "Plugin extensions directory scan failed",
|
|
1095
|
+
detail: `Static code scan could not list extensions directory: ${String(err)}`,
|
|
1096
|
+
remediation: "Check file permissions and plugin layout, then rerun `openclaw security audit --deep`."
|
|
1097
|
+
});
|
|
1098
|
+
return [];
|
|
1099
|
+
})).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
1100
|
+
for (const pluginName of pluginDirs) {
|
|
1101
|
+
const pluginPath = path.join(extensionsDir, pluginName);
|
|
1102
|
+
const extensionEntries = await readPluginManifestExtensions(pluginPath).catch(() => []);
|
|
1103
|
+
const forcedScanEntries = [];
|
|
1104
|
+
const escapedEntries = [];
|
|
1105
|
+
for (const entry of extensionEntries) {
|
|
1106
|
+
const resolvedEntry = path.resolve(pluginPath, entry);
|
|
1107
|
+
if (!isPathInside(pluginPath, resolvedEntry)) {
|
|
1108
|
+
escapedEntries.push(entry);
|
|
1109
|
+
continue;
|
|
1110
|
+
}
|
|
1111
|
+
if (extensionUsesSkippedScannerPath(entry)) findings.push({
|
|
1112
|
+
checkId: "plugins.code_safety.entry_path",
|
|
1113
|
+
severity: "warn",
|
|
1114
|
+
title: `Plugin "${pluginName}" entry path is hidden or node_modules`,
|
|
1115
|
+
detail: `Extension entry "${entry}" points to a hidden or node_modules path. Deep code scan will cover this entry explicitly, but review this path choice carefully.`,
|
|
1116
|
+
remediation: "Prefer extension entrypoints under normal source paths like dist/ or src/."
|
|
1117
|
+
});
|
|
1118
|
+
forcedScanEntries.push(resolvedEntry);
|
|
1119
|
+
}
|
|
1120
|
+
if (escapedEntries.length > 0) findings.push({
|
|
1121
|
+
checkId: "plugins.code_safety.entry_escape",
|
|
1122
|
+
severity: "critical",
|
|
1123
|
+
title: `Plugin "${pluginName}" has extension entry path traversal`,
|
|
1124
|
+
detail: `Found extension entries that escape the plugin directory:\n${escapedEntries.map((entry) => ` - ${entry}`).join("\n")}`,
|
|
1125
|
+
remediation: "Update the plugin manifest so all openclaw.extensions entries stay inside the plugin directory."
|
|
1126
|
+
});
|
|
1127
|
+
const summary = await scanDirectoryWithSummary(pluginPath, { includeFiles: forcedScanEntries }).catch((err) => {
|
|
1128
|
+
findings.push({
|
|
1129
|
+
checkId: "plugins.code_safety.scan_failed",
|
|
1130
|
+
severity: "warn",
|
|
1131
|
+
title: `Plugin "${pluginName}" code scan failed`,
|
|
1132
|
+
detail: `Static code scan could not complete: ${String(err)}`,
|
|
1133
|
+
remediation: "Check file permissions and plugin layout, then rerun `openclaw security audit --deep`."
|
|
1134
|
+
});
|
|
1135
|
+
return null;
|
|
1136
|
+
});
|
|
1137
|
+
if (!summary) continue;
|
|
1138
|
+
if (summary.critical > 0) {
|
|
1139
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((f) => f.severity === "critical"), pluginPath);
|
|
1140
|
+
findings.push({
|
|
1141
|
+
checkId: "plugins.code_safety",
|
|
1142
|
+
severity: "critical",
|
|
1143
|
+
title: `Plugin "${pluginName}" contains dangerous code patterns`,
|
|
1144
|
+
detail: `Found ${summary.critical} critical issue(s) in ${summary.scannedFiles} scanned file(s):\n${details}`,
|
|
1145
|
+
remediation: "Review the plugin source code carefully before use. If untrusted, remove the plugin from your OpenClaw extensions state directory."
|
|
1146
|
+
});
|
|
1147
|
+
} else if (summary.warn > 0) {
|
|
1148
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((f) => f.severity === "warn"), pluginPath);
|
|
1149
|
+
findings.push({
|
|
1150
|
+
checkId: "plugins.code_safety",
|
|
1151
|
+
severity: "warn",
|
|
1152
|
+
title: `Plugin "${pluginName}" contains suspicious code patterns`,
|
|
1153
|
+
detail: `Found ${summary.warn} warning(s) in ${summary.scannedFiles} scanned file(s):\n${details}`,
|
|
1154
|
+
remediation: `Review the flagged code to ensure it is intentional and safe.`
|
|
1155
|
+
});
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
return findings;
|
|
1159
|
+
}
|
|
1160
|
+
async function collectInstalledSkillsCodeSafetyFindings(params) {
|
|
1161
|
+
const findings = [];
|
|
1162
|
+
const pluginExtensionsDir = path.join(params.stateDir, "extensions");
|
|
1163
|
+
const scannedSkillDirs = /* @__PURE__ */ new Set();
|
|
1164
|
+
const workspaceDirs = listWorkspaceDirs(params.cfg);
|
|
1165
|
+
for (const workspaceDir of workspaceDirs) {
|
|
1166
|
+
const entries = loadWorkspaceSkillEntries(workspaceDir, { config: params.cfg });
|
|
1167
|
+
for (const entry of entries) {
|
|
1168
|
+
if (entry.skill.source === "openclaw-bundled") continue;
|
|
1169
|
+
const skillDir = path.resolve(entry.skill.baseDir);
|
|
1170
|
+
if (isPathInside(pluginExtensionsDir, skillDir)) continue;
|
|
1171
|
+
if (scannedSkillDirs.has(skillDir)) continue;
|
|
1172
|
+
scannedSkillDirs.add(skillDir);
|
|
1173
|
+
const skillName = entry.skill.name;
|
|
1174
|
+
const summary = await scanDirectoryWithSummary(skillDir).catch((err) => {
|
|
1175
|
+
findings.push({
|
|
1176
|
+
checkId: "skills.code_safety.scan_failed",
|
|
1177
|
+
severity: "warn",
|
|
1178
|
+
title: `Skill "${skillName}" code scan failed`,
|
|
1179
|
+
detail: `Static code scan could not complete for ${skillDir}: ${String(err)}`,
|
|
1180
|
+
remediation: "Check file permissions and skill layout, then rerun `openclaw security audit --deep`."
|
|
1181
|
+
});
|
|
1182
|
+
return null;
|
|
1183
|
+
});
|
|
1184
|
+
if (!summary) continue;
|
|
1185
|
+
if (summary.critical > 0) {
|
|
1186
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((finding) => finding.severity === "critical"), skillDir);
|
|
1187
|
+
findings.push({
|
|
1188
|
+
checkId: "skills.code_safety",
|
|
1189
|
+
severity: "critical",
|
|
1190
|
+
title: `Skill "${skillName}" contains dangerous code patterns`,
|
|
1191
|
+
detail: `Found ${summary.critical} critical issue(s) in ${summary.scannedFiles} scanned file(s) under ${skillDir}:\n${details}`,
|
|
1192
|
+
remediation: `Review the skill source code before use. If untrusted, remove "${skillDir}".`
|
|
1193
|
+
});
|
|
1194
|
+
} else if (summary.warn > 0) {
|
|
1195
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((finding) => finding.severity === "warn"), skillDir);
|
|
1196
|
+
findings.push({
|
|
1197
|
+
checkId: "skills.code_safety",
|
|
1198
|
+
severity: "warn",
|
|
1199
|
+
title: `Skill "${skillName}" contains suspicious code patterns`,
|
|
1200
|
+
detail: `Found ${summary.warn} warning(s) in ${summary.scannedFiles} scanned file(s) under ${skillDir}:\n${details}`,
|
|
1201
|
+
remediation: "Review flagged lines to ensure the behavior is intentional and safe."
|
|
1202
|
+
});
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
return findings;
|
|
1207
|
+
}
|
|
1048
1208
|
|
|
1049
1209
|
//#endregion
|
|
1050
1210
|
//#region src/security/audit.ts
|
|
@@ -1653,6 +1813,13 @@ async function runSecurityAudit(opts) {
|
|
|
1653
1813
|
cfg,
|
|
1654
1814
|
stateDir
|
|
1655
1815
|
}));
|
|
1816
|
+
if (opts.deep === true) {
|
|
1817
|
+
findings.push(...await collectPluginsCodeSafetyFindings({ stateDir }));
|
|
1818
|
+
findings.push(...await collectInstalledSkillsCodeSafetyFindings({
|
|
1819
|
+
cfg,
|
|
1820
|
+
stateDir
|
|
1821
|
+
}));
|
|
1822
|
+
}
|
|
1656
1823
|
}
|
|
1657
1824
|
if (opts.includeChannelSecurity !== false) {
|
|
1658
1825
|
const plugins = opts.plugins ?? listChannelPlugins();
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import { g as resolveStateDir, m as resolveOAuthDir, o as resolveConfigPath } from "./paths-
|
|
2
|
-
import {
|
|
3
|
-
import { n as runExec } from "./exec-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { t as
|
|
15
|
-
import { i as
|
|
1
|
+
import { g as resolveStateDir, m as resolveOAuthDir, o as resolveConfigPath } from "./paths-scjhy7N2.js";
|
|
2
|
+
import { c as normalizeAgentId } from "./session-key-Dm2EOhrH.js";
|
|
3
|
+
import { n as runExec } from "./exec-HEWTMJ7j.js";
|
|
4
|
+
import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CMs5Y7l-.js";
|
|
5
|
+
import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
6
|
+
import { D as MAX_INCLUDE_DEPTH, E as INCLUDE_KEY, r as createConfigIO } from "./config-CAuZ-EkU.js";
|
|
7
|
+
import { a as MANIFEST_KEY } from "./manifest-registry-DHaa1SJb.js";
|
|
8
|
+
import { n as listChannelPlugins } from "./plugins-BYIWo0Cp.js";
|
|
9
|
+
import { $ as resolveSandboxToolPolicyForAgent, Z as resolveSandboxConfigForAgent, ot as resolveToolProfilePolicy } from "./sandbox-CV8VwPij.js";
|
|
10
|
+
import { i as loadWorkspaceSkillEntries } from "./skills-D5JDj3TR.js";
|
|
11
|
+
import { a as resolveProfile, i as resolveBrowserConfig } from "./server-context-vChIAqjH.js";
|
|
12
|
+
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-Bpfe5l5f.js";
|
|
13
|
+
import { t as GatewayClient } from "./client-BYVbRnuQ.js";
|
|
14
|
+
import { t as buildGatewayConnectionDetails } from "./call-BTbA5OB4.js";
|
|
15
|
+
import { i as readChannelAllowFromStore } from "./pairing-store-DFq7WtOv.js";
|
|
16
|
+
import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-BQ8N5y8a.js";
|
|
17
|
+
import { t as resolveChannelDefaultAccountId } from "./helpers-BIc7L8EF.js";
|
|
18
|
+
import { t as scanDirectoryWithSummary } from "./skill-scanner-BoGjHXUZ.js";
|
|
19
|
+
import { i as resolveGatewayAuth } from "./auth-CbhB03Rz.js";
|
|
16
20
|
import os from "node:os";
|
|
17
21
|
import path from "node:path";
|
|
18
22
|
import JSON5 from "json5";
|
|
@@ -577,7 +581,7 @@ function isClaudeModel(id) {
|
|
|
577
581
|
return /\bclaude-/i.test(id);
|
|
578
582
|
}
|
|
579
583
|
function isClaude45OrHigher(id) {
|
|
580
|
-
return /\bclaude-[^\s/]*?(?:-4-?5\b|4\.5\b)/i.test(id);
|
|
584
|
+
return /\bclaude-[^\s/]*?(?:-4-?(?:[5-9]|[1-9]\d)\b|4\.(?:[5-9]|[1-9]\d)\b|-[5-9](?:\b|[.-]))/i.test(id);
|
|
581
585
|
}
|
|
582
586
|
function collectModelHygieneFindings(cfg) {
|
|
583
587
|
const findings = [];
|
|
@@ -1045,6 +1049,162 @@ async function readConfigSnapshotForAudit(params) {
|
|
|
1045
1049
|
configPath: params.configPath
|
|
1046
1050
|
}).readConfigFileSnapshot();
|
|
1047
1051
|
}
|
|
1052
|
+
function isPathInside(basePath, candidatePath) {
|
|
1053
|
+
const base = path.resolve(basePath);
|
|
1054
|
+
const candidate = path.resolve(candidatePath);
|
|
1055
|
+
const rel = path.relative(base, candidate);
|
|
1056
|
+
return rel === "" || !rel.startsWith(`..${path.sep}`) && rel !== ".." && !path.isAbsolute(rel);
|
|
1057
|
+
}
|
|
1058
|
+
function extensionUsesSkippedScannerPath(entry) {
|
|
1059
|
+
return entry.split(/[\\/]+/).filter(Boolean).some((segment) => segment === "node_modules" || segment.startsWith(".") && segment !== "." && segment !== "..");
|
|
1060
|
+
}
|
|
1061
|
+
async function readPluginManifestExtensions(pluginPath) {
|
|
1062
|
+
const manifestPath = path.join(pluginPath, "package.json");
|
|
1063
|
+
const raw = await fs.readFile(manifestPath, "utf-8").catch(() => "");
|
|
1064
|
+
if (!raw.trim()) return [];
|
|
1065
|
+
const extensions = JSON.parse(raw)?.[MANIFEST_KEY]?.extensions;
|
|
1066
|
+
if (!Array.isArray(extensions)) return [];
|
|
1067
|
+
return extensions.map((entry) => typeof entry === "string" ? entry.trim() : "").filter(Boolean);
|
|
1068
|
+
}
|
|
1069
|
+
function listWorkspaceDirs(cfg) {
|
|
1070
|
+
const dirs = /* @__PURE__ */ new Set();
|
|
1071
|
+
const list = cfg.agents?.list;
|
|
1072
|
+
if (Array.isArray(list)) {
|
|
1073
|
+
for (const entry of list) if (entry && typeof entry === "object" && typeof entry.id === "string") dirs.add(resolveAgentWorkspaceDir(cfg, entry.id));
|
|
1074
|
+
}
|
|
1075
|
+
dirs.add(resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg)));
|
|
1076
|
+
return [...dirs];
|
|
1077
|
+
}
|
|
1078
|
+
function formatCodeSafetyDetails(findings, rootDir) {
|
|
1079
|
+
return findings.map((finding) => {
|
|
1080
|
+
const relPath = path.relative(rootDir, finding.file);
|
|
1081
|
+
const normalizedPath = (relPath && relPath !== "." && !relPath.startsWith("..") ? relPath : path.basename(finding.file)).replaceAll("\\", "/");
|
|
1082
|
+
return ` - [${finding.ruleId}] ${finding.message} (${normalizedPath}:${finding.line})`;
|
|
1083
|
+
}).join("\n");
|
|
1084
|
+
}
|
|
1085
|
+
async function collectPluginsCodeSafetyFindings(params) {
|
|
1086
|
+
const findings = [];
|
|
1087
|
+
const extensionsDir = path.join(params.stateDir, "extensions");
|
|
1088
|
+
const st = await safeStat(extensionsDir);
|
|
1089
|
+
if (!st.ok || !st.isDir) return findings;
|
|
1090
|
+
const pluginDirs = (await fs.readdir(extensionsDir, { withFileTypes: true }).catch((err) => {
|
|
1091
|
+
findings.push({
|
|
1092
|
+
checkId: "plugins.code_safety.scan_failed",
|
|
1093
|
+
severity: "warn",
|
|
1094
|
+
title: "Plugin extensions directory scan failed",
|
|
1095
|
+
detail: `Static code scan could not list extensions directory: ${String(err)}`,
|
|
1096
|
+
remediation: "Check file permissions and plugin layout, then rerun `openclaw security audit --deep`."
|
|
1097
|
+
});
|
|
1098
|
+
return [];
|
|
1099
|
+
})).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
1100
|
+
for (const pluginName of pluginDirs) {
|
|
1101
|
+
const pluginPath = path.join(extensionsDir, pluginName);
|
|
1102
|
+
const extensionEntries = await readPluginManifestExtensions(pluginPath).catch(() => []);
|
|
1103
|
+
const forcedScanEntries = [];
|
|
1104
|
+
const escapedEntries = [];
|
|
1105
|
+
for (const entry of extensionEntries) {
|
|
1106
|
+
const resolvedEntry = path.resolve(pluginPath, entry);
|
|
1107
|
+
if (!isPathInside(pluginPath, resolvedEntry)) {
|
|
1108
|
+
escapedEntries.push(entry);
|
|
1109
|
+
continue;
|
|
1110
|
+
}
|
|
1111
|
+
if (extensionUsesSkippedScannerPath(entry)) findings.push({
|
|
1112
|
+
checkId: "plugins.code_safety.entry_path",
|
|
1113
|
+
severity: "warn",
|
|
1114
|
+
title: `Plugin "${pluginName}" entry path is hidden or node_modules`,
|
|
1115
|
+
detail: `Extension entry "${entry}" points to a hidden or node_modules path. Deep code scan will cover this entry explicitly, but review this path choice carefully.`,
|
|
1116
|
+
remediation: "Prefer extension entrypoints under normal source paths like dist/ or src/."
|
|
1117
|
+
});
|
|
1118
|
+
forcedScanEntries.push(resolvedEntry);
|
|
1119
|
+
}
|
|
1120
|
+
if (escapedEntries.length > 0) findings.push({
|
|
1121
|
+
checkId: "plugins.code_safety.entry_escape",
|
|
1122
|
+
severity: "critical",
|
|
1123
|
+
title: `Plugin "${pluginName}" has extension entry path traversal`,
|
|
1124
|
+
detail: `Found extension entries that escape the plugin directory:\n${escapedEntries.map((entry) => ` - ${entry}`).join("\n")}`,
|
|
1125
|
+
remediation: "Update the plugin manifest so all openclaw.extensions entries stay inside the plugin directory."
|
|
1126
|
+
});
|
|
1127
|
+
const summary = await scanDirectoryWithSummary(pluginPath, { includeFiles: forcedScanEntries }).catch((err) => {
|
|
1128
|
+
findings.push({
|
|
1129
|
+
checkId: "plugins.code_safety.scan_failed",
|
|
1130
|
+
severity: "warn",
|
|
1131
|
+
title: `Plugin "${pluginName}" code scan failed`,
|
|
1132
|
+
detail: `Static code scan could not complete: ${String(err)}`,
|
|
1133
|
+
remediation: "Check file permissions and plugin layout, then rerun `openclaw security audit --deep`."
|
|
1134
|
+
});
|
|
1135
|
+
return null;
|
|
1136
|
+
});
|
|
1137
|
+
if (!summary) continue;
|
|
1138
|
+
if (summary.critical > 0) {
|
|
1139
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((f) => f.severity === "critical"), pluginPath);
|
|
1140
|
+
findings.push({
|
|
1141
|
+
checkId: "plugins.code_safety",
|
|
1142
|
+
severity: "critical",
|
|
1143
|
+
title: `Plugin "${pluginName}" contains dangerous code patterns`,
|
|
1144
|
+
detail: `Found ${summary.critical} critical issue(s) in ${summary.scannedFiles} scanned file(s):\n${details}`,
|
|
1145
|
+
remediation: "Review the plugin source code carefully before use. If untrusted, remove the plugin from your OpenClaw extensions state directory."
|
|
1146
|
+
});
|
|
1147
|
+
} else if (summary.warn > 0) {
|
|
1148
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((f) => f.severity === "warn"), pluginPath);
|
|
1149
|
+
findings.push({
|
|
1150
|
+
checkId: "plugins.code_safety",
|
|
1151
|
+
severity: "warn",
|
|
1152
|
+
title: `Plugin "${pluginName}" contains suspicious code patterns`,
|
|
1153
|
+
detail: `Found ${summary.warn} warning(s) in ${summary.scannedFiles} scanned file(s):\n${details}`,
|
|
1154
|
+
remediation: `Review the flagged code to ensure it is intentional and safe.`
|
|
1155
|
+
});
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
return findings;
|
|
1159
|
+
}
|
|
1160
|
+
async function collectInstalledSkillsCodeSafetyFindings(params) {
|
|
1161
|
+
const findings = [];
|
|
1162
|
+
const pluginExtensionsDir = path.join(params.stateDir, "extensions");
|
|
1163
|
+
const scannedSkillDirs = /* @__PURE__ */ new Set();
|
|
1164
|
+
const workspaceDirs = listWorkspaceDirs(params.cfg);
|
|
1165
|
+
for (const workspaceDir of workspaceDirs) {
|
|
1166
|
+
const entries = loadWorkspaceSkillEntries(workspaceDir, { config: params.cfg });
|
|
1167
|
+
for (const entry of entries) {
|
|
1168
|
+
if (entry.skill.source === "openclaw-bundled") continue;
|
|
1169
|
+
const skillDir = path.resolve(entry.skill.baseDir);
|
|
1170
|
+
if (isPathInside(pluginExtensionsDir, skillDir)) continue;
|
|
1171
|
+
if (scannedSkillDirs.has(skillDir)) continue;
|
|
1172
|
+
scannedSkillDirs.add(skillDir);
|
|
1173
|
+
const skillName = entry.skill.name;
|
|
1174
|
+
const summary = await scanDirectoryWithSummary(skillDir).catch((err) => {
|
|
1175
|
+
findings.push({
|
|
1176
|
+
checkId: "skills.code_safety.scan_failed",
|
|
1177
|
+
severity: "warn",
|
|
1178
|
+
title: `Skill "${skillName}" code scan failed`,
|
|
1179
|
+
detail: `Static code scan could not complete for ${skillDir}: ${String(err)}`,
|
|
1180
|
+
remediation: "Check file permissions and skill layout, then rerun `openclaw security audit --deep`."
|
|
1181
|
+
});
|
|
1182
|
+
return null;
|
|
1183
|
+
});
|
|
1184
|
+
if (!summary) continue;
|
|
1185
|
+
if (summary.critical > 0) {
|
|
1186
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((finding) => finding.severity === "critical"), skillDir);
|
|
1187
|
+
findings.push({
|
|
1188
|
+
checkId: "skills.code_safety",
|
|
1189
|
+
severity: "critical",
|
|
1190
|
+
title: `Skill "${skillName}" contains dangerous code patterns`,
|
|
1191
|
+
detail: `Found ${summary.critical} critical issue(s) in ${summary.scannedFiles} scanned file(s) under ${skillDir}:\n${details}`,
|
|
1192
|
+
remediation: `Review the skill source code before use. If untrusted, remove "${skillDir}".`
|
|
1193
|
+
});
|
|
1194
|
+
} else if (summary.warn > 0) {
|
|
1195
|
+
const details = formatCodeSafetyDetails(summary.findings.filter((finding) => finding.severity === "warn"), skillDir);
|
|
1196
|
+
findings.push({
|
|
1197
|
+
checkId: "skills.code_safety",
|
|
1198
|
+
severity: "warn",
|
|
1199
|
+
title: `Skill "${skillName}" contains suspicious code patterns`,
|
|
1200
|
+
detail: `Found ${summary.warn} warning(s) in ${summary.scannedFiles} scanned file(s) under ${skillDir}:\n${details}`,
|
|
1201
|
+
remediation: "Review flagged lines to ensure the behavior is intentional and safe."
|
|
1202
|
+
});
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
return findings;
|
|
1207
|
+
}
|
|
1048
1208
|
|
|
1049
1209
|
//#endregion
|
|
1050
1210
|
//#region src/security/audit.ts
|
|
@@ -1653,6 +1813,13 @@ async function runSecurityAudit(opts) {
|
|
|
1653
1813
|
cfg,
|
|
1654
1814
|
stateDir
|
|
1655
1815
|
}));
|
|
1816
|
+
if (opts.deep === true) {
|
|
1817
|
+
findings.push(...await collectPluginsCodeSafetyFindings({ stateDir }));
|
|
1818
|
+
findings.push(...await collectInstalledSkillsCodeSafetyFindings({
|
|
1819
|
+
cfg,
|
|
1820
|
+
stateDir
|
|
1821
|
+
}));
|
|
1822
|
+
}
|
|
1656
1823
|
}
|
|
1657
1824
|
if (opts.includeChannelSecurity !== false) {
|
|
1658
1825
|
const plugins = opts.plugins ?? listChannelPlugins();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as readTailscaleWhoisIdentity } from "./tailscale-
|
|
2
|
-
import { i as parseForwardedForClientIp, o as resolveGatewayClientIp, r as isTrustedProxyAddress } from "./net-
|
|
1
|
+
import { c as readTailscaleWhoisIdentity } from "./tailscale-BVGD9gSD.js";
|
|
2
|
+
import { i as parseForwardedForClientIp, o as resolveGatewayClientIp, r as isTrustedProxyAddress } from "./net-C8YRVt16.js";
|
|
3
3
|
import { timingSafeEqual } from "node:crypto";
|
|
4
4
|
|
|
5
5
|
//#region src/gateway/auth.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as readTailscaleWhoisIdentity } from "./tailscale-
|
|
2
|
-
import { i as parseForwardedForClientIp, o as resolveGatewayClientIp, r as isTrustedProxyAddress } from "./net-
|
|
1
|
+
import { c as readTailscaleWhoisIdentity } from "./tailscale-9MusRvOi.js";
|
|
2
|
+
import { i as parseForwardedForClientIp, o as resolveGatewayClientIp, r as isTrustedProxyAddress } from "./net-CWMMy37F.js";
|
|
3
3
|
import { timingSafeEqual } from "node:crypto";
|
|
4
4
|
|
|
5
5
|
//#region src/gateway/auth.ts
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
1
2
|
import { X as resolveStateDir, Y as resolveOAuthPath, n as isTruthyEnvValue, o as createSubsystemLogger } from "./entry.js";
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import {
|
|
4
|
-
import { m as resolveUserPath } from "./utils-
|
|
5
|
-
import { a as
|
|
3
|
+
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
4
|
+
import { n as DEFAULT_AGENT_ID } from "./session-key-CZkcvAtx.js";
|
|
5
|
+
import { m as resolveUserPath } from "./utils-DX85MiPR.js";
|
|
6
|
+
import { a as resolveAgentModelPrimary } from "./agent-scope-C9VjJXEK.js";
|
|
7
|
+
import { a as saveJsonFile, i as loadJsonFile, r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-SLWintYd.js";
|
|
6
8
|
import { execFileSync, execSync } from "node:child_process";
|
|
7
9
|
import path from "node:path";
|
|
8
10
|
import fs from "node:fs";
|
|
@@ -46,7 +48,7 @@ function resolveAuthProfileDisplayLabel(params) {
|
|
|
46
48
|
//#endregion
|
|
47
49
|
//#region src/agents/defaults.ts
|
|
48
50
|
const DEFAULT_PROVIDER = "anthropic";
|
|
49
|
-
const DEFAULT_MODEL = "claude-opus-4-
|
|
51
|
+
const DEFAULT_MODEL = "claude-opus-4-6";
|
|
50
52
|
const DEFAULT_CONTEXT_TOKENS = 2e5;
|
|
51
53
|
|
|
52
54
|
//#endregion
|
|
@@ -466,7 +468,7 @@ async function resolveApiKeyForProvider(params) {
|
|
|
466
468
|
const normalized = normalizeProviderId(provider);
|
|
467
469
|
if (authOverride === void 0 && normalized === "amazon-bedrock") return resolveAwsSdkAuthInfo();
|
|
468
470
|
if (provider === "openai") {
|
|
469
|
-
if (listProfilesForProvider(store, "openai-codex").length > 0) throw new Error("No API key found for provider \"openai\". You are authenticated with OpenAI Codex OAuth. Use openai-codex/gpt-5.
|
|
471
|
+
if (listProfilesForProvider(store, "openai-codex").length > 0) throw new Error("No API key found for provider \"openai\". You are authenticated with OpenAI Codex OAuth. Use openai-codex/gpt-5.3-codex (OAuth) or set OPENAI_API_KEY to use openai/gpt-5.1-codex.");
|
|
470
472
|
}
|
|
471
473
|
const authStorePath = resolveAuthStorePathForDisplay(params.agentDir);
|
|
472
474
|
const resolvedAgentDir = path.dirname(authStorePath);
|
|
@@ -519,7 +521,8 @@ function resolveEnvApiKey(provider) {
|
|
|
519
521
|
synthetic: "SYNTHETIC_API_KEY",
|
|
520
522
|
venice: "VENICE_API_KEY",
|
|
521
523
|
mistral: "MISTRAL_API_KEY",
|
|
522
|
-
opencode: "OPENCODE_API_KEY"
|
|
524
|
+
opencode: "OPENCODE_API_KEY",
|
|
525
|
+
ollama: "OLLAMA_API_KEY"
|
|
523
526
|
}[normalized];
|
|
524
527
|
if (!envVar) return null;
|
|
525
528
|
return pick(envVar);
|
|
@@ -1138,7 +1141,8 @@ async function discoverOllamaModels() {
|
|
|
1138
1141
|
input: ["text"],
|
|
1139
1142
|
cost: OLLAMA_DEFAULT_COST,
|
|
1140
1143
|
contextWindow: OLLAMA_DEFAULT_CONTEXT_WINDOW,
|
|
1141
|
-
maxTokens: OLLAMA_DEFAULT_MAX_TOKENS
|
|
1144
|
+
maxTokens: OLLAMA_DEFAULT_MAX_TOKENS,
|
|
1145
|
+
params: { streaming: false }
|
|
1142
1146
|
};
|
|
1143
1147
|
});
|
|
1144
1148
|
} catch (error) {
|
|
@@ -1480,6 +1484,11 @@ async function resolveImplicitBedrockProvider(params) {
|
|
|
1480
1484
|
|
|
1481
1485
|
//#endregion
|
|
1482
1486
|
//#region src/agents/model-selection.ts
|
|
1487
|
+
const ANTHROPIC_MODEL_ALIASES = {
|
|
1488
|
+
"opus-4.6": "claude-opus-4-6",
|
|
1489
|
+
"opus-4.5": "claude-opus-4-5",
|
|
1490
|
+
"sonnet-4.5": "claude-sonnet-4-5"
|
|
1491
|
+
};
|
|
1483
1492
|
function normalizeAliasKey(value) {
|
|
1484
1493
|
return value.trim().toLowerCase();
|
|
1485
1494
|
}
|
|
@@ -1504,10 +1513,7 @@ function isCliProvider(provider, cfg) {
|
|
|
1504
1513
|
function normalizeAnthropicModelId(model) {
|
|
1505
1514
|
const trimmed = model.trim();
|
|
1506
1515
|
if (!trimmed) return trimmed;
|
|
1507
|
-
|
|
1508
|
-
if (lower === "opus-4.5") return "claude-opus-4-5";
|
|
1509
|
-
if (lower === "sonnet-4.5") return "claude-sonnet-4-5";
|
|
1510
|
-
return trimmed;
|
|
1516
|
+
return ANTHROPIC_MODEL_ALIASES[trimmed.toLowerCase()] ?? trimmed;
|
|
1511
1517
|
}
|
|
1512
1518
|
function normalizeProviderModelId(provider, model) {
|
|
1513
1519
|
if (provider === "anthropic") return normalizeAnthropicModelId(model);
|
|
@@ -1533,6 +1539,21 @@ function parseModelRef(raw, defaultProvider) {
|
|
|
1533
1539
|
model: normalizeProviderModelId(provider, model)
|
|
1534
1540
|
};
|
|
1535
1541
|
}
|
|
1542
|
+
function resolveAllowlistModelKey(raw, defaultProvider) {
|
|
1543
|
+
const parsed = parseModelRef(raw, defaultProvider);
|
|
1544
|
+
if (!parsed) return null;
|
|
1545
|
+
return modelKey(parsed.provider, parsed.model);
|
|
1546
|
+
}
|
|
1547
|
+
function buildConfiguredAllowlistKeys(params) {
|
|
1548
|
+
const rawAllowlist = Object.keys(params.cfg?.agents?.defaults?.models ?? {});
|
|
1549
|
+
if (rawAllowlist.length === 0) return null;
|
|
1550
|
+
const keys = /* @__PURE__ */ new Set();
|
|
1551
|
+
for (const raw of rawAllowlist) {
|
|
1552
|
+
const key = resolveAllowlistModelKey(String(raw ?? ""), params.defaultProvider);
|
|
1553
|
+
if (key) keys.add(key);
|
|
1554
|
+
}
|
|
1555
|
+
return keys.size > 0 ? keys : null;
|
|
1556
|
+
}
|
|
1536
1557
|
function buildModelAliasIndex(params) {
|
|
1537
1558
|
const byAlias = /* @__PURE__ */ new Map();
|
|
1538
1559
|
const byKey = /* @__PURE__ */ new Map();
|
|
@@ -2910,4 +2931,8 @@ function orderProfilesByMode(order, store) {
|
|
|
2910
2931
|
}
|
|
2911
2932
|
|
|
2912
2933
|
//#endregion
|
|
2913
|
-
|
|
2934
|
+
//#region src/agents/auth-profiles.ts
|
|
2935
|
+
var auth_profiles_exports = /* @__PURE__ */ __exportAll({ ensureAuthProfileStore: () => ensureAuthProfileStore });
|
|
2936
|
+
|
|
2937
|
+
//#endregion
|
|
2938
|
+
export { getApiKeyForModel as $, parseModelRef as A, normalizeGoogleModelId as B, buildAllowedModelSet as C, isCliProvider as D, getModelRefStatus as E, resolveHooksGmailModel as F, VENICE_BASE_URL as G, resolveImplicitBedrockProvider as H, resolveModelRefFromString as I, buildVeniceModelDefinition as J, VENICE_DEFAULT_MODEL_REF as K, resolveThinkingDefault as L, resolveAllowlistModelKey as M, resolveConfiguredModelRef as N, modelKey as O, resolveDefaultModelForAgent as P, buildSyntheticModelDefinition as Q, XIAOMI_DEFAULT_MODEL_ID as R, resolveOpenClawAgentDir as S, buildModelAliasIndex as T, resolveImplicitCopilotProvider as U, normalizeProviders as V, resolveImplicitProviders as W, SYNTHETIC_DEFAULT_MODEL_REF as X, SYNTHETIC_BASE_URL as Y, SYNTHETIC_MODEL_CATALOG as Z, ensureAuthProfileStore as _, DEFAULT_PROVIDER as _t, markAuthProfileUsed as a, resolveModelAuthMode as at, resolveAuthStorePath as b, CODEX_CLI_PROFILE_ID as bt, CHUTES_AUTHORIZE_ENDPOINT as c, loadShellEnvFallback as ct, parseOAuthCallbackInput as d, shouldEnableShellEnvFallback as dt, getCustomProviderApiKey as et, repairOAuthProfileIdMismatch as f, CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF as ft, upsertAuthProfile as g, DEFAULT_MODEL as gt, setAuthProfileOrder as h, DEFAULT_CONTEXT_TOKENS as ht, markAuthProfileFailure as i, resolveEnvApiKey as it, resolveAllowedModelRef as j, normalizeProviderId as k, exchangeChutesCodeForTokens as l, resolveShellEnvFallbackTimeoutMs as lt, markAuthProfileGood as m, resolveCloudflareAiGatewayBaseUrl as mt, resolveAuthProfileOrder as n, resolveApiKeyForProvider as nt, resolveProfileUnusableUntilForDisplay as o, getShellEnvAppliedKeys as ot, listProfilesForProvider as p, buildCloudflareAiGatewayModelDefinition as pt, VENICE_MODEL_CATALOG as q, isProfileInCooldown as r, resolveAwsSdkEnvVarName as rt, resolveApiKeyForProfile as s, getShellPathFromLoginShell as st, auth_profiles_exports as t, requireApiKey as tt, generateChutesPkce as u, shouldDeferShellEnvFallback as ut, loadAuthProfileStore as v, resolveAuthProfileDisplayLabel as vt, buildConfiguredAllowlistKeys as w, resolveAuthStorePathForDisplay as x, updateAuthProfileStoreWithLock as y, CLAUDE_CLI_PROFILE_ID as yt, buildXiaomiProvider as z };
|
package/dist/build-info.json
CHANGED