@gguf/claw 2026.2.9 → 2026.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (715) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/LICENSE +1 -1
  3. package/dist/{accounts-MyAvfCVH.js → accounts-54zZMYCo.js} +5 -2
  4. package/dist/{accounts-DbzMEfKN.js → accounts-Bvh0DFxS.js} +5 -2
  5. package/dist/{acp-cli-MZ3h1E1n.js → acp-cli-BslcOPdx.js} +146 -25
  6. package/dist/{acp-cli-DKJRTfwB.js → acp-cli-D6rk5cOh.js} +145 -24
  7. package/dist/{agent-whSJT2Lk.js → agent-C0yL70cy.js} +26 -20
  8. package/dist/{agent-c1QNeDmV.js → agent-DjZxytiC.js} +26 -20
  9. package/dist/{agent-scope-D3me2AZa.js → agent-scope-Bkr9fZtl.js} +31 -14
  10. package/dist/{agent-scope-Dp8sREli.js → agent-scope-DASgjz2_.js} +199 -14
  11. package/dist/{agent-scope-DnyDZ5RH.js → agent-scope-GYIs5dyU.js} +30 -13
  12. package/dist/{agent-scope-Dpav7C-i.js → agent-scope-okUOVjE5.js} +32 -11
  13. package/dist/audio-preflight-B0kLz-Ma.js +60 -0
  14. package/dist/audio-preflight-BCs_J33s.js +60 -0
  15. package/dist/audio-preflight-CTl2RCyF.js +71 -0
  16. package/dist/audio-preflight-MhF6YlAY.js +74 -0
  17. package/dist/{audit-BFYy1qSw.js → audit-BYfhZ7LA.js} +454 -31
  18. package/dist/{audit-Dn2cBl2x.js → audit-CfPZ_5Id.js} +452 -29
  19. package/dist/auth-9nTeB2Je.js +602 -0
  20. package/dist/auth-CLhyWwAU.js +593 -0
  21. package/dist/{auth-health-Cx5exPMV.js → auth-health-CWiLyzSr.js} +1 -1
  22. package/dist/{auth-health-DjT4fUpw.js → auth-health-qD4RND47.js} +1 -1
  23. package/dist/{auth-profiles-FJ3VY25a.js → auth-profiles-Cp9MtUdM.js} +353 -33
  24. package/dist/build-info.json +2 -2
  25. package/dist/bundled/boot-md/handler.js +33 -25
  26. package/dist/bundled/session-memory/handler.js +33 -22
  27. package/dist/{call-CD2IZCHT.js → call-CjEdFGAf.js} +7 -7
  28. package/dist/{call-CM25qgxz.js → call-DAfkvtVq.js} +6 -6
  29. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  30. package/dist/canvas-host/a2ui/a2ui.bundle.js +7 -1
  31. package/dist/{channel-options-CremuJyh.js → channel-options-B8dPzlyO.js} +4 -4
  32. package/dist/{channel-options-D-JnJ4Ft.js → channel-options-Bq5IC5Tv.js} +12 -7
  33. package/dist/{channel-selection-DAHCVAX4.js → channel-selection-BaW1xXEa.js} +2 -2
  34. package/dist/{channel-selection-DPV9hvY8.js → channel-selection-dR0jCgTn.js} +2 -2
  35. package/dist/{channels-cli-6deHFr9t.js → channels-cli-hPo28hWS.js} +61 -56
  36. package/dist/{channels-cli-D3tKmhlt.js → channels-cli-zi3rO0jq.js} +62 -57
  37. package/dist/{channels-status-issues-BN1ICfdy.js → channels-status-issues-kb-M2Fi0.js} +1 -1
  38. package/dist/{channels-status-issues-DFhI_u0p.js → channels-status-issues-ketdwZun.js} +1 -1
  39. package/dist/{chrome-B2UjqY-9.js → chrome--Fe8F5Kf.js} +24 -12
  40. package/dist/{chrome-COabMr6f.js → chrome-BWeMtFGf.js} +24 -12
  41. package/dist/{chrome-CQd_MVOA.js → chrome-Bx24uq7B.js} +27 -15
  42. package/dist/{chrome-CxRJz4ZD.js → chrome-n_3rtK2c.js} +22 -11
  43. package/dist/{clack-prompter-BkNZ4Xdw.js → clack-prompter-B-tJmODa.js} +5 -5
  44. package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-DpuKn_Uy.js} +5 -5
  45. package/dist/cli/daemon-cli.js +8 -1
  46. package/dist/cli-9lwO6Ttx.js +94 -0
  47. package/dist/cli-CNNdyxPO.js +91 -0
  48. package/dist/{client-DMloFP_O.js → client-BhZjzrH2.js} +73 -9
  49. package/dist/{client-C0gQ7hrj.js → client-DyAxKXKY.js} +73 -9
  50. package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
  51. package/dist/{command-options-BQdH6qnK.js → command-options-BDV7Xgs-.js} +9 -4
  52. package/dist/{commands-BWHYcc83.js → commands-gOiRcfoU.js} +4 -4
  53. package/dist/{tui-formatters-BDP_71Xt.js → commands-registry-6NUFrejL.js} +6 -114
  54. package/dist/{tui-formatters-CIx4sCQO.js → commands-registry-DGgkLQ7A.js} +6 -114
  55. package/dist/{completion-cli-DEJia0V1.js → completion-cli-B1kHKJZX.js} +30 -30
  56. package/dist/{completion-cli-D_0fx2O6.js → completion-cli-Drks7xRK.js} +3 -3
  57. package/dist/{config-CQt4vGxI.js → config-7NCznPmF.js} +336 -97
  58. package/dist/{config-fCnPoWjU.js → config-B8v0zg48.js} +295 -99
  59. package/dist/{config-Bj2eDa02.js → config-CeWMHOiQ.js} +295 -99
  60. package/dist/{config-ethqi73X.js → config-D8pgDSNo.js} +358 -99
  61. package/dist/{config-guard-BJuqQvng.js → config-guard-RbHxYc9j.js} +212 -63
  62. package/dist/{configure-skrLiSwW.js → configure-DLp2Xz7L.js} +59 -40
  63. package/dist/{configure-C-pYuYg_.js → configure-Su1S0gi-.js} +58 -39
  64. package/dist/control-auth-BlWU-jBl.js +54 -0
  65. package/dist/control-auth-C8rIqEdA.js +54 -0
  66. package/dist/{control-service-BDgF-FZ0.js → control-service-BNDthc1N.js} +11 -5
  67. package/dist/{control-service-Djd_WI3_.js → control-service-COF59GQe.js} +10 -4
  68. package/dist/control-ui/assets/{index-CnB9IO4a.js → index-BECn2L1T.js} +369 -368
  69. package/dist/control-ui/assets/index-BECn2L1T.js.map +1 -0
  70. package/dist/control-ui/assets/index-DRPcd1Z4.css +1 -0
  71. package/dist/control-ui/index.html +2 -2
  72. package/dist/{cron-cli-CB6CufAb.js → cron-cli-CSy4-JGS.js} +20 -20
  73. package/dist/{cron-cli-Db6fardJ.js → cron-cli-Db3uCDIT.js} +21 -21
  74. package/dist/{daemon-cli-Xe22v7lZ.js → daemon-cli-BLbzcTuD.js} +61 -22
  75. package/dist/{daemon-cli-BlHK0ly2.js → daemon-cli-DR0D35MO.js} +60 -21
  76. package/dist/{daemon-runtime-CMqH8BUE.js → daemon-runtime-ZWXvLDxx.js} +3 -3
  77. package/dist/{daemon-runtime-DwQFvDXZ.js → daemon-runtime-pVcZ2KDE.js} +3 -3
  78. package/dist/{deliver-CD7-BhYD.js → deliver-BHNoC9Yk.js} +396 -290
  79. package/dist/{deliver-BdGjIcTC.js → deliver-C_5eGQrX.js} +392 -286
  80. package/dist/{deliver-nTKaXF--.js → deliver-DPHZlWgr.js} +392 -287
  81. package/dist/{deliver-CDMGxRoW.js → deliver-geVWJ52I.js} +394 -288
  82. package/dist/{deps-BDQ_K8zf.js → deps-CP0dcOgD.js} +2 -2
  83. package/dist/{deps-D60FbgTP.js → deps-DW5r2IEk.js} +2 -2
  84. package/dist/{devices-cli-N559801X.js → devices-cli-BViqX5pl.js} +15 -15
  85. package/dist/{devices-cli-IxmPLIk8.js → devices-cli-DpYaY-iM.js} +14 -14
  86. package/dist/{directory-cli-Caq-OYk8.js → directory-cli-BWD1DdKf.js} +16 -16
  87. package/dist/{directory-cli-ClrdmQL-.js → directory-cli-BcvZfkfo.js} +17 -17
  88. package/dist/{dispatcher-BfXtm4Dl.js → dispatcher-4Qn951N3.js} +5 -3
  89. package/dist/{dns-cli-DgVO0Pkw.js → dns-cli-_Ych2tu9.js} +12 -12
  90. package/dist/{dns-cli-BTNZkWHs.js → dns-cli-gQCxUXgU.js} +13 -13
  91. package/dist/{docs-cli-9Xan7C6D.js → docs-cli-Bseiau7J.js} +7 -7
  92. package/dist/{docs-cli-DZULc91f.js → docs-cli-DzBTlWQE.js} +8 -8
  93. package/dist/{doctor-D39rZvNH.js → doctor-BNkYYahD.js} +37 -36
  94. package/dist/{doctor-Dq1YeYdH.js → doctor-DzIgdPx1.js} +37 -36
  95. package/dist/entry.js +77 -21
  96. package/dist/{env-B5YXooWp.js → env-BUuSkE19.js} +1 -1
  97. package/dist/{exec-DFOtZbI0.js → exec-BPQSKwGa.js} +5 -3
  98. package/dist/{exec-B8JKbXKW.js → exec-DqZFMawz.js} +5 -3
  99. package/dist/{exec-Bas1hoSJ.js → exec-EKUaAU91.js} +57 -18
  100. package/dist/{exec-CiH_vkWn.js → exec-_PSUrMP8.js} +528 -19
  101. package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Bqk-tIxY.js} +134 -51
  102. package/dist/{exec-approvals-C9InMoAB.js → exec-approvals-C67V-ljH.js} +134 -51
  103. package/dist/{exec-approvals-cli-EASbqFd-.js → exec-approvals-cli-D6vfSqQu.js} +22 -22
  104. package/dist/{exec-approvals-cli-DPHItoxG.js → exec-approvals-cli-DAdoki_R.js} +21 -21
  105. package/dist/extensionAPI.js +8518 -9140
  106. package/dist/fetch-Bz1WxfzV.js +285 -0
  107. package/dist/fetch-D2O8s8I1.js +285 -0
  108. package/dist/fetch-Dm-nCwa_.js +285 -0
  109. package/dist/fetch-wuOZDzdT.js +285 -0
  110. package/dist/{gateway-cli-BFqUIif8.js → gateway-cli-C-k7JPlr.js} +1868 -1072
  111. package/dist/{gateway-cli-v4kSPsLE.js → gateway-cli-DIIJ9Z0Y.js} +1870 -1074
  112. package/dist/{gateway-rpc-D6LrkcSA.js → gateway-rpc-D6jLh81b.js} +3 -3
  113. package/dist/{gateway-rpc-dHFK02Kk.js → gateway-rpc-aqysUyf5.js} +3 -3
  114. package/dist/{github-copilot-auth-CQIWc0hC.js → github-copilot-auth-BUqfX7hG.js} +316 -52
  115. package/dist/{github-copilot-auth-D2jfnapd.js → github-copilot-auth-By-nyRb6.js} +316 -52
  116. package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-C9W4SY9o.js} +7 -4
  117. package/dist/{github-copilot-token-BW-SEg7E.js → github-copilot-token-CiF5Iyi2.js} +6 -3
  118. package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DatTe1w-.js} +6 -3
  119. package/dist/{github-copilot-token-wCk9Fg_E.js → github-copilot-token-c9Igt3ZH.js} +6 -3
  120. package/dist/{gmail-setup-utils-CVNgLkXL.js → gmail-setup-utils-HvKMdooP.js} +4 -4
  121. package/dist/{gmail-setup-utils-CAM1vbUS.js → gmail-setup-utils-c-iF00aL.js} +3 -3
  122. package/dist/{health-format-C77hrjEQ.js → health-format-BORnJOeS.js} +106 -44
  123. package/dist/{health-format-DDYtlkB9.js → health-format-Nd0jcoqM.js} +105 -43
  124. package/dist/{help-format-CUnac_bT.js → help-format-Cd5PLwXe.js} +1 -1
  125. package/dist/{help-format-aiW76js8.js → help-format-DYBEvMOX.js} +1 -1
  126. package/dist/{hooks-cli-DsflBRxX.js → hooks-cli-3KdsbdRi.js} +53 -47
  127. package/dist/{hooks-cli-C7kctMuZ.js → hooks-cli-BThja6wK.js} +53 -47
  128. package/dist/{hooks-status-DRAVHSPg.js → hooks-status-BbIz0zmm.js} +6 -5
  129. package/dist/{hooks-status-lHWrY64E.js → hooks-status-DPJORMB6.js} +6 -5
  130. package/dist/{image--gbzucyh.js → image-BaJKrmCs.js} +12 -8
  131. package/dist/{image-ORs4LLwg.js → image-D-5pUELC.js} +13 -9
  132. package/dist/{image-DMnjYGdA.js → image-TvL5YI_W.js} +13 -9
  133. package/dist/{image-BVNytEIn.js → image-bodq5cUH.js} +13 -9
  134. package/dist/index.js +261 -109
  135. package/dist/{installs-CXGV291R.js → installs-BrOMqREO.js} +7 -6
  136. package/dist/{installs-89zeUsVn.js → installs-z69au9Te.js} +7 -6
  137. package/dist/{links-Dg90NTyF.js → links-AVB88xxH.js} +1 -1
  138. package/dist/{links-7M-j83As.js → links-DpxpaKe1.js} +1 -1
  139. package/dist/llm-slug-generator.js +18 -19
  140. package/dist/{loader-BnzQyT31.js → loader-CS-5lMQa.js} +3694 -4531
  141. package/dist/{logging-DuK6YXuK.js → logging-B3KnAryz.js} +2 -2
  142. package/dist/{logging-CNq0UUgf.js → logging-DEPo2hji.js} +1 -1
  143. package/dist/{login-qr-CJ__cE3-.js → login-qr--28WL1TN.js} +11 -5
  144. package/dist/{login-qr-BVeOFfNW.js → login-qr-4o2aC2UE.js} +9 -4
  145. package/dist/{login-qr-BJChByHH.js → login-qr-BUdeu1Sl.js} +8 -2
  146. package/dist/{login-qr-KUOtNJaQ.js → login-qr-BsYM2E1y.js} +12 -6
  147. package/dist/{logs-cli-Cm7AiarR.js → logs-cli-DDMD5w5_.js} +38 -22
  148. package/dist/{logs-cli-BWmtAsjp.js → logs-cli-DvPoVKCN.js} +38 -22
  149. package/dist/{manager-C-jXr9ks.js → manager-CXo1uqmO.js} +102 -86
  150. package/dist/{manager-CMFBuvVd.js → manager-ChW0jk7T.js} +101 -85
  151. package/dist/{manager-D2Ndphg3.js → manager-DUOe7ud6.js} +100 -85
  152. package/dist/{manager-BsdlwsL5.js → manager-PoxUqdN_.js} +98 -82
  153. package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-CVsqjgX0.js} +40 -2
  154. package/dist/{manifest-registry-DyMRD3rY.js → manifest-registry-jeAPx6AW.js} +40 -2
  155. package/dist/{message-channel-CHRYQtAM.js → message-channel-CTtrEkmW.js} +1 -1
  156. package/dist/{message-channel-BlgPSDAh.js → message-channel-DWcu72r7.js} +1 -1
  157. package/dist/{model-auth-BqjMkNFs.js → model-auth-BvODRbV0.js} +362 -35
  158. package/dist/{model-selection-DbsbOAoh.js → model-selection-B53OvWCf.js} +353 -33
  159. package/dist/{model-selection-DlV6wnTr.js → model-selection-vC82fEiP.js} +331 -30
  160. package/dist/{models-cli-DIFBrK4W.js → models-cli-DqsKsOgd.js} +66 -55
  161. package/dist/{models-cli-0XhQQbMW.js → models-cli-NV0bnh8l.js} +66 -55
  162. package/dist/{node-cli-BMUfVCSq.js → node-cli-C7YleuBk.js} +54 -44
  163. package/dist/{node-cli-DY4lzhDA.js → node-cli-CxwoHnZ6.js} +54 -44
  164. package/dist/{node-service-DQ-tiSie.js → node-service-C7f_uvx9.js} +2 -2
  165. package/dist/{node-service-u8g85nD3.js → node-service-De_WkxJe.js} +2 -2
  166. package/dist/{nodes-cli-BX6oWnLC.js → nodes-cli-BxrMVI9V.js} +25 -23
  167. package/dist/{nodes-cli-CVHzcQo2.js → nodes-cli-Clb0ocwB.js} +24 -22
  168. package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-CVL9363A.js} +48 -6
  169. package/dist/{nodes-screen-lykd2cny.js → nodes-screen-DsHJIN2I.js} +47 -5
  170. package/dist/{note-Ci08TSbV.js → note-Duiadw1g.js} +1 -1
  171. package/dist/{note-DVO1KLaW.js → note-uC6iDp4y.js} +2 -2
  172. package/dist/{onboard-channels-DTkFFbzS.js → onboard-channels-C5Iaafwb.js} +10 -10
  173. package/dist/{onboard-channels-CtDnwaF5.js → onboard-channels-C5uL3i8d.js} +11 -11
  174. package/dist/{onboard-skills-BnAcpzfX.js → onboard-skills-BFxdI1Y1.js} +1143 -112
  175. package/dist/{onboard-skills-DuoDzEmI.js → onboard-skills-DUG8Y0se.js} +1142 -111
  176. package/dist/{onboarding-DvhiiHh0.js → onboarding-ClzElK4D.js} +56 -48
  177. package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BKsZvO6K.js} +6 -2
  178. package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-CEnmuBUN.js} +6 -2
  179. package/dist/{pairing-cli-BKJHBxwT.js → pairing-cli-BWWFZF7Q.js} +16 -16
  180. package/dist/{pairing-cli-DJHjPBwu.js → pairing-cli-BrFLxnug.js} +16 -16
  181. package/dist/{pairing-labels-xImhiJax.js → pairing-labels-C8KULWNH.js} +1 -1
  182. package/dist/{pairing-labels-CHxlh3tT.js → pairing-labels-Dt2vXyI7.js} +1 -1
  183. package/dist/{pairing-store-CO6umWFP.js → pairing-store-Dz-ArTQS.js} +3 -3
  184. package/dist/{pairing-store-BpPUNzmB.js → pairing-store-gQdv7Ruh.js} +2 -2
  185. package/dist/{path-env-Nq83EHH9.js → path-env-BRKerjt1.js} +2 -2
  186. package/dist/{path-env-CXWUFfFv.js → path-env-OJAyUeWW.js} +1 -1
  187. package/dist/paths-BZK4Ct0I.js +81 -0
  188. package/dist/paths-DWYi0R_2.js +78 -0
  189. package/dist/{paths-Bkhd_qY8.js → paths-DdKf4lHp.js} +35 -5
  190. package/dist/paths-SFzVNGbc.js +78 -0
  191. package/dist/pi-auth-json-D7hGObyW.js +12 -0
  192. package/dist/pi-auth-json-DgvHjfJy.js +8 -0
  193. package/dist/pi-auth-json-la6lnAzY.js +79 -0
  194. package/dist/pi-auth-json-p3vsMR7W.js +79 -0
  195. package/dist/{pi-embedded-C1qKCgDT.js → pi-embedded-De6SeAPs.js} +9518 -9968
  196. package/dist/{pi-embedded-helpers-DtPn5RC8.js → pi-embedded-helpers-BrUBxrE2.js} +70 -10
  197. package/dist/{pi-embedded-helpers-DhEkdWB1.js → pi-embedded-helpers-D0mqOwwq.js} +821 -128
  198. package/dist/{pi-embedded-helpers-7AjuNiiJ.js → pi-embedded-helpers-DpJb0kUk.js} +69 -9
  199. package/dist/{pi-embedded-helpers-BTkXgwJ7.js → pi-embedded-helpers-ZI1UCSRM.js} +927 -136
  200. package/dist/{pi-tools.policy-gG96mWwA.js → pi-tools.policy-z5Wd_2WN.js} +4 -4
  201. package/dist/{plugin-auto-enable-D5ye7QnB.js → plugin-auto-enable-B8mX3rX3.js} +14 -5
  202. package/dist/{plugin-auto-enable-BROgMZcf.js → plugin-auto-enable-OO0eDINB.js} +14 -5
  203. package/dist/plugin-sdk/agents/apply-patch-update.d.ts +3 -1
  204. package/dist/plugin-sdk/agents/apply-patch.d.ts +11 -3
  205. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +5 -0
  206. package/dist/plugin-sdk/agents/auth-profiles.d.ts +1 -1
  207. package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
  208. package/dist/plugin-sdk/agents/bash-tools.exec.d.ts +26 -0
  209. package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
  210. package/dist/plugin-sdk/agents/huggingface-models.d.ts +17 -0
  211. package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
  212. package/dist/plugin-sdk/agents/openclaw-tools.d.ts +2 -0
  213. package/dist/plugin-sdk/agents/pi-auth-json.d.ts +14 -0
  214. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
  215. package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
  216. package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
  217. package/dist/plugin-sdk/agents/pi-embedded-runner/run/images.d.ts +9 -4
  218. package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
  219. package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
  220. package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
  221. package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
  222. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
  223. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
  224. package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
  225. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +8 -3
  226. package/dist/plugin-sdk/agents/sandbox/constants.d.ts +1 -1
  227. package/dist/plugin-sdk/agents/sandbox/docker.d.ts +14 -3
  228. package/dist/plugin-sdk/agents/sandbox/fs-bridge.d.ts +56 -0
  229. package/dist/plugin-sdk/agents/sandbox/types.d.ts +2 -0
  230. package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
  231. package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
  232. package/dist/plugin-sdk/agents/subagent-registry.d.ts +3 -1
  233. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
  234. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
  235. package/dist/plugin-sdk/agents/tools/common.d.ts +4 -0
  236. package/dist/plugin-sdk/agents/tools/image-tool.d.ts +9 -1
  237. package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
  238. package/dist/plugin-sdk/agents/usage.d.ts +1 -0
  239. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -0
  240. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
  241. package/dist/plugin-sdk/auto-reply/reply/memory-flush.d.ts +2 -2
  242. package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
  243. package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
  244. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
  245. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  246. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
  247. package/dist/plugin-sdk/auto-reply/status.d.ts +2 -0
  248. package/dist/plugin-sdk/auto-reply/templating.d.ts +3 -0
  249. package/dist/plugin-sdk/auto-reply/thinking.d.ts +1 -1
  250. package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
  251. package/dist/plugin-sdk/browser/cdp.helpers.d.ts +2 -1
  252. package/dist/plugin-sdk/browser/client-actions-core.d.ts +1 -0
  253. package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
  254. package/dist/plugin-sdk/browser/pw-ai.d.ts +1 -1
  255. package/dist/plugin-sdk/browser/pw-session.d.ts +25 -0
  256. package/dist/plugin-sdk/browser/pw-tools-core.interactions.d.ts +2 -0
  257. package/dist/plugin-sdk/browser/routes/dispatcher.d.ts +1 -0
  258. package/dist/plugin-sdk/browser/routes/types.d.ts +5 -0
  259. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
  260. package/dist/plugin-sdk/channels/registry.d.ts +2 -2
  261. package/dist/plugin-sdk/cli/nodes-camera.d.ts +8 -2
  262. package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
  263. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  264. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +1 -0
  265. package/dist/plugin-sdk/commands/onboard-types.d.ts +9 -1
  266. package/dist/plugin-sdk/commands/signal-install.d.ts +20 -0
  267. package/dist/plugin-sdk/config/config.d.ts +1 -1
  268. package/dist/plugin-sdk/config/group-policy.d.ts +3 -0
  269. package/dist/plugin-sdk/config/merge-patch.d.ts +1 -0
  270. package/dist/plugin-sdk/config/sessions/paths.d.ts +14 -4
  271. package/dist/plugin-sdk/config/sessions/store.d.ts +8 -0
  272. package/dist/plugin-sdk/config/sessions/types.d.ts +8 -0
  273. package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
  274. package/dist/plugin-sdk/config/types.channels.d.ts +2 -0
  275. package/dist/plugin-sdk/config/types.d.ts +1 -0
  276. package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
  277. package/dist/plugin-sdk/config/types.gateway.d.ts +35 -0
  278. package/dist/plugin-sdk/config/types.hooks.d.ts +23 -1
  279. package/dist/plugin-sdk/config/types.irc.d.ts +96 -0
  280. package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
  281. package/dist/plugin-sdk/config/types.openclaw.d.ts +6 -0
  282. package/dist/plugin-sdk/config/types.queue.d.ts +1 -0
  283. package/dist/plugin-sdk/config/types.slack.d.ts +2 -0
  284. package/dist/plugin-sdk/config/types.telegram.d.ts +2 -0
  285. package/dist/plugin-sdk/config/validation.d.ts +20 -0
  286. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
  287. package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
  288. package/dist/plugin-sdk/config/zod-schema.d.ts +193 -2
  289. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +3 -2
  290. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +378 -0
  291. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +176 -0
  292. package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
  293. package/dist/plugin-sdk/config/zod-schema.session.d.ts +1 -0
  294. package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
  295. package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
  296. package/dist/plugin-sdk/cron/types.d.ts +2 -0
  297. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
  298. package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
  299. package/dist/plugin-sdk/gateway/auth-rate-limit.d.ts +59 -0
  300. package/dist/plugin-sdk/gateway/auth.d.ts +47 -0
  301. package/dist/plugin-sdk/gateway/net.d.ts +5 -0
  302. package/dist/plugin-sdk/gateway/protocol/index.d.ts +7 -7
  303. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
  304. package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +21 -0
  305. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -1
  306. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
  307. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +1 -0
  308. package/dist/plugin-sdk/imessage/send.d.ts +12 -0
  309. package/dist/plugin-sdk/index.js +2147 -900
  310. package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
  311. package/dist/plugin-sdk/infra/brew.d.ts +8 -0
  312. package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
  313. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
  314. package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +8 -1
  315. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
  316. package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
  317. package/dist/plugin-sdk/infra/outbound/message.d.ts +2 -0
  318. package/dist/plugin-sdk/infra/outbound/outbound-send-service.d.ts +2 -0
  319. package/dist/plugin-sdk/infra/session-cost-usage.d.ts +3 -0
  320. package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
  321. package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
  322. package/dist/plugin-sdk/logging/console.d.ts +4 -0
  323. package/dist/plugin-sdk/logging/logger.d.ts +1 -1
  324. package/dist/plugin-sdk/logging/state.d.ts +1 -0
  325. package/dist/plugin-sdk/logging.d.ts +2 -2
  326. package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
  327. package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
  328. package/dist/plugin-sdk/media/input-files.d.ts +5 -0
  329. package/dist/plugin-sdk/media/store.d.ts +10 -0
  330. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
  331. package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
  332. package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
  333. package/dist/plugin-sdk/memory/embedding-chunk-limits.d.ts +3 -0
  334. package/dist/plugin-sdk/memory/embedding-input-limits.d.ts +2 -0
  335. package/dist/plugin-sdk/memory/embedding-model-limits.d.ts +2 -0
  336. package/dist/plugin-sdk/memory/embeddings.d.ts +1 -0
  337. package/dist/plugin-sdk/memory/internal.d.ts +11 -0
  338. package/dist/plugin-sdk/memory/manager.d.ts +0 -6
  339. package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
  340. package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
  341. package/dist/plugin-sdk/memory/session-files.d.ts +2 -0
  342. package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
  343. package/dist/plugin-sdk/providers/github-copilot-token.d.ts +3 -0
  344. package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
  345. package/dist/plugin-sdk/security/external-content.d.ts +1 -1
  346. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  347. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  348. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
  349. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  350. package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
  351. package/dist/plugin-sdk/slack/monitor/media.d.ts +21 -0
  352. package/dist/plugin-sdk/slack/types.d.ts +1 -0
  353. package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
  354. package/dist/plugin-sdk/telegram/fetch.d.ts +1 -0
  355. package/dist/plugin-sdk/telegram/monitor.d.ts +1 -0
  356. package/dist/plugin-sdk/telegram/send.d.ts +3 -0
  357. package/dist/plugin-sdk/tts/tts.d.ts +2 -2
  358. package/dist/plugin-sdk/utils/fetch-timeout.d.ts +2 -0
  359. package/dist/plugin-sdk/web/media.d.ts +12 -2
  360. package/dist/{plugins-CQw3z3Nw.js → plugins-CTjLu-z-.js} +4 -4
  361. package/dist/{plugins-B7F0Ly9G.js → plugins-CxrdL_IZ.js} +3 -3
  362. package/dist/{plugins-cli-CJ74eHvr.js → plugins-cli-CbX97Kvt.js} +259 -49
  363. package/dist/{plugins-cli-ubDwUAzK.js → plugins-cli-Dn9OeO53.js} +257 -47
  364. package/dist/{ports-kYsTYQdA.js → ports-C8YYHVlc.js} +2 -2
  365. package/dist/{program-1bQ15ivo.js → program-D-mNC0It.js} +86 -83
  366. package/dist/{progress-Da1ehW-x.js → progress-COHv-uNT.js} +1 -1
  367. package/dist/{progress-COzt9PNY.js → progress-DZb6yPcJ.js} +1 -1
  368. package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-Cf1r1L6k.js} +1 -1
  369. package/dist/{prompt-style-DjZDxcFg.js → prompt-style-lSlXMhsd.js} +1 -1
  370. package/dist/{pw-ai-CQ4-gUNR.js → pw-ai-6GzTgK5g.js} +205 -32
  371. package/dist/{pw-ai-1NN0FrJb.js → pw-ai-C8YhJRaI.js} +207 -32
  372. package/dist/{pw-ai-qEMUq5Mt.js → pw-ai-CKGenizV.js} +203 -29
  373. package/dist/{pw-ai-IOqEXO1O.js → pw-ai-D7devT89.js} +206 -32
  374. package/dist/{qmd-manager-CEwp3el1.js → qmd-manager-CQzWovq-.js} +71 -90
  375. package/dist/{qmd-manager-D6N3qvQ5.js → qmd-manager-Cs8RJVQp.js} +73 -90
  376. package/dist/{qmd-manager-C48QzrRe.js → qmd-manager-DdgrQ2kc.js} +71 -88
  377. package/dist/{qmd-manager-DaUqCKB_.js → qmd-manager-dyIoOvKl.js} +73 -90
  378. package/dist/{register.subclis-Cm-VJ5nP.js → register.subclis-ifHtmF3e.js} +29 -29
  379. package/dist/{reply-CBs4e9Rm.js → reply-VIHqsQ-k.js} +7906 -8743
  380. package/dist/{routes-9ygR0GOk.js → routes-CaCvio4Q.js} +36 -15
  381. package/dist/{routes-BrWrBk2R.js → routes-Cpfxk96k.js} +36 -14
  382. package/dist/{rpc-Cjuz2Gv1.js → rpc-BhB01Bhj.js} +3 -3
  383. package/dist/{rpc-DhkLVY5H.js → rpc-C5WsS_Ne.js} +3 -3
  384. package/dist/{run-main-BlZ5l-X9.js → run-main-DVy6KJTe.js} +88 -85
  385. package/dist/runner-B7CKBC80.js +1800 -0
  386. package/dist/runner-BEy5ZGFv.js +1901 -0
  387. package/dist/runner-Bv0BmJPF.js +1800 -0
  388. package/dist/runner-ChqVEgPx.js +1901 -0
  389. package/dist/{sandbox-qt49csTr.js → sandbox-BAChxjC5.js} +627 -157
  390. package/dist/{sandbox-CPZiaKcS.js → sandbox-DNHDwHw8.js} +628 -158
  391. package/dist/{sandbox-cli-C6_iNuqO.js → sandbox-cli-9oq67QEg.js} +22 -22
  392. package/dist/{sandbox-cli-C_wK-KAE.js → sandbox-cli-BiNq9yUe.js} +22 -22
  393. package/dist/{security-cli-CTTD1vms.js → security-cli-CRg03hvq.js} +28 -28
  394. package/dist/{security-cli-DRpGF2Yc.js → security-cli-LmBBHnmh.js} +28 -28
  395. package/dist/{server-context-lyNcqJYD.js → server-context-FwqBRH3K.js} +10 -10
  396. package/dist/{server-context-39mkstUs.js → server-context-RY7lRaxl.js} +9 -9
  397. package/dist/{server-node-events-V_G9BRRw.js → server-node-events-BbHOZX3O.js} +48 -43
  398. package/dist/{server-node-events-o9G18PaE.js → server-node-events-CngNLVL-.js} +50 -45
  399. package/dist/{service-DOlJdIqe.js → service-BnqdBTAK.js} +8 -4
  400. package/dist/{service-DDPRbf8a.js → service-DZN7KRok.js} +8 -4
  401. package/dist/{service-audit-VDRrWefh.js → service-audit-0Eil3ISN.js} +4 -4
  402. package/dist/{service-audit-CVy00Ze_.js → service-audit-B8KIOe8A.js} +4 -4
  403. package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-B-tyjp76.js} +14 -14
  404. package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-BYUb7fov.js} +14 -14
  405. package/dist/{shared-BnpC3wMU.js → shared-BCdNboU1.js} +3 -3
  406. package/dist/{shared-CagUDdmp.js → shared-CsAwU6-q.js} +3 -3
  407. package/dist/{shared-BDk_zC9p.js → shared-Csn6DLBA.js} +5 -5
  408. package/dist/{shared-C92wo-6f.js → shared-DEanAgja.js} +4 -4
  409. package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BrGkh5K7.js} +1 -1
  410. package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-CucvxYhu.js} +1 -1
  411. package/dist/{skills-Ccsv3IQq.js → skills-CE7by2IF.js} +151 -8
  412. package/dist/{skills-_eKGrw9z.js → skills-Dz15dAM4.js} +152 -9
  413. package/dist/{skills-cli-DqvLjooh.js → skills-cli-B5b75pDK.js} +13 -13
  414. package/dist/{skills-cli-DUncybht.js → skills-cli-CbCDrYwp.js} +13 -13
  415. package/dist/{skills-status-Cp2ZFhIx.js → skills-status-B99Us6yS.js} +2 -2
  416. package/dist/{skills-status-Ck0CCFZG.js → skills-status-ChM7JE47.js} +3 -3
  417. package/dist/{sqlite-DODNHWJb.js → sqlite-2UsPaJz5.js} +97 -2
  418. package/dist/{sqlite-cSdsHVEw.js → sqlite-CASnHrgX.js} +97 -1
  419. package/dist/{sqlite-Bwo2rASR.js → sqlite-CVWiMkGu.js} +97 -1
  420. package/dist/{sqlite-CpqIbY4-.js → sqlite-CcIWkGaM.js} +97 -1
  421. package/dist/{status-Bmx9_1C7.js → status-CKuX1-zb.js} +3 -3
  422. package/dist/{status-CBGgwlTW.js → status-Cm4q6o-I.js} +57 -49
  423. package/dist/{status-DkJgtvSz.js → status-DD2iqGc9.js} +4 -4
  424. package/dist/{subsystem-DPnkvS73.js → subsystem-DHfJG4gk.js} +73 -20
  425. package/dist/{system-cli-9fQ1uLiz.js → system-cli-BVJDR474.js} +87 -15
  426. package/dist/{system-cli-Gq8OWHFg.js → system-cli-C3Y_9VpI.js} +88 -16
  427. package/dist/{systemd-Pa7LURHB.js → systemd-DxddcFsa.js} +3 -3
  428. package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-BVLopJ9O.js} +1 -1
  429. package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-BThjV1Sr.js} +2 -2
  430. package/dist/{systemd-linger-6_naJcJp.js → systemd-linger-D3Va1Cv7.js} +2 -2
  431. package/dist/{systemd-BEWwfwn0.js → systemd-s3S2HVog.js} +3 -3
  432. package/dist/{table-Bb9gAVIp.js → table-BIk8Aan_.js} +2 -2
  433. package/dist/{table-cCoGqLsk.js → table-Bvka_vkc.js} +1 -1
  434. package/dist/{tool-display-DUVhO36P.js → tool-display-DbdMQFZx.js} +2 -2
  435. package/dist/{tool-display-DNOVCI6J.js → tool-display-kpW5Hg2z.js} +2 -2
  436. package/dist/{tui-DDVqLwqT.js → tui-B40Z2jMa.js} +120 -14
  437. package/dist/{tui-cli-CurbazQf.js → tui-cli-Bwa6K7xR.js} +28 -28
  438. package/dist/{tui-cli-BeN2K38I.js → tui-cli-DD6g7uZb.js} +27 -27
  439. package/dist/{tui-B9zLJxf6.js → tui-lFMZUnx6.js} +121 -13
  440. package/dist/{update-Ct9sqJC_.js → update-Bos8PPCG.js} +3 -3
  441. package/dist/{update--i077azM.js → update-Cg8MtrEr.js} +3 -3
  442. package/dist/{update-cli-CT5W0kpw.js → update-cli-CC-wTeje.js} +92 -73
  443. package/dist/{update-cli-C87lNK1S.js → update-cli-CULnXFL_.js} +91 -72
  444. package/dist/{update-runner-BIttRDyV.js → update-runner-BaLsla0c.js} +11 -11
  445. package/dist/{update-runner-xbeVkAD9.js → update-runner-Dbsdl5AU.js} +10 -10
  446. package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
  447. package/dist/{utils-BTaR--Ln.js → utils-BtIMES3N.js} +1 -1
  448. package/dist/{webhooks-cli-Db3zyJaw.js → webhooks-cli-ClHLUu_j.js} +21 -13
  449. package/dist/{webhooks-cli-DUUa8gVY.js → webhooks-cli-DVXr2uyN.js} +21 -13
  450. package/dist/{widearea-dns-BgYasW6m.js → widearea-dns-C4RnIR9O.js} +3 -3
  451. package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-Ypwgjpsr.js} +3 -3
  452. package/dist/{ws-C0k_dhCP.js → ws-BcJt4pcg.js} +24 -2
  453. package/dist/{ws-DtDKpbLR.js → ws-MC-rTJLe.js} +24 -2
  454. package/dist/{ws-log-cMNgAyLy.js → ws-log-WrJ4QYu7.js} +1 -1
  455. package/dist/{ws-log-C6vm_XMA.js → ws-log-lip4ETlm.js} +2 -2
  456. package/dist/{wsl-rfIr_Sde.js → wsl-BvTIzy-8.js} +5 -3
  457. package/docs/assets/install-script.svg +1 -0
  458. package/docs/automation/hooks.md +1 -38
  459. package/docs/automation/webhook.md +52 -2
  460. package/docs/channels/discord.md +389 -381
  461. package/docs/channels/grammy.md +1 -1
  462. package/docs/channels/imessage.md +229 -218
  463. package/docs/channels/index.md +1 -0
  464. package/docs/channels/irc.md +234 -0
  465. package/docs/channels/msteams.md +2 -0
  466. package/docs/channels/pairing.md +1 -1
  467. package/docs/channels/slack.md +295 -415
  468. package/docs/channels/telegram.md +397 -460
  469. package/docs/channels/whatsapp.md +338 -310
  470. package/docs/ci.md +0 -12
  471. package/docs/cli/hooks.md +1 -14
  472. package/docs/cli/index.md +6 -1
  473. package/docs/cli/logs.md +4 -0
  474. package/docs/cli/onboard.md +33 -0
  475. package/docs/cli/plugins.md +20 -1
  476. package/docs/cli/security.md +2 -0
  477. package/docs/concepts/architecture.md +0 -16
  478. package/docs/concepts/memory.md +7 -4
  479. package/docs/concepts/model-providers.md +27 -0
  480. package/docs/concepts/session-tool.md +1 -0
  481. package/docs/concepts/system-prompt.md +13 -0
  482. package/docs/docs.json +18 -12
  483. package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +229 -0
  484. package/docs/gateway/configuration-examples.md +9 -2
  485. package/docs/gateway/configuration-reference.md +2345 -0
  486. package/docs/gateway/configuration.md +338 -3297
  487. package/docs/gateway/index.md +162 -238
  488. package/docs/gateway/openai-http-api.md +1 -0
  489. package/docs/gateway/openresponses-http-api.md +16 -0
  490. package/docs/gateway/remote-gateway-readme.md +0 -16
  491. package/docs/gateway/security/index.md +4 -16
  492. package/docs/gateway/tools-invoke-http-api.md +26 -1
  493. package/docs/help/faq.md +9 -0
  494. package/docs/help/testing.md +11 -0
  495. package/docs/install/docker.md +18 -0
  496. package/docs/install/hetzner.md +21 -0
  497. package/docs/install/installer.md +20 -0
  498. package/docs/nodes/audio.md +19 -0
  499. package/docs/platforms/mac/release.md +7 -7
  500. package/docs/providers/glm.md +3 -3
  501. package/docs/providers/huggingface.md +209 -0
  502. package/docs/providers/index.md +3 -0
  503. package/docs/providers/litellm.md +153 -0
  504. package/docs/providers/together.md +2 -2
  505. package/docs/providers/vllm.md +92 -0
  506. package/docs/providers/zai.md +2 -2
  507. package/docs/reference/credits.md +4 -28
  508. package/docs/reference/test.md +2 -1
  509. package/docs/reference/token-use.md +1 -1
  510. package/docs/reference/transcript-hygiene.md +18 -0
  511. package/docs/start/getting-started.md +5 -0
  512. package/docs/start/onboarding-overview.md +51 -0
  513. package/docs/start/onboarding.md +1 -0
  514. package/docs/start/openclaw.md +0 -16
  515. package/docs/start/wizard-cli-automation.md +17 -0
  516. package/docs/start/wizard-cli-reference.md +12 -0
  517. package/docs/start/wizard.md +3 -1
  518. package/docs/tools/browser.md +6 -0
  519. package/docs/zh-CN/automation/hooks.md +1 -38
  520. package/docs/zh-CN/cli/hooks.md +1 -14
  521. package/extensions/bluebubbles/package.json +1 -1
  522. package/extensions/bluebubbles/src/monitor.test.ts +40 -28
  523. package/extensions/bluebubbles/src/monitor.ts +0 -4
  524. package/extensions/copilot-proxy/package.json +1 -1
  525. package/extensions/diagnostics-otel/package.json +10 -10
  526. package/extensions/discord/package.json +1 -1
  527. package/extensions/feishu/package.json +2 -5
  528. package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
  529. package/extensions/feishu/src/bot.test.ts +265 -0
  530. package/extensions/feishu/src/bot.ts +73 -18
  531. package/extensions/feishu/src/channel.test.ts +48 -0
  532. package/extensions/feishu/src/channel.ts +1 -3
  533. package/extensions/feishu/src/config-schema.ts +6 -0
  534. package/extensions/feishu/src/docx.ts +14 -4
  535. package/extensions/feishu/src/media.test.ts +151 -0
  536. package/extensions/feishu/src/media.ts +27 -13
  537. package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
  538. package/extensions/feishu/src/reply-dispatcher.ts +124 -67
  539. package/extensions/feishu/src/streaming-card.ts +223 -0
  540. package/extensions/feishu/src/targets.test.ts +16 -0
  541. package/extensions/feishu/src/targets.ts +1 -1
  542. package/extensions/google-antigravity-auth/package.json +1 -1
  543. package/extensions/google-gemini-cli-auth/oauth.test.ts +4 -1
  544. package/extensions/google-gemini-cli-auth/package.json +1 -1
  545. package/extensions/googlechat/package.json +1 -1
  546. package/extensions/googlechat/src/channel.ts +3 -20
  547. package/extensions/googlechat/src/resolve-target.test.ts +138 -0
  548. package/extensions/imessage/package.json +1 -1
  549. package/extensions/irc/index.ts +17 -0
  550. package/extensions/irc/openclaw.plugin.json +9 -0
  551. package/extensions/irc/package.json +14 -0
  552. package/extensions/irc/src/accounts.ts +268 -0
  553. package/extensions/irc/src/channel.ts +367 -0
  554. package/extensions/irc/src/client.test.ts +43 -0
  555. package/extensions/irc/src/client.ts +439 -0
  556. package/extensions/irc/src/config-schema.test.ts +27 -0
  557. package/extensions/irc/src/config-schema.ts +97 -0
  558. package/extensions/irc/src/control-chars.ts +22 -0
  559. package/extensions/irc/src/inbound.ts +334 -0
  560. package/extensions/irc/src/monitor.test.ts +43 -0
  561. package/extensions/irc/src/monitor.ts +158 -0
  562. package/extensions/irc/src/normalize.test.ts +46 -0
  563. package/extensions/irc/src/normalize.ts +117 -0
  564. package/extensions/irc/src/onboarding.test.ts +118 -0
  565. package/extensions/irc/src/onboarding.ts +479 -0
  566. package/extensions/irc/src/policy.test.ts +132 -0
  567. package/extensions/irc/src/policy.ts +157 -0
  568. package/extensions/irc/src/probe.ts +64 -0
  569. package/extensions/irc/src/protocol.test.ts +44 -0
  570. package/extensions/irc/src/protocol.ts +169 -0
  571. package/extensions/irc/src/runtime.ts +14 -0
  572. package/extensions/irc/src/send.ts +99 -0
  573. package/extensions/irc/src/types.ts +94 -0
  574. package/extensions/line/package.json +1 -1
  575. package/extensions/llm-task/package.json +1 -1
  576. package/extensions/lobster/package.json +1 -1
  577. package/extensions/matrix/CHANGELOG.md +6 -0
  578. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  579. package/extensions/matrix/node_modules/.bin/markdown-it.CMD +2 -2
  580. package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +2 -2
  581. package/extensions/matrix/package.json +2 -2
  582. package/extensions/matrix/src/matrix/monitor/media.ts +4 -2
  583. package/extensions/mattermost/package.json +1 -1
  584. package/extensions/memory-core/package.json +1 -1
  585. package/extensions/memory-lancedb/index.ts +6 -2
  586. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  587. package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
  588. package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
  589. package/extensions/memory-lancedb/package.json +2 -2
  590. package/extensions/minimax-portal-auth/index.ts +7 -5
  591. package/extensions/minimax-portal-auth/package.json +1 -1
  592. package/extensions/msteams/CHANGELOG.md +6 -0
  593. package/extensions/msteams/package.json +1 -1
  594. package/extensions/msteams/src/media-helpers.test.ts +9 -0
  595. package/extensions/msteams/src/media-helpers.ts +15 -1
  596. package/extensions/msteams/src/mentions.test.ts +235 -0
  597. package/extensions/msteams/src/mentions.ts +114 -0
  598. package/extensions/msteams/src/messenger.test.ts +81 -1
  599. package/extensions/msteams/src/messenger.ts +11 -2
  600. package/extensions/nextcloud-talk/package.json +1 -1
  601. package/extensions/nostr/CHANGELOG.md +6 -0
  602. package/extensions/nostr/package.json +2 -2
  603. package/extensions/open-prose/package.json +1 -1
  604. package/extensions/signal/package.json +1 -1
  605. package/extensions/slack/package.json +1 -1
  606. package/extensions/telegram/package.json +1 -1
  607. package/extensions/telegram/src/channel.ts +1 -0
  608. package/extensions/tlon/package.json +1 -1
  609. package/extensions/twitch/CHANGELOG.md +6 -0
  610. package/extensions/twitch/package.json +1 -1
  611. package/extensions/twitch/src/onboarding.test.ts +5 -0
  612. package/extensions/twitch/src/outbound.test.ts +17 -6
  613. package/extensions/twitch/src/outbound.ts +12 -10
  614. package/extensions/voice-call/CHANGELOG.md +6 -0
  615. package/extensions/voice-call/package.json +1 -1
  616. package/extensions/voice-call/src/media-stream.ts +7 -1
  617. package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
  618. package/extensions/voice-call/src/providers/twilio.ts +12 -1
  619. package/extensions/whatsapp/package.json +1 -1
  620. package/extensions/whatsapp/src/channel.ts +6 -16
  621. package/extensions/whatsapp/src/resolve-target.test.ts +154 -0
  622. package/extensions/zalo/CHANGELOG.md +6 -0
  623. package/extensions/zalo/package.json +1 -1
  624. package/extensions/zalouser/CHANGELOG.md +6 -0
  625. package/extensions/zalouser/package.json +1 -1
  626. package/package.json +26 -22
  627. package/dist/auth-BcNHFK-i.js +0 -184
  628. package/dist/auth-DkjJ3pm-.js +0 -184
  629. package/dist/boolean-M-esQJt6.js +0 -30
  630. package/dist/bundled/soul-evil/HOOK.md +0 -71
  631. package/dist/bundled/soul-evil/handler.js +0 -194
  632. package/dist/cli-B631__JU.js +0 -89
  633. package/dist/cli-DVhCVZZ6.js +0 -86
  634. package/dist/config-CI7EpvlP.js +0 -15
  635. package/dist/constants-DuoCkWRh.js +0 -65
  636. package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
  637. package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
  638. package/dist/date-time-c6HTX6IW.js +0 -187
  639. package/dist/frontmatter-xwTm0734.js +0 -105
  640. package/dist/parse-DqAvJRIf.js +0 -23
  641. package/dist/parse-duration-De_tAQSe.js +0 -24
  642. package/dist/parse-timeout-DV8NQQWk.js +0 -16
  643. package/dist/paths-IivnSNkP.js +0 -51
  644. package/dist/paths-MnZaxqPw.js +0 -48
  645. package/dist/paths-uoGO2aiO.js +0 -48
  646. package/dist/pi-model-discovery-DzFOAbQt.js +0 -20
  647. package/dist/plugin-sdk/tui/tui-formatters.d.ts +0 -31
  648. package/dist/session-key-nXYQSv-a.js +0 -167
  649. package/dist/tailscale-DU6DgqVy.js +0 -225
  650. package/dist/tailscale-DzJUWmKf.js +0 -252
  651. package/dist/utils-dp_OM900.js +0 -476
  652. package/docs/hooks/soul-evil.md +0 -69
  653. package/docs/zh-CN/hooks/soul-evil.md +0 -72
  654. package/skills/local-places/SERVER_README.md +0 -101
  655. package/skills/local-places/SKILL.md +0 -102
  656. package/skills/local-places/pyproject.toml +0 -21
  657. package/skills/local-places/src/local_places/__init__.py +0 -2
  658. package/skills/local-places/src/local_places/google_places.py +0 -314
  659. package/skills/local-places/src/local_places/main.py +0 -65
  660. package/skills/local-places/src/local_places/schemas.py +0 -107
  661. /package/dist/{archive-CXhvR9nU.js → archive-aSMUcOc6.js} +0 -0
  662. /package/dist/{archive-D0z3LZDK.js → archive-beaSfAzA.js} +0 -0
  663. /package/dist/{brew-BIrWdDps.js → brew-DlQQMJ3n.js} +0 -0
  664. /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.js} +0 -0
  665. /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
  666. /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-CodyYLHe.js} +0 -0
  667. /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
  668. /package/dist/{constants-CNTiY-ZN.js → constants-BvQ6S8j5.js} +0 -0
  669. /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
  670. /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
  671. /package/dist/{errors-x4NYs-1P.js → errors-Cojm0Kl7.js} +0 -0
  672. /package/dist/{format-CaxeRcue.js → format-CL8VOhxX.js} +0 -0
  673. /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
  674. /package/dist/{format-duration-CEmFWLyX.js → format-duration--hQihAvf.js} +0 -0
  675. /package/dist/{format-duration-DCXJx2ba.js → format-duration-84n6_DgO.js} +0 -0
  676. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Cywx6ldk.js} +0 -0
  677. /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
  678. /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
  679. /package/dist/{helpers-DdwqKAAS.js → helpers-ByYj2Aq5.js} +0 -0
  680. /package/dist/{helpers-CRzoyyXS.js → helpers-CUVSCDJV.js} +0 -0
  681. /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
  682. /package/dist/{is-main-qJ675wPV.js → is-main-B9A8S9YC.js} +0 -0
  683. /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.js} +0 -0
  684. /package/dist/{logging-BzvBIA3Y.js → logging-D-Jq2wIo.js} +0 -0
  685. /package/dist/{logging-CfEk_PnX.js → logging-fywhKCmE.js} +0 -0
  686. /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
  687. /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BuRiE-Ij.js} +0 -0
  688. /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-CfVgwy6x.js} +0 -0
  689. /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
  690. /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
  691. /package/dist/{pi-model-discovery-DzEIEgHL.js → pi-model-discovery-EwKVHlZB.js} +0 -0
  692. /package/dist/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
  693. /package/dist/{prompts-CXLLIBwP.js → prompts-Dszjy1n_.js} +0 -0
  694. /package/dist/{redact-BRmQPYDR.js → redact-BIMJ3ntQ.js} +0 -0
  695. /package/dist/{redact-BHmk44DI.js → redact-BRsnXqwD.js} +0 -0
  696. /package/dist/{redact-DAKeu7PA.js → redact-UvkXqguc.js} +0 -0
  697. /package/dist/{status-Cv36yYdi.js → status-C_dMhoE0.js} +0 -0
  698. /package/dist/{status-Drziap9H.js → status-DCkF_L3U.js} +0 -0
  699. /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
  700. /package/dist/{tailnet-CL5GtL7t.js → tailnet-DATIFSsY.js} +0 -0
  701. /package/dist/{tailnet-DGRSvYuQ.js → tailnet-uoFvUSsw.js} +0 -0
  702. /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
  703. /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
  704. /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-Ch7wLX-j.js} +0 -0
  705. /package/dist/{usage-format-6Uar63S0.js → usage-format-Bhl_WCWP.js} +0 -0
  706. /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
  707. /package/extensions/{feishu → irc}/node_modules/.bin/claw +0 -0
  708. /package/extensions/{feishu → irc}/node_modules/.bin/claw.CMD +0 -0
  709. /package/extensions/{feishu → irc}/node_modules/.bin/claw.ps1 +0 -0
  710. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot +0 -0
  711. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.CMD +0 -0
  712. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.ps1 +0 -0
  713. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot +0 -0
  714. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.CMD +0 -0
  715. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.ps1 +0 -0
