wednesdayai 0.4.12-dev.720 → 0.4.12-dev.722

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 (446) hide show
  1. package/dist/{acp-cli-pyfXjm-X.js → acp-cli-DXVeP5by.js} +11 -11
  2. package/dist/{agent-scope-Dw728gHk.js → agent-scope-Dt0TVWFY.js} +20 -20
  3. package/dist/{agent-turn-enqueue-BNvNiMpq.js → agent-turn-enqueue-CsHMHVsf.js} +5 -5
  4. package/dist/{agent-turn-enqueue-Ca6nDySG.js → agent-turn-enqueue-QcHb-Wlq.js} +4 -4
  5. package/dist/{agent-turn-execute-DLS3hVZN.js → agent-turn-execute-pkDSwyuf.js} +186 -186
  6. package/dist/{agent-turn-recovery-adapter-D2yM42JV.js → agent-turn-recovery-adapter-CL4IrGUo.js} +1 -1
  7. package/dist/{agent-turn-recovery-adapter-BhqXEKaC.js → agent-turn-recovery-adapter-Dw5-XbMI.js} +3 -3
  8. package/dist/{agent-turn-runner-CNzxqAVO.js → agent-turn-runner-CUoz_Fkl.js} +1 -1
  9. package/dist/{agent-turn-runner-BDS9k--2.js → agent-turn-runner-DoHGgNPh.js} +4 -4
  10. package/dist/{agent-turn-runner-lDarvfDi.js → agent-turn-runner-LlrD6k2x.js} +3 -3
  11. package/dist/{agents-CCi5d3rh.js → agents-TOaKn6gk.js} +17 -17
  12. package/dist/{agents.config-D1RGbjKF.js → agents.config-96ueVlOH.js} +2 -2
  13. package/dist/{agents.config-BiZOgm5C.js → agents.config-DWMgN4qH.js} +1 -1
  14. package/dist/{api-key-rotation-BDa6RvrU.js → api-key-rotation-DiMQTef3.js} +1 -1
  15. package/dist/{audio-preflight-DvDzBaci.js → audio-preflight-B_5sTSyb.js} +5 -5
  16. package/dist/{audio-preflight-DxY7sUFD.js → audio-preflight-CO3ozqOb.js} +35 -35
  17. package/dist/{audio-preflight-DK8V6rCg.js → audio-preflight-p84ph4C7.js} +6 -6
  18. package/dist/{audio-transcription-runner-D-iXNE6Y.js → audio-transcription-runner-CsQR8LpS.js} +1 -1
  19. package/dist/{audio-transcription-runner-N8I-G4DN.js → audio-transcription-runner-Gr8vN3AS.js} +26 -26
  20. package/dist/{audio-transcription-runner-DFQtapUX.js → audio-transcription-runner-XFfvRPXl.js} +1 -1
  21. package/dist/{audit-3p1cCyN-.js → audit-8O6sjQPv.js} +29 -29
  22. package/dist/{audit-Dz2E9h1H.js → audit-CzREkjwC.js} +3 -3
  23. package/dist/{auth-BdqTyBRn.js → auth-Cx-Q9zgv.js} +4 -4
  24. package/dist/{auth-choice-Bn539iDJ.js → auth-choice-C0dQwQuu.js} +15 -15
  25. package/dist/{auth-choice-BjBu2HIJ.js → auth-choice-DtRePxUx.js} +13 -13
  26. package/dist/{auth-choice-CtjeyUxN.js → auth-choice-s0pWvSbn.js} +1 -1
  27. package/dist/{auth-choice.apply-helpers-BjbwkC61.js → auth-choice.apply-helpers-Bplvajjf.js} +1 -1
  28. package/dist/{auth-token-BhGJiF3k.js → auth-token-xxEJDMxh.js} +2 -2
  29. package/dist/{banner-DeTwUKJw.js → banner-BwICuMvl.js} +4 -4
  30. package/dist/{bonjour-discovery-Df2P-Q7o.js → bonjour-discovery-B1GbNHC3.js} +3 -3
  31. package/dist/{browser-cli-CM2fkqWj.js → browser-cli-NV-pdj3F.js} +19 -19
  32. package/dist/build-info.json +3 -3
  33. package/dist/bundled/boot-md/handler.js +12 -12
  34. package/dist/bundled/session-journal/handler.js +12 -12
  35. package/dist/bundled/session-memory/handler.js +12 -12
  36. package/dist/{call-UfwN5rR7.js → call-PE59cW0J.js} +12 -12
  37. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  38. package/dist/{channel-account-context-BeP04lVU.js → channel-account-context-DM1npKXX.js} +6 -6
  39. package/dist/{channel-activity-DF1lamZi.js → channel-activity-SqK9nKf7.js} +2 -2
  40. package/dist/{channel-options-HOe8Wb7T.js → channel-options-BmfLwNE6.js} +3 -3
  41. package/dist/{channel-options-CPd94dTo.js → channel-options-CurDeT7Z.js} +1 -1
  42. package/dist/{channel-selection-CNMEexgg.js → channel-selection-DfNPCJXK.js} +1 -1
  43. package/dist/{channels-cli-CvJYuVVM.js → channels-cli-CZqlXMjZ.js} +114 -114
  44. package/dist/{channels-cli-BJlbTkJA.js → channels-cli-D2PB80Ed.js} +23 -23
  45. package/dist/{channels-status-issues-CdhIpbIH.js → channels-status-issues-B4p6AXBG.js} +1 -1
  46. package/dist/{chrome-Ch-PRzot.js → chrome-BsgpiutB.js} +6 -6
  47. package/dist/{chrome-nLlFTBUI.js → chrome-FHxGdLnd.js} +8 -8
  48. package/dist/{chunk-dZYOJUMQ.js → chunk-DiXpyRAz.js} +2 -2
  49. package/dist/{clack-prompter-DGDmJDVW.js → clack-prompter-fldgCPEr.js} +5 -5
  50. package/dist/{clawbot-cli-krI9B7O9.js → clawbot-cli-C91sysrP.js} +15 -15
  51. package/dist/cli/daemon-cli.js +1 -1
  52. package/dist/cli-DJUeQG1g.js +164 -0
  53. package/dist/{cli-Clb9hAIp.js → cli-YKA_HQlq.js} +17 -17
  54. package/dist/{client-BGqFY5o-.js → client-DN-SMVBn.js} +3 -3
  55. package/dist/{client-profiles-CRejJ0SL.js → client-profiles-DEoACLX5.js} +2 -2
  56. package/dist/{clipboard-DnrCtTv6.js → clipboard-DczD_L5d.js} +1 -1
  57. package/dist/{command-queue-BoBsMaob.js → command-queue-B3_VRNOr.js} +1 -1
  58. package/dist/{command-queue-CK20dQVc.js → command-queue-Bn2PHabT.js} +1 -1
  59. package/dist/{command-queue-DmPFhCm2.js → command-queue-CkNuNlmY.js} +1 -1
  60. package/dist/{command-registry-C7V01SL9.js → command-registry-Dok3-b8T.js} +14 -14
  61. package/dist/{command-secret-targets-DtnfBTvl.js → command-secret-targets-CJ1czw_Q.js} +4 -4
  62. package/dist/{commands-Byb21m-W.js → commands-Csxgimkc.js} +1 -1
  63. package/dist/{commands-registry-fXBoHxbT.js → commands-registry-Dx5QvNqH.js} +3 -3
  64. package/dist/{completion-cli-C1TbI3Nq.js → completion-cli-Ctg9QIDB.js} +16 -16
  65. package/dist/{completion-cli-Nhp2rZs6.js → completion-cli-DzgbSYNf.js} +1 -1
  66. package/dist/{config-CRFk9Bjq.js → config-BPACL-n5.js} +51 -51
  67. package/dist/{config-cli-BbSkPwpp.js → config-cli-BUrIABmo.js} +1 -1
  68. package/dist/{config-cli-BZACiXqP.js → config-cli-Bp3NVXJ8.js} +10 -10
  69. package/dist/{config-guard-D407qaoD.js → config-guard-CdfLkwSv.js} +4 -4
  70. package/dist/{config-validation-KuIoSFk6.js → config-validation-BdrPl8og.js} +2 -2
  71. package/dist/{configure-DPlcHPb2.js → configure-CAdfZJx3.js} +3 -3
  72. package/dist/{configure-Cqjr_du7.js → configure-CFjjPHas.js} +25 -25
  73. package/dist/{control-ui-assets-CZc_jZ5P.js → control-ui-assets-BXkk_vKO.js} +3 -3
  74. package/dist/{controller-DhhnKGZm.js → controller-CyFBTP5K.js} +1 -1
  75. package/dist/{credentials-QcQyEdJH.js → credentials-DVI9X-9y.js} +1 -1
  76. package/dist/{cron-cli-CaA0d8t9.js → cron-cli-BuVrA_FU.js} +13 -13
  77. package/dist/{daemon-cli-BHHTg_VA.js → daemon-cli-D874Hxry.js} +19 -19
  78. package/dist/daemon-cli.js +7 -7
  79. package/dist/{daemon-install-E2_ktpUO.js → daemon-install-BuETscSF.js} +11 -11
  80. package/dist/{daemon-install-helpers-Di-kgTCh.js → daemon-install-helpers-CKbnFsNZ.js} +13 -13
  81. package/dist/{deliver-CaBp0YZL.js → deliver-BLp1Q7uO.js} +9 -9
  82. package/dist/{deliver-DFUO2CfJ.js → deliver-CXqNQ8yi.js} +1 -1
  83. package/dist/{deliver-DZG38ZGm.js → deliver-rLn-23ud.js} +1 -1
  84. package/dist/{devices-cli-CyO1xf6G.js → devices-cli-PIMtgiCQ.js} +12 -12
  85. package/dist/{diagnostic-DBbvGWxf.js → diagnostic-85mWzvQi.js} +1 -1
  86. package/dist/{diagnostic-DgDaUn7q.js → diagnostic-Bbg-zObh.js} +1 -1
  87. package/dist/{diagnostic-CyH49cpU.js → diagnostic-u64kcpDQ.js} +3 -3
  88. package/dist/{diagnostics-BMCo9z-e.js → diagnostics-C6ntZHc3.js} +5 -5
  89. package/dist/{directory-cli-Bp8CPJAj.js → directory-cli-ByC5Q1X3.js} +10 -10
  90. package/dist/{dm-policy-shared-DFPi7Zr2.js → dm-policy-shared-CV1uWhMc.js} +4 -4
  91. package/dist/{dns-cli-BIvl-4eO.js → dns-cli-BlEBJkZs.js} +10 -10
  92. package/dist/{docs-cli-C96pCTO9.js → docs-cli-DC1z-BLX.js} +9 -9
  93. package/dist/{doctor-completion-aQBy29mi.js → doctor-completion-Cfe2nTpN.js} +1 -1
  94. package/dist/{doctor-completion-BeQ5D1_M.js → doctor-completion-CpGKbe63.js} +3 -3
  95. package/dist/{doctor-config-flow-C2Gtj2Ld.js → doctor-config-flow-gOmD0dFV.js} +14 -14
  96. package/dist/{enable-DW_1rt5K.js → enable-p_l_FcJp.js} +2 -2
  97. package/dist/entry.js +4 -4
  98. package/dist/{exec-approvals-BL3RknaU.js → exec-approvals-C3o7bTbp.js} +1 -1
  99. package/dist/{exec-approvals-allowlist-UZiLlQZY.js → exec-approvals-allowlist-CNWI56tZ.js} +1 -1
  100. package/dist/{exec-approvals-cli-vu_X-YzH.js → exec-approvals-cli-BShAvkW4.js} +22 -22
  101. package/dist/{exec-safe-bin-runtime-policy-kCGsE7iL.js → exec-safe-bin-runtime-policy-C3eU8CKJ.js} +2 -2
  102. package/dist/{exec-DirIo9VQ.js → exec-vJi_ETQy.js} +2 -2
  103. package/dist/{extension-relay-auth-BE4YupGc.js → extension-relay-auth-DD-U9VUc.js} +10 -10
  104. package/dist/{fetch-cHZPcwpd.js → fetch-ByEEe-Yd.js} +5 -5
  105. package/dist/{fetch-guard-Dp0XbWAV.js → fetch-guard-BzXFjlMV.js} +3 -3
  106. package/dist/{fs-safe-D7SLKk8k.js → fs-safe-CByGgR59.js} +25 -25
  107. package/dist/{gateway-cli-k85i40XY.js → gateway-cli-3YUOWIal.js} +524 -283
  108. package/dist/{gateway-cli-DO1ZdC57.js → gateway-cli-CDCwUJ0Z.js} +356 -115
  109. package/dist/{gateway-rpc-DU3hSTzG.js → gateway-rpc-DOfMq6W1.js} +3 -3
  110. package/dist/{globals-BvFc3LRQ.js → globals-ZyVsnNcg.js} +7 -7
  111. package/dist/{gmail-setup-utils-DxQW0vvG.js → gmail-setup-utils-BzuIKryU.js} +2 -2
  112. package/dist/{health-joZ3P32_.js → health-B5jHSu9i.js} +8 -8
  113. package/dist/{health-yflM7Rsw.js → health-BEgp6PEF.js} +2 -2
  114. package/dist/{health-format-DxSGV0xs.js → health-format-DX1WwWnG.js} +1 -1
  115. package/dist/{heartbeat-tick-D26lWjWr.js → heartbeat-tick-By0WI8YD.js} +1 -1
  116. package/dist/{help-format-BuYYzCrK.js → help-format-DuL_Y84f.js} +1 -1
  117. package/dist/{hooks-cli-Bqx4BeE7.js → hooks-cli-D1_UuIh4.js} +19 -19
  118. package/dist/{hooks-cli-HMujIPDt.js → hooks-cli-Dy5LfGKt.js} +105 -105
  119. package/dist/{hooks-status-BIpoTNG2.js → hooks-status-C6mtKL68.js} +2 -2
  120. package/dist/{image-ops-BH5tZFXZ.js → image-ops-Cq6SZYWW.js} +11 -11
  121. package/dist/{incident-install-BVVufsbF.js → incident-install-B626HvYY.js} +11 -11
  122. package/dist/index.js +21 -21
  123. package/dist/{inspect-ALwqX-AP.js → inspect-LfUprDjx.js} +4 -4
  124. package/dist/{install-safe-path-B8ogENI2.js → install-safe-path-4YfMRsxN.js} +25 -25
  125. package/dist/{installs-BZc_r32M.js → installs-4lGALZOo.js} +10 -10
  126. package/dist/{installs-DhvxSfA2.js → installs-puN7yKHH.js} +1 -1
  127. package/dist/{ipv4-BQfY4Nz0.js → ipv4-BA1qFtVZ.js} +2 -2
  128. package/dist/{ir-Bphccx2x.js → ir-B3r0eIJW.js} +8 -8
  129. package/dist/{issue-format-eKDAjB9C.js → issue-format-BG8o87sf.js} +1 -1
  130. package/dist/{lifecycle-core-CIW7Nndu.js → lifecycle-core-CuMY0U_8.js} +9 -9
  131. package/dist/{links-oxBAdiT5.js → links-BZDTcdHU.js} +1 -1
  132. package/dist/{live-repair-CK2uu1bb.js → live-repair-BF2elTcB.js} +10 -10
  133. package/dist/llm-slug-generator.js +12 -12
  134. package/dist/{log-tail-Cu_iMzte.js → log-tail-Dg2oYTZ6.js} +7 -7
  135. package/dist/{logger-DygiqHXJ.js → logger-B1oXl7GT.js} +2 -2
  136. package/dist/{logging-DT83g6VT.js → logging-DgKdQHpc.js} +1 -1
  137. package/dist/{logs-cli-OJbjnEG9.js → logs-cli-CrUZySOS.js} +18 -18
  138. package/dist/{manager-DbUdXsY9.js → manager-PSj0t5kg.js} +16 -16
  139. package/dist/{markdown-tables-DBBxKcll.js → markdown-tables-BcUNsqVQ.js} +1 -1
  140. package/dist/{memory-cli-OhwCkNE-.js → memory-cli-DVqLwNhN.js} +18 -18
  141. package/dist/{model-D56FsZ1w.js → model-BbeosLtF.js} +2 -2
  142. package/dist/{model-catalog-CLFSsgfj.js → model-catalog-Bjfzg68Q.js} +4 -4
  143. package/dist/{model-picker-DBwSCw_9.js → model-picker-JQM5rw_w.js} +4 -4
  144. package/dist/{models-m1jUnKvs.js → models-Kq9m-LfF.js} +23 -23
  145. package/dist/{models-cli-BWXMokU_.js → models-cli-B4wVcMjJ.js} +105 -105
  146. package/dist/{models-cli-CC42HgJD.js → models-cli-dyUiDMqX.js} +17 -17
  147. package/dist/{models-config-BDhVodK4.js → models-config-BMgEFu57.js} +7 -7
  148. package/dist/{node-cli-Cd6_BySw.js → node-cli-DGi3DELS.js} +41 -41
  149. package/dist/{node-cli-CR7U5VZ3.js → node-cli-Dm9lnwVF.js} +3 -3
  150. package/dist/{node-command-policy-B4-mf1hM.js → node-command-policy-C1Fy9dcA.js} +1 -1
  151. package/dist/{node-service-DlskRE2h.js → node-service-Ys7JZFz-.js} +1 -1
  152. package/dist/{nodes-cli-B_iLcTCz.js → nodes-cli-Bp2RePXd.js} +24 -24
  153. package/dist/{nodes-screen-DGsjKglY.js → nodes-screen-DANf1hC-.js} +8 -8
  154. package/dist/{note-QFI8C-0H.js → note-CWaaN_Hi.js} +2 -2
  155. package/dist/{npm-pack-install-BNQ7dpDL.js → npm-pack-install-BgBpeTJk.js} +1 -1
  156. package/dist/{npm-pack-install-DrAALuzR.js → npm-pack-install-Dlm0MIZy.js} +24 -24
  157. package/dist/{npm-resolution-DWT08Jg9.js → npm-resolution-DWE5khjC.js} +2 -2
  158. package/dist/{npm-resolution-CznyJdS_.js → npm-resolution-Ey8dK3VI.js} +5 -5
  159. package/dist/{oauth-tls-preflight-iGljnxA8.js → oauth-tls-preflight-DJESrRid.js} +1 -1
  160. package/dist/{onboard-DprdwW6T.js → onboard-CneU0GqJ.js} +11 -11
  161. package/dist/{onboard-channels-eDRUfcgC.js → onboard-channels-B1oC1rop.js} +2 -2
  162. package/dist/{onboard-channels-BN5zmpQb.js → onboard-channels-Bm2XVN3C.js} +21 -21
  163. package/dist/{onboard-custom-rapGXTfP.js → onboard-custom-Bz-7TT12.js} +4 -4
  164. package/dist/{onboard-helpers-BlOvn-As.js → onboard-helpers-DNbkQX5v.js} +13 -13
  165. package/dist/{onboard-hooks-C2X1aAwg.js → onboard-hooks-CCtE4bqF.js} +7 -7
  166. package/dist/{onboard-remote-CmifKZ42.js → onboard-remote-DsBkNMeO.js} +5 -5
  167. package/dist/{onboard-skills-Cbv5AZ8C.js → onboard-skills-DX_x-MfC.js} +4 -4
  168. package/dist/{onboard-DRGIVMAs.js → onboard-trNO818c.js} +2 -2
  169. package/dist/{onboarding-1IkfvnYe.js → onboarding-BKoaWOxQ.js} +3 -3
  170. package/dist/{onboarding-DjLzxd2p.js → onboarding-R2m4j7Dp.js} +18 -18
  171. package/dist/{onboarding.finalize-CCnljJ0b.js → onboarding.finalize-B6K3hYJZ.js} +113 -113
  172. package/dist/{onboarding.finalize-xkxyNe63.js → onboarding.finalize-C0X_xaHh.js} +22 -22
  173. package/dist/{onboarding.gateway-config-DOTfpREQ.js → onboarding.gateway-config-DKLUe3Ul.js} +16 -16
  174. package/dist/{onboarding.secret-input-DH2Ce8GL.js → onboarding.secret-input-YvW1rg1V.js} +1 -1
  175. package/dist/{openai-model-default-DsBVhW_k.js → openai-model-default-CuWReftl.js} +2 -2
  176. package/dist/{openclaw-root-CvJ5CJns.js → openclaw-root-B6Tk0FH8.js} +2 -2
  177. package/dist/{operator-commands-JUXdOhQX.js → operator-commands-BmGo9Ngv.js} +5 -5
  178. package/dist/{operator-commands-DX-cb3Ye.js → operator-commands-EsKoI4yV.js} +2 -2
  179. package/dist/{outbound-attachment-DXvNKE87.js → outbound-attachment-DJ3uYvUI.js} +2 -2
  180. package/dist/{outbound-message-hooks-C0BAHo6-.js → outbound-message-hooks-BBtH97ZV.js} +4 -4
  181. package/dist/{pairing-cli-Cl5sMYgP.js → pairing-cli-CzdmBLwS.js} +10 -10
  182. package/dist/{pairing-labels-BMQWK5UC.js → pairing-labels-DYgJqxe0.js} +1 -1
  183. package/dist/{pairing-store-CVHmKK9w.js → pairing-store-BZFrD-fJ.js} +2 -2
  184. package/dist/{path-alias-guards-Dwpja4Ts.js → path-alias-guards-CHFrrzxZ.js} +3 -3
  185. package/dist/{path-safety-tNRAPoSe.js → path-safety-CCSB65fm.js} +1 -1
  186. package/dist/{pi-embedded-CZ0PhG7T.js → pi-embedded-COs_yO7U.js} +28 -28
  187. package/dist/{pi-embedded-helpers-CcG8tJG8.js → pi-embedded-helpers-BYLOFsUc.js} +3 -3
  188. package/dist/{pi-embedded-helpers-C6VayjB1.js → pi-embedded-helpers-C9XqX-Jq.js} +8 -8
  189. package/dist/{pi-embedded-helpers-D__rRuFh.js → pi-embedded-helpers-DIUrv2Ua.js} +1 -1
  190. package/dist/pi-embedded-recovery-adapter-8xq2SINa.js +60 -0
  191. package/dist/{pi-embedded-recovery-adapter-BJvKUFHn.js → pi-embedded-recovery-adapter-BHTdeEKa.js} +8 -8
  192. package/dist/{pi-embedded-recovery-adapter-BtqhGYD7.js → pi-embedded-recovery-adapter-DPjgp8q4.js} +3 -3
  193. package/dist/{pi-embedded-recovery-adapter-DS_uqVd7.js → pi-embedded-recovery-adapter-DytV4fjp.js} +2 -2
  194. package/dist/{pi-embedded-utils-CBwHE9Fa.js → pi-embedded-utils-BV_Dtzrw.js} +2 -2
  195. package/dist/{pi-embedded-utils-BOgoLC6a.js → pi-embedded-utils-BetZbS6i.js} +1 -1
  196. package/dist/{pi-embedded-utils-Wab6FAbw.js → pi-embedded-utils-DOtaZ7KV.js} +1 -1
  197. package/dist/{pi-model-discovery-dD_F5Zs_.js → pi-model-discovery-CZ9wxcE8.js} +1 -1
  198. package/dist/{pi-tools.policy-D-HUyDCX.js → pi-tools.policy-B7YiM0PW.js} +1 -1
  199. package/dist/{plugin-owned-work-recovery-adapter-DSTbgdf1.js → plugin-owned-work-recovery-adapter-CCMhA7pp.js} +7 -7
  200. package/dist/{plugin-registry-NO8bBmB-.js → plugin-registry-AEemJBCl.js} +1 -1
  201. package/dist/{plugin-registry-D1W5p4FN.js → plugin-registry-BjZ0q-dW.js} +4 -4
  202. package/dist/plugin-sdk/{agent-turn-execute-rfDl5JIk.js → agent-turn-execute-DoRgVKVO.js} +12 -12
  203. package/dist/plugin-sdk/{agent-turn-runner-CWFiK-TQ.js → agent-turn-runner-pU0RGvg6.js} +3 -3
  204. package/dist/plugin-sdk/{audio-preflight-Ch7wu2kR.js → audio-preflight-8hRbl8Io.js} +5 -5
  205. package/dist/plugin-sdk/{audio-transcription-runner-PQrzjXaP.js → audio-transcription-runner-CUsZFiEA.js} +1 -1
  206. package/dist/plugin-sdk/{chrome-nvzkZjx1.js → chrome-VZ0Zuu2w.js} +8 -8
  207. package/dist/plugin-sdk/{command-queue-Ctf3I4mj.js → command-queue-CbgNIrv6.js} +1 -1
  208. package/dist/plugin-sdk/{deliver-CvAny_u3.js → deliver-B7W4NNsR.js} +1 -1
  209. package/dist/plugin-sdk/{deliver-CLdBSfw5.js → deliver-CJP9TznW.js} +3 -3
  210. package/dist/plugin-sdk/{diagnostic-HwC2DvTv.js → diagnostic-BRUM6uNI.js} +1 -1
  211. package/dist/plugin-sdk/{pi-embedded-helpers-Cgger0dQ.js → pi-embedded-helpers-B-OOYT64.js} +3 -3
  212. package/dist/plugin-sdk/{pi-embedded-utils-BSR4yhc7.js → pi-embedded-utils-BoSGTbYO.js} +1 -1
  213. package/dist/plugin-sdk/{provider-dispatcher-UGV7dmN-.js → provider-dispatcher-CNLIHg-v.js} +12 -12
  214. package/dist/plugin-sdk/{provider-image-DWx_4D5v.js → provider-image-L_SRDPHU.js} +4 -4
  215. package/dist/plugin-sdk/{provider-image-CHcGL0EF.js → provider-image-zNa1Cccq.js} +1 -1
  216. package/dist/plugin-sdk/{pw-ai-D0hna1cK.js → pw-ai-JJrE-B1e.js} +1 -1
  217. package/dist/plugin-sdk/{runs-BW0cihzp.js → runs-CPA1-H-2.js} +5 -5
  218. package/dist/plugin-sdk/{runs-CljUZhIq.js → runs-H2FY7UEk.js} +3 -3
  219. package/dist/plugin-sdk/{send-BBYSrSTF.js → send-CF3PEjRy.js} +1 -1
  220. package/dist/plugin-sdk/{send-DXmuCfmg.js → send-CzxwgKvR.js} +2 -2
  221. package/dist/plugin-sdk/src/gateway/storage-startup-gate.d.ts +28 -8
  222. package/dist/plugin-sdk/{subagent-registry-C-Vy-p1q.js → subagent-registry-CAdT47aY.js} +12 -12
  223. package/dist/plugin-sdk/testing.js +12 -12
  224. package/dist/plugin-sdk/{tools--CF9HsHp.js → tools-3raTfdu5.js} +32 -32
  225. package/dist/{plugins-cli-DJJuzULB.js → plugins-cli-CjgLVUxJ.js} +108 -108
  226. package/dist/{plugins-cli-6f208X2l.js → plugins-cli-Di9VhU7J.js} +22 -22
  227. package/dist/{polling-timeout-L7Tp4szs.js → polling-timeout-DoMlNx_D.js} +2 -2
  228. package/dist/{ports-CwKtoFkm.js → ports-BxjQwKMc.js} +2 -2
  229. package/dist/{ports-J_cZ4_9V.js → ports-QWAeZ9Is.js} +3 -3
  230. package/dist/{program-P3xjiqt2.js → program-Dus5j4vB.js} +104 -104
  231. package/dist/{program-context-BnUPq4h0.js → program-context-CQrxOpXH.js} +22 -22
  232. package/dist/{progress-DFaFyDmB.js → progress-Dc4ihErK.js} +2 -2
  233. package/dist/{prompt-select-styled-BqvHWNWF.js → prompt-select-styled-D1Kc5Amb.js} +47 -47
  234. package/dist/{prompt-select-styled-zQtF-vV8.js → prompt-select-styled-D3Li9uy2.js} +6 -6
  235. package/dist/{prompt-style-CO6JkEel.js → prompt-style-XoPngT10.js} +1 -1
  236. package/dist/{provider-auth-helpers-BYuzSj8t.js → provider-auth-helpers-B5HQVptJ.js} +6 -6
  237. package/dist/{provider-image-DysCwCWi.js → provider-image-BICZzOki.js} +1 -1
  238. package/dist/{provider-image-NyTXaEL4.js → provider-image-BllyLBJM.js} +1 -1
  239. package/dist/{provider-image-BVRCttNV.js → provider-image-Bsivqxw8.js} +6 -6
  240. package/dist/{proxy-m4Mv3Vy0.js → proxy-Ba9wFNmC.js} +1 -1
  241. package/dist/{proxy-env-BVlcuMzr.js → proxy-env-DzG6q8Hh.js} +1 -1
  242. package/dist/{proxy-fetch-D1upsMhs.js → proxy-fetch-BqVhGKFd.js} +1 -1
  243. package/dist/{push-apns-RSo8eOEB.js → push-apns-BcZzA03X.js} +8 -8
  244. package/dist/{push-apns-D356cj0x.js → push-apns-qUm5cL9P.js} +2 -2
  245. package/dist/{pw-ai-B8pA3baY.js → pw-ai-CXSJw34w.js} +1 -1
  246. package/dist/{pw-ai-DAv_QGa9.js → pw-ai-Ci1kADkJ.js} +18 -18
  247. package/dist/{pw-ai-BXBbuCbh.js → pw-ai-DT3fj2Kt.js} +1 -1
  248. package/dist/{qmd-manager-qYKR5h5G.js → qmd-manager-IztYub3L.js} +23 -23
  249. package/dist/{qr-cli-BauN15DE.js → qr-cli-DhJ37DZK.js} +8 -8
  250. package/dist/{query-expansion-Bf7wd2Iw.js → query-expansion-BydaUlRH.js} +13 -13
  251. package/dist/{reconcile-bundled-DyXp6UFb.js → reconcile-bundled-CAKTvY-C.js} +3 -3
  252. package/dist/{reconcile-bundled-CYRLOXKB.js → reconcile-bundled-DJKaKSgk.js} +1 -1
  253. package/dist/{recorder-CMNhAFwu.js → recorder-Ca_njjjH.js} +2 -2
  254. package/dist/{recovery-adapter-DcDYSG4s.js → recovery-adapter-BT12fVyO.js} +8 -8
  255. package/dist/{recovery-adapter-Dp82nx48.js → recovery-adapter-CPQ9-014.js} +2 -2
  256. package/dist/{recovery-adapter-Cd74qcsK.js → recovery-adapter-DF25-zSH.js} +1 -1
  257. package/dist/{recovery-adapter-eslk30An.js → recovery-adapter-Df87xZQp.js} +34 -34
  258. package/dist/{recovery-adapter-ClfDS4Ov.js → recovery-adapter-okaOo6tO.js} +4 -4
  259. package/dist/{recovery-prompt-TVvxel5J.js → recovery-prompt-CRcPgKcT.js} +1 -1
  260. package/dist/{redact-snapshot-D7BZusrG.js → redact-snapshot--nD7TrF-.js} +2 -2
  261. package/dist/{register.agent-DHl47XYk.js → register.agent-BCNYDn8G.js} +22 -22
  262. package/dist/{register.agent-9DDYWINr.js → register.agent-CqGVQ2N1.js} +117 -117
  263. package/dist/{register.configure-CndtmXxY.js → register.configure-CPTDt8eL.js} +23 -23
  264. package/dist/register.configure-DxdNTBIk.js +168 -0
  265. package/dist/{register.maintenance-BWVbf3vi.js → register.maintenance-BOCv2N1t.js} +23 -23
  266. package/dist/{register.maintenance-B0m4vFl_.js → register.maintenance-CFjB31Z5.js} +125 -125
  267. package/dist/{register.message-BTvJee4k.js → register.message-CiT53tgD.js} +98 -98
  268. package/dist/{register.message-D_XRcga3.js → register.message-dqrK9EsG.js} +18 -18
  269. package/dist/{register.onboard-C9pmJhys.js → register.onboard-BKoeYDAF.js} +21 -21
  270. package/dist/{register.onboard-BOHf4ODS.js → register.onboard-xtBBqce9.js} +2 -2
  271. package/dist/{register.setup-Dc4c4RwB.js → register.setup-qHCNX6LC.js} +2 -2
  272. package/dist/{register.setup-CmChnAXy.js → register.setup-xIVMlLYx.js} +24 -24
  273. package/dist/{register.status-health-sessions-DcfcD5-d.js → register.status-health-sessions-CaxJw1rr.js} +20 -20
  274. package/dist/{register.status-health-sessions-HmPpPcsK.js → register.status-health-sessions-D4hMq0I7.js} +115 -115
  275. package/dist/{register.subclis-BlaRgswl.js → register.subclis-srwCZnD0.js} +34 -34
  276. package/dist/{replay-C9MQSD5C.js → replay-B9P8F4Td.js} +1 -1
  277. package/dist/{replies-aExjMxzn.js → replies-BNP-F_lm.js} +4 -4
  278. package/dist/{reply-C9VXFn4R.js → reply-B_SiN91-.js} +24 -24
  279. package/dist/{reply-directives-B3iuHT4J.js → reply-directives-Bc2RQAcJ.js} +2 -2
  280. package/dist/{reply-prefix-V-IxyeUB.js → reply-prefix-B8M4IWrd.js} +1 -1
  281. package/dist/{resolve-route-D0rmcC0-.js → resolve-route-KBL5oj6U.js} +4 -4
  282. package/dist/{rpc-DpE8vp-c.js → rpc-htgXg_yf.js} +3 -3
  283. package/dist/{run-main-BZA73lMf.js → run-main-BzfK-GcH.js} +117 -117
  284. package/dist/{runs-RYsbIfCS.js → runs-BW5fW5nB.js} +3 -3
  285. package/dist/{runs-BAm5mg_D.js → runs-BjLs5ozo.js} +6 -6
  286. package/dist/{runs-CHfKOgl6.js → runs-DGWNXyKA.js} +3 -3
  287. package/dist/{runtime-CK9AbML9.js → runtime-ACR3KU8j.js} +4 -4
  288. package/dist/{runtime-config-collectors-Q9nEWUTc.js → runtime-config-collectors-BVWO6FhK.js} +1 -1
  289. package/dist/{runtime-guard-fIvyv07S.js → runtime-guard-DchtXvGj.js} +1 -1
  290. package/dist/{sandbox-BqX3VN9w.js → sandbox-7YCCMJoM.js} +1 -1
  291. package/dist/{sandbox-DzgYdBHo.js → sandbox-BpdiWabc.js} +18 -18
  292. package/dist/{sandbox-cli-DS0rOY-2.js → sandbox-cli-Dv0Viev8.js} +2 -2
  293. package/dist/{sandbox-cli-Bdiy-JBA.js → sandbox-cli-UfXu5kvh.js} +25 -25
  294. package/dist/{secrets-cli-BgSYbUnm.js → secrets-cli-DD5pd5lU.js} +15 -15
  295. package/dist/{security-cli-DmfWrKBb.js → security-cli-DCKCspHc.js} +42 -42
  296. package/dist/{security-cli-BmLzna2E.js → security-cli-DRALCMFL.js} +4 -4
  297. package/dist/{send-DVTzquty.js → send-BBFfvgK9.js} +14 -14
  298. package/dist/{send-o7L9XTU3.js → send-BVisLSq7.js} +6 -6
  299. package/dist/{send-DVEBYs7q.js → send-B_t3X0hK.js} +7 -7
  300. package/dist/{send-CDuS9tHa.js → send-CZsC4D3G.js} +12 -12
  301. package/dist/{send-DSEM68Bg.js → send-CwCEyog7.js} +6 -6
  302. package/dist/{send-BFS-Gw56.js → send-DEFcgo-1.js} +1 -1
  303. package/dist/{send-PUOLKFU6.js → send-s0RNLFLX.js} +1 -1
  304. package/dist/{server-Cxvaq-2t.js → server-DWJmtex3.js} +4 -4
  305. package/dist/{server-context-RkR0AfjN.js → server-context-BEjWhzMi.js} +12 -12
  306. package/dist/{server-context-Ckaq9jDj.js → server-context-CQQ6Q5Kp.js} +2 -2
  307. package/dist/{server-lifecycle-nFfq19cU.js → server-lifecycle-B9IQKSom.js} +1 -1
  308. package/dist/{server-lifecycle-B8yCvRvX.js → server-lifecycle-C3hCCbXm.js} +3 -3
  309. package/dist/{server-middleware-B6bN1rYO.js → server-middleware-CrJMxxfQ.js} +1 -1
  310. package/dist/{server-node-events-CgVi6hsa.js → server-node-events-8k0OLCvW.js} +97 -97
  311. package/dist/{server-node-events-BYL12z2h.js → server-node-events-BYTgaAay.js} +18 -18
  312. package/dist/{server-CtXro2Oa.js → server-y8WhCQvu.js} +24 -24
  313. package/dist/{service-BVB5AQS4.js → service-Dkcqg-rd.js} +15 -15
  314. package/dist/{session-consumer-agents-WuG2FJYp.js → session-consumer-agents-5ORspv9c.js} +1 -1
  315. package/dist/{session-consumer-claim-sweep-BcfThIOH.js → session-consumer-claim-sweep-eBEe4crh.js} +7 -7
  316. package/dist/{session-key-resolution-D__Pd_mB.js → session-key-resolution-CvnTXaSw.js} +4 -4
  317. package/dist/{session-meta-YzxyVCeI.js → session-meta-Bd0mS7MT.js} +1 -1
  318. package/dist/{session-storage-DFsXIZwp.js → session-storage-Pnf4SMXY.js} +6 -6
  319. package/dist/{session-utils-B2PSRqVy.js → session-utils-CrCJ-7yK.js} +5 -5
  320. package/dist/{sessions-CJHCMakP.js → sessions-BlXxa7bM.js} +4 -4
  321. package/dist/{sessions-Q3WrKAAg.js → sessions-DFDrcshi.js} +16 -16
  322. package/dist/{sessions-CfKrfL19.js → sessions-ck0v65PE.js} +4 -4
  323. package/dist/{sessions-claims-status-k3n7GnFf.js → sessions-claims-status-BWkOZDb1.js} +11 -11
  324. package/dist/{shared-D__JxAlY.js → shared-BZXtBEEK.js} +3 -3
  325. package/dist/{shared-DerjPYzv.js → shared-Cj18nzyW.js} +2 -2
  326. package/dist/{skill-commands-DbmH_7xm.js → skill-commands-uhWJKPrM.js} +7 -7
  327. package/dist/{skill-scanner-CZhas7UB.js → skill-scanner-BrEkff8K.js} +7 -7
  328. package/dist/{skills-ZklHNqsc.js → skills-D3kpiNaJ.js} +6 -6
  329. package/dist/{skills-cli-Dj4NTcCE.js → skills-cli-DAJDC2x2.js} +9 -9
  330. package/dist/{skills-install-B7k9HIIw.js → skills-install-B23U6yk5.js} +9 -9
  331. package/dist/{skills-status-BEsBhRkz.js → skills-status-DEdp3c6y.js} +3 -3
  332. package/dist/{status-CbJxUaE5.js → status-BacPIpt6.js} +35 -35
  333. package/dist/{status-BBq1TMwB.js → status-BsGjriqM.js} +4 -4
  334. package/dist/{status.update-Dhleef_a.js → status.update-C4YRQzqD.js} +2 -2
  335. package/dist/{store-AQt3mu5T.js → store-BFf8dvdk.js} +7 -7
  336. package/dist/{subsystem-CXwk-lx3.js → subsystem-DLKs6VzZ.js} +1 -1
  337. package/dist/{supervisor-recovery-adapter-DVA_i7Fv.js → supervisor-recovery-adapter-BIN1RCIY.js} +7 -7
  338. package/dist/{system-cli-Dja3Rqeg.js → system-cli-LSxX4WjX.js} +13 -13
  339. package/dist/{system-run-command-Cv1h27tf.js → system-run-command-Dl8UC6hO.js} +2 -2
  340. package/dist/{systemd-Cjr55Dzl.js → systemd-BJqlwupF.js} +11 -11
  341. package/dist/{systemd-hints-Dd6VtLsV.js → systemd-hints-Cp0IfOPD.js} +9 -9
  342. package/dist/{systemd-linger-CoejU-0l.js → systemd-linger-Dk1GWduD.js} +2 -2
  343. package/dist/{table-CuH5YX2S.js → table-H366JkfJ.js} +2 -2
  344. package/dist/{tables-BBiYzs81.js → tables-CCEXTXTG.js} +1 -1
  345. package/dist/{tailnet-cZK3OCUB.js → tailnet-BSKE3pk_.js} +1 -1
  346. package/dist/{tailscale-DVz4yfpc.js → tailscale-BrZL_MiW.js} +2 -2
  347. package/dist/{task-pipeline-boot-yTQaBch8.js → task-pipeline-boot-CM-3tH09.js} +97 -97
  348. package/dist/{task-pipeline-boot-CUdpZ3t3.js → task-pipeline-boot-Dihxq0Tg.js} +18 -18
  349. package/dist/{task-runlog-retention-BdL6aGzZ.js → task-runlog-retention-DCbMK2T8.js} +67 -12
  350. package/dist/{task-runlog-retention-DhORDPYJ.js → task-runlog-retention-GZu-QuBY.js} +64 -9
  351. package/dist/{tasks-DKKuqmaV.js → tasks-Dm1ljmuN.js} +11 -11
  352. package/dist/{tokens-x3WbTUiR.js → tokens-B6PaaeVv.js} +1 -1
  353. package/dist/{tool-display-CO_Gj1t5.js → tool-display-DiZGbhL2.js} +1 -1
  354. package/dist/{tool-loop-detection-CGxEpEyN.js → tool-loop-detection-DHQv318m.js} +2 -2
  355. package/dist/{trash-BDCU6Fb2.js → trash-DNkuLhfz.js} +3 -3
  356. package/dist/{tui-DgQvXSe6.js → tui-DQwfx20_.js} +1 -1
  357. package/dist/{tui-wtR2jl1B.js → tui-X8LP2ykY.js} +8 -8
  358. package/dist/{tui-cli-CNz7Mg8b.js → tui-cli-DFen3XYb.js} +4 -4
  359. package/dist/{tui-cli-D4GLKISY.js → tui-cli-Dhj11694.js} +31 -31
  360. package/dist/{update-BEgLahg5.js → update-CYcHPlAS.js} +3 -3
  361. package/dist/{update-CVYwBE80.js → update-VuewNwzn.js} +1 -1
  362. package/dist/{update-cli-DhfSepno.js → update-cli-DE0ttohR.js} +26 -26
  363. package/dist/{update-cli-D-GilQk7.js → update-cli-DECVfh7L.js} +135 -135
  364. package/dist/{update-runner-ha2YJZBG.js → update-runner-C8NxlRy7.js} +18 -18
  365. package/dist/{update-runner-BTMpYRTQ.js → update-runner-CBbs-iN_.js} +1 -1
  366. package/dist/{user-run-recording-BR_U9osf.js → user-run-recording-DXNyfjMq.js} +2 -2
  367. package/dist/{validation-cli-hVAwTijW.js → validation-cli-D8dTZ830.js} +18 -18
  368. package/dist/{validation-cli-BwvVf8tp.js → validation-cli-Di7B-mhn.js} +97 -97
  369. package/dist/{web-cli-BtQrD08h.js → web-cli-B0hbvEsp.js} +3 -3
  370. package/dist/{web-client-assets-COSve3Rq.js → web-client-assets-nkeo2cLh.js} +1 -1
  371. package/dist/{webhooks-cli-B7OIieVk.js → webhooks-cli-Rne_IilT.js} +10 -10
  372. package/dist/{widearea-dns-B9lNb6ro.js → widearea-dns-B1ALOpPn.js} +1 -1
  373. package/dist/{with-timeout-CuFl-tDg.js → with-timeout-BfG7k9-4.js} +2 -2
  374. package/dist/{with-timeout-DIENRALL.js → with-timeout-CpZZ4mMw.js} +6 -6
  375. package/dist/{workspace-Dt30ZPzK.js → workspace-DkkkJ4GX.js} +2 -2
  376. package/dist/{workspace-dirs-CCmfLlPy.js → workspace-dirs-mzsfTPed.js} +1 -1
  377. package/dist/{ws-CBDMKFAM.js → ws-DESjYW7M.js} +2 -2
  378. package/dist/{wsl-C9d12M7y.js → wsl-BisEqrSr.js} +2 -2
  379. package/extensions/acpx/package.json +1 -1
  380. package/extensions/anthropic/package.json +1 -1
  381. package/extensions/bifrost/package.json +1 -1
  382. package/extensions/bluebubbles/package.json +1 -1
  383. package/extensions/copilot-proxy/package.json +1 -1
  384. package/extensions/deepgram/package.json +1 -1
  385. package/extensions/deepinfra/package.json +1 -1
  386. package/extensions/diagnostics-otel/package.json +1 -1
  387. package/extensions/diffs/package.json +1 -1
  388. package/extensions/discord/package.json +1 -1
  389. package/extensions/dream-cycle/package.json +1 -1
  390. package/extensions/elevenlabs/package.json +1 -1
  391. package/extensions/elevenlabs/src/streaming-speech-provider-faults.test.ts +2 -2
  392. package/extensions/elevenlabs/src/streaming-speech-provider.test.ts +19 -5
  393. package/extensions/elevenlabs/src/streaming-speech-provider.ts +3 -1
  394. package/extensions/feishu/package.json +1 -1
  395. package/extensions/gemini-search/package.json +1 -1
  396. package/extensions/google/package.json +1 -1
  397. package/extensions/google-gemini-cli-auth/package.json +1 -1
  398. package/extensions/googlechat/package.json +1 -1
  399. package/extensions/grok-search/package.json +1 -1
  400. package/extensions/groq/package.json +1 -1
  401. package/extensions/imessage/package.json +1 -1
  402. package/extensions/irc/package.json +1 -1
  403. package/extensions/kimi-search/package.json +1 -1
  404. package/extensions/learning-core/package.json +1 -1
  405. package/extensions/line/package.json +1 -1
  406. package/extensions/llm-task/package.json +1 -1
  407. package/extensions/lobster/package.json +1 -1
  408. package/extensions/matrix/CHANGELOG.md +1 -1
  409. package/extensions/matrix/package.json +1 -1
  410. package/extensions/mattermost/package.json +1 -1
  411. package/extensions/memory-core/package.json +1 -1
  412. package/extensions/memory-lancedb/package.json +1 -1
  413. package/extensions/minimax/package.json +1 -1
  414. package/extensions/minimax-portal-auth/package.json +1 -1
  415. package/extensions/mistral/package.json +1 -1
  416. package/extensions/moonshot/package.json +1 -1
  417. package/extensions/msteams/CHANGELOG.md +1 -1
  418. package/extensions/msteams/package.json +1 -1
  419. package/extensions/nextcloud-talk/package.json +1 -1
  420. package/extensions/nostr/CHANGELOG.md +1 -1
  421. package/extensions/nostr/package.json +1 -1
  422. package/extensions/open-prose/package.json +1 -1
  423. package/extensions/openai/package.json +1 -1
  424. package/extensions/openai-realtime/package.json +1 -1
  425. package/extensions/openrouter/package.json +1 -1
  426. package/extensions/perplexity-search/package.json +1 -1
  427. package/extensions/searxng-search/package.json +1 -1
  428. package/extensions/signal/package.json +1 -1
  429. package/extensions/slack/package.json +1 -1
  430. package/extensions/synology-chat/package.json +1 -1
  431. package/extensions/telegram/package.json +1 -1
  432. package/extensions/tlon/package.json +1 -1
  433. package/extensions/twitch/CHANGELOG.md +1 -1
  434. package/extensions/twitch/package.json +1 -1
  435. package/extensions/voice-call/CHANGELOG.md +1 -1
  436. package/extensions/voice-call/package.json +1 -1
  437. package/extensions/whatsapp/package.json +1 -1
  438. package/extensions/zai/package.json +1 -1
  439. package/extensions/zalo/CHANGELOG.md +1 -1
  440. package/extensions/zalo/package.json +1 -1
  441. package/extensions/zalouser/CHANGELOG.md +1 -1
  442. package/extensions/zalouser/package.json +1 -1
  443. package/package.json +1 -1
  444. package/dist/cli-CAr3GVB1.js +0 -164
  445. package/dist/pi-embedded-recovery-adapter-CpGvtObS.js +0 -60
  446. package/dist/register.configure-C2X-xBB6.js +0 -168
