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,7 +1,7 @@
1
- import { c as defaultRuntime } from "./subsystem-Bv7dGhES.js";
1
+ import { c as defaultRuntime } from "./subsystem-BoExtIHo.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-DuoCkWRh.js";
4
- import { t as resolveGatewayService } from "./service-DZMXgMra.js";
3
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
4
+ import { t as resolveGatewayService } from "./service--nPk7DvT.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";
2
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
3
3
  import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-JPeoOZnw.js";
4
- import { t as resolveGatewayService } from "./service-DNcIZ5Kp.js";
4
+ import { t as resolveGatewayService } from "./service-99RDXwX4.js";
5
5
 
6
6
  //#region src/cli/gateway-cli/shared.ts
7
7
  function parsePort(raw) {
@@ -1,8 +1,8 @@
1
- import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-Bv7dGhES.js";
1
+ import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-BoExtIHo.js";
2
2
  import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
3
3
  import { s as pickPrimaryLanIPv4 } from "./ws-CHCQHs0F.js";
4
- import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-DuoCkWRh.js";
5
- import { o as resolveGatewayLogPaths } from "./service-DZMXgMra.js";
4
+ import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-BvQ6S8j5.js";
5
+ import { o as resolveGatewayLogPaths } from "./service--nPk7DvT.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 { M as getResolvedLoggerSettings, p as defaultRuntime } from "./entry.js";
2
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
1
+ import { N as getResolvedLoggerSettings, p as defaultRuntime } from "./entry.js";
2
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
3
3
  import { s as pickPrimaryLanIPv4 } from "./ws-C0k_dhCP.js";
4
4
  import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-JPeoOZnw.js";
5
- import { o as resolveGatewayLogPaths } from "./service-DNcIZ5Kp.js";
5
+ import { o as resolveGatewayLogPaths } from "./service-99RDXwX4.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-DjZBTJJ3.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs/promises";
4
4
 
@@ -1,11 +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";
2
+ import { t as CONFIG_DIR, y as resolveUserPath } from "./utils-BLJAc3ZV.js";
3
3
  import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-BNlEap4i.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-BTgLN_W2.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-u0okVSkU.js";
5
5
  import path from "node:path";
6
6
  import os from "node:os";
7
7
  import fs from "node:fs";
8
8
  import JSON5 from "json5";
9
+ import fs$1 from "node:fs/promises";
9
10
  import { fileURLToPath } from "node:url";
10
11
  import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
11
12
  import YAML from "yaml";
@@ -361,6 +362,83 @@ function applySkillEnvOverridesFromSnapshot(params) {
361
362
  };
362
363
  }
363
364
 
365
+ //#endregion
366
+ //#region src/agents/sandbox-paths.ts
367
+ const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
368
+ const HTTP_URL_RE = /^https?:\/\//i;
369
+ const DATA_URL_RE = /^data:/i;
370
+ function normalizeUnicodeSpaces(str) {
371
+ return str.replace(UNICODE_SPACES, " ");
372
+ }
373
+ function expandPath(filePath) {
374
+ const normalized = normalizeUnicodeSpaces(filePath);
375
+ if (normalized === "~") return os.homedir();
376
+ if (normalized.startsWith("~/")) return os.homedir() + normalized.slice(1);
377
+ return normalized;
378
+ }
379
+ function resolveToCwd(filePath, cwd) {
380
+ const expanded = expandPath(filePath);
381
+ if (path.isAbsolute(expanded)) return expanded;
382
+ return path.resolve(cwd, expanded);
383
+ }
384
+ function resolveSandboxPath(params) {
385
+ const resolved = resolveToCwd(params.filePath, params.cwd);
386
+ const rootResolved = path.resolve(params.root);
387
+ const relative = path.relative(rootResolved, resolved);
388
+ if (!relative || relative === "") return {
389
+ resolved,
390
+ relative: ""
391
+ };
392
+ if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`Path escapes sandbox root (${shortPath(rootResolved)}): ${params.filePath}`);
393
+ return {
394
+ resolved,
395
+ relative
396
+ };
397
+ }
398
+ async function assertSandboxPath(params) {
399
+ const resolved = resolveSandboxPath(params);
400
+ await assertNoSymlink(resolved.relative, path.resolve(params.root));
401
+ return resolved;
402
+ }
403
+ function assertMediaNotDataUrl(media) {
404
+ const raw = media.trim();
405
+ if (DATA_URL_RE.test(raw)) throw new Error("data: URLs are not supported for media. Use buffer instead.");
406
+ }
407
+ async function resolveSandboxedMediaSource(params) {
408
+ const raw = params.media.trim();
409
+ if (!raw) return raw;
410
+ if (HTTP_URL_RE.test(raw)) return raw;
411
+ let candidate = raw;
412
+ if (/^file:\/\//i.test(candidate)) try {
413
+ candidate = fileURLToPath(candidate);
414
+ } catch {
415
+ throw new Error(`Invalid file:// URL for sandboxed media: ${raw}`);
416
+ }
417
+ return (await assertSandboxPath({
418
+ filePath: candidate,
419
+ cwd: params.sandboxRoot,
420
+ root: params.sandboxRoot
421
+ })).resolved;
422
+ }
423
+ async function assertNoSymlink(relative, root) {
424
+ if (!relative) return;
425
+ const parts = relative.split(path.sep).filter(Boolean);
426
+ let current = root;
427
+ for (const part of parts) {
428
+ current = path.join(current, part);
429
+ try {
430
+ if ((await fs$1.lstat(current)).isSymbolicLink()) throw new Error(`Symlink not allowed in sandbox path: ${current}`);
431
+ } catch (err) {
432
+ if (err.code === "ENOENT") return;
433
+ throw err;
434
+ }
435
+ }
436
+ }
437
+ function shortPath(value) {
438
+ if (value.startsWith(os.homedir())) return `~${value.slice(os.homedir().length)}`;
439
+ return value;
440
+ }
441
+
364
442
  //#endregion
