@guadskill/openclaw-proxy 2026.2.9 → 2026.2.10

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 (210) hide show
  1. package/dist/{accounts-x7cMEV1E.js → accounts-Dx4aJi3x.js} +7 -7
  2. package/dist/{acp-cli-0GGdXLLK.js → acp-cli-B0GEswoT.js} +4 -4
  3. package/dist/{acp-cli-D1H6dacV.js → acp-cli-OHiTwyKP.js} +4 -4
  4. package/dist/{agent-2SW8ZCfI.js → agent-CVUy1Thi.js} +10 -10
  5. package/dist/{agent-DU-T91C5.js → agent-D-ZY5Ay1.js} +10 -10
  6. package/dist/{agent-scope-DiPc4_Q2.js → agent-scope-Bxl1Ieu_.js} +1 -1
  7. package/dist/{agent-scope-BUn6DjX7.js → agent-scope-C7vPz4km.js} +1 -1
  8. package/dist/{agent-scope-CjgJmjE6.js → agent-scope-DUR7NPNo.js} +1 -1
  9. package/dist/{agent-scope--25ynMc2.js → agent-scope-QnsNO5IK.js} +11 -11
  10. package/dist/{archive-D0z3LZDK.js → archive-1r-XD_by.js} +9 -9
  11. package/dist/{audit-CqsOSGgc.js → audit-DJRS7Nza.js} +8 -8
  12. package/dist/{audit-CLbFGfQc.js → audit-Dnyfbisl.js} +16 -16
  13. package/dist/{auth-health-6CQOjiY2.js → auth-health-CE7uy9mo.js} +1 -1
  14. package/dist/{auth-health-BA7lqVxs.js → auth-health-ov3toXHm.js} +1 -1
  15. package/dist/{auth-profiles-Dg1lg7TZ.js → auth-profiles-kZZY0kCW.js} +1 -1
  16. package/dist/build-info.json +2 -2
  17. package/dist/bundled/boot-md/handler.js +9 -9
  18. package/dist/bundled/session-memory/handler.js +9 -9
  19. package/dist/{call-DfFtEDcF.js → call-BUcaYa5a.js} +8 -8
  20. package/dist/{call-BRBaanei.js → call-D_Z9T8iV.js} +1 -1
  21. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  22. package/dist/{channel-options-DxeLpgAW.js → channel-options-P2xeFf1J.js} +5 -5
  23. package/dist/{channel-options-lyL-8lwT.js → channel-options-oOUobhHQ.js} +3 -3
  24. package/dist/{channel-selection-KB-Du2K8.js → channel-selection-CmhD8GeJ.js} +1 -1
  25. package/dist/{channel-selection-Cm-kszg3.js → channel-selection-Dc2O9U87.js} +1 -1
  26. package/dist/{channels-cli-CwCvT3wp.js → channels-cli-BYZOMEVn.js} +25 -25
  27. package/dist/{channels-cli-D8NQgCvh.js → channels-cli-C-TQm_--.js} +36 -36
  28. package/dist/{channels-status-issues-CtDHK5Hb.js → channels-status-issues-CZVE---T.js} +1 -1
  29. package/dist/{channels-status-issues-D4zjQ5gR.js → channels-status-issues-CftEAWF4.js} +1 -1
  30. package/dist/{chrome-CBxye_ED.js → chrome-FITXsKSB.js} +7 -7
  31. package/dist/{chrome-y0SuEptk.js → chrome-No6wyyAY.js} +2 -2
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-BhOaKx0R.js → cli-98b8BoLE.js} +25 -25
  34. package/dist/{cli-BdLB0dU9.js → cli-9Gs7jI45.js} +21 -21
  35. package/dist/{command-options-BsaSCNbW.js → command-options-DFbsypaU.js} +3 -3
  36. package/dist/{commands-D1Vz_pbj.js → commands-DoVIOYAz.js} +3 -3
  37. package/dist/{completion-cli-B8UeXoAi.js → completion-cli-DBmFb2Zz.js} +27 -27
  38. package/dist/{completion-cli-DSp3IYfG.js → completion-cli-DrFgqXz-.js} +13 -13
  39. package/dist/{config-BiUz0L4n.js → config-C_ZMbYir.js} +2 -2
  40. package/dist/{config-DBR-pg8M.js → config-DFgdMueL.js} +2 -2
  41. package/dist/{config-Cq5jWpQW.js → config-NtjUezp5.js} +2 -2
  42. package/dist/{config-guard-BIEzm1Di.js → config-guard-B_Hef8AW.js} +34 -34
  43. package/dist/{config-JotyqXJB.js → config-yg3MNzIZ.js} +2 -2
  44. package/dist/{configure-Cec4HsdK.js → configure-BShkc6Iy.js} +8 -8
  45. package/dist/{configure-CupQ7QSD.js → configure-CnH4eas2.js} +10 -10
  46. package/dist/{control-service-CH6Bbr0T.js → control-service-CzkpRVn7.js} +4 -4
  47. package/dist/{control-service-YHi9oKDx.js → control-service-_2M8iCv6.js} +1 -1
  48. package/dist/{cron-cli-DQ37nGTc.js → cron-cli-Bkwkuduu.js} +7 -7
  49. package/dist/{cron-cli-BPtSqQjc.js → cron-cli-sBpc08kN.js} +6 -6
  50. package/dist/{daemon-cli-BwvNtNCH.js → daemon-cli-BQFZUZXG.js} +7 -7
  51. package/dist/{daemon-cli-ByQDMi6B.js → daemon-cli-D7bFcRv4.js} +11 -11
  52. package/dist/{daemon-runtime-Dg88Ac7J.js → daemon-runtime-DLtjWz00.js} +10 -10
  53. package/dist/{daemon-runtime-LePuvITk.js → daemon-runtime-q4XITAGg.js} +1 -1
  54. package/dist/{deliver-BpcYe8zG.js → deliver-BFZRT50l.js} +7 -7
  55. package/dist/{deliver-Dpg3LSwN.js → deliver-BRCyIScz.js} +5 -5
  56. package/dist/{deliver-D4rMk52D.js → deliver-BssKD-vg.js} +3 -3
  57. package/dist/{deliver-C9Vwdw7k.js → deliver-D_PB5CG5.js} +2 -2
  58. package/dist/{deps-DWlD7Lyt.js → deps-BBw98Cve.js} +2 -2
  59. package/dist/{deps-qtgH7RGM.js → deps-Dlhl7sML.js} +2 -2
  60. package/dist/{devices-cli-CcGB1MVD.js → devices-cli-3aLFbDvW.js} +4 -4
  61. package/dist/{devices-cli-p9SUggMY.js → devices-cli-Dn5X9lnL.js} +4 -4
  62. package/dist/{directory-cli-CixpfARf.js → directory-cli-Cc06wNL1.js} +5 -5
  63. package/dist/{directory-cli-CgKDzRjU.js → directory-cli-Dj48rao9.js} +6 -6
  64. package/dist/{dispatcher-DsTwmVoy.js → dispatcher-DLLOC08H.js} +1 -1
  65. package/dist/{dns-cli-y3RAyaeD.js → dns-cli-CugZCOE9.js} +3 -3
  66. package/dist/{dns-cli--ew6Hcon.js → dns-cli-kXKz4kmo.js} +3 -3
  67. package/dist/{docs-cli-BPPPY68C.js → docs-cli-BUeU34DD.js} +1 -1
  68. package/dist/{docs-cli-B8ZWuZdG.js → docs-cli-DPM7sbYQ.js} +1 -1
  69. package/dist/{doctor-CqYHOc7o.js → doctor-Bb0C7PCD.js} +18 -18
  70. package/dist/{doctor--sUBhPRM.js → doctor-C5EhTQAn.js} +33 -33
  71. package/dist/entry.js +1 -1
  72. package/dist/{exec-approvals-cli-AoKQ4upV.js → exec-approvals-cli-DTdAAPIs.js} +11 -11
  73. package/dist/{exec-approvals-cli-C2XQFrdV.js → exec-approvals-cli-DyvEEBBB.js} +6 -6
  74. package/dist/extensionAPI.js +20 -20
  75. package/dist/{gateway-cli-FFlyXx90.js → gateway-cli-BQvs5yMg.js} +116 -116
  76. package/dist/{gateway-cli-x9uFfaiq.js → gateway-cli-ClF2zEog.js} +43 -43
  77. package/dist/{gateway-rpc-CpSS8vbu.js → gateway-rpc-CUNihWum.js} +1 -1
  78. package/dist/{gateway-rpc-BUee5Dv6.js → gateway-rpc-ftABAYn5.js} +1 -1
  79. package/dist/{github-copilot-auth-C9U7LmQC.js → github-copilot-auth-DbUZnSyk.js} +5 -5
  80. package/dist/{github-copilot-auth-DhRqdPvp.js → github-copilot-auth-TxtjXx5m.js} +5 -5
  81. package/dist/{gmail-setup-utils-DwjED-x8.js → gmail-setup-utils-CBKE602c.js} +1 -1
  82. package/dist/{gmail-setup-utils-BElJpBPG.js → gmail-setup-utils-DFeZNixL.js} +1 -1
  83. package/dist/{health-format-BB0NTRxV.js → health-format-BOaLA7v1.js} +10 -10
  84. package/dist/{health-format-xY8AE8iJ.js → health-format-i1geK3KG.js} +8 -8
  85. package/dist/{hooks-cli-LD-Df2Bi.js → hooks-cli-BoczEJfK.js} +23 -23
  86. package/dist/{hooks-cli-D0QnfArE.js → hooks-cli-DoLBB8PN.js} +49 -49
  87. package/dist/{hooks-status-DzV884al.js → hooks-status-Dbj4IlQS.js} +1 -1
  88. package/dist/{hooks-status-B-1h3DT9.js → hooks-status-Dr9j7oSo.js} +1 -1
  89. package/dist/{image-zzNMmsKZ.js → image-CE9CeS1j.js} +3 -3
  90. package/dist/{image-D1s2KO45.js → image-CY3Qb62D.js} +8 -8
  91. package/dist/{image-A6XShsr8.js → image-Crv76CGv.js} +3 -3
  92. package/dist/{image-C19aQZmj.js → image-DaoVwbBU.js} +3 -3
  93. package/dist/index.js +44 -44
  94. package/dist/{installs-lwst-G4F.js → installs-CJqCIvn4.js} +18 -18
  95. package/dist/llm-slug-generator.js +9 -9
  96. package/dist/{loader-t5G-bNh2.js → loader-BNGc0TMW.js} +115 -115
  97. package/dist/{login-qr-dW3zLPde.js → login-qr-BJHBXw2B.js} +1 -1
  98. package/dist/{login-qr-fi3WTytg.js → login-qr-BoEpQD7W.js} +2 -2
  99. package/dist/{login-qr-zHjaf-a-.js → login-qr-CojPlIrx.js} +1 -1
  100. package/dist/{login-qr-zBlKORpc.js → login-qr-O0Sg-Lht.js} +1 -1
  101. package/dist/{logs-cli-CNG1ybOs.js → logs-cli-BkQZaLP1.js} +5 -5
  102. package/dist/{logs-cli-BrwNjHyP.js → logs-cli-DbqvSWfV.js} +5 -5
  103. package/dist/{manager-BG8ogneZ.js → manager-BLQprOme.js} +3 -3
  104. package/dist/{manager-D1OOirj8.js → manager-DBEZGESO.js} +2 -2
  105. package/dist/{manager-CdFcVnZR.js → manager-DLK8bAAA.js} +15 -15
  106. package/dist/{manager-Bctrvc9j.js → manager-DQXILjKz.js} +2 -2
  107. package/dist/{model-auth-DisTMlNO.js → model-auth-B3m7mkvr.js} +1 -1
  108. package/dist/{model-selection-GZFHUD7x.js → model-selection-9N1nn0U_.js} +1 -1
  109. package/dist/{model-selection-Dcc6YSVW.js → model-selection-BqJ7D4pt.js} +1 -1
  110. package/dist/{models-cli-B2zLu81b.js → models-cli-DKJ429Km.js} +23 -23
  111. package/dist/{models-cli-DAT-ArET.js → models-cli-tBSLfpEB.js} +30 -30
  112. package/dist/{node-cli-ClBB_NxA.js → node-cli-az-8UhFP.js} +20 -20
  113. package/dist/{node-cli-etrHRm1x.js → node-cli-xTfEqY2t.js} +7 -7
  114. package/dist/{node-service-BDoNNRp-.js → node-service-CkPOvRv0.js} +1 -1
  115. package/dist/{nodes-cli-BaBGaJqV.js → nodes-cli-DfTrE8mE.js} +8 -8
  116. package/dist/{nodes-cli-CGt1ECiI.js → nodes-cli-U9s_odmo.js} +5 -5
  117. package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-DufGlxX3.js} +2 -2
  118. package/dist/{onboard-channels-CCcLnNq7.js → onboard-channels-B12vl_Fz.js} +5 -5
  119. package/dist/{onboard-channels-BTsEmF84.js → onboard-channels-Bi5gN7Cg.js} +4 -4
  120. package/dist/{onboard-skills-DTqkozry.js → onboard-skills-Cli5aapW.js} +9 -9
  121. package/dist/{onboard-skills-COOhVMtI.js → onboard-skills-bQdrzd5W.js} +8 -8
  122. package/dist/{onboarding-B_hfq1-Z.js → onboarding-o9D1SpDa.js} +20 -20
  123. package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BTW4x2Wd.js} +1 -1
  124. package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-zKi4apQH.js} +3 -3
  125. package/dist/{pairing-cli-IMM6zTxT.js → pairing-cli-ByfGNmaZ.js} +7 -7
  126. package/dist/{pairing-cli-A-97MaNg.js → pairing-cli-C_IQMrN0.js} +6 -6
  127. package/dist/{pairing-labels-Bb4yiJHg.js → pairing-labels-B6MQ_Hha.js} +1 -1
  128. package/dist/{pairing-labels-DP5H8gf6.js → pairing-labels-B6ViJi8r.js} +1 -1
  129. package/dist/{pairing-store-DnhpK1SH.js → pairing-store-Cc67v-m7.js} +1 -1
  130. package/dist/{pairing-store-DiCaUGXP.js → pairing-store-DKhgYwjg.js} +1 -1
  131. package/dist/{paths-fJtAVDc0.js → paths-BifbScbU.js} +1 -1
  132. package/dist/{pi-embedded-DQydpubI.js → pi-embedded-DPQwlpO6.js} +15 -15
  133. package/dist/{pi-embedded-helpers-BJ-cu3iK.js → pi-embedded-helpers-CcE0hKxw.js} +8 -8
  134. package/dist/{pi-embedded-helpers-4Lpm0TfW.js → pi-embedded-helpers-DwhRDCwp.js} +2 -2
  135. package/dist/{pi-embedded-helpers-B8LSSkHe.js → pi-embedded-helpers-Z2gqd4I2.js} +3 -3
  136. package/dist/{pi-embedded-helpers-DadKWPQE.js → pi-embedded-helpers-n7o6YJmY.js} +6 -6
  137. package/dist/{pi-tools.policy-DLLm-j7M.js → pi-tools.policy-CiKYFXrw.js} +3 -3
  138. package/dist/{plugin-auto-enable-B78nMu3L.js → plugin-auto-enable-CTA5rOU5.js} +1 -1
  139. package/dist/{plugin-auto-enable-Arz-7wiT.js → plugin-auto-enable-CrzdP1Nz.js} +2 -2
  140. package/dist/{plugins-CRUvG4uT.js → plugins-CO1rgH0r.js} +1 -1
  141. package/dist/{plugins-cli-CjpTlFhI.js → plugins-cli-BKilQedx.js} +22 -22
  142. package/dist/{plugins-cli-DrQ1Deuw.js → plugins-cli-CkZgCEVA.js} +30 -30
  143. package/dist/{plugins-U0QQZWlW.js → plugins-ia9SOGpI.js} +1 -1
  144. package/dist/{ports-BcNVanDX.js → ports-DbnuiZZO.js} +1 -1
  145. package/dist/{program-CDSRl7eR.js → program-3AvELN6H.js} +58 -58
  146. package/dist/{pw-ai-Bpd-iaBB.js → pw-ai-BOyUF0Kj.js} +4 -4
  147. package/dist/{pw-ai-C3QEyFGj.js → pw-ai-kZMIzSdQ.js} +1 -1
  148. package/dist/{qmd-manager-DZhFcVTt.js → qmd-manager-BM5DP4s8.js} +1 -1
  149. package/dist/{qmd-manager-CjTG-nW_.js → qmd-manager-BRXyEw0a.js} +19 -19
  150. package/dist/{qmd-manager-qe1SLQy3.js → qmd-manager-CWFe938c.js} +1 -1
  151. package/dist/{qmd-manager-D4W1VfWC.js → qmd-manager-h50GTfkl.js} +2 -2
  152. package/dist/{register.subclis-COUZSGkI.js → register.subclis-gkkP8-Yx.js} +28 -28
  153. package/dist/{reply-CcYZSt6t.js → reply-CH7VZ1jT.js} +28 -28
  154. package/dist/{routes-CnhRELg3.js → routes-BUDqG0bE.js} +17 -17
  155. package/dist/{routes-Sj0W9JUC.js → routes-dtswuSI-.js} +1 -1
  156. package/dist/{rpc-wf5KzhJ_.js → rpc-BeN1YXM7.js} +1 -1
  157. package/dist/{rpc-BlzExEft.js → rpc-CUy4VHNF.js} +1 -1
  158. package/dist/{run-main-CadL0LaU.js → run-main-DM5TUpMe.js} +60 -60
  159. package/dist/{sandbox-CXXC0AOA.js → sandbox-D889a-F8.js} +21 -21
  160. package/dist/{sandbox-cli-B-c6pLqW.js → sandbox-cli-BNvoe8W3.js} +10 -10
  161. package/dist/{sandbox-cli-CEQpi4Wb.js → sandbox-cli-DACJb2g8.js} +7 -7
  162. package/dist/{sandbox-BR9JVXBT.js → sandbox-nFkFFEb7.js} +5 -5
  163. package/dist/{security-cli-MV9q0KXT.js → security-cli-DvqT9LWk.js} +11 -11
  164. package/dist/{security-cli-CxnkY7T2.js → security-cli-m_PAeVLY.js} +21 -21
  165. package/dist/{server-context-B0LbMz_e.js → server-context-qxpb5Ln6.js} +4 -4
  166. package/dist/{server-node-events-ClBp_ky8.js → server-node-events-Cb6KgBy9.js} +23 -23
  167. package/dist/{server-node-events-DZQVhZjc.js → server-node-events-Cz7z8PCq.js} +27 -27
  168. package/dist/{service-DQwKxszE.js → service-CJ_9zG2c.js} +15 -15
  169. package/dist/{service-audit-D6Jk8jFU.js → service-audit-CURwIRFh.js} +13 -13
  170. package/dist/{service-audit-JR0RZ8xC.js → service-audit-DtmRGU4O.js} +1 -1
  171. package/dist/{shared-C_dY3J1K.js → shared-BFnl2Cjh.js} +1 -1
  172. package/dist/{shared-DN6M8u_S.js → shared-CXK7Zt_F.js} +1 -1
  173. package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BT7PBklM.js} +5 -5
  174. package/dist/{skills-C1QRKLvh.js → skills-Cgy3X3tK.js} +1 -1
  175. package/dist/{skills-cli-DDTkkerI.js → skills-cli-B2zxU_2n.js} +5 -5
  176. package/dist/{skills-cli-DbqgzF80.js → skills-cli-Bg8bkl9E.js} +5 -5
  177. package/dist/{skills-status-GulhEBnV.js → skills-status-8m5p33dD.js} +1 -1
  178. package/dist/{skills-status-C_QDsl6j.js → skills-status-BA2DOmHk.js} +1 -1
  179. package/dist/{skills-CwXLq-nk.js → skills-w-kwwPb2.js} +1 -1
  180. package/dist/{sqlite-DODNHWJb.js → sqlite-DmufeXxk.js} +8 -8
  181. package/dist/{status-Y2KMsWuk.js → status-BX5HXftW.js} +3 -3
  182. package/dist/{status-CErwIaup.js → status-Bcl2H-Cb.js} +31 -31
  183. package/dist/{status-CtFS7XRr.js → status-CTMeUEYd.js} +3 -3
  184. package/dist/{system-cli-C0JWELUD.js → system-cli-BzCBKn-l.js} +5 -5
  185. package/dist/{system-cli-BVweBOhJ.js → system-cli-C886Ufmu.js} +5 -5
  186. package/dist/{systemd-aL_mEluy.js → systemd-D8TmVYdf.js} +5 -5
  187. package/dist/{systemd-linger-CEPF4JN6.js → systemd-linger-C57Dz7hA.js} +1 -1
  188. package/dist/{tui-B9ggfGhy.js → tui-B8ryM4-q.js} +5 -5
  189. package/dist/{tui-C_gTxPke.js → tui-DMtfTPeq.js} +5 -5
  190. package/dist/{tui-cli-Zj_x6Bvj.js → tui-cli-BBTZ6Uea.js} +14 -14
  191. package/dist/{tui-cli-CYc8ZHxI.js → tui-cli-CainEme8.js} +11 -11
  192. package/dist/{tui-formatters-C1oQXn1l.js → tui-formatters-6nR_zzUg.js} +3 -3
  193. package/dist/{tui-formatters-CCOWLfCX.js → tui-formatters-Cmrdmcx8.js} +3 -3
  194. package/dist/{update-C-9KsS1m.js → update-DkJ6rvG7.js} +3 -3
  195. package/dist/{update-cli-ClAzvLLE.js → update-cli-B44pCOmM.js} +34 -34
  196. package/dist/{update-cli-Cyh2BgJf.js → update-cli-CeCOtfHd.js} +53 -53
  197. package/dist/{update-runner-BT3WGHmf.js → update-runner-BZsT7ZyA.js} +6 -6
  198. package/dist/{update-runner-Br_pa9Xw.js → update-runner-CkoLrD4r.js} +25 -25
  199. package/dist/{webhooks-cli-Ch9h1RT2.js → webhooks-cli-BH_Y2RXv.js} +5 -5
  200. package/dist/{webhooks-cli-DBWL77uP.js → webhooks-cli-DZaS4YoE.js} +5 -5
  201. package/dist/{wsl-CtSDIi51.js → wsl-C-eVEqs4.js} +3 -3
  202. package/package.json +1 -1
  203. package/dist/control-ui/apple-touch-icon.png +0 -0
  204. package/dist/control-ui/assets/index-BeKTXH1m.js +0 -7601
  205. package/dist/control-ui/assets/index-BeKTXH1m.js.map +0 -1
  206. package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
  207. package/dist/control-ui/favicon-32.png +0 -0
  208. package/dist/control-ui/favicon.ico +0 -0
  209. package/dist/control-ui/favicon.svg +0 -22
  210. package/dist/control-ui/index.html +0 -17