@@ -1,189 +1,189 @@
1
- import { A as readLoggingConfig, B as openBoundaryFile, C as resolveFileLogProfile, Dt as truncateUtf16Safe, H as openVerifiedFileSync, J as isNotFoundPathError, Ot as resolvePreferredOpenClawTmpDir, U as sameFileIdentity, V as openBoundaryFileSync, Y as isPathInside, d as colorize, f as isRich, g as getResolvedLoggerSettings, h as getLogger, m as getChildLogger, p as theme, pt as ensureDir, s as setVerbose, st as CONFIG_DIR, wt as shortenHomePath, x as appendFileLog, xt as resolveUserPath } from "./globals-BvFc3LRQ.js";
1
+ import { A as readLoggingConfig, B as openBoundaryFile, C as resolveFileLogProfile, Dt as truncateUtf16Safe, H as openVerifiedFileSync, J as isNotFoundPathError, Ot as resolvePreferredOpenClawTmpDir, U as sameFileIdentity, V as openBoundaryFileSync, Y as isPathInside, d as colorize, f as isRich, g as getResolvedLoggerSettings, h as getLogger, m as getChildLogger, p as theme, pt as ensureDir, s as setVerbose, st as CONFIG_DIR, wt as shortenHomePath, x as appendFileLog, xt as resolveUserPath } from "./globals-ZyVsnNcg.js";
2
2
  import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-BMo6kTge.js";
