activeclaw 2026.2.12 → 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 (364) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{accounts-DbzMEfKN.js → accounts-DCDeFTra.js} +2 -2
  3. package/dist/{accounts-DimKrt7j.js → accounts-DeqIQjo1.js} +2 -2
  4. package/dist/{acp-cli-Cs1ai4XO.js → acp-cli-CeYI4XRd.js} +15 -16
  5. package/dist/{acp-cli-oV2dodPg.js → acp-cli-rNbGXICg.js} +14 -15
  6. package/dist/{agent-BndgzkUe.js → agent-BvNJF5QL.js} +19 -16
  7. package/dist/{agent-DZvDwqnd.js → agent-CyMxTyrG.js} +20 -17
  8. package/dist/{agent-scope-rXQ7WARN.js → agent-scope-BIEhVP4_.js} +1 -1
  9. package/dist/{agent-scope---6LLHj0.js → agent-scope-CQCus0rI.js} +2 -2
  10. package/dist/{agent-scope-RCSw6gHy.js → agent-scope-CsRbLH4l.js} +3 -3
  11. package/dist/{agent-scope-CN8DM4Xb.js → agent-scope-DPIFau3f.js} +1 -1
  12. package/dist/{audio-preflight-SZRntkxo.js → audio-preflight-BU8W7uxc.js} +10 -10
  13. package/dist/{audio-preflight-ClVNINDs.js → audio-preflight-CGsumMzb.js} +10 -10
  14. package/dist/{audio-preflight-txAP3v-C.js → audio-preflight-SLmkJI6-.js} +22 -22
  15. package/dist/{audio-preflight-BP6s-UPp.js → audio-preflight-jZc5mFCZ.js} +23 -23
  16. package/dist/{audit-CQzrm61N.js → audit-Dmww_503.js} +70 -18
  17. package/dist/{audit-DMH3CSXY.js → audit-wPu26VMb.js} +72 -20
  18. package/dist/{tailscale-DU6DgqVy.js → auth-9x3lqfIY.js} +208 -3
  19. package/dist/{tailscale-DHfcfRCx.js → auth-CQNl_IaI.js} +190 -3
  20. package/dist/{auth-health-BB3e3OmN.js → auth-health-C4L4FGBA.js} +1 -1
  21. package/dist/{auth-health-zZ9dnQGC.js → auth-health-j6epgQbq.js} +1 -1
  22. package/dist/{auth-profiles-CcJ3hrog.js → auth-profiles-ByNs3eEm.js} +60 -22
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +19 -16
  25. package/dist/bundled/session-memory/handler.js +16 -15
  26. package/dist/{call-Yxns4CVq.js → call-DVYCIV8m.js} +5 -5
  27. package/dist/{call-C9az806y.js → call-SolyGS1r.js} +4 -4
  28. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  29. package/dist/{channel-options-CjXPwMWu.js → channel-options-BwC2yQcR.js} +4 -4
  30. package/dist/{channel-options-CX4iYQfR.js → channel-options-Cq9BVDkP.js} +7 -7
  31. package/dist/{channel-selection-BoQ7GurB.js → channel-selection-D4D6ImhN.js} +2 -2
  32. package/dist/{channel-selection-C78IwbD-.js → channel-selection-MZAHm4U8.js} +2 -2
  33. package/dist/{channels-cli-DUHsmX3q.js → channels-cli-9Dsk9Qm7.js} +53 -51
  34. package/dist/{channels-cli-BXMQPB4x.js → channels-cli-BJUppQll.js} +52 -50
  35. package/dist/{channels-status-issues-Ca9--azp.js → channels-status-issues-D7GSV1GS.js} +1 -1
  36. package/dist/{channels-status-issues-CbULFg2X.js → channels-status-issues-DDAWeT-6.js} +1 -1
  37. package/dist/{chrome-svgmQ8T_.js → chrome-BfB6JdKF.js} +2 -1
  38. package/dist/{chrome-juQxt0zf.js → chrome-Cvr-57lg.js} +4 -3
  39. package/dist/{chrome-BCPPeLQ6.js → chrome-DL0avO8n.js} +2 -1
  40. package/dist/{chrome-yIKmOzCO.js → chrome-foEwx3lN.js} +5 -4
  41. package/dist/{clack-prompter-Dmvcu3gn.js → clack-prompter-Bz3Mmcl-.js} +5 -5
  42. package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-ChCGXfyt.js} +4 -4
  43. package/dist/cli/daemon-cli.js +1 -1
  44. package/dist/{cli-FdxAcu_y.js → cli-ZR9ugUBX.js} +42 -40
  45. package/dist/{cli-By331Q9f.js → cli-miPe4Ujz.js} +42 -40
  46. package/dist/{client-B0_GiCjB.js → client-BrYfyoDK.js} +52 -3
  47. package/dist/{client-D7wrC1Ug.js → client-CTwXnRl7.js} +53 -4
  48. package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
  49. package/dist/{command-options-BSDiKuyX.js → command-options-BvgxzPbK.js} +4 -4
  50. package/dist/{commands-BG25qku5.js → commands-BX_OIIVR.js} +4 -4
  51. package/dist/{completion-cli-C4zxjkC1.js → completion-cli-CR77-jyv.js} +3 -3
  52. package/dist/{completion-cli-DECEgBWR.js → completion-cli-DnjpxAag.js} +29 -29
  53. package/dist/{config-B7sno9eI.js → config-Bdhomfei.js} +15 -6
  54. package/dist/{config-BuF7vm-v.js → config-BvMsmctM.js} +13 -4
  55. package/dist/{config-D50SQVar.js → config-QYrbd7x7.js} +13 -4
  56. package/dist/{config-DH9TLUNc.js → config-aFQssWKX.js} +15 -6
  57. package/dist/{config-guard-DPxxY1iw.js → config-guard-CljaSxJd.js} +39 -39
  58. package/dist/{configure-BZQ9uSVX.js → configure-BXLiucXo.js} +19 -19
  59. package/dist/{configure-Cg5IKSUy.js → configure-BYPqXzGZ.js} +19 -19
  60. package/dist/control-auth-8Cf4WXpR.js +54 -0
  61. package/dist/control-auth-DBCu3qyv.js +54 -0
  62. package/dist/{control-service-CBlMVTRu.js → control-service-B5KnPqGP.js} +11 -5
  63. package/dist/{control-service-B2er20Ke.js → control-service-DKnttEus.js} +10 -4
  64. package/dist/{cron-cli-B2Zwhy_r.js → cron-cli-D7BRjDv2.js} +17 -17
  65. package/dist/{cron-cli-EaRUVd0p.js → cron-cli-z1zk_FXQ.js} +16 -16
  66. package/dist/{daemon-cli-CVNzObIF.js → daemon-cli-BDkU2ocb.js} +18 -18
  67. package/dist/{daemon-cli-DF6Rxjy6.js → daemon-cli-cNSF93-v.js} +19 -19
  68. package/dist/{daemon-runtime-BHF5NjQ7.js → daemon-runtime-B0tg_LsX.js} +2 -2
  69. package/dist/{daemon-runtime-B05PME1z.js → daemon-runtime-Bsjeut6m.js} +3 -3
  70. package/dist/{deliver-DzcxEcza.js → deliver-CIU9Npgs.js} +306 -12
  71. package/dist/{deliver-COf5XFo_.js → deliver-DYYCo1G7.js} +302 -8
  72. package/dist/{deliver-B1jsU2r7.js → deliver-LsxKETro.js} +306 -12
  73. package/dist/{deliver-CLwC284e.js → deliver-xUU3mGHo.js} +302 -8
  74. package/dist/{deps-Cva7QM_t.js → deps-QSwGcoNZ.js} +2 -2
  75. package/dist/{deps-B6602Wid.js → deps-lAAA2zYI.js} +2 -2
  76. package/dist/{devices-cli-DPg_4aW8.js → devices-cli-BG3-2oqt.js} +13 -13
  77. package/dist/{devices-cli-D8K3hZR5.js → devices-cli-VIQtOvt_.js} +13 -13
  78. package/dist/{directory-cli-OGBSVKAZ.js → directory-cli-BCJwjVC0.js} +15 -15
  79. package/dist/{directory-cli-Bn47fFX7.js → directory-cli-jYzZ02gk.js} +14 -14
  80. package/dist/{dispatcher-BHsNwFe-.js → dispatcher-DY51b-Zc.js} +2 -2
  81. package/dist/{dns-cli-DmTHXgwU.js → dns-cli-DHIiMJjS.js} +11 -11
  82. package/dist/{dns-cli-kk2rysJh.js → dns-cli-pZlv87Ib.js} +11 -11
  83. package/dist/{docs-cli-CB77CeM4.js → docs-cli-2JDiwfzP.js} +7 -7
  84. package/dist/{docs-cli-DUcyw0X0.js → docs-cli-BhkYqoIQ.js} +6 -6
  85. package/dist/{doctor-DwqdkfPa.js → doctor-Bf8EhNtA.js} +33 -33
  86. package/dist/{doctor-BZfxDGUg.js → doctor-sYG5V4Co.js} +32 -32
  87. package/dist/entry.js +36 -14
  88. package/dist/{env-DE9xvYOL.js → env-ONzUVAG2.js} +1 -1
  89. package/dist/{exec-4WHuOniw.js → exec-B8lXct-k.js} +31 -13
  90. package/dist/{exec-B8JKbXKW.js → exec-CACT5OAW.js} +1 -1
  91. package/dist/{exec-D12IZYtJ.js → exec-CJFFoM7H.js} +31 -13
  92. package/dist/{exec-DXtR2fhb.js → exec-YIosokWE.js} +1 -1
  93. package/dist/{exec-approvals-cli-GizapOX5.js → exec-approvals-cli-7LH0lwhO.js} +19 -19
  94. package/dist/{exec-approvals-cli-BWO0Rs-a.js → exec-approvals-cli-apGnQbpj.js} +19 -19
  95. package/dist/extensionAPI.js +1108 -661
  96. package/dist/{fetch-CqZP8jwB.js → fetch-DmiOpALK.js} +5 -3
  97. package/dist/{fetch-timeout-B2KlHXi3.js → fetch-timeout-BEtUjM1S.js} +5 -3
  98. package/dist/{fetch-timeout-ohY5QmsW.js → fetch-timeout-DEoXG_SF.js} +5 -3
  99. package/dist/{fetch-timeout-4UKsdtE1.js → fetch-timeout-DTK9vxex.js} +5 -3
  100. package/dist/{gateway-cli-Bbd1Xbsc.js → gateway-cli-DUdYxlZS.js} +315 -103
  101. package/dist/{gateway-cli-PR1S0BTe.js → gateway-cli-DbvWmE-9.js} +314 -102
  102. package/dist/{gateway-rpc-8gue7Qjt.js → gateway-rpc-BByb2Snz.js} +3 -3
  103. package/dist/{gateway-rpc-DjuxyOm-.js → gateway-rpc-wXSCUZXj.js} +3 -3
  104. package/dist/{github-copilot-auth-B3chCDfc.js → github-copilot-auth-D7ewvpMd.js} +16 -8
  105. package/dist/{github-copilot-auth-Cm2SB8Qf.js → github-copilot-auth-DDispnyz.js} +16 -8
  106. package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-Cfs0Wxr8.js} +1 -1
  107. package/dist/{gmail-setup-utils-Cgh0ptgA.js → gmail-setup-utils-Cfns8TQx.js} +3 -3
  108. package/dist/{gmail-setup-utils-WDyf1gTU.js → gmail-setup-utils-DJb-_5kO.js} +4 -4
  109. package/dist/{health-format-C0C_Apce.js → health-format-KGPokKJH.js} +68 -28
  110. package/dist/{health-format-gLMfE2wf.js → health-format-LZDxu3rv.js} +67 -27
  111. package/dist/{help-format-5iAL_46a.js → help-format-C48TXngO.js} +1 -1
  112. package/dist/{help-format-DUy1KRxq.js → help-format-R5fLToDw.js} +1 -1
  113. package/dist/{hooks-cli-CEN1h1ya.js → hooks-cli-CT8JCRkH.js} +46 -44
  114. package/dist/{hooks-cli-DrchIqSi.js → hooks-cli-S1MKumJO.js} +47 -45
  115. package/dist/{hooks-status-Cgy6AtQk.js → hooks-status-Cw0xD8Lt.js} +3 -3
  116. package/dist/{hooks-status--xVLpAXz.js → hooks-status-D9MhwHRp.js} +3 -3
  117. package/dist/{image-Dkawt9Kg.js → image-Brk1sJbw.js} +4 -4
  118. package/dist/{image-DI9s9eEx.js → image-C4Nn2p3e.js} +5 -5
  119. package/dist/{image-LxFvu0wL.js → image-DgtfXMcX.js} +5 -5
  120. package/dist/{image-B4mDPdyz.js → image-RKwc3fsL.js} +4 -4
  121. package/dist/index.js +83 -83
  122. package/dist/{installs-NS0VMPN7.js → installs-CrLcWYHe.js} +4 -4
  123. package/dist/{installs-DA-eSN1B.js → installs-DscWb9b9.js} +5 -5
  124. package/dist/{links-CV4oki2u.js → links-B8LAzWwg.js} +1 -1
  125. package/dist/{links-7M-j83As.js → links-Eax1UO3w.js} +1 -1
  126. package/dist/llm-slug-generator.js +15 -15
  127. package/dist/{loader-Caow9TPA.js → loader-KjT074JR.js} +1105 -762
  128. package/dist/{logging-CeHn2itV.js → logging-BAyPwvdH.js} +1 -1
  129. package/dist/{logging-D0MyqUlV.js → logging-CRq4h04P.js} +2 -2
  130. package/dist/{login-qr-Xx8yJrSc.js → login-qr-B6ZgAuIf.js} +5 -5
  131. package/dist/{login-qr-CoskdtvN.js → login-qr-Bua-p0nG.js} +2 -2
  132. package/dist/{login-qr-CAk9D-FM.js → login-qr-CuvemJj4.js} +6 -6
  133. package/dist/{login-qr-kUyMWXV1.js → login-qr-Djr1JfIf.js} +2 -2
  134. package/dist/{logs-cli-B476pzJS.js → logs-cli-9IAV7rWY.js} +15 -15
  135. package/dist/{logs-cli-BQRUI_PO.js → logs-cli-EiKzUFPa.js} +14 -14
  136. package/dist/{manager-CBApH7eR.js → manager-BIMh_eSm.js} +5 -5
  137. package/dist/{manager-CyJH6WMg.js → manager-CwinWQoz.js} +5 -5
  138. package/dist/{manager-DScY_ZTT.js → manager-DkqF1GiK.js} +7 -7
  139. package/dist/{manager-DseK7RWj.js → manager-T1XfGchB.js} +8 -8
  140. package/dist/{manifest-registry-DFckk-L8.js → manifest-registry-CQhdnDBZ.js} +2 -2
  141. package/dist/{manifest-registry-BTgLN_W2.js → manifest-registry-u0okVSkU.js} +2 -2
  142. package/dist/{message-channel-0717wOz-.js → message-channel-BLi2a6Yw.js} +1 -1
  143. package/dist/{message-channel-BlgPSDAh.js → message-channel-C_MmebBt.js} +1 -1
  144. package/dist/{model-auth-CbqRVYRp.js → model-auth-CabXIF6O.js} +57 -19
  145. package/dist/{model-selection-unMJyUIE.js → model-selection-BLuqsGVB.js} +59 -21
  146. package/dist/{model-selection-B9Y7dKQd.js → model-selection-C1GmkTAV.js} +57 -19
  147. package/dist/{models-cli-B1cLGcRz.js → models-cli-9jmDv-h3.js} +50 -48
  148. package/dist/{models-cli-D7sChCi6.js → models-cli-zS9rtWz8.js} +48 -46
  149. package/dist/{node-cli-ic2C1xs2.js → node-cli-CrpTxTTs.js} +26 -24
  150. package/dist/{node-cli-CS3KwBh1.js → node-cli-wemUMCg-.js} +25 -23
  151. package/dist/{node-service-D_Cdq1JI.js → node-service-C8DTHTMg.js} +2 -2
  152. package/dist/{node-service-_vgO5xR-.js → node-service-WQuEKz6W.js} +1 -1
  153. package/dist/{nodes-cli-CipcvVMc.js → nodes-cli-BaU2SIFw.js} +16 -16
  154. package/dist/{nodes-cli-B1meaW7S.js → nodes-cli-Dx23D72n.js} +16 -16
  155. package/dist/{nodes-screen-N-4_0VIu.js → nodes-screen-C0IuBqUL.js} +1 -1
  156. package/dist/{note-CAM9PbSJ.js → note-BhRSeNeu.js} +2 -2
  157. package/dist/{note-Ci08TSbV.js → note-hhtubr2j.js} +1 -1
  158. package/dist/{onboard-channels-DMcOT0dj.js → onboard-channels-C501x8GI.js} +8 -8
  159. package/dist/{onboard-channels-CsT3E4bT.js → onboard-channels-Dxzroasd.js} +8 -8
  160. package/dist/{onboard-skills-DoxkpnEU.js → onboard-skills-DV0Qzvjj.js} +19 -19
  161. package/dist/{onboard-skills-D-BrCoRN.js → onboard-skills-rlBHcu3Q.js} +18 -18
  162. package/dist/{onboarding-B92952fz.js → onboarding-CN-EDLjd.js} +34 -34
  163. package/dist/{pairing-cli-BDUJ5VoX.js → pairing-cli-CDHG4xuI.js} +15 -15
  164. package/dist/{pairing-cli-0wbU1u8d.js → pairing-cli-CQP34Dlx.js} +14 -14
  165. package/dist/{pairing-labels-3o3QO3Qn.js → pairing-labels-B6CN0SNH.js} +1 -1
  166. package/dist/{pairing-labels-Bin1K7_f.js → pairing-labels-CgNHnjzT.js} +1 -1
  167. package/dist/{pairing-store-CL4rJ7m7.js → pairing-store-CmlRVqOz.js} +2 -2
  168. package/dist/{pairing-store-fIWI3pXG.js → pairing-store-Dp5_JGnG.js} +3 -3
  169. package/dist/{path-env-CXWUFfFv.js → path-env-CLvYNwtL.js} +1 -1
  170. package/dist/{path-env-C5FR_Eay.js → path-env-CaYUVIML.js} +2 -2
  171. package/dist/{paths-DwKNqk_S.js → paths-B0a4ywSO.js} +30 -5
  172. package/dist/{paths-RITJT4UY.js → paths-B49s6UZQ.js} +30 -5
  173. package/dist/{paths-CB2fqqbX.js → paths-D0O87MfH.js} +30 -5
  174. package/dist/{paths-IivnSNkP.js → paths-DLINmNFQ.js} +31 -6
  175. package/dist/{pi-embedded-DhYItk8O.js → pi-embedded-Ctrt2kz0.js} +1109 -662
  176. package/dist/{pi-embedded-helpers-CmftU5Zj.js → pi-embedded-helpers-CMKLjW6X.js} +8 -5
  177. package/dist/{pi-embedded-helpers-CfXnSIFx.js → pi-embedded-helpers-CUzTc1v6.js} +170 -19
  178. package/dist/{pi-embedded-helpers-Uan-3N1T.js → pi-embedded-helpers-DfwkwPYD.js} +7 -4
  179. package/dist/{pi-embedded-helpers-Bri9tk9g.js → pi-embedded-helpers-WDwx99UA.js} +170 -19
  180. package/dist/{pi-tools.policy-CJFi1sny.js → pi-tools.policy-BpsROZbz.js} +4 -4
  181. package/dist/{plugin-auto-enable-BY4CqJbD.js → plugin-auto-enable-Bqhc3w5n.js} +5 -5
  182. package/dist/{plugin-auto-enable-DbQrtQjL.js → plugin-auto-enable-PW76g_PJ.js} +5 -5
  183. package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
  184. package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
  185. package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
  186. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
  187. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
  188. package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
  189. package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
  190. package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
  191. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
  192. package/dist/plugin-sdk/agents/usage.d.ts +1 -0
  193. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
  194. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  195. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
  196. package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
  197. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
  198. package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
  199. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  200. package/dist/plugin-sdk/config/sessions/paths.d.ts +7 -2
  201. package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
  202. package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
  203. package/dist/plugin-sdk/config/types.gateway.d.ts +15 -0
  204. package/dist/plugin-sdk/config/types.hooks.d.ts +15 -0
  205. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
  206. package/dist/plugin-sdk/config/zod-schema.d.ts +11 -0
  207. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +9 -0
  208. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +4 -0
  209. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
  210. package/dist/plugin-sdk/discord/send.types.d.ts +3 -0
  211. package/dist/plugin-sdk/gateway/auth.d.ts +36 -0
  212. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +6 -0
  213. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
  214. package/dist/plugin-sdk/index.js +295 -99
  215. package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
  216. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
  217. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
  218. package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
  219. package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
  220. package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
  221. package/dist/plugin-sdk/logging/logger.d.ts +1 -1
  222. package/dist/plugin-sdk/media/input-files.d.ts +5 -0
  223. package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
  224. package/dist/plugin-sdk/security/external-content.d.ts +1 -1
  225. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  226. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  227. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
  228. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  229. package/dist/{plugins-3GyCj5KL.js → plugins-4Hqd1WGf.js} +3 -3
  230. package/dist/{plugins-BL9lIXSA.js → plugins-X7d_tfTE.js} +4 -4
  231. package/dist/{plugins-cli-Ce7VsvZh.js → plugins-cli-Bgku3EGj.js} +253 -46
  232. package/dist/{plugins-cli-e9gUebMd.js → plugins-cli-CVToH3if.js} +254 -47
  233. package/dist/{ports-DupIRXQ0.js → ports-qkt29rdC.js} +2 -2
  234. package/dist/{program-u22vbFpH.js → program-Cf7lkBur.js} +82 -82
  235. package/dist/{progress-g9R--HZD.js → progress-C9kngsTD.js} +1 -1
  236. package/dist/{progress-Da1ehW-x.js → progress-DWqhRakV.js} +1 -1
  237. package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-BFH5D5LN.js} +1 -1
  238. package/dist/{prompt-style-lmJDcgtA.js → prompt-style-CIbmaxSa.js} +1 -1
  239. package/dist/{pw-ai-C43wv1ZF.js → pw-ai-8mdv3h-d.js} +7 -6
  240. package/dist/{pw-ai-DTZVjndL.js → pw-ai-CM1IsSgZ.js} +5 -5
  241. package/dist/{pw-ai-zVebjrSG.js → pw-ai-FGoRVblI.js} +3 -3
  242. package/dist/{pw-ai-CWrnJ98b.js → pw-ai-sS1fRKW_.js} +3 -3
  243. package/dist/{qmd-manager-NPD5Yh_4.js → qmd-manager-C67Fc8aN.js} +4 -4
  244. package/dist/{qmd-manager-ozZ933qc.js → qmd-manager-CXVbfg99.js} +7 -7
  245. package/dist/{qmd-manager-DBCZ1sio.js → qmd-manager-RMRE8Tqt.js} +6 -6
  246. package/dist/{qmd-manager-a9Bt0405.js → qmd-manager-pyc_MTIe.js} +4 -4
  247. package/dist/{register.subclis-BpX3ulH1.js → register.subclis-C02e4zuJ.js} +28 -28
  248. package/dist/{reply-m467_fOC.js → reply-DICXkh_C.js} +911 -568
  249. package/dist/{routes-82Ywfho6.js → routes-CmOI1hIH.js} +29 -11
  250. package/dist/{routes-BqxA3ZYr.js → routes-DewK5tq2.js} +29 -12
  251. package/dist/{rpc-DcGBG-Fp.js → rpc-DHr30euf.js} +3 -3
  252. package/dist/{rpc-CfdBHlnp.js → rpc-T300F8zI.js} +3 -3
  253. package/dist/{run-main-aolvSfj3.js → run-main-C5wpthq1.js} +84 -84
  254. package/dist/{runner-C1G8RFWl.js → runner-CY0nmVme.js} +9 -9
  255. package/dist/{runner-BCBs8JKA.js → runner-Cfm5nTMc.js} +6 -6
  256. package/dist/{runner-CInKPsiP.js → runner-D_dujMod.js} +8 -8
  257. package/dist/{runner-Cwfn-VOM.js → runner-DrGYLH5K.js} +6 -6
  258. package/dist/{sandbox-B0K9e6Fw.js → sandbox-BKYnhYQH.js} +23 -15
  259. package/dist/{sandbox-BW8Xnkw1.js → sandbox-Bhjnh1Xg.js} +21 -13
  260. package/dist/{sandbox-cli-mKCs2J0i.js → sandbox-cli-DBsAjZJN.js} +20 -20
  261. package/dist/{sandbox-cli-BD5LkZ0B.js → sandbox-cli-rV9LtFeu.js} +19 -19
  262. package/dist/{security-cli-kgI4soGy.js → security-cli-BIwJM_rs.js} +27 -27
  263. package/dist/{security-cli-kz8TiyqU.js → security-cli-BRjny8Yu.js} +26 -26
  264. package/dist/{server-context-fX4xiYRh.js → server-context-BGpGs3qd.js} +7 -7
  265. package/dist/{server-context-Lb-eUZG_.js → server-context-Cl0U0vE3.js} +5 -5
  266. package/dist/{server-node-events-Dx18uVrH.js → server-node-events-CBfTbiTA.js} +45 -43
  267. package/dist/{server-node-events-KqZMN30F.js → server-node-events-QCvh8EgI.js} +45 -43
  268. package/dist/{service-DZMXgMra.js → service--nPk7DvT.js} +3 -3
  269. package/dist/{service-DNcIZ5Kp.js → service-99RDXwX4.js} +2 -2
  270. package/dist/{service-audit-0WLGnoNT.js → service-audit-DnLmRGQt.js} +4 -4
  271. package/dist/{service-audit-uhZSlxeb.js → service-audit-ckBaRCVC.js} +3 -3
  272. package/dist/{session-cost-usage-HU4OeRgw.js → session-cost-usage-D7HuoSSD.js} +10 -8
  273. package/dist/{session-cost-usage-CL8gnHRN.js → session-cost-usage-D9hHANWI.js} +10 -8
  274. package/dist/{shared-j4Qtr475.js → shared-Bs4vduG4.js} +3 -3
  275. package/dist/{shared-BBw6F-YC.js → shared-CEY5IkwG.js} +2 -2
  276. package/dist/{shared-DOZs2SoH.js → shared-DRohONn_.js} +3 -3
  277. package/dist/{shared-CtP9K-o2.js → shared-ICqOZibV.js} +3 -3
  278. package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-rHMtUHtP.js} +1 -1
  279. package/dist/{skills-BvPUNjxo.js → skills-DRjfSQT3.js} +128 -4
  280. package/dist/{skills-aFOsriMP.js → skills-DprQj9X2.js} +129 -5
  281. package/dist/{skills-cli-oWaTJzZd.js → skills-cli-9WO-C55s.js} +12 -12
  282. package/dist/{skills-cli-E6shXpdd.js → skills-cli-B9eej-EW.js} +13 -13
  283. package/dist/{skills-status-D4vbIMnz.js → skills-status-5U3P3YfJ.js} +3 -3
  284. package/dist/{skills-status-DJDaA2Ur.js → skills-status-TDIgVd1K.js} +2 -2
  285. package/dist/{sqlite-B7FPASCO.js → sqlite-BINzs1U0.js} +2 -2
  286. package/dist/{sqlite-B4Z1_Ioc.js → sqlite-D4w5TejA.js} +2 -2
  287. package/dist/{sqlite-BkYnxkQO.js → sqlite-DRRHmlug.js} +2 -2
  288. package/dist/{sqlite-EuQPVXvn.js → sqlite-F6PGkEm1.js} +2 -2
  289. package/dist/{status-B2Yr-2J5.js → status-BKGkKC_v.js} +3 -3
  290. package/dist/{status-DW7m5xUN.js → status-CiHtHdaa.js} +4 -4
  291. package/dist/{status-CxhnUa5J.js → status-DDWoOpeB.js} +33 -33
  292. package/dist/{subsystem-Bv7dGhES.js → subsystem-BoExtIHo.js} +32 -13
  293. package/dist/{system-cli-0JXhJNWm.js → system-cli-B6lr60Io.js} +14 -14
  294. package/dist/{system-cli-D-0OaMtH.js → system-cli-CprW9G3h.js} +14 -14
  295. package/dist/{systemd-CNTodvCO.js → systemd-C0VZriGM.js} +2 -2
  296. package/dist/{systemd-CUJJHgHa.js → systemd-DrmBtJ5T.js} +3 -3
  297. package/dist/{systemd-hints-cmHtrXUl.js → systemd-hints-DZtXiVHa.js} +1 -1
  298. package/dist/{systemd-linger-CArPbmvv.js → systemd-linger-NC2kl1SC.js} +2 -2
  299. package/dist/{systemd-linger-XvT9Y9sb.js → systemd-linger-xdn3BdPh.js} +2 -2
  300. package/dist/{table-DzBBIqHO.js → table-B8dx3v4v.js} +2 -2
  301. package/dist/{table-oJQPTUL6.js → table-CwulTLQp.js} +1 -1
  302. package/dist/{tool-display-Na-EVL83.js → tool-display-CZRIDMRm.js} +1 -1
  303. package/dist/{tool-display-sHJa3kRs.js → tool-display-ClRud3pg.js} +2 -2
  304. package/dist/{tui-nGp8ltQK.js → tui-CVTQn-dC.js} +9 -9
  305. package/dist/{tui-Biw7aqPj.js → tui-Lu8FdrlK.js} +9 -9
  306. package/dist/{tui-cli-C9FEfG7C.js → tui-cli-BLpTj1X9.js} +25 -25
  307. package/dist/{tui-cli-Dxnu5JGl.js → tui-cli-BLx5kL2I.js} +25 -25
  308. package/dist/{tui-formatters-BiNTNGwg.js → tui-formatters-CNySEfJN.js} +5 -5
  309. package/dist/{tui-formatters-C_baVYUz.js → tui-formatters-DePhZK3J.js} +5 -5
  310. package/dist/{update-C4rsLj2F.js → update-DHVxMTpQ.js} +3 -3
  311. package/dist/{update-uwUWrKFu.js → update-DU1geolI.js} +3 -3
  312. package/dist/{update-cli-cNd_G9E6.js → update-cli-C0hUvJWK.js} +66 -66
  313. package/dist/{update-cli-CBXp-c4C.js → update-cli-Wb1GB3rL.js} +68 -68
  314. package/dist/{update-runner-BLsqC24J.js → update-runner--ixK4J3W.js} +10 -10
  315. package/dist/{update-runner-C_FDpmA3.js → update-runner-7Qa1T9y6.js} +9 -9
  316. package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
  317. package/dist/{utils-BHPdZE4h.js → utils-Cd9QdCHh.js} +1 -1
  318. package/dist/{webhooks-cli-BpBKXL7W.js → webhooks-cli-DgcMy7RG.js} +12 -12
  319. package/dist/{webhooks-cli-wNfhfKqm.js → webhooks-cli-aVzUcJY9.js} +11 -11
  320. package/dist/{widearea-dns-WVCWJTEb.js → widearea-dns-BaIgNEhY.js} +1 -1
  321. package/dist/{widearea-dns-BWYPcfby.js → widearea-dns-DzuRdwk5.js} +1 -1
  322. package/dist/{ws-log-Cafylho7.js → ws-log-CIXbLCka.js} +1 -1
  323. package/dist/{ws-log-DTUOUVgR.js → ws-log-DcQFZByi.js} +1 -1
  324. package/dist/{wsl-B-H6Z5wp.js → wsl-BUOkxKJu.js} +2 -2
  325. package/docs/automation/webhook.md +43 -2
  326. package/docs/channels/discord.md +29 -1
  327. package/docs/cli/plugins.md +20 -1
  328. package/docs/cli/security.md +1 -0
  329. package/docs/concepts/session-tool.md +1 -0
  330. package/docs/gateway/configuration-reference.md +11 -0
  331. package/docs/gateway/configuration.md +3 -0
  332. package/docs/gateway/openresponses-http-api.md +15 -0
  333. package/docs/gateway/security/index.md +3 -0
  334. package/docs/help/faq.md +9 -0
  335. package/docs/install/installer.md +20 -0
  336. package/docs/reference/transcript-hygiene.md +18 -0
  337. package/docs/tools/browser.md +6 -0
  338. package/extensions/diagnostics-otel/package.json +9 -9
  339. package/extensions/feishu/package.json +1 -1
  340. package/extensions/feishu/src/config-schema.ts +6 -0
  341. package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
  342. package/extensions/feishu/src/reply-dispatcher.ts +124 -67
  343. package/extensions/feishu/src/streaming-card.ts +223 -0
  344. package/extensions/feishu/src/targets.test.ts +16 -0
  345. package/extensions/feishu/src/targets.ts +1 -1
  346. package/extensions/irc/src/client.ts +1 -1
  347. package/extensions/minimax-portal-auth/index.ts +7 -5
  348. package/extensions/nostr/package.json +1 -1
  349. package/package.json +13 -13
  350. package/dist/auth-BcNHFK-i.js +0 -184
  351. package/dist/auth-jrfLXze7.js +0 -184
  352. /package/dist/{archive-DqNr5i8b.js → archive-beaSfAzA.js} +0 -0
  353. /package/dist/{brew-BIrWdDps.js → brew-BUIxHEkn.js} +0 -0
  354. /package/dist/{brew-6UyogeLe.js → brew-ROHf0-Xp.js} +0 -0
  355. /package/dist/{constants-DuoCkWRh.js → constants-BvQ6S8j5.js} +0 -0
  356. /package/dist/{errors-x4NYs-1P.js → errors-DjZBTJJ3.js} +0 -0
  357. /package/dist/{helpers-BDvtkJjw.js → helpers-HyeZXsnu.js} +0 -0
  358. /package/dist/{is-main-CE1eOBYb.js → is-main-BWoXGz7p.js} +0 -0
  359. /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
  360. /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
  361. /package/dist/{prompts-BOz5176z.js → prompts-Bg96reub.js} +0 -0
  362. /package/dist/{redact-DuEEf1p1.js → redact-Br9GfacZ.js} +0 -0
  363. /package/dist/{skill-scanner-CprFkZib.js → skill-scanner-CucvxYhu.js} +0 -0
  364. /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-BtNd-j6q.js} +0 -0