@@ -1,94 +1,94 @@
1
1
  import { $ as DEFAULT_CHAT_CHANNEL, A as getChildLogger, B as resolveConfigPath, C as setVerbose, D as colorize, F as CONFIG_PATH, L as STATE_DIR, M as getResolvedLoggerSettings, O as isRich, R as isNixMode, U as resolveGatewayLockDir, W as resolveGatewayPort, X as resolveStateDir, Z as CHANNEL_IDS, dt as expandHomePrefix, j as getLogger, k as theme, l as setConsoleSubsystemFilter, n as isTruthyEnvValue, o as createSubsystemLogger, p as defaultRuntime, r as logAcceptedEnvOption, s as runtimeForLogger, st as getActivePluginRegistry, u as setConsoleTimestampPrefix } from "./entry.js";
2
- import { Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, E as getModelRefStatus, F as resolveHooksGmailModel, L as resolveThinkingDefault, N as resolveConfiguredModelRef, P as resolveDefaultModelForAgent, Tt as DEFAULT_PROVIDER, j as resolveAllowedModelRef, pt as normalizeSecretInput, wt as DEFAULT_MODEL } from "./auth-profiles-Dg1lg7TZ.js";
2
+ import { Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, E as getModelRefStatus, F as resolveHooksGmailModel, L as resolveThinkingDefault, N as resolveConfiguredModelRef, P as resolveDefaultModelForAgent, Tt as DEFAULT_PROVIDER, j as resolveAllowedModelRef, pt as normalizeSecretInput, wt as DEFAULT_MODEL } from "./auth-profiles-kZZY0kCW.js";
3
3
  import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
