@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.
Files changed (616) hide show
  1. package/CHANGELOG.md +50 -1
  2. package/LICENSE +1 -1
  3. package/README.md +50 -43
  4. package/dist/{accounts-BlHoTziG.js → accounts-BgZmhIm6.js} +4 -4
  5. package/dist/{accounts-B5QZU96b.js → accounts-Dto4p9zB.js} +2 -2
  6. package/dist/{acp-cli-DU_cVWbN.js → acp-cli-BOKabdeW.js} +15 -15
  7. package/dist/{acp-cli-O8LcQigE.js → acp-cli-BwcHtBDk.js} +19 -19
  8. package/dist/{agent-BBI-UGkN.js → agent-DztWhVCH.js} +20 -13
  9. package/dist/{agent-DuQt3QDO.js → agent-_H-0rbHV.js} +21 -14
  10. package/dist/{agent-scope-jm0ZdXwM.js → agent-scope-C9VjJXEK.js} +5 -180
  11. package/dist/{agent-scope-CrgUOY3f.js → agent-scope-CMs5Y7l-.js} +6 -181
  12. package/dist/{agent-scope-COnICB_7.js → agent-scope-Csu2B6AM.js} +2 -2
  13. package/dist/{audit-D-OqdjQu.js → audit-BWbjQmyv.js} +182 -15
  14. package/dist/{audit-CWGOX7Eh.js → audit-ZY6Dk5Ec.js} +183 -16
  15. package/dist/{auth-viF_w60n.js → auth-CbhB03Rz.js} +2 -2
  16. package/dist/{auth-DK3l201_.js → auth-DksjO6WG.js} +2 -2
  17. package/dist/{auth-health-DcKoxhDo.js → auth-health-C4bElkgf.js} +1 -1
  18. package/dist/{auth-health-Ba9GTScq.js → auth-health-Ctf-_JFE.js} +1 -1
  19. package/dist/{auth-profiles-CfFGCDJa.js → auth-profiles-CYBuGiBb.js} +38 -13
  20. package/dist/build-info.json +2 -2
  21. package/dist/{call-CfqL-4Nc.js → call-90HgQQ8o.js} +34 -8
  22. package/dist/{call-CPBhMXxo.js → call-BTbA5OB4.js} +35 -9
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/canvas-host/a2ui/a2ui.bundle.js +29 -44
  25. package/dist/{channel-options-eRR8_a8h.js → channel-options-DrUmtdd9.js} +3 -3
  26. package/dist/{channel-options-BCSvD6JM.js → channel-options-uftAnT5P.js} +7 -7
  27. package/dist/{channel-selection-BAwiO0li.js → channel-selection-CJWYmCLf.js} +2 -2
  28. package/dist/{channel-selection-BCn8_qun.js → channel-selection-PZuuCvrp.js} +2 -2
  29. package/dist/{channel-summary-BkqO8zZ9.js → channel-summary-D9nzC5WB.js} +8 -42
  30. package/dist/{channel-summary-C8GoEKgH.js → channel-summary-DUiKDBLv.js} +9 -43
  31. package/dist/{channels-cli-CBGINubh.js → channels-cli-PAlqhOZ7.js} +56 -54
  32. package/dist/{channels-cli-yQo-Rzw6.js → channels-cli-PPk5wwuy.js} +59 -57
  33. package/dist/{channels-status-issues-C9vMMPG0.js → channels-status-issues-CJ8PJgDc.js} +1 -1
  34. package/dist/{channels-status-issues-DRXQXvhY.js → channels-status-issues-CrS1r5sr.js} +1 -1
  35. package/dist/{chrome-DlqPCh1y.js → chrome-B3IuUad-.js} +2 -2
  36. package/dist/{chrome-D2LUApAY.js → chrome-BNSd7Bie.js} +5 -5
  37. package/dist/{clack-prompter-OmDa1Hm1.js → clack-prompter-CEKDd_Vg.js} +5 -5
  38. package/dist/{clack-prompter-BJuVh97L.js → clack-prompter-DuBVnTKy.js} +4 -4
  39. package/dist/cli/daemon-cli.js +1 -1
  40. package/dist/cli-DBAccB3n.js +86 -0
  41. package/dist/cli-DD5dW58-.js +89 -0
  42. package/dist/{client-zqMhLTAX.js → client-BYVbRnuQ.js} +13 -5
  43. package/dist/{client-cU7Xg1MO.js → client-CxbkcEZ7.js} +12 -4
  44. package/dist/{command-options-51bBgSJL.js → command-options-DUUINcz0.js} +3 -3
  45. package/dist/{commands-DMKDOFmC.js → commands-DAC7XMAT.js} +5 -4
  46. package/dist/completion-cli-BPIeQDFy.js +773 -0
  47. package/dist/{completion-cli-BoF86Oeq.js → completion-cli-BbhA_JbG.js} +62 -15
  48. package/dist/{config-qgIz1lbh.js → config-CAuZ-EkU.js} +93 -31
  49. package/dist/{config-CGsoho7J.js → config-CG73z4h6.js} +61 -28
  50. package/dist/{config-DCT1RAo6.js → config-CKLedg5Y.js} +92 -30
  51. package/dist/{config-guard-CJuPkD5Y.js → config-guard-a5ynrKd-.js} +181 -57
  52. package/dist/{configure-C1_0rFdQ.js → configure-B47GYdlB.js} +33 -23
  53. package/dist/{configure-D0OAmW2s.js → configure-ChnTy7Jz.js} +31 -21
  54. package/dist/{control-service-BW5sW2U1.js → control-service-CS61Road.js} +13 -6
  55. package/dist/{control-service-Ds9ompnU.js → control-service-D2E9NKqQ.js} +12 -5
  56. package/dist/control-ui/assets/{index-RwcW4Xl0.css → index-BoXosYY6.css} +1 -1
  57. package/dist/control-ui/assets/index-Dm6g1E26.js +7553 -0
  58. package/dist/control-ui/assets/index-Dm6g1E26.js.map +1 -0
  59. package/dist/control-ui/index.html +2 -2
  60. package/dist/{cron-cli-Bn_e3WGb.js → cron-cli-CssI71-c.js} +20 -19
  61. package/dist/{cron-cli-BVARiNrv.js → cron-cli-Ys53MyTg.js} +24 -23
  62. package/dist/{daemon-cli-fHXAapHL.js → daemon-cli-B6aLZ8OE.js} +28 -23
  63. package/dist/{daemon-cli-yy_MAYxv.js → daemon-cli-CMKd_D6h.js} +26 -21
  64. package/dist/{daemon-runtime-vNkYv9tq.js → daemon-runtime-BCn_QIHK.js} +64 -7
  65. package/dist/{daemon-runtime-ELWW7q0C.js → daemon-runtime-DMd0mgTK.js} +64 -7
  66. package/dist/{deliver-Bsvrattg.js → deliver-C3bnXkg5.js} +12 -10
  67. package/dist/{deliver-Dl8TEyHM.js → deliver-CZPhTA7x.js} +7 -5
  68. package/dist/{deliver-eE21zdeQ.js → deliver-Cau4HL7W.js} +11 -9
  69. package/dist/{deps-BrcOX0ht.js → deps-BG1LonF6.js} +2 -2
  70. package/dist/{deps-wXkiMwLZ.js → deps-ytXmI88x.js} +2 -2
  71. package/dist/{devices-cli-BjlwgE6B.js → devices-cli-Cm0ENrXH.js} +16 -16
  72. package/dist/{devices-cli-BVc_Ic5O.js → devices-cli-D_rnGkqO.js} +12 -12
  73. package/dist/{directory-cli-cc9ivzEM.js → directory-cli-CGLolzJC.js} +15 -15
  74. package/dist/{directory-cli-CULRQACb.js → directory-cli-CTtv_AB7.js} +19 -19
  75. package/dist/{dispatcher-BNB5aCZ6.js → dispatcher-6oI-H42S.js} +1 -1
  76. package/dist/{dns-cli-BwDdBlsK.js → dns-cli-BRkJGLqK.js} +15 -15
  77. package/dist/{dns-cli-B79COhmu.js → dns-cli-CoeI4817.js} +11 -11
  78. package/dist/{docs-cli-BM55jf4Y.js → docs-cli-BH9bMx3a.js} +7 -7
  79. package/dist/{docs-cli-t7IEzxr8.js → docs-cli-Bh1Coji2.js} +10 -10
  80. package/dist/{doctor-CT9JPoCt.js → doctor-CwSrWRCp.js} +43 -38
  81. package/dist/{doctor-OmfNRlMS.js → doctor-JnMryC_M.js} +40 -35
  82. package/dist/entry.js +12 -8
  83. package/dist/{env-DOcCob95.js → env-0_mKbEWW.js} +2 -2
  84. package/dist/{errors-DdT2Dtkb.js → errors-CZ9opC6L.js} +4 -4
  85. package/dist/{exec-B7WKla_0.js → exec-BMnoMcZW.js} +1 -1
  86. package/dist/{exec-CTo4hK94.js → exec-HEWTMJ7j.js} +1 -1
  87. package/dist/{exec-approvals-WdYFyy5N.js → exec-approvals-BCEFzcbC.js} +19 -2
  88. package/dist/{exec-approvals-CK-Umdr3.js → exec-approvals-DZixgolZ.js} +19 -2
  89. package/dist/{exec-approvals-cli-DD_z4fL9.js → exec-approvals-cli-D7aVv5hN.js} +19 -19
  90. package/dist/{exec-approvals-cli-BK2toX2b.js → exec-approvals-cli-DzLp5G7t.js} +23 -23
  91. package/dist/extensionAPI.js +1186 -267
  92. package/dist/{gateway-cli-BCC0T5iY.js → gateway-cli-DHP5DRUH.js} +910 -199
  93. package/dist/{gateway-cli-BTlr6Uwl.js → gateway-cli-ape0pnBU.js} +912 -202
  94. package/dist/{gateway-rpc-CMAcradB.js → gateway-rpc-C8rNIC0P.js} +3 -3
  95. package/dist/{gateway-rpc-SvVB4Fmv.js → gateway-rpc-CWnTaSEY.js} +3 -3
  96. package/dist/{github-copilot-auth-BHLcQ1sN.js → github-copilot-auth-B_lK1g__.js} +173 -87
  97. package/dist/{github-copilot-auth-BoRchp_Q.js → github-copilot-auth-C8Uf0Q03.js} +174 -88
  98. package/dist/{github-copilot-token-BEtihsn6.js → github-copilot-token-B3SA95yo.js} +8 -2
  99. package/dist/{github-copilot-token-rP-6QdKv.js → github-copilot-token-SLWintYd.js} +7 -1
  100. package/dist/{github-copilot-token-VZsS4013.js → github-copilot-token-pGSmVaW-.js} +8 -2
  101. package/dist/{gmail-setup-utils-4czdWNCN.js → gmail-setup-utils-Bi6W14MK.js} +3 -3
  102. package/dist/{gmail-setup-utils-B1CTmT2V.js → gmail-setup-utils-QpN7TEXS.js} +4 -4
  103. package/dist/{health-format-B4_A88V3.js → health-format-B3eStY5r.js} +215 -21
  104. package/dist/{health-format-Ct8J0fwc.js → health-format-ND2rUbQO.js} +213 -19
  105. package/dist/{help-format-CGcnDM3D.js → help-format-Bozi4K9H.js} +1 -1
  106. package/dist/{helpers-DfgBr1D5.js → helpers-BIc7L8EF.js} +1 -1
  107. package/dist/{helpers-Cw9kFCkw.js → helpers-D66_XoIz.js} +1 -1
  108. package/dist/{hooks-cli-NmkXLKmj.js → hooks-cli-BMu_-4Ru.js} +49 -49
  109. package/dist/{hooks-cli-B-28F__A.js → hooks-cli-CmeQxEOM.js} +45 -45
  110. package/dist/{hooks-status-I3Y60zVN.js → hooks-status-CKmUPU-M.js} +3 -3
  111. package/dist/{hooks-status-XV9oQICf.js → hooks-status-DepPyfBb.js} +4 -4
  112. package/dist/{image-ClOB6QDJ.js → image-Ca_PtqY7.js} +8 -6
  113. package/dist/{image-BYmtfVH8.js → image-CgBndiQy.js} +9 -7
  114. package/dist/{image-CXg7Z0WD.js → image-nRwqkmtf.js} +8 -6
  115. package/dist/index.js +231 -105
  116. package/dist/{installs-C5cjVarj.js → installs-BhEjOqPy.js} +43 -6
  117. package/dist/{installs-W4Pc1LJz.js → installs-DsJkyWfL.js} +43 -6
  118. package/dist/{links-C9fyAH-V.js → links-B5pRdmo1.js} +1 -1
  119. package/dist/{links-jGisPfXW.js → links-D0uzJbi6.js} +1 -1
  120. package/dist/{loader-BYWxo-_j.js → loader-_Pj-TZS2.js} +920 -491
  121. package/dist/{logging-BnUUuH3y.js → logging-Cc7m6PTv.js} +1 -1
  122. package/dist/{logging-CLCWl7Iu.js → logging-TXWhN8jG.js} +2 -2
  123. package/dist/{login-qr-C2H_iQJU.js → login-qr-BIlr0vwe.js} +12 -7
  124. package/dist/{login-qr-7WOtj6zE.js → login-qr-CcOWO_dR.js} +9 -4
  125. package/dist/{login-qr-sEcxw1_U.js → login-qr-Cmsf7BGt.js} +11 -6
  126. package/dist/{logs-cli-C5v4fEDj.js → logs-cli-5L3NxTsc.js} +19 -19
  127. package/dist/{logs-cli-nVwK5g60.js → logs-cli-DtiFFkZL.js} +15 -15
  128. package/dist/{manager-rDmdE7O9.js → manager-BXiIQku7.js} +9 -7
  129. package/dist/{manager-JSP5pLyv.js → manager-C4ILl-d3.js} +10 -8
  130. package/dist/{manager-BArueSTR.js → manager-LpytrxUw.js} +12 -10
  131. package/dist/{manifest-registry-tuAcHxrV.js → manifest-registry-C69Z-I4v.js} +1 -1
  132. package/dist/{manifest-registry-BFpLJJDB.js → manifest-registry-DHaa1SJb.js} +1 -1
  133. package/dist/{message-channel-CAFcg7mw.js → message-channel-BlgPSDAh.js} +6 -1
  134. package/dist/{message-channel-CQGWXVL4.js → message-channel-Bpfe5l5f.js} +7 -2
  135. package/dist/{model-selection-Cp1maz7B.js → model-selection-DMUrNhQP.js} +41 -16
  136. package/dist/{model-selection-Cs1y6OBv.js → model-selection-mzTqrNoj.js} +38 -14
  137. package/dist/{models-cli-n9a8pESx.js → models-cli-DHzyyLvp.js} +49 -49
  138. package/dist/{models-cli-DGnLcr4X.js → models-cli-EhrWjNLH.js} +53 -53
  139. package/dist/{net-DaJz_a4n.js → net-C8YRVt16.js} +1 -1
  140. package/dist/{net-DeiCIMU6.js → net-CWMMy37F.js} +1 -1
  141. package/dist/{node-cli-rtEq-YyU.js → node-cli-2oYmIWJt.js} +30 -30
  142. package/dist/{node-cli-AOO0HsM1.js → node-cli-DH7Ykym5.js} +26 -26
  143. package/dist/{node-service-CjtBRyjp.js → node-service-BAYHx0E7.js} +2 -2
  144. package/dist/{node-service-BW_LhY5w.js → node-service-Lc1LlnFH.js} +2 -2
  145. package/dist/{nodes-cli-Coxj5hDA.js → nodes-cli-Bc5K-0Lt.js} +22 -22
  146. package/dist/{nodes-cli-ChBsNXzz.js → nodes-cli-hT8yYD7S.js} +18 -18
  147. package/dist/{nodes-screen-Ln98EX_f.js → nodes-screen-DGlNPbk4.js} +2 -2
  148. package/dist/{nodes-screen-DOhGEibx.js → nodes-screen-DT5HvhJV.js} +2 -2
  149. package/dist/{note-BFpD-42H.js → note-B5HnoeZX.js} +2 -2
  150. package/dist/{note-CBiVaqG7.js → note-Ci08TSbV.js} +1 -1
  151. package/dist/{onboard-channels-CF7lTDNu.js → onboard-channels-D-ZQTy5V.js} +9 -8
  152. package/dist/{onboard-channels-CJCy7TTQ.js → onboard-channels-DKT27PdN.js} +10 -9
  153. package/dist/{onboard-skills-DdFGj9pt.js → onboard-skills-YobctE-R.js} +259 -194
  154. package/dist/{onboard-skills-fL84FI8F.js → onboard-skills-s8J5xbUr.js} +259 -194
  155. package/dist/{onboarding-DcN1avQK.js → onboarding-BP4-5uzE.js} +96 -60
  156. package/dist/{pairing-cli-DbP9KqPL.js → pairing-cli-C8KHRjaU.js} +15 -15
  157. package/dist/{pairing-cli-B7RQFp4r.js → pairing-cli-i7wiTmYC.js} +19 -19
  158. package/dist/{pairing-labels-DK2aLSd2.js → pairing-labels-BbydDT7w.js} +1 -1
  159. package/dist/{pairing-labels-C6I3dD-m.js → pairing-labels-CtqLxbG6.js} +1 -1
  160. package/dist/{pairing-store-BnMngoWQ.js → pairing-store-DFq7WtOv.js} +2 -2
  161. package/dist/{pairing-store-DMex6WWe.js → pairing-store-DTfv_FGA.js} +1 -1
  162. package/dist/{path-env-CuGC6r1F.js → path-env-DP3DsVge.js} +2 -2
  163. package/dist/{path-env-CUhrC5DA.js → path-env-h3xp5PqO.js} +1 -1
  164. package/dist/{paths-xPuk88Yf.js → paths-B4kigINg.js} +2 -2
  165. package/dist/{paths-50eo6DV6.js → paths-Bb0nwPeu.js} +2 -2
  166. package/dist/{paths-RvF0P6tQ.js → paths-CTg8F3AE.js} +1 -1
  167. package/dist/{pi-embedded-helpers-DJgCXZEz.js → pi-embedded-helpers-BB4uACeq.js} +175 -170
  168. package/dist/{pi-embedded-helpers-DiK8Qn1l.js → pi-embedded-helpers-BxqZh6U7.js} +43 -19
  169. package/dist/{pi-embedded-helpers-CC00lEFI.js → pi-embedded-helpers-DF8SAHU-.js} +175 -170
  170. package/dist/{pi-model-discovery-DjGamP_B.js → pi-model-discovery-CV2V1HHz.js} +8 -1
  171. package/dist/{pi-model-discovery-CnK2Dol8.js → pi-model-discovery-DzEIEgHL.js} +8 -1
  172. package/dist/{pi-model-discovery-CsRo-xMp.js → pi-model-discovery-EhM2JAQo.js} +8 -1
  173. package/dist/{pi-tools.policy-DleRi9eC.js → pi-tools.policy-BQ8N5y8a.js} +5 -4
  174. package/dist/{plugin-auto-enable-JQ63k0Ce.js → plugin-auto-enable-Ci7TBlH2.js} +5 -5
  175. package/dist/{plugin-auto-enable-CIVp3SAp.js → plugin-auto-enable-DyW8lHTT.js} +4 -4
  176. package/dist/plugin-sdk/index.d.ts +228 -283
  177. package/dist/plugin-sdk/index.js +22528 -69091
  178. package/dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js +37 -0
  179. package/dist/{plugins-TrKFfrLt.js → plugins-BUPpq5aS.js} +3 -2
  180. package/dist/{plugins-D1CxUobm.js → plugins-BYIWo0Cp.js} +5 -4
  181. package/dist/{plugins-cli-17wYux52.js → plugins-cli-CGfxctIx.js} +50 -49
  182. package/dist/{plugins-cli-VyQWn_LW.js → plugins-cli-Dr_R2-FY.js} +46 -45
  183. package/dist/{ports-B27T1uRn.js → ports-0V-Mu4ch.js} +2 -2
  184. package/dist/{program-BA9_uWfO.js → program-oR55MCAT.js} +84 -81
  185. package/dist/{progress-uNDQDtGB.js → progress-xpLtQsNY.js} +1 -1
  186. package/dist/{prompt-style-gfROyHgB.js → prompt-style-vzh0MGHs.js} +1 -1
  187. package/dist/{pw-ai-BC4dLE7k.js → pw-ai-B7Fvw8DW.js} +4 -4
  188. package/dist/{pw-ai-DlTBXZjY.js → pw-ai-DYpQO6HI.js} +6 -6
  189. package/dist/{pw-ai-BEqPnalN.js → pw-ai-tNPuRNn3.js} +4 -4
  190. package/dist/{qmd-manager-8xWxIGbO.js → qmd-manager-BKkFEEN_.js} +9 -8
  191. package/dist/{plugin-sdk/qmd-manager-DvkA01DP.js → qmd-manager-CF52nuBg.js} +6 -6
  192. package/dist/{qmd-manager-BSCOmXYZ.js → qmd-manager-Dub8jfbo.js} +7 -6
  193. package/dist/{register.subclis-CWWz9WdX.js → register.subclis-BpIR6Iqi.js} +36 -30
  194. package/dist/{reply-CoztdrN_.js → reply-B8pOiUNN.js} +935 -506
  195. package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
  196. package/dist/{routes-yI5QIzeL.js → routes-BSfXf8a5.js} +5 -5
  197. package/dist/{routes-Ds-tIZFJ.js → routes-DchZU3EK.js} +6 -6
  198. package/dist/{rpc-HF82_iLh.js → rpc-DqI3QH59.js} +3 -3
  199. package/dist/{rpc-HdKLb6jx.js → rpc-Vo2ACfn-.js} +3 -3
  200. package/dist/{run-main-B3krVvc1.js → run-main-DrVUUPHV.js} +84 -84
  201. package/dist/{sandbox-BXUfp_qv.js → sandbox-CV8VwPij.js} +36 -16
  202. package/dist/{sandbox-Cnq9TXEn.js → sandbox-DuqLKN5J.js} +34 -14
  203. package/dist/{sandbox-cli-C7j1V6tb.js → sandbox-cli-C0_Hrk7i.js} +25 -24
  204. package/dist/{sandbox-cli-CnS9JJlO.js → sandbox-cli-Ces6i3n2.js} +21 -20
  205. package/dist/{security-cli-Clg7RQT3.js → security-cli-CybLT9XS.js} +32 -30
  206. package/dist/{security-cli-BGd4NO4l.js → security-cli-T7yrd3lb.js} +28 -26
  207. package/dist/{server-context-D2cv-pIA.js → server-context-vChIAqjH.js} +6 -6
  208. package/dist/{server-context-CM_E6wD5.js → server-context-yKyxyxOJ.js} +5 -5
  209. package/dist/{server-node-events-IMwI538C.js → server-node-events-BR2vHqf6.js} +44 -43
  210. package/dist/{server-node-events-C5EqDe_U.js → server-node-events-D39FA0NG.js} +48 -47
  211. package/dist/{service-CAxAjHNB.js → service-BZesBIaG.js} +3 -3
  212. package/dist/{service-BoDHq_LN.js → service-_JwSmGSn.js} +2 -2
  213. package/dist/{service-audit-Bf33pqEM.js → service-audit-C-IA4omi.js} +6 -6
  214. package/dist/{service-audit-DBSAGhm8.js → service-audit-DDX1kO3k.js} +6 -6
  215. package/dist/session-cost-usage-BTXosU1k.js +692 -0
  216. package/dist/session-cost-usage-CBP4Hv9D.js +692 -0
  217. package/dist/session-key-CZkcvAtx.js +177 -0
  218. package/dist/session-key-Dm2EOhrH.js +177 -0
  219. package/dist/{shared-ChNOqAzp.js → shared-BmtNKsPq.js} +4 -4
  220. package/dist/{shared-D42-KbPa.js → shared-C1XLEyB0.js} +3 -3
  221. package/dist/{shared-xZjRQa6y.js → shared-C8_5pNbb.js} +4 -4
  222. package/dist/{shared-DBGw227P.js → shared-fnGLWyZ6.js} +3 -3
  223. package/dist/skill-scanner-BoGjHXUZ.js +255 -0
  224. package/dist/skill-scanner-Bp1D9gra.js +255 -0
  225. package/dist/{skills-DtwGIkTI.js → skills-CmU0Q92f.js} +3 -3
  226. package/dist/{skills-C4b1FA1e.js → skills-D5JDj3TR.js} +5 -5
  227. package/dist/{skills-cli-BPkuJAz9.js → skills-cli-C1yJvIkL.js} +16 -16
  228. package/dist/{skills-cli-b0ZmGlmh.js → skills-cli-DBC5zFat.js} +12 -12
  229. package/dist/{skills-status-CSCMqNZP.js → skills-status-CEvVUD3U.js} +3 -3
  230. package/dist/{skills-status-CWkBweWW.js → skills-status-DtXrj3fy.js} +2 -2
  231. package/dist/{status-BIWeu5mN.js → status-BRXuHUsK.js} +94 -58
  232. package/dist/{status-CcM6W8r4.js → status-BTGXSvZ1.js} +3 -3
  233. package/dist/{status-PjegR5Cv.js → status-DBZ5Z7ng.js} +4 -4
  234. package/dist/{subsystem-46MXi6Ip.js → subsystem-CAq3uyo7.js} +1 -1
  235. package/dist/{system-cli-B4FEIE5d.js → system-cli-Dqnt-b0D.js} +13 -13
  236. package/dist/{system-cli-BL_QZ1VP.js → system-cli-SJLtqI47.js} +17 -17
  237. package/dist/{systemd-DAgZTW06.js → systemd-8sIc6isV.js} +2 -2
  238. package/dist/{systemd-CNYEkRek.js → systemd-B-3NdMmA.js} +3 -3
  239. package/dist/{systemd-hints-CcgK8AJE.js → systemd-hints-DO88c_nD.js} +1 -1
  240. package/dist/{systemd-hints-okqOoOug.js → systemd-hints-Wim4Bq6j.js} +1 -1
  241. package/dist/{systemd-linger-CTe0ZDxD.js → systemd-linger-N-cIaegf.js} +8 -3
  242. package/dist/{systemd-linger-Cbkoh9qw.js → systemd-linger-SsSOsJST.js} +8 -3
  243. package/dist/{table-f0EgX-YI.js → table-CJSx0YID.js} +1 -1
  244. package/dist/{table-DuNe7Qes.js → table-CLtGjVsx.js} +2 -2
  245. package/dist/{tailscale-BUcKO8Rr.js → tailscale-9MusRvOi.js} +1 -1
  246. package/dist/{tailscale-Cvk3mQDZ.js → tailscale-BVGD9gSD.js} +2 -2
  247. package/dist/{tool-display-rIUh61kT.js → tool-display-BxZG0o1b.js} +2 -2
  248. package/dist/{tool-display-BMYWrp0L.js → tool-display-DmgKs6-V.js} +2 -2
  249. package/dist/{tui-cV-R-JXi.js → tui-DPorsF4z.js} +203 -75
  250. package/dist/{tui-DBmFYQTk.js → tui-XH6_v0qC.js} +204 -74
  251. package/dist/{tui-cli-B_CKOjZ1.js → tui-cli-DRSIBDgZ.js} +30 -29
  252. package/dist/{tui-cli-CVdJ28TX.js → tui-cli-DV_JAtnq.js} +26 -25
  253. package/dist/{update-BDyA5Iqy.js → update-DNAVcIQ7.js} +3 -3
  254. package/dist/{update-BIB5jGcv.js → update-DzMcwy1G.js} +3 -3
  255. package/dist/{update-cli-p49uMWby.js → update-cli-OAcZiYuA.js} +112 -27
  256. package/dist/{update-cli-C5vwquH_.js → update-cli-tQcy8mkI.js} +109 -23
  257. package/dist/{update-runner-8XFxQglY.js → update-runner-2i8_mIG5.js} +254 -17
  258. package/dist/{update-runner-s8Rs8ex3.js → update-runner-BDdk_K2S.js} +254 -17
  259. package/dist/usage-format-DvowRSs-.js +36 -0
  260. package/dist/usage-format-E3bMcUMV.js +36 -0
  261. package/dist/{utils-Dg0Xbl6w.js → utils-CKSrBNwq.js} +2 -2
  262. package/dist/{webhooks-cli-DkQGQ2ae.js → webhooks-cli-BztQHEco.js} +11 -11
  263. package/dist/{webhooks-cli-kRN8qR7B.js → webhooks-cli-ZAn97osC.js} +15 -15
  264. package/dist/{widearea-dns-BIhjVRG1.js → widearea-dns-CsSylzXH.js} +2 -2
  265. package/dist/{widearea-dns-D4yoSNNw.js → widearea-dns-D9Al4QRv.js} +2 -2
  266. package/dist/{ws-log-DQ6nkLys.js → ws-log-B7UNLFLC.js} +3 -3
  267. package/dist/{ws-log-C4IerKk4.js → ws-log-DJIXahf0.js} +2 -2
  268. package/dist/{wsl-DASmek7h.js → wsl-ATjkMwMA.js} +1 -1
  269. package/docs/.i18n/glossary.zh-CN.json +20 -0
  270. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  271. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  272. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  273. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  274. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  275. package/docs/bedrock.md +3 -3
  276. package/docs/channels/discord.md +2 -1
  277. package/docs/channels/feishu.md +72 -2
  278. package/docs/channels/telegram.md +19 -0
  279. package/docs/cli/devices.md +3 -0
  280. package/docs/cli/gateway.md +3 -0
  281. package/docs/cli/index.md +2 -0
  282. package/docs/cli/onboard.md +16 -2
  283. package/docs/concepts/features.md +53 -0
  284. package/docs/concepts/memory.md +1 -1
  285. package/docs/concepts/messages.md +1 -1
  286. package/docs/concepts/model-providers.md +11 -11
  287. package/docs/concepts/models.md +1 -1
  288. package/docs/concepts/multi-agent.md +2 -2
  289. package/docs/concepts/session.md +19 -3
  290. package/docs/docs.json +331 -182
  291. package/docs/gateway/cli-backends.md +7 -5
  292. package/docs/gateway/configuration-examples.md +4 -4
  293. package/docs/gateway/configuration.md +34 -16
  294. package/docs/gateway/heartbeat.md +61 -1
  295. package/docs/gateway/local-models.md +3 -3
  296. package/docs/gateway/network-model.md +17 -0
  297. package/docs/gateway/remote.md +3 -1
  298. package/docs/gateway/security/index.md +1 -1
  299. package/docs/help/faq.md +25 -26
  300. package/docs/help/submitting-a-pr.md +214 -0
  301. package/docs/help/submitting-an-issue.md +165 -0
  302. package/docs/index.md +127 -193
  303. package/docs/install/docker.md +2 -2
  304. package/docs/{platforms → install}/exe-dev.md +4 -3
  305. package/docs/{platforms → install}/fly.md +1 -1
  306. package/docs/install/index.md +4 -2
  307. package/docs/nodes/media-understanding.md +2 -2
  308. package/docs/platforms/digitalocean.md +2 -2
  309. package/docs/platforms/index.md +4 -4
  310. package/docs/platforms/linux.md +1 -1
  311. package/docs/platforms/mac/release.md +7 -7
  312. package/docs/platforms/oracle.md +1 -1
  313. package/docs/platforms/raspberry-pi.md +1 -1
  314. package/docs/providers/anthropic.md +3 -3
  315. package/docs/providers/index.md +1 -1
  316. package/docs/providers/minimax.md +3 -3
  317. package/docs/providers/models.md +1 -1
  318. package/docs/providers/ollama.md +60 -6
  319. package/docs/providers/openai.md +2 -2
  320. package/docs/providers/opencode.md +1 -1
  321. package/docs/providers/vercel-ai-gateway.md +1 -1
  322. package/docs/reference/credits.md +27 -0
  323. package/docs/reference/wizard.md +268 -0
  324. package/docs/start/bootstrapping.md +41 -0
  325. package/docs/start/docs-directory.md +64 -0
  326. package/docs/start/getting-started.md +109 -197
  327. package/docs/start/hubs.md +12 -0
  328. package/docs/start/onboarding.md +51 -81
  329. package/docs/start/openclaw.md +3 -20
  330. package/docs/start/quickstart.md +22 -0
  331. package/docs/start/setup.md +14 -1
  332. package/docs/start/wizard-cli-automation.md +141 -0
  333. package/docs/start/wizard-cli-reference.md +244 -0
  334. package/docs/start/wizard.md +48 -289
  335. package/docs/style.css +3 -0
  336. package/docs/testing.md +9 -9
  337. package/docs/token-use.md +2 -2
  338. package/docs/tools/index.md +3 -0
  339. package/docs/tools/llm-task.md +1 -1
  340. package/docs/tools/thinking.md +1 -0
  341. package/docs/tui.md +3 -0
  342. package/docs/vps.md +6 -6
  343. package/docs/web/control-ui.md +2 -0
  344. package/docs/web/dashboard.md +7 -7
  345. package/docs/zh-CN/channels/feishu.md +119 -3
  346. package/docs/zh-CN/concepts/features.md +59 -0
  347. package/docs/zh-CN/gateway/network-model.md +23 -0
  348. package/docs/zh-CN/gateway/remote.md +1 -1
  349. package/docs/zh-CN/help/faq.md +5 -5
  350. package/docs/zh-CN/index.md +124 -202
  351. package/docs/zh-CN/install/docker.md +1 -1
  352. package/docs/zh-CN/platforms/digitalocean.md +2 -2
  353. package/docs/zh-CN/platforms/index.md +4 -4
  354. package/docs/zh-CN/platforms/linux.md +1 -1
  355. package/docs/zh-CN/platforms/oracle.md +1 -1
  356. package/docs/zh-CN/platforms/raspberry-pi.md +1 -1
  357. package/docs/zh-CN/providers/ollama.md +1 -1
  358. package/docs/zh-CN/reference/credits.md +34 -0
  359. package/docs/zh-CN/start/docs-directory.md +70 -0
  360. package/docs/zh-CN/start/getting-started.md +1 -1
  361. package/docs/zh-CN/start/hubs.md +39 -30
  362. package/docs/zh-CN/start/quickstart.md +88 -0
  363. package/docs/zh-CN/vps.md +4 -4
  364. package/extensions/bluebubbles/package.json +1 -1
  365. package/extensions/bluebubbles/src/monitor.ts +9 -0
  366. package/extensions/copilot-proxy/index.ts +1 -0
  367. package/extensions/copilot-proxy/package.json +1 -1
  368. package/extensions/diagnostics-otel/package.json +1 -1
  369. package/extensions/discord/package.json +1 -1
  370. package/extensions/feishu/index.ts +49 -1
  371. package/extensions/feishu/openclaw.plugin.json +1 -0
  372. package/extensions/feishu/package.json +9 -5
  373. package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
  374. package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
  375. package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
  376. package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
  377. package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
  378. package/extensions/feishu/src/accounts.ts +144 -0
  379. package/extensions/feishu/src/bitable.ts +459 -0
  380. package/extensions/feishu/src/bot.ts +871 -0
  381. package/extensions/feishu/src/channel.ts +267 -202
  382. package/extensions/feishu/src/client.ts +118 -0
  383. package/extensions/feishu/src/config-schema.ts +152 -26
  384. package/extensions/feishu/src/directory.ts +177 -0
  385. package/extensions/feishu/src/doc-schema.ts +47 -0
  386. package/extensions/feishu/src/docx.ts +521 -0
  387. package/extensions/feishu/src/drive-schema.ts +46 -0
  388. package/extensions/feishu/src/drive.ts +227 -0
  389. package/extensions/feishu/src/media.ts +527 -0
  390. package/extensions/feishu/src/mention.ts +126 -0
  391. package/extensions/feishu/src/monitor.ts +190 -0
  392. package/extensions/feishu/src/onboarding.ts +278 -200
  393. package/extensions/feishu/src/outbound.ts +40 -0
  394. package/extensions/feishu/src/perm-schema.ts +52 -0
  395. package/extensions/feishu/src/perm.ts +173 -0
  396. package/extensions/feishu/src/policy.ts +104 -0
  397. package/extensions/feishu/src/probe.ts +44 -0
  398. package/extensions/feishu/src/reactions.ts +160 -0
  399. package/extensions/feishu/src/reply-dispatcher.ts +184 -0
  400. package/extensions/feishu/src/runtime.ts +14 -0
  401. package/extensions/feishu/src/send.ts +358 -0
  402. package/extensions/feishu/src/targets.ts +78 -0
  403. package/extensions/feishu/src/tools-config.ts +21 -0
  404. package/extensions/feishu/src/types.ts +75 -0
  405. package/extensions/feishu/src/typing.ts +80 -0
  406. package/extensions/feishu/src/wiki-schema.ts +55 -0
  407. package/extensions/feishu/src/wiki.ts +232 -0
  408. package/extensions/google-antigravity-auth/package.json +1 -1
  409. package/extensions/google-gemini-cli-auth/package.json +1 -1
  410. package/extensions/googlechat/package.json +1 -1
  411. package/extensions/googlechat/src/monitor.ts +12 -1
  412. package/extensions/imessage/package.json +1 -1
  413. package/extensions/line/package.json +1 -1
  414. package/extensions/llm-task/package.json +1 -1
  415. package/extensions/lobster/package.json +1 -1
  416. package/extensions/matrix/CHANGELOG.md +6 -0
  417. package/extensions/matrix/package.json +1 -1
  418. package/extensions/matrix/src/config-schema.ts +1 -0
  419. package/extensions/matrix/src/matrix/monitor/handler.ts +9 -5
  420. package/extensions/matrix/src/types.ts +2 -0
  421. package/extensions/mattermost/package.json +1 -1
  422. package/extensions/mattermost/src/channel.test.ts +24 -0
  423. package/extensions/mattermost/src/config-schema.ts +1 -0
  424. package/extensions/mattermost/src/mattermost/monitor.ts +9 -5
  425. package/extensions/mattermost/src/types.ts +2 -0
  426. package/extensions/memory-core/package.json +1 -1
  427. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  428. package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
  429. package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
  430. package/extensions/memory-lancedb/package.json +2 -2
  431. package/extensions/minimax-portal-auth/package.json +1 -1
  432. package/extensions/msteams/CHANGELOG.md +6 -0
  433. package/extensions/msteams/package.json +1 -1
  434. package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -0
  435. package/extensions/msteams/src/reply-dispatcher.ts +7 -5
  436. package/extensions/nextcloud-talk/package.json +1 -1
  437. package/extensions/nextcloud-talk/src/config-schema.ts +1 -0
  438. package/extensions/nextcloud-talk/src/inbound.ts +10 -0
  439. package/extensions/nextcloud-talk/src/send.ts +7 -2
  440. package/extensions/nextcloud-talk/src/types.ts +2 -0
  441. package/extensions/nostr/CHANGELOG.md +6 -0
  442. package/extensions/nostr/package.json +1 -1
  443. package/extensions/open-prose/package.json +1 -1
  444. package/extensions/signal/package.json +1 -1
  445. package/extensions/slack/package.json +1 -1
  446. package/extensions/telegram/package.json +1 -1
  447. package/extensions/tlon/package.json +1 -1
  448. package/extensions/tlon/src/config-schema.ts +2 -0
  449. package/extensions/tlon/src/monitor/index.ts +41 -14
  450. package/extensions/tlon/src/monitor/utils.ts +1 -0
  451. package/extensions/twitch/CHANGELOG.md +6 -0
  452. package/extensions/twitch/package.json +1 -1
  453. package/extensions/twitch/src/config-schema.ts +2 -0
  454. package/extensions/twitch/src/monitor.ts +11 -0
  455. package/extensions/twitch/src/types.ts +2 -0
  456. package/extensions/voice-call/CHANGELOG.md +6 -0
  457. package/extensions/voice-call/package.json +1 -1
  458. package/extensions/voice-call/src/manager.test.ts +30 -0
  459. package/extensions/whatsapp/package.json +1 -1
  460. package/extensions/zalo/CHANGELOG.md +6 -0
  461. package/extensions/zalo/package.json +1 -1
  462. package/extensions/zalo/src/config-schema.ts +1 -0
  463. package/extensions/zalo/src/monitor.ts +11 -0
  464. package/extensions/zalo/src/types.ts +2 -0
  465. package/extensions/zalouser/CHANGELOG.md +6 -0
  466. package/extensions/zalouser/package.json +1 -1
  467. package/extensions/zalouser/src/config-schema.ts +1 -0
  468. package/extensions/zalouser/src/monitor.ts +12 -1
  469. package/extensions/zalouser/src/types.ts +2 -0
  470. package/package.json +14 -14
  471. package/dist/auth-profiles-3t9aTwDR.js +0 -11
  472. package/dist/auth-profiles-BYvLI-zr.js +0 -7
  473. package/dist/auth-profiles-DswR7tzt.js +0 -7
  474. package/dist/cli-BxIwNzhi.js +0 -89
  475. package/dist/cli-wFmvNjpg.js +0 -86
  476. package/dist/command-format-SkzzRqR1.js +0 -52
  477. package/dist/completion-cli-vxe-jqwC.js +0 -390
  478. package/dist/config-BwVg6hhl.js +0 -13
  479. package/dist/config-jKcyRiMo.js +0 -10
  480. package/dist/configure-DaecSBSI.js +0 -60
  481. package/dist/configure-t-7r9i4H.js +0 -64
  482. package/dist/control-service-Dag9b-dU.js +0 -16
  483. package/dist/control-service-DsUyuevF.js +0 -12
  484. package/dist/control-ui/assets/index-ryaCcbyp.js +0 -4584
  485. package/dist/control-ui/assets/index-ryaCcbyp.js.map +0 -1
  486. package/dist/daemon-cli-CUkUiGoK.js +0 -53
  487. package/dist/daemon-cli-D6FF4tmP.js +0 -49
  488. package/dist/deliver-BGnJ4-vz.js +0 -12
  489. package/dist/deliver-CXpx7BNb.js +0 -25
  490. package/dist/deliver-Ds2yqOA3.js +0 -21
  491. package/dist/doctor-BwqqPqMX.js +0 -58
  492. package/dist/doctor-DGrfzoKj.js +0 -62
  493. package/dist/github-copilot-token-B0CUgVkW.js +0 -4
  494. package/dist/github-copilot-token-B_uWT0Yi.js +0 -4
  495. package/dist/github-copilot-token-CXUZ9Lrb.js +0 -3
  496. package/dist/image-CgTMdnmz.js +0 -28
  497. package/dist/image-D1O-ebQc.js +0 -14
  498. package/dist/image-njq9Rf6U.js +0 -24
  499. package/dist/login-qr-BfbIJ1wP.js +0 -12
  500. package/dist/login-qr-CGWNrSQq.js +0 -9
  501. package/dist/login-qr-CUV9HZCg.js +0 -16
  502. package/dist/manager-DKpTd5pc.js +0 -10
  503. package/dist/manager-Dr_eVHpN.js +0 -10
  504. package/dist/manager-DtFcs1NT.js +0 -14
  505. package/dist/pi-model-discovery-BOramrmp.js +0 -3
  506. package/dist/pi-model-discovery-Bj98Srfa.js +0 -3
  507. package/dist/pi-model-discovery-DHPwfwKu.js +0 -3
  508. package/dist/plugin-sdk/agent-scope-qNPdmst1.js +0 -606
  509. package/dist/plugin-sdk/auth-profiles-D0LhX8iB.js +0 -7
  510. package/dist/plugin-sdk/chrome-DMuEXuKT.js +0 -1953
  511. package/dist/plugin-sdk/config-D5CsedNn.js +0 -5623
  512. package/dist/plugin-sdk/deliver-DOlMKwJ9.js +0 -12
  513. package/dist/plugin-sdk/deliver-Dl2ednkv.js +0 -2555
  514. package/dist/plugin-sdk/exec-CjyVHUuE.js +0 -1107
  515. package/dist/plugin-sdk/github-copilot-token-BoPqI-5_.js +0 -97
  516. package/dist/plugin-sdk/github-copilot-token-YEH9Bwov.js +0 -4
  517. package/dist/plugin-sdk/image-B_t0xXCb.js +0 -1419
  518. package/dist/plugin-sdk/image-DYTdodiR.js +0 -14
  519. package/dist/plugin-sdk/login-qr-B7ec28AI.js +0 -9
  520. package/dist/plugin-sdk/login-qr-BVBRxQRt.js +0 -470
  521. package/dist/plugin-sdk/manager-B-EITu1a.js +0 -10
  522. package/dist/plugin-sdk/manager-WCGzgWdf.js +0 -2868
  523. package/dist/plugin-sdk/model-selection-Bo7pocNu.js +0 -2667
  524. package/dist/plugin-sdk/paths-BFxmmTT5.js +0 -164
  525. package/dist/plugin-sdk/paths-Bkjq_KcG.js +0 -40
  526. package/dist/plugin-sdk/pi-embedded-helpers-fm5_Eokw.js +0 -8755
  527. package/dist/plugin-sdk/pi-model-discovery-CLgDNnGq.js +0 -13
  528. package/dist/plugin-sdk/pi-model-discovery-P2-pVRmz.js +0 -3
  529. package/dist/plugin-sdk/pw-ai-BN7Cwl9J.js +0 -1649
  530. package/dist/qmd-manager-CzArLjr6.js +0 -615
  531. package/dist/redact-BR0IM00e.js +0 -94
  532. package/dist/register.subclis-Bo-xmQ-W.js +0 -342
  533. package/dist/register.subclis-BuT7ZpPf.js +0 -3
  534. package/dist/restart-sentinel-CdcBcziq.js +0 -65
  535. package/dist/restart-sentinel-DywisDen.js +0 -65
  536. package/dist/runtime-guard-BG6JybtL.js +0 -60
  537. package/dist/runtime-guard-DvBpNsbR.js +0 -60
  538. package/dist/sqlite-Dz6S6ijV.js +0 -215
  539. package/dist/status.update-2ZdxeIeT.js +0 -79
  540. package/dist/status.update-ChwCPLBt.js +0 -79
  541. package/dist/systemd-linger-BZb1Uwsd.js +0 -7
  542. package/dist/systemd-linger-DemNCT5l.js +0 -9
  543. package/dist/transcript-events-fUhPZcB5.js +0 -17
  544. package/docs/_config.yml +0 -53
  545. package/docs/_layouts/default.html +0 -145
  546. package/docs/assets/docs-chat-widget.js +0 -667
  547. package/docs/assets/markdown.css +0 -179
  548. package/docs/assets/terminal.css +0 -473
  549. package/docs/assets/theme.js +0 -55
  550. package/extensions/feishu/README.md +0 -47
  551. /package/dist/{archive-BrH5WBhI.js → archive-D0z3LZDK.js} +0 -0
  552. /package/dist/{archive-mFgwsll-.js → archive-Dy3Ezb-5.js} +0 -0
  553. /package/dist/{boolean-CE7i9tBR.js → boolean-BgXe2hyu.js} +0 -0
  554. /package/dist/{brew-0HRgjHZw.js → brew-CAcErcKz.js} +0 -0
  555. /package/dist/{brew-Qdppmdlx.js → brew-CcZV0dSS.js} +0 -0
  556. /package/dist/{cli-utils-CukoNm8O.js → cli-utils-BkRQdAoC.js} +0 -0
  557. /package/dist/{cli-utils-DFbPmfWB.js → cli-utils-ByANh4Sp.js} +0 -0
  558. /package/dist/{plugin-sdk/command-format-CFzL448l.js → command-format-CFzL448l.js} +0 -0
  559. /package/dist/{command-format-BQK1OIvH.js → command-format-ChfKqObn.js} +0 -0
  560. /package/dist/{command-format-3xiXujG0.js → command-format-ayFsmwwz.js} +0 -0
  561. /package/dist/{constants-3er_81qc.js → constants-D1op9uGI.js} +0 -0
  562. /package/dist/{constants-CLUi6T-M.js → constants-HPrOsATF.js} +0 -0
  563. /package/dist/{exec-BIMFe4XS.js → exec-B8JKbXKW.js} +0 -0
  564. /package/dist/{format-BnjMmWWT.js → format-B7OjpGnt.js} +0 -0
  565. /package/dist/{format-hyFOmVZc.js → format-CS7EI0xF.js} +0 -0
  566. /package/dist/{help-format-af1XWYxC.js → help-format-CfZ94KRN.js} +0 -0
  567. /package/dist/{helpers-HZ-6iA1e.js → helpers-5yebzF4C.js} +0 -0
  568. /package/dist/{helpers-uGhPZ_kK.js → helpers-EKm3X92T.js} +0 -0
  569. /package/dist/{is-main-DD0MG3N8.js → is-main-B6kCyqsv.js} +0 -0
  570. /package/dist/{is-main-DrJg4t1R.js → is-main-qJ675wPV.js} +0 -0
  571. /package/dist/{logging-BdnOSVPD.js → logging-BWRYHvLp.js} +0 -0
  572. /package/dist/{logging-fywhKCmE.js → logging-CfEk_PnX.js} +0 -0
  573. /package/dist/{openclaw-root-Dean7Fp2.js → openclaw-root-9ILYSmJ9.js} +0 -0
  574. /package/dist/{openclaw-root-CJKDUIBP.js → openclaw-root-Cvotktkd.js} +0 -0
  575. /package/dist/{parse-BB0Cqon8.js → parse-BZz5lHzQ.js} +0 -0
  576. /package/dist/{parse-DLFPuO7w.js → parse-gTOGQPH6.js} +0 -0
  577. /package/dist/{parse-log-line-B3U8Kflp.js → parse-log-line-C6szvNBZ.js} +0 -0
  578. /package/dist/{parse-log-line-BmyeB3J2.js → parse-log-line-CARp5QyJ.js} +0 -0
  579. /package/dist/{parse-timeout-BIB19Upi.js → parse-timeout-CbVKLZ4B.js} +0 -0
  580. /package/dist/{parse-timeout-CmBmmqZZ.js → parse-timeout-Du-wHHNi.js} +0 -0
  581. /package/dist/{paths-VslOJiD2.js → paths-B1kfl4h5.js} +0 -0
  582. /package/dist/{paths-BDd7_JUB.js → paths-scjhy7N2.js} +0 -0
  583. /package/dist/{progress-Dn3kWpaL.js → progress-Da1ehW-x.js} +0 -0
  584. /package/dist/{prompt-style-D5D7b3cX.js → prompt-style-Dc0C5HC9.js} +0 -0
  585. /package/dist/{prompts-CIDznuZR.js → prompts-CXLLIBwP.js} +0 -0
  586. /package/dist/{prompts-CSlE5VZB.js → prompts-FbZThK8w.js} +0 -0
  587. /package/dist/{redact-BKh-zp-c.js → redact-B8YiFlwn.js} +0 -0
  588. /package/dist/{plugin-sdk/redact-wH73ib3-.js → redact-BIMJ3ntQ.js} +0 -0
  589. /package/dist/{redact-CDPAzwi8.js → redact-DJCFY628.js} +0 -0
  590. /package/dist/{plugin-sdk/sqlite-CqVsQPIl.js → sqlite-BKl1HJFe.js} +0 -0
  591. /package/dist/{sqlite-C59YNxdL.js → sqlite-Dnmf3LS7.js} +0 -0
  592. /package/dist/{sqlite-B_L84oiu.js → sqlite-DqUEZnjO.js} +0 -0
  593. /package/dist/{status-DkW6wMxZ.js → status-CRIEi8Mc.js} +0 -0
  594. /package/dist/{status-IDW1pkc0.js → status-tCu4RWZH.js} +0 -0
  595. /package/dist/{tailnet-BijMqkqa.js → tailnet-Byp3obcc.js} +0 -0
  596. /package/dist/{tailnet-Bk5cGmwE.js → tailnet-DLDGNuH2.js} +0 -0
  597. /package/dist/{plugin-sdk/transcript-events-DOI14YeV.js → transcript-events-CZ8CG4ht.js} +0 -0
  598. /package/dist/{transcript-events-Cj85Mq0h.js → transcript-events-ChU6IQwp.js} +0 -0
  599. /package/dist/{transcript-events-DW_H__a1.js → transcript-events-JLH5W4He.js} +0 -0
  600. /package/dist/{utils-PmTbZoD1.js → utils-DX85MiPR.js} +0 -0
  601. /package/dist/{ws-Cxo2p9fH.js → ws-CEcdsnN9.js} +0 -0
  602. /package/dist/{ws-DlSkA_BG.js → ws-D091yo4M.js} +0 -0
  603. /package/docs/{platforms → install}/gcp.md +0 -0
  604. /package/docs/{platforms → install}/hetzner.md +0 -0
  605. /package/docs/{platforms → install}/macos-vm.md +0 -0
  606. /package/docs/{northflank.mdx → install/northflank.mdx} +0 -0
  607. /package/docs/{railway.mdx → install/railway.mdx} +0 -0
  608. /package/docs/{render.mdx → install/render.mdx} +0 -0
  609. /package/docs/zh-CN/{platforms → install}/exe-dev.md +0 -0
  610. /package/docs/zh-CN/{platforms → install}/fly.md +0 -0
  611. /package/docs/zh-CN/{platforms → install}/gcp.md +0 -0
  612. /package/docs/zh-CN/{platforms → install}/hetzner.md +0 -0
  613. /package/docs/zh-CN/{platforms → install}/macos-vm.md +0 -0
  614. /package/docs/zh-CN/{northflank.mdx → install/northflank.mdx} +0 -0
  615. /package/docs/zh-CN/{railway.mdx → install/railway.mdx} +0 -0
  616. /package/docs/zh-CN/{render.mdx → install/render.mdx} +0 -0
