@bitseek/claw 1.2.0 → 1.2.1

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 (251) hide show
  1. package/dist/{accounts-B3zSNWIv.js → accounts-2NNZ6Hbp.js} +1 -1
  2. package/dist/{accounts-BQHz8_1_.js → accounts-Cv5CUnT4.js} +7 -7
  3. package/dist/{accounts-DTfEeXyO.js → accounts-NHpMJ0aq.js} +1 -1
  4. package/dist/{acp-cli-DYu2k7v9.js → acp-cli-B0u6no4K.js} +8 -8
  5. package/dist/{agent-scope-CJelRKYY.js → agent-scope-CY2-lUIY.js} +1 -1
  6. package/dist/{agents-B1UgGs6R.js → agents-Cweyfj22.js} +15 -15
  7. package/dist/{agents.config-CmUkQxtt.js → agents.config-DA3Y8w1t.js} +2 -2
  8. package/dist/{api-key-rotation-xfk-b2Sv.js → api-key-rotation-Cf7QM5M_.js} +1 -1
  9. package/dist/{audio-preflight-CHD1xVrt.js → audio-preflight-DdrORTn9.js} +4 -4
  10. package/dist/{audio-preflight-59K4nxSA.js → audio-preflight-SRgix4XS.js} +36 -36
  11. package/dist/{audio-transcription-runner-DwWOJBSn.js → audio-transcription-runner-CGsd7139.js} +1 -1
  12. package/dist/{audio-transcription-runner-DGyS5H3K.js → audio-transcription-runner-DkibzFT2.js} +22 -22
  13. package/dist/{audit-DJfP7KjJ.js → audit-TSVXvoTa.js} +29 -29
  14. package/dist/{auth-B3HDYw4G.js → auth-anvTU0Sb.js} +1 -1
  15. package/dist/{auth-choice-Ko0_UPIV.js → auth-choice-Bhzlukg0.js} +12 -12
  16. package/dist/{auth-choice-f6C6bI9v.js → auth-choice-CR6bBvDU.js} +14 -14
  17. package/dist/{auth-choice.apply-helpers-DR-eUj_5.js → auth-choice.apply-helpers-Du585kvU.js} +1 -1
  18. package/dist/{auth-profiles-D_x1_5v_.js → auth-profiles-CyG9VwU_.js} +16 -16
  19. package/dist/{auth-token-BqjY9MGq.js → auth-token-BIEjzQiE.js} +1 -1
  20. package/dist/{banner-DB1rGYKC.js → banner-D-ha13Xs.js} +2 -2
  21. package/dist/{bindings-Hx6KNJeg.js → bindings-DGvp9FdD.js} +1 -1
  22. package/dist/{bonjour-discovery-t-SAPCsb.js → bonjour-discovery-B68dCYTY.js} +1 -1
  23. package/dist/{browser-cli-CTlLlDFe.js → browser-cli-DREC4EVl.js} +12 -12
  24. package/dist/build-info.json +3 -3
  25. package/dist/{call-CzoM7hPS.js → call-CmAGfSJE.js} +10 -10
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{channel-account-context-CiCkIxCu.js → channel-account-context-DNFdIaSr.js} +7 -6
  28. package/dist/{channel-account-context-D0zX-Gup.js → channel-account-context-etfgJrr_.js} +2 -1
  29. package/dist/{channel-options-DLPoMi6B.js → channel-options-6JzQN9nt.js} +3 -3
  30. package/dist/{channel-selection-D8KYuWir.js → channel-selection-DGtYwfd7.js} +1 -1
  31. package/dist/{channel-web-BMZ_oZSK.js → channel-web-oQImOucb.js} +18 -18
  32. package/dist/{channels-cli-sNDA9BU2.js → channels-cli-CzLX8jUv.js} +95 -95
  33. package/dist/{channels-status-issues-5n9kobSz.js → channels-status-issues-BMNB2aMG.js} +1 -1
  34. package/dist/{chrome-DuDCGdf-.js → chrome-DeZyLFsG.js} +4 -4
  35. package/dist/{chrome-CuMCXCQN.js → chrome-xatreDUO.js} +8 -8
  36. package/dist/{clawbot-cli-SIY_fH-I.js → clawbot-cli-H1Uj0ifV.js} +5 -5
  37. package/dist/cli/daemon-cli.js +1 -1
  38. package/dist/{cli-Cjv-J_yg.js → cli-C2xvYknT.js} +76 -76
  39. package/dist/{client-BvL3EdiZ.js → client-vUKV2o6h.js} +2 -2
  40. package/dist/{command-registry-KfIoXPZE.js → command-registry-QcrBU_9X.js} +13 -13
  41. package/dist/{commands-C67IbXs7.js → commands-d8L0zY8O.js} +1 -1
  42. package/dist/{commands-registry-D0_D5hFV.js → commands-registry-C78O6aNi.js} +3 -3
  43. package/dist/{completion-cli-iCWrVHvc.js → completion-cli-BkWPjJyP.js} +13 -13
  44. package/dist/{completion-cli-SYxZGwWD.js → completion-cli-VWIJWtLM.js} +1 -1
  45. package/dist/{config-cli-5lP-lwj0.js → config-cli-B4WnAVfw.js} +7 -7
  46. package/dist/{config-guard-t_xLf16g.js → config-guard-RZw5NkPK.js} +3 -3
  47. package/dist/{config-validation-DkA3FBg8.js → config-validation-tb90Bzho.js} +3 -3
  48. package/dist/{configure-hI0hAw1W.js → configure-DuwIk56q.js} +17 -17
  49. package/dist/control-ui/assets/{index-DPyUb7lL.css → index-B5WC_0Be.css} +1 -1
  50. package/dist/control-ui/assets/{index-BlqD_sH7.js → index-DmJK8e2M.js} +2 -2
  51. package/dist/control-ui/assets/index-DmJK8e2M.js.map +1 -0
  52. package/dist/control-ui/index.html +2 -2
  53. package/dist/{control-ui-assets-M84PR-kz.js → control-ui-assets-Czpjuiah.js} +1 -1
  54. package/dist/{cron-cli-Bg88aQ8Y.js → cron-cli-D5MnhB5f.js} +12 -12
  55. package/dist/{daemon-cli-CFnqQB6M.js → daemon-cli-oCVkh3bg.js} +15 -15
  56. package/dist/{daemon-install-helpers-C1iBqd73.js → daemon-install-helpers-D5tste0V.js} +11 -11
  57. package/dist/{daemon-install-CdoMSH6S.js → daemon-install-vQ6KespE.js} +4 -4
  58. package/dist/{dashboard-CYa-ISxZ.js → dashboard-BstU6qkZ.js} +2 -2
  59. package/dist/{deliver-DTgCZWjU.js → deliver-H0xCFj4j.js} +7 -7
  60. package/dist/{deliver-Dyh8ZsLI.js → deliver-Z7543EnP.js} +1 -1
  61. package/dist/{devices-cli-9aOy3d7K.js → devices-cli-D6b6S-Iy.js} +8 -8
  62. package/dist/{diagnostic-Bvatw1Xn.js → diagnostic-DjxUqpmL.js} +1 -1
  63. package/dist/{diagnostics-DooDWHeF.js → diagnostics-vLzdmcgg.js} +5 -5
  64. package/dist/{directory-cli-Rk2cBm0A.js → directory-cli-D3o7BGMd.js} +8 -8
  65. package/dist/{dns-cli-BXhJBWtC.js → dns-cli-B5kqVfFd.js} +5 -5
  66. package/dist/{dock-DT8sACcR.js → dock-CoclJnwp.js} +4 -4
  67. package/dist/{docs-cli-D606Eb-M.js → docs-cli-CyjlhZAj.js} +4 -4
  68. package/dist/{doctor-completion-C7FCLVKC.js → doctor-completion-DGNL86eP.js} +1 -1
  69. package/dist/{doctor-completion-DNAwhmlY.js → doctor-completion-SBDS3edN.js} +2 -2
  70. package/dist/{doctor-config-flow-ePZ7ejQj.js → doctor-config-flow-DclZbGUP.js} +15 -15
  71. package/dist/{enable-CnvIWic7.js → enable-CKAw_GCd.js} +1 -1
  72. package/dist/entry.js +2 -2
  73. package/dist/{exec-approvals-allowlist-B4DS6FIn.js → exec-approvals-allowlist-CFjPSbxI.js} +1 -1
  74. package/dist/{exec-approvals-cli-Czp8csm7.js → exec-approvals-cli-U46MdeMi.js} +16 -16
  75. package/dist/{exec-safe-bin-runtime-policy-BP6ImlkB.js → exec-safe-bin-runtime-policy-CpMj95vJ.js} +2 -2
  76. package/dist/extensionAPI.js +6 -6
  77. package/dist/{fetch-DC-NMnAU.js → fetch-DOjg912W.js} +3 -3
  78. package/dist/{fetch-guard-B62rgaSw.js → fetch-guard-Csbz9pui.js} +1 -1
  79. package/dist/{fs-safe-CJDtl_QU.js → fs-safe-BqJ9egpm.js} +24 -24
  80. package/dist/{gateway-cli-BKhQZ6rL.js → gateway-cli-ADJ8WFzB.js} +267 -93
  81. package/dist/{gateway-cli-Cb1IDsaH.js → gateway-cli-D5wMqxbT.js} +423 -249
  82. package/dist/{gateway-rpc-BgV_ZJ92.js → gateway-rpc-DFqEAyI_.js} +1 -1
  83. package/dist/{health-DugDjq1f.js → health-Dzwp2cfK.js} +14 -14
  84. package/dist/{hooks-cli-VjmNvsLG.js → hooks-cli-DKAhHxZp.js} +84 -84
  85. package/dist/{hooks-status-DE20AAEu.js → hooks-status-6tcOdcYp.js} +1 -1
  86. package/dist/{image-BfqphdQM.js → image-BjuH1GKB.js} +5 -5
  87. package/dist/{image-DihIv8Eo.js → image-DQV2jl6F.js} +1 -1
  88. package/dist/{image-ops-BGTBZMuE.js → image-ops-B2L37gT8.js} +10 -10
  89. package/dist/index.js +1 -1
  90. package/dist/{inspect-DeP74OJO.js → inspect-DJUXn0vX.js} +4 -4
  91. package/dist/{install-safe-path-CWo3RPkH.js → install-safe-path-DVQh7rEs.js} +25 -25
  92. package/dist/{installs-BYqcA-ke.js → installs-jXfyPi74.js} +9 -9
  93. package/dist/{ipv4-BB1Ro6so.js → ipv4-DQS0lTwQ.js} +1 -1
  94. package/dist/{ir-DziC-P4Z.js → ir-CEwBpxhC.js} +6 -6
  95. package/dist/{issue-format-CqVkT3gT.js → issue-format-NBMJ5xAP.js} +1 -1
  96. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  97. package/dist/{lifecycle-core-DAWYYqJl.js → lifecycle-core-oTVOKNSW.js} +5 -5
  98. package/dist/{login-CYfV0FRr.js → login-I5RlwiJn.js} +3 -3
  99. package/dist/{login-qr-DUSyrCPW.js → login-qr-CRjZn3ix.js} +6 -6
  100. package/dist/{logs-cli--IqfO6Fs.js → logs-cli-D2-73CiV.js} +9 -9
  101. package/dist/{manager-7hZXEYTj.js → manager-DWpiNvlg.js} +14 -14
  102. package/dist/{manifest-registry-Kbw8YPsZ.js → manifest-registry-CBF8Vfz8.js} +1 -1
  103. package/dist/{markdown-tables-BYHgyUjA.js → markdown-tables-DQlQMRGZ.js} +1 -1
  104. package/dist/{memory-cli-CuT-iG2F.js → memory-cli-BUrf60e_.js} +12 -12
  105. package/dist/{model-DmBmzJI6.js → model-DMZUvZJo.js} +2 -2
  106. package/dist/{model-catalog-D1X8r3WJ.js → model-catalog-DFi9HgWu.js} +3 -3
  107. package/dist/{model-picker-CrYHvOZH.js → model-picker-DFyoaAce.js} +4 -4
  108. package/dist/{models-BwUaRaeh.js → models-B-VHfTz-.js} +18 -18
  109. package/dist/{models-cli-DPvtAoJ-.js → models-cli-DQBbzn_p.js} +81 -81
  110. package/dist/{models-config-CmrBGsQs.js → models-config-AePb9RAo.js} +6 -6
  111. package/dist/{net-BXeYv7Iu.js → net-C75G4fup.js} +2 -2
  112. package/dist/{node-cli-Co4McDQy.js → node-cli-UnJ5obvj.js} +33 -33
  113. package/dist/{node-command-policy-D7hSN9B8.js → node-command-policy-DMwxqhrG.js} +1 -1
  114. package/dist/{node-service-CzRylWgI.js → node-service-83OYUi14.js} +1 -1
  115. package/dist/{nodes-cli-wABD1dZs.js → nodes-cli-U66EhW5E.js} +16 -16
  116. package/dist/{nodes-screen-DcxCMjOs.js → nodes-screen-BHwVUMr8.js} +7 -7
  117. package/dist/{npm-pack-install-BGN-e1vW.js → npm-pack-install-1gsZywqI.js} +18 -18
  118. package/dist/{npm-resolution-Dp9ywE7U.js → npm-resolution-ZwcMp-e1.js} +5 -5
  119. package/dist/{onboard-tlfs9gUN.js → onboard-1RaJpuJ4.js} +1 -1
  120. package/dist/{onboard-DfDL2v89.js → onboard-Ce_QcPvd.js} +6 -6
  121. package/dist/{onboard-channels-CjyJiI4i.js → onboard-channels-BLL6tVVk.js} +20 -20
  122. package/dist/{onboard-custom-WfZ3J4O7.js → onboard-custom-CltkNK3c.js} +3 -3
  123. package/dist/{onboard-custom.shared-D52ggtQF.js → onboard-custom.shared-CXzE62ZH.js} +2 -2
  124. package/dist/{onboard-helpers-CczYNQDJ.js → onboard-helpers-D8lLbK3A.js} +11 -11
  125. package/dist/{onboard-hooks-o0B0p8tR.js → onboard-hooks-DBif0Jq8.js} +4 -4
  126. package/dist/{onboard-remote-DTz_Z9Xl.js → onboard-remote-DpEjARZa.js} +3 -3
  127. package/dist/{onboard-skills-D70PenD-.js → onboard-skills-CL0tHf_N.js} +4 -4
  128. package/dist/{onboarding-H5cLNUFG.js → onboarding-Rub9MXWB.js} +1 -1
  129. package/dist/{onboarding-DNV-TKzA.js → onboarding-WDRpEgra.js} +13 -13
  130. package/dist/{onboarding.finalize-C6UdLnH3.js → onboarding.finalize-CWYrjSVx.js} +89 -89
  131. package/dist/{onboarding.finalize-DfZFzt37.js → onboarding.finalize-MTyP_Dr4.js} +3 -3
  132. package/dist/{onboarding.gateway-config-CnQR4xLI.js → onboarding.gateway-config-Ce8ndMkF.js} +18 -18
  133. package/dist/{openai-model-default-DqKKq57j.js → openai-model-default-XM-ZB1MD.js} +2 -2
  134. package/dist/{outbound-Dv-MM4iv.js → outbound-CHyBoNxD.js} +4 -4
  135. package/dist/{outbound-attachment-CXINK8df.js → outbound-attachment-DM-h2uQ1.js} +2 -2
  136. package/dist/{pairing-cli-BUHAN0R5.js → pairing-cli-DUMMuvWC.js} +9 -9
  137. package/dist/{pairing-labels-CFSUHOmk.js → pairing-labels-x4akYNb7.js} +1 -1
  138. package/dist/{pairing-store-BfzlN-z9.js → pairing-store-rFuiIoGM.js} +3 -3
  139. package/dist/{path-alias-guards-Cg9ZP1NN.js → path-alias-guards-laKq24fx.js} +3 -3
  140. package/dist/{path-safety-tZSbJG67.js → path-safety-BxYB92SS.js} +1 -1
  141. package/dist/{paths-BjoSX1aC.js → paths-B_L2Zoe-.js} +9 -9
  142. package/dist/{pi-embedded-xCcmCTnf.js → pi-embedded-CZAvX74y.js} +22 -22
  143. package/dist/{pi-embedded-helpers-C3sJPGXn.js → pi-embedded-helpers-BB2whkUz.js} +6 -6
  144. package/dist/{pi-embedded-helpers-Bmj18lhA.js → pi-embedded-helpers-DK1ft2pf.js} +3 -3
  145. package/dist/{pi-model-discovery-BZ2RCD_u.js → pi-model-discovery-RrejIg26.js} +1 -1
  146. package/dist/{pi-tools.policy-BH0D2kX0.js → pi-tools.policy-DRW8ya1z.js} +5 -5
  147. package/dist/{plugin-auto-enable-DER6qA6X.js → plugin-auto-enable-S_lBQAKI.js} +3 -3
  148. package/dist/{plugin-registry-CmucB2C0.js → plugin-registry-C2g1aLrK.js} +3 -3
  149. package/dist/{plugins-vsjS_m58.js → plugins-C4cYqW07.js} +2 -2
  150. package/dist/{plugins-cli-DJFtia9f.js → plugins-cli-Cdug93Mi.js} +86 -86
  151. package/dist/{ports-sCOQUaAP.js → ports-DRaxdQmm.js} +2 -2
  152. package/dist/{ports-zWusnrvP.js → ports-tfS1haOJ.js} +1 -1
  153. package/dist/{program-BkK1YIQS.js → program-L4hhvW67.js} +84 -84
  154. package/dist/{program-context-CFNQpYpG.js → program-context-BEPxCThZ.js} +7 -7
  155. package/dist/{prompt-select-styled-DlC5a1xd.js → prompt-select-styled-CYmsrkR3.js} +39 -39
  156. package/dist/{prompt-select-styled-DGdjezC8.js → prompt-select-styled-DTqU-r5T.js} +3 -3
  157. package/dist/{provider-auth-helpers-CJ2_W1oy.js → provider-auth-helpers-CNkIHUuF.js} +5 -5
  158. package/dist/{proxy-env-BQIJPH4j.js → proxy-env-BoopXu2J.js} +1 -1
  159. package/dist/{push-apns-BKjyYFyk.js → push-apns-DRX0c6-y.js} +5 -5
  160. package/dist/{pw-ai-pqeoAqm_.js → pw-ai-CMUrm_kS.js} +1 -1
  161. package/dist/{pw-ai-ITbRRqVN.js → pw-ai-DyGZ1pXu.js} +15 -15
  162. package/dist/{qmd-manager-BNohLpRA.js → qmd-manager-Bo22w5wm.js} +20 -20
  163. package/dist/{qr-cli-D-LqDNlm.js → qr-cli-EHSe4TmR.js} +1 -1
  164. package/dist/{query-expansion-BrM3X6-L.js → query-expansion-Ba9OpCm9.js} +12 -12
  165. package/dist/{redact-snapshot-D3QFNQl8.js → redact-snapshot-kY3aFpcF.js} +1 -1
  166. package/dist/{register.agent-C3K3DXul.js → register.agent-CaCz2lnX.js} +97 -97
  167. package/dist/register.configure-BHL2CNOY.js +174 -0
  168. package/dist/{register.init-ClMzXUKm.js → register.init-D4hlhvsq.js} +15 -15
  169. package/dist/{register.maintenance-Bb8amfJh.js → register.maintenance-DsxNo00b.js} +6 -6
  170. package/dist/{register.maintenance-zsZrRIaB.js → register.maintenance-MJR5bDWC.js} +99 -99
  171. package/dist/{register.message-CfRd6EM2.js → register.message-ChJGE4xV.js} +77 -77
  172. package/dist/{register.onboard-qFRFDsPK.js → register.onboard-4aB9FmjK.js} +2 -2
  173. package/dist/{register.onboard-BFM29BaY.js → register.onboard-CRCrMN8O.js} +18 -18
  174. package/dist/{register.setup-D0E9z_QW.js → register.setup-CCPeU8WO.js} +2 -2
  175. package/dist/{register.setup-Caqvvqmm.js → register.setup-DqRNRiXi.js} +21 -21
  176. package/dist/{register.start-CrwDVujg.js → register.start-D3IRihbV.js} +17 -17
  177. package/dist/{register.status-health-sessions-CWb4-Kgs.js → register.status-health-sessions-EhCB2a7v.js} +3 -3
  178. package/dist/{register.status-health-sessions-BBEF4th9.js → register.status-health-sessions-zD3z2YuT.js} +91 -91
  179. package/dist/{register.subclis-rB1Roe3w.js → register.subclis-D12iC4nF.js} +31 -31
  180. package/dist/{replies-Ckd7Lwt0.js → replies-BDnb0prE.js} +1 -1
  181. package/dist/{reply-prefix-DpXMFuAa.js → reply-prefix-H_GSyyzN.js} +1 -1
  182. package/dist/{resolve-route-Cnto8LMw.js → resolve-route-ByAwAiq5.js} +2 -2
  183. package/dist/{rpc-9G93KhBv.js → rpc-Bzb0JMJ_.js} +1 -1
  184. package/dist/{run-main-C02l3ZhV.js → run-main-C_fGUv-Y.js} +95 -95
  185. package/dist/{runtime-BI0xjrHi.js → runtime-Cx-7xFzl.js} +2 -2
  186. package/dist/{sandbox-CLIUxOtc.js → sandbox-BLqUWbp2.js} +18 -18
  187. package/dist/{sandbox-cli-MjHZjW2w.js → sandbox-cli-CEriRvUh.js} +26 -26
  188. package/dist/{secrets-cli-BFU9jh2A.js → secrets-cli-DG-NG8PH.js} +10 -10
  189. package/dist/{security-cli-DIfmEZrw.js → security-cli-C_Bc1U-7.js} +43 -43
  190. package/dist/{send-e1X1pfda.js → send-BCLu4NEE.js} +6 -6
  191. package/dist/{send-BpXRh0BM.js → send-BTswySBz.js} +11 -11
  192. package/dist/{send-CQJKPGw4.js → send-CZ2O-5pP.js} +6 -6
  193. package/dist/{send-sj8Hu26l.js → send-D0X-8aPh.js} +8 -8
  194. package/dist/{send-Cpaj_bKB.js → send-ZyB64ntO.js} +5 -5
  195. package/dist/{server-DbB5aXZq.js → server-CzDsmd9g.js} +19 -19
  196. package/dist/{server-context-DnPsW_Mg.js → server-context-DRq_OT33.js} +12 -12
  197. package/dist/{server-lifecycle-B2y6Fg7R.js → server-lifecycle-CcYnyYPQ.js} +2 -2
  198. package/dist/{server-middleware-CKSnhiM2.js → server-middleware-DHxnFjIL.js} +1 -1
  199. package/dist/{server-node-events-BwnXBzS2.js → server-node-events-B5xSV7Kq.js} +77 -77
  200. package/dist/{service-Wk285d-R.js → service-CZORJG4z.js} +15 -15
  201. package/dist/{session-meta-DF1WT4cr.js → session-meta-Cew1QAYN.js} +1 -1
  202. package/dist/{session-DNbfXbBi.js → session-nilNSQEL.js} +1 -1
  203. package/dist/{session-utils-BncMg1bn.js → session-utils-DxaIoRMp.js} +6 -6
  204. package/dist/{sessions-B2mnwD21.js → sessions-BXz4gdq6.js} +15 -15
  205. package/dist/{sessions-C2Xfck_9.js → sessions-DhD3eJDE.js} +4 -4
  206. package/dist/{shared-CJN2BLdi.js → shared-BZscafy-.js} +1 -1
  207. package/dist/{shared-BAdi_Ot7.js → shared-DvHQekWm.js} +3 -3
  208. package/dist/{skill-commands-CYucDd3C.js → skill-commands-Cpr3Poo2.js} +5 -5
  209. package/dist/{skill-scanner-BXOiOvI1.js → skill-scanner-0-AybMIe.js} +6 -6
  210. package/dist/{skills-BCgFAMj3.js → skills-D4S-gyVf.js} +3 -3
  211. package/dist/{skills-cli-CwbRKLum.js → skills-cli-B0jFsoo4.js} +5 -5
  212. package/dist/{skills-install-BQyeS7wB.js → skills-install-C6-Zzqoi.js} +6 -6
  213. package/dist/{skills-status-DG-bH5mO.js → skills-status-DQzBD0Y7.js} +1 -1
  214. package/dist/{status-B4v5QI5X.js → status-BfWqYNJf.js} +2 -2
  215. package/dist/{status-XGYDzhkW.js → status-Dw7ag8qn.js} +26 -26
  216. package/dist/{status.update-n2QPQr8w.js → status.update-B6whKviL.js} +2 -2
  217. package/dist/{status.update-DIamQqHr.js → status.update-C8qgou8r.js} +1 -1
  218. package/dist/{store-U8cs0QvT.js → store-TdzSHRPN.js} +5 -5
  219. package/dist/{subagent-registry-WD5F6cBf.js → subagent-registry-D6OfBLNb.js} +156 -156
  220. package/dist/{system-cli-C_5YHHhF.js → system-cli-BoamUpxz.js} +9 -9
  221. package/dist/{system-run-command-GKGzGztn.js → system-run-command-XHAlbx5q.js} +1 -1
  222. package/dist/{systemd-Dbwmb4TX.js → systemd-C4JtDaKk.js} +9 -9
  223. package/dist/{systemd-hints-VM2JkQxw.js → systemd-hints-ZHrBbXDd.js} +6 -6
  224. package/dist/{systemd-linger-DoeP9Z3f.js → systemd-linger-CD4viBmg.js} +1 -1
  225. package/dist/{tables-DVXe5x1J.js → tables-BOsRa7CS.js} +1 -1
  226. package/dist/{tailnet-C1XBcWue.js → tailnet-CfP3A6g2.js} +1 -1
  227. package/dist/{target-errors-C5LA-JI-.js → target-errors-DPJ9HFp9.js} +4 -4
  228. package/dist/{tool-images-CnpAosfi.js → tool-images-CmgHk8xk.js} +1 -1
  229. package/dist/{tui-kOoc7WBf.js → tui-GWJMI53u.js} +6 -6
  230. package/dist/{tui-cli-DeTfdnEG.js → tui-cli-CMrxH2Q_.js} +33 -33
  231. package/dist/{update-DFr19tQ1.js → update-CDWJ50iD.js} +3 -3
  232. package/dist/{update-cli-CUSnVFt4.js → update-cli-Dw_JHcRy.js} +22 -14
  233. package/dist/{update-cli-BlswPThb.js → update-cli-r3eyhSgp.js} +122 -114
  234. package/dist/{update-runner-CX6jOI_r.js → update-runner-CHxTFtW8.js} +34 -22
  235. package/dist/{update-runner-BA9B0S60.js → update-runner-CJua_LZ3.js} +19 -7
  236. package/dist/web-B4yuhy9a.js +125 -0
  237. package/dist/{web-CvYmNThc.js → web-De45Xhd1.js} +6 -6
  238. package/dist/{webhooks-cli-DLgCJq4n.js → webhooks-cli-B09BdLSk.js} +6 -6
  239. package/dist/{whatsapp-actions-B81EJMQI.js → whatsapp-actions-DUoWY7mE.js} +19 -19
  240. package/dist/{with-timeout-l0X_rwcb.js → with-timeout-B9qgOUui.js} +3 -3
  241. package/dist/{workspace-DWBFoy1G.js → workspace-A5CNJccm.js} +1 -1
  242. package/dist/{workspace-BHfqkuYN.js → workspace-DzeL98px.js} +23 -23
  243. package/dist/{workspace-dirs-BOgNOBjy.js → workspace-dirs-Bevk6X_8.js} +1 -1
  244. package/dist/{wsl-BDRu1-pk.js → wsl-DksyFTBT.js} +2 -2
  245. package/docs/install/index.md +12 -12
  246. package/docs/install/updating.md +32 -33
  247. package/docs/plans/2026-03-11-bitseek-update-package-design.md +25 -0
  248. package/package.json +1 -1
  249. package/dist/control-ui/assets/index-BlqD_sH7.js.map +0 -1
  250. package/dist/register.configure-aJItV_ZP.js +0 -174
  251. package/dist/web-DNL22pwf.js +0 -125
