@bitseek/claw 1.2.6 → 1.2.8

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 (228) hide show
  1. package/dist/{accounts-CCbfXe4Y.js → accounts-D5DQlttG.js} +7 -7
  2. package/dist/{accounts-C3iwoWUS.js → accounts-DKvlV3Tm.js} +1 -1
  3. package/dist/{accounts-ChjgDDok.js → accounts-jPPbCJns.js} +1 -1
  4. package/dist/{acp-cli-DIikR-tj.js → acp-cli-BZnPaFm3.js} +8 -8
  5. package/dist/{agent-scope-DHMu2mab.js → agent-scope-CiBV1K6b.js} +1 -1
  6. package/dist/{agents.config-BoNoGEQI.js → agents.config-DQBEXhzA.js} +2 -2
  7. package/dist/{api-key-rotation-CuHjsofV.js → api-key-rotation-j4O7qxMf.js} +1 -1
  8. package/dist/{audio-preflight-BClvbKMQ.js → audio-preflight-BkoTbTIH.js} +36 -36
  9. package/dist/{audio-transcription-runner-Dv-MCA8E.js → audio-transcription-runner-CF_UP4C7.js} +22 -22
  10. package/dist/{audit-BAGbgihO.js → audit-1YVlVmk7.js} +29 -29
  11. package/dist/{auth-B9WdgDjZ.js → auth-Co2g3d8d.js} +1 -1
  12. package/dist/{auth-choice-FFUrxk0-.js → auth-choice-BamWYpsc.js} +14 -14
  13. package/dist/{auth-choice-CTCXt7WB.js → auth-choice-CdsMUqKA.js} +12 -12
  14. package/dist/{auth-choice.apply-helpers-Dz2x-3CK.js → auth-choice.apply-helpers-CQLQ5Tuk.js} +1 -1
  15. package/dist/{auth-token-BPWVp11S.js → auth-token-BjVRLcvi.js} +1 -1
  16. package/dist/{bindings-C0k4wFy7.js → bindings-Ck6aotGf.js} +1 -1
  17. package/dist/{bonjour-discovery-DXvZeG8M.js → bonjour-discovery-CtUQb94i.js} +1 -1
  18. package/dist/{browser-cli-BwtSgIvC.js → browser-cli-CaBLM5A6.js} +12 -12
  19. package/dist/build-info.json +3 -3
  20. package/dist/{call-B9Vrcbed.js → call-BGZQEHL4.js} +10 -10
  21. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  22. package/dist/{channel-account-context-CeGx9Aq7.js → channel-account-context-C6rIxLzo.js} +5 -5
  23. package/dist/{channel-options-DmEaPgkZ.js → channel-options-Bnnem_wD.js} +3 -3
  24. package/dist/{channel-selection-BDdjozhi.js → channel-selection-TZJgoz5h.js} +1 -1
  25. package/dist/{channel-web-mFdbEE2o.js → channel-web-KY6EP9HT.js} +18 -18
  26. package/dist/{channels-cli-CCTczoJM.js → channels-cli-tJkvzsqO.js} +94 -94
  27. package/dist/{channels-status-issues-Dir7g-Pc.js → channels-status-issues-DeT1Znlx.js} +1 -1
  28. package/dist/{chrome-2gfHr1cU.js → chrome-DzGCPEQK.js} +4 -4
  29. package/dist/{clawbot-cli-BMGBnmny.js → clawbot-cli-Comysjn9.js} +5 -5
  30. package/dist/{cli-zsP2OqB6.js → cli-DOS1lPNs.js} +75 -75
  31. package/dist/{client-BoUhzGrS.js → client-B91adiXh.js} +2 -2
  32. package/dist/{command-registry-okzYatr9.js → command-registry-Keal8P25.js} +5 -5
  33. package/dist/{commands-npgZubp3.js → commands-C6OLhl3n.js} +1 -1
  34. package/dist/{commands-registry-B5jHbfUL.js → commands-registry-CVzTBX51.js} +3 -3
  35. package/dist/{completion-cli-BFxGdqak.js → completion-cli-BWcHEWr6.js} +2 -2
  36. package/dist/{completion-cli-Dm9dt8iw.js → completion-cli-B_pSnPVY.js} +12 -12
  37. package/dist/{config-cli-CJVYN-g-.js → config-cli-DZpbwWvz.js} +7 -7
  38. package/dist/{config-guard-1SsvFO9G.js → config-guard-9BjlFVZx.js} +17 -17
  39. package/dist/{config-validation-BJ6PNk8H.js → config-validation-BcxAhhcj.js} +3 -3
  40. package/dist/{configure-DMwHaNHJ.js → configure-CLMtWGiL.js} +17 -17
  41. package/dist/control-ui/assets/{index-CKSSOzJL.js → index-puDi2eTY.js} +2 -2
  42. package/dist/control-ui/assets/index-puDi2eTY.js.map +1 -0
  43. package/dist/control-ui/brand.png +0 -0
  44. package/dist/control-ui/index.html +4 -5
  45. package/dist/{control-ui-assets-DpInddpx.js → control-ui-assets-B_3g_YF0.js} +1 -1
  46. package/dist/{cron-cli-CyEcKgVG.js → cron-cli-C8kDGh6_.js} +12 -12
  47. package/dist/{daemon-cli-CB9c5SXP.js → daemon-cli-RKWFtF-K.js} +15 -15
  48. package/dist/{daemon-install-Bqjc3wky.js → daemon-install-DsJ0L8HP.js} +4 -4
  49. package/dist/{daemon-install-helpers-CGZBs-X3.js → daemon-install-helpers-CMWYg4_W.js} +11 -11
  50. package/dist/{dashboard-8HFxt9IY.js → dashboard-BhAYjl6n.js} +2 -2
  51. package/dist/{deliver-D4ugOkLr.js → deliver-Bn10XzRP.js} +7 -7
  52. package/dist/{devices-cli-Bp8AMOPE.js → devices-cli-DoJBheGs.js} +8 -8
  53. package/dist/{diagnostic-phUWJbF_.js → diagnostic-DRPetA8l.js} +1 -1
  54. package/dist/{diagnostics-D_AmByNE.js → diagnostics-BHQgZbuI.js} +5 -5
  55. package/dist/{directory-cli-Bt3I30_e.js → directory-cli-Brla3Idn.js} +8 -8
  56. package/dist/{dns-cli-DaTrsB61.js → dns-cli-rEvE1LG9.js} +5 -5
  57. package/dist/{dock-swzevZbj.js → dock-BXksV3sC.js} +4 -4
  58. package/dist/{docs-cli--2Qgcpvs.js → docs-cli-DtThi0Xf.js} +4 -4
  59. package/dist/{doctor-completion-wHIBxn-7.js → doctor-completion-leOuoRMt.js} +1 -1
  60. package/dist/{doctor-completion-UEYo4_U6.js → doctor-completion-sKCaOE5l.js} +2 -2
  61. package/dist/{doctor-config-flow-DKaeaH2u.js → doctor-config-flow-18ijj3KB.js} +15 -15
  62. package/dist/{enable-xlkWJvIn.js → enable-CJ75JA5u.js} +1 -1
  63. package/dist/entry.js +2 -2
  64. package/dist/{exec-approvals-allowlist-fG-NsL-O.js → exec-approvals-allowlist-CGVHz3PX.js} +1 -1
  65. package/dist/{exec-approvals-cli-r7jbe_Rj.js → exec-approvals-cli-DfcUJ9Sm.js} +16 -16
  66. package/dist/{exec-safe-bin-runtime-policy-B9kCrTY1.js → exec-safe-bin-runtime-policy-D7olAQMf.js} +2 -2
  67. package/dist/{fetch-guard-N12H9lEe.js → fetch-guard-D6eclxeP.js} +1 -1
  68. package/dist/{fs-safe-BGAE6eOQ.js → fs-safe-p5lyYI__.js} +24 -24
  69. package/dist/{gateway-cli-BFo0WvJx.js → gateway-cli-BlVNebTw.js} +15 -5
  70. package/dist/{gateway-cli-Bi6tzv7v.js → gateway-cli-jL3MSRHB.js} +174 -164
  71. package/dist/{gateway-rpc-BHBGSN7Z.js → gateway-rpc-CJVCek88.js} +1 -1
  72. package/dist/{health-DlFSsTw-.js → health-Du8dO3vn.js} +14 -14
  73. package/dist/{hooks-cli-CMLpJr6I.js → hooks-cli-DUIQuGjr.js} +83 -83
  74. package/dist/{hooks-status-inMD7sD-.js → hooks-status-ONaKEpUH.js} +1 -1
  75. package/dist/{image-BzR2twGI.js → image-B270IRGo.js} +5 -5
  76. package/dist/{image-ops-B6BeXmZU.js → image-ops-BAMcbVMS.js} +10 -10
  77. package/dist/index.js +85 -85
  78. package/dist/{inspect-BwbOLUun.js → inspect-C0e0Dmvg.js} +4 -4
  79. package/dist/{install-safe-path-DodF6oyk.js → install-safe-path-CSqVUjL8.js} +25 -25
  80. package/dist/{installs-8bzJi35e.js → installs-BXOZ3DXs.js} +9 -9
  81. package/dist/{ipv4-BY_PmkpX.js → ipv4-Bk-doiEE.js} +1 -1
  82. package/dist/{ir-vGBxQkIg.js → ir-BGgl4f9u.js} +6 -6
  83. package/dist/{issue-format-B4oxePhU.js → issue-format-rk9Vpcxd.js} +1 -1
  84. package/dist/{json-files-C7p5SEie.js → json-files-bJqSYqgg.js} +8 -8
  85. package/dist/{lifecycle-core-C5a4clqu.js → lifecycle-core-Bqse41aA.js} +5 -5
  86. package/dist/{local-roots-Dcc5UeD8.js → local-roots-jW0nhxVT.js} +3 -3
  87. package/dist/{login-BM9p9nig.js → login-B2B75WGK.js} +3 -3
  88. package/dist/{login-qr-CB4JWkHM.js → login-qr-YjUycQZT.js} +6 -6
  89. package/dist/{logs-cli-DGdXLEv-.js → logs-cli-Dyid6hUQ.js} +9 -9
  90. package/dist/{manager-X8AF3rQJ.js → manager-C9rftBaE.js} +14 -14
  91. package/dist/{manifest-registry-HNrtHxxI.js → manifest-registry-B_U2pKBU.js} +1 -1
  92. package/dist/{markdown-tables-XmfG1bwr.js → markdown-tables-B5l_33qL.js} +1 -1
  93. package/dist/{memory-cli-87nxADqy.js → memory-cli-o3L9NN74.js} +12 -12
  94. package/dist/{model-CESXYutI.js → model-FnrgCVyS.js} +2 -2
  95. package/dist/{model-catalog-DUHxH2xb.js → model-catalog-CjA5pRJF.js} +3 -3
  96. package/dist/{model-picker-D705WMPf.js → model-picker-CMgjcqV_.js} +4 -4
  97. package/dist/{model-selection-DCo8MhsE.js → model-selection-xdfZxwgB.js} +16 -16
  98. package/dist/{models-cli-9x2mp4Ac.js → models-cli-CHUbcM_y.js} +85 -85
  99. package/dist/{models-config-Bgpjcu8R.js → models-config-Do1Ur_ov.js} +6 -6
  100. package/dist/{node-cli-DJnihsNr.js → node-cli-DYOdgLUu.js} +33 -33
  101. package/dist/{node-command-policy-BiPTB8BK.js → node-command-policy-BKUs_pS2.js} +1 -1
  102. package/dist/{node-service-CfKJ5oC1.js → node-service-6W3vqgVv.js} +1 -1
  103. package/dist/{nodes-cli-4kBrEEti.js → nodes-cli-CQzck2kc.js} +16 -16
  104. package/dist/{nodes-screen-FWjD2j3v.js → nodes-screen-Dptoharj.js} +7 -7
  105. package/dist/{npm-pack-install-CXheGnb0.js → npm-pack-install-Byr0kgft.js} +18 -18
  106. package/dist/{npm-resolution-DIr_TibO.js → npm-resolution-Dv7nYiaP.js} +5 -5
  107. package/dist/{onboard-B_MoYnrn.js → onboard-BCcjGKBR.js} +1 -1
  108. package/dist/{onboard-DEFQu6dU.js → onboard-KHObANUh.js} +6 -6
  109. package/dist/{onboard-channels-BuG5-e60.js → onboard-channels-CRpmgX82.js} +20 -20
  110. package/dist/{onboard-custom-HI7NPx1u.js → onboard-custom-Bow6lZPm.js} +3 -3
  111. package/dist/{onboard-custom.shared-SWx67Er2.js → onboard-custom.shared-CBRRhb95.js} +2 -2
  112. package/dist/{onboard-helpers-Jc1-4LBc.js → onboard-helpers-B1AEo6oL.js} +11 -11
  113. package/dist/{onboard-hooks-DFjIpeE_.js → onboard-hooks-CtxRk6l_.js} +4 -4
  114. package/dist/{onboard-remote-BLAyUeAO.js → onboard-remote-DmHpLoWf.js} +3 -3
  115. package/dist/{onboard-skills--XkA2Jj4.js → onboard-skills-DwpZY5tZ.js} +4 -4
  116. package/dist/{onboarding-CSnr51pR.js → onboarding-BTXvw1Ro.js} +1 -1
  117. package/dist/{onboarding-BQ2WB7tp.js → onboarding-DQNTd5J7.js} +13 -13
  118. package/dist/{onboarding.finalize-DAbr5Ar8.js → onboarding.finalize-CHYENeNO.js} +87 -87
  119. package/dist/{onboarding.finalize-BlMlIFRW.js → onboarding.finalize-D0qfP3rB.js} +4 -4
  120. package/dist/{onboarding.gateway-config-CMKjEPRA.js → onboarding.gateway-config-wXH6gE7c.js} +18 -18
  121. package/dist/{openai-model-default-BTNz1OzV.js → openai-model-default-Q7Hmy0eQ.js} +2 -2
  122. package/dist/{outbound-Bf7VAx0-.js → outbound-DlVJWa4u.js} +4 -4
  123. package/dist/{outbound-attachment-Df5o7JIG.js → outbound-attachment-CZh4VjhT.js} +2 -2
  124. package/dist/{pairing-cli-CA7Dxs-g.js → pairing-cli-DAMLvDcA.js} +9 -9
  125. package/dist/{pairing-labels-BBti3jJg.js → pairing-labels-Cl7ROILg.js} +1 -1
  126. package/dist/{pairing-store-DY0yrkuM.js → pairing-store-DdZ0xMD7.js} +3 -3
  127. package/dist/{path-alias-guards-BNzjbOwM.js → path-alias-guards-DWh6tSaP.js} +3 -3
  128. package/dist/{path-safety-dmCI2tpN.js → path-safety-COhgvniC.js} +1 -1
  129. package/dist/{paths-BZfURxkW.js → paths-AxolTUEH.js} +9 -9
  130. package/dist/{pi-embedded-helpers-D3nc5XJW.js → pi-embedded-helpers-ZTn-T7tW.js} +6 -6
  131. package/dist/{pi-model-discovery-BSytrsu4.js → pi-model-discovery-DVhDvAnA.js} +1 -1
  132. package/dist/{pi-tools.policy-Dwsq-Yaf.js → pi-tools.policy-eyXj0EY5.js} +5 -5
  133. package/dist/{plugin-auto-enable-4zXn-eVS.js → plugin-auto-enable-D1WySsnE.js} +3 -3
  134. package/dist/{plugin-registry-DsZTkNKu.js → plugin-registry-TOEmbMc4.js} +3 -3
  135. package/dist/{plugins-Ce8ThYGQ.js → plugins-CKWxMohB.js} +2 -2
  136. package/dist/{plugins-cli-DxFh5OQi.js → plugins-cli-Clo_uyvq.js} +85 -85
  137. package/dist/{ports-wtEwdqsX.js → ports-BL-FP2jP.js} +1 -1
  138. package/dist/{ports-DXMCFRgn.js → ports-DppAHKM-.js} +2 -2
  139. package/dist/{program-DnjsZxiJ.js → program-BI6W1Gll.js} +2 -2
  140. package/dist/{program-context-36wFBslW.js → program-context-D2D7wH7Q.js} +43 -43
  141. package/dist/{prompt-select-styled-CJt-zhnt.js → prompt-select-styled-CdBJ0FWT.js} +39 -39
  142. package/dist/{prompt-select-styled-BkpL6eKQ.js → prompt-select-styled-FGF3Su20.js} +1 -1
  143. package/dist/{provider-auth-helpers-DeJ105rb.js → provider-auth-helpers-D_akOb8A.js} +5 -5
  144. package/dist/{proxy-env-DhFUQlwP.js → proxy-env-ClbXa7vn.js} +1 -1
  145. package/dist/{push-apns-SIM2es-Y.js → push-apns-DvNRo3EQ.js} +5 -5
  146. package/dist/{pw-ai-BOQE6s45.js → pw-ai-D21rIJ2z.js} +15 -15
  147. package/dist/{qmd-manager-DVKj0i6T.js → qmd-manager-BD6lfN35.js} +20 -20
  148. package/dist/{qr-cli-Z4_Y6bva.js → qr-cli-BQGJJ5hp.js} +1 -1
  149. package/dist/{query-expansion-B9kneDbd.js → query-expansion-Dl85zpSb.js} +12 -12
  150. package/dist/{redact-snapshot-BI4Ryuhy.js → redact-snapshot-DCGL0k2M.js} +1 -1
  151. package/dist/{register.agent-Cd2LVcga.js → register.agent-DowGjvNc.js} +100 -100
  152. package/dist/register.configure-BZLa_c3k.js +174 -0
  153. package/dist/{register.init-BiLKNwSu.js → register.init-B1pIa3ys.js} +5 -88
  154. package/dist/{register.init-DpFUY5Ed.js → register.init-BrturXsS.js} +20 -103
  155. package/dist/{register.maintenance-DAU-mVIz.js → register.maintenance-DTx6vUDv.js} +97 -97
  156. package/dist/{register.maintenance-R4RCi4f3.js → register.maintenance-f8NCHf6u.js} +5 -5
  157. package/dist/{register.message-B0CI0Q4o.js → register.message-DE-eKss6.js} +76 -76
  158. package/dist/{register.onboard-BGhXUfbX.js → register.onboard-DmymXZNT.js} +18 -18
  159. package/dist/{register.onboard-Di7iClKl.js → register.onboard-tT7keiju.js} +2 -2
  160. package/dist/{register.setup-nlXy06aa.js → register.setup-D9AvFexw.js} +21 -21
  161. package/dist/{register.setup-Dm_dHAB-.js → register.setup-DjHaiqnA.js} +2 -2
  162. package/dist/{register.start-Dzss99ZY.js → register.start-BHASi8Um.js} +17 -17
  163. package/dist/{register.status-health-sessions-B4eNiGWS.js → register.status-health-sessions-Cbva8fTK.js} +89 -89
  164. package/dist/{register.subclis-1MobNhis.js → register.subclis-pmPhNoRB.js} +3 -3
  165. package/dist/{replies-k5K96_46.js → replies-B6SXcEs0.js} +1 -1
  166. package/dist/{reply-DQMWsIE2.js → reply-D8Yu6-Ie.js} +156 -156
  167. package/dist/{reply-prefix-aBvAQX6L.js → reply-prefix-BttpF8VB.js} +1 -1
  168. package/dist/{resolve-route-R565qQgt.js → resolve-route-Ck23oGqS.js} +2 -2
  169. package/dist/{rpc-CMyUzpcT.js → rpc-9jE_1PW0.js} +1 -1
  170. package/dist/{run-main-CFGtfsPd.js → run-main-D5C2p24j.js} +3 -3
  171. package/dist/{runtime-D64ACWoX.js → runtime-Rd7ooKB0.js} +2 -2
  172. package/dist/{sandbox-DH9YtUfB.js → sandbox-BKa5RrBl.js} +18 -18
  173. package/dist/{sandbox-cli-B1ThXy7C.js → sandbox-cli-BnpEc205.js} +26 -26
  174. package/dist/{secrets-cli-BEjJ3GP-.js → secrets-cli-CIxUNZyC.js} +10 -10
  175. package/dist/{security-cli-Zma5k5BZ.js → security-cli-BqOOeGxS.js} +43 -43
  176. package/dist/{send-NexNe2Wh.js → send-BntubUtK.js} +6 -6
  177. package/dist/{send-DmVTXBWW.js → send-ByUfPpKj.js} +11 -11
  178. package/dist/{send-CabiU1-J.js → send-Cua2kS5v.js} +6 -6
  179. package/dist/{send-BQVNhO4Q.js → send-DuNBSJln.js} +5 -5
  180. package/dist/{send-CFUSH9C-.js → send-SZBhACLn.js} +8 -8
  181. package/dist/{server-DQ7D-B-v.js → server-Ct0J5VXf.js} +19 -19
  182. package/dist/{server-context-Cr-Y4i6P.js → server-context-DWxmyV-0.js} +12 -12
  183. package/dist/{server-lifecycle-BVnXIEfI.js → server-lifecycle-B7aXKxY3.js} +2 -2
  184. package/dist/{server-middleware-zyvA9rl9.js → server-middleware-CO1brrgv.js} +1 -1
  185. package/dist/{server-node-events-oa4mOmsp.js → server-node-events-nakjzVDn.js} +76 -76
  186. package/dist/{service-BcFhE63y.js → service-DqxfCr8y.js} +15 -15
  187. package/dist/{session-Dl3x3d75.js → session-FOGqE7bj.js} +1 -1
  188. package/dist/{session-meta-C6MooccR.js → session-meta-C-ox3bdI.js} +1 -1
  189. package/dist/{sessions-sIaYsUyX.js → sessions-BpuJ64B0.js} +15 -15
  190. package/dist/{shared-sFrejcA4.js → shared-BmSv3K8N.js} +1 -1
  191. package/dist/{shared-DNcLp2mA.js → shared-CgFPGTLU.js} +3 -3
  192. package/dist/{skill-commands-C2_BOuyl.js → skill-commands-COl0HE54.js} +5 -5
  193. package/dist/{skill-scanner-DYkQAh0l.js → skill-scanner-CsmM5F4F.js} +6 -6
  194. package/dist/{skills-BXLKd7i5.js → skills-BeFcXCoN.js} +3 -3
  195. package/dist/{skills-cli-DrN4v5_m.js → skills-cli-D3ZteX5N.js} +5 -5
  196. package/dist/{skills-install-CSfh8nRm.js → skills-install-B_Vda3dM.js} +6 -6
  197. package/dist/{skills-status-C7Q6Ezbv.js → skills-status-BEq0_fOn.js} +1 -1
  198. package/dist/{status-rMgdZcE5.js → status-CQYA6EJN.js} +25 -25
  199. package/dist/{status.update-D4GfnNDI.js → status.update-HwSPC5ZX.js} +2 -2
  200. package/dist/{store-CRcBie8T.js → store-B-nkOSsv.js} +5 -5
  201. package/dist/{system-cli-Bscj57lL.js → system-cli-IYwpBiC6.js} +9 -9
  202. package/dist/{system-run-command-Cn5yQ2rv.js → system-run-command-C3OIMtEu.js} +1 -1
  203. package/dist/{systemd-BIfjzi-4.js → systemd-DJ5Red-Q.js} +9 -9
  204. package/dist/{systemd-hints-CgtHwBfD.js → systemd-hints-D40Qx3hg.js} +6 -6
  205. package/dist/{systemd-linger-0Vho6LMt.js → systemd-linger-BK6kig-o.js} +1 -1
  206. package/dist/{tables-C5n2nXbu.js → tables-C9_oCtRN.js} +1 -1
  207. package/dist/{tailnet-C8NwaQEp.js → tailnet-BYBKD8Kh.js} +1 -1
  208. package/dist/{target-errors-cerGxvCB.js → target-errors-B1cYmIjq.js} +4 -4
  209. package/dist/{tool-images-CgSADinH.js → tool-images-QWbHWc0F.js} +1 -1
  210. package/dist/{tui-DNT0WnU-.js → tui-Dd6DhgjX.js} +6 -6
  211. package/dist/{tui-cli-DTFq2wGK.js → tui-cli-C3PCazFC.js} +33 -33
  212. package/dist/{update-Mb6BH0o9.js → update-B1Dhhu_3.js} +3 -3
  213. package/dist/{update-cli-Dbb1EPi2.js → update-cli-C2EagLTi.js} +5 -5
  214. package/dist/{update-cli--qEz2_Eg.js → update-cli-DiT2fFEK.js} +105 -105
  215. package/dist/{update-runner-Dj_CAfd4.js → update-runner-DO6RodZW.js} +16 -16
  216. package/dist/web-DbdjX4Hg.js +126 -0
  217. package/dist/{webhooks-cli-uXE9EOwT.js → webhooks-cli-BFdw7BAP.js} +6 -6
  218. package/dist/{whatsapp-actions-DeX4x9sq.js → whatsapp-actions-CNoiLzRB.js} +19 -19
  219. package/dist/{with-timeout-C-EETHnf.js → with-timeout-tSH4Tex_.js} +3 -3
  220. package/dist/{workspace-TersEUYu.js → workspace-CRdln__H.js} +23 -23
  221. package/dist/{workspace-1nc7aTpg.js → workspace-dKMB109Q.js} +1 -1
  222. package/dist/{workspace-dirs-DxTFH1r3.js → workspace-dirs-DcAUEsSG.js} +1 -1
  223. package/dist/{ws-E9v842O2.js → ws-DKbBt0us.js} +2 -2
  224. package/dist/{wsl-Dg6XQcw5.js → wsl-yjQQ-PJd.js} +2 -2
  225. package/package.json +1 -1
  226. package/dist/control-ui/assets/index-CKSSOzJL.js.map +0 -1
  227. package/dist/register.configure-DGIWBQvN.js +0 -174
  228. package/dist/web-BQRkxG9u.js +0 -126