@@ -1,76 +1,76 @@
1
- import { X as resolveStateDir, k as theme, p as defaultRuntime } from "./entry.js";
2
- import "./auth-profiles-CcJ3hrog.js";
3
- import { n as replaceCliName, r as resolveCliName, t as formatCliCommand } from "./command-format-ayFsmwwz.js";
4
- import { h as pathExists } from "./utils-Dk86IbEs.js";
5
- import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
1
+ import { A as theme, Z as resolveStateDir, p as defaultRuntime } from "./entry.js";
2
+ import "./auth-profiles-ByNs3eEm.js";
3
+ import { n as replaceCliName, r as resolveCliName, t as formatCliCommand } from "./command-format-Bxe0mWee.js";
4
+ import { h as pathExists } from "./utils-BLJAc3ZV.js";
5
+ import { t as runCommandWithTimeout } from "./exec-CACT5OAW.js";
6
6
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-BNlEap4i.js";
7
- import "./agent-scope-RCSw6gHy.js";
8
- import "./github-copilot-token-SLWintYd.js";
7
+ import "./agent-scope-CsRbLH4l.js";
8
+ import "./github-copilot-token-Cfs0Wxr8.js";
9
9
  import "./pi-model-discovery-DzEIEgHL.js";
10
- import { c as writeConfigFile, o as readConfigFileSnapshot } from "./config-B7sno9eI.js";
11
- import "./manifest-registry-BTgLN_W2.js";
12
- import "./server-context-fX4xiYRh.js";
13
- import "./chrome-yIKmOzCO.js";
14
- import "./control-service-B2er20Ke.js";
15
- import "./tailscale-DU6DgqVy.js";
16
- import "./auth-BcNHFK-i.js";
17
- import "./client-D7wrC1Ug.js";
18
- import "./call-Yxns4CVq.js";
19
- import "./message-channel-BlgPSDAh.js";
20
- import { t as formatDocsLink } from "./links-7M-j83As.js";
21
- import "./plugin-auto-enable-BY4CqJbD.js";
22
- import "./plugins-3GyCj5KL.js";
10
+ import { c as writeConfigFile, o as readConfigFileSnapshot } from "./config-Bdhomfei.js";
11
+ import "./manifest-registry-u0okVSkU.js";
12
+ import "./server-context-BGpGs3qd.js";
13
+ import "./chrome-foEwx3lN.js";
14
+ import "./auth-9x3lqfIY.js";
15
+ import "./control-auth-8Cf4WXpR.js";
16
+ import "./control-service-DKnttEus.js";
17
+ import "./client-CTwXnRl7.js";
18
+ import "./call-DVYCIV8m.js";
19
+ import "./message-channel-C_MmebBt.js";
20
+ import { t as formatDocsLink } from "./links-B8LAzWwg.js";
21
+ import "./plugin-auto-enable-Bqhc3w5n.js";
22
+ import "./plugins-4Hqd1WGf.js";
23
23
  import "./logging-CfEk_PnX.js";