3
3
  import { t as isPlainObject } from "./plain-object-CLm2c5Nu.js";
4
- import { m as defaultRuntime, n as runtimeForLogger, o as setConsoleSubsystemFilter, s as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-CXwk-lx3.js";
4
+ import { m as defaultRuntime, n as runtimeForLogger, o as setConsoleSubsystemFilter, s as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-DLKs6VzZ.js";
5
5
  import "./boolean-Bb19hm9Y.js";
6
6
  import { i as logAcceptedEnvOption, r as isTruthyEnvValue } from "./entry.js";
7
- import { $ as isAvatarHttpUrl, $a as normalizeWhatsAppTarget, $n as normalizeSessionDeliveryFields, Ai as PASS_ITEMS_MAX_KEYS, An as getActivePreservationLease, Ao as GATEWAY_CLIENT_IDS, Ar as jsonUtf8Bytes, Au as isPidAlive, Ca as resolveMainSessionKeyFromConfig, Cn as StorageReadAccessError, Da as listChannelPlugins, Dc as normalizeProviderIdForAuth, Di as isVerificationStoreError, Dn as closeReplacedConfiguredSessionStorageRuntime, Ea as getChannelPlugin, Ei as clientResumeRecordArtifactId, En as closeConfiguredSessionStorageRuntime, Eo as normalizeMessageChannel, Fi as onRunInvalidation, Fn as mirrorPreparedConfiguredSessionStorageRuntimeRecord, Fo as normalizeGatewayClientMode, Gi as serializeSessionIndexRecordKey, Gn as updateSessionStore, Hi as reconcileSessionIndex, Ht as getActivePluginRegistry, Il as resolveProfileUnusableUntilForDisplay, In as prepareConfiguredSessionStorageRuntimeActivation, Iu as normalizeSecretInput, Js as applyMergePatch, Ju as DEFAULT_MODEL, Li as applyReconcileSessionIndex, Mc as resolveDefaultModelForAgent, Mi as PASS_METRICS_MAX_BYTES, Mn as isPreservationArmed, Mo as GATEWAY_CLIENT_NAMES, Nc as resolveHooksGmailModel, Nn as loadSessionStore, No as hasGatewayClientCap, O as coerceIdentityValue, Oa as normalizeChannelId, On as commitPreparedConfiguredSessionStorageRuntimeActivation, P as resolveGatewayWebClientBasePath, Pi as isPassIdentifier, Pn as loadSessionStoreFromDisk, Qt as createEmptyPluginRegistry, Rc as resolveThinkingDefault, Ri as diffManifestOwnedReconcileIndexRecords, Sa as resolveMainSessionKey, Sc as isCliProvider, Si as resolveSessionStorageConfig, Sn as triggerInternalHook, Sr as stripEnvelopeFromMessages, St as defaultSlotIdForKey, Tc as normalizeModelSelection, Ti as CLIENT_RESUME_RECORD_KIND, Tn as activateConfiguredSessionStorageRuntime, Tr as stripInlineDirectiveTagsFromMessageForDisplay, Un as syncConfiguredSessionTranscriptToRuntime, Vi as projectManifestOwnedReconcileIndexRecords, Vn as setActivePreservationLease, Vo as cleanStaleLockFiles, Xs as ensureControlUiAllowedOriginsForNonLoopbackBind, Yn as deliveryContextFromSession, Ys as applyLegacyMigrations, Yt as setGatewayPluginRegistry, Yu as DEFAULT_PROVIDER, Z as AVATAR_MAX_BYTES, Zn as mergeDeliveryContext, _n as getRegisteredStreamingSpeechProviders, _r as REPLY_CONTEXT_CUSTOM_TYPE, a as createConfigIO, ac as DEFAULT_TALK_CONVERSATION_MODEL_ID, ai as extractDeliveryInfo, ar as findNewestMessageEntryIdInTranscript, as as composeRestartDeferralWithAdmission, ba as resolveAgentMainSessionKey, bc as getModelRefStatus, bn as createInternalHookEvent, bo as isGatewayCliClient, bu as loadAuthProfileStoreForRuntime, c as readConfigFileSnapshot, cc as resolveActiveTalkProviderConfig, dc as resolveTalkProviderConfigApiKey, di as createPreservationLeaseService, ei as createAsyncLock, en as getRegisteredPluginApis, et as isAvatarImageDataUrl, f as writeConfigFile, fi as withPreservationWriterPermit, ga as mergeSessionEntry, gc as buildAllowedModelSet, gn as getRegisteredRealtimeVoiceProviders, gt as isTestDefaultMemorySlotDisabled, hc as resolveSubagentMaxConcurrent, hl as getApiKeyForModel, hn as getRegisteredRealtimeTranscriptionProviders, ii as parseByteSize, in as setSessionWorkAvailableNotifier, ir as cleanupArchivedSessionTranscripts, is as RecoveryAdmissionError, it as looksLikeAvatarPath, jc as resolveConfiguredModelRef, ji as PASS_MEASUREMENT_SCHEMA_VERSION, jn as getConfiguredSessionStorageRuntime, jo as GATEWAY_CLIENT_MODES, js as resolveExecutablePath, jt as CHANNEL_IDS, ju as resolveAuthProfileDisplayLabel, k as EXEC_POLICY_PRESET_IDS, kc as resolveAllowedModelRef, kn as createJsonlSessionStorageFallbackRuntime, ko as GATEWAY_CLIENT_CAPS, kr as normalizeInputProvenance, l as readConfigFileSnapshotForWrite, lc as resolveTalkCatalogApiKeyStatus, m as OpenClawSchema, mc as resolveNestedAgentMaxConcurrent, mi as hydrateAndAppendToBackend, mn as getRealtimeVoiceProvider, n as migrateLegacyConfig, na as formatZonedTimestamp, ni as writeJsonAtomic, nr as archiveSessionTranscripts, ns as setPluginTaskAdmissionRejectionFor, o as loadConfig, oa as decodeKeysetCursor, oc as buildTalkConfigResponse, oi as parseSessionThreadInfo, or as findTranscriptMessageEntryById, os as createRootWorkAdmission, p as validateConfigObjectWithPlugins, pc as resolveAgentMaxConcurrent, pi as isJsonlSessionBackend, qu as DEFAULT_CONTEXT_TOKENS, r as advanceRuntimeConfigSnapshot, ri as parseDurationMs, rr as capArrayByJsonBytes, s as parseConfigJson5, sa as encodeKeysetCursor, sc as normalizeTalkSection, sn as emitStartupPluginHealthReport, ti as readJsonFile, tn as listRestartRecoveryAdapters, to as resolveWhatsAppAccount, u as resolveConfigSnapshotHash, uc as resolveTalkConversationConfig, va as setSessionRuntimeModel, vl as resolveApiKeyForProvider, vn as listRealtimeVoiceProviders, vo as INTERNAL_MESSAGE_CHANNEL, wi as validateCtxStorage, wo as isWebchatClient, wr as stripInlineDirectiveTagsForDisplay, xa as resolveExplicitAgentSessionKey, xi as createSessionStorageRuntimeFromConfig, xn as registerInternalHook, xo as isGatewayMessageChannel, xr as stripEnvelopeFromMessage, ya as canonicalizeMainSessionAlias, yn as clearInternalHooks, yo as isDeliverableMessageChannel, yr as buildReplyContextPayload, za as buildChannelAccountBindings, zi as fingerprintReconcileIndexRecords, zn as refreshPreparedConfiguredSessionStorageRuntimeActivation } from "./config-CRFk9Bjq.js";
7
+ import { $ as isAvatarHttpUrl, $a as normalizeWhatsAppTarget, $n as normalizeSessionDeliveryFields, Ai as PASS_ITEMS_MAX_KEYS, An as getActivePreservationLease, Ao as GATEWAY_CLIENT_IDS, Ar as jsonUtf8Bytes, Au as isPidAlive, Ca as resolveMainSessionKeyFromConfig, Cn as StorageReadAccessError, Da as listChannelPlugins, Dc as normalizeProviderIdForAuth, Di as isVerificationStoreError, Dn as closeReplacedConfiguredSessionStorageRuntime, Ea as getChannelPlugin, Ei as clientResumeRecordArtifactId, En as closeConfiguredSessionStorageRuntime, Eo as normalizeMessageChannel, Fi as onRunInvalidation, Fn as mirrorPreparedConfiguredSessionStorageRuntimeRecord, Fo as normalizeGatewayClientMode, Gi as serializeSessionIndexRecordKey, Gn as updateSessionStore, Hi as reconcileSessionIndex, Ht as getActivePluginRegistry, Il as resolveProfileUnusableUntilForDisplay, In as prepareConfiguredSessionStorageRuntimeActivation, Iu as normalizeSecretInput, Js as applyMergePatch, Ju as DEFAULT_MODEL, Li as applyReconcileSessionIndex, Mc as resolveDefaultModelForAgent, Mi as PASS_METRICS_MAX_BYTES, Mn as isPreservationArmed, Mo as GATEWAY_CLIENT_NAMES, Nc as resolveHooksGmailModel, Nn as loadSessionStore, No as hasGatewayClientCap, O as coerceIdentityValue, Oa as normalizeChannelId, On as commitPreparedConfiguredSessionStorageRuntimeActivation, P as resolveGatewayWebClientBasePath, Pi as isPassIdentifier, Pn as loadSessionStoreFromDisk, Qt as createEmptyPluginRegistry, Rc as resolveThinkingDefault, Ri as diffManifestOwnedReconcileIndexRecords, Sa as resolveMainSessionKey, Sc as isCliProvider, Si as resolveSessionStorageConfig, Sn as triggerInternalHook, Sr as stripEnvelopeFromMessages, St as defaultSlotIdForKey, Tc as normalizeModelSelection, Ti as CLIENT_RESUME_RECORD_KIND, Tn as activateConfiguredSessionStorageRuntime, Tr as stripInlineDirectiveTagsFromMessageForDisplay, Un as syncConfiguredSessionTranscriptToRuntime, Vi as projectManifestOwnedReconcileIndexRecords, Vn as setActivePreservationLease, Vo as cleanStaleLockFiles, Xs as ensureControlUiAllowedOriginsForNonLoopbackBind, Yn as deliveryContextFromSession, Ys as applyLegacyMigrations, Yt as setGatewayPluginRegistry, Yu as DEFAULT_PROVIDER, Z as AVATAR_MAX_BYTES, Zn as mergeDeliveryContext, _n as getRegisteredStreamingSpeechProviders, _r as REPLY_CONTEXT_CUSTOM_TYPE, a as createConfigIO, ac as DEFAULT_TALK_CONVERSATION_MODEL_ID, ai as extractDeliveryInfo, ar as findNewestMessageEntryIdInTranscript, as as composeRestartDeferralWithAdmission, ba as resolveAgentMainSessionKey, bc as getModelRefStatus, bn as createInternalHookEvent, bo as isGatewayCliClient, bu as loadAuthProfileStoreForRuntime, c as readConfigFileSnapshot, cc as resolveActiveTalkProviderConfig, dc as resolveTalkProviderConfigApiKey, di as createPreservationLeaseService, ei as createAsyncLock, en as getRegisteredPluginApis, et as isAvatarImageDataUrl, f as writeConfigFile, fi as withPreservationWriterPermit, ga as mergeSessionEntry, gc as buildAllowedModelSet, gn as getRegisteredRealtimeVoiceProviders, gt as isTestDefaultMemorySlotDisabled, hc as resolveSubagentMaxConcurrent, hl as getApiKeyForModel, hn as getRegisteredRealtimeTranscriptionProviders, ii as parseByteSize, in as setSessionWorkAvailableNotifier, ir as cleanupArchivedSessionTranscripts, is as RecoveryAdmissionError, it as looksLikeAvatarPath, jc as resolveConfiguredModelRef, ji as PASS_MEASUREMENT_SCHEMA_VERSION, jn as getConfiguredSessionStorageRuntime, jo as GATEWAY_CLIENT_MODES, js as resolveExecutablePath, jt as CHANNEL_IDS, ju as resolveAuthProfileDisplayLabel, k as EXEC_POLICY_PRESET_IDS, kc as resolveAllowedModelRef, kn as createJsonlSessionStorageFallbackRuntime, ko as GATEWAY_CLIENT_CAPS, kr as normalizeInputProvenance, l as readConfigFileSnapshotForWrite, lc as resolveTalkCatalogApiKeyStatus, m as OpenClawSchema, mc as resolveNestedAgentMaxConcurrent, mi as hydrateAndAppendToBackend, mn as getRealtimeVoiceProvider, n as migrateLegacyConfig, na as formatZonedTimestamp, ni as writeJsonAtomic, nr as archiveSessionTranscripts, ns as setPluginTaskAdmissionRejectionFor, o as loadConfig, oa as decodeKeysetCursor, oc as buildTalkConfigResponse, oi as parseSessionThreadInfo, or as findTranscriptMessageEntryById, os as createRootWorkAdmission, p as validateConfigObjectWithPlugins, pc as resolveAgentMaxConcurrent, pi as isJsonlSessionBackend, qu as DEFAULT_CONTEXT_TOKENS, r as advanceRuntimeConfigSnapshot, ri as parseDurationMs, rr as capArrayByJsonBytes, s as parseConfigJson5, sa as encodeKeysetCursor, sc as normalizeTalkSection, sn as emitStartupPluginHealthReport, ti as readJsonFile, tn as listRestartRecoveryAdapters, to as resolveWhatsAppAccount, u as resolveConfigSnapshotHash, uc as resolveTalkConversationConfig, va as setSessionRuntimeModel, vl as resolveApiKeyForProvider, vn as listRealtimeVoiceProviders, vo as INTERNAL_MESSAGE_CHANNEL, wi as validateCtxStorage, wo as isWebchatClient, wr as stripInlineDirectiveTagsForDisplay, xa as resolveExplicitAgentSessionKey, xi as createSessionStorageRuntimeFromConfig, xn as registerInternalHook, xo as isGatewayMessageChannel, xr as stripEnvelopeFromMessage, ya as canonicalizeMainSessionAlias, yn as clearInternalHooks, yo as isDeliverableMessageChannel, yr as buildReplyContextPayload, za as buildChannelAccountBindings, zi as fingerprintReconcileIndexRecords, zn as refreshPreparedConfiguredSessionStorageRuntimeActivation } from "./config-BPACL-n5.js";
8
8
  import { r as resolveRuntimeServiceVersion, t as VERSION } from "./version-D_9__Xw6.js";
9
9
  import { A as isCronRunSessionKey, M as isSubagentSessionKey, N as parseAgentSessionKey, S as normalizeAccountId$1, a as classifySessionKeyShape, b as toAgentStoreSessionKey, d as normalizeAgentId, f as normalizeMainKey, g as resolveLinkedPeerIdForChannel, h as resolveConfiguredCanonicalIdentity, p as resolveAgentIdFromSessionKey, r as buildAgentMainSessionKey, t as DEFAULT_AGENT_ID, x as DEFAULT_ACCOUNT_ID, y as toAgentRequestSessionKey } from "./session-key-D4YLCjDF.js";
10
- import { A as resolveDefaultAgentWorkspaceDir, C as DEFAULT_SOUL_FILENAME, E as ensureAgentWorkspace, M as matchesSkillFilter, O as isWorkspaceOnboardingCompleted, S as DEFAULT_MEMORY_FILENAME, T as DEFAULT_USER_FILENAME, a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, g as DEFAULT_AGENTS_FILENAME, i as resolveAgentConfig, j as resolveWorkspaceTemplateDir, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir, v as DEFAULT_BOOTSTRAP_FILENAME, w as DEFAULT_TOOLS_FILENAME, x as DEFAULT_MEMORY_ALT_FILENAME, y as DEFAULT_HEARTBEAT_FILENAME } from "./agent-scope-Dw728gHk.js";
11
- import { i as logWarn, t as logDebug } from "./logger-DygiqHXJ.js";
12
- import { n as runExec, t as runCommandWithTimeout } from "./exec-DirIo9VQ.js";
13
- import { n as resolveOpenClawPackageRoot } from "./openclaw-root-CvJ5CJns.js";
10
+ import { A as resolveDefaultAgentWorkspaceDir, C as DEFAULT_SOUL_FILENAME, E as ensureAgentWorkspace, M as matchesSkillFilter, O as isWorkspaceOnboardingCompleted, S as DEFAULT_MEMORY_FILENAME, T as DEFAULT_USER_FILENAME, a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, g as DEFAULT_AGENTS_FILENAME, i as resolveAgentConfig, j as resolveWorkspaceTemplateDir, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir, v as DEFAULT_BOOTSTRAP_FILENAME, w as DEFAULT_TOOLS_FILENAME, x as DEFAULT_MEMORY_ALT_FILENAME, y as DEFAULT_HEARTBEAT_FILENAME } from "./agent-scope-Dt0TVWFY.js";
11
+ import { i as logWarn, t as logDebug } from "./logger-B1oXl7GT.js";
12
+ import { n as runExec, t as runCommandWithTimeout } from "./exec-vJi_ETQy.js";
13
+ import { n as resolveOpenClawPackageRoot } from "./openclaw-root-B6Tk0FH8.js";
14
14
  import { r as resolveCopilotApiToken } from "./github-copilot-token-CvN6iidT.js";
15
15
  import { t as formatCliCommand } from "./command-format-N4aQiv3X.js";
16
16
  import { c as optionalStringEnum, l as stringEnum } from "./retry-policy-BdHwnvOa.js";
17
17
  import { c as resolveSessionFilePath, l as resolveSessionFilePathOptions, m as resolveStorePath, p as resolveSessionTranscriptsDirForAgent, u as resolveSessionTranscriptPath } from "./artifacts-C9Cr_S5Y.js";
18
- import "./send-DVEBYs7q.js";
19
- import "./send-DVTzquty.js";
20
- import { $ as buildHistoryContextFromEntries, $n as getTtsProvider, $t as consumeGatewaySigusr1RestartAuthorization, A as loadOpenClawPlugins, An as extractImageContentFromSource, Bt as buildSafeExternalPrompt, C as buildDefaultToolPolicyPipelineSteps, Ct as resetDirectoryCache, Dn as DEFAULT_INPUT_MAX_REDIRECTS, Dt as consumeRestartSentinel, E as resolvePluginTools, En as DEFAULT_INPUT_IMAGE_MIMES, F as resolveAgentOutboundIdentity, Fn as isAbortRequestText, Ft as normalizeCronJobPatch, G as resolveAgentOutboundTarget, Gn as clearSessionQueues, Gt as persistBrowserProxyFiles, H as agentCommandFromIngress, Hn as resolveAnnounceTargetFromKey, Ht as getHookType, It as migrateLegacyCronPayload, J as createOutboundSendDeps$1, Jn as getAcpSessionManager, K as createOutboundSendDeps, Kn as getExistingFollowupQueue, Kt as resolveSessionAuthProfileOverride, L as handleSlackHttpRequest, Ln as countActiveDescendantRuns, Lt as buildDeliveryFromLegacyPayload, M as createPluginRuntime, Mn as resolveInputFileLimits, N as requestNudge, Nt as writeRestartSentinel, O as clearPluginRegistryCaches, On as DEFAULT_INPUT_TIMEOUT_MS, Ot as formatDoctorNonInteractiveHint, Pn as resolveSendPolicy, Pt as normalizeCronJobCreate, Qn as DEFAULT_MAX_PARALLEL, R as readJsonBodyWithLimit, Rn as initSubagentRegistry, Rt as hasLegacyDeliveryHints, S as applyToolPolicyPipeline, T as getPluginToolMeta, Tn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as runWithModelFallback, Un as readLatestAssistantReply, Ut as isExternalHookSession, Vn as runSubagentAnnounceFlow, Vt as detectSuspiciousPatterns, W as resolveAgentDeliveryPlan, Wn as resolveAgentTimeoutMs, Wt as applyBrowserProxyPaths, Xn as ToolInputError, Y as resolveAgentAvatar, Yn as resolveAgentSessionDirs, Zn as setTaskPipelineStatus, _ as prepareSessionManagerForRun, _n as isSystemEventContextChanged, _t as resolveOutboundSessionRoute, a as runHeartbeatOnce, an as setGatewaySigusr1RestartPolicy, ar as resolveTtsPrefsPath, bt as resolveSessionDeliveryTarget, c as startHeartbeatRunner, cr as setTtsProvider, d as getLastHeartbeatEvent, dr as OPENAI_TTS_VOICES, dt as getCliSessionId, en as deferGatewayRestartUntilIdle, er as isTtsEnabled, f as onHeartbeatEvent, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ft as setCliSessionId, g as runEmbeddedPiAgent, gn as enqueueSystemEvent, gt as ensureOutboundSessionEntry, h as resolveCronSession, hr as resolveUserTimezone, i as resolveHeartbeatSummaryForAgent, in as scheduleGatewaySigusr1Restart, ir as resolveTtsConfig, it as getTotalPendingReplies, j as takePendingActivationMigration, jn as normalizeMimeList, jt as summarizeRestartSentinel, k as getLoadedAnalysisConcurrency, kn as extractFileContentFromSource, kt as formatRestartSentinelMessage, l as runWakeGate, lr as textToSpeech, lt as resolveChannelAccountEnabled, m as isCronSystemEvent, mr as resolveCronStyleNow, mt as createOpenClawTools, n as runMainAgentTurn, nn as isGatewaySigusr1RestartExternallyAllowed, nr as resolveTtsApiKey, nt as setDispatchInboundAdmissionRejectionFor, on as setPreRestartDeferralCheck, or as resolveTtsProviderOrder, p as redactSensitiveHeartbeatEvent, pr as stripHeartbeatToken, pt as runCliAgent, q as createDefaultDeps, qn as removeQueuedFollowupRun, r as resolveHeartbeatConfig, rn as markGatewaySigusr1RestartHandled, rr as resolveTtsAutoMode, rt as createReplyDispatcher, s as setHeartbeatsEnabled, sn as triggerOpenClawRestart, sr as setTtsEnabled, tn as emitGatewayRestart, tr as isTtsProviderConfigured, tt as dispatchInboundMessage, u as resolveHeartbeatVisibility, un as loadProviderUsageSummary, ur as OPENAI_TTS_MODELS, ut as BARE_SESSION_RESET_PROMPT, v as snapshotRunPendingWrites, vt as resolveHeartbeatDeliveryTarget, wn as ACP_SESSION_IDENTITY_RENDERER_VERSION, x as resolveExecConfig, xn as requestHeartbeatNow, xt as resolveOutboundChannelPlugin, y as waitForPendingWrites, yt as resolveOutboundTarget, z as requestBodyErrorToText, zn as listDescendantRunsForRequester, zt as stripLegacyDeliveryFields } from "./agent-turn-execute-DLS3hVZN.js";
18
+ import "./send-B_t3X0hK.js";
19
+ import "./send-BBFfvgK9.js";
20
+ import { $ as buildHistoryContextFromEntries, $n as DEFAULT_MAX_PARALLEL, $t as consumeGatewaySigusr1RestartAuthorization, A as loadOpenClawPlugins, An as extractImageContentFromSource, Bt as buildSafeExternalPrompt, C as buildDefaultToolPolicyPipelineSteps, Ct as resetDirectoryCache, Dn as DEFAULT_INPUT_MAX_REDIRECTS, Dt as consumeRestartSentinel, E as resolvePluginTools, En as DEFAULT_INPUT_IMAGE_MIMES, F as resolveAgentOutboundIdentity, Fn as isAbortRequestText, Ft as normalizeCronJobPatch, G as resolveAgentOutboundTarget, Gn as clearSessionQueues, Gt as persistBrowserProxyFiles, H as agentCommandFromIngress, Hn as resolveAnnounceTargetFromKey, Ht as getHookType, It as migrateLegacyCronPayload, J as createOutboundSendDeps$1, Jn as getAcpSessionManager, K as createOutboundSendDeps, Kn as getExistingFollowupQueue, Kt as resolveSessionAuthProfileOverride, L as handleSlackHttpRequest, Ln as countActiveDescendantRuns, Lt as buildDeliveryFromLegacyPayload, M as createPluginRuntime, Mn as resolveInputFileLimits, N as requestNudge, Nt as writeRestartSentinel, O as clearPluginRegistryCaches, On as DEFAULT_INPUT_TIMEOUT_MS, Ot as formatDoctorNonInteractiveHint, Pn as resolveSendPolicy, Pt as normalizeCronJobCreate, Qn as setTaskPipelineStatus, R as readJsonBodyWithLimit, Rn as initSubagentRegistry, Rt as hasLegacyDeliveryHints, S as applyToolPolicyPipeline, T as getPluginToolMeta, Tn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as runWithModelFallback, Un as readLatestAssistantReply, Ut as isExternalHookSession, Vn as runSubagentAnnounceFlow, Vt as detectSuspiciousPatterns, W as resolveAgentDeliveryPlan, Wn as resolveAgentTimeoutMs, Wt as applyBrowserProxyPaths, Xn as ToolInputError, Y as resolveAgentAvatar, Yn as resolveAgentSessionDirs, _ as prepareSessionManagerForRun, _n as isSystemEventContextChanged, _t as resolveOutboundSessionRoute, a as runHeartbeatOnce, an as setGatewaySigusr1RestartPolicy, ar as resolveTtsConfig, bt as resolveSessionDeliveryTarget, c as startHeartbeatRunner, cr as setTtsEnabled, d as getLastHeartbeatEvent, dr as OPENAI_TTS_MODELS, dt as getCliSessionId, en as deferGatewayRestartUntilIdle, er as getTtsProvider, f as onHeartbeatEvent, fr as OPENAI_TTS_VOICES, ft as setCliSessionId, g as runEmbeddedPiAgent, gn as enqueueSystemEvent, gr as resolveUserTimezone, gt as ensureOutboundSessionEntry, h as resolveCronSession, hr as resolveCronStyleNow, i as resolveHeartbeatSummaryForAgent, in as scheduleGatewaySigusr1Restart, ir as resolveTtsAutoMode, it as getTotalPendingReplies, j as takePendingActivationMigration, jn as normalizeMimeList, jt as summarizeRestartSentinel, k as getLoadedAnalysisConcurrency, kn as extractFileContentFromSource, kt as formatRestartSentinelMessage, l as runWakeGate, lr as setTtsProvider, lt as resolveChannelAccountEnabled, m as isCronSystemEvent, mr as stripHeartbeatToken, mt as createOpenClawTools, n as runMainAgentTurn, nn as isGatewaySigusr1RestartExternallyAllowed, nr as isTtsProviderConfigured, nt as setDispatchInboundAdmissionRejectionFor, on as setPreRestartDeferralCheck, or as resolveTtsPrefsPath, p as redactSensitiveHeartbeatEvent, pr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, pt as runCliAgent, q as createDefaultDeps, qn as removeQueuedFollowupRun, r as resolveHeartbeatConfig, rn as markGatewaySigusr1RestartHandled, rr as resolveTtsApiKey, rt as createReplyDispatcher, s as setHeartbeatsEnabled, sn as triggerOpenClawRestart, sr as resolveTtsProviderOrder, tn as emitGatewayRestart, tr as isTtsEnabled, tt as dispatchInboundMessage, u as resolveHeartbeatVisibility, un as loadProviderUsageSummary, ur as textToSpeech, ut as BARE_SESSION_RESET_PROMPT, v as snapshotRunPendingWrites, vt as resolveHeartbeatDeliveryTarget, wn as ACP_SESSION_IDENTITY_RENDERER_VERSION, x as resolveExecConfig, xn as requestHeartbeatNow, xt as resolveOutboundChannelPlugin, y as waitForPendingWrites, yt as resolveOutboundTarget, z as requestBodyErrorToText, zn as listDescendantRunsForRequester, zt as stripLegacyDeliveryFields } from "./agent-turn-execute-pkDSwyuf.js";
21
21
  import { l as deriveSessionTotalTokens, u as hasNonzeroUsage } from "./chat-envelope-DfuAGxmg.js";
22
22
  import { c as isDiagnosticsEnabled, l as onDiagnosticEvent, s as emitDiagnosticEvent } from "./task-run-types-B6n0W8Rb.js";
23
23
  import { n as USER_CLIENT_ID, o as buildUserClientRuntimeConfig, s as handleUserClientHttpRequest } from "./static-server-CRGPIP-a.js";
24
24
  import { t as redactIdentifier } from "./redact-identifier-BcqQpFrh.js";
25
- import { a as cancelDelayedAgentTurnWaiters, c as enqueueAgentTurn, i as agentTurnIdempotencyKey, l as isClaimableAgentTurnWorkId, r as AGENT_TURN_TOPIC, s as createRecoveryAgentTurnStager } from "./agent-turn-enqueue-BNvNiMpq.js";
25
+ import { a as cancelDelayedAgentTurnWaiters, c as enqueueAgentTurn, i as agentTurnIdempotencyKey, l as isClaimableAgentTurnWorkId, r as AGENT_TURN_TOPIC, s as createRecoveryAgentTurnStager } from "./agent-turn-enqueue-CsHMHVsf.js";
26
26
  import { t as CommandLane } from "./lanes-BN1DVTrA.js";
27
- import { A as registerBeforeCreate, C as artifactTokenFor, D as markRemoved, E as markClientRemovedAcknowledged, M as buildVerificationEnvelope, N as redactVerificationProjection, O as markRetained, P as verificationEnvelopeFingerprint, S as accountSessionArtifactsAtTerminalSweep, T as listSessionArtifacts, _ as requireProcessBootIdentityPair, a as setAgentTurnRuntime, b as installGatewayRestartRecoveryRuntime, d as isSoakError, f as readTrustedBuildInfo, g as isBootIdentityError, h as deriveBootIdentityPair, i as getAgentTurnRuntime, j as VERIFICATION_CONFIG_SCENARIO, k as redactArtifactLogId, l as buildSoakDeploymentRecord, m as armBarrier, n as createAgentTurnRuntimeFromStorage, o as tryGetAgentTurnRuntime, p as acceptSuccessorExecution, r as getActiveAgentTurnCount, u as evaluateSoak, v as clearGatewayRestartRecoveryRuntimeIf, w as isArtifactRegistrationError, x as RETAINED_ARTIFACT_KIND, y as getGatewayRestartRecoveryRuntime } from "./agent-turn-runner-BDS9k--2.js";
28
- import { a as getGatewayInstanceId, o as resolveSessionRunStore, t as createSessionRunRecorder } from "./recorder-CMNhAFwu.js";
29
- import "./pi-embedded-helpers-C6VayjB1.js";
30
- import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-DzgYdBHo.js";
27
+ import { A as registerBeforeCreate, C as artifactTokenFor, D as markRemoved, E as markClientRemovedAcknowledged, M as buildVerificationEnvelope, N as redactVerificationProjection, O as markRetained, P as verificationEnvelopeFingerprint, S as accountSessionArtifactsAtTerminalSweep, T as listSessionArtifacts, _ as requireProcessBootIdentityPair, a as setAgentTurnRuntime, b as installGatewayRestartRecoveryRuntime, d as isSoakError, f as readTrustedBuildInfo, g as isBootIdentityError, h as deriveBootIdentityPair, i as getAgentTurnRuntime, j as VERIFICATION_CONFIG_SCENARIO, k as redactArtifactLogId, l as buildSoakDeploymentRecord, m as armBarrier, n as createAgentTurnRuntimeFromStorage, o as tryGetAgentTurnRuntime, p as acceptSuccessorExecution, r as getActiveAgentTurnCount, u as evaluateSoak, v as clearGatewayRestartRecoveryRuntimeIf, w as isArtifactRegistrationError, x as RETAINED_ARTIFACT_KIND, y as getGatewayRestartRecoveryRuntime } from "./agent-turn-runner-DoHGgNPh.js";
28
+ import { a as getGatewayInstanceId, o as resolveSessionRunStore, t as createSessionRunRecorder } from "./recorder-Ca_njjjH.js";
29
+ import "./pi-embedded-helpers-C9XqX-Jq.js";
30
+ import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-BpdiWabc.js";
31
31
  import { i as listCoreToolSections, n as PROFILE_OPTIONS, o as resolveCoreToolProfiles } from "./tool-catalog-BWgva5h1.js";
32
- import { i as resolveRelayAuthTokenForPort, n as resolveGatewayRelayToken } from "./extension-relay-auth-BE4YupGc.js";
33
- import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-DVz4yfpc.js";
32
+ import { i as resolveRelayAuthTokenForPort, n as resolveGatewayRelayToken } from "./extension-relay-auth-DD-U9VUc.js";
33
+ import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BrZL_MiW.js";
34
34
  import { t as safeEqualSecret } from "./secret-equal-CQn9WoXt.js";
35
- import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-cZK3OCUB.js";
36
- import { c as normalizeHostHeader, d as resolveGatewayBindHost, f as resolveGatewayListenHosts, i as isLoopbackHost, l as pickPrimaryLanIPv4, n as isLocalishHost, o as isTrustedProxyAddress, r as isLoopbackAddress, s as isValidIPv4, t as rawDataToString, u as resolveClientIp } from "./ws-CBDMKFAM.js";
37
- import { a as isDirectLoopbackProvenance, c as AUTH_RATE_LIMIT_SCOPE_BROWSER_EXTENSION, d as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, f as createAuthRateLimiter, i as captureTransportProvenance, l as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, n as authorizeHttpGatewayConnect, o as isLocalDirectRequest, p as normalizeRateLimitClientIp, r as authorizeWsControlUiGatewayConnect, s as resolveGatewayAuth, t as assertGatewayAuthConfigured, u as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH } from "./auth-BdqTyBRn.js";
38
- import { o as ensureGatewayStartupAuth, s as mergeGatewayTailscaleConfig } from "./server-context-RkR0AfjN.js";
35
+ import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-BSKE3pk_.js";
36
+ import { c as normalizeHostHeader, d as resolveGatewayBindHost, f as resolveGatewayListenHosts, i as isLoopbackHost, l as pickPrimaryLanIPv4, n as isLocalishHost, o as isTrustedProxyAddress, r as isLoopbackAddress, s as isValidIPv4, t as rawDataToString, u as resolveClientIp } from "./ws-DESjYW7M.js";
37
+ import { a as isDirectLoopbackProvenance, c as AUTH_RATE_LIMIT_SCOPE_BROWSER_EXTENSION, d as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, f as createAuthRateLimiter, i as captureTransportProvenance, l as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, n as authorizeHttpGatewayConnect, o as isLocalDirectRequest, p as normalizeRateLimitClientIp, r as authorizeWsControlUiGatewayConnect, s as resolveGatewayAuth, t as assertGatewayAuthConfigured, u as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH } from "./auth-Cx-Q9zgv.js";
38
+ import { o as ensureGatewayStartupAuth, s as mergeGatewayTailscaleConfig } from "./server-context-BEjWhzMi.js";
39
39
  import { d as hasBinary } from "./frontmatter-Dn2qUSOb.js";
40
- import { i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-ZklHNqsc.js";
41
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-Dwpja4Ts.js";
40
+ import { i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-D3kpiNaJ.js";
41
+ import { n as assertNoPathAliasEscape } from "./path-alias-guards-CHFrrzxZ.js";
42
42
  import { a as testRegexWithBoundedInput, i as compileSafeRegex } from "./redact-BWPFahWo.js";
43
43
  import { i as formatErrorMessage, o as hasErrnoCode, s as isErrno } from "./errors-Bf0TUXNT.js";
44
- import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-D7SLKk8k.js";
45
- import { n as SsrFBlockedError } from "./proxy-env-BVlcuMzr.js";
46
- import { c as detectMime } from "./image-ops-BH5tZFXZ.js";
47
- import "./store-AQt3mu5T.js";
48
- import { S as ensureChromeExtensionRelayServer } from "./chrome-Ch-PRzot.js";
49
- import { i as resolveProfile, r as resolveBrowserConfig, t as movePathToTrash } from "./trash-BDCU6Fb2.js";
50
- import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-J_cZ4_9V.js";
44
+ import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-CByGgR59.js";
45
+ import { n as SsrFBlockedError } from "./proxy-env-DzG6q8Hh.js";
46
+ import { c as detectMime } from "./image-ops-Cq6SZYWW.js";
47
+ import "./store-BFf8dvdk.js";
48
+ import { S as ensureChromeExtensionRelayServer } from "./chrome-BsgpiutB.js";
49
+ import { i as resolveProfile, r as resolveBrowserConfig, t as movePathToTrash } from "./trash-DNkuLhfz.js";
50
+ import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-QWAeZ9Is.js";
51
51
  import { t as resolveNetworkSsrFPolicy } from "./ssrf-config-C60x4trY.js";
52
- import "./server-middleware-B6bN1rYO.js";
52
+ import "./server-middleware-CrJMxxfQ.js";
53
53
  import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-NawgaQgc.js";
54
- import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-V-IxyeUB.js";
55
- import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-x3WbTUiR.js";
56
- import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-DIENRALL.js";
57
- import { f as getGlobalHookRunner, h as runGlobalGatewayStopSafely, m as resetGlobalHookRunner, u as buildOutboundSessionContext } from "./outbound-message-hooks-C0BAHo6-.js";
58
- import { A as setActiveRunProbe, M as stopDiagnosticHeartbeat, j as startDiagnosticHeartbeat, k as resolveStuckSessionWarnMs, t as clearActiveRunProbe } from "./diagnostic-CyH49cpU.js";
54
+ import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-B8M4IWrd.js";
55
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B6PaaeVv.js";
56
+ import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-CpZZ4mMw.js";
57
+ import { f as getGlobalHookRunner, h as runGlobalGatewayStopSafely, m as resetGlobalHookRunner, u as buildOutboundSessionContext } from "./outbound-message-hooks-BBtH97ZV.js";
58
+ import { A as setActiveRunProbe, M as stopDiagnosticHeartbeat, j as startDiagnosticHeartbeat, k as resolveStuckSessionWarnMs, t as clearActiveRunProbe } from "./diagnostic-u64kcpDQ.js";
59
59
  import { u as snapshotActiveRuns } from "./diagnostic-session-state-DCr9T3zW.js";
60
- import { a as getActiveTaskCount, c as getTotalQueueSize, d as resetAllLanes, f as setCommandLaneConcurrency, m as waitForActiveTasks, p as setGatewayDrainState, u as markGatewayDraining } from "./command-queue-BoBsMaob.js";
61
- import { F as resolveCronStorePath, I as saveCronStore, P as loadCronStore, S as collectTelegramDuplicatePollerDiagnostics } from "./send-CDuS9tHa.js";
62
- import { n as resolveModel } from "./model-D56FsZ1w.js";
63
- import "./pi-model-discovery-dD_F5Zs_.js";
64
- import "./models-config-BDhVodK4.js";
65
- import { i as resolveSafeBins } from "./exec-approvals-allowlist-UZiLlQZY.js";
66
- import "./exec-safe-bin-runtime-policy-kCGsE7iL.js";
67
- import "./session-consumer-agents-WuG2FJYp.js";
68
- import { n as loadModelCatalog } from "./model-catalog-CLFSsgfj.js";
69
- import "./fetch-cHZPcwpd.js";
70
- import { D as registerUnhandledRejectionHandler, _ as getProviderDeclaredEnvVars, c as transcribeBufferedPcmWithMediaUnderstanding, f as resolveModelEntries, n as buildProviderRegistry, u as resolveCapabilityConfig, v as listAutoDetectableProviders, y as normalizeMediaProviderId } from "./audio-transcription-runner-N8I-G4DN.js";
71
- import { t as fetchWithSsrFGuard } from "./fetch-guard-Dp0XbWAV.js";
72
- import "./proxy-fetch-D1upsMhs.js";
73
- import "./api-key-rotation-BDa6RvrU.js";
74
- import "./provider-image-BVRCttNV.js";
75
- import { h as extractTextFromChatContent } from "./pi-embedded-utils-CBwHE9Fa.js";
76
- import "./tool-display-CO_Gj1t5.js";
60
+ import { a as getActiveTaskCount, c as getTotalQueueSize, d as resetAllLanes, f as setCommandLaneConcurrency, m as waitForActiveTasks, p as setGatewayDrainState, u as markGatewayDraining } from "./command-queue-B3_VRNOr.js";
61
+ import { F as resolveCronStorePath, I as saveCronStore, P as loadCronStore, S as collectTelegramDuplicatePollerDiagnostics } from "./send-CZsC4D3G.js";
62
+ import { n as resolveModel } from "./model-BbeosLtF.js";
63
+ import "./pi-model-discovery-CZ9wxcE8.js";
64
+ import "./models-config-BMgEFu57.js";
65
+ import { i as resolveSafeBins } from "./exec-approvals-allowlist-CNWI56tZ.js";
66
+ import "./exec-safe-bin-runtime-policy-C3eU8CKJ.js";
67
+ import "./session-consumer-agents-5ORspv9c.js";
68
+ import { n as loadModelCatalog } from "./model-catalog-Bjfzg68Q.js";
69
+ import "./fetch-ByEEe-Yd.js";
70
+ import { D as registerUnhandledRejectionHandler, _ as getProviderDeclaredEnvVars, c as transcribeBufferedPcmWithMediaUnderstanding, f as resolveModelEntries, n as buildProviderRegistry, u as resolveCapabilityConfig, v as listAutoDetectableProviders, y as normalizeMediaProviderId } from "./audio-transcription-runner-Gr8vN3AS.js";
71
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-BzXFjlMV.js";
72
+ import "./proxy-fetch-BqVhGKFd.js";
73
+ import "./api-key-rotation-DiMQTef3.js";
74
+ import "./provider-image-Bsivqxw8.js";
75
+ import { h as extractTextFromChatContent } from "./pi-embedded-utils-BV_Dtzrw.js";
76
+ import "./tool-display-DiZGbhL2.js";
77
77
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-DFNB1c7t.js";
78
- import "./chunk-dZYOJUMQ.js";
79
- import "./markdown-tables-DBBxKcll.js";
80
- import "./ir-Bphccx2x.js";
78
+ import "./chunk-DiXpyRAz.js";
79
+ import "./markdown-tables-BcUNsqVQ.js";
80
+ import "./ir-B3r0eIJW.js";
81
81
  import "./render-BBWKrfmg.js";
82
- import { r as isRestartEnabled } from "./commands-Byb21m-W.js";
83
- import "./commands-registry-fXBoHxbT.js";
82
+ import { r as isRestartEnabled } from "./commands-Csxgimkc.js";
83
+ import "./commands-registry-Dx5QvNqH.js";
84
84
  import "./registry-DXmhuMNN.js";
85
- import { $ as validateNodeListParams, $t as validateTalkSessionCreateParams, A as validateCronRunParams, B as validateExecApprovalRequestParams, Bn as verifyDeviceToken, Bt as validateTalkConfigParams, C as validateConfigPatchParams, Cn as normalizeDeviceMetadataForAuth, D as validateCronAddParams, Dn as consumeDeviceBootstrapToken, E as validateConnectParams, En as approveDevicePairing, F as validateDevicePairListParams, Fn as revokeDeviceToken, Ft as validateSkillsBinsParams, G as validateExecApprovalsSetParams, Gt as validateTalkRealtimeSessionParams, H as validateExecApprovalsGetParams, Ht as validateTalkRealtimeAudioParams, I as validateDevicePairRejectParams, In as rotateDeviceToken, It as validateSkillsInstallParams, J as validateModelsListParams, Jt as validateTalkRealtimeToolResultParams, K as validateLogsTailParams, Kt as validateTalkRealtimeStatusParams, L as validateDevicePairRemoveParams, Ln as summarizeDeviceTokens, Lt as validateSkillsStatusParams, M as validateCronStatusParams, Mn as rejectDevicePairing, N as validateCronUpdateParams, Nn as removePairedDevice, Nt as validateSessionsTitlePrepareParams, O as validateCronListParams, On as ensureDeviceToken, P as validateDevicePairApproveParams, Pn as requestDevicePairing, Pt as validateSessionsUsageParams, Q as validateNodeInvokeResultParams, Qt as validateTalkSessionCloseParams, R as validateDeviceTokenRevokeParams, Rn as updatePairedDeviceMetadata, Rt as validateSkillsUpdateParams, S as validateConfigGetParams, Sn as buildDeviceAuthPayloadV3, T as validateConfigSetParams, Tn as approveBootstrapDevicePairing, U as validateExecApprovalsNodeGetParams, Un as operatorScopeSatisfied, Ut as validateTalkRealtimeBargeInParams, V as validateExecApprovalResolveParams, Vt as validateTalkModeParams, W as validateExecApprovalsNodeSetParams, Wn as roleScopesAllow, Wt as validateTalkRealtimeMarkParams, X as validateNodeEventParams, Xn as verifyDeviceSignature, Xt as validateTalkSessionBargeInParams, Y as validateNodeDescribeParams, Yn as normalizeDevicePublicKeyBase64Url, Yt as validateTalkSessionAppendAudioParams, Z as validateNodeInvokeParams, Zt as validateTalkSessionCancelTurnParams, _ as validateChatAbortParams, _n as ErrorCodes, a as validateAgentNudgeParams, an as validateToolsCatalogParams, at as validateNodeRenameParams, b as validateChatSendParams, c as validateAgentsCreateParams, cn as validateWebLoginStartParams, ct as validateRequestFrame, d as validateAgentsFilesListParams, dn as validateWizardNextParams, dt as validateSendParams, en as validateTalkSessionMarkParams, et as validateNodePairApproveParams, f as validateAgentsFilesSetParams, fn as validateWizardStartParams, ft as validateSessionsAbortParams, g as validateChannelsStatusParams, h as validateChannelsLogoutParams, hn as RUNS_INVALIDATED_EVENT, i as validateAgentIdentityParams, in as validateTasksRunsListParams, it as validateNodePairVerifyParams, j as validateCronRunsParams, jn as listDevicePairing, jt as validateSessionsSteerParams, k as validateCronRemoveParams, kn as getPairedDevice, l as validateAgentsDeleteParams, ln as validateWebLoginWaitParams, lt as validateSecretsResolveParams, m as validateAgentsUpdateParams, mn as PROTOCOL_VERSION, nn as validateTasksRunsEventsParams, nt as validateNodePairRejectParams, o as validateAgentParams, on as validateUpdateRunParams, ot as validatePollParams, p as validateAgentsListParams, pn as validateWizardStatusParams, q as validateModelsAuthStatusParams, qn as deriveDeviceIdFromPublicKey, qt as validateTalkRealtimeStopParams, r as formatValidationErrors, rn as validateTasksRunsGetParams, rt as validateNodePairRequestParams, s as validateAgentWaitParams, sn as validateWakeParams, st as validatePushTestParams, tn as validateTasksRunEventsParams, tt as validateNodePairListParams, u as validateAgentsFilesGetParams, un as validateWizardCancelParams, ut as validateSecretsResolveResult, v as validateChatHistoryParams, vn as errorShape, w as validateConfigSchemaParams, x as validateConfigApplyParams, xn as buildDeviceAuthPayload, y as validateChatInjectParams, z as validateDeviceTokenRotateParams, zn as verifyDeviceBootstrapToken, zt as validateTalkCatalogParams } from "./client-BGqFY5o-.js";
86
- import { _ as hasNarrowSessionScope, d as APPROVALS_SCOPE, f as PAIRING_SCOPE, g as authorizeOperatorScopesForMethod, h as WRITE_SCOPE, m as SESSION_READ_SCOPE, n as callGateway, p as READ_SCOPE, u as ADMIN_SCOPE$1, v as isHealthProbeAllowedForScopes, x as loadGatewayTlsRuntime$1, y as isNodeRoleMethod } from "./call-UfwN5rR7.js";
85
+ import { $ as validateNodeListParams, $t as validateTalkSessionCreateParams, A as validateCronRunParams, B as validateExecApprovalRequestParams, Bn as verifyDeviceToken, Bt as validateTalkConfigParams, C as validateConfigPatchParams, Cn as normalizeDeviceMetadataForAuth, D as validateCronAddParams, Dn as consumeDeviceBootstrapToken, E as validateConnectParams, En as approveDevicePairing, F as validateDevicePairListParams, Fn as revokeDeviceToken, Ft as validateSkillsBinsParams, G as validateExecApprovalsSetParams, Gt as validateTalkRealtimeSessionParams, H as validateExecApprovalsGetParams, Ht as validateTalkRealtimeAudioParams, I as validateDevicePairRejectParams, In as rotateDeviceToken, It as validateSkillsInstallParams, J as validateModelsListParams, Jt as validateTalkRealtimeToolResultParams, K as validateLogsTailParams, Kt as validateTalkRealtimeStatusParams, L as validateDevicePairRemoveParams, Ln as summarizeDeviceTokens, Lt as validateSkillsStatusParams, M as validateCronStatusParams, Mn as rejectDevicePairing, N as validateCronUpdateParams, Nn as removePairedDevice, Nt as validateSessionsTitlePrepareParams, O as validateCronListParams, On as ensureDeviceToken, P as validateDevicePairApproveParams, Pn as requestDevicePairing, Pt as validateSessionsUsageParams, Q as validateNodeInvokeResultParams, Qt as validateTalkSessionCloseParams, R as validateDeviceTokenRevokeParams, Rn as updatePairedDeviceMetadata, Rt as validateSkillsUpdateParams, S as validateConfigGetParams, Sn as buildDeviceAuthPayloadV3, T as validateConfigSetParams, Tn as approveBootstrapDevicePairing, U as validateExecApprovalsNodeGetParams, Un as operatorScopeSatisfied, Ut as validateTalkRealtimeBargeInParams, V as validateExecApprovalResolveParams, Vt as validateTalkModeParams, W as validateExecApprovalsNodeSetParams, Wn as roleScopesAllow, Wt as validateTalkRealtimeMarkParams, X as validateNodeEventParams, Xn as verifyDeviceSignature, Xt as validateTalkSessionBargeInParams, Y as validateNodeDescribeParams, Yn as normalizeDevicePublicKeyBase64Url, Yt as validateTalkSessionAppendAudioParams, Z as validateNodeInvokeParams, Zt as validateTalkSessionCancelTurnParams, _ as validateChatAbortParams, _n as ErrorCodes, a as validateAgentNudgeParams, an as validateToolsCatalogParams, at as validateNodeRenameParams, b as validateChatSendParams, c as validateAgentsCreateParams, cn as validateWebLoginStartParams, ct as validateRequestFrame, d as validateAgentsFilesListParams, dn as validateWizardNextParams, dt as validateSendParams, en as validateTalkSessionMarkParams, et as validateNodePairApproveParams, f as validateAgentsFilesSetParams, fn as validateWizardStartParams, ft as validateSessionsAbortParams, g as validateChannelsStatusParams, h as validateChannelsLogoutParams, hn as RUNS_INVALIDATED_EVENT, i as validateAgentIdentityParams, in as validateTasksRunsListParams, it as validateNodePairVerifyParams, j as validateCronRunsParams, jn as listDevicePairing, jt as validateSessionsSteerParams, k as validateCronRemoveParams, kn as getPairedDevice, l as validateAgentsDeleteParams, ln as validateWebLoginWaitParams, lt as validateSecretsResolveParams, m as validateAgentsUpdateParams, mn as PROTOCOL_VERSION, nn as validateTasksRunsEventsParams, nt as validateNodePairRejectParams, o as validateAgentParams, on as validateUpdateRunParams, ot as validatePollParams, p as validateAgentsListParams, pn as validateWizardStatusParams, q as validateModelsAuthStatusParams, qn as deriveDeviceIdFromPublicKey, qt as validateTalkRealtimeStopParams, r as formatValidationErrors, rn as validateTasksRunsGetParams, rt as validateNodePairRequestParams, s as validateAgentWaitParams, sn as validateWakeParams, st as validatePushTestParams, tn as validateTasksRunEventsParams, tt as validateNodePairListParams, u as validateAgentsFilesGetParams, un as validateWizardCancelParams, ut as validateSecretsResolveResult, v as validateChatHistoryParams, vn as errorShape, w as validateConfigSchemaParams, x as validateConfigApplyParams, xn as buildDeviceAuthPayload, y as validateChatInjectParams, z as validateDeviceTokenRotateParams, zn as verifyDeviceBootstrapToken, zt as validateTalkCatalogParams } from "./client-DN-SMVBn.js";
86
+ import { _ as hasNarrowSessionScope, d as APPROVALS_SCOPE, f as PAIRING_SCOPE, g as authorizeOperatorScopesForMethod, h as WRITE_SCOPE, m as SESSION_READ_SCOPE, n as callGateway, p as READ_SCOPE, u as ADMIN_SCOPE$1, v as isHealthProbeAllowedForScopes, x as loadGatewayTlsRuntime$1, y as isNodeRoleMethod } from "./call-PE59cW0J.js";
87
87
  import "./pairing-token-BfRB0jVM.js";
88
- import { D as onAgentEvent, E as getAgentRunContext, O as registerAgentRunContext, T as emitAgentEvent, a as getActiveEmbeddedRunCount, c as isEmbeddedPiRunInFlight, d as isInFlightVoiceAttempt, f as peekActiveEmbeddedRun, g as waitForEmbeddedPiRunEnd, l as isEmbeddedPiRunSteerable, o as getActiveEmbeddedRunOwner, r as clearActiveEmbeddedRun, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun, w as clearAgentRunContext } from "./runs-BAm5mg_D.js";
89
- import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CaBp0YZL.js";
90
- import "./user-run-recording-BR_U9osf.js";
88
+ import { D as onAgentEvent, E as getAgentRunContext, O as registerAgentRunContext, T as emitAgentEvent, a as getActiveEmbeddedRunCount, c as isEmbeddedPiRunInFlight, d as isInFlightVoiceAttempt, f as peekActiveEmbeddedRun, g as waitForEmbeddedPiRunEnd, l as isEmbeddedPiRunSteerable, o as getActiveEmbeddedRunOwner, r as clearActiveEmbeddedRun, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun, w as clearAgentRunContext } from "./runs-BjLs5ozo.js";
89
+ import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BLp1Q7uO.js";
90
+ import "./user-run-recording-DXNyfjMq.js";
91
91
  import "./fetch--Fn4tlfW.js";
92
- import { a as readChannelAllowFromStoreSync } from "./pairing-store-CVHmKK9w.js";
93
- import { a as maxAsk, c as normalizeExecApprovals, g as saveExecApprovalsV2, h as saveExecApprovals, i as loadExecApprovalsV2, l as readExecApprovalsSnapshot, m as resolveExecApprovalsReadOnly, o as mergeExecApprovalsSocketDefaults, r as ensureExecApprovals, s as minSecurity, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-BL3RknaU.js";
94
- import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-DGsjKglY.js";
95
- import { r as resolveSystemRunCommand, t as canonicalizeLegacySystemRunParams } from "./system-run-command-Cv1h27tf.js";
96
- import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, f as computeBackoff, l as resolveSessionModelRef, o as loadSessionEntry, p as sleepWithAbort, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-B2PSRqVy.js";
97
- 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-DbmH_7xm.js";
98
- import { t as listAgentWorkspaceDirs } from "./workspace-dirs-CCmfLlPy.js";
99
- 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-D7BZusrG.js";
100
- import { i as normalizePollInput, t as getChannelActivity } from "./channel-activity-DF1lamZi.js";
101
- import "./tables-BBiYzs81.js";
92
+ import { a as readChannelAllowFromStoreSync } from "./pairing-store-BZFrD-fJ.js";
93
+ import { a as maxAsk, c as normalizeExecApprovals, g as saveExecApprovalsV2, h as saveExecApprovals, i as loadExecApprovalsV2, l as readExecApprovalsSnapshot, m as resolveExecApprovalsReadOnly, o as mergeExecApprovalsSocketDefaults, r as ensureExecApprovals, s as minSecurity, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-C3o7bTbp.js";
94
+ import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-DANf1hC-.js";
95
+ import { r as resolveSystemRunCommand, t as canonicalizeLegacySystemRunParams } from "./system-run-command-Dl8UC6hO.js";
96
+ import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, f as computeBackoff, l as resolveSessionModelRef, o as loadSessionEntry, p as sleepWithAbort, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-CrCJ-7yK.js";
97
+ 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-uhWJKPrM.js";
98
+ import { t as listAgentWorkspaceDirs } from "./workspace-dirs-mzsfTPed.js";
99
+ 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--nD7TrF-.js";
100
+ import { i as normalizePollInput, t as getChannelActivity } from "./channel-activity-SqK9nKf7.js";
101
+ import "./tables-CCEXTXTG.js";
102
102
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-BTDAzt-T.js";
103
- import "./server-lifecycle-B8yCvRvX.js";
103
+ import "./server-lifecycle-C3hCCbXm.js";
104
104
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CT5G1TCV.js";
105
- import { a as normalizeHttpWebhookUrl, l as normalizeOptionalText, o as inferLegacyName } from "./heartbeat-tick-D26lWjWr.js";
106
- import { d as resolveGroupToolPolicy, f as resolveSubagentToolPolicy, u as resolveEffectiveToolPolicy } from "./dm-policy-shared-DFPi7Zr2.js";
107
- import "./reply-directives-B3iuHT4J.js";
108
- import { n as resolveMessageChannelSelection } from "./channel-selection-CNMEexgg.js";
109
- import { i as applyPluginAutoEnable, n as collectUnsafeTelegramPollingTimeouts, s as buildChannelUiCatalog } from "./polling-timeout-L7Tp4szs.js";
110
- import "./send-DSEM68Bg.js";
111
- import "./outbound-attachment-DXvNKE87.js";
105
+ import { a as normalizeHttpWebhookUrl, l as normalizeOptionalText, o as inferLegacyName } from "./heartbeat-tick-By0WI8YD.js";
106
+ import { d as resolveGroupToolPolicy, f as resolveSubagentToolPolicy, u as resolveEffectiveToolPolicy } from "./dm-policy-shared-CV1uWhMc.js";
107
+ import "./reply-directives-Bc2RQAcJ.js";
108
+ import { n as resolveMessageChannelSelection } from "./channel-selection-DfNPCJXK.js";
109
+ import { i as applyPluginAutoEnable, n as collectUnsafeTelegramPollingTimeouts, s as buildChannelUiCatalog } from "./polling-timeout-DoMlNx_D.js";
110
+ import "./send-CwCEyog7.js";
111
+ import "./outbound-attachment-DJ3uYvUI.js";
112
112
  import "./delivery-queue-C38eMpQd.js";
113
- import "./send-o7L9XTU3.js";
114
- import "./resolve-route-D0rmcC0-.js";
115
- import "./proxy-m4Mv3Vy0.js";
116
- import "./replies-aExjMxzn.js";
117
- import { n as GATEWAY_AUTH_SURFACE_PATHS, p as isKnownSecretTargetId, r as evaluateGatewayAuthSurfaceStates } from "./runtime-config-collectors-Q9nEWUTc.js";
118
- import "./command-secret-targets-DtnfBTvl.js";
119
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-BlOvn-As.js";
120
- import "./prompt-style-CO6JkEel.js";
121
- import "./pairing-labels-BMQWK5UC.js";
122
- import "./session-meta-YzxyVCeI.js";
123
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-OhwCkNE-.js";
124
- import { r as resolveMemorySearchConfig } from "./manager-DbUdXsY9.js";
125
- import "./query-expansion-Bf7wd2Iw.js";
126
- import { t as formatDocsLink } from "./links-oxBAdiT5.js";
113
+ import "./send-BVisLSq7.js";
114
+ import "./resolve-route-KBL5oj6U.js";
115
+ import "./proxy-Ba9wFNmC.js";
116
+ import "./replies-BNP-F_lm.js";
117
+ import { n as GATEWAY_AUTH_SURFACE_PATHS, p as isKnownSecretTargetId, r as evaluateGatewayAuthSurfaceStates } from "./runtime-config-collectors-BVWO6FhK.js";
118
+ import "./command-secret-targets-CJ1czw_Q.js";
119
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-DNbkQX5v.js";
120
+ import "./prompt-style-XoPngT10.js";
121
+ import "./pairing-labels-DYgJqxe0.js";
122
+ import "./session-meta-Bd0mS7MT.js";
123
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-DVqLwNhN.js";
124
+ import { r as resolveMemorySearchConfig } from "./manager-PSj0t5kg.js";
125
+ import "./query-expansion-BydaUlRH.js";
126
+ import { t as formatDocsLink } from "./links-BZDTcdHU.js";
127
127
  import { n as runCommandWithRuntime } from "./cli-utils-aSBNHQae.js";
128
- import { t as formatHelpExamples } from "./help-format-BuYYzCrK.js";
129
- import { n as withProgress } from "./progress-DFaFyDmB.js";
130
- import "./recovery-prompt-TVvxel5J.js";
131
- import { c as OwnerLockHeldError, d as createOwnerIdentity, f as RecoveryJournalError, i as REASON_PRIOR_OWNER_UNPROVEN, l as PriorOwnerLiveError, n as REASON_JOURNAL_UNWRITABLE, o as createRestartRecoveryController, p as openRecoveryJournal, r as REASON_OWNER_LOCK_HELD, s as OwnerFenceLostError, t as REASON_JOURNAL_CORRUPT, u as acquireOwnerFence } from "./controller-DhhnKGZm.js";
132
- import { t as buildWorkspaceSkillStatus } from "./skills-status-BEsBhRkz.js";
128
+ import { t as formatHelpExamples } from "./help-format-DuL_Y84f.js";
129
+ import { n as withProgress } from "./progress-Dc4ihErK.js";
130
+ import "./recovery-prompt-CRcPgKcT.js";
131
+ import { c as OwnerLockHeldError, d as createOwnerIdentity, f as RecoveryJournalError, i as REASON_PRIOR_OWNER_UNPROVEN, l as PriorOwnerLiveError, n as REASON_JOURNAL_UNWRITABLE, o as createRestartRecoveryController, p as openRecoveryJournal, r as REASON_OWNER_LOCK_HELD, s as OwnerFenceLostError, t as REASON_JOURNAL_CORRUPT, u as acquireOwnerFence } from "./controller-CyFBTP5K.js";
132
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-DEdp3c6y.js";
133
133
  import { t as ensureOpenClawCliOnPath } from "./path-env-BaV2MrlM.js";
134
134
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-C2gmG0PE.js";
135
135
  import { n as inheritOptionFromParent } from "./command-options-vZSwrzpA.js";
136
136
  import { t as WizardCancelledError } from "./prompts-BBkof-cQ.js";
137
137
  import { t as resolveChannelDefaultAccountId } from "./helpers-GPI9o9AS.js";
138
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-D1RGbjKF.js";
139
- import { t as isWithinDir } from "./path-safety-tNRAPoSe.js";
140
- import "./install-safe-path-B8ogENI2.js";
141
- import "./npm-pack-install-DrAALuzR.js";
142
- import "./skill-scanner-CZhas7UB.js";
143
- import "./installs-BZc_r32M.js";
144
- import { n as formatConfigIssueLines } from "./issue-format-eKDAjB9C.js";
138
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-96ueVlOH.js";
139
+ import { t as isWithinDir } from "./path-safety-CCSB65fm.js";
140
+ import "./install-safe-path-4YfMRsxN.js";
141
+ import "./npm-pack-install-Dlm0MIZy.js";
142
+ import "./skill-scanner-BrEkff8K.js";
143
+ import "./installs-4lGALZOo.js";
144
+ import { n as formatConfigIssueLines } from "./issue-format-BG8o87sf.js";
145
145
  import { t as buildChannelAccountSnapshot } from "./status-yrDGXYZM.js";
146
- import "./channels-status-issues-CdhIpbIH.js";
147
- import { i as resolveGatewayClientProfile, t as WEB_CLIENT_ALLOWED_ORIGINS_CONFIG_KEY } from "./client-profiles-CRejJ0SL.js";
148
- import "./daemon-install-helpers-Di-kgTCh.js";
149
- import "./runtime-guard-fIvyv07S.js";
150
- import "./service-BVB5AQS4.js";
151
- import "./systemd-Cjr55Dzl.js";
152
- import "./lifecycle-core-CIW7Nndu.js";
153
- import "./systemd-hints-Dd6VtLsV.js";
146
+ import "./channels-status-issues-B4p6AXBG.js";
147
+ import { i as resolveGatewayClientProfile, t as WEB_CLIENT_ALLOWED_ORIGINS_CONFIG_KEY } from "./client-profiles-DEoACLX5.js";
148
+ import "./daemon-install-helpers-CKbnFsNZ.js";
149
+ import "./runtime-guard-DchtXvGj.js";
150
+ import "./service-Dkcqg-rd.js";
151
+ import "./systemd-BJqlwupF.js";
152
+ import "./lifecycle-core-CuMY0U_8.js";
153
+ import "./systemd-hints-Cp0IfOPD.js";
154
154
  import { t as parsePort$1 } from "./parse-port-CshWaSQ9.js";
155
- import { n as addGatewayServiceCommands } from "./daemon-cli-BHHTg_VA.js";
156
- import "./diagnostics-BMCo9z-e.js";
157
- import "./table-CuH5YX2S.js";
158
- import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-B9lNb6ro.js";
159
- import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-DerjPYzv.js";
160
- import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-3p1cCyN-.js";
161
- import { t as discoverGatewayBeacons } from "./bonjour-discovery-Df2P-Q7o.js";
162
- import { a as getStorageV1Snapshot, c as pickGatewaySelfPresence, i as createStorageSupervisor, o as noteStorageReplayResult, r as getStatusSummary, s as noteStorageRestartRequired } from "./status-CbJxUaE5.js";
163
- import { c as redactOwner, d as redactSensitiveHealthSummary, f as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-joZ3P32_.js";
164
- import { a as readPostQuiesceTranscriptDelta, i as readBulkTranscriptLines, o as replaySource, r as mergeBulkTranscriptSnapshotAndDelta, t as ReplayRowConflictError } from "./replay-C9MQSD5C.js";
165
- import "./session-key-resolution-D__Pd_mB.js";
166
- import { c as waitForStopDrain, l as withTimeout, o as tasksHandlers, r as getTaskOperatorRegistry, s as retryDelayMs, t as DEFAULT_RETENTION_DAYS } from "./task-runlog-retention-BdL6aGzZ.js";
167
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CZc_jZ5P.js";
168
- import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-BeP04lVU.js";
169
- import { t as reconcileBundledInstalls } from "./reconcile-bundled-DyXp6UFb.js";
170
- import { a as resolveCommandSecretsFromActiveRuntimeSnapshot, i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-CK9AbML9.js";
171
- import "./onboarding.secret-input-DH2Ce8GL.js";
172
- import { t as runOnboardingWizard } from "./onboarding-DjLzxd2p.js";
173
- import { a as computeJobNextRunAtMs, c as findJobOrThrow, d as recomputeNextRuns, f as recomputeNextRunsForMaintenance, h as produceCronAgentTurn, i as applyJobPatch, l as isJobDue, m as resolveJobPayloadTextForMain, o as createJob, p as recordScheduleComputeError, r as resolveStaleClaimAdoptionMs, s as cronShapeSupportsIdentity, t as CRON_HEARTBEAT_ADAPTER_ID, u as nextWakeAtMs } from "./recovery-adapter-Dp82nx48.js";
174
- 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-RSo8eOEB.js";
175
- import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-DxQW0vvG.js";
176
- import { a as readChatHistoryPage, c as unsubscribeSessionChanges, i as decodeHistoryCursor, l as assertValidParams, o as resolveDbLeafEntryId, r as InvalidHistoryCursorError, s as resolveDbMessageEntryById, t as sessionsHandlers } from "./sessions-Q3WrKAAg.js";
177
- import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-B4-mf1hM.js";
178
- import "./node-service-DlskRE2h.js";
179
- import "./status.update-Dhleef_a.js";
180
- import { i as resolveActiveLogFile, n as readLogSlice } from "./log-tail-Cu_iMzte.js";
181
- import { t as installSkill } from "./skills-install-B7k9HIIw.js";
182
- import { r as runGatewayUpdate } from "./update-runner-ha2YJZBG.js";
183
- import { n as resolveWebClientPackagedRootSync, t as WEB_CLIENT_BUNDLE_MISSING_MESSAGE } from "./web-client-assets-COSve3Rq.js";
184
- import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-Dt30ZPzK.js";
185
- import { c as heartbeatProbeRunArtifactId, d as runIsolatedHeartbeatProbe, i as HEARTBEAT_PROBE_REASON, l as isHeartbeatProbeError, o as assertHeartbeatProbeDeliveryIsSafe, p as readValidationActivation, r as HEARTBEAT_PROBE_ALLOWED_TARGET, s as assertHeartbeatProbeParamsAreClosed, t as VALIDATION_ABORT_COMMAND, u as probeSessionKey$1 } from "./operator-commands-JUXdOhQX.js";
186
- import { n as forceFreePortAndWait } from "./ports-CwKtoFkm.js";
155
+ import { n as addGatewayServiceCommands } from "./daemon-cli-D874Hxry.js";
156
+ import "./diagnostics-C6ntZHc3.js";
157
+ import "./table-H366JkfJ.js";
158
+ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-B1ALOpPn.js";
159
+ import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-Cj18nzyW.js";
160
+ import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-8O6sjQPv.js";
161
+ import { t as discoverGatewayBeacons } from "./bonjour-discovery-B1GbNHC3.js";
162
+ import { a as getStorageV1Snapshot, c as pickGatewaySelfPresence, i as createStorageSupervisor, o as noteStorageReplayResult, r as getStatusSummary, s as noteStorageRestartRequired } from "./status-BacPIpt6.js";
163
+ import { c as redactOwner, d as redactSensitiveHealthSummary, f as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-B5jHSu9i.js";
164
+ import { a as readPostQuiesceTranscriptDelta, i as readBulkTranscriptLines, o as replaySource, r as mergeBulkTranscriptSnapshotAndDelta, t as ReplayRowConflictError } from "./replay-B9P8F4Td.js";
165
+ import "./session-key-resolution-CvnTXaSw.js";
166
+ import { a as respondTaskRegistryUnavailable, c as tasksHandlers, d as withTimeout, i as resolveTaskOperatorRegistry, l as retryDelayMs, r as getTaskOperatorRegistry, t as DEFAULT_RETENTION_DAYS, u as waitForStopDrain } from "./task-runlog-retention-DCbMK2T8.js";
167
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BXkk_vKO.js";
168
+ import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-DM1npKXX.js";
169
+ import { t as reconcileBundledInstalls } from "./reconcile-bundled-CAKTvY-C.js";
170
+ import { a as resolveCommandSecretsFromActiveRuntimeSnapshot, i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-ACR3KU8j.js";
171
+ import "./onboarding.secret-input-YvW1rg1V.js";
172
+ import { t as runOnboardingWizard } from "./onboarding-R2m4j7Dp.js";
173
+ import { a as computeJobNextRunAtMs, c as findJobOrThrow, d as recomputeNextRuns, f as recomputeNextRunsForMaintenance, h as produceCronAgentTurn, i as applyJobPatch, l as isJobDue, m as resolveJobPayloadTextForMain, o as createJob, p as recordScheduleComputeError, r as resolveStaleClaimAdoptionMs, s as cronShapeSupportsIdentity, t as CRON_HEARTBEAT_ADAPTER_ID, u as nextWakeAtMs } from "./recovery-adapter-CPQ9-014.js";
174
+ 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-BcZzA03X.js";
175
+ import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BzuIKryU.js";
176
+ import { a as readChatHistoryPage, c as unsubscribeSessionChanges, i as decodeHistoryCursor, l as assertValidParams, o as resolveDbLeafEntryId, r as InvalidHistoryCursorError, s as resolveDbMessageEntryById, t as sessionsHandlers } from "./sessions-DFDrcshi.js";
177
+ import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-C1Fy9dcA.js";
178
+ import "./node-service-Ys7JZFz-.js";
179
+ import "./status.update-C4YRQzqD.js";
180
+ import { i as resolveActiveLogFile, n as readLogSlice } from "./log-tail-Dg2oYTZ6.js";
181
+ import { t as installSkill } from "./skills-install-B23U6yk5.js";
182
+ import { r as runGatewayUpdate } from "./update-runner-C8NxlRy7.js";
183
+ import { n as resolveWebClientPackagedRootSync, t as WEB_CLIENT_BUNDLE_MISSING_MESSAGE } from "./web-client-assets-nkeo2cLh.js";
184
+ import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DkkkJ4GX.js";
185
+ import { c as heartbeatProbeRunArtifactId, d as runIsolatedHeartbeatProbe, i as HEARTBEAT_PROBE_REASON, l as isHeartbeatProbeError, o as assertHeartbeatProbeDeliveryIsSafe, p as readValidationActivation, r as HEARTBEAT_PROBE_ALLOWED_TARGET, s as assertHeartbeatProbeParamsAreClosed, t as VALIDATION_ABORT_COMMAND, u as probeSessionKey$1 } from "./operator-commands-BmGo9Ngv.js";
186
+ import { n as forceFreePortAndWait } from "./ports-BxjQwKMc.js";
187
187
  import { createRequire } from "node:module";
188
188
  import { spawn, spawnSync } from "node:child_process";
189
189
  import { cpuUsage, memoryUsage, resourceUsage, uptime } from "node:process";
@@ -193,7 +193,7 @@ import path from "node:path";
193
193
  import * as fsSync from "node:fs";
194
194
  import fs, { mkdirSync } from "node:fs";
195
195
  import chalk from "chalk";
196
- import fsPromises from "node:fs/promises";
196
+ import fs$1 from "node:fs/promises";
197
197
  import { isDeepStrictEqual, promisify } from "node:util";
198
198
  import zlib from "node:zlib";
199
199
  import crypto, { createHash, createHmac, hkdfSync, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
@@ -1083,7 +1083,7 @@ function resolveVerificationStore(params = {}) {
1083
1083
 
1084
1084
  //#endregion
1085
1085
  //#region src/infra/exec-approval-forwarder.ts
1086
- const log$29 = createSubsystemLogger("gateway/exec-approvals");
1086
+ const log$30 = createSubsystemLogger("gateway/exec-approvals");
1087
1087
  const DEFAULT_MODE = "session";
1088
1088
  function normalizeMode(mode) {
1089
1089
  return mode ?? DEFAULT_MODE;
@@ -1221,7 +1221,7 @@ async function deliverToTargets(params) {
1221
1221
  payloads: [{ text: params.text }]
1222
1222
  });
1223
1223
  } catch (err) {
1224
- log$29.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1224
+ log$30.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1225
1225
  }
1226
1226
  });
1227
1227
  await Promise.allSettled(deliveries);
@@ -1310,7 +1310,7 @@ function createExecApprovalForwarder(deps = {}) {
1310
1310
  deliver,
1311
1311
  shouldSend: () => pending.get(request.id) === pendingEntry
1312
1312
  }).catch((err) => {
1313
- log$29.error(`exec approvals: failed to deliver request ${request.id}: ${String(err)}`);
1313
+ log$30.error(`exec approvals: failed to deliver request ${request.id}: ${String(err)}`);
1314
1314
  });
1315
1315
  return true;
1316
1316
  };
@@ -1400,7 +1400,7 @@ function resolveCheckIntervalMs(cfg) {
1400
1400
  }
1401
1401
  async function readState(statePath) {
1402
1402
  try {
1403
- const raw = await fsPromises.readFile(statePath, "utf-8");
1403
+ const raw = await fs$1.readFile(statePath, "utf-8");
1404
1404
  const parsed = JSON.parse(raw);
1405
1405
  return parsed && typeof parsed === "object" ? parsed : {};
1406
1406
  } catch {
@@ -1481,7 +1481,7 @@ async function runAutoUpdateCommand(params) {
1481
1481
  path.join(params.root, "dist", "index.mjs")
1482
1482
  ];
1483
1483
  for (const candidate of candidates) try {
1484
- await fsPromises.access(candidate);
1484
+ await fs$1.access(candidate);
1485
1485
  argv.push(execPath, candidate, ...baseArgs);
1486
1486
  break;
1487
1487
  } catch {}
@@ -1682,7 +1682,7 @@ function scheduleGatewayUpdateCheck(params) {
1682
1682
 
1683
1683
  //#endregion
1684
1684
  //#region src/sessions/session-runs/restart-transitions.ts
1685
- const log$28 = createSubsystemLogger("sessions/restart-transitions");
1685
+ const log$29 = createSubsystemLogger("sessions/restart-transitions");
1686
1686
  async function transition(input, recoveryEnabled) {
1687
1687
  const store = input.store ?? getConfiguredSessionStorageRuntime()?.runtime?.runs;
1688
1688
  if (!store) return [];
@@ -1693,14 +1693,14 @@ async function transition(input, recoveryEnabled) {
1693
1693
  recoveryReason: input.reason,
1694
1694
  recoveryEnabled
1695
1695
  });
1696
- if (transitioned.length > 0) log$28.info("transitioned active runs for restart", {
1696
+ if (transitioned.length > 0) log$29.info("transitioned active runs for restart", {
1697
1697
  count: transitioned.length,
1698
1698
  recoveryEnabled,
1699
1699
  reason: input.reason
1700
1700
  });
1701
1701
  return transitioned;
1702
1702
  } catch (err) {
1703
- log$28.warn("failed to transition active runs for restart", {
1703
+ log$29.warn("failed to transition active runs for restart", {
1704
1704
  recoveryEnabled,
1705
1705
  error: String(err)
1706
1706
  });
@@ -1769,7 +1769,7 @@ function resolveChannelRestartReason(snapshot, evaluation) {
1769
1769
 
1770
1770
  //#endregion
1771
1771
  //#region src/gateway/channel-health-monitor.ts
1772
- const log$27 = createSubsystemLogger("gateway/health-monitor");
1772
+ const log$28 = createSubsystemLogger("gateway/health-monitor");
1773
1773
  const DEFAULT_CHECK_INTERVAL_MS = 5 * 6e4;
1774
1774
  const DEFAULT_MONITOR_STARTUP_GRACE_MS = 6e4;
1775
1775
  const DEFAULT_COOLDOWN_CYCLES = 2;
@@ -1829,11 +1829,11 @@ function startChannelHealthMonitor(deps) {
1829
1829
  if (now - record.lastRestartAt <= cooldownMs) continue;
1830
1830
  pruneOldRestarts(record, now);
1831
1831
  if (record.restartsThisHour.length >= maxRestartsPerHour) {
1832
- log$27.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
1832
+ log$28.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
1833
1833
  continue;
1834
1834
  }
1835
1835
  const reason = resolveChannelRestartReason(status, health);
1836
- log$27.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
1836
+ log$28.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
1837
1837
  try {
1838
1838
  if (status.running) await channelManager.stopChannel(channelId, accountId);
1839
1839
  channelManager.resetRestartAttempts(channelId, accountId);
@@ -1842,7 +1842,7 @@ function startChannelHealthMonitor(deps) {
1842
1842
  record.restartsThisHour.push({ at: now });
1843
1843
  restartRecords.set(key, record);
1844
1844
  } catch (err) {
1845
- log$27.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
1845
+ log$28.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
1846
1846
  }
1847
1847
  }
1848
1848
  }
@@ -1862,7 +1862,7 @@ function startChannelHealthMonitor(deps) {
1862
1862
  abortSignal?.addEventListener("abort", stop, { once: true });
1863
1863
  timer = setInterval(() => void runCheck(), checkIntervalMs);
1864
1864
  if (typeof timer === "object" && "unref" in timer) timer.unref();
1865
- log$27.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, startup-grace: ${Math.round(timing.monitorStartupGraceMs / 1e3)}s, channel-connect-grace: ${Math.round(timing.channelConnectGraceMs / 1e3)}s)`);
1865
+ log$28.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, startup-grace: ${Math.round(timing.monitorStartupGraceMs / 1e3)}s, channel-connect-grace: ${Math.round(timing.channelConnectGraceMs / 1e3)}s)`);
1866
1866
  }
1867
1867
  return { stop };
1868
1868
  }
@@ -3065,13 +3065,13 @@ async function resolveGatewayRecoveryAdapters(cfg, opts) {
3065
3065
  async function assembleFirstPartyAdapters(cfg, wiring) {
3066
3066
  const adapters = [];
3067
3067
  const stateDir = resolveStateDir();
3068
- const { getConfiguredSessionStorageRuntime } = await import("./config-CRFk9Bjq.js").then((n) => n.Hn);
3068
+ const { getConfiguredSessionStorageRuntime } = await import("./config-BPACL-n5.js").then((n) => n.Hn);
3069
3069
  const runtime = getConfiguredSessionStorageRuntime()?.runtime;
3070
3070
  const gatewayInstanceId = getGatewayInstanceId();
3071
- const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-BDS9k--2.js").then((n) => n.t);
3071
+ const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-DoHGgNPh.js").then((n) => n.t);
3072
3072
  const backbone = tryGetAgentTurnRuntime()?.backbone;
3073
3073
  const { createOutboundDeliveryRecoveryAdapter } = await import("./delivery-recovery-adapter-Bj3mCcg9.js");
3074
- const { deliverOutboundPayloads } = await import("./deliver-CaBp0YZL.js").then((n) => n.n);
3074
+ const { deliverOutboundPayloads } = await import("./deliver-BLp1Q7uO.js").then((n) => n.n);
3075
3075
  adapters.push(createOutboundDeliveryRecoveryAdapter({
3076
3076
  cfg,
3077
3077
  deliver: deliverOutboundPayloads,
@@ -3085,7 +3085,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3085
3085
  sessionRuns = void 0;
3086
3086
  }
3087
3087
  if (sessionRuns && wiring?.agentTurnStager) {
3088
- const { createSessionRunRecoveryAdapter } = await import("./recovery-adapter-ClfDS4Ov.js");
3088
+ const { createSessionRunRecoveryAdapter } = await import("./recovery-adapter-okaOo6tO.js");
3089
3089
  adapters.push(createSessionRunRecoveryAdapter({
3090
3090
  store: sessionRuns,
3091
3091
  cfg,
@@ -3094,14 +3094,14 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3094
3094
  stager: wiring.agentTurnStager
3095
3095
  }));
3096
3096
  }
3097
- const { createStorageSupervisorRecoveryAdapter } = await import("./supervisor-recovery-adapter-DVA_i7Fv.js");
3097
+ const { createStorageSupervisorRecoveryAdapter } = await import("./supervisor-recovery-adapter-BIN1RCIY.js");
3098
3098
  adapters.push(createStorageSupervisorRecoveryAdapter({
3099
3099
  stateDir,
3100
3100
  supervisor: wiring?.supervisor,
3101
3101
  lease: wiring?.lease ? () => wiring.lease?.() ?? { isArmed: () => false } : void 0
3102
3102
  }));
3103
3103
  if (backbone && wiring?.agentTurnStager) {
3104
- const { createAgentTurnRecoveryAdapter } = await import("./agent-turn-recovery-adapter-BhqXEKaC.js");
3104
+ const { createAgentTurnRecoveryAdapter } = await import("./agent-turn-recovery-adapter-Dw5-XbMI.js");
3105
3105
  adapters.push(createAgentTurnRecoveryAdapter({
3106
3106
  backbone,
3107
3107
  stager: wiring.agentTurnStager
@@ -3115,7 +3115,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3115
3115
  }));
3116
3116
  }
3117
3117
  if (runtime?.cronJobs && runtime.taskRuns && sessionRuns) {
3118
- const { createCronHeartbeatRecoveryAdapter } = await import("./recovery-adapter-Dp82nx48.js").then((n) => n.n);
3118
+ const { createCronHeartbeatRecoveryAdapter } = await import("./recovery-adapter-CPQ9-014.js").then((n) => n.n);
3119
3119
  adapters.push(createCronHeartbeatRecoveryAdapter({
3120
3120
  cronJobs: runtime.cronJobs,
3121
3121
  taskRuns: runtime.taskRuns,
@@ -3123,7 +3123,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3123
3123
  }));
3124
3124
  }
3125
3125
  if (sessionRuns) {
3126
- const { createEmbeddedPiRecoveryAdapter } = await import("./pi-embedded-recovery-adapter-CpGvtObS.js");
3126
+ const { createEmbeddedPiRecoveryAdapter } = await import("./pi-embedded-recovery-adapter-8xq2SINa.js");
3127
3127
  adapters.push(createEmbeddedPiRecoveryAdapter({
3128
3128
  sessionRuns,
3129
3129
  cfg,
@@ -3131,11 +3131,11 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3131
3131
  stager: wiring?.agentTurnStager,
3132
3132
  isRunActive: isEmbeddedPiRunActive
3133
3133
  }));
3134
- const { createAcpRuntimeRecoveryAdapter } = await import("./recovery-adapter-eslk30An.js");
3134
+ const { createAcpRuntimeRecoveryAdapter } = await import("./recovery-adapter-Df87xZQp.js");
3135
3135
  adapters.push(createAcpRuntimeRecoveryAdapter({ sessionRuns }));
3136
3136
  }
3137
3137
  if (backbone) {
3138
- const { createPluginOwnedWorkRecoveryAdapter } = await import("./plugin-owned-work-recovery-adapter-DSTbgdf1.js");
3138
+ const { createPluginOwnedWorkRecoveryAdapter } = await import("./plugin-owned-work-recovery-adapter-CCMhA7pp.js");
3139
3139
  adapters.push(createPluginOwnedWorkRecoveryAdapter({ backbone }));
3140
3140
  }
3141
3141
  return adapters;
@@ -3772,7 +3772,7 @@ function createChannelManager(opts) {
3772
3772
 
3773
3773
  //#endregion
3774
3774
  //#region src/gateway/server-chat.ts
3775
- const log$26 = createSubsystemLogger("gateway/chat-final");
3775
+ const log$27 = createSubsystemLogger("gateway/chat-final");
3776
3776
  const CHAT_TERMINAL_DURABILITY_TIMEOUT_MS = 5e3;
3777
3777
  function resolveHeartbeatAckMaxChars$1() {
3778
3778
  try {
@@ -4014,14 +4014,14 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
4014
4014
  const pending = pendingTerminalBySession.get(sessionKey);
4015
4015
  const durability = waitForPendingWrites(writes, CHAT_TERMINAL_DURABILITY_TIMEOUT_MS);
4016
4016
  const gate = (pending ?? Promise.resolve()).then(() => durability).then((outcome) => {
4017
- if (outcome === "timeout") log$26.warn("chat terminal broadcast before transcript durability (timeout)", {
4017
+ if (outcome === "timeout") log$27.warn("chat terminal broadcast before transcript durability (timeout)", {
4018
4018
  runId: sourceRunId,
4019
4019
  sessionKey,
4020
4020
  timeoutMs: CHAT_TERMINAL_DURABILITY_TIMEOUT_MS
4021
4021
  });
4022
4022
  sendChatTerminal(sessionKey, payload);
4023
4023
  }).catch((err) => {
4024
- log$26.warn("chat terminal broadcast failed while waiting for transcript durability", {
4024
+ log$27.warn("chat terminal broadcast failed while waiting for transcript durability", {
4025
4025
  runId: sourceRunId,
4026
4026
  sessionKey,
4027
4027
  err
@@ -4128,7 +4128,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
4128
4128
  * Automatically starts `gog gmail watch serve` when the gateway starts,
4129
4129
  * if hooks.gmail is configured with an account.
4130
4130
  */
4131
- const log$25 = createSubsystemLogger("gmail-watcher");
4131
+ const log$26 = createSubsystemLogger("gmail-watcher");
4132
4132
  const ADDRESS_IN_USE_RE = /address already in use|EADDRINUSE/i;
4133
4133
  function isAddressInUseError(line) {
4134
4134
  return ADDRESS_IN_USE_RE.test(line);
@@ -4152,13 +4152,13 @@ async function startGmailWatch(cfg) {
4152
4152
  const result = await runCommandWithTimeout(args, { timeoutMs: 12e4 });
4153
4153
  if (result.code !== 0) {
4154
4154
  const message = result.stderr || result.stdout || "gog watch start failed";
4155
- log$25.error(`watch start failed: ${message}`);
4155
+ log$26.error(`watch start failed: ${message}`);
4156
4156
  return false;
4157
4157
  }
4158
- log$25.info(`watch started for ${cfg.account}`);
4158
+ log$26.info(`watch started for ${cfg.account}`);
4159
4159
  return true;
4160
4160
  } catch (err) {
4161
- log$25.error(`watch start error: ${String(err)}`);
4161
+ log$26.error(`watch start error: ${String(err)}`);
4162
4162
  return false;
4163
4163
  }
4164
4164
  }
@@ -4167,7 +4167,7 @@ async function startGmailWatch(cfg) {
4167
4167
  */
4168
4168
  function spawnGogServe(cfg) {
4169
4169
  const args = buildGogWatchServeArgs(cfg);
4170
- log$25.info(`starting gog ${args.join(" ")}`);
4170
+ log$26.info(`starting gog ${args.join(" ")}`);
4171
4171
  let addressInUse = false;
4172
4172
  const child = spawn("gog", args, {
4173
4173
  stdio: [
@@ -4179,25 +4179,25 @@ function spawnGogServe(cfg) {
4179
4179
  });
4180
4180
  child.stdout?.on("data", (data) => {
4181
4181
  const line = data.toString().trim();
4182
- if (line) log$25.info(`[gog] ${line}`);
4182
+ if (line) log$26.info(`[gog] ${line}`);
4183
4183
  });
4184
4184
  child.stderr?.on("data", (data) => {
4185
4185
  const line = data.toString().trim();
4186
4186
  if (!line) return;
4187
4187
  if (isAddressInUseError(line)) addressInUse = true;
4188
- log$25.warn(`[gog] ${line}`);
4188
+ log$26.warn(`[gog] ${line}`);
4189
4189
  });
4190
4190
  child.on("error", (err) => {
4191
- log$25.error(`gog process error: ${String(err)}`);
4191
+ log$26.error(`gog process error: ${String(err)}`);
4192
4192
  });
4193
4193
  child.on("exit", (code, signal) => {
4194
4194
  if (shuttingDown) return;
4195
4195
  if (addressInUse) {
4196
- log$25.warn("gog serve failed to bind (address already in use); stopping restarts. Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
4196
+ log$26.warn("gog serve failed to bind (address already in use); stopping restarts. Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
4197
4197
  watcherProcess = null;
4198
4198
  return;
4199
4199
  }
4200
- log$25.warn(`gog exited (code=${code}, signal=${signal}); restarting in 5s`);
4200
+ log$26.warn(`gog exited (code=${code}, signal=${signal}); restarting in 5s`);
4201
4201
  watcherProcess = null;
4202
4202
  setTimeout(() => {
4203
4203
  if (shuttingDown || !currentConfig) return;
@@ -4237,15 +4237,15 @@ async function startGmailWatcher(cfg) {
4237
4237
  port: runtimeConfig.serve.port,
4238
4238
  target: runtimeConfig.tailscale.target
4239
4239
  });
4240
- log$25.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
4240
+ log$26.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
4241
4241
  } catch (err) {
4242
- log$25.error(`tailscale setup failed: ${String(err)}`);
4242
+ log$26.error(`tailscale setup failed: ${String(err)}`);
4243
4243
  return {
4244
4244
  started: false,
4245
4245
  reason: `tailscale setup failed: ${String(err)}`
4246
4246
  };
4247
4247
  }
4248
- if (!await startGmailWatch(runtimeConfig)) log$25.warn("gmail watch start failed, but continuing with serve");
4248
+ if (!await startGmailWatch(runtimeConfig)) log$26.warn("gmail watch start failed, but continuing with serve");
4249
4249
  shuttingDown = false;
4250
4250
  watcherProcess = spawnGogServe(runtimeConfig);
4251
4251
  const renewMs = runtimeConfig.renewEveryMinutes * 6e4;
@@ -4253,7 +4253,7 @@ async function startGmailWatcher(cfg) {
4253
4253
  if (shuttingDown) return;
4254
4254
  startGmailWatch(runtimeConfig);
4255
4255
  }, renewMs);
4256
- log$25.info(`gmail watcher started for ${runtimeConfig.account} (renew every ${runtimeConfig.renewEveryMinutes}m)`);
4256
+ log$26.info(`gmail watcher started for ${runtimeConfig.account} (renew every ${runtimeConfig.renewEveryMinutes}m)`);
4257
4257
  return { started: true };
4258
4258
  }
4259
4259
  /**
@@ -4266,7 +4266,7 @@ async function stopGmailWatcher() {
4266
4266
  renewInterval = null;
4267
4267
  }
4268
4268
  if (watcherProcess) {
4269
- log$25.info("stopping gmail watcher");
4269
+ log$26.info("stopping gmail watcher");
4270
4270
  watcherProcess.kill("SIGTERM");
4271
4271
  await new Promise((resolve) => {
4272
4272
  const timeout = setTimeout(() => {
@@ -4281,7 +4281,7 @@ async function stopGmailWatcher() {
4281
4281
  watcherProcess = null;
4282
4282
  }
4283
4283
  currentConfig = null;
4284
- log$25.info("gmail watcher stopped");
4284
+ log$26.info("gmail watcher stopped");
4285
4285
  }
4286
4286
 
4287
4287
  //#endregion
@@ -5657,7 +5657,7 @@ async function runCronIsolatedAgentTurn(params) {
5657
5657
 
5658
5658
  //#endregion
5659
5659
  //#region src/cron/run-log.ts
5660
- const log$24 = createSubsystemLogger("cron/run-log");
5660
+ const log$25 = createSubsystemLogger("cron/run-log");
5661
5661
  function assertSafeCronRunLogJobId(jobId) {
5662
5662
  const trimmed = jobId.trim();
5663
5663
  if (!trimmed) throw new Error("invalid cron run log job id");
@@ -5696,10 +5696,10 @@ async function drainPendingWrite(filePath) {
5696
5696
  if (pending) await pending.catch(() => void 0);
5697
5697
  }
5698
5698
  async function pruneIfNeeded(filePath, opts) {
5699
- const stat = await fsPromises.stat(filePath).catch(() => null);
5699
+ const stat = await fs$1.stat(filePath).catch(() => null);
5700
5700
  if (!stat || stat.size <= opts.maxBytes) return;
5701
- const raw = await fsPromises.readFile(filePath, "utf-8").catch((err) => {
5702
- log$24.warn("cron run-log: prune skipped (read failed)", {
5701
+ const raw = await fs$1.readFile(filePath, "utf-8").catch((err) => {
5702
+ log$25.warn("cron run-log: prune skipped (read failed)", {
5703
5703
  filePath,
5704
5704
  err: String(err)
5705
5705
  });
@@ -5710,14 +5710,14 @@ async function pruneIfNeeded(filePath, opts) {
5710
5710
  const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
5711
5711
  const { randomBytes } = await import("node:crypto");
5712
5712
  const tmp = `${filePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
5713
- await fsPromises.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
5714
- await fsPromises.rename(tmp, filePath);
5713
+ await fs$1.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
5714
+ await fs$1.rename(tmp, filePath);
5715
5715
  }
5716
5716
  async function listCronRunLogReadPaths(filePath) {
5717
5717
  const resolved = path.resolve(filePath);
5718
5718
  const dir = path.dirname(resolved);
5719
5719
  const base = path.basename(resolved);
5720
- return [...(await fsPromises.readdir(dir).catch(() => [])).map((name) => {
5720
+ return [...(await fs$1.readdir(dir).catch(() => [])).map((name) => {
5721
5721
  const match = new RegExp(`^${base.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\.(\\d+)(\\.gz)?$`).exec(name);
5722
5722
  return match ? {
5723
5723
  path: path.join(dir, name),
@@ -5726,8 +5726,8 @@ async function listCronRunLogReadPaths(filePath) {
5726
5726
  }).filter((entry) => entry !== null).toSorted((a, b) => b.slot - a.slot).map((entry) => entry.path), resolved];
5727
5727
  }
5728
5728
  async function readCronRunLogFile(filePath) {
5729
- if (filePath.endsWith(".gz")) return zlib.gunzipSync(await fsPromises.readFile(filePath)).toString("utf-8");
5730
- return fsPromises.readFile(filePath, "utf-8");
5729
+ if (filePath.endsWith(".gz")) return zlib.gunzipSync(await fs$1.readFile(filePath)).toString("utf-8");
5730
+ return fs$1.readFile(filePath, "utf-8");
5731
5731
  }
5732
5732
  async function readCronRunLogRaw(filePath) {
5733
5733
  const chunks = [];
@@ -5878,7 +5878,7 @@ async function readCronRunLogEntriesPageAll(opts) {
5878
5878
  const query = opts.query?.trim().toLowerCase() ?? "";
5879
5879
  const sortDir = opts.sortDir === "asc" ? "asc" : "desc";
5880
5880
  const runsDir = path.resolve(path.dirname(path.resolve(opts.storePath)), "runs");
5881
- const files = await fsPromises.readdir(runsDir, { withFileTypes: true }).catch(() => []);
5881
+ const files = await fs$1.readdir(runsDir, { withFileTypes: true }).catch(() => []);
5882
5882
  const logFiles = [...new Set(files.filter((entry) => entry.isFile()).map((entry) => {
5883
5883
  const match = /^(.+\.jsonl)(?:\.\d+(?:\.gz)?)?$/.exec(entry.name);
5884
5884
  return match ? path.join(runsDir, match[1] ?? "") : null;
@@ -10341,7 +10341,7 @@ function resolveWorkspaceFilePathResultOrThrow(params) {
10341
10341
  }
10342
10342
  async function resolveWorkspaceRealPath(workspaceDir) {
10343
10343
  try {
10344
- return await fsPromises.realpath(workspaceDir);
10344
+ return await fs$1.realpath(workspaceDir);
10345
10345
  } catch {
10346
10346
  return path.resolve(workspaceDir);
10347
10347
  }
@@ -10370,7 +10370,7 @@ async function resolveAgentWorkspaceFilePath(params) {
10370
10370
  };
10371
10371
  let candidateLstat;
10372
10372
  try {
10373
- candidateLstat = await fsPromises.lstat(candidatePath);
10373
+ candidateLstat = await fs$1.lstat(candidatePath);
10374
10374
  } catch (err) {
10375
10375
  return resolveWorkspaceFilePathResultOrThrow({
10376
10376
  error: err,
@@ -10381,7 +10381,7 @@ async function resolveAgentWorkspaceFilePath(params) {
10381
10381
  if (candidateLstat.isSymbolicLink()) {
10382
10382
  let targetReal;
10383
10383
  try {
10384
- targetReal = await fsPromises.realpath(candidatePath);
10384
+ targetReal = await fs$1.realpath(candidatePath);
10385
10385
  } catch (err) {
10386
10386
  return resolveWorkspaceFilePathResultOrThrow({
10387
10387
  error: err,
@@ -10396,7 +10396,7 @@ async function resolveAgentWorkspaceFilePath(params) {
10396
10396
  };
10397
10397
  let targetStat;
10398
10398
  try {
10399
- targetStat = await fsPromises.stat(targetReal);
10399
+ targetStat = await fs$1.stat(targetReal);
10400
10400
  } catch (err) {
10401
10401
  return resolveWorkspaceFilePathResultOrThrow({
10402
10402
  error: err,
@@ -10434,13 +10434,13 @@ async function resolveAgentWorkspaceFilePath(params) {
10434
10434
  return {
10435
10435
  kind: "ready",
10436
10436
  requestPath,
10437
- ioPath: await fsPromises.realpath(candidatePath).catch(() => candidatePath),
10437
+ ioPath: await fs$1.realpath(candidatePath).catch(() => candidatePath),
10438
10438
  workspaceReal
10439
10439
  };
10440
10440
  }
10441
10441
  async function statFileSafely(filePath) {
10442
10442
  try {
10443
- const [stat, lstat] = await Promise.all([fsPromises.stat(filePath), fsPromises.lstat(filePath)]);
10443
+ const [stat, lstat] = await Promise.all([fs$1.stat(filePath), fs$1.lstat(filePath)]);
10444
10444
  if (lstat.isSymbolicLink() || !stat.isFile()) return null;
10445
10445
  if (stat.nlink > 1) return null;
10446
10446
  if (!sameFileIdentity(stat, lstat)) return null;
@@ -10534,7 +10534,7 @@ function respondAgentNotFound(respond, agentId) {
10534
10534
  async function moveToTrashBestEffort(pathname) {
10535
10535
  if (!pathname) return;
10536
10536
  try {
10537
- await fsPromises.access(pathname);
10537
+ await fs$1.access(pathname);
10538
10538
  } catch {
10539
10539
  return;
10540
10540
  }
@@ -10610,7 +10610,7 @@ const agentsHandlers = {
10610
10610
  dir: workspaceDir,
10611
10611
  ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
10612
10612
  });
10613
- await fsPromises.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10613
+ await fs$1.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
10614
10614
  await writeConfigFile(nextConfig);
10615
10615
  const safeName = sanitizeIdentityLine(rawName);
10616
10616
  const emoji = resolveOptionalStringParam(params.emoji);
@@ -10623,7 +10623,7 @@ const agentsHandlers = {
10623
10623
  ...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
10624
10624
  ""
10625
10625
  ];
10626
- await fsPromises.appendFile(identityPath, lines.join("\n"), "utf-8");
10626
+ await fs$1.appendFile(identityPath, lines.join("\n"), "utf-8");
10627
10627
  respond(true, {
10628
10628
  ok: true,
10629
10629
  agentId,
@@ -10658,9 +10658,9 @@ const agentsHandlers = {
10658
10658
  });
10659
10659
  if (avatar) {
10660
10660
  const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
10661
- await fsPromises.mkdir(workspace, { recursive: true });
10661
+ await fs$1.mkdir(workspace, { recursive: true });
10662
10662
  const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
10663
- await fsPromises.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10663
+ await fs$1.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
10664
10664
  }
10665
10665
  respond(true, {
10666
10666
  ok: true,
@@ -10784,7 +10784,7 @@ const agentsHandlers = {
10784
10784
  const resolved = resolveAgentWorkspaceFileOrRespondError(params, respond);
10785
10785
  if (!resolved) return;
10786
10786
  const { agentId, workspaceDir, name } = resolved;
10787
- await fsPromises.mkdir(workspaceDir, { recursive: true });
10787
+ await fs$1.mkdir(workspaceDir, { recursive: true });
10788
10788
  const filePath = path.join(workspaceDir, name);
10789
10789
  const resolvedPath = await resolveWorkspaceFilePathOrRespond({
10790
10790
  respond,
@@ -11742,9 +11742,6 @@ const VOICE_INTERRUPTED_MARKER = " [interrupted]";
11742
11742
  const CHAT_HISTORY_TEXT_MAX_CHARS = 12e3;
11743
11743
  const CHAT_HISTORY_MAX_SINGLE_MESSAGE_BYTES = 128 * 1024;
11744
11744
  const CHAT_HISTORY_OVERSIZED_PLACEHOLDER = "[chat.history omitted: message too large]";
11745
- /** Twice the default storage probe timeout: how long chat.history waits for a booting gateway's session storage before it answers UNAVAILABLE. */
11746
- const CHAT_HISTORY_STORAGE_START_WAIT_MS = 1e4;
11747
- const CHAT_HISTORY_STORAGE_START_RETRY_AFTER_MS = 1e3;
11748
11745
  let chatHistoryPlaceholderEmitCount = 0;
11749
11746
  function stripDisallowedChatControlChars(message) {
11750
11747
  let output = "";
@@ -12546,13 +12543,6 @@ const chatHandlers = {
12546
12543
  return;
12547
12544
  }
12548
12545
  const { sessionKey, limit, maxChars, before } = params;
12549
- if (!(await context.storageStartup?.whenReleased(CHAT_HISTORY_STORAGE_START_WAIT_MS) ?? true)) {
12550
- respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "session storage is still starting", {
12551
- retryable: true,
12552
- retryAfterMs: CHAT_HISTORY_STORAGE_START_RETRY_AFTER_MS
12553
- }));
12554
- return;
12555
- }
12556
12546
  const { cfg, storePath, entry } = loadSessionEntry(sessionKey);
12557
12547
  const sessionId = entry?.sessionId;
12558
12548
  const sessionAgentId = resolveSessionAgentId({
@@ -14743,7 +14733,7 @@ async function replayApproval(ctx) {
14743
14733
 
14744
14734
  //#endregion
14745
14735
  //#region src/infra/exec-audit.ts
14746
- const log$23 = createSubsystemLogger("infra/exec-audit");
14736
+ const log$24 = createSubsystemLogger("infra/exec-audit");
14747
14737
  function emitAuditRecord(request, decision) {
14748
14738
  const inv = request.invocation;
14749
14739
  const argvSummary = inv.mode === "argv" ? `${inv.executable} ${redactArgvForAudit(inv.args).join(" ")}` : inv.mode === "shell" ? redactCommandText(inv.command) : inv.mode === "approved-script" ? inv.scriptId : `${inv.serverId}/${inv.toolName}`;
@@ -14774,7 +14764,7 @@ function emitAuditRecord(request, decision) {
14774
14764
  timeoutMs: request.timeoutMs,
14775
14765
  stdinPresent: request.stdin === "present-redacted"
14776
14766
  };
14777
- if (record.outcome === "deny") log$23.warn("exec-audit deny", {
14767
+ if (record.outcome === "deny") log$24.warn("exec-audit deny", {
14778
14768
  effect: record.effect,
14779
14769
  sourceRule: record.sourceRule,
14780
14770
  reason: record.reason,
@@ -14783,7 +14773,7 @@ function emitAuditRecord(request, decision) {
14783
14773
  normalizedArgv: record.normalizedArgv,
14784
14774
  policyId: record.policyId
14785
14775
  });
14786
- else log$23.info("exec-audit", {
14776
+ else log$24.info("exec-audit", {
14787
14777
  effect: record.effect,
14788
14778
  sourceRule: record.sourceRule,
14789
14779
  outcome: record.outcome,
@@ -15131,7 +15121,7 @@ function reEvaluatePoliciesForPath(reResolvedRequest, envSanitization, policies
15131
15121
 
15132
15122
  //#endregion
15133
15123
  //#region src/infra/load-policies-for-request.ts
15134
- const log$22 = createSubsystemLogger("infra/load-policies-for-request");
15124
+ const log$23 = createSubsystemLogger("infra/load-policies-for-request");
15135
15125
  /**
15136
15126
  * User-scoped policy source backed by the v2 exec-approvals store
15137
15127
  * (`~/.openclaw/exec-approvals.json`). The store is migrated v1→v2 on load
@@ -15150,7 +15140,7 @@ function createUserPolicySource() {
15150
15140
  try {
15151
15141
  return (await loadExecApprovalsV2()).policies;
15152
15142
  } catch (error) {
15153
- log$22.warn("user policy store load failed; user policies will not apply", { error });
15143
+ log$23.warn("user policy store load failed; user policies will not apply", { error });
15154
15144
  return [];
15155
15145
  }
15156
15146
  } };
@@ -16295,7 +16285,7 @@ const nodeHandlers = {
16295
16285
  const p = params;
16296
16286
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
16297
16287
  await respondUnavailableOnThrow(respond, async () => {
16298
- const { handleNodeEvent } = await import("./server-node-events-CgVi6hsa.js");
16288
+ const { handleNodeEvent } = await import("./server-node-events-8k0OLCvW.js");
16299
16289
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
16300
16290
  await handleNodeEvent({
16301
16291
  deps: context.deps,
@@ -17092,7 +17082,7 @@ function resolveSteerResult(params) {
17092
17082
 
17093
17083
  //#endregion
17094
17084
  //#region src/gateway/session-title-completion.ts
17095
- const log$21 = createSubsystemLogger("gateway/session-title-completion");
17085
+ const log$22 = createSubsystemLogger("gateway/session-title-completion");
17096
17086
  const SESSION_TITLE_COMPLETION_TIMEOUT_MS = 15e3;
17097
17087
  const SESSION_TITLE_MAX_CHARS = 60;
17098
17088
  /** Upstream openclaw's dashboard-session-title prompt wording (ADR 0084 s5, mission M4). */
@@ -17143,7 +17133,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17143
17133
  try {
17144
17134
  const resolved = deps.resolveModel(provider, model, agentDir, cfg);
17145
17135
  if (!resolved.model) {
17146
- log$21.warn("session title model unresolved", {
17136
+ log$22.warn("session title model unresolved", {
17147
17137
  ...logFields,
17148
17138
  error: resolved.error
17149
17139
  });
@@ -17157,7 +17147,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17157
17147
  let apiKey;
17158
17148
  if (!auth.apiKey) {
17159
17149
  if (auth.mode !== "aws-sdk") {
17160
- log$21.warn("session title no api key resolved", {
17150
+ log$22.warn("session title no api key resolved", {
17161
17151
  ...logFields,
17162
17152
  mode: auth.mode
17163
17153
  });
@@ -17172,7 +17162,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17172
17162
  })).token;
17173
17163
  else apiKey = auth.apiKey;
17174
17164
  if (controller.signal.aborted) {
17175
- log$21.warn("session title generation timed out before dispatch", logFields);
17165
+ log$22.warn("session title generation timed out before dispatch", logFields);
17176
17166
  return null;
17177
17167
  }
17178
17168
  const response = await deps.completeSimple(resolved.model, {
@@ -17189,11 +17179,11 @@ async function generateSessionTitleCompletion(req, overrides) {
17189
17179
  signal: controller.signal
17190
17180
  });
17191
17181
  if (response.stopReason === "aborted") {
17192
- log$21.warn("session title generation timed out", logFields);
17182
+ log$22.warn("session title generation timed out", logFields);
17193
17183
  return null;
17194
17184
  }
17195
17185
  if (response.stopReason === "error") {
17196
- log$21.warn("session title generation provider error", {
17186
+ log$22.warn("session title generation provider error", {
17197
17187
  ...logFields,
17198
17188
  error: response.errorMessage
17199
17189
  });
@@ -17203,7 +17193,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17203
17193
  if (!text) return null;
17204
17194
  return normalizeSessionTitle(text);
17205
17195
  } catch (error) {
17206
- log$21.warn("session title generation failed", {
17196
+ log$22.warn("session title generation failed", {
17207
17197
  ...logFields,
17208
17198
  error: error instanceof Error ? error.message : String(error)
17209
17199
  });
@@ -17384,6 +17374,218 @@ const skillsHandlers = {
17384
17374
  }
17385
17375
  };
17386
17376
 
17377
+ //#endregion
17378
+ //#region src/gateway/storage-method-policy.ts
17379
+ const STORAGE_METHOD_POLICY_REQUIRED = [
17380
+ "chat.history",
17381
+ "sessions.claims.status",
17382
+ "sessions.runHistory",
17383
+ "sessions.runs.cancel",
17384
+ "sessions.runs.continue",
17385
+ "sessions.runs.events",
17386
+ "sessions.runs.get",
17387
+ "sessions.runs.list",
17388
+ "tasks.resetBudget",
17389
+ "tasks.rollback",
17390
+ "tasks.runDryRun",
17391
+ "tasks.runEvents",
17392
+ "tasks.runs.get",
17393
+ "tasks.runs.events",
17394
+ "tasks.runs.list",
17395
+ "tasks.status"
17396
+ ];
17397
+ const STORAGE_METHOD_POLICY_BOOT_WRITE = [
17398
+ "chat.inject",
17399
+ "sessions.compact",
17400
+ "sessions.create",
17401
+ "sessions.delete",
17402
+ "sessions.patch",
17403
+ "sessions.reset"
17404
+ ];
17405
+ const STORAGE_METHOD_POLICY_NONE = [
17406
+ "connect",
17407
+ "health",
17408
+ "status",
17409
+ "logs.tail",
17410
+ "voicewake.get",
17411
+ "voicewake.set",
17412
+ "channels.status",
17413
+ "channels.logout",
17414
+ "chat.abort",
17415
+ "chat.send",
17416
+ "sessions.abort",
17417
+ "wake",
17418
+ "cron.list",
17419
+ "cron.status",
17420
+ "cron.add",
17421
+ "cron.update",
17422
+ "cron.remove",
17423
+ "cron.run",
17424
+ "cron.runs",
17425
+ "device.pair.list",
17426
+ "device.pair.approve",
17427
+ "device.pair.reject",
17428
+ "device.pair.remove",
17429
+ "device.token.rotate",
17430
+ "device.token.revoke",
17431
+ "diagnostics.runtime.snapshot",
17432
+ "diagnostics.capture.cpu",
17433
+ "diagnostics.capture.heap",
17434
+ "diagnostics.capture.report",
17435
+ "diagnostics.profiling.start",
17436
+ "diagnostics.profiling.stop",
17437
+ "doctor.memory.status",
17438
+ "doctor.recovery.inspect",
17439
+ "doctor.recovery.plan",
17440
+ "doctor.recovery.apply",
17441
+ "exec.approvals.get",
17442
+ "exec.approvals.set",
17443
+ "exec.approvals.node.get",
17444
+ "exec.approvals.node.set",
17445
+ "web.login.start",
17446
+ "web.login.wait",
17447
+ "models.authStatus",
17448
+ "models.list",
17449
+ "config.get",
17450
+ "config.schema",
17451
+ "config.set",
17452
+ "config.patch",
17453
+ "config.apply",
17454
+ "wizard.start",
17455
+ "wizard.next",
17456
+ "wizard.cancel",
17457
+ "wizard.status",
17458
+ "talk.config",
17459
+ "talk.mode",
17460
+ "talk.catalog",
17461
+ "talk.session.create",
17462
+ "talk.session.appendAudio",
17463
+ "talk.session.close",
17464
+ "talk.session.cancelTurn",
17465
+ "talk.session.mark",
17466
+ "talk.session.bargeIn",
17467
+ "talk.realtime.session",
17468
+ "talk.realtime.audio",
17469
+ "talk.realtime.mark",
17470
+ "talk.realtime.toolResult",
17471
+ "talk.realtime.bargeIn",
17472
+ "talk.realtime.stop",
17473
+ "talk.realtime.status",
17474
+ "talk.metrics",
17475
+ "tools.catalog",
17476
+ "tts.status",
17477
+ "tts.enable",
17478
+ "tts.disable",
17479
+ "tts.convert",
17480
+ "tts.setProvider",
17481
+ "tts.providers",
17482
+ "skills.status",
17483
+ "skills.bins",
17484
+ "skills.install",
17485
+ "skills.update",
17486
+ "sessions.subscribe",
17487
+ "sessions.list",
17488
+ "sessions.describe",
17489
+ "sessions.compaction.list",
17490
+ "sessions.runs",
17491
+ "sessions.thresholds",
17492
+ "sessions.interrupt",
17493
+ "sessions.preview",
17494
+ "sessions.resolve",
17495
+ "sessions.title.prepare",
17496
+ "sessions.steer",
17497
+ "last-heartbeat",
17498
+ "set-heartbeats",
17499
+ "system-presence",
17500
+ "system-event",
17501
+ "update.run",
17502
+ "node.pair.request",
17503
+ "node.pair.list",
17504
+ "node.pair.approve",
17505
+ "node.pair.reject",
17506
+ "node.pair.verify",
17507
+ "node.rename",
17508
+ "node.list",
17509
+ "node.describe",
17510
+ "node.canvas.capability.refresh",
17511
+ "node.invoke",
17512
+ "node.invoke.result",
17513
+ "node.event",
17514
+ "plugins/health",
17515
+ "push.test",
17516
+ "send",
17517
+ "poll",
17518
+ "usage.status",
17519
+ "usage.cost",
17520
+ "sessions.usage",
17521
+ "sessions.usage.timeseries",
17522
+ "sessions.usage.logs",
17523
+ "agent",
17524
+ "agent.identity.get",
17525
+ "agent.wait",
17526
+ "agent.nudge",
17527
+ "agents.list",
17528
+ "agents.create",
17529
+ "agents.update",
17530
+ "agents.delete",
17531
+ "agents.files.list",
17532
+ "agents.files.get",
17533
+ "agents.files.set",
17534
+ "browser.request"
17535
+ ];
17536
+ const STORAGE_METHOD_POLICY = Object.freeze({
17537
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_REQUIRED.map((method) => [method, "required"])),
17538
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_BOOT_WRITE.map((method) => [method, "boot-write"])),
17539
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_NONE.map((method) => [method, "none"]))
17540
+ });
17541
+
17542
+ //#endregion
17543
+ //#region src/gateway/server-methods/storage-fence.ts
17544
+ const STORAGE_START_WAIT_MS = 1e4;
17545
+ const log$21 = createSubsystemLogger("gateway/storage-fence");
17546
+ const warnedGates = /* @__PURE__ */ new WeakSet();
17547
+ /**
17548
+ * Returns true when this call has been answered by the fence (held out, or answered a typed
17549
+ * error), so dispatch must not run the handler. Runs after authorization and the method-set
17550
+ * rate limits, so an unauthorized caller never learns storage readiness. Absent context gate or
17551
+ * `none`/missing classification means no storage decision applies to the method.
17552
+ */
17553
+ async function guardStorageRpc(method, context, respond) {
17554
+ const policy = Object.hasOwn(STORAGE_METHOD_POLICY, method) ? STORAGE_METHOD_POLICY[method] : void 0;
17555
+ const gate = context.storageStartup;
17556
+ if (policy === void 0 || policy === "none" || !gate) return false;
17557
+ let state = gate.state();
17558
+ if (state.phase === "ready") return false;
17559
+ state = await gate.whenSettled(STORAGE_START_WAIT_MS);
17560
+ if (state.phase === "ready") return false;
17561
+ if (state.phase === "failed") {
17562
+ if (policy === "boot-write") return false;
17563
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "session storage failed to start", {
17564
+ retryable: false,
17565
+ details: {
17566
+ code: "storage_start_failed",
17567
+ reasonCodes: state.reasonCodes
17568
+ }
17569
+ }));
17570
+ return true;
17571
+ }
17572
+ if (state.phase === "starting" && !warnedGates.has(gate)) {
17573
+ warnedGates.add(gate);
17574
+ log$21.warn("session storage still starting after 10000ms; storage-backed methods answer RECOVERY_NOT_READY");
17575
+ }
17576
+ const stopping = state.phase === "stopping";
17577
+ respond(false, void 0, errorShape(ErrorCodes.RECOVERY_NOT_READY, stopping ? "gateway is stopping" : "session storage is still starting", {
17578
+ retryable: true,
17579
+ retryAfterMs: 500,
17580
+ details: {
17581
+ producer: "session-storage",
17582
+ phase: state.phase,
17583
+ reasonCodes: [stopping ? "storage_stopping" : "storage_starting"]
17584
+ }
17585
+ }));
17586
+ return true;
17587
+ }
17588
+
17387
17589
  //#endregion
17388
17590
  //#region src/gateway/server/presence-events.ts
17389
17591
  function broadcastPresenceSnapshot(params) {
@@ -18092,8 +18294,8 @@ function logConsultFailure(reason) {
18092
18294
  }
18093
18295
  const defaultDeps = {
18094
18296
  runEmbeddedPiAgent,
18095
- mkdtemp: fsPromises.mkdtemp,
18096
- rm: fsPromises.rm,
18297
+ mkdtemp: fs$1.mkdtemp,
18298
+ rm: fs$1.rm,
18097
18299
  resolveAgentDir,
18098
18300
  resolveAgentWorkspaceDir,
18099
18301
  resolveDefaultAgentId,
@@ -22237,9 +22439,9 @@ function toRedactedEvent(event) {
22237
22439
  };
22238
22440
  }
22239
22441
  async function listQueuedView(params, runtime, respond) {
22240
- const registry = getTaskOperatorRegistry();
22442
+ const registry = await resolveTaskOperatorRegistry();
22241
22443
  if (!registry) {
22242
- respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "task_registry_unavailable", { details: { code: "task_registry_unavailable" } }));
22444
+ respondTaskRegistryUnavailable(respond);
22243
22445
  return;
22244
22446
  }
22245
22447
  const busWork = runtime.busWork;
@@ -23915,6 +24117,7 @@ async function handleGatewayRequest(opts) {
23915
24117
  return;
23916
24118
  }
23917
24119
  }
24120
+ if (await guardStorageRpc(req.method, context, respond)) return;
23918
24121
  await handler({
23919
24122
  req,
23920
24123
  params: req.params ?? {},
@@ -24859,7 +25062,7 @@ function normalizeAgentPayload(payload) {
24859
25062
  async function startBrowserControlServerIfEnabled() {
24860
25063
  if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
24861
25064
  const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
24862
- const mod = override ? await import(override) : await import("./server-CtXro2Oa.js");
25065
+ const mod = override ? await import(override) : await import("./server-y8WhCQvu.js");
24863
25066
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
24864
25067
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
24865
25068
  if (!start) return null;
@@ -25090,7 +25293,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
25090
25293
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
25091
25294
  const candidate = path.join(rootReal, rel);
25092
25295
  try {
25093
- const st = await fsPromises.lstat(candidate);
25296
+ const st = await fs$1.lstat(candidate);
25094
25297
  if (st.isSymbolicLink()) return null;
25095
25298
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
25096
25299
  } catch {}
@@ -25127,8 +25330,8 @@ async function resolveA2uiRoot() {
25127
25330
  for (const dir of candidates) try {
25128
25331
  const indexPath = path.join(dir, "index.html");
25129
25332
  const bundlePath = path.join(dir, "a2ui.bundle.js");
25130
- await fsPromises.stat(indexPath);
25131
- await fsPromises.stat(bundlePath);
25333
+ await fs$1.stat(indexPath);
25334
+ await fs$1.stat(bundlePath);
25132
25335
  return dir;
25133
25336
  } catch {}
25134
25337
  return null;
@@ -25137,7 +25340,7 @@ async function resolveA2uiRootReal() {
25137
25340
  if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
25138
25341
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
25139
25342
  const root = await resolveA2uiRoot();
25140
- cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
25343
+ cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
25141
25344
  cachedA2uiResolvedAtMs = Date.now();
25142
25345
  resolvingA2uiRoot = null;
25143
25346
  return cachedA2uiRootReal;
@@ -25358,13 +25561,13 @@ function normalizeBasePath(rawPath) {
25358
25561
  }
25359
25562
  async function prepareCanvasRoot(rootDir) {
25360
25563
  await ensureDir(rootDir);
25361
- const rootReal = await fsPromises.realpath(rootDir);
25564
+ const rootReal = await fs$1.realpath(rootDir);
25362
25565
  try {
25363
25566
  const indexPath = path.join(rootReal, "index.html");
25364
- await fsPromises.stat(indexPath);
25567
+ await fs$1.stat(indexPath);
25365
25568
  } catch {
25366
25569
  try {
25367
- await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
25570
+ await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
25368
25571
  } catch {}
25369
25572
  }
25370
25573
  return rootReal;
@@ -28659,7 +28862,7 @@ async function resolveGatewayOwnerStatus(pid, payload, platform, port) {
28659
28862
  }
28660
28863
  async function readLockPayload(lockPath) {
28661
28864
  try {
28662
- const raw = await fsPromises.readFile(lockPath, "utf8");
28865
+ const raw = await fs$1.readFile(lockPath, "utf8");
28663
28866
  const parsed = JSON.parse(raw);
28664
28867
  if (typeof parsed.pid !== "number") return null;
28665
28868
  if (typeof parsed.createdAt !== "string") return null;
@@ -28694,11 +28897,11 @@ async function acquireGatewayLock(opts = {}) {
28694
28897
  const platform = opts.platform ?? process.platform;
28695
28898
  const port = opts.port;
28696
28899
  const { lockPath, configPath } = resolveGatewayLockPath(env);
28697
- await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
28900
+ await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
28698
28901
  const startedAt = Date.now();
28699
28902
  let lastPayload = null;
28700
28903
  while (Date.now() - startedAt < timeoutMs) try {
28701
- const handle = await fsPromises.open(lockPath, "wx");
28904
+ const handle = await fs$1.open(lockPath, "wx");
28702
28905
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
28703
28906
  const payload = {
28704
28907
  pid: process.pid,
@@ -28712,7 +28915,7 @@ async function acquireGatewayLock(opts = {}) {
28712
28915
  configPath,
28713
28916
  release: async () => {
28714
28917
  await handle.close().catch(() => void 0);
28715
- await fsPromises.rm(lockPath, { force: true });
28918
+ await fs$1.rm(lockPath, { force: true });
28716
28919
  }
28717
28920
  };
28718
28921
  } catch (err) {
@@ -28721,7 +28924,7 @@ async function acquireGatewayLock(opts = {}) {
28721
28924
  const ownerPid = lastPayload?.pid;
28722
28925
  const ownerStatus = ownerPid ? await resolveGatewayOwnerStatus(ownerPid, lastPayload, platform, port) : "unknown";
28723
28926
  if (ownerStatus === "dead" && ownerPid) {
28724
- await fsPromises.rm(lockPath, { force: true });
28927
+ await fs$1.rm(lockPath, { force: true });
28725
28928
  continue;
28726
28929
  }
28727
28930
  if (ownerStatus !== "alive") {
@@ -28731,13 +28934,13 @@ async function acquireGatewayLock(opts = {}) {
28731
28934
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
28732
28935
  }
28733
28936
  if (!stale) try {
28734
- const st = await fsPromises.stat(lockPath);
28937
+ const st = await fs$1.stat(lockPath);
28735
28938
  stale = Date.now() - st.mtimeMs > staleMs;
28736
28939
  } catch {
28737
28940
  stale = false;
28738
28941
  }
28739
28942
  if (stale) {
28740
- await fsPromises.rm(lockPath, { force: true });
28943
+ await fs$1.rm(lockPath, { force: true });
28741
28944
  continue;
28742
28945
  }
28743
28946
  }
@@ -31217,29 +31420,56 @@ function createStorageRecoveryContainment(deps) {
31217
31420
  //#endregion
31218
31421
  //#region src/gateway/storage-startup-gate.ts
31219
31422
  function createStorageStartupGate() {
31423
+ let phase = { phase: "ready" };
31220
31424
  let held = false;
31221
31425
  const waiters = /* @__PURE__ */ new Set();
31426
+ const wakeAll = () => {
31427
+ for (const wake of waiters) wake();
31428
+ };
31222
31429
  return {
31223
31430
  hold() {
31224
- held = true;
31431
+ if (!held && phase.phase === "ready") {
31432
+ held = true;
31433
+ phase = { phase: "starting" };
31434
+ }
31225
31435
  },
31226
- release() {
31227
- held = false;
31228
- for (const wake of waiters) wake();
31436
+ markReady() {
31437
+ if (phase.phase === "starting") {
31438
+ phase = { phase: "ready" };
31439
+ wakeAll();
31440
+ }
31229
31441
  },
31230
- whenReleased(timeoutMs) {
31231
- if (!held) return Promise.resolve(true);
31232
- return new Promise((resolve) => {
31233
- const wake = () => {
31234
- clearTimeout(timer);
31235
- waiters.delete(wake);
31236
- resolve(true);
31442
+ markFailed(reasonCodes) {
31443
+ if (phase.phase === "starting") {
31444
+ phase = {
31445
+ phase: "failed",
31446
+ reasonCodes: [...reasonCodes]
31237
31447
  };
31448
+ wakeAll();
31449
+ }
31450
+ },
31451
+ markStopping() {
31452
+ if (phase.phase !== "stopping") {
31453
+ phase = { phase: "stopping" };
31454
+ wakeAll();
31455
+ }
31456
+ },
31457
+ state() {
31458
+ return phase;
31459
+ },
31460
+ whenSettled(timeoutMs) {
31461
+ if (phase.phase !== "starting" && phase.phase !== "stopping") return Promise.resolve(phase);
31462
+ return new Promise((resolve) => {
31238
31463
  const timer = setTimeout(() => {
31239
31464
  waiters.delete(wake);
31240
- resolve(false);
31465
+ resolve(phase);
31241
31466
  }, timeoutMs);
31242
31467
  timer.unref?.();
31468
+ const wake = () => {
31469
+ clearTimeout(timer);
31470
+ waiters.delete(wake);
31471
+ resolve(phase);
31472
+ };
31243
31473
  waiters.add(wake);
31244
31474
  });
31245
31475
  }
@@ -34901,7 +35131,7 @@ async function bootGatewayServer(port, opts) {
34901
35131
  const lease = createPreservationLeaseService();
34902
35132
  setActivePreservationLease(lease);
34903
35133
  let supervisorClosed = false;
34904
- const transcriptFingerprint = async (filePath) => createHash("sha256").update(await fsPromises.readFile(filePath)).digest("hex");
35134
+ const transcriptFingerprint = async (filePath) => createHash("sha256").update(await fs$1.readFile(filePath)).digest("hex");
34905
35135
  const requireCandidateRuntime = () => {
34906
35136
  const candidate = candidateOwner?.candidate.runtime;
34907
35137
  if (!candidate || candidateOwner?.state === "closed") throw new Error("recovery candidate runtime is not ready");
@@ -35184,9 +35414,14 @@ async function bootGatewayServer(port, opts) {
35184
35414
  };
35185
35415
  fencedStorageSupervisorStart = async () => {
35186
35416
  await supervisor.start();
35187
- storageStartup.release();
35417
+ if (supervisor.getState() !== "healthy" && !params.resolved.fallbackToJsonlOnError) {
35418
+ await storageSupervisorStop?.();
35419
+ storageSupervisorStop = null;
35420
+ throw new FatalConfiguredStorageStartError();
35421
+ }
35422
+ storageStartup.markReady();
35188
35423
  try {
35189
- const { installIncidentAsset } = await import("./incident-install-BVVufsbF.js");
35424
+ const { installIncidentAsset } = await import("./incident-install-B626HvYY.js");
35190
35425
  await installIncidentAsset({
35191
35426
  stateDir: resolveStateDir(),
35192
35427
  loadIndexRecord: async () => {
@@ -35201,7 +35436,7 @@ async function bootGatewayServer(port, opts) {
35201
35436
  if (supervisor.getState() === "healthy") {
35202
35437
  const runtime = getConfiguredSessionStorageRuntime()?.runtime;
35203
35438
  if (runtime?.conversation) try {
35204
- const { runLiveRepair } = await import("./live-repair-CK2uu1bb.js");
35439
+ const { runLiveRepair } = await import("./live-repair-BF2elTcB.js");
35205
35440
  await runLiveRepair({
35206
35441
  stateDir: resolveStateDir(),
35207
35442
  conversationStore: runtime.conversation,
@@ -35217,11 +35452,6 @@ async function bootGatewayServer(port, opts) {
35217
35452
  noteStorageRestartRequired("session-run-startup-recovery");
35218
35453
  noteStorageRestartRequired("shutdown-run-reconciliation");
35219
35454
  }
35220
- if (supervisor.getState() !== "healthy" && !params.resolved.fallbackToJsonlOnError) {
35221
- await storageSupervisorStop?.();
35222
- storageSupervisorStop = null;
35223
- throw new FatalConfiguredStorageStartError();
35224
- }
35225
35455
  };
35226
35456
  if (params.bootImmediately) await fencedStorageSupervisorStart();
35227
35457
  else storageStartup.hold();
@@ -35576,14 +35806,14 @@ async function bootGatewayServer(port, opts) {
35576
35806
  let sessionConsumerClaimSweepCancelled = false;
35577
35807
  let sessionConsumerClaimSweepBoot = null;
35578
35808
  if (!minimalTestGateway) sessionConsumerClaimSweepBoot = (async () => {
35579
- const { getConfiguredSessionStorageRuntime } = await import("./config-CRFk9Bjq.js").then((n) => n.Hn);
35580
- const { loadPluginManifestRegistry } = await import("./config-CRFk9Bjq.js").then((n) => n.ut);
35581
- const { getActivePluginRegistry } = await import("./config-CRFk9Bjq.js").then((n) => n.qt);
35582
- const { deriveGatewaySweepConsumers, runSessionConsumerSweepTick, startSessionConsumerSweepSchedule } = await import("./session-consumer-claim-sweep-BcfThIOH.js");
35809
+ const { getConfiguredSessionStorageRuntime } = await import("./config-BPACL-n5.js").then((n) => n.Hn);
35810
+ const { loadPluginManifestRegistry } = await import("./config-BPACL-n5.js").then((n) => n.ut);
35811
+ const { getActivePluginRegistry } = await import("./config-BPACL-n5.js").then((n) => n.qt);
35812
+ const { deriveGatewaySweepConsumers, runSessionConsumerSweepTick, startSessionConsumerSweepSchedule } = await import("./session-consumer-claim-sweep-eBEe4crh.js");
35583
35813
  const sweepLog = log.child("session-consumer-claim-sweep");
35584
35814
  const { createDiagnosticRingBuffer } = await import("./session-consumer-diagnostics-BUKxP8bu.js");
35585
35815
  const diagnostics = createDiagnosticRingBuffer();
35586
- const { setDiagnostics } = await import("./sessions-Q3WrKAAg.js").then((n) => n.n);
35816
+ const { setDiagnostics } = await import("./sessions-DFDrcshi.js").then((n) => n.n);
35587
35817
  if (sessionConsumerClaimSweepCancelled) return;
35588
35818
  setDiagnostics(diagnostics);
35589
35819
  const lastKnownEnabledState = /* @__PURE__ */ new Map();
@@ -35622,7 +35852,7 @@ async function bootGatewayServer(port, opts) {
35622
35852
  lastKnownEnabledState,
35623
35853
  cfg: loadConfig()
35624
35854
  });
35625
- const { setLastSweepTimestamp } = await import("./sessions-Q3WrKAAg.js").then((n) => n.n);
35855
+ const { setLastSweepTimestamp } = await import("./sessions-DFDrcshi.js").then((n) => n.n);
35626
35856
  setLastSweepTimestamp(Date.now());
35627
35857
  } catch (err) {
35628
35858
  sweepLog.warn(`session consumer-claim sweep failed: ${String(err)}`);
@@ -35643,8 +35873,8 @@ async function bootGatewayServer(port, opts) {
35643
35873
  id: "task-dispatch",
35644
35874
  prepare: () => {
35645
35875
  taskPipelineBoot = (async () => {
35646
- const { getConfiguredSessionStorageRuntime } = await import("./config-CRFk9Bjq.js").then((n) => n.Hn);
35647
- const { startTaskPipeline } = await import("./task-pipeline-boot-yTQaBch8.js");
35876
+ const { getConfiguredSessionStorageRuntime } = await import("./config-BPACL-n5.js").then((n) => n.Hn);
35877
+ const { startTaskPipeline } = await import("./task-pipeline-boot-CM-3tH09.js");
35648
35878
  const pipeline = startTaskPipeline({
35649
35879
  getConfigured: getConfiguredSessionStorageRuntime,
35650
35880
  cfg: cfgAtStart,
@@ -35813,7 +36043,17 @@ async function bootGatewayServer(port, opts) {
35813
36043
  });
35814
36044
  try {
35815
36045
  recoveryRuntime = await Promise.race([ownInstalled, recoveryStarted]) ?? null;
36046
+ if (storageStartup.state().phase === "starting") {
36047
+ let codes = [];
36048
+ try {
36049
+ codes = recoveryRuntime?.snapshot().reasonCodes ?? [];
36050
+ } catch {
36051
+ codes = [];
36052
+ }
36053
+ storageStartup.markFailed(codes.length > 0 ? codes : ["recovery_start_failed"]);
36054
+ }
35816
36055
  } catch (err) {
36056
+ if (storageStartup.state().phase === "starting") storageStartup.markFailed(["recovery_start_failed"]);
35817
36057
  if (skillsRefreshTimer) {
35818
36058
  clearTimeout(skillsRefreshTimer);
35819
36059
  skillsRefreshTimer = null;
@@ -36024,6 +36264,7 @@ async function bootGatewayServer(port, opts) {
36024
36264
  startDiagnosticHeartbeat();
36025
36265
  }
36026
36266
  return { close: async (opts) => {
36267
+ storageStartup.markStopping();
36027
36268
  recoveryAdmission.closeAdmission();
36028
36269
  await runGlobalGatewayStopSafely({
36029
36270
  event: { reason: opts?.reason ?? "gateway stopping" },