@@ -3,12 +3,12 @@ import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as
3
3
  import { a as setConsoleSubsystemFilter, d as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-DjdBljTA.js";
4
4
  import "./boolean-DtWR5bt3.js";
5
5
  import { i as logAcceptedEnvOption, r as isTruthyEnvValue } from "./entry.js";
6
- import { Ai as DEFAULT_MODEL, B as OpenClawSchema, Er as resolveThinkingDefault, F as readConfigFileSnapshotForWrite, Fn as resolveSubagentMaxConcurrent, I as resolveConfigSnapshotHash, Jn as loadAuthProfileStoreForRuntime, M as loadConfig, Mn as buildTalkConfigResponse, N as parseConfigJson5, P as readConfigFileSnapshot, Pn as resolveAgentMaxConcurrent, R as writeConfigFile, Si as normalizeSecretInput, St as AVATAR_MAX_BYTES, Tt as isAvatarImageDataUrl, Un as upsertAuthProfile, _r as resolveAllowedModelRef, ai as resolveApiKeyForProvider, ar as buildAllowedModelSet, at as parseDurationMs, bn as applyLegacyMigrations, br as resolveDefaultModelForAgent, dr as isCliProvider, ir as isPidAlive, j as createConfigIO, ji as DEFAULT_PROVIDER, k as migrateLegacyConfig, ki as DEFAULT_CONTEXT_TOKENS, kt as looksLikeAvatarPath, l as resolveApiKeyForProfile, lr as getModelRefStatus, mr as normalizeModelSelection, ot as parseByteSize, wr as resolveSubagentConfiguredModelSelection, wt as isAvatarHttpUrl, xi as normalizeOptionalSecretInput, xn as ensureControlUiAllowedOriginsForNonLoopbackBind, xr as resolveHooksGmailModel, yn as applyMergePatch, yr as resolveConfiguredModelRef, z as validateConfigObjectWithPlugins } from "./auth-profiles-D_x1_5v_.js";
6
+ import { Ai as DEFAULT_MODEL, B as OpenClawSchema, Er as resolveThinkingDefault, F as readConfigFileSnapshotForWrite, Fn as resolveSubagentMaxConcurrent, I as resolveConfigSnapshotHash, Jn as loadAuthProfileStoreForRuntime, M as loadConfig, Mn as buildTalkConfigResponse, N as parseConfigJson5, P as readConfigFileSnapshot, Pn as resolveAgentMaxConcurrent, R as writeConfigFile, Si as normalizeSecretInput, St as AVATAR_MAX_BYTES, Tt as isAvatarImageDataUrl, Un as upsertAuthProfile, _r as resolveAllowedModelRef, ai as resolveApiKeyForProvider, ar as buildAllowedModelSet, at as parseDurationMs, bn as applyLegacyMigrations, br as resolveDefaultModelForAgent, dr as isCliProvider, ir as isPidAlive, j as createConfigIO, ji as DEFAULT_PROVIDER, k as migrateLegacyConfig, ki as DEFAULT_CONTEXT_TOKENS, kt as looksLikeAvatarPath, l as resolveApiKeyForProfile, lr as getModelRefStatus, mr as normalizeModelSelection, ot as parseByteSize, wr as resolveSubagentConfiguredModelSelection, wt as isAvatarHttpUrl, xi as normalizeOptionalSecretInput, xn as ensureControlUiAllowedOriginsForNonLoopbackBind, xr as resolveHooksGmailModel, yn as applyMergePatch, yr as resolveConfiguredModelRef, z as validateConfigObjectWithPlugins } from "./auth-profiles-CyG9VwU_.js";
7
7
  import { t as formatCliCommand } from "./command-format-CVXyxgq3.js";
8
- 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-CJelRKYY.js";
8
+ 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-CY2-lUIY.js";
9
9
  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-BLprDJYq.js";
10
10
  import { E as isPlainObject, T as truncateUtf16Safe, n as clamp, s as ensureDir, v as resolveUserPath, x as shortenHomePath } from "./utils-DIzy5B5o.js";
11
- 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-BHfqkuYN.js";
11
+ 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-DzeL98px.js";
12
12
  import { i as logWarn, t as logDebug } from "./logger-BJMfryJd.js";
13
13
  import { n as runExec, t as runCommandWithTimeout } from "./exec-CEAvKSx9.js";
14
14
  import "./github-copilot-token-CulJ9J5l.js";
@@ -16,112 +16,112 @@ import "./host-env-security-CJMD0__Z.js";
16
16
  import { n as resolveRuntimeServiceVersion, t as VERSION } from "./version-CGDNfh5C.js";
17
17
  import "./env-vars-Dw0EwyGP.js";
18
18
  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-7fg1BnMw.js";
19
- import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-Kbw8YPsZ.js";
20
- import "./dock-DT8sACcR.js";
21
- import "./model-DmBmzJI6.js";
22
- import "./pi-model-discovery-BZ2RCD_u.js";
19
+ import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-CBF8Vfz8.js";
20
+ import "./dock-CoclJnwp.js";
21
+ import "./model-DMZUvZJo.js";
22
+ import "./pi-model-discovery-RrejIg26.js";
23
23
  import { d as hasBinary } from "./frontmatter-C0E8mspC.js";
24
- import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-BCgFAMj3.js";
25
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-Cg9ZP1NN.js";
26
- import { t as buildWorkspaceSkillStatus } from "./skills-status-DG-bH5mO.js";
24
+ import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-D4S-gyVf.js";
25
+ import { n as assertNoPathAliasEscape } from "./path-alias-guards-laKq24fx.js";
26
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-DQzBD0Y7.js";
27
27
  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-0J6eKf3g.js";
28
- import { $ as resolveAgentMainSessionKey, A as readSessionPreviewItemsFromTranscript, B as cleanStaleLockFiles, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, G as resolveSessionResetPolicy, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as canonicalizeMainSessionAlias, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as evaluateSessionFreshness, Y as mergeSessionEntry, Z as setSessionRuntimeModel, d as updateSessionStore, et as resolveExplicitAgentSessionKey, it as snapshotSessionOrigin, k as readSessionMessages, n as parseSessionThreadInfo, nt as resolveMainSessionKeyFromConfig, o as loadSessionStore, t as extractDeliveryInfo, tt as resolveMainSessionKey, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-B2mnwD21.js";
29
- import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-vsjS_m58.js";
30
- import { i as resolveWhatsAppAccount } from "./accounts-BQHz8_1_.js";
31
- import "./accounts-B3zSNWIv.js";
28
+ import { $ as resolveAgentMainSessionKey, A as readSessionPreviewItemsFromTranscript, B as cleanStaleLockFiles, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, G as resolveSessionResetPolicy, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as canonicalizeMainSessionAlias, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as evaluateSessionFreshness, Y as mergeSessionEntry, Z as setSessionRuntimeModel, d as updateSessionStore, et as resolveExplicitAgentSessionKey, it as snapshotSessionOrigin, k as readSessionMessages, n as parseSessionThreadInfo, nt as resolveMainSessionKeyFromConfig, o as loadSessionStore, t as extractDeliveryInfo, tt as resolveMainSessionKey, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-BXz4gdq6.js";
29
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-C4cYqW07.js";
30
+ import { i as resolveWhatsAppAccount } from "./accounts-Cv5CUnT4.js";
31
+ import "./accounts-2NNZ6Hbp.js";
32
32
  import "./logging-5MtSkLpb.js";
33
- import "./accounts-DTfEeXyO.js";
34
- import { t as buildChannelAccountBindings } from "./bindings-Hx6KNJeg.js";
35
- import "./send-Cpaj_bKB.js";
36
- import "./send-BpXRh0BM.js";
37
- import { $n as normalizeSendPolicy, $t as isExternalHookSession, A as agentCommandFromIngress, Ar as waitForActiveTasks, At as formatRestartSentinelMessage, Br as onAgentEvent, Bt as normalizeOptionalSessionKey, C as readJsonBodyWithLimit, Cr as OPENAI_TTS_VOICES, D as sleepWithAbort, Dn as formatZonedTimestamp, Dr as markGatewayDraining, E as computeBackoff, Er as getTotalQueueSize, Et as runWithModelFallback, F as createDefaultDeps, Fn as isSystemEventContextChanged, Ft as normalizeHttpWebhookUrl, Gn as DEFAULT_INPUT_IMAGE_MIMES, Gt as buildDeliveryFromLegacyPayload, Ht as normalizePayloadToSystemText, I as createOutboundSendDeps$1, Ir as stripHeartbeatToken, It as normalizeCronJobCreate, Jn as extractFileContentFromSource, Kn as DEFAULT_INPUT_MAX_REDIRECTS, Kt as hasLegacyDeliveryHints, L as resolveAgentAvatar, Lr as clearAgentRunContext, Lt as normalizeCronJobPatch, M as resolveAgentDeliveryPlan, Mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Mt as summarizeRestartSentinel, N as resolveAgentOutboundTarget, Or as resetAllLanes, Ot as consumeRestartSentinel, P as createOutboundSendDeps, Pn as enqueueSystemEvent, Pt as writeRestartSentinel, Qn as resolveAgentTimeoutMs, Qt as getHookType, Rn as requestHeartbeatNow, Rr as emitAgentEvent, Rt as inferLegacyName, S as handleSlackHttpRequest, Sn as loadProviderUsageSummary, Sr as OPENAI_TTS_MODELS, St as resolveOutboundChannelPlugin, Un as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ut as normalizeRequiredName, Vr as registerAgentRunContext, Vt as normalizeOptionalText, W as buildHistoryContextFromEntries, Wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Wt as migrateLegacyCronPayload, Xn as normalizeMimeList, Xt as buildSafeExternalPrompt, Yn as extractImageContentFromSource, Zn as resolveInputFileLimits, Zt as detectSuspiciousPatterns, _ as loadOpenClawPlugins, _n as setPreRestartDeferralCheck, _r as resolveTtsPrefsPath, _t as resolveOutboundSessionRoute, a as runSubagentAnnounceFlow, b as resolveAgentOutboundIdentity, bn as normalizeGroupActivation, br as setTtsProvider, bt as resolveOutboundTarget, c as abortEmbeddedPiRun, cn as parseVerboseOverride, cr as resolveAgentSessionDirs, ct as resolveCronStyleNow, d as applyToolPolicyPipeline, dn as deferGatewayRestartUntilIdle, dr as getTtsProvider, dt as runCliAgent, en as applyBrowserProxyPaths, er as resolveSendPolicy, f as buildDefaultToolPolicyPipelineSteps, fn as emitGatewayRestart, fr as isTtsEnabled, ft as createOpenClawTools, gn as setGatewaySigusr1RestartPolicy, gr as resolveTtsConfig, gt as ensureOutboundSessionEntry, h as resolvePluginTools, hn as scheduleGatewaySigusr1Restart, hr as resolveTtsAutoMode, ir as stopSubagentsForRequester, jr as CommandLane, kr as setCommandLaneConcurrency, kt as formatDoctorNonInteractiveHint, l as getActiveEmbeddedRunCount, ln as buildOutboundSessionContext, lr as resolveUserTimezone, lt as getCliSessionId, m as getPluginToolMeta, mn as markGatewaySigusr1RestartHandled, mr as resolveTtsApiKey, mt as resolveAnnounceTargetFromKey, n as initSubagentRegistry, nn as resolveSessionAuthProfileOverride, nt as createReplyDispatcher, o as clearSessionQueues, on as applyModelOverrideToSessionEntry, ot as BARE_SESSION_RESET_PROMPT, pn as isGatewaySigusr1RestartExternallyAllowed, pr as isTtsProviderConfigured, pt as readLatestAssistantReply, qn as DEFAULT_INPUT_TIMEOUT_MS, qt as stripLegacyDeliveryFields, r as listDescendantRunsForRequester, rr as isAbortRequestText, rt as getTotalPendingReplies, s as runEmbeddedPiAgent, sn as applyVerboseOverride, sr as getAcpSessionManager, t as countActiveDescendantRuns, tn as persistBrowserProxyFiles, tt as dispatchInboundMessage, u as waitForEmbeddedPiRunEnd, un as consumeGatewaySigusr1RestartAuthorization, ur as clearBootstrapSnapshot, ut as setCliSessionId, v as createPluginRuntime, vn as triggerOpenClawRestart, vr as resolveTtsProviderOrder, w as requestBodyErrorToText, wr as getActiveTaskCount, wt as resetDirectoryCache, xr as textToSpeech, xt as resolveSessionDeliveryTarget, yn as unbindThreadBindingsBySessionKey, yr as setTtsEnabled, zr as getAgentRunContext, zt as normalizeOptionalAgentId } from "./subagent-registry-WD5F6cBf.js";
33
+ import "./accounts-NHpMJ0aq.js";
34
+ import { t as buildChannelAccountBindings } from "./bindings-DGvp9FdD.js";
35
+ import "./send-ZyB64ntO.js";
36
+ import "./send-BTswySBz.js";
37
+ import { $n as normalizeSendPolicy, $t as isExternalHookSession, A as agentCommandFromIngress, Ar as waitForActiveTasks, At as formatRestartSentinelMessage, Br as onAgentEvent, Bt as normalizeOptionalSessionKey, C as readJsonBodyWithLimit, Cr as OPENAI_TTS_VOICES, D as sleepWithAbort, Dn as formatZonedTimestamp, Dr as markGatewayDraining, E as computeBackoff, Er as getTotalQueueSize, Et as runWithModelFallback, F as createDefaultDeps, Fn as isSystemEventContextChanged, Ft as normalizeHttpWebhookUrl, Gn as DEFAULT_INPUT_IMAGE_MIMES, Gt as buildDeliveryFromLegacyPayload, Ht as normalizePayloadToSystemText, I as createOutboundSendDeps$1, Ir as stripHeartbeatToken, It as normalizeCronJobCreate, Jn as extractFileContentFromSource, Kn as DEFAULT_INPUT_MAX_REDIRECTS, Kt as hasLegacyDeliveryHints, L as resolveAgentAvatar, Lr as clearAgentRunContext, Lt as normalizeCronJobPatch, M as resolveAgentDeliveryPlan, Mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Mt as summarizeRestartSentinel, N as resolveAgentOutboundTarget, Or as resetAllLanes, Ot as consumeRestartSentinel, P as createOutboundSendDeps, Pn as enqueueSystemEvent, Pt as writeRestartSentinel, Qn as resolveAgentTimeoutMs, Qt as getHookType, Rn as requestHeartbeatNow, Rr as emitAgentEvent, Rt as inferLegacyName, S as handleSlackHttpRequest, Sn as loadProviderUsageSummary, Sr as OPENAI_TTS_MODELS, St as resolveOutboundChannelPlugin, Un as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ut as normalizeRequiredName, Vr as registerAgentRunContext, Vt as normalizeOptionalText, W as buildHistoryContextFromEntries, Wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Wt as migrateLegacyCronPayload, Xn as normalizeMimeList, Xt as buildSafeExternalPrompt, Yn as extractImageContentFromSource, Zn as resolveInputFileLimits, Zt as detectSuspiciousPatterns, _ as loadOpenClawPlugins, _n as setPreRestartDeferralCheck, _r as resolveTtsPrefsPath, _t as resolveOutboundSessionRoute, a as runSubagentAnnounceFlow, b as resolveAgentOutboundIdentity, bn as normalizeGroupActivation, br as setTtsProvider, bt as resolveOutboundTarget, c as abortEmbeddedPiRun, cn as parseVerboseOverride, cr as resolveAgentSessionDirs, ct as resolveCronStyleNow, d as applyToolPolicyPipeline, dn as deferGatewayRestartUntilIdle, dr as getTtsProvider, dt as runCliAgent, en as applyBrowserProxyPaths, er as resolveSendPolicy, f as buildDefaultToolPolicyPipelineSteps, fn as emitGatewayRestart, fr as isTtsEnabled, ft as createOpenClawTools, gn as setGatewaySigusr1RestartPolicy, gr as resolveTtsConfig, gt as ensureOutboundSessionEntry, h as resolvePluginTools, hn as scheduleGatewaySigusr1Restart, hr as resolveTtsAutoMode, ir as stopSubagentsForRequester, jr as CommandLane, kr as setCommandLaneConcurrency, kt as formatDoctorNonInteractiveHint, l as getActiveEmbeddedRunCount, ln as buildOutboundSessionContext, lr as resolveUserTimezone, lt as getCliSessionId, m as getPluginToolMeta, mn as markGatewaySigusr1RestartHandled, mr as resolveTtsApiKey, mt as resolveAnnounceTargetFromKey, n as initSubagentRegistry, nn as resolveSessionAuthProfileOverride, nt as createReplyDispatcher, o as clearSessionQueues, on as applyModelOverrideToSessionEntry, ot as BARE_SESSION_RESET_PROMPT, pn as isGatewaySigusr1RestartExternallyAllowed, pr as isTtsProviderConfigured, pt as readLatestAssistantReply, qn as DEFAULT_INPUT_TIMEOUT_MS, qt as stripLegacyDeliveryFields, r as listDescendantRunsForRequester, rr as isAbortRequestText, rt as getTotalPendingReplies, s as runEmbeddedPiAgent, sn as applyVerboseOverride, sr as getAcpSessionManager, t as countActiveDescendantRuns, tn as persistBrowserProxyFiles, tt as dispatchInboundMessage, u as waitForEmbeddedPiRunEnd, un as consumeGatewaySigusr1RestartAuthorization, ur as clearBootstrapSnapshot, ut as setCliSessionId, v as createPluginRuntime, vn as triggerOpenClawRestart, vr as resolveTtsProviderOrder, w as requestBodyErrorToText, wr as getActiveTaskCount, wt as resetDirectoryCache, xr as textToSpeech, xt as resolveSessionDeliveryTarget, yn as unbindThreadBindingsBySessionKey, yr as setTtsEnabled, zr as getAgentRunContext, zt as normalizeOptionalAgentId } from "./subagent-registry-D6OfBLNb.js";
38
38
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CTtLmER4.js";
39
39
  import { i as normalizeInputProvenance } from "./input-provenance-C8z9KgIz.js";
40
40
  import "./chat-envelope-D3RSz140.js";
41
- import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-CuJjdF_0.js";
42
- 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-BvL3EdiZ.js";
43
- import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-CzoM7hPS.js";
41
+ import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-rR19q30D.js";
42
+ 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-vUKV2o6h.js";
43
+ import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-CmAGfSJE.js";
44
44
  import "./pairing-token-DoBZxQnC.js";
45
45
  import { t as safeEqualSecret } from "./secret-equal-Gla36CGi.js";
46
- import { a as isTrustedProxyAddress, c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as rawDataToString, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as isLocalishHost, u as resolveGatewayBindHost } from "./net-BXeYv7Iu.js";
47
- import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C1XBcWue.js";
46
+ import { a as isTrustedProxyAddress, c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as rawDataToString, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as isLocalishHost, u as resolveGatewayBindHost } from "./net-C75G4fup.js";
47
+ import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-CfP3A6g2.js";
48
48
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DyLBF_df.js";
49
- import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-l0X_rwcb.js";
50
- import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-DTgCZWjU.js";
51
- import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-Bvatw1Xn.js";
49
+ import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-B9qgOUui.js";
50
+ import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-H0xCFj4j.js";
51
+ import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-DjxUqpmL.js";
52
52
  import "./diagnostic-session-state-Dx-rJXBO.js";
53
- import { S as saveCronStore, b as loadCronStore, x as resolveCronStorePath } from "./send-sj8Hu26l.js";
54
- import { c as detectMime } from "./image-ops-BGTBZMuE.js";
55
- import "./pi-embedded-helpers-C3sJPGXn.js";
56
- import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-CLIUxOtc.js";
53
+ import { S as saveCronStore, b as loadCronStore, x as resolveCronStorePath } from "./send-D0X-8aPh.js";
54
+ import { c as detectMime } from "./image-ops-B2L37gT8.js";
55
+ import "./pi-embedded-helpers-BB2whkUz.js";
56
+ import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-BLqUWbp2.js";
57
57
  import { i as listCoreToolSections, n as PROFILE_OPTIONS, o as resolveCoreToolProfiles } from "./tool-catalog-uQj_-Ahx.js";
58
- import "./chrome-DuDCGdf-.js";
58
+ import "./chrome-DeZyLFsG.js";
59
59
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-D3xGoMdQ.js";
60
- 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-B3HDYw4G.js";
61
- import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-DnPsW_Mg.js";
62
- import "./paths-BjoSX1aC.js";
60
+ 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-anvTU0Sb.js";
61
+ import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-DRq_OT33.js";
62
+ import "./paths-B_L2Zoe-.js";
63
63
  import { a as testRegexWithBoundedInput, i as compileSafeRegex } from "./redact-Ck5U_y4i.js";
64
64
  import { o as isErrno, r as formatErrorMessage } from "./errors-BJz45-qI.js";
65
- import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-CJDtl_QU.js";
66
- import { n as SsrFBlockedError } from "./proxy-env-BQIJPH4j.js";
67
- import "./store-U8cs0QvT.js";
68
- import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-sCOQUaAP.js";
65
+ import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-BqJ9egpm.js";
66
+ import { n as SsrFBlockedError } from "./proxy-env-BoopXu2J.js";
67
+ import "./store-TdzSHRPN.js";
68
+ import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-DRaxdQmm.js";
69
69
  import { t as movePathToTrash } from "./trash-ClChDUTf.js";
70
- import "./server-middleware-CKSnhiM2.js";
71
- import "./tool-images-CnpAosfi.js";
70
+ import "./server-middleware-DHxnFjIL.js";
71
+ import "./tool-images-CmgHk8xk.js";
72
72
  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-pYqswKJZ.js";
73
- import "./models-config-CmrBGsQs.js";
74
- import "./exec-approvals-allowlist-B4DS6FIn.js";
75
- import "./exec-safe-bin-runtime-policy-BP6ImlkB.js";
76
- import { n as loadModelCatalog } from "./model-catalog-D1X8r3WJ.js";
77
- import "./fetch-DC-NMnAU.js";
78
- import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-DGyS5H3K.js";
79
- import { t as fetchWithSsrFGuard } from "./fetch-guard-B62rgaSw.js";
80
- import { x as extractTextFromChatContent } from "./image-BfqphdQM.js";
73
+ import "./models-config-AePb9RAo.js";
74
+ import "./exec-approvals-allowlist-CFjPSbxI.js";
75
+ import "./exec-safe-bin-runtime-policy-CpMj95vJ.js";
76
+ import { n as loadModelCatalog } from "./model-catalog-DFi9HgWu.js";
77
+ import "./fetch-DOjg912W.js";
78
+ import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-DkibzFT2.js";
79
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-Csbz9pui.js";
80
+ import { x as extractTextFromChatContent } from "./image-BjuH1GKB.js";
81
81
  import "./tool-display-0M664wep.js";
82
- import "./api-key-rotation-xfk-b2Sv.js";
82
+ import "./api-key-rotation-Cf7QM5M_.js";
83
83
  import "./proxy-fetch-DEHZt1Tx.js";
84
- import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-DpXMFuAa.js";
84
+ import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-H_GSyyzN.js";
85
85
  import "./chunk-kLPohhLl.js";
86
- import "./markdown-tables-BYHgyUjA.js";
87
- import "./ir-DziC-P4Z.js";
86
+ import "./markdown-tables-DQlQMRGZ.js";
87
+ import "./ir-CEwBpxhC.js";
88
88
  import "./render-CXDO_kgw.js";
89
- import { a as ToolInputError } from "./target-errors-C5LA-JI-.js";
90
- import { r as isRestartEnabled } from "./commands-C67IbXs7.js";
91
- import "./commands-registry-D0_D5hFV.js";
89
+ import { a as ToolInputError } from "./target-errors-DPJ9HFp9.js";
90
+ import { r as isRestartEnabled } from "./commands-d8L0zY8O.js";
91
+ import "./commands-registry-C78O6aNi.js";
92
92
  import "./fetch-BM2hI5N6.js";
93
93
  import "./retry-DwXRBpwv.js";
94
- import { a as readChannelAllowFromStoreSync } from "./pairing-store-BfzlN-z9.js";
94
+ import { a as readChannelAllowFromStoreSync } from "./pairing-store-rFuiIoGM.js";
95
95
  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-HRn5F9dF.js";
96
- import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-DcxCMjOs.js";
97
- import { n as resolveSystemRunCommand } from "./system-run-command-GKGzGztn.js";
98
- import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-BncMg1bn.js";
96
+ import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-BHwVUMr8.js";
97
+ import { n as resolveSystemRunCommand } from "./system-run-command-XHAlbx5q.js";
98
+ import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-DxaIoRMp.js";
99
99
  import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-BCEcVVJ6.js";
100
100
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-JlIz56oG.js";
101
- 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-CYucDd3C.js";
102
- import { t as listAgentWorkspaceDirs } from "./workspace-dirs-BOgNOBjy.js";
101
+ 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-Cpr3Poo2.js";
102
+ import { t as listAgentWorkspaceDirs } from "./workspace-dirs-Bevk6X_8.js";
103
103
  import { t as getChannelActivity } from "./channel-activity-C-cvytUe.js";
104
104
  import { n as normalizePollInput } from "./polls-CWOwBT3z.js";
105
- import "./tables-DVXe5x1J.js";
106
- import "./server-lifecycle-B2y6Fg7R.js";
105
+ import "./tables-BOsRa7CS.js";
106
+ import "./server-lifecycle-CcYnyYPQ.js";
107
107
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-Cek4Eizw.js";
108
- import { n as resolveMessageChannelSelection } from "./channel-selection-D8KYuWir.js";
109
- import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-DER6qA6X.js";
110
- import "./send-CQJKPGw4.js";
111
- import "./outbound-attachment-CXINK8df.js";
108
+ import { n as resolveMessageChannelSelection } from "./channel-selection-DGtYwfd7.js";
109
+ import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-S_lBQAKI.js";
110
+ import "./send-CZ2O-5pP.js";
111
+ import "./outbound-attachment-DM-h2uQ1.js";
112
112
  import "./delivery-queue-DhqwvOP8.js";
113
- import "./send-e1X1pfda.js";
114
- import "./resolve-route-Cnto8LMw.js";
115
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-BH0D2kX0.js";
113
+ import "./send-BCLu4NEE.js";
114
+ import "./resolve-route-ByAwAiq5.js";
115
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DRW8ya1z.js";
116
116
  import "./proxy-Dz7xT2Z_.js";
117
- import "./replies-Ckd7Lwt0.js";
118
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-CczYNQDJ.js";
117
+ import "./replies-BDnb0prE.js";
118
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-D8lLbK3A.js";
119
119
  import "./prompt-style-CzS6Prvl.js";
120
- import "./pairing-labels-CFSUHOmk.js";
121
- import "./session-meta-DF1WT4cr.js";
122
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-CuT-iG2F.js";
123
- import { r as resolveMemorySearchConfig } from "./manager-7hZXEYTj.js";
124
- import "./query-expansion-BrM3X6-L.js";
120
+ import "./pairing-labels-x4akYNb7.js";
121
+ import "./session-meta-Cew1QAYN.js";
122
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BUrf60e_.js";
123
+ import { r as resolveMemorySearchConfig } from "./manager-DWpiNvlg.js";
124
+ import "./query-expansion-Ba9OpCm9.js";
125
125
  import { t as formatDocsLink } from "./links-BDNlbZvM.js";
126
126
  import { n as runCommandWithRuntime } from "./cli-utils-k9A6CA1o.js";
127
127
  import { t as formatHelpExamples } from "./help-format-B3bKmDqF.js";
@@ -132,46 +132,46 @@ import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-B9LIt3MU.
132
132
  import { n as inheritOptionFromParent } from "./command-options-ZvhOayEd.js";
133
133
  import { t as WizardCancelledError } from "./prompts-DomsZukd.js";
134
134
  import { t as resolveChannelDefaultAccountId } from "./helpers-B7sHmVvT.js";
135
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-CmUkQxtt.js";
136
- import { t as isWithinDir } from "./path-safety-tZSbJG67.js";
137
- import { t as assertCanonicalPathWithinBase } from "./install-safe-path-CWo3RPkH.js";
138
- import "./skill-scanner-BXOiOvI1.js";
139
- import { n as formatConfigIssueLines } from "./issue-format-CqVkT3gT.js";
135
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DA3Y8w1t.js";
136
+ import { t as isWithinDir } from "./path-safety-BxYB92SS.js";
137
+ import { t as assertCanonicalPathWithinBase } from "./install-safe-path-DVQh7rEs.js";
138
+ import "./skill-scanner-0-AybMIe.js";
139
+ import { n as formatConfigIssueLines } from "./issue-format-NBMJ5xAP.js";
140
140
  import { t as buildChannelAccountSnapshot } from "./status-BrwHRn2B.js";
141
- import "./channels-status-issues-5n9kobSz.js";
142
- 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-D3QFNQl8.js";
143
- import "./daemon-install-helpers-C1iBqd73.js";
141
+ import "./channels-status-issues-BMNB2aMG.js";
142
+ 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-kY3aFpcF.js";
143
+ import "./daemon-install-helpers-D5tste0V.js";
144
144
  import "./runtime-guard-Ch9ZniVU.js";
145
- import "./systemd-Dbwmb4TX.js";
146
- import "./service-Wk285d-R.js";
147
- import "./lifecycle-core-DAWYYqJl.js";
148
- import "./systemd-hints-VM2JkQxw.js";
145
+ import "./systemd-C4JtDaKk.js";
146
+ import "./service-CZORJG4z.js";
147
+ import "./lifecycle-core-oTVOKNSW.js";
148
+ import "./systemd-hints-ZHrBbXDd.js";
149
149
  import { t as parsePort$1 } from "./parse-port-DPUPC687.js";
150
- import { n as addGatewayServiceCommands } from "./daemon-cli-CFnqQB6M.js";
151
- import "./diagnostics-DooDWHeF.js";
150
+ import { n as addGatewayServiceCommands } from "./daemon-cli-oCVkh3bg.js";
151
+ import "./diagnostics-vLzdmcgg.js";
152
152
  import "./table-BHL_2Py1.js";
153
153
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-Dnn3h3FI.js";
154
- import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CJN2BLdi.js";
155
- import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-DJfP7KjJ.js";
156
- import { t as discoverGatewayBeacons } from "./bonjour-discovery-t-SAPCsb.js";
157
- import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-XGYDzhkW.js";
158
- import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-DugDjq1f.js";
159
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-M84PR-kz.js";
160
- import { o as isBitseekBuild } from "./status.update-n2QPQr8w.js";
161
- import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-CiCkIxCu.js";
162
- import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-BI0xjrHi.js";
163
- import { t as runOnboardingWizard } from "./onboarding-DNV-TKzA.js";
164
- 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-BKjyYFyk.js";
154
+ import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BZscafy-.js";
155
+ import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-TSVXvoTa.js";
156
+ import { t as discoverGatewayBeacons } from "./bonjour-discovery-B68dCYTY.js";
157
+ import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Dw7ag8qn.js";
158
+ import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-Dzwp2cfK.js";
159
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Czpjuiah.js";
160
+ import { o as isBitseekBuild } from "./status.update-B6whKviL.js";
161
+ import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-DNFdIaSr.js";
162
+ import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-Cx-7xFzl.js";
163
+ import { t as runOnboardingWizard } from "./onboarding-WDRpEgra.js";
164
+ 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-DRX0c6-y.js";
165
165
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CIlkd6Jc.js";
166
- import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-D7hSN9B8.js";
167
- import "./node-service-CzRylWgI.js";
166
+ import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-DMwxqhrG.js";
167
+ import "./node-service-83OYUi14.js";
168
168
  import "./constants-Dpz-jwYQ.js";
169
- import "./shared-BAdi_Ot7.js";
170
- import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-D52ggtQF.js";
171
- import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-BQyeS7wB.js";
172
- import { t as runGatewayUpdate } from "./update-runner-CX6jOI_r.js";
173
- import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DWBFoy1G.js";
174
- import { n as forceFreePortAndWait } from "./ports-zWusnrvP.js";
169
+ import "./shared-DvHQekWm.js";
170
+ import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-CXzE62ZH.js";
171
+ import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-C6-Zzqoi.js";
172
+ import { t as runGatewayUpdate } from "./update-runner-CHxTFtW8.js";
173
+ import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-A5CNJccm.js";
174
+ import { n as forceFreePortAndWait } from "./ports-tfS1haOJ.js";
175
175
  import { spawn, spawnSync } from "node:child_process";
176
176
  import { fileURLToPath, pathToFileURL } from "node:url";
177
177
  import path from "node:path";
@@ -180,7 +180,7 @@ import * as fsSync from "node:fs";
180
180
  import fs from "node:fs";
181
181
  import chalk from "chalk";
182
182
  import { isDeepStrictEqual } from "node:util";
183
- import fs$1 from "node:fs/promises";
183
+ import fsPromises from "node:fs/promises";
184
184
  import crypto, { createHash, randomBytes, randomUUID } from "node:crypto";
185
185
  import { z } from "zod";
186
186
  import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
@@ -1250,7 +1250,7 @@ function resolveCheckIntervalMs(cfg) {
1250
1250
  }
1251
1251
  async function readState(statePath) {
1252
1252
  try {
1253
- const raw = await fs$1.readFile(statePath, "utf-8");
1253
+ const raw = await fsPromises.readFile(statePath, "utf-8");
1254
1254
  const parsed = JSON.parse(raw);
1255
1255
  return parsed && typeof parsed === "object" ? parsed : {};
1256
1256
  } catch {
@@ -1331,7 +1331,7 @@ async function runAutoUpdateCommand(params) {
1331
1331
  path.join(params.root, "dist", "index.mjs")
1332
1332
  ];
1333
1333
  for (const candidate of candidates) try {
1334
- await fs$1.access(candidate);
1334
+ await fsPromises.access(candidate);
1335
1335
  argv.push(execPath, candidate, ...baseArgs);
1336
1336
  break;
1337
1337
  } catch {}
@@ -4406,20 +4406,20 @@ async function drainPendingWrite(filePath) {
4406
4406
  if (pending) await pending.catch(() => void 0);
4407
4407
  }
4408
4408
  async function pruneIfNeeded(filePath, opts) {
4409
- const stat = await fs$1.stat(filePath).catch(() => null);
4409
+ const stat = await fsPromises.stat(filePath).catch(() => null);
4410
4410
  if (!stat || stat.size <= opts.maxBytes) return;
4411
- const lines = (await fs$1.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
4411
+ const lines = (await fsPromises.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
4412
4412
  const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
4413
4413
  const { randomBytes } = await import("node:crypto");
4414
4414
  const tmp = `${filePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
4415
- await fs$1.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
4416
- await fs$1.rename(tmp, filePath);
4415
+ await fsPromises.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
4416
+ await fsPromises.rename(tmp, filePath);
4417
4417
  }
4418
4418
  async function appendCronRunLog(filePath, entry, opts) {
4419
4419
  const resolved = path.resolve(filePath);
4420
4420
  const next = (writesByPath.get(resolved) ?? Promise.resolve()).catch(() => void 0).then(async () => {
4421
- await fs$1.mkdir(path.dirname(resolved), { recursive: true });
4422
- await fs$1.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
4421
+ await fsPromises.mkdir(path.dirname(resolved), { recursive: true });
4422
+ await fsPromises.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
4423
4423
  await pruneIfNeeded(resolved, {
4424
4424
  maxBytes: opts?.maxBytes ?? DEFAULT_CRON_RUN_LOG_MAX_BYTES,
4425
4425
  keepLines: opts?.keepLines ?? DEFAULT_CRON_RUN_LOG_KEEP_LINES
@@ -4513,7 +4513,7 @@ function filterRunLogEntries(entries, opts) {
4513
4513
  async function readCronRunLogEntriesPage(filePath, opts) {
4514
4514
  await drainPendingWrite(filePath);
4515
4515
  const limit = Math.max(1, Math.min(200, Math.floor(opts?.limit ?? 50)));
4516
- const raw = await fs$1.readFile(path.resolve(filePath), "utf-8").catch(() => "");
4516
+ const raw = await fsPromises.readFile(path.resolve(filePath), "utf-8").catch(() => "");
4517
4517
  const statuses = normalizeRunStatuses(opts);
4518
4518
  const deliveryStatuses = normalizeDeliveryStatuses(opts);
4519
4519
  const query = opts?.query?.trim().toLowerCase() ?? "";
@@ -4549,7 +4549,7 @@ async function readCronRunLogEntriesPageAll(opts) {
4549
4549
  const query = opts.query?.trim().toLowerCase() ?? "";
4550
4550
  const sortDir = opts.sortDir === "asc" ? "asc" : "desc";
4551
4551
  const runsDir = path.resolve(path.dirname(path.resolve(opts.storePath)), "runs");
4552
- 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
+ const jsonlFiles = (await fsPromises.readdir(runsDir, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path.join(runsDir, entry.name));
4553
4553
  if (jsonlFiles.length === 0) return {
4554
4554
  entries: [],
4555
4555
  total: 0,
@@ -4560,7 +4560,7 @@ async function readCronRunLogEntriesPageAll(opts) {
4560
4560
  };
4561
4561
  await Promise.all(jsonlFiles.map((f) => drainPendingWrite(f)));
4562
4562
  const filtered = filterRunLogEntries((await Promise.all(jsonlFiles.map(async (filePath) => {
4563
- return parseAllRunLogEntries(await fs$1.readFile(filePath, "utf-8").catch(() => ""));
4563
+ return parseAllRunLogEntries(await fsPromises.readFile(filePath, "utf-8").catch(() => ""));
4564
4564
  }))).flat(), {
4565
4565
  statuses,
4566
4566
  deliveryStatuses,
@@ -9768,7 +9768,7 @@ function resolveAgentWorkspaceFileOrRespondError(params, respond) {
9768
9768
  }
9769
9769
  async function resolveWorkspaceRealPath(workspaceDir) {
9770
9770
  try {
9771
- return await fs$1.realpath(workspaceDir);
9771
+ return await fsPromises.realpath(workspaceDir);
9772
9772
  } catch {
9773
9773
  return path.resolve(workspaceDir);
9774
9774
  }
@@ -9792,7 +9792,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9792
9792
  }
9793
9793
  let candidateLstat;
9794
9794
  try {
9795
- candidateLstat = await fs$1.lstat(candidatePath);
9795
+ candidateLstat = await fsPromises.lstat(candidatePath);
9796
9796
  } catch (err) {
9797
9797
  if (isNotFoundPathError(err)) {
9798
9798
  if (params.allowMissing) return {
@@ -9812,7 +9812,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9812
9812
  if (candidateLstat.isSymbolicLink()) {
9813
9813
  let targetReal;
9814
9814
  try {
9815
- targetReal = await fs$1.realpath(candidatePath);
9815
+ targetReal = await fsPromises.realpath(candidatePath);
9816
9816
  } catch (err) {
9817
9817
  if (isNotFoundPathError(err)) {
9818
9818
  if (params.allowMissing) return {
@@ -9831,7 +9831,7 @@ async function resolveAgentWorkspaceFilePath(params) {
9831
9831
  }
9832
9832
  let targetStat;
9833
9833
  try {
9834
- targetStat = await fs$1.stat(targetReal);
9834
+ targetStat = await fsPromises.stat(targetReal);
9835
9835
  } catch (err) {
9836
9836
  if (isNotFoundPathError(err)) {
9837
9837
  if (params.allowMissing) return {
@@ -9878,13 +9878,13 @@ async function resolveAgentWorkspaceFilePath(params) {
9878
9878
  return {
9879
9879
  kind: "ready",
9880
9880
  requestPath,
9881
- ioPath: await fs$1.realpath(candidatePath).catch(() => candidatePath),
9881
+ ioPath: await fsPromises.realpath(candidatePath).catch(() => candidatePath),
9882
9882
  workspaceReal
9883
9883
  };
9884
9884
  }
9885
9885
  async function statFileSafely(filePath) {
9886
9886
  try {
9887
- const [stat, lstat] = await Promise.all([fs$1.stat(filePath), fs$1.lstat(filePath)]);
9887
+ const [stat, lstat] = await Promise.all([fsPromises.stat(filePath), fsPromises.lstat(filePath)]);
9888
9888
  if (lstat.isSymbolicLink() || !stat.isFile()) return null;
9889
9889
  if (stat.nlink > 1) return null;
9890
9890
  if (!sameFileIdentity(stat, lstat)) return null;
@@ -9969,7 +9969,7 @@ function resolveOptionalStringParam(value) {
9969
9969
  async function moveToTrashBestEffort(pathname) {
9970
9970
  if (!pathname) return;
9971
9971
  try {
9972
- await fs$1.access(pathname);
9972
+ await fsPromises.access(pathname);
9973
9973
  } catch {
9974
9974
  return;
9975
9975
  }
@@ -10045,7 +10045,7 @@ const agentsHandlers = {
10045
10045
  dir: workspaceDir,
10046
10046
  ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
10047
10047
  });
10048
- await fs$1.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10048
+ await fsPromises.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10049
10049
  await writeConfigFile(nextConfig);
10050
10050
  const safeName = sanitizeIdentityLine(rawName);
10051
10051
  const emoji = resolveOptionalStringParam(params.emoji);
@@ -10058,7 +10058,7 @@ const agentsHandlers = {
10058
10058
  ...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
10059
10059
  ""
10060
10060
  ];
10061
- await fs$1.appendFile(identityPath, lines.join("\n"), "utf-8");
10061
+ await fsPromises.appendFile(identityPath, lines.join("\n"), "utf-8");
10062
10062
  respond(true, {
10063
10063
  ok: true,
10064
10064
  agentId,
@@ -10093,9 +10093,9 @@ const agentsHandlers = {
10093
10093
  });
10094
10094
  if (avatar) {
10095
10095
  const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
10096
- await fs$1.mkdir(workspace, { recursive: true });
10096
+ await fsPromises.mkdir(workspace, { recursive: true });
10097
10097
  const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
10098
- await fs$1.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10098
+ await fsPromises.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10099
10099
  }
10100
10100
  respond(true, {
10101
10101
  ok: true,
@@ -10219,7 +10219,7 @@ const agentsHandlers = {
10219
10219
  const resolved = resolveAgentWorkspaceFileOrRespondError(params, respond);
10220
10220
  if (!resolved) return;
10221
10221
  const { agentId, workspaceDir, name } = resolved;
10222
- await fs$1.mkdir(workspaceDir, { recursive: true });
10222
+ await fsPromises.mkdir(workspaceDir, { recursive: true });
10223
10223
  const filePath = path.join(workspaceDir, name);
10224
10224
  const resolvedPath = await resolveWorkspaceFilePathOrRespond({
10225
10225
  respond,
@@ -12512,14 +12512,14 @@ function isRollingLogFile(file) {
12512
12512
  return ROLLING_LOG_RE.test(path.basename(file));
12513
12513
  }
12514
12514
  async function resolveLogFile(file) {
12515
- if (await fs$1.stat(file).catch(() => null)) return file;
12515
+ if (await fsPromises.stat(file).catch(() => null)) return file;
12516
12516
  if (!isRollingLogFile(file)) return file;
12517
12517
  const dir = path.dirname(file);
12518
- const entries = await fs$1.readdir(dir, { withFileTypes: true }).catch(() => null);
12518
+ const entries = await fsPromises.readdir(dir, { withFileTypes: true }).catch(() => null);
12519
12519
  if (!entries) return file;
12520
12520
  return (await Promise.all(entries.filter((entry) => entry.isFile() && ROLLING_LOG_RE.test(entry.name)).map(async (entry) => {
12521
12521
  const fullPath = path.join(dir, entry.name);
12522
- const fileStat = await fs$1.stat(fullPath).catch(() => null);
12522
+ const fileStat = await fsPromises.stat(fullPath).catch(() => null);
12523
12523
  return fileStat ? {
12524
12524
  path: fullPath,
12525
12525
  mtimeMs: fileStat.mtimeMs
@@ -12527,7 +12527,7 @@ async function resolveLogFile(file) {
12527
12527
  }))).filter((entry) => Boolean(entry)).toSorted((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path ?? file;
12528
12528
  }
12529
12529
  async function readLogSlice(params) {
12530
- const stat = await fs$1.stat(params.file).catch(() => null);
12530
+ const stat = await fsPromises.stat(params.file).catch(() => null);
12531
12531
  if (!stat) return {
12532
12532
  cursor: 0,
12533
12533
  size: 0,
@@ -12565,7 +12565,7 @@ async function readLogSlice(params) {
12565
12565
  truncated,
12566
12566
  reset
12567
12567
  };
12568
- const handle = await fs$1.open(params.file, "r");
12568
+ const handle = await fsPromises.open(params.file, "r");
12569
12569
  try {
12570
12570
  let prefix = "";
12571
12571
  if (start > 0) {
@@ -13612,7 +13612,7 @@ const nodeHandlers = {
13612
13612
  const p = params;
13613
13613
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
13614
13614
  await respondUnavailableOnThrow(respond, async () => {
13615
- const { handleNodeEvent } = await import("./server-node-events-BwnXBzS2.js");
13615
+ const { handleNodeEvent } = await import("./server-node-events-B5xSV7Kq.js");
13616
13616
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
13617
13617
  await handleNodeEvent({
13618
13618
  deps: context.deps,
@@ -14007,120 +14007,283 @@ const sendHandlers = {
14007
14007
  //#region src/agents/skills-market-catalog.ts
14008
14008
  const OFFICIAL_MARKET_CATALOG = [
14009
14009
  {
14010
- id: "bnbchain-mcp-skill",
14011
- skillKey: "bnbchain-mcp-skill",
14012
- name: "BNB Chain MCP Toolkit",
14013
- summary: "Install and use BNB Chain MCP for blocks, transactions, contracts, token/NFT transfers, ERC-8004, and Greenfield operations.",
14014
- provider: "BNB Chain",
14015
- category: "infrastructure",
14010
+ id: "xiaohongshu-mcp",
14011
+ skillKey: "xiaohongshu-mcp",
14012
+ name: "Xiaohongshu Automation",
14013
+ summary: "Automate Xiaohongshu workflows for content operations and publishing tasks through a ClawHub skill.",
14014
+ provider: "Borye",
14015
+ category: "automation",
14016
14016
  tags: [
14017
- "web3",
14018
- "bnb",
14019
- "bsc",
14020
- "opbnb",
14021
- "mcp",
14022
- "greenfield",
14023
- "erc-8004"
14017
+ "xiaohongshu",
14018
+ "automation",
14019
+ "social",
14020
+ "publishing",
14021
+ "mcp"
14024
14022
  ],
14025
- sourceType: "local",
14026
- templateDir: "bnbchain-mcp-skill",
14023
+ stars: 60,
14024
+ downloads: 15840,
14025
+ sourceType: "clawhub",
14026
+ slug: "xiaohongshu-mcp",
14027
14027
  official: true
14028
14028
  },
14029
14029
  {
14030
- id: "okx-dex-market",
14031
- skillKey: "okx-dex-market",
14032
- name: "OKX DEX Market Data",
14033
- summary: "Fetch real-time prices, candlesticks, trade history, and index prices across XLayer, Solana, Ethereum, Base, BSC, and more.",
14034
- provider: "OKX",
14035
- category: "onchain-data",
14030
+ id: "github",
14031
+ skillKey: "github",
14032
+ name: "Github",
14033
+ summary: "Work with GitHub repositories, issues, pull requests, and other developer workflows from ClawHub.",
14034
+ provider: "steipete",
14035
+ category: "developer-tools",
14036
14036
  tags: [
14037
- "web3",
14038
- "okx",
14039
- "dex",
14040
- "price",
14041
- "candles",
14042
- "market",
14043
- "index"
14037
+ "github",
14038
+ "git",
14039
+ "developer",
14040
+ "issues",
14041
+ "pull-requests"
14044
14042
  ],
14045
- sourceType: "local",
14046
- templateDir: "okx-dex-market",
14043
+ stars: 323,
14044
+ downloads: 99937,
14045
+ sourceType: "clawhub",
14046
+ slug: "github",
14047
14047
  official: true
14048
14048
  },
14049
14049
  {
14050
- id: "okx-dex-token",
14051
- skillKey: "okx-dex-token",
14052
- name: "OKX Token Discovery",
14053
- summary: "Search tokens, inspect metadata, market cap, liquidity, rankings, and holder distribution across 20+ chains.",
14054
- provider: "OKX",
14055
- category: "onchain-data",
14050
+ id: "openai-whisper",
14051
+ skillKey: "openai-whisper",
14052
+ name: "Openai Whisper",
14053
+ summary: "Transcribe and process audio with Whisper via a ClawHub skill for speech-to-text workflows.",
14054
+ provider: "steipete",
14055
+ category: "audio-media",
14056
+ tags: [
14057
+ "audio",
14058
+ "transcription",
14059
+ "whisper",
14060
+ "speech-to-text",
14061
+ "media"
14062
+ ],
14063
+ stars: 197,
14064
+ downloads: 42056,
14065
+ sourceType: "clawhub",
14066
+ slug: "openai-whisper",
14067
+ official: true
14068
+ },
14069
+ {
14070
+ id: "skill-vetter",
14071
+ skillKey: "skill-vetter",
14072
+ name: "Skill Vetter",
14073
+ summary: "Review and vet skills before adoption to help evaluate quality, fit, and readiness.",
14074
+ provider: "spclaudehome",
14075
+ category: "meta-security",
14076
+ tags: [
14077
+ "skills",
14078
+ "review",
14079
+ "vetting",
14080
+ "quality",
14081
+ "evaluation"
14082
+ ],
14083
+ stars: 290,
14084
+ downloads: 73729,
14085
+ sourceType: "clawhub",
14086
+ slug: "skill-vetter",
14087
+ official: true
14088
+ },
14089
+ {
14090
+ id: "gog",
14091
+ skillKey: "gog",
14092
+ name: "Gog",
14093
+ summary: "Use Gog from ClawHub for developer and command-line workflows that benefit from fast utility tooling.",
14094
+ provider: "steipete",
14095
+ category: "developer-tools",
14096
+ tags: [
14097
+ "developer",
14098
+ "cli",
14099
+ "tooling",
14100
+ "workflow",
14101
+ "utility"
14102
+ ],
14103
+ stars: 705,
14104
+ downloads: 106425,
14105
+ sourceType: "clawhub",
14106
+ slug: "gog",
14107
+ official: true
14108
+ },
14109
+ {
14110
+ id: "openclaw-tavily-search",
14111
+ skillKey: "openclaw-tavily-search",
14112
+ name: "Tavily Web Search",
14113
+ summary: "Search the web with Tavily through ClawHub for current information gathering and lightweight research.",
14114
+ provider: "Jacky1n7",
14115
+ category: "search-research",
14056
14116
  tags: [
14057
- "web3",
14058
- "okx",
14059
- "token",
14060
14117
  "search",
14061
- "market-cap",
14062
- "holders",
14063
- "ranking"
14118
+ "web",
14119
+ "research",
14120
+ "tavily",
14121
+ "current-events"
14122
+ ],
14123
+ stars: 26,
14124
+ downloads: 17437,
14125
+ sourceType: "clawhub",
14126
+ slug: "openclaw-tavily-search",
14127
+ official: true
14128
+ },
14129
+ {
14130
+ id: "summarize",
14131
+ skillKey: "summarize",
14132
+ name: "Summarize",
14133
+ summary: "Summarize documents, pages, and other text content through a focused ClawHub skill.",
14134
+ provider: "steipete",
14135
+ category: "search-research",
14136
+ tags: [
14137
+ "summarization",
14138
+ "text",
14139
+ "research",
14140
+ "documents",
14141
+ "analysis"
14064
14142
  ],
14065
- sourceType: "local",
14066
- templateDir: "okx-dex-token",
14143
+ stars: 542,
14144
+ downloads: 139326,
14145
+ sourceType: "clawhub",
14146
+ slug: "summarize",
14067
14147
  official: true
14068
14148
  },
14069
14149
  {
14070
- id: "okx-wallet-portfolio",
14071
- skillKey: "okx-wallet-portfolio",
14072
- name: "OKX Wallet Portfolio",
14073
- summary: "Check wallet total value, token holdings, and per-token balances across XLayer, Solana, Ethereum, Base, BSC, and more.",
14074
- provider: "OKX",
14075
- category: "wallet",
14150
+ id: "skill-security-auditor",
14151
+ skillKey: "skill-security-auditor",
14152
+ name: "Skill Security Auditor",
14153
+ summary: "Audit skills for security concerns and suspicious patterns before enabling them in production workflows.",
14154
+ provider: "akhmittra",
14155
+ category: "meta-security",
14076
14156
  tags: [
14077
- "web3",
14078
- "okx",
14079
- "wallet",
14080
- "portfolio",
14081
- "balance",
14082
- "holdings"
14157
+ "security",
14158
+ "audit",
14159
+ "skills",
14160
+ "review",
14161
+ "risk"
14083
14162
  ],
14084
- sourceType: "local",
14085
- templateDir: "okx-wallet-portfolio",
14163
+ stars: 2,
14164
+ downloads: 2547,
14165
+ sourceType: "clawhub",
14166
+ slug: "skill-security-auditor",
14086
14167
  official: true
14087
14168
  },
14088
14169
  {
14089
- id: "okx-dex-swap",
14090
- skillKey: "okx-dex-swap",
14091
- name: "OKX DEX Swap Aggregator",
14092
- summary: "Get optimized swap routes and execution payloads using 500+ liquidity sources with slippage controls.",
14093
- provider: "OKX",
14094
- category: "defi",
14170
+ id: "self-improving-agent",
14171
+ skillKey: "self-improving-agent",
14172
+ name: "Self Improving Agent",
14173
+ summary: "Use a ClawHub agent focused on iterating on its own behavior and improving workflows over time.",
14174
+ provider: "pskoett",
14175
+ category: "meta-security",
14095
14176
  tags: [
14096
- "web3",
14097
- "okx",
14098
- "dex",
14099
- "swap",
14100
- "routing",
14101
- "liquidity"
14177
+ "agent",
14178
+ "self-improvement",
14179
+ "iteration",
14180
+ "optimization",
14181
+ "meta"
14102
14182
  ],
14103
- sourceType: "local",
14104
- templateDir: "okx-dex-swap",
14183
+ stars: 1863,
14184
+ downloads: 185770,
14185
+ sourceType: "clawhub",
14186
+ slug: "self-improving-agent",
14105
14187
  official: true
14106
14188
  },
14107
14189
  {
14108
- id: "okx-onchain-gateway",
14109
- skillKey: "okx-onchain-gateway",
14110
- name: "OKX Onchain Gateway",
14111
- summary: "Estimate gas, simulate transactions, broadcast signed transactions, and track transaction orders on 20+ chains.",
14112
- provider: "OKX",
14113
- category: "infrastructure",
14190
+ id: "find-skills",
14191
+ skillKey: "find-skills",
14192
+ name: "Find Skills",
14193
+ summary: "Discover relevant ClawHub skills for a task so agents can expand capabilities on demand.",
14194
+ provider: "JimLiuxinghai",
14195
+ category: "meta-security",
14114
14196
  tags: [
14115
- "web3",
14116
- "okx",
14117
- "transaction",
14118
- "gas",
14119
- "simulate",
14120
- "broadcast"
14197
+ "skills",
14198
+ "discovery",
14199
+ "registry",
14200
+ "clawhub",
14201
+ "meta"
14121
14202
  ],
14122
- sourceType: "local",
14123
- templateDir: "okx-onchain-gateway",
14203
+ stars: 766,
14204
+ downloads: 181109,
14205
+ sourceType: "clawhub",
14206
+ slug: "find-skills",
14207
+ official: true
14208
+ },
14209
+ {
14210
+ id: "obsidian",
14211
+ skillKey: "obsidian",
14212
+ name: "Obsidian",
14213
+ summary: "Work with Obsidian notes and knowledge-base content through a ClawHub integration skill.",
14214
+ provider: "steipete",
14215
+ category: "developer-tools",
14216
+ tags: [
14217
+ "obsidian",
14218
+ "notes",
14219
+ "knowledge-base",
14220
+ "markdown",
14221
+ "productivity"
14222
+ ],
14223
+ stars: 187,
14224
+ downloads: 47182,
14225
+ sourceType: "clawhub",
14226
+ slug: "obsidian",
14227
+ official: true
14228
+ },
14229
+ {
14230
+ id: "skill-creator-2",
14231
+ skillKey: "skill-creator-2",
14232
+ name: "Skill creator",
14233
+ summary: "Create new skills with a ClawHub-assisted builder aimed at packaging and publishing reusable capabilities.",
14234
+ provider: "yixinli867",
14235
+ category: "meta-security",
14236
+ tags: [
14237
+ "skills",
14238
+ "creator",
14239
+ "builder",
14240
+ "packaging",
14241
+ "clawhub"
14242
+ ],
14243
+ stars: 26,
14244
+ downloads: 5116,
14245
+ sourceType: "clawhub",
14246
+ slug: "skill-creator-2",
14247
+ official: true
14248
+ },
14249
+ {
14250
+ id: "upload-post",
14251
+ skillKey: "upload-post",
14252
+ name: "Upload Post",
14253
+ summary: "Upload and publish posts through a ClawHub automation skill for social and content workflows.",
14254
+ provider: "victorcavero14",
14255
+ category: "automation",
14256
+ tags: [
14257
+ "upload",
14258
+ "post",
14259
+ "publishing",
14260
+ "social",
14261
+ "automation"
14262
+ ],
14263
+ stars: 35,
14264
+ downloads: 6588,
14265
+ sourceType: "clawhub",
14266
+ slug: "upload-post",
14267
+ official: true
14268
+ },
14269
+ {
14270
+ id: "security-auditor",
14271
+ skillKey: "security-auditor",
14272
+ name: "Security Auditor",
14273
+ summary: "Run security-oriented reviews and checks with a general-purpose ClawHub security auditing skill.",
14274
+ provider: "jgarrison929",
14275
+ category: "meta-security",
14276
+ tags: [
14277
+ "security",
14278
+ "auditor",
14279
+ "review",
14280
+ "analysis",
14281
+ "checks"
14282
+ ],
14283
+ stars: 14,
14284
+ downloads: 10926,
14285
+ sourceType: "clawhub",
14286
+ slug: "security-auditor",
14124
14287
  official: true
14125
14288
  }
14126
14289
  ];
@@ -14138,6 +14301,17 @@ function isCommandNotFoundResult(result) {
14138
14301
  const output = `${result.stderr}\n${result.stdout}`.toLowerCase();
14139
14302
  return output.includes("enoent") || output.includes("command not found") || output.includes("not recognized as an internal or external command");
14140
14303
  }
14304
+ async function runMarketInstallCommand(runCommand, argv, options) {
14305
+ try {
14306
+ return await runCommand(argv, options);
14307
+ } catch (err) {
14308
+ return {
14309
+ code: null,
14310
+ stdout: "",
14311
+ stderr: err instanceof Error ? err.message : String(err)
14312
+ };
14313
+ }
14314
+ }
14141
14315
  async function installLocalMarketSkill(params) {
14142
14316
  const templateDir = params.templateDir.trim();
14143
14317
  if (hasPathTraversal(templateDir)) return {
@@ -14158,11 +14332,11 @@ async function installLocalMarketSkill(params) {
14158
14332
  candidatePath: sourceDir,
14159
14333
  boundaryLabel: "market templates directory"
14160
14334
  });
14161
- if (!(await fs$1.stat(sourceDir)).isDirectory()) return {
14335
+ if (!(await fsPromises.stat(sourceDir)).isDirectory()) return {
14162
14336
  ok: false,
14163
14337
  message: `Local template "${templateDir}" is not a directory.`
14164
14338
  };
14165
- if (!(await fs$1.stat(sourceSkillPath)).isFile()) return {
14339
+ if (!(await fsPromises.stat(sourceSkillPath)).isFile()) return {
14166
14340
  ok: false,
14167
14341
  message: `Local template "${templateDir}" is missing SKILL.md.`
14168
14342
  };
@@ -14176,13 +14350,13 @@ async function installLocalMarketSkill(params) {
14176
14350
  const workspaceSkillsDir = path.join(workspaceDir, "skills");
14177
14351
  const targetDir = path.join(workspaceSkillsDir, templateDir);
14178
14352
  try {
14179
- await fs$1.mkdir(workspaceSkillsDir, { recursive: true });
14353
+ await fsPromises.mkdir(workspaceSkillsDir, { recursive: true });
14180
14354
  await assertCanonicalPathWithinBase({
14181
14355
  baseDir: workspaceSkillsDir,
14182
14356
  candidatePath: targetDir,
14183
14357
  boundaryLabel: "workspace skills directory"
14184
14358
  });
14185
- await fs$1.cp(sourceDir, targetDir, {
14359
+ await fsPromises.cp(sourceDir, targetDir, {
14186
14360
  recursive: true,
14187
14361
  force: true
14188
14362
  });
@@ -14206,7 +14380,7 @@ async function installClawhubMarketSkill(params, deps) {
14206
14380
  const workspaceDir = resolveUserPath(params.workspaceDir);
14207
14381
  const timeoutMs = Math.min(Math.max(params.timeoutMs ?? 3e5, 1e3), 9e5);
14208
14382
  const runCommand = deps?.runCommand ?? runCommandWithTimeout;
14209
- const first = await runCommand([
14383
+ const first = await runMarketInstallCommand(runCommand, [
14210
14384
  "clawhub",
14211
14385
  "install",
14212
14386
  slug
@@ -14222,7 +14396,7 @@ async function installClawhubMarketSkill(params, deps) {
14222
14396
  ok: false,
14223
14397
  message: `ClawHub install failed: ${formatInstallFailureMessage(first)}`
14224
14398
  };
14225
- const fallback = await runCommand([
14399
+ const fallback = await runMarketInstallCommand(runCommand, [
14226
14400
  "npx",
14227
14401
  "-y",
14228
14402
  "clawhub",
@@ -16968,7 +17142,7 @@ function normalizeAgentPayload(payload) {
16968
17142
  async function startBrowserControlServerIfEnabled() {
16969
17143
  if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
16970
17144
  const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
16971
- const mod = override ? await import(override) : await import("./server-DbB5aXZq.js");
17145
+ const mod = override ? await import(override) : await import("./server-CzDsmd9g.js");
16972
17146
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
16973
17147
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
16974
17148
  if (!start) return null;
@@ -17196,7 +17370,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
17196
17370
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
17197
17371
  const candidate = path.join(rootReal, rel);
17198
17372
  try {
17199
- const st = await fs$1.lstat(candidate);
17373
+ const st = await fsPromises.lstat(candidate);
17200
17374
  if (st.isSymbolicLink()) return null;
17201
17375
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
17202
17376
  } catch {}
@@ -17233,8 +17407,8 @@ async function resolveA2uiRoot() {
17233
17407
  for (const dir of candidates) try {
17234
17408
  const indexPath = path.join(dir, "index.html");
17235
17409
  const bundlePath = path.join(dir, "a2ui.bundle.js");
17236
- await fs$1.stat(indexPath);
17237
- await fs$1.stat(bundlePath);
17410
+ await fsPromises.stat(indexPath);
17411
+ await fsPromises.stat(bundlePath);
17238
17412
  return dir;
17239
17413
  } catch {}
17240
17414
  return null;
@@ -17243,7 +17417,7 @@ async function resolveA2uiRootReal() {
17243
17417
  if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
17244
17418
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
17245
17419
  const root = await resolveA2uiRoot();
17246
- cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
17420
+ cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
17247
17421
  cachedA2uiResolvedAtMs = Date.now();
17248
17422
  resolvingA2uiRoot = null;
17249
17423
  return cachedA2uiRootReal;
@@ -17464,13 +17638,13 @@ function normalizeBasePath(rawPath) {
17464
17638
  }
17465
17639
  async function prepareCanvasRoot(rootDir) {
17466
17640
  await ensureDir(rootDir);
17467
- const rootReal = await fs$1.realpath(rootDir);
17641
+ const rootReal = await fsPromises.realpath(rootDir);
17468
17642
  try {
17469
17643
  const indexPath = path.join(rootReal, "index.html");
17470
- await fs$1.stat(indexPath);
17644
+ await fsPromises.stat(indexPath);
17471
17645
  } catch {
17472
17646
  try {
17473
- await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
17647
+ await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
17474
17648
  } catch {}
17475
17649
  }
17476
17650
  return rootReal;
@@ -20477,7 +20651,7 @@ async function resolveGatewayOwnerStatus(pid, payload, platform, port) {
20477
20651
  }
20478
20652
  async function readLockPayload(lockPath) {
20479
20653
  try {
20480
- const raw = await fs$1.readFile(lockPath, "utf8");
20654
+ const raw = await fsPromises.readFile(lockPath, "utf8");
20481
20655
  const parsed = JSON.parse(raw);
20482
20656
  if (typeof parsed.pid !== "number") return null;
20483
20657
  if (typeof parsed.createdAt !== "string") return null;
@@ -20512,11 +20686,11 @@ async function acquireGatewayLock(opts = {}) {
20512
20686
  const platform = opts.platform ?? process.platform;
20513
20687
  const port = opts.port;
20514
20688
  const { lockPath, configPath } = resolveGatewayLockPath(env);
20515
- await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
20689
+ await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
20516
20690
  const startedAt = Date.now();
20517
20691
  let lastPayload = null;
20518
20692
  while (Date.now() - startedAt < timeoutMs) try {
20519
- const handle = await fs$1.open(lockPath, "wx");
20693
+ const handle = await fsPromises.open(lockPath, "wx");
20520
20694
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
20521
20695
  const payload = {
20522
20696
  pid: process.pid,
@@ -20530,7 +20704,7 @@ async function acquireGatewayLock(opts = {}) {
20530
20704
  configPath,
20531
20705
  release: async () => {
20532
20706
  await handle.close().catch(() => void 0);
20533
- await fs$1.rm(lockPath, { force: true });
20707
+ await fsPromises.rm(lockPath, { force: true });
20534
20708
  }
20535
20709
  };
20536
20710
  } catch (err) {
@@ -20539,7 +20713,7 @@ async function acquireGatewayLock(opts = {}) {
20539
20713
  const ownerPid = lastPayload?.pid;
20540
20714
  const ownerStatus = ownerPid ? await resolveGatewayOwnerStatus(ownerPid, lastPayload, platform, port) : "unknown";
20541
20715
  if (ownerStatus === "dead" && ownerPid) {
20542
- await fs$1.rm(lockPath, { force: true });
20716
+ await fsPromises.rm(lockPath, { force: true });
20543
20717
  continue;
20544
20718
  }
20545
20719
  if (ownerStatus !== "alive") {
@@ -20549,13 +20723,13 @@ async function acquireGatewayLock(opts = {}) {
20549
20723
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
20550
20724
  }
20551
20725
  if (!stale) try {
20552
- const st = await fs$1.stat(lockPath);
20726
+ const st = await fsPromises.stat(lockPath);
20553
20727
  stale = Date.now() - st.mtimeMs > staleMs;
20554
20728
  } catch {
20555
20729
  stale = false;
20556
20730
  }
20557
20731
  if (stale) {
20558
- await fs$1.rm(lockPath, { force: true });
20732
+ await fsPromises.rm(lockPath, { force: true });
20559
20733
  continue;
20560
20734
  }
20561
20735
  }
@@ -22865,7 +23039,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
22865
23039
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
22866
23040
  if (!minimalTestGateway) (async () => {
22867
23041
  const { recoverPendingDeliveries } = await import("./delivery-queue-DhqwvOP8.js").then((n) => n.n);
22868
- const { deliverOutboundPayloads } = await import("./deliver-DTgCZWjU.js").then((n) => n.n);
23042
+ const { deliverOutboundPayloads } = await import("./deliver-H0xCFj4j.js").then((n) => n.n);
22869
23043
  await recoverPendingDeliveries({
22870
23044
  deliver: deliverOutboundPayloads,
22871
23045
  log: log.child("delivery-recovery"),