24
- import "./accounts-DbzMEfKN.js";
25
- import { zn as trimLogTail } from "./loader-Caow9TPA.js";
26
- import "./progress-Da1ehW-x.js";
27
- import { n as stylePromptMessage, t as stylePromptHint } from "./prompt-style-Dc0C5HC9.js";
28
- import "./note-Ci08TSbV.js";
24
+ import "./accounts-DCDeFTra.js";
25
+ import { Fn as trimLogTail } from "./loader-KjT074JR.js";
26
+ import "./progress-DWqhRakV.js";
27
+ import { n as stylePromptMessage, t as stylePromptHint } from "./prompt-style-BFH5D5LN.js";
28
+ import "./note-hhtubr2j.js";
29
29
  import "./archive-D0z3LZDK.js";
30
- import "./skill-scanner-C_fQzVDu.js";
31
- import "./installs-NS0VMPN7.js";
32
- import "./manager-DseK7RWj.js";
33
- import "./paths-IivnSNkP.js";
34
- import "./sqlite-B7FPASCO.js";
35
- import "./redact-DuEEf1p1.js";
36
- import "./routes-BqxA3ZYr.js";
37
- import "./pi-embedded-helpers-Uan-3N1T.js";
38
- import "./deliver-DzcxEcza.js";
39
- import "./fetch-timeout-B2KlHXi3.js";
40
- import "./sandbox-B0K9e6Fw.js";
41
- import "./tui-formatters-C_baVYUz.js";
42
- import "./wsl-B-H6Z5wp.js";
43
- import "./skills-BvPUNjxo.js";
44
- import "./image-LxFvu0wL.js";
30
+ import "./skill-scanner-rHMtUHtP.js";
31
+ import "./installs-CrLcWYHe.js";
32
+ import "./deliver-CIU9Npgs.js";
33
+ import "./manager-T1XfGchB.js";
34
+ import "./paths-DLINmNFQ.js";
35
+ import "./sqlite-BINzs1U0.js";
36
+ import "./redact-Br9GfacZ.js";
37
+ import "./routes-DewK5tq2.js";
38
+ import "./pi-embedded-helpers-DfwkwPYD.js";
39
+ import "./fetch-timeout-DTK9vxex.js";
40
+ import "./sandbox-BKYnhYQH.js";
41
+ import "./tui-formatters-DePhZK3J.js";
42
+ import "./wsl-BUOkxKJu.js";
43
+ import "./skills-DRjfSQT3.js";
44
+ import "./image-DgtfXMcX.js";
45
45
  import { r as formatDurationPrecise } from "./format-duration-Bo9zNKwO.js";