@@ -1,7 +1,7 @@
1
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, r as GATEWAY_SERVICE_MARKER } from "./constants-DuoCkWRh.js";
2
- import { c as getMinimalServicePathPartsFromEnv, l as isSystemNodePath, m as resolveSystemNodePath, u as isVersionManagedNodePath } from "./daemon-runtime-CMqH8BUE.js";
3
- import { o as resolveGatewayLogPaths, s as resolveLaunchAgentPlistPath } from "./service-DDPRbf8a.js";
4
- import { o as resolveSystemdUserUnitPath } from "./systemd-BEWwfwn0.js";
1
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, r as GATEWAY_SERVICE_MARKER } from "./constants-BvQ6S8j5.js";
2
+ import { c as getMinimalServicePathPartsFromEnv, l as isSystemNodePath, m as resolveSystemNodePath, u as isVersionManagedNodePath } from "./daemon-runtime-ZWXvLDxx.js";
3
+ import { o as resolveGatewayLogPaths, s as resolveLaunchAgentPlistPath } from "./service-DZN7KRok.js";
4
+ import { o as resolveSystemdUserUnitPath } from "./systemd-s3S2HVog.js";
5
5
  import { execFile } from "node:child_process";
6
6
  import path from "node:path";
7
7
  import { promisify } from "node:util";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as resolveSessionTranscriptsDirForAgent, n as resolveSessionFilePath } from "./paths-IivnSNkP.js";