365
443
  //#region src/agents/skills/bundled-dir.ts
366
444
  function looksLikeSkillsDir(dir) {
@@ -604,6 +682,36 @@ function resolveSkillsPromptForRun(params) {
604
682
  function loadWorkspaceSkillEntries(workspaceDir, opts) {
605
683
  return loadSkillEntries(workspaceDir, opts);
606
684
  }
685
+ function resolveUniqueSyncedSkillDirName(base, used) {
686
+ if (!used.has(base)) {
687
+ used.add(base);
688
+ return base;
689
+ }
690
+ for (let index = 2; index < 1e4; index += 1) {
691
+ const candidate = `${base}-${index}`;
692
+ if (!used.has(candidate)) {
693
+ used.add(candidate);
694
+ return candidate;
695
+ }
696
+ }
697
+ let fallbackIndex = 1e4;
698
+ let fallback = `${base}-${fallbackIndex}`;
699
+ while (used.has(fallback)) {
700
+ fallbackIndex += 1;
701
+ fallback = `${base}-${fallbackIndex}`;
702
+ }
703
+ used.add(fallback);
704
+ return fallback;
705
+ }
706
+ function resolveSyncedSkillDestinationPath(params) {
707
+ const sourceDirName = path.basename(params.entry.skill.baseDir).trim();
708
+ if (!sourceDirName || sourceDirName === "." || sourceDirName === "..") return null;
709
+ return resolveSandboxPath({
710
+ filePath: resolveUniqueSyncedSkillDirName(sourceDirName, params.usedDirNames),
711
+ cwd: params.targetSkillsDir,
712
+ root: params.targetSkillsDir
713
+ }).resolved;
714
+ }
607
715
  async function syncSkillsToWorkspace(params) {
608
716
  const sourceDir = resolveUserPath(params.sourceWorkspaceDir);
609
717
  const targetDir = resolveUserPath(params.targetWorkspaceDir);
@@ -620,8 +728,24 @@ async function syncSkillsToWorkspace(params) {
620
728
  force: true
621
729
  });
622
730
  await fsp.mkdir(targetSkillsDir, { recursive: true });
731
+ const usedDirNames = /* @__PURE__ */ new Set();
623
732
  for (const entry of entries) {
624
- const dest = path.join(targetSkillsDir, entry.skill.name);
733
+ let dest = null;
734
+ try {
735
+ dest = resolveSyncedSkillDestinationPath({
736
+ targetSkillsDir,
737
+ entry,
738
+ usedDirNames
739
+ });
740
+ } catch (error) {
741
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
742
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: ${message}`);
743
+ continue;
744
+ }
745
+ if (!dest) {
746
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: invalid source directory name`);
747
+ continue;
748
+ }
625
749
  try {
626
750
  await fsp.cp(entry.skill.baseDir, dest, {
627
751
  recursive: true,
@@ -701,4 +825,4 @@ function resolveSkillsInstallPreferences(config) {
701
825
  }
702
826
 
703
827
  //#endregion
704
- 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 };
828
+ export { resolveBundledAllowlist as _, resolveSkillsPromptForRun as a, resolveSkillKey as b, resolveBundledSkillsDir as c, resolveSandboxedMediaSource as d, applySkillEnvOverrides as f, isConfigPathTruthy as g, isBundledSkillAllowed as h, loadWorkspaceSkillEntries as i, assertMediaNotDataUrl as l, hasBinary as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, applySkillEnvOverridesFromSnapshot as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, assertSandboxPath as u, resolveConfigPath as v, parseFrontmatterBlock as x, resolveSkillConfig as y };
@@ -1,13 +1,14 @@
1
- import { t as createSubsystemLogger } from "./subsystem-Bv7dGhES.js";
2
- import { b as resolveUserPath, t as CONFIG_DIR } from "./utils-BHPdZE4h.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
2
+ import { b as resolveUserPath, t as CONFIG_DIR } from "./utils-Cd9QdCHh.js";
3
3
  import { n as resolveOpenClawPackageRootSync } from "./openclaw-root-1VeFrph_.js";
4
4
  import { t as parseBooleanValue } from "./boolean-BgXe2hyu.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-DFckk-L8.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-CQhdnDBZ.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import fs from "node:fs";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
10
  import JSON5 from "json5";
11
+ import fs$1 from "node:fs/promises";
11
12
  import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
12
13
  import YAML from "yaml";
13
14
 
@@ -362,6 +363,83 @@ function applySkillEnvOverridesFromSnapshot(params) {
362
363
  };
363
364
  }
364
365
 
366
+ //#endregion
367
+ //#region src/agents/sandbox-paths.ts
368
+ const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
369
+ const HTTP_URL_RE = /^https?:\/\//i;
370
+ const DATA_URL_RE = /^data:/i;
371
+ function normalizeUnicodeSpaces(str) {
372
+ return str.replace(UNICODE_SPACES, " ");
373
+ }
374
+ function expandPath(filePath) {
375
+ const normalized = normalizeUnicodeSpaces(filePath);
376
+ if (normalized === "~") return os.homedir();
377
+ if (normalized.startsWith("~/")) return os.homedir() + normalized.slice(1);
378
+ return normalized;
379
+ }
380
+ function resolveToCwd(filePath, cwd) {
381
+ const expanded = expandPath(filePath);
382
+ if (path.isAbsolute(expanded)) return expanded;
383
+ return path.resolve(cwd, expanded);
384
+ }
385
+ function resolveSandboxPath(params) {
386
+ const resolved = resolveToCwd(params.filePath, params.cwd);
387
+ const rootResolved = path.resolve(params.root);
388
+ const relative = path.relative(rootResolved, resolved);
389
+ if (!relative || relative === "") return {
390
+ resolved,
391
+ relative: ""
392
+ };
393
+ if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`Path escapes sandbox root (${shortPath(rootResolved)}): ${params.filePath}`);
394
+ return {
395
+ resolved,
396
+ relative
397
+ };
398
+ }
399
+ async function assertSandboxPath(params) {
400
+ const resolved = resolveSandboxPath(params);
401
+ await assertNoSymlink(resolved.relative, path.resolve(params.root));
402
+ return resolved;
403
+ }
404
+ function assertMediaNotDataUrl(media) {
405
+ const raw = media.trim();
406
+ if (DATA_URL_RE.test(raw)) throw new Error("data: URLs are not supported for media. Use buffer instead.");
407
+ }
408
+ async function resolveSandboxedMediaSource(params) {
409
+ const raw = params.media.trim();
410
+ if (!raw) return raw;
411
+ if (HTTP_URL_RE.test(raw)) return raw;
412
+ let candidate = raw;
413
+ if (/^file:\/\//i.test(candidate)) try {
414
+ candidate = fileURLToPath(candidate);
415
+ } catch {
416
+ throw new Error(`Invalid file:// URL for sandboxed media: ${raw}`);
417
+ }
418
+ return (await assertSandboxPath({
419
+ filePath: candidate,
420
+ cwd: params.sandboxRoot,
421
+ root: params.sandboxRoot
422
+ })).resolved;
423
+ }
424
+ async function assertNoSymlink(relative, root) {
425
+ if (!relative) return;
426
+ const parts = relative.split(path.sep).filter(Boolean);
427
+ let current = root;
428
+ for (const part of parts) {
429
+ current = path.join(current, part);
430
+ try {
431
+ if ((await fs$1.lstat(current)).isSymbolicLink()) throw new Error(`Symlink not allowed in sandbox path: ${current}`);
432
+ } catch (err) {
433
+ if (err.code === "ENOENT") return;
434
+ throw err;
435
+ }
436
+ }
437
+ }
438
+ function shortPath(value) {
439
+ if (value.startsWith(os.homedir())) return `~${value.slice(os.homedir().length)}`;
440
+ return value;
441
+ }
442
+
365
443
  //#endregion
366
444
  //#region src/agents/skills/bundled-dir.ts
367
445
  function looksLikeSkillsDir(dir) {
@@ -605,6 +683,36 @@ function resolveSkillsPromptForRun(params) {
605
683
  function loadWorkspaceSkillEntries(workspaceDir, opts) {
606
684
  return loadSkillEntries(workspaceDir, opts);
607
685
  }
686
+ function resolveUniqueSyncedSkillDirName(base, used) {
687
+ if (!used.has(base)) {
688
+ used.add(base);
689
+ return base;
690
+ }
691
+ for (let index = 2; index < 1e4; index += 1) {
692
+ const candidate = `${base}-${index}`;
693
+ if (!used.has(candidate)) {
694
+ used.add(candidate);
695
+ return candidate;
696
+ }
697
+ }
698
+ let fallbackIndex = 1e4;
699
+ let fallback = `${base}-${fallbackIndex}`;
700
+ while (used.has(fallback)) {
701
+ fallbackIndex += 1;
702
+ fallback = `${base}-${fallbackIndex}`;
703
+ }
704
+ used.add(fallback);
705
+ return fallback;
706
+ }
707
+ function resolveSyncedSkillDestinationPath(params) {
708
+ const sourceDirName = path.basename(params.entry.skill.baseDir).trim();
709
+ if (!sourceDirName || sourceDirName === "." || sourceDirName === "..") return null;
710
+ return resolveSandboxPath({
711
+ filePath: resolveUniqueSyncedSkillDirName(sourceDirName, params.usedDirNames),
712
+ cwd: params.targetSkillsDir,
713
+ root: params.targetSkillsDir
714
+ }).resolved;
715
+ }
608
716
  async function syncSkillsToWorkspace(params) {
609
717
  const sourceDir = resolveUserPath(params.sourceWorkspaceDir);
610
718
  const targetDir = resolveUserPath(params.targetWorkspaceDir);
@@ -621,8 +729,24 @@ async function syncSkillsToWorkspace(params) {
621
729
  force: true
622
730
  });
623
731
  await fsp.mkdir(targetSkillsDir, { recursive: true });
732
+ const usedDirNames = /* @__PURE__ */ new Set();
624
733
  for (const entry of entries) {
625
- const dest = path.join(targetSkillsDir, entry.skill.name);
734
+ let dest = null;
735
+ try {
736
+ dest = resolveSyncedSkillDestinationPath({
737
+ targetSkillsDir,
738
+ entry,
739
+ usedDirNames
740
+ });
741
+ } catch (error) {
742
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
743
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: ${message}`);
744
+ continue;
745
+ }
746
+ if (!dest) {
747
+ console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: invalid source directory name`);
748
+ continue;
749
+ }
626
750
  try {
627
751
  await fsp.cp(entry.skill.baseDir, dest, {
628
752
  recursive: true,
@@ -702,4 +826,4 @@ function resolveSkillsInstallPreferences(config) {
702
826
  }
703
827
 
704
828
  //#endregion
705
- 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 };
829
+ export { resolveBundledAllowlist as _, resolveSkillsPromptForRun as a, resolveSkillKey as b, resolveBundledSkillsDir as c, resolveSandboxedMediaSource as d, applySkillEnvOverrides as f, isConfigPathTruthy as g, isBundledSkillAllowed as h, loadWorkspaceSkillEntries as i, assertMediaNotDataUrl as l, hasBinary as m, buildWorkspaceSkillCommandSpecs as n, syncSkillsToWorkspace as o, applySkillEnvOverridesFromSnapshot as p, buildWorkspaceSkillSnapshot as r, resolvePluginSkillDirs as s, resolveSkillsInstallPreferences as t, assertSandboxPath as u, resolveConfigPath as v, parseFrontmatterBlock as x, resolveSkillConfig as y };
@@ -1,19 +1,19 @@
1
1
  import "./paths-DVBShlw6.js";
2
- import { R as theme, c as defaultRuntime } from "./subsystem-Bv7dGhES.js";
3
- import { C as shortenHomePath } from "./utils-BHPdZE4h.js";
4
- import "./exec-DXtR2fhb.js";
5
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope---6LLHj0.js";
6
- import "./model-selection-unMJyUIE.js";
2
+ import { R as theme, c as defaultRuntime } from "./subsystem-BoExtIHo.js";
3
+ import { C as shortenHomePath } from "./utils-Cd9QdCHh.js";
4
+ import "./exec-YIosokWE.js";
5
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./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 { i as loadConfig } 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 { t as renderTable } from "./table-DzBBIqHO.js";
16
- import { t as buildWorkspaceSkillStatus } from "./skills-status-D4vbIMnz.js";
10
+ import "./env-ONzUVAG2.js";
11
+ import { i as loadConfig } 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 { t as renderTable } from "./table-B8dx3v4v.js";
16
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-5U3P3YfJ.js";
17
17
 
18
18
  //#region src/cli/skills-cli.ts
19
19
  function appendClawHubHint(output, json) {
@@ -1,16 +1,16 @@
1
- import { k as theme, p as defaultRuntime } from "./entry.js";
2
- import "./auth-profiles-CcJ3hrog.js";
3
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
4
- import { S as shortenHomePath } from "./utils-Dk86IbEs.js";
5
- import "./exec-B8JKbXKW.js";
6
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-RCSw6gHy.js";
7
- import "./github-copilot-token-SLWintYd.js";
8
- import { i as loadConfig } 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 { t as renderTable } from "./table-oJQPTUL6.js";
13
- import { t as buildWorkspaceSkillStatus } from "./skills-status-DJDaA2Ur.js";
1
+ import { A as theme, p as defaultRuntime } from "./entry.js";
2
+ import "./auth-profiles-ByNs3eEm.js";
3
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
4
+ import { S as shortenHomePath } from "./utils-BLJAc3ZV.js";
5
+ import "./exec-CACT5OAW.js";
6
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CsRbLH4l.js";
7
+ import "./github-copilot-token-Cfs0Wxr8.js";
8
+ import { i as loadConfig } 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 { t as renderTable } from "./table-CwulTLQp.js";
13
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-TDIgVd1K.js";
14
14
 
15
15
  //#region src/cli/skills-cli.ts
16
16
  function appendClawHubHint(output, json) {
@@ -1,6 +1,6 @@
1
- import { t as createSubsystemLogger } from "./subsystem-Bv7dGhES.js";
2
- import { t as CONFIG_DIR } from "./utils-BHPdZE4h.js";
3
- import { c as resolveBundledSkillsDir, d as hasBinary, f as isBundledSkillAllowed, g as resolveSkillConfig, h as resolveConfigPath, i as loadWorkspaceSkillEntries, m as resolveBundledAllowlist, p as isConfigPathTruthy, t as resolveSkillsInstallPreferences } from "./skills-aFOsriMP.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
2
+ import { t as CONFIG_DIR } from "./utils-Cd9QdCHh.js";
3
+ import { _ as resolveBundledAllowlist, c as resolveBundledSkillsDir, g as isConfigPathTruthy, h as isBundledSkillAllowed, i as loadWorkspaceSkillEntries, m as hasBinary, t as resolveSkillsInstallPreferences, v as resolveConfigPath, y as resolveSkillConfig } from "./skills-DprQj9X2.js";
4
4
  import path from "node:path";
5
5
  import { loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
- import { t as CONFIG_DIR } from "./utils-Dk86IbEs.js";
3
- import { c as resolveBundledSkillsDir, d as hasBinary, f as isBundledSkillAllowed, g as resolveSkillConfig, h as resolveConfigPath, i as loadWorkspaceSkillEntries, m as resolveBundledAllowlist, p as isConfigPathTruthy, t as resolveSkillsInstallPreferences } from "./skills-BvPUNjxo.js";
2
+ import { t as CONFIG_DIR } from "./utils-BLJAc3ZV.js";
3
+ import { _ as resolveBundledAllowlist, c as resolveBundledSkillsDir, g as isConfigPathTruthy, h as isBundledSkillAllowed, i as loadWorkspaceSkillEntries, m as hasBinary, t as resolveSkillsInstallPreferences, v as resolveConfigPath, y as resolveSkillConfig } from "./skills-DRjfSQT3.js";
4
4
  import path from "node:path";
5
5
  import { loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { o as createSubsystemLogger, t as installProcessWarningFilter } from "./entry.js";
2
- import { a as resolveSessionTranscriptsDirForAgent } from "./paths-IivnSNkP.js";
3
- import { n as redactSensitiveText } from "./redact-DuEEf1p1.js";
2
+ import { o as resolveSessionTranscriptsDirForAgent } from "./paths-DLINmNFQ.js";
3
+ import { n as redactSensitiveText } from "./redact-Br9GfacZ.js";
4
4
  import { createRequire } from "node:module";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
- import { t as createSubsystemLogger } from "./subsystem-Bv7dGhES.js";
2
- import { a as resolveSessionTranscriptsDirForAgent } from "./paths-RITJT4UY.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
2
+ import { o as resolveSessionTranscriptsDirForAgent } from "./paths-B49s6UZQ.js";
3
3
  import { n as redactSensitiveText } from "./redact-BRsnXqwD.js";
4
4
  import { createRequire } from "node:module";
5
5
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
- import { l as createSubsystemLogger } from "./exec-4WHuOniw.js";
2
- import { i as resolveSessionTranscriptsDirForAgent } from "./paths-DwKNqk_S.js";
1
+ import { l as createSubsystemLogger } from "./exec-B8lXct-k.js";
2
+ import { i as resolveSessionTranscriptsDirForAgent } from "./paths-B0a4ywSO.js";
3
3
  import { t as redactSensitiveText } from "./redact-BrXLgslJ.js";
4
4
  import { createRequire } from "node:module";
5
5
  import fs from "node:fs/promises";
@@ -1,5 +1,5 @@
1
- import { l as createSubsystemLogger } from "./exec-D12IZYtJ.js";
2
- import { i as resolveSessionTranscriptsDirForAgent } from "./paths-CB2fqqbX.js";
1
+ import { l as createSubsystemLogger } from "./exec-CJFFoM7H.js";
2
+ import { i as resolveSessionTranscriptsDirForAgent } from "./paths-D0O87MfH.js";
3
3
  import { t as redactSensitiveText } from "./redact-BIMJ3ntQ.js";
4
4
  import { createRequire } from "node:module";
5
5
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-RCSw6gHy.js";
3
- import { i as loadConfig } from "./config-B7sno9eI.js";
4
- import { t as loadOpenClawPlugins } from "./loader-Caow9TPA.js";
2
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-CsRbLH4l.js";
3
+ import { i as loadConfig } from "./config-Bdhomfei.js";
4
+ import { t as loadOpenClawPlugins } from "./loader-KjT074JR.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -1,7 +1,7 @@
1
- import { t as createSubsystemLogger } from "./subsystem-Bv7dGhES.js";
2
- import { ut as loadOpenClawPlugins } from "./reply-m467_fOC.js";
3
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope---6LLHj0.js";
4
- import { i as loadConfig } from "./config-DH9TLUNc.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
2
+ import { ut as loadOpenClawPlugins } from "./reply-DICXkh_C.js";
3
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-CQCus0rI.js";
4
+ import { i as loadConfig } from "./config-aFQssWKX.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -1,41 +1,41 @@
1
- import { I as DEFAULT_GATEWAY_PORT, O as isRich, W as resolveGatewayPort, k as theme, m as restoreTerminalState, p as defaultRuntime, y as info } from "./entry.js";
2
- import { Ct as DEFAULT_CONTEXT_TOKENS, N as resolveConfiguredModelRef, Tt as DEFAULT_PROVIDER, _ as ensureAuthProfileStore, wt as DEFAULT_MODEL } from "./auth-profiles-CcJ3hrog.js";
3
- import { r as resolveCliName, t as formatCliCommand } from "./command-format-ayFsmwwz.js";
1
+ import { A as theme, G as resolveGatewayPort, L as DEFAULT_GATEWAY_PORT, k as isRich, m as restoreTerminalState, p as defaultRuntime, y as info } from "./entry.js";
2
+ import { Ct as DEFAULT_CONTEXT_TOKENS, N as resolveConfiguredModelRef, Tt as DEFAULT_PROVIDER, _ as ensureAuthProfileStore, wt as DEFAULT_MODEL } from "./auth-profiles-ByNs3eEm.js";
3
+ import { r as resolveCliName, t as formatCliCommand } from "./command-format-Bxe0mWee.js";
4
4
  import { l as normalizeAgentId, y as parseAgentSessionKey } from "./session-key-DVvxnFKg.js";
5
- import { h as pathExists, y as resolveUserPath } from "./utils-Dk86IbEs.js";
6
- import { n as runExec } from "./exec-B8JKbXKW.js";
5
+ import { h as pathExists, y as resolveUserPath } from "./utils-BLJAc3ZV.js";
6
+ import { n as runExec } from "./exec-CACT5OAW.js";
7
7
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-BNlEap4i.js";
8
- import { c as resolveDefaultAgentId, h as DEFAULT_IDENTITY_FILENAME, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir } from "./agent-scope-RCSw6gHy.js";
9
- import { M as VERSION, c as writeConfigFile, i as loadConfig, o as readConfigFileSnapshot } from "./config-B7sno9eI.js";
10
- import { d as formatPortDiagnostics, l as inspectPortUsage } from "./chrome-yIKmOzCO.js";
11
- import { a as findTailscaleBinary, o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-DU6DgqVy.js";
12
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-Yxns4CVq.js";
13
- import { n as listChannelPlugins } from "./plugins-3GyCj5KL.js";
14
- import { $n as peekSystemEvents, Ln as readRestartSentinel, Nt as sha256HexPrefix, Pr as getMemorySearchManager, Rn as summarizeRestartSentinel, X as getRemoteSkillEligibility, Xt as loadProviderUsageSummary, Zt as formatUsageReportLines, _ as randomToken, a as applyWizardMetadata, b as summarizeExistingConfig, c as ensureWorkspaceAndSessions, d as handleReset, en as listAgentsForGateway, g as probeGatewayReachable, h as printWizardHeader, i as DEFAULT_WORKSPACE, l as formatControlUiSshHint, m as openUrl, p as normalizeGatewayTokenInput, pn as lookupContextTokens, q as buildChannelSummary, s as detectBrowserOpenSupport, v as resolveControlUiLinks, w as normalizeControlUiBasePath, x as waitForGatewayReachable } from "./loader-Caow9TPA.js";
15
- import { n as withProgress } from "./progress-Da1ehW-x.js";
8
+ import { c as resolveDefaultAgentId, h as DEFAULT_IDENTITY_FILENAME, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir } from "./agent-scope-CsRbLH4l.js";
9
+ import { M as VERSION, c as writeConfigFile, i as loadConfig, o as readConfigFileSnapshot } from "./config-Bdhomfei.js";
10
+ import { d as formatPortDiagnostics, l as inspectPortUsage } from "./chrome-foEwx3lN.js";
11
+ import { d as getTailnetHostname, f as readTailscaleStatusJson, u as findTailscaleBinary } from "./auth-9x3lqfIY.js";
12
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DVYCIV8m.js";
13
+ import { n as listChannelPlugins } from "./plugins-4Hqd1WGf.js";
14
+ import { $n as peekSystemEvents, Kt as loadProviderUsageSummary, Nn as readRestartSentinel, Nt as sha256HexPrefix, Pn as summarizeRestartSentinel, Pr as getMemorySearchManager, X as getRemoteSkillEligibility, Xt as listAgentsForGateway, _ as randomToken, a as applyWizardMetadata, b as summarizeExistingConfig, c as ensureWorkspaceAndSessions, d as handleReset, g as probeGatewayReachable, h as printWizardHeader, i as DEFAULT_WORKSPACE, l as formatControlUiSshHint, ln as lookupContextTokens, m as openUrl, p as normalizeGatewayTokenInput, q as buildChannelSummary, qt as formatUsageReportLines, s as detectBrowserOpenSupport, v as resolveControlUiLinks, w as normalizeControlUiBasePath, x as waitForGatewayReachable } from "./loader-KjT074JR.js";
15
+ import { n as withProgress } from "./progress-DWqhRakV.js";
16
16
  import { t as WizardCancelledError } from "./prompts-CXLLIBwP.js";
17
17
  import { t as resolveChannelDefaultAccountId } from "./helpers-DdwqKAAS.js";
18
- import { n as setupChannels } from "./onboard-channels-DMcOT0dj.js";
19
- import { o as resolveStorePath } from "./paths-IivnSNkP.js";
20
- import { I as resolveMainSessionKey, d as loadSessionStore } from "./sandbox-B0K9e6Fw.js";
18
+ import { n as setupChannels } from "./onboard-channels-C501x8GI.js";
19
+ import { s as resolveStorePath } from "./paths-DLINmNFQ.js";
20
+ import { I as resolveMainSessionKey, d as loadSessionStore } from "./sandbox-BKYnhYQH.js";
21
21
  import { r as formatDurationPrecise } from "./format-duration-Bo9zNKwO.js";
22
22
  import { n as formatTimeAgo } from "./format-relative-CZOlQ2pA.js";
23
- import { t as collectChannelStatusIssues } from "./channels-status-issues-Ca9--azp.js";
24
- import { r as installCompletion } from "./completion-cli-C4zxjkC1.js";
25
- import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BHF5NjQ7.js";
26
- import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-DNcIZ5Kp.js";
27
- import { r as isSystemdUserServiceAvailable } from "./systemd-CNTodvCO.js";
28
- import { o as readLastGatewayErrorLine } from "./service-audit-uhZSlxeb.js";
29
- import { t as renderTable } from "./table-oJQPTUL6.js";
30
- import { i as probeGateway, t as runSecurityAudit } from "./audit-DMH3CSXY.js";
31
- import { d as applyPrimaryModel, f as promptDefaultModel, g as applyAuthChoice, h as warnIfModelConfigLooksOff, m as resolvePreferredProviderForAuthChoice, r as promptRemoteGatewayConfig, s as promptCustomApiConfig, t as setupSkills, x as promptAuthChoiceGrouped } from "./onboard-skills-DoxkpnEU.js";
32
- import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-gLMfE2wf.js";
33
- import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner-BLsqC24J.js";
34
- import { n as logConfigUpdated } from "./logging-D0MyqUlV.js";
35
- import { t as buildWorkspaceHookStatus } from "./hooks-status-Cgy6AtQk.js";
36
- import { t as buildWorkspaceSkillStatus } from "./skills-status-DJDaA2Ur.js";
37
- import { t as runTui } from "./tui-Biw7aqPj.js";
38
- import { t as resolveNodeService } from "./node-service-_vgO5xR-.js";
23
+ import { t as collectChannelStatusIssues } from "./channels-status-issues-D7GSV1GS.js";
24
+ import { r as installCompletion } from "./completion-cli-CR77-jyv.js";
25
+ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-B0tg_LsX.js";
26
+ import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-99RDXwX4.js";
27
+ import { r as isSystemdUserServiceAvailable } from "./systemd-C0VZriGM.js";
28
+ import { o as readLastGatewayErrorLine } from "./service-audit-ckBaRCVC.js";
29
+ import { t as renderTable } from "./table-CwulTLQp.js";
30
+ import { i as probeGateway, t as runSecurityAudit } from "./audit-wPu26VMb.js";
31
+ import { d as applyPrimaryModel, f as promptDefaultModel, g as applyAuthChoice, h as warnIfModelConfigLooksOff, m as resolvePreferredProviderForAuthChoice, r as promptRemoteGatewayConfig, s as promptCustomApiConfig, t as setupSkills, x as promptAuthChoiceGrouped } from "./onboard-skills-DV0Qzvjj.js";
32
+ import { l as healthCommand, n as ensureControlUiAssetsBuilt, s as formatHealthChannelLines, t as formatHealthCheckFailure, u as resolveHeartbeatSummaryForAgent } from "./health-format-LZDxu3rv.js";
33
+ import { C as resolveEffectiveUpdateChannel, S as normalizeUpdateChannel, c as formatUpdateOneLiner, d as checkShellCompletionStatus, h as compareSemverStrings, l as getUpdateCheckResult, m as checkUpdateStatus, p as ensureCompletionCacheExists, s as formatUpdateAvailableHint, u as resolveUpdateAvailability, x as formatUpdateChannelLabel } from "./update-runner--ixK4J3W.js";
34
+ import { n as logConfigUpdated } from "./logging-CRq4h04P.js";
35
+ import { t as buildWorkspaceHookStatus } from "./hooks-status-Cw0xD8Lt.js";
36
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-TDIgVd1K.js";
37
+ import { t as runTui } from "./tui-Lu8FdrlK.js";
38
+ import { t as resolveNodeService } from "./node-service-WQuEKz6W.js";
39
39
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-CNU-Zkrz.js";
40
40
  import { spawnSync } from "node:child_process";
41
41
  import path from "node:path";
@@ -152,7 +152,7 @@ async function finalizeOnboardingWizard(options) {
152
152
  const systemdAvailable = process.platform === "linux" ? await isSystemdUserServiceAvailable() : true;
153
153
  if (process.platform === "linux" && !systemdAvailable) await prompter.note("Systemd user services are unavailable. Skipping lingering checks and service install.", "Systemd");
154
154
  if (process.platform === "linux" && systemdAvailable) {
155
- const { ensureSystemdUserLingerInteractive } = await import("./systemd-linger-CArPbmvv.js").then((n) => n.r);
155
+ const { ensureSystemdUserLingerInteractive } = await import("./systemd-linger-xdn3BdPh.js").then((n) => n.r);
156
156
  await ensureSystemdUserLingerInteractive({
157
157
  runtime,
158
158
  prompter: {