46
- import "./tool-display-sHJa3kRs.js";
47
- import "./channel-selection-BoQ7GurB.js";
48
- import "./session-cost-usage-CL8gnHRN.js";
49
- import "./runner-C1G8RFWl.js";
50
- import "./commands-BG25qku5.js";
51
- import "./pairing-store-fIWI3pXG.js";
52
- import "./login-qr-CAk9D-FM.js";
53
- import "./pairing-labels-Bin1K7_f.js";
54
- import "./channels-status-issues-Ca9--azp.js";
55
- import "./register.subclis-BpX3ulH1.js";
56
- import { r as installCompletion } from "./completion-cli-C4zxjkC1.js";
57
- import "./deps-Cva7QM_t.js";
58
- import { g as parseSemver } from "./daemon-runtime-BHF5NjQ7.js";
59
- import "./service-DNcIZ5Kp.js";
60
- import "./systemd-CNTodvCO.js";
61
- import "./shared-CtP9K-o2.js";
62
- import { r as runDaemonRestart } from "./daemon-cli-DF6Rxjy6.js";
63
- import "./service-audit-uhZSlxeb.js";
64
- import { t as renderTable } from "./table-oJQPTUL6.js";
65
- import "./health-format-gLMfE2wf.js";
66
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-BLsqC24J.js";
67
- import "./logging-D0MyqUlV.js";
68
- import "./skills-status-DJDaA2Ur.js";
69
- import "./auth-health-zZ9dnQGC.js";
70
- import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-uwUWrKFu.js";
71
- import { t as formatHelpExamples } from "./help-format-DUy1KRxq.js";
72
- import "./systemd-linger-CArPbmvv.js";
73
- import { t as doctorCommand } from "./doctor-BZfxDGUg.js";
46
+ import "./tool-display-ClRud3pg.js";
47
+ import "./channel-selection-D4D6ImhN.js";
48
+ import "./session-cost-usage-D9hHANWI.js";
49
+ import "./runner-CY0nmVme.js";
50
+ import "./commands-BX_OIIVR.js";
51
+ import "./pairing-store-Dp5_JGnG.js";
52
+ import "./login-qr-CuvemJj4.js";
53
+ import "./pairing-labels-CgNHnjzT.js";
54
+ import "./channels-status-issues-D7GSV1GS.js";
55
+ import "./register.subclis-C02e4zuJ.js";
56
+ import { r as installCompletion } from "./completion-cli-CR77-jyv.js";
57
+ import "./deps-QSwGcoNZ.js";
58
+ import { g as parseSemver } from "./daemon-runtime-B0tg_LsX.js";
59
+ import "./service-99RDXwX4.js";
60
+ import "./systemd-C0VZriGM.js";
61
+ import "./shared-ICqOZibV.js";
62
+ import { r as runDaemonRestart } from "./daemon-cli-cNSF93-v.js";
63
+ import "./service-audit-ckBaRCVC.js";
64
+ import { t as renderTable } from "./table-CwulTLQp.js";
65
+ import "./health-format-LZDxu3rv.js";
66
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, _ as resolveNpmChannelTag, a as globalInstallArgs, b as channelToNpmTag, c as formatUpdateOneLiner, d as checkShellCompletionStatus, g as fetchNpmTagVersion, h as compareSemverStrings, i as detectGlobalInstallManagerForRoot, m as checkUpdateStatus, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, p as ensureCompletionCacheExists, r as detectGlobalInstallManagerByPresence, s as formatUpdateAvailableHint, t as runGatewayUpdate, u as resolveUpdateAvailability, v as DEFAULT_GIT_CHANNEL, x as formatUpdateChannelLabel, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner--ixK4J3W.js";
67
+ import "./logging-CRq4h04P.js";
68
+ import "./skills-status-TDIgVd1K.js";
69
+ import "./auth-health-j6epgQbq.js";
70
+ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DU1geolI.js";
71
+ import { t as formatHelpExamples } from "./help-format-R5fLToDw.js";
72
+ import "./systemd-linger-xdn3BdPh.js";
73
+ import { t as doctorCommand } from "./doctor-sYG5V4Co.js";
74
74
  import { spawnSync } from "node:child_process";