3
- import { i as resolveModelCostConfig, t as estimateUsageCost } from "./usage-format-6Uar63S0.js";
2
+ import { n as resolveSessionFilePath, s as resolveSessionTranscriptsDirForAgent } from "./paths-BZK4Ct0I.js";
3
+ import { i as resolveModelCostConfig, t as estimateUsageCost } from "./usage-format-Bhl_WCWP.js";
4
4
  import path from "node:path";
5
5
  import fs from "node:fs";
6
6
  import readline from "node:readline";
@@ -46,17 +46,17 @@ function derivePromptTokens(usage) {
46
46
  return sum > 0 ? sum : void 0;
47
47
  }
48
48
  function deriveSessionTotalTokens(params) {
49
+ const promptOverride = params.promptTokens;
50
+ const hasPromptOverride = typeof promptOverride === "number" && Number.isFinite(promptOverride) && promptOverride > 0;
49
51
  const usage = params.usage;
50
- if (!usage) return;
51
- const input = usage.input ?? 0;
52
- let total = derivePromptTokens({
53
- input: usage.input,
54
- cacheRead: usage.cacheRead,
55
- cacheWrite: usage.cacheWrite
56
- }) ?? usage.total ?? input;
52
+ if (!usage && !hasPromptOverride) return;
53
+ const input = usage?.input ?? 0;
54
+ let total = (hasPromptOverride ? promptOverride : derivePromptTokens({
55
+ input: usage?.input,
56
+ cacheRead: usage?.cacheRead,
57
+ cacheWrite: usage?.cacheWrite
58
+ })) ?? usage?.total ?? input;
57
59
  if (!(total > 0)) return;
58
- const contextTokens = params.contextTokens;
59
- if (typeof contextTokens === "number" && Number.isFinite(contextTokens) && contextTokens > 0) total = Math.min(total, contextTokens);
60
60
  return total;
61
61
  }