@@ -2,14 +2,14 @@ import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as
2
2
  import { a as logVerbose, d as colorize, f as isRich, g as getResolvedLoggerSettings, h as getLogger, m as getChildLogger, p as theme, s as setVerbose } from "./globals-uLeGcRW1.js";
3
3
  import { D as isPlainObject, E as truncateUtf16Safe, S as shortenHomePath, c as ensureDir, r as clamp, y as resolveUserPath } from "./utils-CP51tiAi.js";
4
4
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-44rmAw5o.js";
5
- import { $ as normalizeOptionalText, $n as registerAgentRunContext, An as resolveSessionDeliveryTarget, Ar as enqueueSystemEvent, B as consumeRestartSentinel, Bn as countActiveDescendantRuns, Br as getAcpSessionManager, Bt as runWithModelFallback, C as listAgentsForGateway, Cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Ct as handleSlackHttpRequest, D as pruneLegacyStoreKeys, Dr as stripHeartbeatToken, Dt as computeBackoff, E as loadSessionEntry, En as resolveOutboundSessionRoute, F as markGatewaySigusr1RestartHandled, Ft as createOutboundSendDeps, Gn as resolveAnnounceTargetFromKey, Gr as DEFAULT_INPUT_IMAGE_MIMES, H as formatRestartSentinelMessage, Hn as listDescendantRunsForRequester, Hr as normalizeSendPolicy, Ht as setCliSessionId, I as scheduleGatewaySigusr1Restart, It as applyVerboseOverride, J as normalizeCronJobCreate, Jn as buildOutboundSessionContext, Jr as extractFileContentFromSource, K as writeRestartSentinel, Kn as readLatestAssistantReply, Kr as DEFAULT_INPUT_MAX_REDIRECTS, Kt as applyModelOverrideToSessionEntry, L as setGatewaySigusr1RestartPolicy, Lt as parseVerboseOverride, M as deferGatewayRestartUntilIdle, N as emitGatewayRestart, Nn as resetDirectoryCache, Nt as resolveAgentDeliveryPlan, O as resolveGatewaySessionStoreTarget, Ot as sleepWithAbort, P as isGatewaySigusr1RestartExternallyAllowed, Pr as requestHeartbeatNow, Pt as resolveAgentOutboundTarget, Q as normalizeOptionalSessionKey, Qn as onAgentEvent, Qr as resolveAgentTimeoutMs, R as setPreRestartDeferralCheck, Rn as isAbortRequestText, Rt as createDefaultDeps, Sn as getTotalPendingReplies, Sr as CommandLane, T as loadCombinedSessionStoreForGateway, Tn as ensureOutboundSessionEntry, Tt as requestBodyErrorToText, Ur as resolveSendPolicy, Ut as runCliAgent, V as formatDoctorNonInteractiveHint, Vn as initSubagentRegistry, Vr as resolveAgentSessionDirs, Vt as getCliSessionId, W as summarizeRestartSentinel, Wn as runSubagentAnnounceFlow, Wr as DEFAULT_INPUT_IMAGE_MAX_BYTES, X as inferLegacyName, Xn as emitAgentEvent, Xr as normalizeMimeList, Xt as resolveAgentAvatar, Y as normalizeCronJobPatch, Yn as clearAgentRunContext, Yr as extractImageContentFromSource, Yt as resolveSessionAuthProfileOverride, Z as normalizeOptionalAgentId, Zn as getAgentRunContext, Zr as resolveInputFileLimits, _ as applyToolPolicyPipeline, _r as getTotalQueueSize, ar as resolveTtsApiKey, at as stripLegacyDeliveryFields, b as createOpenClawTools, bn as dispatchInboundMessage, br as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as resolveTtsPrefsPath, ct as getPluginToolMeta, dr as setTtsProvider, dt as loadOpenClawPlugins, en as buildSafeExternalPrompt, er as resolveUserTimezone, et as normalizePayloadToSystemText, fr as textToSpeech, ft as createPluginRuntime, g as waitForEmbeddedPiRunEnd, gt as loadProviderUsageSummary, h as getActiveEmbeddedRunCount, hr as getActiveTaskCount, i as resolveCronStyleNow, in as unbindThreadBindingsBySessionKey, ir as isTtsProviderConfigured, it as hasLegacyDeliveryHints, j as consumeGatewaySigusr1RestartAuthorization, jn as resolveOutboundChannelPlugin, jr as isSystemEventContextChanged, jt as agentCommandFromIngress, k as resolveSessionModelRef, kn as resolveOutboundTarget, lr as resolveTtsProviderOrder, lt as resolvePluginTools, m as abortEmbeddedPiRun, mr as OPENAI_TTS_VOICES, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, nn as getHookType, nr as getTtsProvider, nt as migrateLegacyCronPayload, or as resolveTtsAutoMode, ot as applyBrowserProxyPaths, p as runEmbeddedPiAgent, pr as OPENAI_TTS_MODELS, q as normalizeHttpWebhookUrl, qn as clearSessionQueues, qr as DEFAULT_INPUT_TIMEOUT_MS, qt as lookupContextTokens, rn as isExternalHookSession, rr as isTtsEnabled, rt as buildDeliveryFromLegacyPayload, sr as resolveTtsConfig, st as persistBrowserProxyFiles, tn as detectSuspiciousPatterns, tr as clearBootstrapSnapshot, tt as normalizeRequiredName, ur as setTtsEnabled, v as buildDefaultToolPolicyPipelineSteps, vr as markGatewayDraining, w as listSessionsFromStore, wt as readJsonBodyWithLimit, x as canonicalizeSpawnedByForAgent, xn as createReplyDispatcher, xr as waitForActiveTasks, xt as resolveAgentOutboundIdentity, yn as formatZonedTimestamp, yr as resetAllLanes, z as triggerOpenClawRestart, zn as stopSubagentsForRequester, zr as ACP_SESSION_IDENTITY_RENDERER_VERSION, zt as createOutboundSendDeps$1 } from "./reply-DQMWsIE2.js";
6
- import { a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, i as resolveAgentConfig, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-DHMu2mab.js";
5
+ import { $ as normalizeOptionalText, $n as registerAgentRunContext, An as resolveSessionDeliveryTarget, Ar as enqueueSystemEvent, B as consumeRestartSentinel, Bn as countActiveDescendantRuns, Br as getAcpSessionManager, Bt as runWithModelFallback, C as listAgentsForGateway, Cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Ct as handleSlackHttpRequest, D as pruneLegacyStoreKeys, Dr as stripHeartbeatToken, Dt as computeBackoff, E as loadSessionEntry, En as resolveOutboundSessionRoute, F as markGatewaySigusr1RestartHandled, Ft as createOutboundSendDeps, Gn as resolveAnnounceTargetFromKey, Gr as DEFAULT_INPUT_IMAGE_MIMES, H as formatRestartSentinelMessage, Hn as listDescendantRunsForRequester, Hr as normalizeSendPolicy, Ht as setCliSessionId, I as scheduleGatewaySigusr1Restart, It as applyVerboseOverride, J as normalizeCronJobCreate, Jn as buildOutboundSessionContext, Jr as extractFileContentFromSource, K as writeRestartSentinel, Kn as readLatestAssistantReply, Kr as DEFAULT_INPUT_MAX_REDIRECTS, Kt as applyModelOverrideToSessionEntry, L as setGatewaySigusr1RestartPolicy, Lt as parseVerboseOverride, M as deferGatewayRestartUntilIdle, N as emitGatewayRestart, Nn as resetDirectoryCache, Nt as resolveAgentDeliveryPlan, O as resolveGatewaySessionStoreTarget, Ot as sleepWithAbort, P as isGatewaySigusr1RestartExternallyAllowed, Pr as requestHeartbeatNow, Pt as resolveAgentOutboundTarget, Q as normalizeOptionalSessionKey, Qn as onAgentEvent, Qr as resolveAgentTimeoutMs, R as setPreRestartDeferralCheck, Rn as isAbortRequestText, Rt as createDefaultDeps, Sn as getTotalPendingReplies, Sr as CommandLane, T as loadCombinedSessionStoreForGateway, Tn as ensureOutboundSessionEntry, Tt as requestBodyErrorToText, Ur as resolveSendPolicy, Ut as runCliAgent, V as formatDoctorNonInteractiveHint, Vn as initSubagentRegistry, Vr as resolveAgentSessionDirs, Vt as getCliSessionId, W as summarizeRestartSentinel, Wn as runSubagentAnnounceFlow, Wr as DEFAULT_INPUT_IMAGE_MAX_BYTES, X as inferLegacyName, Xn as emitAgentEvent, Xr as normalizeMimeList, Xt as resolveAgentAvatar, Y as normalizeCronJobPatch, Yn as clearAgentRunContext, Yr as extractImageContentFromSource, Yt as resolveSessionAuthProfileOverride, Z as normalizeOptionalAgentId, Zn as getAgentRunContext, Zr as resolveInputFileLimits, _ as applyToolPolicyPipeline, _r as getTotalQueueSize, ar as resolveTtsApiKey, at as stripLegacyDeliveryFields, b as createOpenClawTools, bn as dispatchInboundMessage, br as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as resolveTtsPrefsPath, ct as getPluginToolMeta, dr as setTtsProvider, dt as loadOpenClawPlugins, en as buildSafeExternalPrompt, er as resolveUserTimezone, et as normalizePayloadToSystemText, fr as textToSpeech, ft as createPluginRuntime, g as waitForEmbeddedPiRunEnd, gt as loadProviderUsageSummary, h as getActiveEmbeddedRunCount, hr as getActiveTaskCount, i as resolveCronStyleNow, in as unbindThreadBindingsBySessionKey, ir as isTtsProviderConfigured, it as hasLegacyDeliveryHints, j as consumeGatewaySigusr1RestartAuthorization, jn as resolveOutboundChannelPlugin, jr as isSystemEventContextChanged, jt as agentCommandFromIngress, k as resolveSessionModelRef, kn as resolveOutboundTarget, lr as resolveTtsProviderOrder, lt as resolvePluginTools, m as abortEmbeddedPiRun, mr as OPENAI_TTS_VOICES, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, nn as getHookType, nr as getTtsProvider, nt as migrateLegacyCronPayload, or as resolveTtsAutoMode, ot as applyBrowserProxyPaths, p as runEmbeddedPiAgent, pr as OPENAI_TTS_MODELS, q as normalizeHttpWebhookUrl, qn as clearSessionQueues, qr as DEFAULT_INPUT_TIMEOUT_MS, qt as lookupContextTokens, rn as isExternalHookSession, rr as isTtsEnabled, rt as buildDeliveryFromLegacyPayload, sr as resolveTtsConfig, st as persistBrowserProxyFiles, tn as detectSuspiciousPatterns, tr as clearBootstrapSnapshot, tt as normalizeRequiredName, ur as setTtsEnabled, v as buildDefaultToolPolicyPipelineSteps, vr as markGatewayDraining, w as listSessionsFromStore, wt as readJsonBodyWithLimit, x as canonicalizeSpawnedByForAgent, xn as createReplyDispatcher, xr as waitForActiveTasks, xt as resolveAgentOutboundIdentity, yn as formatZonedTimestamp, yr as resetAllLanes, z as triggerOpenClawRestart, zn as stopSubagentsForRequester, zr as ACP_SESSION_IDENTITY_RENDERER_VERSION, zt as createOutboundSendDeps$1 } from "./reply-D8Yu6-Ie.js";
6
+ import { a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, i as resolveAgentConfig, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-CiBV1K6b.js";
7
7
  import { a as setConsoleSubsystemFilter, d as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-BT74-yyS.js";
8
8
  import { S as isCronRunSessionKey, T as parseAgentSessionKey, c as normalizeAgentId, g as normalizeAccountId$1, h as DEFAULT_ACCOUNT_ID, l as normalizeMainKey, m as toAgentStoreSessionKey, o as classifySessionKeyShape, p as toAgentRequestSessionKey, r as buildAgentMainSessionKey, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, w as isSubagentSessionKey } from "./session-key-C9z4VQtw.js";
9
- import { A as isNotFoundPathError, C as openBoundaryFileSync, P as matchesSkillFilter, S as openBoundaryFile, T as sameFileIdentity, a as DEFAULT_IDENTITY_FILENAME, c as DEFAULT_SOUL_FILENAME, d as ensureAgentWorkspace, h as resolveDefaultAgentWorkspaceDir, i as DEFAULT_HEARTBEAT_FILENAME, l as DEFAULT_TOOLS_FILENAME, o as DEFAULT_MEMORY_ALT_FILENAME, p as isWorkspaceOnboardingCompleted, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_MEMORY_FILENAME, t as DEFAULT_AGENTS_FILENAME, u as DEFAULT_USER_FILENAME, v as resolveWorkspaceTemplateDir, w as openVerifiedFileSync, y as resolveOpenClawPackageRoot } from "./workspace-TersEUYu.js";
9
+ import { A as isNotFoundPathError, C as openBoundaryFileSync, P as matchesSkillFilter, S as openBoundaryFile, T as sameFileIdentity, a as DEFAULT_IDENTITY_FILENAME, c as DEFAULT_SOUL_FILENAME, d as ensureAgentWorkspace, h as resolveDefaultAgentWorkspaceDir, i as DEFAULT_HEARTBEAT_FILENAME, l as DEFAULT_TOOLS_FILENAME, o as DEFAULT_MEMORY_ALT_FILENAME, p as isWorkspaceOnboardingCompleted, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_MEMORY_FILENAME, t as DEFAULT_AGENTS_FILENAME, u as DEFAULT_USER_FILENAME, v as resolveWorkspaceTemplateDir, w as openVerifiedFileSync, y as resolveOpenClawPackageRoot } from "./workspace-CRdln__H.js";
10
10
  import { i as logWarn, t as logDebug } from "./logger-D04dg4Ex.js";
11
11
  import { n as runExec, t as runCommandWithTimeout } from "./exec-BdDcFm8M.js";
12
- import { Gt as parseConfigJson5, In as isAvatarHttpUrl, Jt as resolveConfigSnapshotHash, Kr as resolveAgentMaxConcurrent, Kt as readConfigFileSnapshot, Ln as isAvatarImageDataUrl, Mi as DEFAULT_CONTEXT_TOKENS, Mr as applyLegacyMigrations, Ni as DEFAULT_MODEL, Nr as ensureControlUiAllowedOriginsForNonLoopbackBind, Pi as DEFAULT_PROVIDER, Pn as AVATAR_MAX_BYTES, Qt as OpenClawSchema, S as resolveThinkingDefault, Ti as normalizeSecretInput, Ut as createConfigIO, Vn as looksLikeAvatarPath, Vt as migrateLegacyConfig, Wr as buildTalkConfigResponse, Wt as loadConfig, Xt as writeConfigFile, Zt as validateConfigObjectWithPlugins, _ as resolveHooksGmailModel, _n as parseDurationMs, a as getModelRefStatus, ai as upsertAuthProfile, b as resolveSubagentConfiguredModelSelection, bi as isPidAlive, g as resolveDefaultModelForAgent, h as resolveConfiguredModelRef, jr as applyMergePatch, p as resolveAllowedModelRef, qr as resolveSubagentMaxConcurrent, qt as readConfigFileSnapshotForWrite, s as isCliProvider, t as buildAllowedModelSet, tt as resolveApiKeyForProvider, u as normalizeModelSelection, ui as loadAuthProfileStoreForRuntime, vn as parseByteSize, wi as normalizeOptionalSecretInput, xt as resolveApiKeyForProfile } from "./model-selection-DCo8MhsE.js";
12
+ import { Gt as parseConfigJson5, In as isAvatarHttpUrl, Jt as resolveConfigSnapshotHash, Kr as resolveAgentMaxConcurrent, Kt as readConfigFileSnapshot, Ln as isAvatarImageDataUrl, Mi as DEFAULT_CONTEXT_TOKENS, Mr as applyLegacyMigrations, Ni as DEFAULT_MODEL, Nr as ensureControlUiAllowedOriginsForNonLoopbackBind, Pi as DEFAULT_PROVIDER, Pn as AVATAR_MAX_BYTES, Qt as OpenClawSchema, S as resolveThinkingDefault, Ti as normalizeSecretInput, Ut as createConfigIO, Vn as looksLikeAvatarPath, Vt as migrateLegacyConfig, Wr as buildTalkConfigResponse, Wt as loadConfig, Xt as writeConfigFile, Zt as validateConfigObjectWithPlugins, _ as resolveHooksGmailModel, _n as parseDurationMs, a as getModelRefStatus, ai as upsertAuthProfile, b as resolveSubagentConfiguredModelSelection, bi as isPidAlive, g as resolveDefaultModelForAgent, h as resolveConfiguredModelRef, jr as applyMergePatch, p as resolveAllowedModelRef, qr as resolveSubagentMaxConcurrent, qt as readConfigFileSnapshotForWrite, s as isCliProvider, t as buildAllowedModelSet, tt as resolveApiKeyForProvider, u as normalizeModelSelection, ui as loadAuthProfileStoreForRuntime, vn as parseByteSize, wi as normalizeOptionalSecretInput, xt as resolveApiKeyForProfile } from "./model-selection-xdfZxwgB.js";
13
13
  import "./github-copilot-token-CVsUoC9m.js";
14
14
  import { t as formatCliCommand } from "./command-format-DBmYTAza.js";
15
15
  import "./boolean-BgXe2hyu.js";
@@ -17,160 +17,160 @@ import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-4r1Vlroz
17
17
  import "./host-env-security-BiAcoumI.js";
18
18
  import { i as resolveRuntimeServiceVersion, r as VERSION } from "./env-vars-DM119fhK.js";
19
19
  import { C as clearInternalHooks, E as triggerInternalHook, T as registerInternalHook, h as createEmptyPluginRegistry, t as CHANNEL_IDS, u as getActivePluginRegistry, w as createInternalHookEvent } from "./registry-CUyWRciN.js";
20
- import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-HNrtHxxI.js";
21
- import "./dock-swzevZbj.js";
20
+ import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-B_U2pKBU.js";
21
+ import "./dock-BXksV3sC.js";
22
22
  import { _ as normalizeGatewayClientMode, 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-CKAn7Lf7.js";
23
- import "./send-DmVTXBWW.js";
24
- import { u as registerUnhandledRejectionHandler } from "./audio-transcription-runner-Dv-MCA8E.js";
25
- import { x as extractTextFromChatContent } from "./image-BzR2twGI.js";
26
- import "./models-config-Bgpjcu8R.js";
27
- import "./pi-model-discovery-BSytrsu4.js";
28
- import "./pi-embedded-helpers-D3nc5XJW.js";
29
- import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-DH9YtUfB.js";
23
+ import "./send-ByUfPpKj.js";
24
+ import { u as registerUnhandledRejectionHandler } from "./audio-transcription-runner-CF_UP4C7.js";
25
+ import { x as extractTextFromChatContent } from "./image-B270IRGo.js";
26
+ import "./models-config-Do1Ur_ov.js";
27
+ import "./pi-model-discovery-DVhDvAnA.js";
28
+ import "./pi-embedded-helpers-ZTn-T7tW.js";
29
+ import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-BKa5RrBl.js";
30
30
  import { i as listCoreToolSections, n as PROFILE_OPTIONS, o as resolveCoreToolProfiles } from "./tool-catalog-zFhF8IWN.js";
31
- import "./chrome-2gfHr1cU.js";
31
+ import "./chrome-DzGCPEQK.js";
32
32
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-OcOGSzmc.js";
33
33
  import { t as safeEqualSecret } from "./secret-equal-D7A3Bol7.js";
34
- import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C8NwaQEp.js";
35
- import { c as normalizeHostHeader, d as resolveGatewayBindHost, f as resolveGatewayListenHosts, i as isLoopbackHost, l as pickPrimaryLanIPv4, n as isLocalishHost, o as isTrustedProxyAddress, r as isLoopbackAddress, s as isValidIPv4, t as rawDataToString, u as resolveClientIp } from "./ws-E9v842O2.js";
36
- import { a as resolveGatewayAuth, c as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, i as isLocalDirectRequest, l as createAuthRateLimiter, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH, t as assertGatewayAuthConfigured, u as normalizeRateLimitClientIp } from "./auth-B9WdgDjZ.js";
37
- import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-Cr-Y4i6P.js";
34
+ import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-BYBKD8Kh.js";
35
+ import { c as normalizeHostHeader, d as resolveGatewayBindHost, f as resolveGatewayListenHosts, i as isLoopbackHost, l as pickPrimaryLanIPv4, n as isLocalishHost, o as isTrustedProxyAddress, r as isLoopbackAddress, s as isValidIPv4, t as rawDataToString, u as resolveClientIp } from "./ws-DKbBt0us.js";
36
+ import { a as resolveGatewayAuth, c as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, i as isLocalDirectRequest, l as createAuthRateLimiter, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH, t as assertGatewayAuthConfigured, u as normalizeRateLimitClientIp } from "./auth-Co2g3d8d.js";
37
+ import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-DWxmyV-0.js";
38
38
  import { d as hasBinary } from "./frontmatter-f69paAeU.js";
39
- import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-BXLKd7i5.js";
40
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-BNzjbOwM.js";
41
- import "./paths-BZfURxkW.js";
39
+ import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-BeFcXCoN.js";
40
+ import { n as assertNoPathAliasEscape } from "./path-alias-guards-DWh6tSaP.js";
41
+ import "./paths-AxolTUEH.js";
42
42
  import { a as testRegexWithBoundedInput, i as compileSafeRegex } from "./redact-Bf_pxORb.js";
43
43
  import { o as isErrno, r as formatErrorMessage } from "./errors-D5pCqwf4.js";
44
- import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-BGAE6eOQ.js";
45
- import { n as SsrFBlockedError } from "./proxy-env-DhFUQlwP.js";
46
- import { c as detectMime } from "./image-ops-B6BeXmZU.js";
47
- import "./store-CRcBie8T.js";
48
- import { a as inspectPortUsage, l as formatPortDiagnostics, r as ensurePortAvailable } from "./ports-DXMCFRgn.js";
44
+ import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-p5lyYI__.js";
45
+ import { n as SsrFBlockedError } from "./proxy-env-ClbXa7vn.js";
46
+ import { c as detectMime } from "./image-ops-BAMcbVMS.js";
47
+ import "./store-B-nkOSsv.js";
48
+ import { a as inspectPortUsage, l as formatPortDiagnostics, r as ensurePortAvailable } from "./ports-DppAHKM-.js";
49
49
  import { t as movePathToTrash } from "./trash-Cq4N8bvb.js";
50
- import "./server-middleware-zyvA9rl9.js";
51
- import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-C7p5SEie.js";
52
- import { $ as resolveMainSessionKey, A as readSessionPreviewItemsFromTranscript, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as resolveExplicitAgentSessionKey, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as resolveSessionResetPolicy, V as evaluateSessionFreshness, X as canonicalizeMainSessionAlias, Y as setSessionRuntimeModel, Z as resolveAgentMainSessionKey, ct as cleanStaleLockFiles, d as updateSessionStore, et as resolveMainSessionKeyFromConfig, k as readSessionMessages, n as parseSessionThreadInfo, nt as snapshotSessionOrigin, o as loadSessionStore, q as mergeSessionEntry, t as extractDeliveryInfo, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-sIaYsUyX.js";
53
- import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-Ce8ThYGQ.js";
54
- import { i as resolveWhatsAppAccount } from "./accounts-CCbfXe4Y.js";
55
- import "./accounts-C3iwoWUS.js";
50
+ import "./server-middleware-CO1brrgv.js";
51
+ import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-bJqSYqgg.js";
52
+ import { $ as resolveMainSessionKey, A as readSessionPreviewItemsFromTranscript, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as resolveExplicitAgentSessionKey, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as resolveSessionResetPolicy, V as evaluateSessionFreshness, X as canonicalizeMainSessionAlias, Y as setSessionRuntimeModel, Z as resolveAgentMainSessionKey, ct as cleanStaleLockFiles, d as updateSessionStore, et as resolveMainSessionKeyFromConfig, k as readSessionMessages, n as parseSessionThreadInfo, nt as snapshotSessionOrigin, o as loadSessionStore, q as mergeSessionEntry, t as extractDeliveryInfo, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-BpuJ64B0.js";
53
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-CKWxMohB.js";
54
+ import { i as resolveWhatsAppAccount } from "./accounts-D5DQlttG.js";
55
+ import "./accounts-DKvlV3Tm.js";
56
56
  import "./logging-Dn5qdhsZ.js";
57
- import "./accounts-ChjgDDok.js";
58
- import { t as buildChannelAccountBindings } from "./bindings-C0k4wFy7.js";
59
- import "./send-BQVNhO4Q.js";
57
+ import "./accounts-jPPbCJns.js";
58
+ import { t as buildChannelAccountBindings } from "./bindings-Ck6aotGf.js";
59
+ import "./send-DuNBSJln.js";
60
60
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-BJLbJUqV.js";
61
61
  import { i as normalizeInputProvenance } from "./input-provenance-CrQfrobW.js";
62
62
  import "./chat-envelope-D2ZROPtK.js";
63
- import "./tool-images-CgSADinH.js";
63
+ import "./tool-images-QWbHWc0F.js";
64
64
  import "./tool-display-BnVcCWLz.js";
65
- import { t as fetchWithSsrFGuard } from "./fetch-guard-N12H9lEe.js";
66
- import "./api-key-rotation-CuHjsofV.js";
67
- import "./local-roots-Dcc5UeD8.js";
68
- import { n as loadModelCatalog } from "./model-catalog-DUHxH2xb.js";
65
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-D6eclxeP.js";
66
+ import "./api-key-rotation-j4O7qxMf.js";
67
+ import "./local-roots-jW0nhxVT.js";
68
+ import { n as loadModelCatalog } from "./model-catalog-CjA5pRJF.js";
69
69
  import "./proxy-fetch-7LT9tml2.js";
70
70
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BK5VYCE_.js";
71
- import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-D4ugOkLr.js";
72
- import { r as isRestartEnabled } from "./commands-npgZubp3.js";
73
- import "./commands-registry-B5jHbfUL.js";
74
- import { $ as validateNodePairApproveParams, $t as roleScopesAllow, A as validateCronStatusParams, At as validateWizardStartParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateToolsCatalogParams, D as validateCronRemoveParams, Dt as validateWebLoginWaitParams, E as validateCronListParams, Et as validateWebLoginStartParams, F as validateDevicePairRemoveParams, G as validateModelsAuthSetParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, Ht as ensureDeviceToken, I as validateDeviceTokenRevokeParams, It as parseSessionLabel, J as validateNodeDescribeParams, Jt as revokeDeviceToken, K as validateModelsListParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as buildDeviceAuthPayload, M as validateDevicePairApproveParams, Mt as PROTOCOL_VERSION, N as validateDevicePairListParams, Nt as ErrorCodes, O as validateCronRunParams, Ot as validateWizardCancelParams, P as validateDevicePairRejectParams, Pt as errorShape, Q as validateNodeListParams, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Rt as buildDeviceAuthPayloadV3, S as validateConfigSchemaParams, St as validateTalkModeParams, T as validateCronAddParams, Tt as validateWakeParams, U as validateExecApprovalsSetParams, Ut as getPairedDevice, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeInvokeParams, Xt as summarizeDeviceTokens, Y as validateNodeEventParams, Yt as rotateDeviceToken, Z as validateNodeInvokeResultParams, Zt as updatePairedDeviceMetadata, _ as validateChatInjectParams, _t as validateSkillsBinsParams, a as validateAgentWaitParams, at as validatePollParams, b as validateConfigGetParams, bt as validateSkillsUpdateParams, c as validateAgentsFilesGetParams, ct as validateSendParams, d as validateAgentsListParams, dt as validateSessionsListParams, et as validateNodePairListParams, f as validateAgentsUpdateParams, ft as validateSessionsPatchParams, g as validateChatHistoryParams, gt as validateSessionsUsageParams, h as validateChatAbortParams, ht as validateSessionsResolveParams, i as validateAgentParams, in as verifyDeviceSignature, it as validateNodeRenameParams, j as validateCronUpdateParams, jt as validateWizardStatusParams, k as validateCronRunsParams, kt as validateWizardNextParams, l as validateAgentsFilesListParams, lt as validateSessionsCompactParams, m as validateChannelsStatusParams, mt as validateSessionsResetParams, n as formatValidationErrors, nt as validateNodePairRequestParams, o as validateAgentsCreateParams, ot as validatePushTestParams, p as validateChannelsLogoutParams, pt as validateSessionsPreviewParams, q as validateModelsVerifyParams, qt as requestDevicePairing, r as validateAgentIdentityParams, rn as normalizeDevicePublicKeyBase64Url, rt as validateNodePairVerifyParams, s as validateAgentsDeleteParams, st as validateRequestFrame, tn as deriveDeviceIdFromPublicKey, tt as validateNodePairRejectParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSkillsInstallParams, w as validateConnectParams, wt as validateUpdateRunParams, x as validateConfigPatchParams, xt as validateTalkConfigParams, y as validateConfigApplyParams, yt as validateSkillsStatusParams, z as validateExecApprovalResolveParams, zt as normalizeDeviceMetadataForAuth } from "./client-BoUhzGrS.js";
75
- import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-B9Vrcbed.js";
71
+ import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-Bn10XzRP.js";
72
+ import { r as isRestartEnabled } from "./commands-C6OLhl3n.js";
73
+ import "./commands-registry-CVzTBX51.js";
74
+ import { $ as validateNodePairApproveParams, $t as roleScopesAllow, A as validateCronStatusParams, At as validateWizardStartParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateToolsCatalogParams, D as validateCronRemoveParams, Dt as validateWebLoginWaitParams, E as validateCronListParams, Et as validateWebLoginStartParams, F as validateDevicePairRemoveParams, G as validateModelsAuthSetParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, Ht as ensureDeviceToken, I as validateDeviceTokenRevokeParams, It as parseSessionLabel, J as validateNodeDescribeParams, Jt as revokeDeviceToken, K as validateModelsListParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as buildDeviceAuthPayload, M as validateDevicePairApproveParams, Mt as PROTOCOL_VERSION, N as validateDevicePairListParams, Nt as ErrorCodes, O as validateCronRunParams, Ot as validateWizardCancelParams, P as validateDevicePairRejectParams, Pt as errorShape, Q as validateNodeListParams, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Rt as buildDeviceAuthPayloadV3, S as validateConfigSchemaParams, St as validateTalkModeParams, T as validateCronAddParams, Tt as validateWakeParams, U as validateExecApprovalsSetParams, Ut as getPairedDevice, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeInvokeParams, Xt as summarizeDeviceTokens, Y as validateNodeEventParams, Yt as rotateDeviceToken, Z as validateNodeInvokeResultParams, Zt as updatePairedDeviceMetadata, _ as validateChatInjectParams, _t as validateSkillsBinsParams, a as validateAgentWaitParams, at as validatePollParams, b as validateConfigGetParams, bt as validateSkillsUpdateParams, c as validateAgentsFilesGetParams, ct as validateSendParams, d as validateAgentsListParams, dt as validateSessionsListParams, et as validateNodePairListParams, f as validateAgentsUpdateParams, ft as validateSessionsPatchParams, g as validateChatHistoryParams, gt as validateSessionsUsageParams, h as validateChatAbortParams, ht as validateSessionsResolveParams, i as validateAgentParams, in as verifyDeviceSignature, it as validateNodeRenameParams, j as validateCronUpdateParams, jt as validateWizardStatusParams, k as validateCronRunsParams, kt as validateWizardNextParams, l as validateAgentsFilesListParams, lt as validateSessionsCompactParams, m as validateChannelsStatusParams, mt as validateSessionsResetParams, n as formatValidationErrors, nt as validateNodePairRequestParams, o as validateAgentsCreateParams, ot as validatePushTestParams, p as validateChannelsLogoutParams, pt as validateSessionsPreviewParams, q as validateModelsVerifyParams, qt as requestDevicePairing, r as validateAgentIdentityParams, rn as normalizeDevicePublicKeyBase64Url, rt as validateNodePairVerifyParams, s as validateAgentsDeleteParams, st as validateRequestFrame, tn as deriveDeviceIdFromPublicKey, tt as validateNodePairRejectParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSkillsInstallParams, w as validateConnectParams, wt as validateUpdateRunParams, x as validateConfigPatchParams, xt as validateTalkConfigParams, y as validateConfigApplyParams, yt as validateSkillsStatusParams, z as validateExecApprovalResolveParams, zt as normalizeDeviceMetadataForAuth } from "./client-B91adiXh.js";
75
+ import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-BGZQEHL4.js";
76
76
  import "./pairing-token-QppPqMJU.js";
77
77
  import "./fetch-Ca92M4MR.js";
78
78
  import "./retry-AsJdJVsE.js";
79
- import { a as readChannelAllowFromStoreSync } from "./pairing-store-DY0yrkuM.js";
79
+ import { a as readChannelAllowFromStoreSync } from "./pairing-store-DdZ0xMD7.js";
80
80
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-C23wqMXV.js";
81
- import "./exec-approvals-allowlist-fG-NsL-O.js";
82
- import "./exec-safe-bin-runtime-policy-B9kCrTY1.js";
83
- import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-FWjD2j3v.js";
84
- import { a as ToolInputError } from "./target-errors-cerGxvCB.js";
85
- import { n as resolveSystemRunCommand } from "./system-run-command-Cn5yQ2rv.js";
81
+ import "./exec-approvals-allowlist-CGVHz3PX.js";
82
+ import "./exec-safe-bin-runtime-policy-D7olAQMf.js";
83
+ import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-Dptoharj.js";
84
+ import { a as ToolInputError } from "./target-errors-B1cYmIjq.js";
85
+ import { n as resolveSystemRunCommand } from "./system-run-command-C3OIMtEu.js";
86
86
  import "./diagnostic-session-state-DtDi2x-e.js";
87
- import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-C-EETHnf.js";
88
- import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-phUWJbF_.js";
89
- import { d as loadCronStore, f as resolveCronStorePath, p as saveCronStore } from "./send-CFUSH9C-.js";
90
- import "./model-CESXYutI.js";
91
- import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-aBvAQX6L.js";
87
+ import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-tSH4Tex_.js";
88
+ import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-DRPetA8l.js";
89
+ import { d as loadCronStore, f as resolveCronStorePath, p as saveCronStore } from "./send-SZBhACLn.js";
90
+ import "./model-FnrgCVyS.js";
91
+ import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-BttpF8VB.js";
92
92
  import "./chunk-mV8H66i-.js";
93
- import "./markdown-tables-XmfG1bwr.js";
94
- import "./ir-vGBxQkIg.js";
93
+ import "./markdown-tables-B5l_33qL.js";
94
+ import "./ir-BGgl4f9u.js";
95
95
  import "./render-C9RrMnL2.js";
96
- import { n as resolveMessageChannelSelection } from "./channel-selection-BDdjozhi.js";
96
+ import { n as resolveMessageChannelSelection } from "./channel-selection-TZJgoz5h.js";
97
97
  import { n as normalizePollInput } from "./polls-3Iuh9z3d.js";
98
- import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-4zXn-eVS.js";
99
- import "./send-CabiU1-J.js";
100
- import "./outbound-attachment-Df5o7JIG.js";
98
+ import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-D1WySsnE.js";
99
+ import "./send-Cua2kS5v.js";
100
+ import "./outbound-attachment-CZh4VjhT.js";
101
101
  import "./delivery-queue-EvfYzqtX.js";
102
- import "./send-NexNe2Wh.js";
103
- import "./resolve-route-R565qQgt.js";
104
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-Dwsq-Yaf.js";
102
+ import "./send-BntubUtK.js";
103
+ import "./resolve-route-Ck23oGqS.js";
104
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-eyXj0EY5.js";
105
105
  import { t as getChannelActivity } from "./channel-activity-C--BGtPd.js";
106
- import "./tables-C5n2nXbu.js";
106
+ import "./tables-C9_oCtRN.js";
107
107
  import "./proxy-D8dYXgWo.js";
108
- import "./replies-k5K96_46.js";
109
- import { S as registerSkillsChangeListener, _ as requestNodePairing, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, g as renamePairedNode, h as rejectNodePairing, l as refreshRemoteBinsForConnectedNodes, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion, y as verifyNodeToken } from "./skill-commands-C2_BOuyl.js";
110
- import { t as listAgentWorkspaceDirs } from "./workspace-dirs-DxTFH1r3.js";
108
+ import "./replies-B6SXcEs0.js";
109
+ import { S as registerSkillsChangeListener, _ as requestNodePairing, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, g as renamePairedNode, h as rejectNodePairing, l as refreshRemoteBinsForConnectedNodes, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion, y as verifyNodeToken } from "./skill-commands-COl0HE54.js";
110
+ import { t as listAgentWorkspaceDirs } from "./workspace-dirs-DcAUEsSG.js";
111
111
  import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-DbjE1AVb.js";
112
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-Jc1-4LBc.js";
112
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-B1AEo6oL.js";
113
113
  import "./prompt-style-sTNfJFX8.js";
114
- import "./pairing-labels-BBti3jJg.js";
114
+ import "./pairing-labels-Cl7ROILg.js";
115
115
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-BxjB8vcE.js";
116
- import "./session-meta-C6MooccR.js";
117
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-87nxADqy.js";
118
- import { r as resolveMemorySearchConfig } from "./manager-X8AF3rQJ.js";
119
- import "./query-expansion-B9kneDbd.js";
116
+ import "./session-meta-C-ox3bdI.js";
117
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-o3L9NN74.js";
118
+ import { r as resolveMemorySearchConfig } from "./manager-C9rftBaE.js";
119
+ import "./query-expansion-Dl85zpSb.js";
120
120
  import { t as formatDocsLink } from "./links-CM7pO4C5.js";
121
121
  import { n as runCommandWithRuntime } from "./cli-utils-BKqG4ZT-.js";
122
122
  import { t as formatHelpExamples } from "./help-format-DUJs-8Xi.js";
123
123
  import { n as withProgress } from "./progress-86COuAnG.js";
124
- import "./server-lifecycle-BVnXIEfI.js";
124
+ import "./server-lifecycle-B7aXKxY3.js";
125
125
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-C-R8Eo-4.js";
126
126
  import "./constants-BJiQF5Ae.js";
127
127
  import "./context-window-guard-BNuaId5E.js";
128
128
  import { i as onHeartbeatEvent, r as getLastHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-BdDIMad6.js";
129
129
  import { t as ensureOpenClawCliOnPath } from "./path-env-DzEqwLCq.js";
130
130
  import "./runtime-guard-p6l4jDOj.js";
131
- import { t as forceFreePortAndWait } from "./ports-wtEwdqsX.js";
132
- import { t as buildWorkspaceSkillStatus } from "./skills-status-C7Q6Ezbv.js";
131
+ import { t as forceFreePortAndWait } from "./ports-BL-FP2jP.js";
132
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-BEq0_fOn.js";
133
133
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-DHq9RLRQ.js";
134
134
  import { n as inheritOptionFromParent } from "./command-options-D4YE45pL.js";
135
135
  import { t as WizardCancelledError } from "./prompts-iXdBMk3j.js";
136
136
  import { t as resolveChannelDefaultAccountId } from "./helpers-D0Q6sarx.js";
137
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BoNoGEQI.js";
138
- import { t as isWithinDir } from "./path-safety-dmCI2tpN.js";
139
- import { t as assertCanonicalPathWithinBase } from "./install-safe-path-DodF6oyk.js";
140
- import "./skill-scanner-DYkQAh0l.js";
141
- import { n as formatConfigIssueLines } from "./issue-format-B4oxePhU.js";
137
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DQBEXhzA.js";
138
+ import { t as isWithinDir } from "./path-safety-COhgvniC.js";
139
+ import { t as assertCanonicalPathWithinBase } from "./install-safe-path-CSqVUjL8.js";
140
+ import "./skill-scanner-CsmM5F4F.js";
141
+ import { n as formatConfigIssueLines } from "./issue-format-rk9Vpcxd.js";
142
142
  import { t as buildChannelAccountSnapshot } from "./status-yrDGXYZM.js";
143
- import "./channels-status-issues-Dir7g-Pc.js";
144
- import { a as buildBaseHints, i as applySensitiveHints, n as redactConfigSnapshot, o as mapSensitivePaths, r as restoreRedactedValues, s as applyDerivedTags, t as redactConfigObject } from "./redact-snapshot-BI4Ryuhy.js";
145
- import "./daemon-install-helpers-CGZBs-X3.js";
146
- import "./systemd-BIfjzi-4.js";
147
- import "./service-BcFhE63y.js";
148
- import "./lifecycle-core-C5a4clqu.js";
149
- import "./systemd-hints-CgtHwBfD.js";
143
+ import "./channels-status-issues-DeT1Znlx.js";
144
+ import { a as buildBaseHints, i as applySensitiveHints, n as redactConfigSnapshot, o as mapSensitivePaths, r as restoreRedactedValues, s as applyDerivedTags, t as redactConfigObject } from "./redact-snapshot-DCGL0k2M.js";
145
+ import "./daemon-install-helpers-CMWYg4_W.js";
146
+ import "./systemd-DJ5Red-Q.js";
147
+ import "./service-DqxfCr8y.js";
148
+ import "./lifecycle-core-Bqse41aA.js";
149
+ import "./systemd-hints-D40Qx3hg.js";
150
150
  import { t as parsePort$1 } from "./parse-port-DEJJlpU0.js";
151
- import { n as addGatewayServiceCommands } from "./daemon-cli-CB9c5SXP.js";
152
- import "./diagnostics-D_AmByNE.js";
151
+ import { n as addGatewayServiceCommands } from "./daemon-cli-RKWFtF-K.js";
152
+ import "./diagnostics-BHQgZbuI.js";
153
153
  import "./table-DZBPnHSy.js";
154
154
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-D1fyqK-r.js";
155
- import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-sFrejcA4.js";
156
- import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-BAGbgihO.js";
157
- import { t as discoverGatewayBeacons } from "./bonjour-discovery-DXvZeG8M.js";
158
- import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-rMgdZcE5.js";
159
- import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-DlFSsTw-.js";
160
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DpInddpx.js";
161
- import { o as isBitseekBuild } from "./status.update-D4GfnNDI.js";
162
- import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-CeGx9Aq7.js";
163
- import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-D64ACWoX.js";
164
- import { t as runOnboardingWizard } from "./onboarding-BQ2WB7tp.js";
165
- import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-SIM2es-Y.js";
155
+ import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BmSv3K8N.js";
156
+ import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-1YVlVmk7.js";
157
+ import { t as discoverGatewayBeacons } from "./bonjour-discovery-CtUQb94i.js";
158
+ import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-CQYA6EJN.js";
159
+ import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-Du8dO3vn.js";
160
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B_3g_YF0.js";
161
+ import { o as isBitseekBuild } from "./status.update-HwSPC5ZX.js";
162
+ import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-C6rIxLzo.js";
163
+ import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-Rd7ooKB0.js";
164
+ import { t as runOnboardingWizard } from "./onboarding-DQNTd5J7.js";
165
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-DvNRo3EQ.js";
166
166
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-mNwdQcKy.js";
167
- import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-BiPTB8BK.js";
168
- import "./node-service-CfKJ5oC1.js";
169
- import "./shared-DNcLp2mA.js";
170
- import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-SWx67Er2.js";
171
- import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-CSfh8nRm.js";
172
- import { t as runGatewayUpdate } from "./update-runner-Dj_CAfd4.js";
173
- import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-1nc7aTpg.js";
167
+ import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-BKUs_pS2.js";
168
+ import "./node-service-6W3vqgVv.js";
169
+ import "./shared-CgFPGTLU.js";
170
+ import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-CBRRhb95.js";
171
+ import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-B_Vda3dM.js";
172
+ import { t as runGatewayUpdate } from "./update-runner-DO6RodZW.js";
173
+ import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-dKMB109Q.js";
174
174
  import { fileURLToPath, pathToFileURL } from "node:url";
175
175
  import * as fsSync from "node:fs";
176
176
  import fs from "node:fs";
@@ -178,7 +178,7 @@ import os from "node:os";
178
178
  import path from "node:path";
179
179
  import chalk from "chalk";
180
180
  import { isDeepStrictEqual } from "node:util";
181
- import fsPromises from "node:fs/promises";
181
+ import fs$1 from "node:fs/promises";
182
182
  import { spawn, spawnSync } from "node:child_process";
183
183
  import crypto, { createHash, randomBytes, randomUUID } from "node:crypto";
184
184
  import { z } from "zod";
@@ -1249,7 +1249,7 @@ function resolveCheckIntervalMs(cfg) {
1249
1249
  }
1250
1250
  async function readState(statePath) {
1251
1251
  try {
1252
- const raw = await fsPromises.readFile(statePath, "utf-8");
1252
+ const raw = await fs$1.readFile(statePath, "utf-8");
1253
1253
  const parsed = JSON.parse(raw);
1254
1254
  return parsed && typeof parsed === "object" ? parsed : {};
1255
1255
  } catch {
@@ -1330,7 +1330,7 @@ async function runAutoUpdateCommand(params) {
1330
1330
  path.join(params.root, "dist", "index.mjs")
1331
1331
  ];
1332
1332
  for (const candidate of candidates) try {
1333
- await fsPromises.access(candidate);
1333
+ await fs$1.access(candidate);
1334
1334
  argv.push(execPath, candidate, ...baseArgs);
1335
1335
  break;
1336
1336
  } catch {}
@@ -4405,20 +4405,20 @@ async function drainPendingWrite(filePath) {
4405
4405
  if (pending) await pending.catch(() => void 0);
4406
4406
  }
4407
4407
  async function pruneIfNeeded(filePath, opts) {
4408
- const stat = await fsPromises.stat(filePath).catch(() => null);
4408
+ const stat = await fs$1.stat(filePath).catch(() => null);
4409
4409
  if (!stat || stat.size <= opts.maxBytes) return;
4410
- const lines = (await fsPromises.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
4410
+ const lines = (await fs$1.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
4411
4411
  const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
4412
4412
  const { randomBytes } = await import("node:crypto");
4413
4413
  const tmp = `${filePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
4414
- await fsPromises.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
4415
- await fsPromises.rename(tmp, filePath);
4414
+ await fs$1.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
4415
+ await fs$1.rename(tmp, filePath);
4416
4416
  }
4417
4417
  async function appendCronRunLog(filePath, entry, opts) {
4418
4418
  const resolved = path.resolve(filePath);
4419
4419
  const next = (writesByPath.get(resolved) ?? Promise.resolve()).catch(() => void 0).then(async () => {
4420
- await fsPromises.mkdir(path.dirname(resolved), { recursive: true });
4421
- await fsPromises.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
4420
+ await fs$1.mkdir(path.dirname(resolved), { recursive: true });
4421
+ await fs$1.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
4422
4422
  await pruneIfNeeded(resolved, {
4423
4423
  maxBytes: opts?.maxBytes ?? DEFAULT_CRON_RUN_LOG_MAX_BYTES,
4424
4424
  keepLines: opts?.keepLines ?? DEFAULT_CRON_RUN_LOG_KEEP_LINES
@@ -4512,7 +4512,7 @@ function filterRunLogEntries(entries, opts) {
4512
4512
  async function readCronRunLogEntriesPage(filePath, opts) {
4513
4513
  await drainPendingWrite(filePath);
4514
4514
  const limit = Math.max(1, Math.min(200, Math.floor(opts?.limit ?? 50)));
4515
- const raw = await fsPromises.readFile(path.resolve(filePath), "utf-8").catch(() => "");
4515
+ const raw = await fs$1.readFile(path.resolve(filePath), "utf-8").catch(() => "");
4516
4516
  const statuses = normalizeRunStatuses(opts);
4517
4517
  const deliveryStatuses = normalizeDeliveryStatuses(opts);
4518
4518
  const query = opts?.query?.trim().toLowerCase() ?? "";
@@ -4548,7 +4548,7 @@ async function readCronRunLogEntriesPageAll(opts) {
4548
4548
  const query = opts.query?.trim().toLowerCase() ?? "";
4549
4549
  const sortDir = opts.sortDir === "asc" ? "asc" : "desc";
4550
4550
  const runsDir = path.resolve(path.dirname(path.resolve(opts.storePath)), "runs");
4551
- const jsonlFiles = (await fsPromises.readdir(runsDir, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path.join(runsDir, entry.name));
4551
+ const jsonlFiles = (await fs$1.readdir(runsDir, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path.join(runsDir, entry.name));
4552
4552
  if (jsonlFiles.length === 0) return {
4553
4553
  entries: [],
4554
4554
  total: 0,
@@ -4559,7 +4559,7 @@ async function readCronRunLogEntriesPageAll(opts) {
4559
4559
  };
4560
4560
  await Promise.all(jsonlFiles.map((f) => drainPendingWrite(f)));
4561
4561
  const filtered = filterRunLogEntries((await Promise.all(jsonlFiles.map(async (filePath) => {
4562
- return parseAllRunLogEntries(await fsPromises.readFile(filePath, "utf-8").catch(() => ""));
4562
+ return parseAllRunLogEntries(await fs$1.readFile(filePath, "utf-8").catch(() => ""));
4563
4563
  }))).flat(), {
4564
4564
  statuses,
4565
4565
  deliveryStatuses,
@@ -9767,7 +9767,7 @@ function resolveAgentWorkspaceFileOrRespondError(params, respond) {
9767
9767
  }
9768
9768
  async function resolveWorkspaceRealPath(workspaceDir) {
9769
9769
  try {
9770
- return await fsPromises.realpath(workspaceDir);
9770
+ return await fs$1.realpath(workspaceDir);
9771
9771
  } catch {
9772
9772
  return path.resolve(workspaceDir);
9773
9773
  }
@@ -9791,7 +9791,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9791
9791
  }
9792
9792
  let candidateLstat;
9793
9793
  try {
9794
- candidateLstat = await fsPromises.lstat(candidatePath);
9794
+ candidateLstat = await fs$1.lstat(candidatePath);
9795
9795
  } catch (err) {
9796
9796
  if (isNotFoundPathError(err)) {
9797
9797
  if (params.allowMissing) return {
@@ -9811,7 +9811,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9811
9811
  if (candidateLstat.isSymbolicLink()) {
9812
9812
  let targetReal;
9813
9813
  try {
9814
- targetReal = await fsPromises.realpath(candidatePath);
9814
+ targetReal = await fs$1.realpath(candidatePath);
9815
9815
  } catch (err) {
9816
9816
  if (isNotFoundPathError(err)) {
9817
9817
  if (params.allowMissing) return {
@@ -9830,7 +9830,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9830
9830
  }
9831
9831
  let targetStat;
9832
9832
  try {
9833
- targetStat = await fsPromises.stat(targetReal);
9833
+ targetStat = await fs$1.stat(targetReal);
9834
9834
  } catch (err) {
9835
9835
  if (isNotFoundPathError(err)) {
9836
9836
  if (params.allowMissing) return {
@@ -9877,13 +9877,13 @@ async function resolveAgentWorkspaceFilePath(params) {
9877
9877
  return {
9878
9878
  kind: "ready",
9879
9879
  requestPath,
9880
- ioPath: await fsPromises.realpath(candidatePath).catch(() => candidatePath),
9880
+ ioPath: await fs$1.realpath(candidatePath).catch(() => candidatePath),
9881
9881
  workspaceReal
9882
9882
  };
9883
9883
  }
9884
9884
  async function statFileSafely(filePath) {
9885
9885
  try {
9886
- const [stat, lstat] = await Promise.all([fsPromises.stat(filePath), fsPromises.lstat(filePath)]);
9886
+ const [stat, lstat] = await Promise.all([fs$1.stat(filePath), fs$1.lstat(filePath)]);
9887
9887
  if (lstat.isSymbolicLink() || !stat.isFile()) return null;
9888
9888
  if (stat.nlink > 1) return null;
9889
9889
  if (!sameFileIdentity(stat, lstat)) return null;
@@ -9968,7 +9968,7 @@ function resolveOptionalStringParam(value) {
9968
9968
  async function moveToTrashBestEffort(pathname) {
9969
9969
  if (!pathname) return;
9970
9970
  try {
9971
- await fsPromises.access(pathname);
9971
+ await fs$1.access(pathname);
9972
9972
  } catch {
9973
9973
  return;
9974
9974
  }
@@ -10044,7 +10044,7 @@ const agentsHandlers = {
10044
10044
  dir: workspaceDir,
10045
10045
  ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
10046
10046
  });
10047
- await fsPromises.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10047
+ await fs$1.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10048
10048
  await writeConfigFile(nextConfig);
10049
10049
  const safeName = sanitizeIdentityLine(rawName);
10050
10050
  const emoji = resolveOptionalStringParam(params.emoji);
@@ -10057,7 +10057,7 @@ const agentsHandlers = {
10057
10057
  ...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
10058
10058
  ""
10059
10059
  ];
10060
- await fsPromises.appendFile(identityPath, lines.join("\n"), "utf-8");
10060
+ await fs$1.appendFile(identityPath, lines.join("\n"), "utf-8");
10061
10061
  respond(true, {
10062
10062
  ok: true,
10063
10063
  agentId,
@@ -10092,9 +10092,9 @@ const agentsHandlers = {
10092
10092
  });
10093
10093
  if (avatar) {
10094
10094
  const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
10095
- await fsPromises.mkdir(workspace, { recursive: true });
10095
+ await fs$1.mkdir(workspace, { recursive: true });
10096
10096
  const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
10097
- await fsPromises.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10097
+ await fs$1.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10098
10098
  }
10099
10099
  respond(true, {
10100
10100
  ok: true,
@@ -10218,7 +10218,7 @@ const agentsHandlers = {
10218
10218
  const resolved = resolveAgentWorkspaceFileOrRespondError(params, respond);
10219
10219
  if (!resolved) return;
10220
10220
  const { agentId, workspaceDir, name } = resolved;
10221
- await fsPromises.mkdir(workspaceDir, { recursive: true });
10221
+ await fs$1.mkdir(workspaceDir, { recursive: true });
10222
10222
  const filePath = path.join(workspaceDir, name);
10223
10223
  const resolvedPath = await resolveWorkspaceFilePathOrRespond({
10224
10224
  respond,
@@ -12511,14 +12511,14 @@ function isRollingLogFile(file) {
12511
12511
  return ROLLING_LOG_RE.test(path.basename(file));
12512
12512
  }
12513
12513
  async function resolveLogFile(file) {
12514
- if (await fsPromises.stat(file).catch(() => null)) return file;
12514
+ if (await fs$1.stat(file).catch(() => null)) return file;
12515
12515
  if (!isRollingLogFile(file)) return file;
12516
12516
  const dir = path.dirname(file);
12517
- const entries = await fsPromises.readdir(dir, { withFileTypes: true }).catch(() => null);
12517
+ const entries = await fs$1.readdir(dir, { withFileTypes: true }).catch(() => null);
12518
12518
  if (!entries) return file;
12519
12519
  return (await Promise.all(entries.filter((entry) => entry.isFile() && ROLLING_LOG_RE.test(entry.name)).map(async (entry) => {
12520
12520
  const fullPath = path.join(dir, entry.name);
12521
- const fileStat = await fsPromises.stat(fullPath).catch(() => null);
12521
+ const fileStat = await fs$1.stat(fullPath).catch(() => null);
12522
12522
  return fileStat ? {
12523
12523
  path: fullPath,
12524
12524
  mtimeMs: fileStat.mtimeMs
@@ -12526,7 +12526,7 @@ async function resolveLogFile(file) {
12526
12526
  }))).filter((entry) => Boolean(entry)).toSorted((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path ?? file;
12527
12527
  }
12528
12528
  async function readLogSlice(params) {
12529
- const stat = await fsPromises.stat(params.file).catch(() => null);
12529
+ const stat = await fs$1.stat(params.file).catch(() => null);
12530
12530
  if (!stat) return {
12531
12531
  cursor: 0,
12532
12532
  size: 0,
@@ -12564,7 +12564,7 @@ async function readLogSlice(params) {
12564
12564
  truncated,
12565
12565
  reset
12566
12566
  };
12567
- const handle = await fsPromises.open(params.file, "r");
12567
+ const handle = await fs$1.open(params.file, "r");
12568
12568
  try {
12569
12569
  let prefix = "";
12570
12570
  if (start > 0) {
@@ -13611,7 +13611,7 @@ const nodeHandlers = {
13611
13611
  const p = params;
13612
13612
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
13613
13613
  await respondUnavailableOnThrow(respond, async () => {
13614
- const { handleNodeEvent } = await import("./server-node-events-oa4mOmsp.js");
13614
+ const { handleNodeEvent } = await import("./server-node-events-nakjzVDn.js");
13615
13615
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
13616
13616
  await handleNodeEvent({
13617
13617
  deps: context.deps,
@@ -14337,11 +14337,11 @@ async function installLocalMarketSkill(params) {
14337
14337
  candidatePath: sourceDir,
14338
14338
  boundaryLabel: "market templates directory"
14339
14339
  });
14340
- if (!(await fsPromises.stat(sourceDir)).isDirectory()) return {
14340
+ if (!(await fs$1.stat(sourceDir)).isDirectory()) return {
14341
14341
  ok: false,
14342
14342
  message: `Local template "${templateDir}" is not a directory.`
14343
14343
  };
14344
- if (!(await fsPromises.stat(sourceSkillPath)).isFile()) return {
14344
+ if (!(await fs$1.stat(sourceSkillPath)).isFile()) return {
14345
14345
  ok: false,
14346
14346
  message: `Local template "${templateDir}" is missing SKILL.md.`
14347
14347
  };
@@ -14355,13 +14355,13 @@ async function installLocalMarketSkill(params) {
14355
14355
  const workspaceSkillsDir = path.join(workspaceDir, "skills");
14356
14356
  const targetDir = path.join(workspaceSkillsDir, templateDir);
14357
14357
  try {
14358
- await fsPromises.mkdir(workspaceSkillsDir, { recursive: true });
14358
+ await fs$1.mkdir(workspaceSkillsDir, { recursive: true });
14359
14359
  await assertCanonicalPathWithinBase({
14360
14360
  baseDir: workspaceSkillsDir,
14361
14361
  candidatePath: targetDir,
14362
14362
  boundaryLabel: "workspace skills directory"
14363
14363
  });
14364
- await fsPromises.cp(sourceDir, targetDir, {
14364
+ await fs$1.cp(sourceDir, targetDir, {
14365
14365
  recursive: true,
14366
14366
  force: true
14367
14367
  });
@@ -14471,6 +14471,16 @@ async function installClawhubMarketSkill(params, deps) {
14471
14471
 
14472
14472
  //#endregion
14473
14473
  //#region src/gateway/server-methods/skills.ts
14474
+ function matchesInstalledMarketSkill(entry, candidate) {
14475
+ const entrySkillKey = entry.skillKey.trim();
14476
+ const entrySlug = entry.slug?.trim() || "";
14477
+ const candidateSkillKey = candidate.skillKey?.trim() || "";
14478
+ const candidateName = candidate.name?.trim() || "";
14479
+ const candidateDirName = candidate.baseDir ? path.basename(candidate.baseDir) : "";
14480
+ if (candidateSkillKey === entrySkillKey || candidateName === entrySkillKey) return true;
14481
+ if (!entrySlug) return false;
14482
+ return candidateSkillKey === entrySlug || candidateName === entrySlug || candidateDirName === entrySlug;
14483
+ }
14474
14484
  function collectSkillBins(entries) {
14475
14485
  const bins = /* @__PURE__ */ new Set();
14476
14486
  for (const entry of entries) {
@@ -14496,7 +14506,7 @@ function collectSkillBins(entries) {
14496
14506
  return [...bins].toSorted();
14497
14507
  }
14498
14508
  function resolveMarketSkillState(entry, report) {
14499
- const skill = report.skills.find((candidate) => candidate.skillKey === entry.skillKey || candidate.name === entry.skillKey);
14509
+ const skill = report.skills.find((candidate) => matchesInstalledMarketSkill(entry, candidate));
14500
14510
  if (!skill) return {
14501
14511
  installed: false,
14502
14512
  enabled: false,
@@ -14659,7 +14669,7 @@ const skillsHandlers = {
14659
14669
  if (buildWorkspaceSkillStatus(workspaceDir, {
14660
14670
  config: cfg,
14661
14671
  eligibility: { remote: getRemoteSkillEligibility() }
14662
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14672
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14663
14673
  respond(true, {
14664
14674
  ok: true,
14665
14675
  skillKey,
@@ -14698,7 +14708,7 @@ const skillsHandlers = {
14698
14708
  if (!buildWorkspaceSkillStatus(workspaceDir, {
14699
14709
  config: cfg,
14700
14710
  eligibility: { remote: getRemoteSkillEligibility() }
14701
- }).skills.find((candidate) => candidate.skillKey === skillKey || candidate.name === skillKey)) {
14711
+ }).skills.find((candidate) => matchesInstalledMarketSkill(marketEntry, candidate))) {
14702
14712
  respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `Install completed but "${skillKey}" is still not discoverable in skills status.`));
14703
14713
  return;
14704
14714
  }
@@ -17195,7 +17205,7 @@ function normalizeAgentPayload(payload) {
17195
17205
  async function startBrowserControlServerIfEnabled() {
17196
17206
  if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
17197
17207
  const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
17198
- const mod = override ? await import(override) : await import("./server-DQ7D-B-v.js");
17208
+ const mod = override ? await import(override) : await import("./server-Ct0J5VXf.js");
17199
17209
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
17200
17210
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
17201
17211
  if (!start) return null;
@@ -17423,7 +17433,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
17423
17433
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
17424
17434
  const candidate = path.join(rootReal, rel);
17425
17435
  try {
17426
- const st = await fsPromises.lstat(candidate);
17436
+ const st = await fs$1.lstat(candidate);
17427
17437
  if (st.isSymbolicLink()) return null;
17428
17438
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
17429
17439
  } catch {}
@@ -17460,8 +17470,8 @@ async function resolveA2uiRoot() {
17460
17470
  for (const dir of candidates) try {
17461
17471
  const indexPath = path.join(dir, "index.html");
17462
17472
  const bundlePath = path.join(dir, "a2ui.bundle.js");
17463
- await fsPromises.stat(indexPath);
17464
- await fsPromises.stat(bundlePath);
17473
+ await fs$1.stat(indexPath);
17474
+ await fs$1.stat(bundlePath);
17465
17475
  return dir;
17466
17476
  } catch {}
17467
17477
  return null;
@@ -17470,7 +17480,7 @@ async function resolveA2uiRootReal() {
17470
17480
  if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
17471
17481
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
17472
17482
  const root = await resolveA2uiRoot();
17473
- cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
17483
+ cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
17474
17484
  cachedA2uiResolvedAtMs = Date.now();
17475
17485
  resolvingA2uiRoot = null;
17476
17486
  return cachedA2uiRootReal;
@@ -17691,13 +17701,13 @@ function normalizeBasePath(rawPath) {
17691
17701
  }
17692
17702
  async function prepareCanvasRoot(rootDir) {
17693
17703
  await ensureDir(rootDir);
17694
- const rootReal = await fsPromises.realpath(rootDir);
17704
+ const rootReal = await fs$1.realpath(rootDir);
17695
17705
  try {
17696
17706
  const indexPath = path.join(rootReal, "index.html");
17697
- await fsPromises.stat(indexPath);
17707
+ await fs$1.stat(indexPath);
17698
17708
  } catch {
17699
17709
  try {
17700
- await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
17710
+ await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
17701
17711
  } catch {}
17702
17712
  }
17703
17713
  return rootReal;
@@ -20704,7 +20714,7 @@ async function resolveGatewayOwnerStatus(pid, payload, platform, port) {
20704
20714
  }
20705
20715
  async function readLockPayload(lockPath) {
20706
20716
  try {
20707
- const raw = await fsPromises.readFile(lockPath, "utf8");
20717
+ const raw = await fs$1.readFile(lockPath, "utf8");
20708
20718
  const parsed = JSON.parse(raw);
20709
20719
  if (typeof parsed.pid !== "number") return null;
20710
20720
  if (typeof parsed.createdAt !== "string") return null;
@@ -20739,11 +20749,11 @@ async function acquireGatewayLock(opts = {}) {
20739
20749
  const platform = opts.platform ?? process.platform;
20740
20750
  const port = opts.port;
20741
20751
  const { lockPath, configPath } = resolveGatewayLockPath(env);
20742
- await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
20752
+ await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
20743
20753
  const startedAt = Date.now();
20744
20754
  let lastPayload = null;
20745
20755
  while (Date.now() - startedAt < timeoutMs) try {
20746
- const handle = await fsPromises.open(lockPath, "wx");
20756
+ const handle = await fs$1.open(lockPath, "wx");
20747
20757
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
20748
20758
  const payload = {
20749
20759
  pid: process.pid,
@@ -20757,7 +20767,7 @@ async function acquireGatewayLock(opts = {}) {
20757
20767
  configPath,
20758
20768
  release: async () => {
20759
20769
  await handle.close().catch(() => void 0);
20760
- await fsPromises.rm(lockPath, { force: true });
20770
+ await fs$1.rm(lockPath, { force: true });
20761
20771
  }
20762
20772
  };
20763
20773
  } catch (err) {
@@ -20766,7 +20776,7 @@ async function acquireGatewayLock(opts = {}) {
20766
20776
  const ownerPid = lastPayload?.pid;
20767
20777
  const ownerStatus = ownerPid ? await resolveGatewayOwnerStatus(ownerPid, lastPayload, platform, port) : "unknown";
20768
20778
  if (ownerStatus === "dead" && ownerPid) {
20769
- await fsPromises.rm(lockPath, { force: true });
20779
+ await fs$1.rm(lockPath, { force: true });
20770
20780
  continue;
20771
20781
  }
20772
20782
  if (ownerStatus !== "alive") {
@@ -20776,13 +20786,13 @@ async function acquireGatewayLock(opts = {}) {
20776
20786
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
20777
20787
  }
20778
20788
  if (!stale) try {
20779
- const st = await fsPromises.stat(lockPath);
20789
+ const st = await fs$1.stat(lockPath);
20780
20790
  stale = Date.now() - st.mtimeMs > staleMs;
20781
20791
  } catch {
20782
20792
  stale = false;
20783
20793
  }
20784
20794
  if (stale) {
20785
- await fsPromises.rm(lockPath, { force: true });
20795
+ await fs$1.rm(lockPath, { force: true });
20786
20796
  continue;
20787
20797
  }
20788
20798
  }
@@ -22357,7 +22367,7 @@ function attachGatewayWsMessageHandler(params) {
22357
22367
  type: "hello-ok",
22358
22368
  protocol: PROTOCOL_VERSION,
22359
22369
  server: {
22360
- version: resolveRuntimeServiceVersion(process.env, "dev"),
22370
+ version: VERSION,
22361
22371
  connId
22362
22372
  },
22363
22373
  features: {
@@ -23092,7 +23102,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
23092
23102
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
23093
23103
  if (!minimalTestGateway) (async () => {
23094
23104
  const { recoverPendingDeliveries } = await import("./delivery-queue-EvfYzqtX.js").then((n) => n.n);
23095
- const { deliverOutboundPayloads } = await import("./deliver-D4ugOkLr.js").then((n) => n.n);
23105
+ const { deliverOutboundPayloads } = await import("./deliver-Bn10XzRP.js").then((n) => n.n);
23096
23106
  await recoverPendingDeliveries({
23097
23107
  deliver: deliverOutboundPayloads,
23098
23108
  log: log.child("delivery-recovery"),