75
75
  import path from "node:path";
76
76
  import os from "node:os";
@@ -1,14 +1,14 @@
1
- import { r as resolveCliName, t as formatCliCommand } from "./command-format-ayFsmwwz.js";
2
- import { h as pathExists } from "./utils-Dk86IbEs.js";
3
- import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
1
+ import { r as resolveCliName, t as formatCliCommand } from "./command-format-Bxe0mWee.js";
2
+ import { h as pathExists } from "./utils-BLJAc3ZV.js";
3
+ import { t as runCommandWithTimeout } from "./exec-CACT5OAW.js";
4
4
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-BNlEap4i.js";
5
- import { M as VERSION } from "./config-B7sno9eI.js";
6
- import { zn as trimLogTail } from "./loader-Caow9TPA.js";
7
- import { t as note } from "./note-Ci08TSbV.js";
8
- import { t as fetchWithTimeout } from "./fetch-timeout-B2KlHXi3.js";
9
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-C4zxjkC1.js";
10
- import { g as parseSemver } from "./daemon-runtime-BHF5NjQ7.js";
11
- import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-gLMfE2wf.js";
5
+ import { M as VERSION } from "./config-Bdhomfei.js";
6
+ import { Fn as trimLogTail } from "./loader-KjT074JR.js";
7
+ import { t as note } from "./note-hhtubr2j.js";
8
+ import { t as fetchWithTimeout } from "./fetch-timeout-DTK9vxex.js";
9
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CR77-jyv.js";
10
+ import { g as parseSemver } from "./daemon-runtime-B0tg_LsX.js";
11
+ import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-LZDxu3rv.js";
12
12
  import { spawnSync } from "node:child_process";