62
62
 
@@ -380,7 +380,7 @@ async function discoverAllSessions(params) {
380
380
  return discovered.toSorted((a, b) => b.mtime - a.mtime);
381
381
  }
382
382
  async function loadSessionCostSummary(params) {
383
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
383
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
384
384
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
385
385
  const totals = emptyTotals();
386
386
  let firstActivity;
@@ -564,7 +564,7 @@ async function loadSessionCostSummary(params) {
564
564
  };
565
565
  }
566
566
  async function loadSessionUsageTimeSeries(params) {
567
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
567
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
568
568
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
569
569
  const points = [];
570
570
  let cumulativeTokens = 0;
@@ -614,7 +614,7 @@ async function loadSessionUsageTimeSeries(params) {
614
614
  };
615
615
  }
616
616
  async function loadSessionLogs(params) {
617
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
617
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
618
618
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
619
619
  const logs = [];
620
620
  const limit = params.limit ?? 50;
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as resolveSessionTranscriptsDirForAgent, n as resolveSessionFilePath } from "./paths-Bkhd_qY8.js";
3
- import { i as resolveModelCostConfig, t as estimateUsageCost } from "./usage-format-hd37en6b.js";
2
+ import { n as resolveSessionFilePath, s as resolveSessionTranscriptsDirForAgent } from "./paths-DdKf4lHp.js";
3
+ import { i as resolveModelCostConfig, t as estimateUsageCost } from "./usage-format-CpORtVCG.js";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import readline from "node:readline";
@@ -46,17 +46,17 @@ function derivePromptTokens(usage) {
46
46
  return sum > 0 ? sum : void 0;
47
47
  }