4
4
  import { _ as isSubagentSessionKey, d as resolveAgentIdFromSessionKey, i as buildAgentMainSessionKey, l as normalizeAgentId, m as toAgentRequestSessionKey, n as DEFAULT_AGENT_ID, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as parseAgentSessionKey } from "./session-key-BRdRr5Ah.js";
5
5
  import { T as truncateUtf16Safe, n as clamp, s as ensureDir, t as CONFIG_DIR, u as isPlainObject, v as resolveUserPath, x as shortenHomePath } from "./utils-Bx1WKTCk.js";
6
6
  import { a as logDebug, c as logWarn, n as runExec, t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
7
- import { t as resolveOpenClawPackageRoot } from "./openclaw-root-9ILYSmJ9.js";
8
- import { T as resolveWorkspaceTemplateDir, _ as DEFAULT_MEMORY_FILENAME, b as DEFAULT_USER_FILENAME, c as resolveDefaultAgentId, d as DEFAULT_AGENTS_FILENAME, g as DEFAULT_MEMORY_ALT_FILENAME, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, v as DEFAULT_SOUL_FILENAME, w as resolveDefaultAgentWorkspaceDir, x as ensureAgentWorkspace, y as DEFAULT_TOOLS_FILENAME } from "./agent-scope--25ynMc2.js";
7
+ import { t as resolveOpenClawPackageRoot } from "./openclaw-root-zKi4apQH.js";
8
+ import { T as resolveWorkspaceTemplateDir, _ as DEFAULT_MEMORY_FILENAME, b as DEFAULT_USER_FILENAME, c as resolveDefaultAgentId, d as DEFAULT_AGENTS_FILENAME, g as DEFAULT_MEMORY_ALT_FILENAME, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, p as DEFAULT_BOOTSTRAP_FILENAME, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, v as DEFAULT_SOUL_FILENAME, w as resolveDefaultAgentWorkspaceDir, x as ensureAgentWorkspace, y as DEFAULT_TOOLS_FILENAME } from "./agent-scope-QnsNO5IK.js";
9
9
  import "./github-copilot-token-SLWintYd.js";
10
10
  import "./pi-model-discovery-DzEIEgHL.js";
11
- import { A as resolveSubagentMaxConcurrent, T as applyLegacyMigrations, a as parseConfigJson5, c as writeConfigFile, i as loadConfig, j as VERSION, k as resolveAgentMaxConcurrent, l as validateConfigObjectWithPlugins, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO, s as resolveConfigSnapshotHash, u as OpenClawSchema } from "./config-DBR-pg8M.js";
11
+ import { A as resolveSubagentMaxConcurrent, T as applyLegacyMigrations, a as parseConfigJson5, c as writeConfigFile, i as loadConfig, j as VERSION, k as resolveAgentMaxConcurrent, l as validateConfigObjectWithPlugins, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO, s as resolveConfigSnapshotHash, u as OpenClawSchema } from "./config-DFgdMueL.js";
12
12
  import { s as isTestDefaultMemorySlotDisabled } from "./manifest-registry-C_FL6H2P.js";
13
- import { n as movePathToTrash } from "./server-context-B0LbMz_e.js";
13
+ import { n as movePathToTrash } from "./server-context-qxpb5Ln6.js";
14
14
  import { n as pickPrimaryTailnetIPv6, t as pickPrimaryTailnetIPv4 } from "./tailnet-CL5GtL7t.js";
15
15
  import { c as resolveGatewayClientIp, i as isTrustedProxyAddress, l as resolveGatewayListenHosts, n as isLoopbackAddress, r as isLoopbackHost, s as resolveGatewayBindHost, t as rawDataToString } from "./ws-CtFyzK73.js";
16
- import { c as ensurePortAvailable, d as formatPortDiagnostics, l as inspectPortUsage } from "./chrome-y0SuEptk.js";
16
+ import { c as ensurePortAvailable, d as formatPortDiagnostics, l as inspectPortUsage } from "./chrome-No6wyyAY.js";
17
17
  import { a as isErrno, n as formatErrorMessage } from "./errors-x4NYs-1P.js";
18
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-CH6Bbr0T.js";
18
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-CzkpRVn7.js";
19
19
  import { t as ensureOpenClawCliOnPath } from "./path-env-CXWUFfFv.js";
20
20
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-DU6DgqVy.js";
21
21
  import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-5C498YKH.js";
22
22
  import { $ as validateNodePairRequestParams, A as validateCronStatusParams, At as parseSessionLabel, B as validateExecApprovalsNodeGetParams, C as validateConfigSetParams, Ct as validateWizardNextParams, D as validateCronRemoveParams, Dt as ErrorCodes, E as validateCronListParams, Et as PROTOCOL_VERSION, F as validateDeviceTokenRevokeParams, Ft as normalizeDevicePublicKeyBase64Url, G as validateNodeDescribeParams, H as validateExecApprovalsSetParams, I as validateDeviceTokenRotateParams, It as verifyDeviceSignature, J as validateNodeInvokeResultParams, K as validateNodeEventParams, L as validateExecApprovalRequestParams, M as validateDevicePairApproveParams, N as validateDevicePairListParams, Nt as deriveDeviceIdFromPublicKey, O as validateCronRunParams, Ot as errorShape, P as validateDevicePairRejectParams, Q as validateNodePairRejectParams, R as validateExecApprovalResolveParams, S as validateConfigSchemaParams, St as validateWizardCancelParams, T as validateCronAddParams, Tt as validateWizardStatusParams, U as validateLogsTailParams, V as validateExecApprovalsNodeSetParams, W as validateModelsListParams, X as validateNodePairApproveParams, Y as validateNodeListParams, Z as validateNodePairListParams, _ as validateChatInjectParams, _t as validateTalkModeParams, a as validateAgentWaitParams, at as validateSessionsCompactParams, b as validateConfigGetParams, bt as validateWebLoginStartParams, c as validateAgentsFilesGetParams, ct as validateSessionsPatchParams, d as validateAgentsListParams, dt as validateSessionsResolveParams, et as validateNodePairVerifyParams, f as validateAgentsUpdateParams, ft as validateSessionsUsageParams, g as validateChatHistoryParams, gt as validateSkillsUpdateParams, h as validateChatAbortParams, ht as validateSkillsStatusParams, i as validateAgentParams, it as validateSendParams, j as validateCronUpdateParams, jt as buildDeviceAuthPayload, k as validateCronRunsParams, l as validateAgentsFilesListParams, lt as validateSessionsPreviewParams, m as validateChannelsStatusParams, mt as validateSkillsInstallParams, n as formatValidationErrors, nt as validatePollParams, o as validateAgentsCreateParams, ot as validateSessionsDeleteParams, p as validateChannelsLogoutParams, pt as validateSkillsBinsParams, q as validateNodeInvokeParams, r as validateAgentIdentityParams, rt as validateRequestFrame, s as validateAgentsDeleteParams, st as validateSessionsListParams, tt as validateNodeRenameParams, u as validateAgentsFilesSetParams, ut as validateSessionsResetParams, v as validateChatSendParams, vt as validateUpdateRunParams, w as validateConnectParams, wt as validateWizardStartParams, x as validateConfigPatchParams, xt as validateWebLoginWaitParams, y as validateConfigApplyParams, yt as validateWakeParams, z as validateExecApprovalsGetParams } from "./client-BCOZgvlo.js";
23
- import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-DfFtEDcF.js";
23
+ import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-BUcaYa5a.js";
24
24
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BlgPSDAh.js";
25
25
  import { t as formatDocsLink } from "./links-CSYf2PwL.js";
26
- import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-Arz-7wiT.js";
27
- import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CRUvG4uT.js";
26
+ import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-CrzdP1Nz.js";
27
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CO1rgH0r.js";
28
28
  import "./logging-CfEk_PnX.js";
29
- import "./accounts-x7cMEV1E.js";
30
- import { $ as setSkillsRemoteRegistry, $n as isSystemEventContextChanged, A as resolveHeartbeatVisibility, An as authorizeGatewaySigusr1Restart, Ar as formatUserTime, At as waitForEmbeddedPiRunEnd, B as createReplyDispatcher, Br as registerInternalHook, Bt as resolveAgentTimeoutMs, C as buildControlUiAvatarUrl, Cn as resolveOutboundTarget, Cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Ct as extractImageContentFromSource, Dr as stripHeartbeatToken, Dt as stopSubagentsForRequester, En as resetDirectoryCache, Et as isAbortTrigger, Fn as consumeRestartSentinel, Ft as buildSafeExternalPrompt, Gn as normalizeOptionalAgentId, Gt as registerAgentRunContext, H as getCliSessionId, Hn as normalizeCronJobCreate, Ht as emitAgentEvent, In as formatDoctorNonInteractiveHint, Ir as resolveAgentIdentity, It as detectSuspiciousPatterns, J as getRemoteSkillEligibility, Jn as normalizeRequiredName, K as normalizeSendPolicy, Kn as normalizeOptionalText, Kt as runSubagentAnnounceFlow, L as getChannelActivity, Ln as formatRestartSentinelMessage, Lt as getHookType, M as getLastHeartbeatEvent, Mn as isGatewaySigusr1RestartExternallyAllowed, Mr as resolveUserTimezone, N as onHeartbeatEvent, Nn as scheduleGatewaySigusr1Restart, Nt as registerUnhandledRejectionHandler, O as createReplyPrefixOptions, On as runWithModelFallback, Ot as runEmbeddedPiAgent, Pn as setGatewaySigusr1RestartPolicy, Pt as createOpenClawTools, Q as refreshRemoteNodeBins, Qn as enqueueSystemEvent, Rr as clearInternalHooks, Rt as isExternalHookSession, S as CONTROL_UI_AVATAR_PREFIX, Sr as isDiagnosticsEnabled, St as extractFileContentFromSource, T as resolveAssistantAvatarUrl, Tt as formatZonedTimestamp, U as setCliSessionId, Un as normalizeCronJobPatch, Ut as getAgentRunContext, Vn as writeRestartSentinel, Vr as triggerInternalHook, Vt as clearAgentRunContext, W as runCliAgent, Wn as inferLegacyName, Wt as onAgentEvent, X as recordRemoteNodeInfo, Xt as applyModelOverrideToSessionEntry, Y as primeRemoteSkillsCache, Yn as migrateLegacyCronPayload, Yt as loadModelCatalog, Z as refreshRemoteBinsForConnectedNodes, Zt as loadProviderUsageSummary, _t as DEFAULT_INPUT_MAX_REDIRECTS, an as resolveGatewaySessionStoreTarget, ar as OPENAI_TTS_VOICES, at as updatePairedNodeMetadata, br as startDiagnosticHeartbeat, bt as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, cn as capArrayByJsonBytes, cr as isTtsProviderConfigured, ct as registerSkillsChangeListener, d as handleReset, dn as resolveSessionTranscriptCandidates, dr as resolveTtsConfig, dt as parseVerboseOverride, et as approveNodePairing, fn as stripEnvelopeFromMessages, fr as resolveTtsPrefsPath, ft as DEFAULT_INPUT_FILE_MAX_BYTES, gn as normalizeGroupActivation, gr as textToSpeech, gt as DEFAULT_INPUT_IMAGE_MIMES, hn as clearSessionQueues, hr as setTtsProvider, ht as DEFAULT_INPUT_IMAGE_MAX_BYTES, in as loadSessionEntry, ir as OPENAI_TTS_MODELS, it as requestNodePairing, jn as consumeGatewaySigusr1RestartAuthorization, jr as resolveUserTimeFormat, k as buildHistoryContextFromEntries, kr as normalizePollInput, kt as abortEmbeddedPiRun, ln as readSessionMessages, lr as resolveTtsApiKey, mn as lookupContextTokens, mr as setTtsEnabled, mt as DEFAULT_INPUT_FILE_MIMES, n as handleSlackHttpRequest, nn as listSessionsFromStore, nt as rejectNodePairing, on as resolveSessionModelRef, or as getTtsProvider, ot as verifyNodeToken, pr as resolveTtsProviderOrder, pt as DEFAULT_INPUT_FILE_MAX_CHARS, q as resolveSendPolicy, qn as normalizePayloadToSystemText, qt as resolveAnnounceTargetFromKey, rn as loadCombinedSessionStoreForGateway, rr as getPluginToolMeta, rt as renamePairedNode, sn as archiveFileOnDisk, sr as isTtsEnabled, st as getSkillsSnapshotVersion, t as loadOpenClawPlugins, tn as listAgentsForGateway, tr as requestHeartbeatNow, tt as listNodePairing, un as readSessionPreviewItemsFromTranscript, ur as resolveTtsAutoMode, ut as applyVerboseOverride, vn as ensureOutboundSessionEntry, vr as setCommandLaneConcurrency, vt as DEFAULT_INPUT_PDF_MAX_PAGES, w as normalizeControlUiBasePath, wn as resolveSessionDeliveryTarget, wt as normalizeMimeList, xr as stopDiagnosticHeartbeat, xt as DEFAULT_INPUT_TIMEOUT_MS, yn as resolveOutboundSessionRoute, yr as CommandLane, yt as DEFAULT_INPUT_PDF_MAX_PIXELS, z as dispatchInboundMessage, zn as summarizeRestartSentinel, zr as createInternalHookEvent, zt as initSubagentRegistry } from "./loader-t5G-bNh2.js";
29
+ import "./accounts-Dx4aJi3x.js";
30
+ import { $ as setSkillsRemoteRegistry, $n as isSystemEventContextChanged, A as resolveHeartbeatVisibility, An as authorizeGatewaySigusr1Restart, Ar as formatUserTime, At as waitForEmbeddedPiRunEnd, B as createReplyDispatcher, Br as registerInternalHook, Bt as resolveAgentTimeoutMs, C as buildControlUiAvatarUrl, Cn as resolveOutboundTarget, Cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Ct as extractImageContentFromSource, Dr as stripHeartbeatToken, Dt as stopSubagentsForRequester, En as resetDirectoryCache, Et as isAbortTrigger, Fn as consumeRestartSentinel, Ft as buildSafeExternalPrompt, Gn as normalizeOptionalAgentId, Gt as registerAgentRunContext, H as getCliSessionId, Hn as normalizeCronJobCreate, Ht as emitAgentEvent, In as formatDoctorNonInteractiveHint, Ir as resolveAgentIdentity, It as detectSuspiciousPatterns, J as getRemoteSkillEligibility, Jn as normalizeRequiredName, K as normalizeSendPolicy, Kn as normalizeOptionalText, Kt as runSubagentAnnounceFlow, L as getChannelActivity, Ln as formatRestartSentinelMessage, Lt as getHookType, M as getLastHeartbeatEvent, Mn as isGatewaySigusr1RestartExternallyAllowed, Mr as resolveUserTimezone, N as onHeartbeatEvent, Nn as scheduleGatewaySigusr1Restart, Nt as registerUnhandledRejectionHandler, O as createReplyPrefixOptions, On as runWithModelFallback, Ot as runEmbeddedPiAgent, Pn as setGatewaySigusr1RestartPolicy, Pt as createOpenClawTools, Q as refreshRemoteNodeBins, Qn as enqueueSystemEvent, Rr as clearInternalHooks, Rt as isExternalHookSession, S as CONTROL_UI_AVATAR_PREFIX, Sr as isDiagnosticsEnabled, St as extractFileContentFromSource, T as resolveAssistantAvatarUrl, Tt as formatZonedTimestamp, U as setCliSessionId, Un as normalizeCronJobPatch, Ut as getAgentRunContext, Vn as writeRestartSentinel, Vr as triggerInternalHook, Vt as clearAgentRunContext, W as runCliAgent, Wn as inferLegacyName, Wt as onAgentEvent, X as recordRemoteNodeInfo, Xt as applyModelOverrideToSessionEntry, Y as primeRemoteSkillsCache, Yn as migrateLegacyCronPayload, Yt as loadModelCatalog, Z as refreshRemoteBinsForConnectedNodes, Zt as loadProviderUsageSummary, _t as DEFAULT_INPUT_MAX_REDIRECTS, an as resolveGatewaySessionStoreTarget, ar as OPENAI_TTS_VOICES, at as updatePairedNodeMetadata, br as startDiagnosticHeartbeat, bt as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, cn as capArrayByJsonBytes, cr as isTtsProviderConfigured, ct as registerSkillsChangeListener, d as handleReset, dn as resolveSessionTranscriptCandidates, dr as resolveTtsConfig, dt as parseVerboseOverride, et as approveNodePairing, fn as stripEnvelopeFromMessages, fr as resolveTtsPrefsPath, ft as DEFAULT_INPUT_FILE_MAX_BYTES, gn as normalizeGroupActivation, gr as textToSpeech, gt as DEFAULT_INPUT_IMAGE_MIMES, hn as clearSessionQueues, hr as setTtsProvider, ht as DEFAULT_INPUT_IMAGE_MAX_BYTES, in as loadSessionEntry, ir as OPENAI_TTS_MODELS, it as requestNodePairing, jn as consumeGatewaySigusr1RestartAuthorization, jr as resolveUserTimeFormat, k as buildHistoryContextFromEntries, kr as normalizePollInput, kt as abortEmbeddedPiRun, ln as readSessionMessages, lr as resolveTtsApiKey, mn as lookupContextTokens, mr as setTtsEnabled, mt as DEFAULT_INPUT_FILE_MIMES, n as handleSlackHttpRequest, nn as listSessionsFromStore, nt as rejectNodePairing, on as resolveSessionModelRef, or as getTtsProvider, ot as verifyNodeToken, pr as resolveTtsProviderOrder, pt as DEFAULT_INPUT_FILE_MAX_CHARS, q as resolveSendPolicy, qn as normalizePayloadToSystemText, qt as resolveAnnounceTargetFromKey, rn as loadCombinedSessionStoreForGateway, rr as getPluginToolMeta, rt as renamePairedNode, sn as archiveFileOnDisk, sr as isTtsEnabled, st as getSkillsSnapshotVersion, t as loadOpenClawPlugins, tn as listAgentsForGateway, tr as requestHeartbeatNow, tt as listNodePairing, un as readSessionPreviewItemsFromTranscript, ur as resolveTtsAutoMode, ut as applyVerboseOverride, vn as ensureOutboundSessionEntry, vr as setCommandLaneConcurrency, vt as DEFAULT_INPUT_PDF_MAX_PAGES, w as normalizeControlUiBasePath, wn as resolveSessionDeliveryTarget, wt as normalizeMimeList, xr as stopDiagnosticHeartbeat, xt as DEFAULT_INPUT_TIMEOUT_MS, yn as resolveOutboundSessionRoute, yr as CommandLane, yt as DEFAULT_INPUT_PDF_MAX_PIXELS, z as dispatchInboundMessage, zn as summarizeRestartSentinel, zr as createInternalHookEvent, zt as initSubagentRegistry } from "./loader-BNGc0TMW.js";
31
31
  import { n as withProgress } from "./progress-Da1ehW-x.js";
32
32
  import "./prompt-style-Dc0C5HC9.js";
33
33
  import "./note-Ci08TSbV.js";
34
34
  import { t as WizardCancelledError } from "./prompts-CXLLIBwP.js";
35
35
  import { t as resolveChannelDefaultAccountId } from "./helpers-D4gM-kkY.js";
36
- import "./onboard-channels-CCcLnNq7.js";
37
- import "./archive-D0z3LZDK.js";
38
- import "./skill-scanner-C_fQzVDu.js";
39
- import "./installs-lwst-G4F.js";
40
- import "./manager-CdFcVnZR.js";
36
+ import "./onboard-channels-B12vl_Fz.js";
37
+ import "./archive-1r-XD_by.js";
38
+ import "./skill-scanner-BT7PBklM.js";
39
+ import "./installs-CJqCIvn4.js";
40
+ import "./manager-DLK8bAAA.js";
41
41
  import { a as resolveSessionTranscriptsDirForAgent, n as resolveSessionFilePath, o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-C27OFaz1.js";
42
- import "./sqlite-DODNHWJb.js";
43
- import { m as detectMime, r as saveMediaBuffer } from "./routes-CnhRELg3.js";
44
- import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-DadKWPQE.js";
45
- import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BpcYe8zG.js";
46
- import { $ as stripPluginOnlyAllowlist, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, J as collectExplicitAllowlist, L as resolveMainSessionKeyFromConfig, P as resolveAgentMainSessionKey, Q as resolveToolProfilePolicy, S as mergeDeliveryContext, Y as expandPolicyWithPluginGroups, Z as normalizeToolName, b as deliveryContextFromSession, d as loadSessionStore, g as updateSessionStore, q as buildPluginToolGroups, w as normalizeSessionDeliveryFields, z as snapshotSessionOrigin } from "./sandbox-CXXC0AOA.js";
47
- import "./tui-formatters-CCOWLfCX.js";
48
- import { i as getMachineDisplayName, r as createBrowserRouteDispatcher } from "./wsl-CtSDIi51.js";
49
- import { d as hasBinary, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-CwXLq-nk.js";
50
- import "./image-D1s2KO45.js";
42
+ import "./sqlite-DmufeXxk.js";
43
+ import { m as detectMime, r as saveMediaBuffer } from "./routes-BUDqG0bE.js";
44
+ import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-n7o6YJmY.js";
45
+ import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BFZRT50l.js";
46
+ import { $ as stripPluginOnlyAllowlist, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, J as collectExplicitAllowlist, L as resolveMainSessionKeyFromConfig, P as resolveAgentMainSessionKey, Q as resolveToolProfilePolicy, S as mergeDeliveryContext, Y as expandPolicyWithPluginGroups, Z as normalizeToolName, b as deliveryContextFromSession, d as loadSessionStore, g as updateSessionStore, q as buildPluginToolGroups, w as normalizeSessionDeliveryFields, z as snapshotSessionOrigin } from "./sandbox-D889a-F8.js";
47
+ import "./tui-formatters-Cmrdmcx8.js";
48
+ import { i as getMachineDisplayName, r as createBrowserRouteDispatcher } from "./wsl-C-eVEqs4.js";
49
+ import { d as hasBinary, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-w-kwwPb2.js";
50
+ import "./image-CY3Qb62D.js";
51
51
  import { c as normalizeExecApprovals, g as saveExecApprovals, l as readExecApprovalsSnapshot, m as resolveExecApprovalsSocketPath, r as ensureExecApprovals } from "./exec-approvals-BrCstKZw.js";
52
52
  import "./redact-BHmk44DI.js";
53
53
  import "./tool-display-Ds0HgmMB.js";
54
54
  import { t as parseAbsoluteTimeMs } from "./parse-Cjiudy6x.js";
55
- import { n as resolveMessageChannelSelection } from "./channel-selection-Cm-kszg3.js";
55
+ import { n as resolveMessageChannelSelection } from "./channel-selection-Dc2O9U87.js";
56
56
  import { i as loadSessionUsageTimeSeries, l as deriveSessionTotalTokens, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions, u as hasNonzeroUsage } from "./session-cost-usage-LOtSLoh7.js";
57
57
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-C4JfTbSp.js";
58
- import { c as resolveSubagentToolPolicy, i as filterToolsByPolicy, o as resolveEffectiveToolPolicy, s as resolveGroupToolPolicy } from "./commands-D1Vz_pbj.js";
59
- import "./pairing-store-DiCaUGXP.js";
60
- import "./login-qr-fi3WTytg.js";
58
+ import { c as resolveSubagentToolPolicy, i as filterToolsByPolicy, o as resolveEffectiveToolPolicy, s as resolveGroupToolPolicy } from "./commands-DoVIOYAz.js";
59
+ import "./pairing-store-DKhgYwjg.js";
60
+ import "./login-qr-BoEpQD7W.js";
61
61
  import { n as runCommandWithRuntime } from "./cli-utils-DKF-leO3.js";
62
- import "./pairing-labels-DP5H8gf6.js";
62
+ import "./pairing-labels-B6ViJi8r.js";
63
63
  import { t as buildChannelAccountSnapshot } from "./status-BggorVtQ.js";
64
- import "./channels-status-issues-D4zjQ5gR.js";
65
- import "./register.subclis-COUZSGkI.js";
66
- import "./completion-cli-DSp3IYfG.js";
67
- import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DWlD7Lyt.js";
68
- import "./daemon-runtime-Dg88Ac7J.js";
69
- import "./service-DQwKxszE.js";
70
- import "./systemd-aL_mEluy.js";
71
- import "./shared-C_dY3J1K.js";
72
- import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-ByQDMi6B.js";
73
- import "./service-audit-D6Jk8jFU.js";
64
+ import "./channels-status-issues-CftEAWF4.js";
65
+ import "./register.subclis-gkkP8-Yx.js";
66
+ import "./completion-cli-DrFgqXz-.js";
67
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-BBw98Cve.js";
68
+ import "./daemon-runtime-DLtjWz00.js";
69
+ import "./service-CJ_9zG2c.js";
70
+ import "./systemd-D8TmVYdf.js";
71
+ import "./shared-BFnl2Cjh.js";
72
+ import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-D7bFcRv4.js";
73
+ import "./service-audit-CURwIRFh.js";
74
74
  import "./table--JAk2fhT.js";
75
75
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DaX8jMWT.js";
76
- import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-DN6M8u_S.js";
77
- import { i as probeGateway } from "./audit-CLbFGfQc.js";
78
- import { g as discoverGatewayBeacons, n as installSkill } from "./onboard-skills-DTqkozry.js";
79
- import { a as resolveControlUiRootOverrideSync, c as getHealthSnapshot, d as runHeartbeatOnce, f as setHeartbeatsEnabled, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync, p as startHeartbeatRunner, s as formatHealthChannelLines } from "./health-format-BB0NTRxV.js";
80
- import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-Br_pa9Xw.js";
81
- import "./github-copilot-auth-DhRqdPvp.js";
76
+ import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CXK7Zt_F.js";
77
+ import { i as probeGateway } from "./audit-Dnyfbisl.js";
78
+ import { g as discoverGatewayBeacons, n as installSkill } from "./onboard-skills-Cli5aapW.js";
79
+ import { a as resolveControlUiRootOverrideSync, c as getHealthSnapshot, d as runHeartbeatOnce, f as setHeartbeatsEnabled, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync, p as startHeartbeatRunner, s as formatHealthChannelLines } from "./health-format-BOaLA7v1.js";
80
+ import { S as normalizeUpdateChannel, _ as resolveNpmChannelTag, h as compareSemverStrings, m as checkUpdateStatus, t as runGatewayUpdate, y as DEFAULT_PACKAGE_CHANNEL } from "./update-runner-CkoLrD4r.js";
81
+ import "./github-copilot-auth-TxtjXx5m.js";
82
82
  import "./logging-BENMfvo0.js";
83
- import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-B-1h3DT9.js";
84
- import { a as findAgentEntryIndex, c as pruneAgentConfig, f as runOnboardingWizard, n as getStatusSummary, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, u as loadAgentIdentityFromWorkspace } from "./status-CErwIaup.js";
85
- import { t as buildWorkspaceSkillStatus } from "./skills-status-C_QDsl6j.js";
86
- import "./tui-B9ggfGhy.js";
83
+ import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Dr9j7oSo.js";
84
+ import { a as findAgentEntryIndex, c as pruneAgentConfig, f as runOnboardingWizard, n as getStatusSummary, o as listAgentEntries, r as applyAgentConfig, s as loadAgentIdentity, u as loadAgentIdentityFromWorkspace } from "./status-Bcl2H-Cb.js";
85
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-BA2DOmHk.js";
86
+ import "./tui-B8ryM4-q.js";
87
87
  import { i as setGatewayWsLogStyle, n as logWs, r as summarizeAgentEventForWsLog, t as formatForLog } from "./ws-log-61vWaDj3.js";
88
- import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BElJpBPG.js";
89
- import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DU-T91C5.js";
90
- import "./node-service-BDoNNRp-.js";
91
- import { n as forceFreePortAndWait } from "./ports-BcNVanDX.js";
88
+ import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-DFeZNixL.js";
89
+ import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-D-ZY5Ay1.js";
90
+ import "./node-service-CkPOvRv0.js";
91
+ import { n as forceFreePortAndWait } from "./ports-DbnuiZZO.js";
92
92
  import { spawn, spawnSync } from "node:child_process";
93
93
  import path from "node:path";
94
94
  import os from "node:os";
@@ -96,7 +96,7 @@ import chalk from "chalk";
96
96
  import * as fsSync from "node:fs";
97
97
  import fs, { constants } from "node:fs";
98
98
  import JSON5 from "json5";
99
- import fs$1 from "node:fs/promises";
99
+ import fsPromises from "node:fs/promises";
100
100
  import { fileURLToPath, pathToFileURL } from "node:url";
101
101
  import crypto, { createHash, randomUUID } from "node:crypto";
102
102
  import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
@@ -1094,7 +1094,7 @@ function shouldSkipCheck(allowInTests) {
1094
1094
  }
1095
1095
  async function readState(statePath) {
1096
1096
  try {
1097
- const raw = await fs$1.readFile(statePath, "utf-8");
1097
+ const raw = await fsPromises.readFile(statePath, "utf-8");
1098
1098
  const parsed = JSON.parse(raw);
1099
1099
  return parsed && typeof parsed === "object" ? parsed : {};
1100
1100
  } catch {
@@ -1102,8 +1102,8 @@ async function readState(statePath) {
1102
1102
  }
1103
1103
  }
1104
1104
  async function writeState(statePath, state) {
1105
- await fs$1.mkdir(path.dirname(statePath), { recursive: true });
1106
- await fs$1.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1105
+ await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
1106
+ await fsPromises.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1107
1107
  }
1108
1108
  async function runGatewayUpdateCheck(params) {
1109
1109
  if (shouldSkipCheck(Boolean(params.allowInTests))) return;
@@ -2967,19 +2967,19 @@ function resolveCronRunLogPath(params) {
2967
2967
  }
2968
2968
  const writesByPath = /* @__PURE__ */ new Map();
2969
2969
  async function pruneIfNeeded(filePath, opts) {
2970
- const stat = await fs$1.stat(filePath).catch(() => null);
2970
+ const stat = await fsPromises.stat(filePath).catch(() => null);
2971
2971
  if (!stat || stat.size <= opts.maxBytes) return;
2972
- const lines = (await fs$1.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
2972
+ const lines = (await fsPromises.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
2973
2973
  const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
2974
2974
  const tmp = `${filePath}.${process.pid}.${Math.random().toString(16).slice(2)}.tmp`;
2975
- await fs$1.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
2976
- await fs$1.rename(tmp, filePath);
2975
+ await fsPromises.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
2976
+ await fsPromises.rename(tmp, filePath);
2977
2977
  }
2978
2978
  async function appendCronRunLog(filePath, entry, opts) {
2979
2979
  const resolved = path.resolve(filePath);
2980
2980
  const next = (writesByPath.get(resolved) ?? Promise.resolve()).catch(() => void 0).then(async () => {
2981
- await fs$1.mkdir(path.dirname(resolved), { recursive: true });
2982
- await fs$1.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
2981
+ await fsPromises.mkdir(path.dirname(resolved), { recursive: true });
2982
+ await fsPromises.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
2983
2983
  await pruneIfNeeded(resolved, {
2984
2984
  maxBytes: opts?.maxBytes ?? 2e6,
2985
2985
  keepLines: opts?.keepLines ?? 2e3
@@ -2991,7 +2991,7 @@ async function appendCronRunLog(filePath, entry, opts) {
2991
2991
  async function readCronRunLogEntries(filePath, opts) {
2992
2992
  const limit = Math.max(1, Math.min(5e3, Math.floor(opts?.limit ?? 200)));
2993
2993
  const jobId = opts?.jobId?.trim() || void 0;
2994
- const raw = await fs$1.readFile(path.resolve(filePath), "utf-8").catch(() => "");
2994
+ const raw = await fsPromises.readFile(path.resolve(filePath), "utf-8").catch(() => "");
2995
2995
  if (!raw.trim()) return [];
2996
2996
  const parsed = [];
2997
2997
  const lines = raw.split("\n");
@@ -4717,7 +4717,7 @@ function sanitizeTriggers(triggers) {
4717
4717
  }
4718
4718
  async function readJSON$1(filePath) {
4719
4719
  try {
4720
- const raw = await fs$1.readFile(filePath, "utf8");
4720
+ const raw = await fsPromises.readFile(filePath, "utf8");
4721
4721
  return JSON.parse(raw);
4722
4722
  } catch {
4723
4723
  return null;
@@ -4725,10 +4725,10 @@ async function readJSON$1(filePath) {
4725
4725
  }
4726
4726
  async function writeJSONAtomic$1(filePath, value) {
4727
4727
  const dir = path.dirname(filePath);
4728
- await fs$1.mkdir(dir, { recursive: true });
4728
+ await fsPromises.mkdir(dir, { recursive: true });
4729
4729
  const tmp = `${filePath}.${randomUUID()}.tmp`;
4730
- await fs$1.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
4731
- await fs$1.rename(tmp, filePath);
4730
+ await fsPromises.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
4731
+ await fsPromises.rename(tmp, filePath);
4732
4732
  }
4733
4733
  let lock$1 = Promise.resolve();
4734
4734
  async function withLock$1(fn) {
@@ -5834,7 +5834,7 @@ const MEMORY_FILE_NAMES = [DEFAULT_MEMORY_FILENAME, DEFAULT_MEMORY_ALT_FILENAME]
5834
5834
  const ALLOWED_FILE_NAMES = new Set([...BOOTSTRAP_FILE_NAMES, ...MEMORY_FILE_NAMES]);
5835
5835
  async function statFile(filePath) {
5836
5836
  try {
5837
- const stat = await fs$1.stat(filePath);
5837
+ const stat = await fsPromises.stat(filePath);
5838
5838
  if (!stat.isFile()) return null;
5839
5839
  return {
5840
5840
  size: stat.size,
@@ -5903,7 +5903,7 @@ function resolveOptionalStringParam(value) {
5903
5903
  async function moveToTrashBestEffort(pathname) {
5904
5904
  if (!pathname) return;
5905
5905
  try {
5906
- await fs$1.access(pathname);
5906
+ await fsPromises.access(pathname);
5907
5907
  } catch {
5908
5908
  return;
5909
5909
  }
@@ -5950,7 +5950,7 @@ const agentsHandlers = {
5950
5950
  dir: workspaceDir,
5951
5951
  ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
5952
5952
  });
5953
- await fs$1.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
5953
+ await fsPromises.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
5954
5954
  await writeConfigFile(nextConfig);
5955
5955
  const safeName = sanitizeIdentityLine(rawName);
5956
5956
  const emoji = resolveOptionalStringParam(params.emoji);
@@ -5963,7 +5963,7 @@ const agentsHandlers = {
5963
5963
  ...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
5964
5964
  ""
5965
5965
  ];
5966
- await fs$1.appendFile(identityPath, lines.join("\n"), "utf-8");
5966
+ await fsPromises.appendFile(identityPath, lines.join("\n"), "utf-8");
5967
5967
  respond(true, {
5968
5968
  ok: true,
5969
5969
  agentId,
@@ -5998,9 +5998,9 @@ const agentsHandlers = {
5998
5998
  });
5999
5999
  if (avatar) {
6000
6000
  const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
6001
- await fs$1.mkdir(workspace, { recursive: true });
6001
+ await fsPromises.mkdir(workspace, { recursive: true });
6002
6002
  const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
6003
- await fs$1.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
6003
+ await fsPromises.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
6004
6004
  }
6005
6005
  respond(true, {
6006
6006
  ok: true,
@@ -6088,7 +6088,7 @@ const agentsHandlers = {
6088
6088
  }, void 0);
6089
6089
  return;
6090
6090
  }
6091
- const content = await fs$1.readFile(filePath, "utf-8");
6091
+ const content = await fsPromises.readFile(filePath, "utf-8");
6092
6092
  respond(true, {
6093
6093
  agentId,
6094
6094
  workspace: workspaceDir,
@@ -6119,10 +6119,10 @@ const agentsHandlers = {
6119
6119
  return;
6120
6120
  }
6121
6121
  const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
6122
- await fs$1.mkdir(workspaceDir, { recursive: true });
6122
+ await fsPromises.mkdir(workspaceDir, { recursive: true });
6123
6123
  const filePath = path.join(workspaceDir, name);
6124
6124
  const content = String(params.content ?? "");
6125
- await fs$1.writeFile(filePath, content, "utf-8");
6125
+ await fsPromises.writeFile(filePath, content, "utf-8");
6126
6126
  const meta = await statFile(filePath);
6127
6127
  respond(true, {
6128
6128
  ok: true,
@@ -8533,7 +8533,7 @@ function resolvePaths(baseDir) {
8533
8533
  }
8534
8534
  async function readJSON(filePath) {
8535
8535
  try {
8536
- const raw = await fs$1.readFile(filePath, "utf8");
8536
+ const raw = await fsPromises.readFile(filePath, "utf8");
8537
8537
  return JSON.parse(raw);
8538
8538
  } catch {
8539
8539
  return null;
@@ -8541,15 +8541,15 @@ async function readJSON(filePath) {
8541
8541
  }
8542
8542
  async function writeJSONAtomic(filePath, value) {
8543
8543
  const dir = path.dirname(filePath);
8544
- await fs$1.mkdir(dir, { recursive: true });
8544
+ await fsPromises.mkdir(dir, { recursive: true });
8545
8545
  const tmp = `${filePath}.${randomUUID()}.tmp`;
8546
- await fs$1.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
8546
+ await fsPromises.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
8547
8547
  try {
8548
- await fs$1.chmod(tmp, 384);
8548
+ await fsPromises.chmod(tmp, 384);
8549
8549
  } catch {}
8550
- await fs$1.rename(tmp, filePath);
8550
+ await fsPromises.rename(tmp, filePath);
8551
8551
  try {
8552
- await fs$1.chmod(filePath, 384);
8552
+ await fsPromises.chmod(filePath, 384);
8553
8553
  } catch {}
8554
8554
  }
8555
8555
  function pruneExpiredPending(pendingById, nowMs) {
@@ -9172,14 +9172,14 @@ function isRollingLogFile(file) {
9172
9172
  return ROLLING_LOG_RE.test(path.basename(file));
9173
9173
  }
9174
9174
  async function resolveLogFile(file) {
9175
- if (await fs$1.stat(file).catch(() => null)) return file;
9175
+ if (await fsPromises.stat(file).catch(() => null)) return file;
9176
9176
  if (!isRollingLogFile(file)) return file;
9177
9177
  const dir = path.dirname(file);
9178
- const entries = await fs$1.readdir(dir, { withFileTypes: true }).catch(() => null);
9178
+ const entries = await fsPromises.readdir(dir, { withFileTypes: true }).catch(() => null);
9179
9179
  if (!entries) return file;
9180
9180
  return (await Promise.all(entries.filter((entry) => entry.isFile() && ROLLING_LOG_RE.test(entry.name)).map(async (entry) => {
9181
9181
  const fullPath = path.join(dir, entry.name);
9182
- const fileStat = await fs$1.stat(fullPath).catch(() => null);
9182
+ const fileStat = await fsPromises.stat(fullPath).catch(() => null);
9183
9183
  return fileStat ? {
9184
9184
  path: fullPath,
9185
9185
  mtimeMs: fileStat.mtimeMs
@@ -9187,7 +9187,7 @@ async function resolveLogFile(file) {
9187
9187
  }))).filter((entry) => Boolean(entry)).toSorted((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path ?? file;
9188
9188
  }
9189
9189
  async function readLogSlice(params) {
9190
- const stat = await fs$1.stat(params.file).catch(() => null);
9190
+ const stat = await fsPromises.stat(params.file).catch(() => null);
9191
9191
  if (!stat) return {
9192
9192
  cursor: 0,
9193
9193
  size: 0,
@@ -9225,7 +9225,7 @@ async function readLogSlice(params) {
9225
9225
  truncated,
9226
9226
  reset
9227
9227
  };
9228
- const handle = await fs$1.open(params.file, "r");
9228
+ const handle = await fsPromises.open(params.file, "r");
9229
9229
  try {
9230
9230
  let prefix = "";
9231
9231
  if (start > 0) {
@@ -9651,7 +9651,7 @@ const nodeHandlers = {
9651
9651
  const p = params;
9652
9652
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
9653
9653
  await respondUnavailableOnThrow(respond, async () => {
9654
- const { handleNodeEvent } = await import("./server-node-events-DZQVhZjc.js");
9654
+ const { handleNodeEvent } = await import("./server-node-events-Cz7z8PCq.js");
9655
9655
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
9656
9656
  await handleNodeEvent({
9657
9657
  deps: context.deps,
@@ -12680,7 +12680,7 @@ function normalizeAgentPayload(payload, opts) {
12680
12680
  async function startBrowserControlServerIfEnabled() {
12681
12681
  if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
12682
12682
  const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
12683
- const mod = override ? await import(override) : await import("./control-service-CH6Bbr0T.js").then((n) => n.t);
12683
+ const mod = override ? await import(override) : await import("./control-service-CzkpRVn7.js").then((n) => n.t);
12684
12684
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
12685
12685
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
12686
12686
  if (!start) return null;
@@ -12843,8 +12843,8 @@ async function resolveA2uiRoot() {
12843
12843
  for (const dir of candidates) try {
12844
12844
  const indexPath = path.join(dir, "index.html");
12845
12845
  const bundlePath = path.join(dir, "a2ui.bundle.js");
12846
- await fs$1.stat(indexPath);
12847
- await fs$1.stat(bundlePath);
12846
+ await fsPromises.stat(indexPath);
12847
+ await fsPromises.stat(bundlePath);
12848
12848
  return dir;
12849
12849
  } catch {}
12850
12850
  return null;
@@ -12853,7 +12853,7 @@ async function resolveA2uiRootReal() {
12853
12853
  if (cachedA2uiRootReal !== void 0) return cachedA2uiRootReal;
12854
12854
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
12855
12855
  const root = await resolveA2uiRoot();
12856
- cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
12856
+ cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
12857
12857
  return cachedA2uiRootReal;
12858
12858
  })();
12859
12859
  return resolvingA2uiRoot;
@@ -12870,12 +12870,12 @@ async function resolveA2uiFilePath(rootReal, urlPath) {
12870
12870
  let candidate = path.join(rootReal, rel);
12871
12871
  if (normalized.endsWith("/")) candidate = path.join(candidate, "index.html");
12872
12872
  try {
12873
- if ((await fs$1.stat(candidate)).isDirectory()) candidate = path.join(candidate, "index.html");
12873
+ if ((await fsPromises.stat(candidate)).isDirectory()) candidate = path.join(candidate, "index.html");
12874
12874
  } catch {}
12875
12875
  const rootPrefix = rootReal.endsWith(path.sep) ? rootReal : `${rootReal}${path.sep}`;
12876
12876
  try {
12877
- if ((await fs$1.lstat(candidate)).isSymbolicLink()) return null;
12878
- const real = await fs$1.realpath(candidate);
12877
+ if ((await fsPromises.lstat(candidate)).isSymbolicLink()) return null;
12878
+ const real = await fsPromises.realpath(candidate);
12879
12879
  if (!real.startsWith(rootPrefix)) return null;
12880
12880
  return real;
12881
12881
  } catch {
@@ -12967,13 +12967,13 @@ async function handleA2uiHttpRequest(req, res) {
12967
12967
  const mime = lower.endsWith(".html") || lower.endsWith(".htm") ? "text/html" : await detectMime({ filePath }) ?? "application/octet-stream";
12968
12968
  res.setHeader("Cache-Control", "no-store");
12969
12969
  if (mime === "text/html") {
12970
- const html = await fs$1.readFile(filePath, "utf8");
12970
+ const html = await fsPromises.readFile(filePath, "utf8");
12971
12971
  res.setHeader("Content-Type", "text/html; charset=utf-8");
12972
12972
  res.end(injectCanvasLiveReload(html));
12973
12973
  return true;
12974
12974
  }
12975
12975
  res.setHeader("Content-Type", mime);
12976
- res.end(await fs$1.readFile(filePath));
12976
+ res.end(await fsPromises.readFile(filePath));
12977
12977
  return true;
12978
12978
  }
12979
12979
 
@@ -12994,7 +12994,7 @@ const isSymlinkOpenError = (err) => isNodeError(err) && (err.code === "ELOOP" ||
12994
12994
  async function openFileWithinRoot(params) {
12995
12995
  let rootReal;
12996
12996
  try {
12997
- rootReal = await fs$1.realpath(params.rootDir);
12997
+ rootReal = await fsPromises.realpath(params.rootDir);
12998
12998
  } catch (err) {
12999
12999
  if (isNotFoundError(err)) throw new SafeOpenError("not-found", "root dir not found");
13000
13000
  throw err;
@@ -13006,19 +13006,19 @@ async function openFileWithinRoot(params) {
13006
13006
  const flags = constants.O_RDONLY | (supportsNoFollow ? constants.O_NOFOLLOW : 0);
13007
13007
  let handle;
13008
13008
  try {
13009
- handle = await fs$1.open(resolved, flags);
13009
+ handle = await fsPromises.open(resolved, flags);
13010
13010
  } catch (err) {
13011
13011
  if (isNotFoundError(err)) throw new SafeOpenError("not-found", "file not found");
13012
13012
  if (isSymlinkOpenError(err)) throw new SafeOpenError("invalid-path", "symlink open blocked");
13013
13013
  throw err;
13014
13014
  }
13015
13015
  try {
13016
- if ((await fs$1.lstat(resolved).catch(() => null))?.isSymbolicLink()) throw new SafeOpenError("invalid-path", "symlink not allowed");
13017
- const realPath = await fs$1.realpath(resolved);
13016
+ if ((await fsPromises.lstat(resolved).catch(() => null))?.isSymbolicLink()) throw new SafeOpenError("invalid-path", "symlink not allowed");
13017
+ const realPath = await fsPromises.realpath(resolved);
13018
13018
  if (!realPath.startsWith(rootWithSep)) throw new SafeOpenError("invalid-path", "path escapes root");
13019
13019
  const stat = await handle.stat();
13020
13020
  if (!stat.isFile()) throw new SafeOpenError("invalid-path", "not a file");
13021
- const realStat = await fs$1.stat(realPath);
13021
+ const realStat = await fsPromises.stat(realPath);
13022
13022
  if (stat.ino !== realStat.ino || stat.dev !== realStat.dev) throw new SafeOpenError("invalid-path", "path mismatch");
13023
13023
  return {
13024
13024
  handle,
@@ -13151,7 +13151,7 @@ async function resolveFilePath(rootReal, urlPath) {
13151
13151
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
13152
13152
  const candidate = path.join(rootReal, rel);
13153
13153
  try {
13154
- const st = await fs$1.lstat(candidate);
13154
+ const st = await fsPromises.lstat(candidate);
13155
13155
  if (st.isSymbolicLink()) return null;
13156
13156
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
13157
13157
  } catch {}
@@ -13170,13 +13170,13 @@ function normalizeBasePath(rawPath) {
13170
13170
  }
13171
13171
  async function prepareCanvasRoot(rootDir) {
13172
13172
  await ensureDir(rootDir);
13173
- const rootReal = await fs$1.realpath(rootDir);
13173
+ const rootReal = await fsPromises.realpath(rootDir);
13174
13174
  try {
13175
13175
  const indexPath = path.join(rootReal, "index.html");
13176
- await fs$1.stat(indexPath);
13176
+ await fsPromises.stat(indexPath);
13177
13177
  } catch {
13178
13178
  try {
13179
- await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
13179
+ await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
13180
13180
  } catch {}
13181
13181
  }
13182
13182
  return rootReal;
@@ -15556,7 +15556,7 @@ function resolveGatewayOwnerStatus(pid, payload, platform) {
15556
15556
  }
15557
15557
  async function readLockPayload(lockPath) {
15558
15558
  try {
15559
- const raw = await fs$1.readFile(lockPath, "utf8");
15559
+ const raw = await fsPromises.readFile(lockPath, "utf8");
15560
15560
  const parsed = JSON.parse(raw);
15561
15561
  if (typeof parsed.pid !== "number") return null;
15562
15562
  if (typeof parsed.createdAt !== "string") return null;
@@ -15590,11 +15590,11 @@ async function acquireGatewayLock(opts = {}) {
15590
15590
  const staleMs = opts.staleMs ?? DEFAULT_STALE_MS;
15591
15591
  const platform = opts.platform ?? process.platform;
15592
15592
  const { lockPath, configPath } = resolveGatewayLockPath(env);
15593
- await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
15593
+ await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
15594
15594
  const startedAt = Date.now();
15595
15595
  let lastPayload = null;
15596
15596
  while (Date.now() - startedAt < timeoutMs) try {
15597
- const handle = await fs$1.open(lockPath, "wx");
15597
+ const handle = await fsPromises.open(lockPath, "wx");
15598
15598
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
15599
15599
  const payload = {
15600
15600
  pid: process.pid,
@@ -15608,7 +15608,7 @@ async function acquireGatewayLock(opts = {}) {
15608
15608
  configPath,
15609
15609
  release: async () => {
15610
15610
  await handle.close().catch(() => void 0);
15611
- await fs$1.rm(lockPath, { force: true });
15611
+ await fsPromises.rm(lockPath, { force: true });
15612
15612
  }
15613
15613
  };
15614
15614
  } catch (err) {
@@ -15617,7 +15617,7 @@ async function acquireGatewayLock(opts = {}) {
15617
15617
  const ownerPid = lastPayload?.pid;
15618
15618
  const ownerStatus = ownerPid ? resolveGatewayOwnerStatus(ownerPid, lastPayload, platform) : "unknown";
15619
15619
  if (ownerStatus === "dead" && ownerPid) {
15620
- await fs$1.rm(lockPath, { force: true });
15620
+ await fsPromises.rm(lockPath, { force: true });
15621
15621
  continue;
15622
15622
  }
15623
15623
  if (ownerStatus !== "alive") {
@@ -15627,13 +15627,13 @@ async function acquireGatewayLock(opts = {}) {
15627
15627
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
15628
15628
  }
15629
15629
  if (!stale) try {
15630
- const st = await fs$1.stat(lockPath);
15630
+ const st = await fsPromises.stat(lockPath);
15631
15631
  stale = Date.now() - st.mtimeMs > staleMs;
15632
15632
  } catch {
15633
15633
  stale = true;
15634
15634
  }
15635
15635
  if (stale) {
15636
- await fs$1.rm(lockPath, { force: true });
15636
+ await fsPromises.rm(lockPath, { force: true });
15637
15637
  continue;
15638
15638
  }
15639
15639
  }