13
13
  import path from "node:path";
14
14
  import os from "node:os";
@@ -1,14 +1,14 @@
1
- import { g as pathExists } from "./utils-BHPdZE4h.js";
2
- import { Y as trimLogTail } from "./reply-m467_fOC.js";
3
- import { t as runCommandWithTimeout } from "./exec-DXtR2fhb.js";
1
+ import { g as pathExists } from "./utils-Cd9QdCHh.js";
2
+ import { Y as trimLogTail } from "./reply-DICXkh_C.js";
3
+ import { t as runCommandWithTimeout } from "./exec-YIosokWE.js";
4
4
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-1VeFrph_.js";
5
5
  import { r as resolveCliName, t as formatCliCommand } from "./command-format-ChfKqObn.js";
6
- import { M as VERSION } from "./config-DH9TLUNc.js";
7
- import { r as fetchWithTimeout } from "./fetch-CqZP8jwB.js";
8
- import { _ as parseSemver } from "./daemon-runtime-B05PME1z.js";
9
- import { t as note } from "./note-CAM9PbSJ.js";
10
- import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-C0C_Apce.js";
11
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DECEgBWR.js";
6
+ import { M as VERSION } from "./config-aFQssWKX.js";
7
+ import { r as fetchWithTimeout } from "./fetch-DmiOpALK.js";
8
+ import { _ as parseSemver } from "./daemon-runtime-Bsjeut6m.js";
9
+ import { t as note } from "./note-BhRSeNeu.js";
10
+ import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistIndexHealth } from "./health-format-KGPokKJH.js";
11
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DnjpxAag.js";
12
12
  import os from "node:os";
13
13
  import path from "node:path";
14
14
  import fs from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { J as resolveOAuthDir, dt as expandHomePrefix, ft as resolveEffectiveHomeDir, pt as resolveRequiredHomeDir, w as shouldLogVerbose, x as logVerbose } from "./entry.js";
1
+ import { S as logVerbose, T as shouldLogVerbose, Y as resolveOAuthDir, ht as resolveRequiredHomeDir, mt as resolveEffectiveHomeDir, pt as expandHomePrefix } from "./entry.js";
2
2
  import path from "node:path";
3
3
  import os from "node:os";
4
4
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  import { _ as expandHomePrefix, m as resolveOAuthDir, v as resolveEffectiveHomeDir, y as resolveRequiredHomeDir } from "./paths-DVBShlw6.js";
2
- import { A as logVerbose, N as shouldLogVerbose } from "./subsystem-Bv7dGhES.js";
2
+ import { A as logVerbose, N as shouldLogVerbose } from "./subsystem-BoExtIHo.js";
3
3
  import fs from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
@@ -1,15 +1,15 @@
1
- import { F as CONFIG_PATH, W as resolveGatewayPort, k as theme, p as defaultRuntime, v as danger } from "./entry.js";
2
- import "./auth-profiles-CcJ3hrog.js";
3
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
4
- import { a as displayPath } from "./utils-Dk86IbEs.js";
5
- import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
6
- import "./agent-scope-RCSw6gHy.js";
7
- import "./github-copilot-token-SLWintYd.js";
8
- import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-B7sno9eI.js";
9
- import "./manifest-registry-BTgLN_W2.js";
10
- import { t as formatDocsLink } from "./links-7M-j83As.js";
11
- import "./skills-BvPUNjxo.js";
12
- import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-WDyf1gTU.js";
1
+ import { A as theme, G as resolveGatewayPort, I as CONFIG_PATH, p as defaultRuntime, v as danger } from "./entry.js";
2
+ import "./auth-profiles-ByNs3eEm.js";
3
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
4
+ import { a as displayPath } from "./utils-BLJAc3ZV.js";
5
+ import { t as runCommandWithTimeout } from "./exec-CACT5OAW.js";
6
+ import "./agent-scope-CsRbLH4l.js";
7
+ import "./github-copilot-token-Cfs0Wxr8.js";
8
+ import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-Bdhomfei.js";
9
+ import "./manifest-registry-u0okVSkU.js";
10
+ import { t as formatDocsLink } from "./links-B8LAzWwg.js";
11
+ import "./skills-DRjfSQT3.js";
12
+ import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-DJb-_5kO.js";
13
13
  import { spawn } from "node:child_process";
14
14
 
15
15
  //#region src/hooks/gmail-ops.ts