48
48
  function deriveSessionTotalTokens(params) {
49
+ const promptOverride = params.promptTokens;
50
+ const hasPromptOverride = typeof promptOverride === "number" && Number.isFinite(promptOverride) && promptOverride > 0;
49
51
  const usage = params.usage;
50
- if (!usage) return;
51
- const input = usage.input ?? 0;
52
- let total = derivePromptTokens({
53
- input: usage.input,
54
- cacheRead: usage.cacheRead,
55
- cacheWrite: usage.cacheWrite
56
- }) ?? usage.total ?? input;
52
+ if (!usage && !hasPromptOverride) return;
53
+ const input = usage?.input ?? 0;
54
+ let total = (hasPromptOverride ? promptOverride : derivePromptTokens({
55
+ input: usage?.input,
56
+ cacheRead: usage?.cacheRead,
57
+ cacheWrite: usage?.cacheWrite
58
+ })) ?? usage?.total ?? input;
57
59
  if (!(total > 0)) return;
58
- const contextTokens = params.contextTokens;
59
- if (typeof contextTokens === "number" && Number.isFinite(contextTokens) && contextTokens > 0) total = Math.min(total, contextTokens);
60
60
  return total;
61
61
  }
62
62
 
@@ -380,7 +380,7 @@ async function discoverAllSessions(params) {
380
380
  return discovered.toSorted((a, b) => b.mtime - a.mtime);
381
381
  }