@@ -1,6 +1,13 @@
1
- import { t as runCommandWithTimeout } from "./exec-BIMFe4XS.js";
2
- import { o as trimLogTail } from "./restart-sentinel-DywisDen.js";
3
- import { r as parseSemver } from "./runtime-guard-DvBpNsbR.js";
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 restoreUiStep = await runStep(step("restore control-ui", [
1133
- "git",
1134
- "-C",
1135
- gitRoot,
1136
- "checkout",
1137
- "--",
1138
- "dist/control-ui/"
1139
- ], gitRoot));
1140
- steps.push(restoreUiStep);
1141
- const doctorStep = await runStep(step("openclaw doctor", managerScriptArgs(manager, "openclaw", ["doctor", "--non-interactive"]), gitRoot, { OPENCLAW_UPDATE_IN_PROGRESS: "1" }));
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, compareSemverStrings as c, DEFAULT_GIT_CHANNEL as d, DEFAULT_PACKAGE_CHANNEL as f, resolveEffectiveUpdateChannel as g, normalizeUpdateChannel as h, detectGlobalInstallManagerForRoot as i, fetchNpmTagVersion as l, formatUpdateChannelLabel as m, cleanupGlobalRenameDirs as n, resolveGlobalPackageRoot as o, channelToNpmTag as p, detectGlobalInstallManagerByPresence as r, checkUpdateStatus as s, runGatewayUpdate as t, resolveNpmChannelTag as u };
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 { t as runCommandWithTimeout } from "./exec-CTo4hK94.js";
2
- import { o as trimLogTail } from "./restart-sentinel-CdcBcziq.js";
3
- import { r as parseSemver } from "./runtime-guard-BG6JybtL.js";
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 restoreUiStep = await runStep(step("restore control-ui", [
1133
- "git",
1134
- "-C",
1135
- gitRoot,
1136
- "checkout",
1137
- "--",
1138
- "dist/control-ui/"
1139
- ], gitRoot));
1140
- steps.push(restoreUiStep);
1141
- const doctorStep = await runStep(step("openclaw doctor", managerScriptArgs(manager, "openclaw", ["doctor", "--non-interactive"]), gitRoot, { OPENCLAW_UPDATE_IN_PROGRESS: "1" }));
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, compareSemverStrings as c, DEFAULT_GIT_CHANNEL as d, DEFAULT_PACKAGE_CHANNEL as f, resolveEffectiveUpdateChannel as g, normalizeUpdateChannel as h, detectGlobalInstallManagerForRoot as i, fetchNpmTagVersion as l, formatUpdateChannelLabel as m, cleanupGlobalRenameDirs as n, resolveGlobalPackageRoot as o, channelToNpmTag as p, detectGlobalInstallManagerByPresence as r, checkUpdateStatus as s, runGatewayUpdate as t, resolveNpmChannelTag as u };
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 };