@@ -1,18 +1,18 @@
1
1
  import { t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-DVBShlw6.js";
2
- import { E as danger, R as theme, c as defaultRuntime } from "./subsystem-Bv7dGhES.js";
3
- import { o as displayPath } from "./utils-BHPdZE4h.js";
4
- import { t as runCommandWithTimeout } from "./exec-DXtR2fhb.js";
5
- import "./agent-scope---6LLHj0.js";
6
- import "./model-selection-unMJyUIE.js";
2
+ import { E as danger, R as theme, c as defaultRuntime } from "./subsystem-BoExtIHo.js";
3
+ import { o as displayPath } from "./utils-Cd9QdCHh.js";
4
+ import { t as runCommandWithTimeout } from "./exec-YIosokWE.js";
5
+ import "./agent-scope-CQCus0rI.js";
6
+ import "./model-selection-BLuqsGVB.js";
7
7
  import "./github-copilot-token-BW-SEg7E.js";
8
8
  import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
9
9
  import "./boolean-BgXe2hyu.js";
10
- import "./env-DE9xvYOL.js";
11
- import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-DH9TLUNc.js";
12
- import "./manifest-registry-DFckk-L8.js";
13
- import "./skills-aFOsriMP.js";
14
- import { t as formatDocsLink } from "./links-CV4oki2u.js";
15
- import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-Cgh0ptgA.js";
10
+ import "./env-ONzUVAG2.js";
11
+ import { c as writeConfigFile, i as loadConfig, l as validateConfigObjectWithPlugins, o as readConfigFileSnapshot } from "./config-aFQssWKX.js";
12
+ import "./manifest-registry-CQhdnDBZ.js";
13
+ import "./skills-DprQj9X2.js";
14
+ import { t as formatDocsLink } from "./links-Eax1UO3w.js";
15
+ import { C as normalizeServePath, S as normalizeHooksPath, T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, a as ensureTopic, b as generateHookToken, c as DEFAULT_GMAIL_LABEL, d as DEFAULT_GMAIL_SERVE_BIND, f as DEFAULT_GMAIL_SERVE_PATH, g as buildDefaultHookUrl, h as DEFAULT_GMAIL_TOPIC, i as ensureTailscaleEndpoint, l as DEFAULT_GMAIL_MAX_BYTES, m as DEFAULT_GMAIL_SUBSCRIPTION, n as ensureGcloudAuth, o as resolveProjectIdFromGogCredentials, p as DEFAULT_GMAIL_SERVE_PORT, r as ensureSubscription, s as runGcloud, t as ensureDependency, u as DEFAULT_GMAIL_RENEW_MINUTES, v as buildGogWatchStartArgs, w as parseTopicPath, x as mergeHookPresets, y as buildTopicPath } from "./gmail-setup-utils-Cfns8TQx.js";
16
16
  import { spawn } from "node:child_process";
17
17
 
18
18
  //#region src/hooks/gmail-ops.ts
@@ -1,4 +1,4 @@
1
- import { s as ensureDir, t as CONFIG_DIR } from "./utils-Dk86IbEs.js";
1
+ import { s as ensureDir, t as CONFIG_DIR } from "./utils-BLJAc3ZV.js";
2
2
  import path from "node:path";
3
3
  import os from "node:os";
4
4
  import fs from "node:fs";
@@ -1,4 +1,4 @@
1
- import { c as ensureDir, t as CONFIG_DIR } from "./utils-BHPdZE4h.js";
1
+ import { c as ensureDir, t as CONFIG_DIR } from "./utils-Cd9QdCHh.js";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { b as isVerbose, d as shouldLogSubsystemToConsole, o as createSubsystemLogger } from "./entry.js";
2
2
  import { y as parseAgentSessionKey } from "./session-key-DVvxnFKg.js";
3
- import { n as redactSensitiveText, t as getDefaultRedactPatterns } from "./redact-DuEEf1p1.js";
3
+ import { n as redactSensitiveText, t as getDefaultRedactPatterns } from "./redact-Br9GfacZ.js";
4
4
  import chalk from "chalk";
5
5
 
6
6
  //#region src/gateway/ws-logging.ts
@@ -1,4 +1,4 @@
1
- import { O as isVerbose, o as shouldLogSubsystemToConsole, t as createSubsystemLogger } from "./subsystem-Bv7dGhES.js";
1
+ import { O as isVerbose, o as shouldLogSubsystemToConsole, t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
2
2
  import { y as parseAgentSessionKey } from "./session-key-BWxPj0z_.js";
3
3
  import { n as redactSensitiveText, t as getDefaultRedactPatterns } from "./redact-BRsnXqwD.js";
4
4
  import chalk from "chalk";
@@ -1,5 +1,5 @@
1
- import { c as escapeRegExp } from "./utils-Dk86IbEs.js";
2
- import { t as registerBrowserRoutes } from "./routes-BqxA3ZYr.js";
1
+ import { c as escapeRegExp } from "./utils-BLJAc3ZV.js";
2
+ import { t as registerBrowserRoutes } from "./routes-DewK5tq2.js";
3
3
  import { execFile } from "node:child_process";
4
4
  import os from "node:os";
5
5
  import { readFileSync } from "node:fs";
@@ -37,7 +37,7 @@ Every request must include the hook token. Prefer headers:
37
37
 
38
38
  - `Authorization: Bearer <token>` (recommended)
39
39
  - `x-openclaw-token: <token>`
40
- - `?token=<token>` (deprecated; logs a warning and will be removed in a future major release)
40
+ - Query-string tokens are rejected (`?token=...` returns `400`).
41
41
 
42
42
  ## Endpoints
43
43
 
@@ -80,7 +80,7 @@ Payload:
80
80
  - `message` **required** (string): The prompt or message for the agent to process.
81
81
  - `name` optional (string): Human-readable name for the hook (e.g., "GitHub"), used as a prefix in session summaries.
82
82
  - `agentId` optional (string): Route this hook to a specific agent. Unknown IDs fall back to the default agent. When set, the hook runs using the resolved agent's workspace and configuration.
83
- - `sessionKey` optional (string): The key used to identify the agent's session. Defaults to a random `hook:<uuid>`. Using a consistent key allows for a multi-turn conversation within the hook context.
83
+ - `sessionKey` optional (string): The key used to identify the agent's session. By default this field is rejected unless `hooks.allowRequestSessionKey=true`.
84
84
  - `wakeMode` optional (`now` | `next-heartbeat`): Whether to trigger an immediate heartbeat (default `now`) or wait for the next periodic check.
85
85
  - `deliver` optional (boolean): If `true`, the agent's response will be sent to the messaging channel. Defaults to `true`. Responses that are only heartbeat acknowledgments are automatically skipped.
86
86
  - `channel` optional (string): The messaging channel for delivery. One of: `last`, `whatsapp`, `telegram`, `discord`, `slack`, `mattermost` (plugin), `signal`, `imessage`, `msteams`. Defaults to `last`.
@@ -95,6 +95,40 @@ Effect:
95
95
  - Always posts a summary into the **main** session
96
96
  - If `wakeMode=now`, triggers an immediate heartbeat
97
97
 
98
+ ## Session key policy (breaking change)
99
+
100
+ `/hooks/agent` payload `sessionKey` overrides are disabled by default.
101
+
102
+ - Recommended: set a fixed `hooks.defaultSessionKey` and keep request overrides off.
103
+ - Optional: allow request overrides only when needed, and restrict prefixes.
104
+
105
+ Recommended config:
106
+
107
+ ```json5
108
+ {
109
+ hooks: {
110
+ enabled: true,
111
+ token: "${OPENCLAW_HOOKS_TOKEN}",
112
+ defaultSessionKey: "hook:ingress",
113
+ allowRequestSessionKey: false,
114
+ allowedSessionKeyPrefixes: ["hook:"],
115
+ },
116
+ }
117
+ ```
118
+
119
+ Compatibility config (legacy behavior):
120
+
121
+ ```json5
122
+ {
123
+ hooks: {
124
+ enabled: true,
125
+ token: "${OPENCLAW_HOOKS_TOKEN}",
126
+ allowRequestSessionKey: true,
127
+ allowedSessionKeyPrefixes: ["hook:"], // strongly recommended
128
+ },
129
+ }
130
+ ```
131
+
98
132
  ### `POST /hooks/<name>` (mapped)
99
133
 
100
134
  Custom hook names are resolved via `hooks.mappings` (see configuration). A mapping can
@@ -112,6 +146,9 @@ Mapping options (summary):
112
146
  (`channel` defaults to `last` and falls back to WhatsApp).
113
147
  - `agentId` routes the hook to a specific agent; unknown IDs fall back to the default agent.
114
148
  - `hooks.allowedAgentIds` restricts explicit `agentId` routing. Omit it (or include `*`) to allow any agent. Set `[]` to deny explicit `agentId` routing.
149
+ - `hooks.defaultSessionKey` sets the default session for hook agent runs when no explicit key is provided.
150
+ - `hooks.allowRequestSessionKey` controls whether `/hooks/agent` payloads may set `sessionKey` (default: `false`).
151
+ - `hooks.allowedSessionKeyPrefixes` optionally restricts explicit `sessionKey` values from request payloads and mappings.
115
152
  - `allowUnsafeExternalContent: true` disables the external content safety wrapper for that hook
116
153
  (dangerous; only for trusted internal sources).
117
154
  - `openclaw webhooks gmail setup` writes `hooks.gmail` config for `openclaw webhooks gmail run`.
@@ -122,6 +159,7 @@ Mapping options (summary):
122
159
  - `200` for `/hooks/wake`
123
160
  - `202` for `/hooks/agent` (async run started)
124
161
  - `401` on auth failure
162
+ - `429` after repeated auth failures from the same client (check `Retry-After`)
125
163
  - `400` on invalid payload
126
164
  - `413` on oversized payloads
127
165
 
@@ -165,7 +203,10 @@ curl -X POST http://127.0.0.1:18789/hooks/gmail \
165
203
 
166
204
  - Keep hook endpoints behind loopback, tailnet, or trusted reverse proxy.
167
205
  - Use a dedicated hook token; do not reuse gateway auth tokens.
206
+ - Repeated auth failures are rate-limited per client address to slow brute-force attempts.
168
207
  - If you use multi-agent routing, set `hooks.allowedAgentIds` to limit explicit `agentId` selection.
208
+ - Keep `hooks.allowRequestSessionKey=false` unless you require caller-selected sessions.
209
+ - If you enable request `sessionKey`, restrict `hooks.allowedSessionKeyPrefixes` (for example, `["hook:"]`).
169
210
  - Avoid including sensitive raw payloads in webhook logs.
170
211
  - Hook payloads are treated as untrusted and wrapped with safety boundaries by default.
171
212
  If you must disable this for a specific hook, set `allowUnsafeExternalContent: true`
@@ -28,7 +28,7 @@ Status: ready for DMs and guild channels via the official Discord gateway.
28
28
  Create an application in the Discord Developer Portal, add a bot, then enable:
29
29
 
30
30
  - **Message Content Intent**
31
- - **Server Members Intent** (recommended for name-to-ID lookups and allowlist matching)
31
+ - **Server Members Intent** (required for role allowlists and role-based routing; recommended for name-to-ID allowlist matching)
32
32
 
33
33
  </Step>
34
34
 
@@ -121,6 +121,7 @@ Token resolution is account-aware. Config token values win over env fallback. `D
121
121
  `allowlist` behavior:
122
122
 
123
123
  - guild must match `channels.discord.guilds` (`id` preferred, slug accepted)
124
+ - optional sender allowlists: `users` (IDs or names) and `roles` (role IDs only); if either is configured, senders are allowed when they match `users` OR `roles`
124
125
  - if a guild has `channels` configured, non-listed channels are denied
125
126
  - if a guild has no `channels` block, all channels in that allowlisted guild are allowed
126
127
 
@@ -135,6 +136,7 @@ Token resolution is account-aware. Config token values win over env fallback. `D
135
136
  "123456789012345678": {
136
137
  requireMention: true,
137
138
  users: ["987654321098765432"],
139
+ roles: ["123456789012345678"],
138
140
  channels: {
139
141
  general: { allow: true },
140
142
  help: { allow: true, requireMention: true },
@@ -169,6 +171,32 @@ Token resolution is account-aware. Config token values win over env fallback. `D
169
171
  </Tab>
170
172
  </Tabs>
171
173
 
174
+ ### Role-based agent routing
175
+
176
+ Use `bindings[].match.roles` to route Discord guild members to different agents by role ID. Role-based bindings accept role IDs only and are evaluated after peer or parent-peer bindings and before guild-only bindings.
177
+
178
+ ```json5
179
+ {
180
+ bindings: [
181
+ {
182
+ agentId: "opus",
183
+ match: {
184
+ channel: "discord",
185
+ guildId: "123456789012345678",
186
+ roles: ["111111111111111111"],
187
+ },
188
+ },
189
+ {
190
+ agentId: "sonnet",
191
+ match: {
192
+ channel: "discord",
193
+ guildId: "123456789012345678",
194
+ },
195
+ },
196
+ ],
197
+ }
198
+ ```
199
+
172
200
  ## Developer Portal setup
173
201
 
174
202
  <AccordionGroup>
@@ -1,5 +1,5 @@
1
1
  ---
2
- summary: "CLI reference for `openclaw plugins` (list, install, enable/disable, doctor)"
2
+ summary: "CLI reference for `openclaw plugins` (list, install, uninstall, enable/disable, doctor)"
3
3
  read_when:
4
4
  - You want to install or manage in-process Gateway plugins
5
5
  - You want to debug plugin load failures
@@ -23,6 +23,7 @@ openclaw plugins list
23
23
  openclaw plugins info <id>
24
24
  openclaw plugins enable <id>
25
25
  openclaw plugins disable <id>
26
+ openclaw plugins uninstall <id>
26
27
  openclaw plugins doctor
27
28
  openclaw plugins update <id>
28
29
  openclaw plugins update --all
@@ -51,6 +52,24 @@ Use `--link` to avoid copying a local directory (adds to `plugins.load.paths`):
51
52
  openclaw plugins install -l ./my-plugin
52
53
  ```
53
54
 
55
+ ### Uninstall
56
+
57
+ ```bash
58
+ openclaw plugins uninstall <id>
59
+ openclaw plugins uninstall <id> --dry-run
60
+ openclaw plugins uninstall <id> --keep-files
61
+ ```
62
+
63
+ `uninstall` removes plugin records from `plugins.entries`, `plugins.installs`,
64
+ the plugin allowlist, and linked `plugins.load.paths` entries when applicable.
65
+ For active memory plugins, the memory slot resets to `memory-core`.
66
+
67
+ By default, uninstall also removes the plugin install directory under the active
68
+ state dir extensions root (`$OPENCLAW_STATE_DIR/extensions/<id>`). Use
69
+ `--keep-files` to keep files on disk.
70
+
71
+ `--keep-config` is supported as a deprecated alias for `--keep-files`.
72
+
54
73
  ### Update
55
74
 
56
75
  ```bash
@@ -24,3 +24,4 @@ openclaw security audit --fix
24
24
 
25
25
  The audit warns when multiple DM senders share the main session and recommends **secure DM mode**: `session.dmScope="per-channel-peer"` (or `per-account-channel-peer` for multi-account channels) for shared inboxes.
26
26
  It also warns when small models (`<=300B`) are used without sandboxing and with web/browser tools enabled.
27
+ For webhook ingress, it warns when `hooks.defaultSessionKey` is unset, when request `sessionKey` overrides are enabled, and when overrides are enabled without `hooks.allowedSessionKeyPrefixes`.
@@ -94,6 +94,7 @@ Behavior:
94
94
  - Announce delivery runs after the primary run completes and is best-effort; `status: "ok"` does not guarantee the announce was delivered.
95
95
  - Waits via gateway `agent.wait` (server-side) so reconnects don't drop the wait.
96
96
  - Agent-to-agent message context is injected for the primary run.
97
+ - Inter-session messages are persisted with `message.provenance.kind = "inter_session"` so transcript readers can distinguish routed agent instructions from external user input.
97
98
  - After the primary run completes, OpenClaw runs a **reply-back loop**:
98
99
  - Round 2+ alternates between requester and target agents.
99
100
  - Reply exactly `REPLY_SKIP` to stop the ping‑pong.
@@ -1934,6 +1934,10 @@ See [Plugins](/tools/plugin).
1934
1934
 
1935
1935
  - Chat Completions: disabled by default. Enable with `gateway.http.endpoints.chatCompletions.enabled: true`.
1936
1936
  - Responses API: `gateway.http.endpoints.responses.enabled`.
1937
+ - Responses URL-input hardening:
1938
+ - `gateway.http.endpoints.responses.maxUrlParts`
1939
+ - `gateway.http.endpoints.responses.files.urlAllowlist`
1940
+ - `gateway.http.endpoints.responses.images.urlAllowlist`
1937
1941
 
1938
1942
  ### Multi-instance isolation
1939
1943
 
@@ -1960,6 +1964,9 @@ See [Multiple Gateways](/gateway/multiple-gateways).
1960
1964
  token: "shared-secret",
1961
1965
  path: "/hooks",
1962
1966
  maxBodyBytes: 262144,
1967
+ defaultSessionKey: "hook:ingress",
1968
+ allowRequestSessionKey: false,
1969
+ allowedSessionKeyPrefixes: ["hook:"],
1963
1970
  allowedAgentIds: ["hooks", "main"],
1964
1971
  presets: ["gmail"],
1965
1972
  transformsDir: "~/.openclaw/hooks",
@@ -1987,6 +1994,7 @@ Auth: `Authorization: Bearer <token>` or `x-openclaw-token: <token>`.
1987
1994
 
1988
1995
  - `POST /hooks/wake` → `{ text, mode?: "now"|"next-heartbeat" }`
1989
1996
  - `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
1997
+ - `sessionKey` from request payload is accepted only when `hooks.allowRequestSessionKey=true` (default: `false`).
1990
1998
  - `POST /hooks/<name>` → resolved via `hooks.mappings`
1991
1999
 
1992
2000
  <Accordion title="Mapping details">
@@ -1997,6 +2005,9 @@ Auth: `Authorization: Bearer <token>` or `x-openclaw-token: <token>`.
1997
2005
  - `transform` can point to a JS/TS module returning a hook action.
1998
2006
  - `agentId` routes to a specific agent; unknown IDs fall back to default.
1999
2007
  - `allowedAgentIds`: restricts explicit routing (`*` or omitted = allow all, `[]` = deny all).
2008
+ - `defaultSessionKey`: optional fixed session key for hook agent runs without explicit `sessionKey`.
2009
+ - `allowRequestSessionKey`: allow `/hooks/agent` callers to set `sessionKey` (default: `false`).
2010
+ - `allowedSessionKeyPrefixes`: optional prefix allowlist for explicit `sessionKey` values (request + mapping), e.g. `["hook:"]`.
2000
2011
  - `deliver: true` sends final reply to a channel; `channel` defaults to `last`.
2001
2012
  - `model` overrides LLM for this hook run (must be allowed if model catalog is set).
2002
2013
 
@@ -262,6 +262,9 @@ When validation fails:
262
262
  enabled: true,
263
263
  token: "shared-secret",
264
264
  path: "/hooks",
265
+ defaultSessionKey: "hook:ingress",
266
+ allowRequestSessionKey: false,
267
+ allowedSessionKeyPrefixes: ["hook:"],
265
268
  mappings: [
266
269
  {
267
270
  match: { path: "gmail" },
@@ -186,7 +186,11 @@ URL fetch defaults:
186
186
 
187
187
  - `files.allowUrl`: `true`
188
188
  - `images.allowUrl`: `true`
189
+ - `maxUrlParts`: `8` (total URL-based `input_file` + `input_image` parts per request)
189
190
  - Requests are guarded (DNS resolution, private IP blocking, redirect caps, timeouts).
191
+ - Optional hostname allowlists are supported per input type (`files.urlAllowlist`, `images.urlAllowlist`).
192
+ - Exact host: `"cdn.example.com"`
193
+ - Wildcard subdomains: `"*.assets.example.com"` (does not match apex)
190
194
 
191
195
  ## File + image limits (config)
192
196
 
@@ -200,8 +204,10 @@ Defaults can be tuned under `gateway.http.endpoints.responses`:
200
204
  responses: {
201
205
  enabled: true,
202
206
  maxBodyBytes: 20000000,
207
+ maxUrlParts: 8,
203
208
  files: {
204
209
  allowUrl: true,
210
+ urlAllowlist: ["cdn.example.com", "*.assets.example.com"],
205
211
  allowedMimes: [
206
212
  "text/plain",
207
213
  "text/markdown",
@@ -222,6 +228,7 @@ Defaults can be tuned under `gateway.http.endpoints.responses`:
222
228
  },
223
229
  images: {
224
230
  allowUrl: true,
231
+ urlAllowlist: ["images.example.com"],
225
232
  allowedMimes: ["image/jpeg", "image/png", "image/gif", "image/webp"],
226
233
  maxBytes: 10485760,
227
234
  maxRedirects: 3,
@@ -237,6 +244,7 @@ Defaults can be tuned under `gateway.http.endpoints.responses`:
237
244
  Defaults when omitted:
238
245
 
239
246
  - `maxBodyBytes`: 20MB
247
+ - `maxUrlParts`: 8
240
248
  - `files.maxBytes`: 5MB
241
249
  - `files.maxChars`: 200k
242
250
  - `files.maxRedirects`: 3
@@ -248,6 +256,13 @@ Defaults when omitted:
248
256
  - `images.maxRedirects`: 3
249
257
  - `images.timeoutMs`: 10s
250
258
 
259
+ Security note:
260
+
261
+ - URL allowlists are enforced before fetch and on redirect hops.
262
+ - Allowlisting a hostname does not bypass private/internal IP blocking.
263
+ - For internet-exposed gateways, apply network egress controls in addition to app-level guards.
264
+ See [Security](/gateway/security).
265
+
251
266
  ## Streaming (SSE)
252
267
 
253
268
  Set `stream: true` to receive Server-Sent Events (SSE):