382
382
  async function loadSessionCostSummary(params) {
383
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
383
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
384
384
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
385
385
  const totals = emptyTotals();
386
386
  let firstActivity;
@@ -564,7 +564,7 @@ async function loadSessionCostSummary(params) {
564
564
  };
565
565
  }
566
566
  async function loadSessionUsageTimeSeries(params) {
567
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
567
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
568
568
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
569
569
  const points = [];
570
570
  let cumulativeTokens = 0;
@@ -614,7 +614,7 @@ async function loadSessionUsageTimeSeries(params) {
614
614
  };
615
615
  }
616
616
  async function loadSessionLogs(params) {
617
- const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry) : void 0);
617
+ const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
618
618
  if (!sessionFile || !fs.existsSync(sessionFile)) return null;
619
619
  const logs = [];
620
620
  const limit = params.limit ?? 50;
@@ -1,7 +1,7 @@
1
- import { c as defaultRuntime } from "./subsystem-DPnkvS73.js";
1
+ import { c as defaultRuntime } from "./subsystem-DHfJG4gk.js";
2
2
  import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
3
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-CNTiY-ZN.js";
4
- import { t as resolveGatewayService } from "./service-DOlJdIqe.js";
3
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
4
+ import { t as resolveGatewayService } from "./service-BnqdBTAK.js";
5
5
 
6
6
  //#region src/cli/gateway-cli/shared.ts
