@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,6 +1,13 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { r as resolveCliName, t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
2
|
+
import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
|
|
3
|
+
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-9ILYSmJ9.js";
|
|
4
|
+
import { j as VERSION } from "./config-CKLedg5Y.js";
|
|
5
|
+
import { Ln as trimLogTail } from "./loader-_Pj-TZS2.js";
|
|
6
|
+
import { t as note } from "./note-Ci08TSbV.js";
|
|
7
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BbhA_JbG.js";
|
|
8
|
+
import { g as parseSemver } from "./daemon-runtime-BCn_QIHK.js";
|
|
9
|
+
import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-ND2rUbQO.js";
|
|
10
|
+
import { spawnSync } from "node:child_process";
|
|
4
11
|
import path from "node:path";
|
|
5
12
|
import os from "node:os";
|
|
6
13
|
import fs from "node:fs/promises";
|
|
@@ -389,6 +396,163 @@ async function checkUpdateStatus(params) {
|
|
|
389
396
|
};
|
|
390
397
|
}
|
|
391
398
|
|
|
399
|
+
//#endregion
|
|
400
|
+
//#region src/commands/doctor-completion.ts
|
|
401
|
+
/** Generate the completion cache by spawning the CLI. */
|
|
402
|
+
async function generateCompletionCache() {
|
|
403
|
+
const root = await resolveOpenClawPackageRoot({
|
|
404
|
+
moduleUrl: import.meta.url,
|
|
405
|
+
argv1: process.argv[1],
|
|
406
|
+
cwd: process.cwd()
|
|
407
|
+
});
|
|
408
|
+
if (!root) return false;
|
|
409
|
+
const binPath = path.join(root, "openclaw.mjs");
|
|
410
|
+
return spawnSync(process.execPath, [
|
|
411
|
+
binPath,
|
|
412
|
+
"completion",
|
|
413
|
+
"--write-state"
|
|
414
|
+
], {
|
|
415
|
+
cwd: root,
|
|
416
|
+
env: process.env,
|
|
417
|
+
encoding: "utf-8"
|
|
418
|
+
}).status === 0;
|
|
419
|
+
}
|
|
420
|
+
/** Check the status of shell completion for the current shell. */
|
|
421
|
+
async function checkShellCompletionStatus(binName = "openclaw") {
|
|
422
|
+
const shell = resolveShellFromEnv();
|
|
423
|
+
return {
|
|
424
|
+
shell,
|
|
425
|
+
profileInstalled: await isCompletionInstalled(shell, binName),
|
|
426
|
+
cacheExists: await completionCacheExists(shell, binName),
|
|
427
|
+
cachePath: resolveCompletionCachePath(shell, binName),
|
|
428
|
+
usesSlowPattern: await usesSlowDynamicCompletion(shell, binName)
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Doctor check for shell completion.
|
|
433
|
+
* - If profile uses slow dynamic pattern: upgrade to cached version
|
|
434
|
+
* - If profile has completion but no cache: auto-generate cache and upgrade profile
|
|
435
|
+
* - If no completion at all: prompt to install (with user confirmation)
|
|
436
|
+
*/
|
|
437
|
+
async function doctorShellCompletion(runtime, prompter, options = {}) {
|
|
438
|
+
const cliName = resolveCliName();
|
|
439
|
+
const status = await checkShellCompletionStatus(cliName);
|
|
440
|
+
if (status.usesSlowPattern) {
|
|
441
|
+
note(`Your ${status.shell} profile uses slow dynamic completion (source <(...)).\nUpgrading to cached completion for faster shell startup...`, "Shell completion");
|
|
442
|
+
if (!status.cacheExists) {
|
|
443
|
+
if (!await generateCompletionCache()) {
|
|
444
|
+
note(`Failed to generate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
await installCompletion(status.shell, true, cliName);
|
|
449
|
+
note(`Shell completion upgraded. Restart your shell or run: source ~/.${status.shell === "zsh" ? "zshrc" : status.shell === "bash" ? "bashrc" : "config/fish/config.fish"}`, "Shell completion");
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
if (status.profileInstalled && !status.cacheExists) {
|
|
453
|
+
note(`Shell completion is configured in your ${status.shell} profile but the cache is missing.\nRegenerating cache...`, "Shell completion");
|
|
454
|
+
if (await generateCompletionCache()) note(`Completion cache regenerated at ${status.cachePath}`, "Shell completion");
|
|
455
|
+
else note(`Failed to regenerate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (!status.profileInstalled) {
|
|
459
|
+
if (options.nonInteractive) return;
|
|
460
|
+
if (await prompter.confirm({
|
|
461
|
+
message: `Enable ${status.shell} shell completion for ${cliName}?`,
|
|
462
|
+
initialValue: true
|
|
463
|
+
})) {
|
|
464
|
+
if (!await generateCompletionCache()) {
|
|
465
|
+
note(`Failed to generate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
await installCompletion(status.shell, true, cliName);
|
|
469
|
+
note(`Shell completion installed. Restart your shell or run: source ~/.${status.shell === "zsh" ? "zshrc" : status.shell === "bash" ? "bashrc" : "config/fish/config.fish"}`, "Shell completion");
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Ensure completion cache exists. Used during onboarding/update to fix
|
|
475
|
+
* cases where profile has completion but no cache.
|
|
476
|
+
* This is a silent fix - no prompts.
|
|
477
|
+
*/
|
|
478
|
+
async function ensureCompletionCacheExists(binName = "openclaw") {
|
|
479
|
+
if (await completionCacheExists(resolveShellFromEnv(), binName)) return true;
|
|
480
|
+
return generateCompletionCache();
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
//#endregion
|
|
484
|
+
//#region src/commands/status.update.ts
|
|
485
|
+
async function getUpdateCheckResult(params) {
|
|
486
|
+
return await checkUpdateStatus({
|
|
487
|
+
root: await resolveOpenClawPackageRoot({
|
|
488
|
+
moduleUrl: import.meta.url,
|
|
489
|
+
argv1: process.argv[1],
|
|
490
|
+
cwd: process.cwd()
|
|
491
|
+
}),
|
|
492
|
+
timeoutMs: params.timeoutMs,
|
|
493
|
+
fetchGit: params.fetchGit,
|
|
494
|
+
includeRegistry: params.includeRegistry
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
function resolveUpdateAvailability(update) {
|
|
498
|
+
const latestVersion = update.registry?.latestVersion ?? null;
|
|
499
|
+
const registryCmp = latestVersion ? compareSemverStrings(VERSION, latestVersion) : null;
|
|
500
|
+
const hasRegistryUpdate = registryCmp != null && registryCmp < 0;
|
|
501
|
+
const gitBehind = update.installKind === "git" && typeof update.git?.behind === "number" ? update.git.behind : null;
|
|
502
|
+
const hasGitUpdate = gitBehind != null && gitBehind > 0;
|
|
503
|
+
return {
|
|
504
|
+
available: hasGitUpdate || hasRegistryUpdate,
|
|
505
|
+
hasGitUpdate,
|
|
506
|
+
hasRegistryUpdate,
|
|
507
|
+
latestVersion: hasRegistryUpdate ? latestVersion : null,
|
|
508
|
+
gitBehind
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
function formatUpdateAvailableHint(update) {
|
|
512
|
+
const availability = resolveUpdateAvailability(update);
|
|
513
|
+
if (!availability.available) return null;
|
|
514
|
+
const details = [];
|
|
515
|
+
if (availability.hasGitUpdate && availability.gitBehind != null) details.push(`git behind ${availability.gitBehind}`);
|
|
516
|
+
if (availability.hasRegistryUpdate && availability.latestVersion) details.push(`npm ${availability.latestVersion}`);
|
|
517
|
+
return `Update available${details.length > 0 ? ` (${details.join(" · ")})` : ""}. Run: ${formatCliCommand("openclaw update")}`;
|
|
518
|
+
}
|
|
519
|
+
function formatUpdateOneLiner(update) {
|
|
520
|
+
const parts = [];
|
|
521
|
+
if (update.installKind === "git" && update.git) {
|
|
522
|
+
const branch = update.git.branch ? `git ${update.git.branch}` : "git";
|
|
523
|
+
parts.push(branch);
|
|
524
|
+
if (update.git.upstream) parts.push(`↔ ${update.git.upstream}`);
|
|
525
|
+
if (update.git.dirty === true) parts.push("dirty");
|
|
526
|
+
if (update.git.behind != null && update.git.ahead != null) {
|
|
527
|
+
if (update.git.behind === 0 && update.git.ahead === 0) parts.push("up to date");
|
|
528
|
+
else if (update.git.behind > 0 && update.git.ahead === 0) parts.push(`behind ${update.git.behind}`);
|
|
529
|
+
else if (update.git.behind === 0 && update.git.ahead > 0) parts.push(`ahead ${update.git.ahead}`);
|
|
530
|
+
else if (update.git.behind > 0 && update.git.ahead > 0) parts.push(`diverged (ahead ${update.git.ahead}, behind ${update.git.behind})`);
|
|
531
|
+
}
|
|
532
|
+
if (update.git.fetchOk === false) parts.push("fetch failed");
|
|
533
|
+
if (update.registry?.latestVersion) {
|
|
534
|
+
const cmp = compareSemverStrings(VERSION, update.registry.latestVersion);
|
|
535
|
+
if (cmp === 0) parts.push(`npm latest ${update.registry.latestVersion}`);
|
|
536
|
+
else if (cmp != null && cmp < 0) parts.push(`npm update ${update.registry.latestVersion}`);
|
|
537
|
+
else parts.push(`npm latest ${update.registry.latestVersion} (local newer)`);
|
|
538
|
+
} else if (update.registry?.error) parts.push("npm latest unknown");
|
|
539
|
+
} else {
|
|
540
|
+
parts.push(update.packageManager !== "unknown" ? update.packageManager : "pkg");
|
|
541
|
+
if (update.registry?.latestVersion) {
|
|
542
|
+
const cmp = compareSemverStrings(VERSION, update.registry.latestVersion);
|
|
543
|
+
if (cmp === 0) parts.push(`npm latest ${update.registry.latestVersion}`);
|
|
544
|
+
else if (cmp != null && cmp < 0) parts.push(`npm update ${update.registry.latestVersion}`);
|
|
545
|
+
else parts.push(`npm latest ${update.registry.latestVersion} (local newer)`);
|
|
546
|
+
} else if (update.registry?.error) parts.push("npm latest unknown");
|
|
547
|
+
}
|
|
548
|
+
if (update.deps) {
|
|
549
|
+
if (update.deps.status === "ok") parts.push("deps ok");
|
|
550
|
+
if (update.deps.status === "missing") parts.push("deps missing");
|
|
551
|
+
if (update.deps.status === "stale") parts.push("deps stale");
|
|
552
|
+
}
|
|
553
|
+
return `Update: ${parts.join(" · ")}`;
|
|
554
|
+
}
|
|
555
|
+
|
|
392
556
|
//#endregion
|
|
393
557
|
//#region src/infra/update-global.ts
|
|
394
558
|
const PRIMARY_PACKAGE_NAME = "openclaw";
|
|
@@ -976,12 +1140,12 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
976
1140
|
const depsStep = await runStep(step(`preflight deps install (${shortSha})`, managerInstallArgs(manager), worktreeDir));
|
|
977
1141
|
steps.push(depsStep);
|
|
978
1142
|
if (depsStep.exitCode !== 0) continue;
|
|
979
|
-
const lintStep = await runStep(step(`preflight lint (${shortSha})`, managerScriptArgs(manager, "lint"), worktreeDir));
|
|
980
|
-
steps.push(lintStep);
|
|
981
|
-
if (lintStep.exitCode !== 0) continue;
|
|
982
1143
|
const buildStep = await runStep(step(`preflight build (${shortSha})`, managerScriptArgs(manager, "build"), worktreeDir));
|
|
983
1144
|
steps.push(buildStep);
|
|
984
1145
|
if (buildStep.exitCode !== 0) continue;
|
|
1146
|
+
const lintStep = await runStep(step(`preflight lint (${shortSha})`, managerScriptArgs(manager, "lint"), worktreeDir));
|
|
1147
|
+
steps.push(lintStep);
|
|
1148
|
+
if (lintStep.exitCode !== 0) continue;
|
|
985
1149
|
selectedSha = sha;
|
|
986
1150
|
break;
|
|
987
1151
|
}
|
|
@@ -1129,17 +1293,90 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
1129
1293
|
steps.push(buildStep);
|
|
1130
1294
|
const uiBuildStep = await runStep(step("ui:build", managerScriptArgs(manager, "ui:build"), gitRoot));
|
|
1131
1295
|
steps.push(uiBuildStep);
|
|
1132
|
-
const
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1296
|
+
const doctorEntry = path.join(gitRoot, "openclaw.mjs");
|
|
1297
|
+
if (!await fs.stat(doctorEntry).then(() => true).catch(() => false)) {
|
|
1298
|
+
steps.push({
|
|
1299
|
+
name: "openclaw doctor entry",
|
|
1300
|
+
command: `verify ${doctorEntry}`,
|
|
1301
|
+
cwd: gitRoot,
|
|
1302
|
+
durationMs: 0,
|
|
1303
|
+
exitCode: 1,
|
|
1304
|
+
stderrTail: `missing ${doctorEntry}`
|
|
1305
|
+
});
|
|
1306
|
+
return {
|
|
1307
|
+
status: "error",
|
|
1308
|
+
mode: "git",
|
|
1309
|
+
root: gitRoot,
|
|
1310
|
+
reason: "doctor-entry-missing",
|
|
1311
|
+
before: {
|
|
1312
|
+
sha: beforeSha,
|
|
1313
|
+
version: beforeVersion
|
|
1314
|
+
},
|
|
1315
|
+
steps,
|
|
1316
|
+
durationMs: Date.now() - startedAt
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1319
|
+
const doctorStep = await runStep(step("openclaw doctor", [
|
|
1320
|
+
process.execPath,
|
|
1321
|
+
doctorEntry,
|
|
1322
|
+
"doctor",
|
|
1323
|
+
"--non-interactive"
|
|
1324
|
+
], gitRoot, { OPENCLAW_UPDATE_IN_PROGRESS: "1" }));
|
|
1142
1325
|
steps.push(doctorStep);
|
|
1326
|
+
if (!(await resolveControlUiDistIndexHealth({ root: gitRoot })).exists) {
|
|
1327
|
+
const repairArgv = managerScriptArgs(manager, "ui:build");
|
|
1328
|
+
const started = Date.now();
|
|
1329
|
+
const repairResult = await runCommand(repairArgv, {
|
|
1330
|
+
cwd: gitRoot,
|
|
1331
|
+
timeoutMs
|
|
1332
|
+
});
|
|
1333
|
+
const repairStep = {
|
|
1334
|
+
name: "ui:build (post-doctor repair)",
|
|
1335
|
+
command: repairArgv.join(" "),
|
|
1336
|
+
cwd: gitRoot,
|
|
1337
|
+
durationMs: Date.now() - started,
|
|
1338
|
+
exitCode: repairResult.code,
|
|
1339
|
+
stdoutTail: trimLogTail(repairResult.stdout, MAX_LOG_CHARS),
|
|
1340
|
+
stderrTail: trimLogTail(repairResult.stderr, MAX_LOG_CHARS)
|
|
1341
|
+
};
|
|
1342
|
+
steps.push(repairStep);
|
|
1343
|
+
if (repairResult.code !== 0) return {
|
|
1344
|
+
status: "error",
|
|
1345
|
+
mode: "git",
|
|
1346
|
+
root: gitRoot,
|
|
1347
|
+
reason: repairStep.name,
|
|
1348
|
+
before: {
|
|
1349
|
+
sha: beforeSha,
|
|
1350
|
+
version: beforeVersion
|
|
1351
|
+
},
|
|
1352
|
+
steps,
|
|
1353
|
+
durationMs: Date.now() - startedAt
|
|
1354
|
+
};
|
|
1355
|
+
const repairedUiIndexHealth = await resolveControlUiDistIndexHealth({ root: gitRoot });
|
|
1356
|
+
if (!repairedUiIndexHealth.exists) {
|
|
1357
|
+
const uiIndexPath = repairedUiIndexHealth.indexPath ?? resolveControlUiDistIndexPathForRoot(gitRoot);
|
|
1358
|
+
steps.push({
|
|
1359
|
+
name: "ui assets verify",
|
|
1360
|
+
command: `verify ${uiIndexPath}`,
|
|
1361
|
+
cwd: gitRoot,
|
|
1362
|
+
durationMs: 0,
|
|
1363
|
+
exitCode: 1,
|
|
1364
|
+
stderrTail: `missing ${uiIndexPath}`
|
|
1365
|
+
});
|
|
1366
|
+
return {
|
|
1367
|
+
status: "error",
|
|
1368
|
+
mode: "git",
|
|
1369
|
+
root: gitRoot,
|
|
1370
|
+
reason: "ui-assets-missing",
|
|
1371
|
+
before: {
|
|
1372
|
+
sha: beforeSha,
|
|
1373
|
+
version: beforeVersion
|
|
1374
|
+
},
|
|
1375
|
+
steps,
|
|
1376
|
+
durationMs: Date.now() - startedAt
|
|
1377
|
+
};
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1143
1380
|
const failedStep = steps.find((s) => s.exitCode !== 0);
|
|
1144
1381
|
const afterShaStep = await runStep(step("git rev-parse HEAD (after)", [
|
|
1145
1382
|
"git",
|
|
@@ -1218,4 +1455,4 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
1218
1455
|
}
|
|
1219
1456
|
|
|
1220
1457
|
//#endregion
|
|
1221
|
-
export { globalInstallArgs as a,
|
|
1458
|
+
export { resolveEffectiveUpdateChannel as C, normalizeUpdateChannel as S, resolveNpmChannelTag as _, globalInstallArgs as a, channelToNpmTag as b, formatUpdateOneLiner as c, checkShellCompletionStatus as d, doctorShellCompletion as f, fetchNpmTagVersion as g, compareSemverStrings as h, detectGlobalInstallManagerForRoot as i, getUpdateCheckResult as l, checkUpdateStatus as m, cleanupGlobalRenameDirs as n, resolveGlobalPackageRoot as o, ensureCompletionCacheExists as p, detectGlobalInstallManagerByPresence as r, formatUpdateAvailableHint as s, runGatewayUpdate as t, resolveUpdateAvailability as u, DEFAULT_GIT_CHANNEL as v, formatUpdateChannelLabel as x, DEFAULT_PACKAGE_CHANNEL as y };
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { q as trimLogTail } from "./reply-B8pOiUNN.js";
|
|
2
|
+
import { t as runCommandWithTimeout } from "./exec-HEWTMJ7j.js";
|
|
3
|
+
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-Cvotktkd.js";
|
|
4
|
+
import { r as resolveCliName, t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
5
|
+
import { j as VERSION } from "./config-CAuZ-EkU.js";
|
|
6
|
+
import { _ as parseSemver } from "./daemon-runtime-DMd0mgTK.js";
|
|
7
|
+
import { t as note } from "./note-B5HnoeZX.js";
|
|
8
|
+
import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-B3eStY5r.js";
|
|
9
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BPIeQDFy.js";
|
|
4
10
|
import os from "node:os";
|
|
5
11
|
import path from "node:path";
|
|
6
12
|
import fs from "node:fs/promises";
|
|
13
|
+
import { spawnSync } from "node:child_process";
|
|
7
14
|
|
|
8
15
|
//#region src/infra/update-channels.ts
|
|
9
16
|
const DEFAULT_PACKAGE_CHANNEL = "stable";
|
|
@@ -389,6 +396,163 @@ async function checkUpdateStatus(params) {
|
|
|
389
396
|
};
|
|
390
397
|
}
|
|
391
398
|
|
|
399
|
+
//#endregion
|
|
400
|
+
//#region src/commands/status.update.ts
|
|
401
|
+
async function getUpdateCheckResult(params) {
|
|
402
|
+
return await checkUpdateStatus({
|
|
403
|
+
root: await resolveOpenClawPackageRoot({
|
|
404
|
+
moduleUrl: import.meta.url,
|
|
405
|
+
argv1: process.argv[1],
|
|
406
|
+
cwd: process.cwd()
|
|
407
|
+
}),
|
|
408
|
+
timeoutMs: params.timeoutMs,
|
|
409
|
+
fetchGit: params.fetchGit,
|
|
410
|
+
includeRegistry: params.includeRegistry
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
function resolveUpdateAvailability(update) {
|
|
414
|
+
const latestVersion = update.registry?.latestVersion ?? null;
|
|
415
|
+
const registryCmp = latestVersion ? compareSemverStrings(VERSION, latestVersion) : null;
|
|
416
|
+
const hasRegistryUpdate = registryCmp != null && registryCmp < 0;
|
|
417
|
+
const gitBehind = update.installKind === "git" && typeof update.git?.behind === "number" ? update.git.behind : null;
|
|
418
|
+
const hasGitUpdate = gitBehind != null && gitBehind > 0;
|
|
419
|
+
return {
|
|
420
|
+
available: hasGitUpdate || hasRegistryUpdate,
|
|
421
|
+
hasGitUpdate,
|
|
422
|
+
hasRegistryUpdate,
|
|
423
|
+
latestVersion: hasRegistryUpdate ? latestVersion : null,
|
|
424
|
+
gitBehind
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
function formatUpdateAvailableHint(update) {
|
|
428
|
+
const availability = resolveUpdateAvailability(update);
|
|
429
|
+
if (!availability.available) return null;
|
|
430
|
+
const details = [];
|
|
431
|
+
if (availability.hasGitUpdate && availability.gitBehind != null) details.push(`git behind ${availability.gitBehind}`);
|
|
432
|
+
if (availability.hasRegistryUpdate && availability.latestVersion) details.push(`npm ${availability.latestVersion}`);
|
|
433
|
+
return `Update available${details.length > 0 ? ` (${details.join(" · ")})` : ""}. Run: ${formatCliCommand("openclaw update")}`;
|
|
434
|
+
}
|
|
435
|
+
function formatUpdateOneLiner(update) {
|
|
436
|
+
const parts = [];
|
|
437
|
+
if (update.installKind === "git" && update.git) {
|
|
438
|
+
const branch = update.git.branch ? `git ${update.git.branch}` : "git";
|
|
439
|
+
parts.push(branch);
|
|
440
|
+
if (update.git.upstream) parts.push(`↔ ${update.git.upstream}`);
|
|
441
|
+
if (update.git.dirty === true) parts.push("dirty");
|
|
442
|
+
if (update.git.behind != null && update.git.ahead != null) {
|
|
443
|
+
if (update.git.behind === 0 && update.git.ahead === 0) parts.push("up to date");
|
|
444
|
+
else if (update.git.behind > 0 && update.git.ahead === 0) parts.push(`behind ${update.git.behind}`);
|
|
445
|
+
else if (update.git.behind === 0 && update.git.ahead > 0) parts.push(`ahead ${update.git.ahead}`);
|
|
446
|
+
else if (update.git.behind > 0 && update.git.ahead > 0) parts.push(`diverged (ahead ${update.git.ahead}, behind ${update.git.behind})`);
|
|
447
|
+
}
|
|
448
|
+
if (update.git.fetchOk === false) parts.push("fetch failed");
|
|
449
|
+
if (update.registry?.latestVersion) {
|
|
450
|
+
const cmp = compareSemverStrings(VERSION, update.registry.latestVersion);
|
|
451
|
+
if (cmp === 0) parts.push(`npm latest ${update.registry.latestVersion}`);
|
|
452
|
+
else if (cmp != null && cmp < 0) parts.push(`npm update ${update.registry.latestVersion}`);
|
|
453
|
+
else parts.push(`npm latest ${update.registry.latestVersion} (local newer)`);
|
|
454
|
+
} else if (update.registry?.error) parts.push("npm latest unknown");
|
|
455
|
+
} else {
|
|
456
|
+
parts.push(update.packageManager !== "unknown" ? update.packageManager : "pkg");
|
|
457
|
+
if (update.registry?.latestVersion) {
|
|
458
|
+
const cmp = compareSemverStrings(VERSION, update.registry.latestVersion);
|
|
459
|
+
if (cmp === 0) parts.push(`npm latest ${update.registry.latestVersion}`);
|
|
460
|
+
else if (cmp != null && cmp < 0) parts.push(`npm update ${update.registry.latestVersion}`);
|
|
461
|
+
else parts.push(`npm latest ${update.registry.latestVersion} (local newer)`);
|
|
462
|
+
} else if (update.registry?.error) parts.push("npm latest unknown");
|
|
463
|
+
}
|
|
464
|
+
if (update.deps) {
|
|
465
|
+
if (update.deps.status === "ok") parts.push("deps ok");
|
|
466
|
+
if (update.deps.status === "missing") parts.push("deps missing");
|
|
467
|
+
if (update.deps.status === "stale") parts.push("deps stale");
|
|
468
|
+
}
|
|
469
|
+
return `Update: ${parts.join(" · ")}`;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
//#endregion
|
|
473
|
+
//#region src/commands/doctor-completion.ts
|
|
474
|
+
/** Generate the completion cache by spawning the CLI. */
|
|
475
|
+
async function generateCompletionCache() {
|
|
476
|
+
const root = await resolveOpenClawPackageRoot({
|
|
477
|
+
moduleUrl: import.meta.url,
|
|
478
|
+
argv1: process.argv[1],
|
|
479
|
+
cwd: process.cwd()
|
|
480
|
+
});
|
|
481
|
+
if (!root) return false;
|
|
482
|
+
const binPath = path.join(root, "openclaw.mjs");
|
|
483
|
+
return spawnSync(process.execPath, [
|
|
484
|
+
binPath,
|
|
485
|
+
"completion",
|
|
486
|
+
"--write-state"
|
|
487
|
+
], {
|
|
488
|
+
cwd: root,
|
|
489
|
+
env: process.env,
|
|
490
|
+
encoding: "utf-8"
|
|
491
|
+
}).status === 0;
|
|
492
|
+
}
|
|
493
|
+
/** Check the status of shell completion for the current shell. */
|
|
494
|
+
async function checkShellCompletionStatus(binName = "openclaw") {
|
|
495
|
+
const shell = resolveShellFromEnv();
|
|
496
|
+
return {
|
|
497
|
+
shell,
|
|
498
|
+
profileInstalled: await isCompletionInstalled(shell, binName),
|
|
499
|
+
cacheExists: await completionCacheExists(shell, binName),
|
|
500
|
+
cachePath: resolveCompletionCachePath(shell, binName),
|
|
501
|
+
usesSlowPattern: await usesSlowDynamicCompletion(shell, binName)
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Doctor check for shell completion.
|
|
506
|
+
* - If profile uses slow dynamic pattern: upgrade to cached version
|
|
507
|
+
* - If profile has completion but no cache: auto-generate cache and upgrade profile
|
|
508
|
+
* - If no completion at all: prompt to install (with user confirmation)
|
|
509
|
+
*/
|
|
510
|
+
async function doctorShellCompletion(runtime, prompter, options = {}) {
|
|
511
|
+
const cliName = resolveCliName();
|
|
512
|
+
const status = await checkShellCompletionStatus(cliName);
|
|
513
|
+
if (status.usesSlowPattern) {
|
|
514
|
+
note(`Your ${status.shell} profile uses slow dynamic completion (source <(...)).\nUpgrading to cached completion for faster shell startup...`, "Shell completion");
|
|
515
|
+
if (!status.cacheExists) {
|
|
516
|
+
if (!await generateCompletionCache()) {
|
|
517
|
+
note(`Failed to generate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
await installCompletion(status.shell, true, cliName);
|
|
522
|
+
note(`Shell completion upgraded. Restart your shell or run: source ~/.${status.shell === "zsh" ? "zshrc" : status.shell === "bash" ? "bashrc" : "config/fish/config.fish"}`, "Shell completion");
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
if (status.profileInstalled && !status.cacheExists) {
|
|
526
|
+
note(`Shell completion is configured in your ${status.shell} profile but the cache is missing.\nRegenerating cache...`, "Shell completion");
|
|
527
|
+
if (await generateCompletionCache()) note(`Completion cache regenerated at ${status.cachePath}`, "Shell completion");
|
|
528
|
+
else note(`Failed to regenerate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
if (!status.profileInstalled) {
|
|
532
|
+
if (options.nonInteractive) return;
|
|
533
|
+
if (await prompter.confirm({
|
|
534
|
+
message: `Enable ${status.shell} shell completion for ${cliName}?`,
|
|
535
|
+
initialValue: true
|
|
536
|
+
})) {
|
|
537
|
+
if (!await generateCompletionCache()) {
|
|
538
|
+
note(`Failed to generate completion cache. Run \`${cliName} completion --write-state\` manually.`, "Shell completion");
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
await installCompletion(status.shell, true, cliName);
|
|
542
|
+
note(`Shell completion installed. Restart your shell or run: source ~/.${status.shell === "zsh" ? "zshrc" : status.shell === "bash" ? "bashrc" : "config/fish/config.fish"}`, "Shell completion");
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Ensure completion cache exists. Used during onboarding/update to fix
|
|
548
|
+
* cases where profile has completion but no cache.
|
|
549
|
+
* This is a silent fix - no prompts.
|
|
550
|
+
*/
|
|
551
|
+
async function ensureCompletionCacheExists(binName = "openclaw") {
|
|
552
|
+
if (await completionCacheExists(resolveShellFromEnv(), binName)) return true;
|
|
553
|
+
return generateCompletionCache();
|
|
554
|
+
}
|
|
555
|
+
|
|
392
556
|
//#endregion
|
|
393
557
|
//#region src/infra/update-global.ts
|
|
394
558
|
const PRIMARY_PACKAGE_NAME = "openclaw";
|
|
@@ -976,12 +1140,12 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
976
1140
|
const depsStep = await runStep(step(`preflight deps install (${shortSha})`, managerInstallArgs(manager), worktreeDir));
|
|
977
1141
|
steps.push(depsStep);
|
|
978
1142
|
if (depsStep.exitCode !== 0) continue;
|
|
979
|
-
const lintStep = await runStep(step(`preflight lint (${shortSha})`, managerScriptArgs(manager, "lint"), worktreeDir));
|
|
980
|
-
steps.push(lintStep);
|
|
981
|
-
if (lintStep.exitCode !== 0) continue;
|
|
982
1143
|
const buildStep = await runStep(step(`preflight build (${shortSha})`, managerScriptArgs(manager, "build"), worktreeDir));
|
|
983
1144
|
steps.push(buildStep);
|
|
984
1145
|
if (buildStep.exitCode !== 0) continue;
|
|
1146
|
+
const lintStep = await runStep(step(`preflight lint (${shortSha})`, managerScriptArgs(manager, "lint"), worktreeDir));
|
|
1147
|
+
steps.push(lintStep);
|
|
1148
|
+
if (lintStep.exitCode !== 0) continue;
|
|
985
1149
|
selectedSha = sha;
|
|
986
1150
|
break;
|
|
987
1151
|
}
|
|
@@ -1129,17 +1293,90 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
1129
1293
|
steps.push(buildStep);
|
|
1130
1294
|
const uiBuildStep = await runStep(step("ui:build", managerScriptArgs(manager, "ui:build"), gitRoot));
|
|
1131
1295
|
steps.push(uiBuildStep);
|
|
1132
|
-
const
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1296
|
+
const doctorEntry = path.join(gitRoot, "openclaw.mjs");
|
|
1297
|
+
if (!await fs.stat(doctorEntry).then(() => true).catch(() => false)) {
|
|
1298
|
+
steps.push({
|
|
1299
|
+
name: "openclaw doctor entry",
|
|
1300
|
+
command: `verify ${doctorEntry}`,
|
|
1301
|
+
cwd: gitRoot,
|
|
1302
|
+
durationMs: 0,
|
|
1303
|
+
exitCode: 1,
|
|
1304
|
+
stderrTail: `missing ${doctorEntry}`
|
|
1305
|
+
});
|
|
1306
|
+
return {
|
|
1307
|
+
status: "error",
|
|
1308
|
+
mode: "git",
|
|
1309
|
+
root: gitRoot,
|
|
1310
|
+
reason: "doctor-entry-missing",
|
|
1311
|
+
before: {
|
|
1312
|
+
sha: beforeSha,
|
|
1313
|
+
version: beforeVersion
|
|
1314
|
+
},
|
|
1315
|
+
steps,
|
|
1316
|
+
durationMs: Date.now() - startedAt
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1319
|
+
const doctorStep = await runStep(step("openclaw doctor", [
|
|
1320
|
+
process.execPath,
|
|
1321
|
+
doctorEntry,
|
|
1322
|
+
"doctor",
|
|
1323
|
+
"--non-interactive"
|
|
1324
|
+
], gitRoot, { OPENCLAW_UPDATE_IN_PROGRESS: "1" }));
|
|
1142
1325
|
steps.push(doctorStep);
|
|
1326
|
+
if (!(await resolveControlUiDistIndexHealth({ root: gitRoot })).exists) {
|
|
1327
|
+
const repairArgv = managerScriptArgs(manager, "ui:build");
|
|
1328
|
+
const started = Date.now();
|
|
1329
|
+
const repairResult = await runCommand(repairArgv, {
|
|
1330
|
+
cwd: gitRoot,
|
|
1331
|
+
timeoutMs
|
|
1332
|
+
});
|
|
1333
|
+
const repairStep = {
|
|
1334
|
+
name: "ui:build (post-doctor repair)",
|
|
1335
|
+
command: repairArgv.join(" "),
|
|
1336
|
+
cwd: gitRoot,
|
|
1337
|
+
durationMs: Date.now() - started,
|
|
1338
|
+
exitCode: repairResult.code,
|
|
1339
|
+
stdoutTail: trimLogTail(repairResult.stdout, MAX_LOG_CHARS),
|
|
1340
|
+
stderrTail: trimLogTail(repairResult.stderr, MAX_LOG_CHARS)
|
|
1341
|
+
};
|
|
1342
|
+
steps.push(repairStep);
|
|
1343
|
+
if (repairResult.code !== 0) return {
|
|
1344
|
+
status: "error",
|
|
1345
|
+
mode: "git",
|
|
1346
|
+
root: gitRoot,
|
|
1347
|
+
reason: repairStep.name,
|
|
1348
|
+
before: {
|
|
1349
|
+
sha: beforeSha,
|
|
1350
|
+
version: beforeVersion
|
|
1351
|
+
},
|
|
1352
|
+
steps,
|
|
1353
|
+
durationMs: Date.now() - startedAt
|
|
1354
|
+
};
|
|
1355
|
+
const repairedUiIndexHealth = await resolveControlUiDistIndexHealth({ root: gitRoot });
|
|
1356
|
+
if (!repairedUiIndexHealth.exists) {
|
|
1357
|
+
const uiIndexPath = repairedUiIndexHealth.indexPath ?? resolveControlUiDistIndexPathForRoot(gitRoot);
|
|
1358
|
+
steps.push({
|
|
1359
|
+
name: "ui assets verify",
|
|
1360
|
+
command: `verify ${uiIndexPath}`,
|
|
1361
|
+
cwd: gitRoot,
|
|
1362
|
+
durationMs: 0,
|
|
1363
|
+
exitCode: 1,
|
|
1364
|
+
stderrTail: `missing ${uiIndexPath}`
|
|
1365
|
+
});
|
|
1366
|
+
return {
|
|
1367
|
+
status: "error",
|
|
1368
|
+
mode: "git",
|
|
1369
|
+
root: gitRoot,
|
|
1370
|
+
reason: "ui-assets-missing",
|
|
1371
|
+
before: {
|
|
1372
|
+
sha: beforeSha,
|
|
1373
|
+
version: beforeVersion
|
|
1374
|
+
},
|
|
1375
|
+
steps,
|
|
1376
|
+
durationMs: Date.now() - startedAt
|
|
1377
|
+
};
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1143
1380
|
const failedStep = steps.find((s) => s.exitCode !== 0);
|
|
1144
1381
|
const afterShaStep = await runStep(step("git rev-parse HEAD (after)", [
|
|
1145
1382
|
"git",
|
|
@@ -1218,4 +1455,4 @@ async function runGatewayUpdate(opts = {}) {
|
|
|
1218
1455
|
}
|
|
1219
1456
|
|
|
1220
1457
|
//#endregion
|
|
1221
|
-
export { globalInstallArgs as a,
|
|
1458
|
+
export { resolveEffectiveUpdateChannel as C, normalizeUpdateChannel as S, resolveNpmChannelTag as _, globalInstallArgs as a, channelToNpmTag as b, doctorShellCompletion as c, formatUpdateOneLiner as d, getUpdateCheckResult as f, fetchNpmTagVersion as g, compareSemverStrings as h, detectGlobalInstallManagerForRoot as i, ensureCompletionCacheExists as l, checkUpdateStatus as m, cleanupGlobalRenameDirs as n, resolveGlobalPackageRoot as o, resolveUpdateAvailability as p, detectGlobalInstallManagerByPresence as r, checkShellCompletionStatus as s, runGatewayUpdate as t, formatUpdateAvailableHint as u, DEFAULT_GIT_CHANNEL as v, formatUpdateChannelLabel as x, DEFAULT_PACKAGE_CHANNEL as y };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/utils/usage-format.ts
|
|
2
|
+
function formatTokenCount(value) {
|
|
3
|
+
if (value === void 0 || !Number.isFinite(value)) return "0";
|
|
4
|
+
const safe = Math.max(0, value);
|
|
5
|
+
if (safe >= 1e6) return `${(safe / 1e6).toFixed(1)}m`;
|
|
6
|
+
if (safe >= 1e3) return `${(safe / 1e3).toFixed(safe >= 1e4 ? 0 : 1)}k`;
|
|
7
|
+
return String(Math.round(safe));
|
|
8
|
+
}
|
|
9
|
+
function formatUsd(value) {
|
|
10
|
+
if (value === void 0 || !Number.isFinite(value)) return;
|
|
11
|
+
if (value >= 1) return `$${value.toFixed(2)}`;
|
|
12
|
+
if (value >= .01) return `$${value.toFixed(2)}`;
|
|
13
|
+
return `$${value.toFixed(4)}`;
|
|
14
|
+
}
|
|
15
|
+
function resolveModelCostConfig(params) {
|
|
16
|
+
const provider = params.provider?.trim();
|
|
17
|
+
const model = params.model?.trim();
|
|
18
|
+
if (!provider || !model) return;
|
|
19
|
+
return ((params.config?.models?.providers ?? {})[provider]?.models?.find((item) => item.id === model))?.cost;
|
|
20
|
+
}
|
|
21
|
+
const toNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
22
|
+
function estimateUsageCost(params) {
|
|
23
|
+
const usage = params.usage;
|
|
24
|
+
const cost = params.cost;
|
|
25
|
+
if (!usage || !cost) return;
|
|
26
|
+
const input = toNumber(usage.input);
|
|
27
|
+
const output = toNumber(usage.output);
|
|
28
|
+
const cacheRead = toNumber(usage.cacheRead);
|
|
29
|
+
const cacheWrite = toNumber(usage.cacheWrite);
|
|
30
|
+
const total = input * cost.input + output * cost.output + cacheRead * cost.cacheRead + cacheWrite * cost.cacheWrite;
|
|
31
|
+
if (!Number.isFinite(total)) return;
|
|
32
|
+
return total / 1e6;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { resolveModelCostConfig as i, formatTokenCount as n, formatUsd as r, estimateUsageCost as t };
|