7
7
  function parsePort(raw) {
@@ -1,7 +1,7 @@
1
1
  import { p as defaultRuntime } from "./entry.js";
2
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
3
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-DuoCkWRh.js";
4
- import { t as resolveGatewayService } from "./service-DDPRbf8a.js";
2
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
3
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
4
+ import { t as resolveGatewayService } from "./service-DZN7KRok.js";
5
5
 
6
6
  //#region src/cli/gateway-cli/shared.ts
7
7
  function parsePort(raw) {
@@ -1,8 +1,8 @@
1
- import { M as getResolvedLoggerSettings, p as defaultRuntime } from "./entry.js";
2
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
3
- import { s as pickPrimaryLanIPv4 } from "./ws-C0k_dhCP.js";
4
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-DuoCkWRh.js";
5
- import { o as resolveGatewayLogPaths } from "./service-DDPRbf8a.js";
1
+ import { N as getResolvedLoggerSettings, p as defaultRuntime } from "./entry.js";
2
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
3
+ import { c as pickPrimaryLanIPv4 } from "./ws-MC-rTJLe.js";
4
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
5
+ import { o as resolveGatewayLogPaths } from "./service-DZN7KRok.js";
6
6
  import { Writable } from "node:stream";
7
7
 
8
8
  //#region src/cli/daemon-cli/response.ts
@@ -1,8 +1,8 @@
1
- import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-DPnkvS73.js";
1
+ import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-DHfJG4gk.js";
2
2
  import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
3
- import { s as pickPrimaryLanIPv4 } from "./ws-DtDKpbLR.js";
4
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-CNTiY-ZN.js";
5
- import { o as resolveGatewayLogPaths } from "./service-DOlJdIqe.js";
3
+ import { c as pickPrimaryLanIPv4 } from "./ws-BcJt4pcg.js";
4
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
5
+ import { o as resolveGatewayLogPaths } from "./service-BnqdBTAK.js";
6
6
  import { Writable } from "node:stream";
7
7
 
8
8
  //#region src/cli/daemon-cli/response.ts
@@ -1,4 +1,4 @@
1
- import { i as hasErrnoCode } from "./errors-x4NYs-1P.js";
1
+ import { i as hasErrnoCode } from "./errors-Cojm0Kl7.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs/promises";
4
4
 
@@ -1,4 +1,4 @@
1
- import { i as hasErrnoCode } from "./errors-B0eT3jVv.js";
1
+ import { i as hasErrnoCode } from "./errors-Bv81hF2P.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs/promises";
4
4
 
@@ -1,10 +1,12 @@
1
1
  import { a as parseBooleanValue, o as createSubsystemLogger } from "./entry.js";
2
- import { t as CONFIG_DIR, y as resolveUserPath } from "./utils-Dk86IbEs.js";
3
- import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-9ILYSmJ9.js";
4
- import { a as MANIFEST_KEY, c as normalizePluginsConfig, i as LEGACY_MANIFEST_KEYS, l as resolveEnableState, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-D5SiA3xq.js";
2
+ import { t as CONFIG_DIR, y as resolveUserPath } from "./utils-BLJAc3ZV.js";
3
+ import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-BKsZvO6K.js";
4
+ import { a as MANIFEST_KEY, d as resolveMemorySlotDecision, i as LEGACY_MANIFEST_KEYS, l as normalizePluginsConfig, t as loadPluginManifestRegistry, u as resolveEnableState } from "./manifest-registry-CVsqjgX0.js";
5
5
  import path from "node:path";
6
+ import os from "node:os";
6
7
  import fs from "node:fs";
7
8
  import JSON5 from "json5";
9
+ import fs$1 from "node:fs/promises";
8
10
  import { fileURLToPath } from "node:url";
9
11
  import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
10
12
  import YAML from "yaml";
@@ -258,8 +260,16 @@ function isBundledSkillAllowed(entry, allowlist) {
258
260
  }
259
261
  function hasBinary(bin) {
260
262
  const parts = (process.env.PATH ?? "").split(path.delimiter).filter(Boolean);
261
- for (const part of parts) {
262
- const candidate = path.join(part, bin);
263
+ const winPathExt = process.env.PATHEXT;
264
+ const winExtensions = winPathExt !== void 0 ? winPathExt.split(";").filter(Boolean) : [
265
+ ".EXE",
266
+ ".CMD",
267
+ ".BAT",
268
+ ".COM"
269
+ ];
270
+ const extensions = process.platform === "win32" ? ["", ...winExtensions] : [""];
271
+ for (const part of parts) for (const ext of extensions) {
272
+ const candidate = path.join(part, bin + ext);
263
273
  try {
264
274
  fs.accessSync(candidate, fs.constants.X_OK);
265
275
  return true;
@@ -360,6 +370,83 @@ function applySkillEnvOverridesFromSnapshot(params) {
360
370
  };
361
371
  }
362
372
 
373
+ //#endregion
374
+ //#region src/agents/sandbox-paths.ts
375
+ const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
376
+ const HTTP_URL_RE = /^https?:\/\//i;
377
+ const DATA_URL_RE = /^data:/i;
378
+ function normalizeUnicodeSpaces(str) {
379
+ return str.replace(UNICODE_SPACES, " ");
380
+ }
381
+ function expandPath(filePath) {
382
+ const normalized = normalizeUnicodeSpaces(filePath);
383
+ if (normalized === "~") return os.homedir();
384
+ if (normalized.startsWith("~/")) return os.homedir() + normalized.slice(1);
385
+ return normalized;
386
+ }
387
+ function resolveToCwd(filePath, cwd) {
388
+ const expanded = expandPath(filePath);
389
+ if (path.isAbsolute(expanded)) return expanded;
390
+ return path.resolve(cwd, expanded);
391
+ }
392
+ function resolveSandboxPath(params) {
393
+ const resolved = resolveToCwd(params.filePath, params.cwd);
394
+ const rootResolved = path.resolve(params.root);
395
+ const relative = path.relative(rootResolved, resolved);
396
+ if (!relative || relative === "") return {
397
+ resolved,
398
+ relative: ""
399
+ };
400
+ if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`Path escapes sandbox root (${shortPath(rootResolved)}): ${params.filePath}`);
401
+ return {
402
+ resolved,
403
+ relative
404
+ };
405
+ }
406
+ async function assertSandboxPath(params) {
407
+ const resolved = resolveSandboxPath(params);
408
+ await assertNoSymlink(resolved.relative, path.resolve(params.root));
409
+ return resolved;
410
+ }
411
+ function assertMediaNotDataUrl(media) {
412
+ const raw = media.trim();
413
+ if (DATA_URL_RE.test(raw)) throw new Error("data: URLs are not supported for media. Use buffer instead.");
414
+ }
415
+ async function resolveSandboxedMediaSource(params) {
416
+ const raw = params.media.trim();
417
+ if (!raw) return raw;
418
+ if (HTTP_URL_RE.test(raw)) return raw;
419
+ let candidate = raw;
420
+ if (/^file:\/\//i.test(candidate)) try {
421
+ candidate = fileURLToPath(candidate);
422
+ } catch {
423
+ throw new Error(`Invalid file:// URL for sandboxed media: ${raw}`);
424
+ }
425
+ return (await assertSandboxPath({
426
+ filePath: candidate,
427
+ cwd: params.sandboxRoot,
428
+ root: params.sandboxRoot
429
+ })).resolved;
430
+ }
431
+ async function assertNoSymlink(relative, root) {
432
+ if (!relative) return;
433
+ const parts = relative.split(path.sep).filter(Boolean);
434
+ let current = root;
435
+ for (const part of parts) {
436
+ current = path.join(current, part);
437
+ try {
438
+ if ((await fs$1.lstat(current)).isSymbolicLink()) throw new Error(`Symlink not allowed in sandbox path: ${current}`);
439
+ } catch (err) {
440
+ if (err.code === "ENOENT") return;
441
+ throw err;
442
+ }
443
+ }
444
+ }
445
+ function shortPath(value) {
446
+ if (value.startsWith(os.homedir())) return `~${value.slice(os.homedir().length)}`;
447
+ return value;
448
+ }
449
+
363
450
  //#endregion
364
451
  //#region src/agents/skills/bundled-dir.ts
365
452
  function looksLikeSkillsDir(dir) {
@@ -517,7 +604,7 @@ function loadSkillEntries(workspaceDir, opts) {
517
604
  return [];
518
605
  };
519
606
  const managedSkillsDir = opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills");
520
- const workspaceSkillsDir = path.join(workspaceDir, "skills");
607
+ const workspaceSkillsDir = path.resolve(workspaceDir, "skills");
521
608
  const bundledSkillsDir = opts?.bundledSkillsDir ?? resolveBundledSkillsDir();
522
609
  const extraDirs = (opts?.config?.skills?.load?.extraDirs ?? []).map((d) => typeof d === "string" ? d.trim() : "").filter(Boolean);
523
610
  const pluginSkillDirs = resolvePluginSkillDirs({
@@ -539,6 +626,14 @@ function loadSkillEntries(workspaceDir, opts) {
539
626
  dir: managedSkillsDir,
540
627
  source: "openclaw-managed"
541
628
  });
629
+ const personalAgentsSkills = loadSkills({
630
+ dir: path.resolve(os.homedir(), ".agents", "skills"),
631
+ source: "agents-skills-personal"
632
+ });
633
+ const projectAgentsSkills = loadSkills({
634
+ dir: path.resolve(workspaceDir, ".agents", "skills"),
635
+ source: "agents-skills-project"
636
+ });
542
637
  const workspaceSkills = loadSkills({
543
638
  dir: workspaceSkillsDir,
544
639
  source: "openclaw-workspace"
@@ -547,6 +642,8 @@ function loadSkillEntries(workspaceDir, opts) {
547
642
  for (const skill of extraSkills) merged.set(skill.name, skill);
548
643
  for (const skill of bundledSkills) merged.set(skill.name, skill);
549
644
  for (const skill of managedSkills) merged.set(skill.name, skill);
645
+ for (const skill of personalAgentsSkills) merged.set(skill.name, skill);
646
+ for (const skill of projectAgentsSkills) merged.set(skill.name, skill);
550
647
  for (const skill of workspaceSkills) merged.set(skill.name, skill);
551
648
  return Array.from(merged.values()).map((skill) => {
552
649
  let frontmatter = {};
@@ -593,6 +690,36 @@ function resolveSkillsPromptForRun(params) {
593
690
  function loadWorkspaceSkillEntries(workspaceDir, opts) {
594
691
  return loadSkillEntries(workspaceDir, opts);
595
692
  }
693
+ function resolveUniqueSyncedSkillDirName(base, used) {
694
+ if (!used.has(base)) {
695
+ used.add(base);
696
+ return base;
697
+ }
698
+ for (let index = 2; index < 1e4; index += 1) {
699
+ const candidate = `${base}-${index}`;
700
+ if (!used.has(candidate)) {
701
+ used.add(candidate);
702
+ return candidate;
703
+ }
704
+ }
705
+ let fallbackIndex = 1e4;
706
+ let fallback = `${base}-${fallbackIndex}`;
707
+ while (used.has(fallback)) {
708
+ fallbackIndex += 1;
709
+ fallback = `${base}-${fallbackIndex}`;
710
+ }
711
+ used.add(fallback);
712
+ return fallback;
713
+ }
714
+ function resolveSyncedSkillDestinationPath(params) {
715
+ const sourceDirName = path.basename(params.entry.skill.baseDir).trim();
716
+ if (!sourceDirName || sourceDirName === "." || sourceDirName === "..") return null;
717
+ return resolveSandboxPath({
718
+ filePath: resolveUniqueSyncedSkillDirName(sourceDirName, params.usedDirNames),
719
+ cwd: params.targetSkillsDir,
720
+ root: params.targetSkillsDir
721
+ }).resolved;
722
+ }
596
723
  async function syncSkillsToWorkspace(params) {
597
724
  const sourceDir = resolveUserPath(params.sourceWorkspaceDir);
598
725
  const targetDir = resolveUserPath(params.targetWorkspaceDir);
@@ -609,8 +736,24 @@ async function syncSkillsToWorkspace(params) {
609
736
  force: true
610
737
  });
611
738
  await fsp.mkdir(targetSkillsDir, { recursive: true });
739
+ const usedDirNames = /* @__PURE__ */ new Set();
612
740
  for (const entry of entries) {
613
- const dest = path.join(targetSkillsDir, entry.skill.name);
741
+ let dest = null;
742
+ try {
743
+ dest = resolveSyncedSkillDestinationPath({
744
+ targetSkillsDir,
745
+ entry,
746
+ usedDirNames
747
+ });
748
+ } catch (error) {
749
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
750
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: ${message}`);
751
+ continue;
752
+ }
753
+ if (!dest) {
754
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: invalid source directory name`);
755
+ continue;
756
+ }
614
757
  try {
615
758
  await fsp.cp(entry.skill.baseDir, dest, {
616
759
  recursive: true,
@@ -690,4 +833,4 @@ function resolveSkillsInstallPreferences(config) {
690
833
  }
691
834
 
692
835
  //#endregion
693
- export { resolveSkillKey as _, resolveSkillsPromptForRun as a, resolveBundledSkillsDir as c, hasBinary as d, isBundledSkillAllowed as f, resolveSkillConfig as g, resolveConfigPath as h, loadWorkspaceSkillEntries as i, applySkillEnvOverrides as l, resolveBundledAllowlist as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, isConfigPathTruthy as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, applySkillEnvOverridesFromSnapshot as u, parseFrontmatterBlock as v };
836
+ export { parseFrontmatterBlock as S, isConfigPathTruthy as _, resolveSkillsPromptForRun as a, resolveSkillConfig as b, resolveBundledSkillsDir as c, resolveSandboxPath as d, resolveSandboxedMediaSource as f, isBundledSkillAllowed as g, hasBinary as h, loadWorkspaceSkillEntries as i, assertMediaNotDataUrl as l, applySkillEnvOverridesFromSnapshot as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, applySkillEnvOverrides as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, assertSandboxPath as u, resolveBundledAllowlist as v, resolveSkillKey as x, resolveConfigPath as y };
@@ -1,12 +1,14 @@
1
- import { t as createSubsystemLogger } from "./subsystem-DPnkvS73.js";
2
- import { b as resolveUserPath, t as CONFIG_DIR } from "./utils-BTaR--Ln.js";
3
- import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-93W6UrUK.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-DHfJG4gk.js";
2
+ import { b as resolveUserPath, t as CONFIG_DIR } from "./utils-BtIMES3N.js";
3
+ import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-CEnmuBUN.js";
4
4
  import { t as parseBooleanValue } from "./boolean-BgXe2hyu.js";
5
- import { a as MANIFEST_KEY, c as normalizePluginsConfig, i as LEGACY_MANIFEST_KEYS, l as resolveEnableState, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-DyMRD3rY.js";
5
+ import { a as MANIFEST_KEY, d as resolveMemorySlotDecision, i as LEGACY_MANIFEST_KEYS, l as normalizePluginsConfig, t as loadPluginManifestRegistry, u as resolveEnableState } from "./manifest-registry-jeAPx6AW.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import fs from "node:fs";
8
+ import os from "node:os";
8
9
  import path from "node:path";
9
10
  import JSON5 from "json5";
11
+ import fs$1 from "node:fs/promises";
10
12
  import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
11
13
  import YAML from "yaml";
12
14
 
@@ -259,8 +261,16 @@ function isBundledSkillAllowed(entry, allowlist) {
259
261
  }
260
262
  function hasBinary(bin) {
261
263
  const parts = (process.env.PATH ?? "").split(path.delimiter).filter(Boolean);
262
- for (const part of parts) {
263
- const candidate = path.join(part, bin);
264
+ const winPathExt = process.env.PATHEXT;
265
+ const winExtensions = winPathExt !== void 0 ? winPathExt.split(";").filter(Boolean) : [
266
+ ".EXE",
267
+ ".CMD",
268
+ ".BAT",
269
+ ".COM"
270
+ ];
271
+ const extensions = process.platform === "win32" ? ["", ...winExtensions] : [""];
272
+ for (const part of parts) for (const ext of extensions) {
273
+ const candidate = path.join(part, bin + ext);
264
274
  try {
265
275
  fs.accessSync(candidate, fs.constants.X_OK);
266
276
  return true;
@@ -361,6 +371,83 @@ function applySkillEnvOverridesFromSnapshot(params) {
361
371
  };
362
372
  }
363
373
 
374
+ //#endregion
375
+ //#region src/agents/sandbox-paths.ts
376
+ const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
377
+ const HTTP_URL_RE = /^https?:\/\//i;
378
+ const DATA_URL_RE = /^data:/i;
379
+ function normalizeUnicodeSpaces(str) {
380
+ return str.replace(UNICODE_SPACES, " ");
381
+ }
382
+ function expandPath(filePath) {
383
+ const normalized = normalizeUnicodeSpaces(filePath);
384
+ if (normalized === "~") return os.homedir();
385
+ if (normalized.startsWith("~/")) return os.homedir() + normalized.slice(1);
386
+ return normalized;
387
+ }
388
+ function resolveToCwd(filePath, cwd) {
389
+ const expanded = expandPath(filePath);
390
+ if (path.isAbsolute(expanded)) return expanded;
391
+ return path.resolve(cwd, expanded);
392
+ }
393
+ function resolveSandboxPath(params) {
394
+ const resolved = resolveToCwd(params.filePath, params.cwd);
395
+ const rootResolved = path.resolve(params.root);
396
+ const relative = path.relative(rootResolved, resolved);
397
+ if (!relative || relative === "") return {
398
+ resolved,
399
+ relative: ""
400
+ };
401
+ if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`Path escapes sandbox root (${shortPath(rootResolved)}): ${params.filePath}`);
402
+ return {
403
+ resolved,
404
+ relative
405
+ };
406
+ }
407
+ async function assertSandboxPath(params) {
408
+ const resolved = resolveSandboxPath(params);
409
+ await assertNoSymlink(resolved.relative, path.resolve(params.root));
410
+ return resolved;
411
+ }
412
+ function assertMediaNotDataUrl(media) {
413
+ const raw = media.trim();
414
+ if (DATA_URL_RE.test(raw)) throw new Error("data: URLs are not supported for media. Use buffer instead.");
415
+ }
416
+ async function resolveSandboxedMediaSource(params) {
417
+ const raw = params.media.trim();
418
+ if (!raw) return raw;
419
+ if (HTTP_URL_RE.test(raw)) return raw;
420
+ let candidate = raw;
421
+ if (/^file:\/\//i.test(candidate)) try {
422
+ candidate = fileURLToPath(candidate);
423
+ } catch {
424
+ throw new Error(`Invalid file:// URL for sandboxed media: ${raw}`);
425
+ }
426
+ return (await assertSandboxPath({
427
+ filePath: candidate,
428
+ cwd: params.sandboxRoot,
429
+ root: params.sandboxRoot
430
+ })).resolved;
431
+ }
432
+ async function assertNoSymlink(relative, root) {
433
+ if (!relative) return;
434
+ const parts = relative.split(path.sep).filter(Boolean);
435
+ let current = root;
436
+ for (const part of parts) {
437
+ current = path.join(current, part);
438
+ try {
439
+ if ((await fs$1.lstat(current)).isSymbolicLink()) throw new Error(`Symlink not allowed in sandbox path: ${current}`);
440
+ } catch (err) {
441
+ if (err.code === "ENOENT") return;
442
+ throw err;
443
+ }
444
+ }
445
+ }
446
+ function shortPath(value) {
447
+ if (value.startsWith(os.homedir())) return `~${value.slice(os.homedir().length)}`;
448
+ return value;
449
+ }
450
+
364
451
  //#endregion
365
452
  //#region src/agents/skills/bundled-dir.ts
366
453
  function looksLikeSkillsDir(dir) {
@@ -518,7 +605,7 @@ function loadSkillEntries(workspaceDir, opts) {
518
605
  return [];
519
606
  };
520
607
  const managedSkillsDir = opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills");
521
- const workspaceSkillsDir = path.join(workspaceDir, "skills");
608
+ const workspaceSkillsDir = path.resolve(workspaceDir, "skills");
522
609
  const bundledSkillsDir = opts?.bundledSkillsDir ?? resolveBundledSkillsDir();
523
610
  const extraDirs = (opts?.config?.skills?.load?.extraDirs ?? []).map((d) => typeof d === "string" ? d.trim() : "").filter(Boolean);
524
611
  const pluginSkillDirs = resolvePluginSkillDirs({
@@ -540,6 +627,14 @@ function loadSkillEntries(workspaceDir, opts) {
540
627
  dir: managedSkillsDir,
541
628
  source: "openclaw-managed"
542
629
  });
630
+ const personalAgentsSkills = loadSkills({
631
+ dir: path.resolve(os.homedir(), ".agents", "skills"),
632
+ source: "agents-skills-personal"
633
+ });
634
+ const projectAgentsSkills = loadSkills({
635
+ dir: path.resolve(workspaceDir, ".agents", "skills"),
636
+ source: "agents-skills-project"
637
+ });
543
638
  const workspaceSkills = loadSkills({
544
639
  dir: workspaceSkillsDir,
545
640
  source: "openclaw-workspace"
@@ -548,6 +643,8 @@ function loadSkillEntries(workspaceDir, opts) {
548
643
  for (const skill of extraSkills) merged.set(skill.name, skill);
549
644
  for (const skill of bundledSkills) merged.set(skill.name, skill);
550
645
  for (const skill of managedSkills) merged.set(skill.name, skill);
646
+ for (const skill of personalAgentsSkills) merged.set(skill.name, skill);
647
+ for (const skill of projectAgentsSkills) merged.set(skill.name, skill);
551
648
  for (const skill of workspaceSkills) merged.set(skill.name, skill);
552
649
  return Array.from(merged.values()).map((skill) => {
553
650
  let frontmatter = {};
@@ -594,6 +691,36 @@ function resolveSkillsPromptForRun(params) {
594
691
  function loadWorkspaceSkillEntries(workspaceDir, opts) {
595
692
  return loadSkillEntries(workspaceDir, opts);
596
693
  }
694
+ function resolveUniqueSyncedSkillDirName(base, used) {
695
+ if (!used.has(base)) {
696
+ used.add(base);
697
+ return base;
698
+ }
699
+ for (let index = 2; index < 1e4; index += 1) {
700
+ const candidate = `${base}-${index}`;
701
+ if (!used.has(candidate)) {
702
+ used.add(candidate);
703
+ return candidate;
704
+ }
705
+ }
706
+ let fallbackIndex = 1e4;
707
+ let fallback = `${base}-${fallbackIndex}`;
708
+ while (used.has(fallback)) {
709
+ fallbackIndex += 1;
710
+ fallback = `${base}-${fallbackIndex}`;
711
+ }
712
+ used.add(fallback);
713
+ return fallback;
714
+ }
715
+ function resolveSyncedSkillDestinationPath(params) {
716
+ const sourceDirName = path.basename(params.entry.skill.baseDir).trim();
717
+ if (!sourceDirName || sourceDirName === "." || sourceDirName === "..") return null;
718
+ return resolveSandboxPath({
719
+ filePath: resolveUniqueSyncedSkillDirName(sourceDirName, params.usedDirNames),
720
+ cwd: params.targetSkillsDir,
721
+ root: params.targetSkillsDir
722
+ }).resolved;
723
+ }
597
724
  async function syncSkillsToWorkspace(params) {
598
725
  const sourceDir = resolveUserPath(params.sourceWorkspaceDir);
599
726
  const targetDir = resolveUserPath(params.targetWorkspaceDir);
@@ -610,8 +737,24 @@ async function syncSkillsToWorkspace(params) {
610
737
  force: true
611
738
  });
612
739
  await fsp.mkdir(targetSkillsDir, { recursive: true });
740
+ const usedDirNames = /* @__PURE__ */ new Set();
613
741
  for (const entry of entries) {
614
- const dest = path.join(targetSkillsDir, entry.skill.name);
742
+ let dest = null;
743
+ try {
744
+ dest = resolveSyncedSkillDestinationPath({
745
+ targetSkillsDir,
746
+ entry,
747
+ usedDirNames
748
+ });
749
+ } catch (error) {
750
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
751
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: ${message}`);
752
+ continue;
753
+ }
754
+ if (!dest) {
755
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: invalid source directory name`);
756
+ continue;
757
+ }
615
758
  try {
616
759
  await fsp.cp(entry.skill.baseDir, dest, {
617
760
  recursive: true,
@@ -691,4 +834,4 @@ function resolveSkillsInstallPreferences(config) {
691
834
  }
692
835
 
693
836
  //#endregion
694
- export { resolveSkillKey as _, resolveSkillsPromptForRun as a, resolveBundledSkillsDir as c, hasBinary as d, isBundledSkillAllowed as f, resolveSkillConfig as g, resolveConfigPath as h, loadWorkspaceSkillEntries as i, applySkillEnvOverrides as l, resolveBundledAllowlist as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, isConfigPathTruthy as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, applySkillEnvOverridesFromSnapshot as u, parseFrontmatterBlock as v };
837
+ export { parseFrontmatterBlock as S, isConfigPathTruthy as _, resolveSkillsPromptForRun as a, resolveSkillConfig as b, resolveBundledSkillsDir as c, resolveSandboxPath as d, resolveSandboxedMediaSource as f, isBundledSkillAllowed as g, hasBinary as h, loadWorkspaceSkillEntries as i, assertMediaNotDataUrl as l, applySkillEnvOverridesFromSnapshot as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, applySkillEnvOverrides as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, assertSandboxPath as u, resolveBundledAllowlist as v, resolveSkillKey as x, resolveConfigPath as y };