@nikolasp98/minion 2026.7.4-dev → 2026.7.4-dev.20260709144240

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 (389) hide show
  1. package/dist/{accounts-Dbd25vMS.js → accounts-BPGTTw4_.js} +1 -1
  2. package/dist/{accounts-B15UWwpN.js → accounts-DNHbDS8N.js} +1 -1
  3. package/dist/{accounts-CipaqB1S.js → accounts-DX9PQcQ5.js} +1 -1
  4. package/dist/{accounts-YlgHAyxw.js → accounts-Qv_qMcKu.js} +1 -1
  5. package/dist/{acp-cli-CUPICcDH.js → acp-cli-7ifY5P2w.js} +3 -3
  6. package/dist/{acp-cli-BEVpyf2p.js → acp-cli-CXQRsKJY.js} +3 -3
  7. package/dist/{agent-CXpwHFOG.js → agent-DICZ1SNs.js} +12 -12
  8. package/dist/{agent-PiFxVqHJ.js → agent-r19IQe9R.js} +11 -11
  9. package/dist/{agent-step-CUJ4eMri.js → agent-step-BlC5YTeo.js} +3 -3
  10. package/dist/{agent-step-DSsPpXT3.js → agent-step-Urh1ULgm.js} +3 -3
  11. package/dist/{agents-Ctj4OxuD.js → agents-CD3GSnMb.js} +8 -8
  12. package/dist/{agents-list-tool-wIbFkQ7B.js → agents-list-tool-BWwkH_uu.js} +3 -3
  13. package/dist/{agents-list-tool-Cdq6gx7b.js → agents-list-tool-C8g2wdl0.js} +3 -3
  14. package/dist/{agents-list-tool-J81xvsC7.js → agents-list-tool-CdAfu3mL.js} +2 -2
  15. package/dist/{audit-BQa9UHqw.js → audit-DjsxBT25.js} +10 -10
  16. package/dist/{audit-BJ-z-LVb.js → audit-bz0y9XAh.js} +10 -10
  17. package/dist/{auth-choice-BiA4uMDt.js → auth-choice-BajjuqG0.js} +4 -4
  18. package/dist/{auth-choice-CTuT4TZL.js → auth-choice-fJdiLUlW.js} +4 -4
  19. package/dist/{banner-Bxd8hQ4y.js → banner-Doqdmx_j.js} +1 -1
  20. package/dist/{browser-cli-B-WFQQKT.js → browser-cli-B8dJNOnW.js} +3 -3
  21. package/dist/{browser-cli-BcYbyf4-.js → browser-cli-Cz7pSHRi.js} +3 -3
  22. package/dist/{browser-tool-CN_2EWks.js → browser-tool-B9LLP228.js} +6 -6
  23. package/dist/{browser-tool-DNAI36US.js → browser-tool-BZA9S2d2.js} +7 -7
  24. package/dist/{browser-tool-CpexgdC1.js → browser-tool-CZIrQMee.js} +7 -7
  25. package/dist/build-info.json +3 -3
  26. package/dist/bundled/boot-md/handler.js +9 -1
  27. package/dist/bundled/kg-message-sync/handler.js +9 -1
  28. package/dist/{call-CIunfHRi.js → call-BgSOYP9z.js} +1 -1
  29. package/dist/{call-CKivy66e.js → call-Cv9JOMB9.js} +2 -2
  30. package/dist/{call-Dkmv0jiT.js → call-XTvSS1II.js} +2 -2
  31. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  32. package/dist/{canvas-tool-8o6oo61Z.js → canvas-tool-BU7FSC80.js} +2 -2
  33. package/dist/{canvas-tool-1ztGKWjT.js → canvas-tool-DGEGmXF1.js} +2 -2
  34. package/dist/{canvas-tool-DQxG0Y7R.js → canvas-tool-EEEr6iSD.js} +2 -2
  35. package/dist/{channel-options-C68_q9Rr.js → channel-options-BEFxVqMz.js} +2 -2
  36. package/dist/{channel-options-DhkD86lO.js → channel-options-C8WvoI4Z.js} +2 -2
  37. package/dist/{channel-selection-DlUXGnzg.js → channel-selection-BTmIs82T.js} +1 -1
  38. package/dist/{channel-selection-BewMTsqq.js → channel-selection-C0mWZNWy.js} +1 -1
  39. package/dist/{channel-web-DWLT7KUJ.js → channel-web-BbcJ-2a_.js} +11 -11
  40. package/dist/{channels-cli-DrRfb_jd.js → channels-cli-dOat1M60.js} +13 -13
  41. package/dist/{channels-cli-CFwRMLQ0.js → channels-cli-vYZOaFFl.js} +13 -13
  42. package/dist/{channels-status-issues-A8GAMh-R.js → channels-status-issues-BJS72Ak4.js} +1 -1
  43. package/dist/{channels-status-issues-CqD61nHR.js → channels-status-issues-BgvrV8cu.js} +1 -1
  44. package/dist/{chrome-IsE6CWo0.js → chrome-Dklo_qcC.js} +2 -2
  45. package/dist/{chrome-ZOgm_xe0.js → chrome-cQJEH0M3.js} +1 -1
  46. package/dist/{chrome-CqJUFw6W.js → chrome-qRwjGg26.js} +2 -2
  47. package/dist/{clawbot-cli-1mMIKIh-.js → clawbot-cli-DXrdZT2P.js} +1 -1
  48. package/dist/{clawbot-cli-9oTZdRv0.js → clawbot-cli-nLyirBTd.js} +1 -1
  49. package/dist/cli/daemon-cli.js +1 -1
  50. package/dist/{cli-BVDjrQ_Z.js → cli-BgmnUAbQ.js} +3 -3
  51. package/dist/{cli-CvIovpRi.js → cli-DewUEwhW.js} +3 -3
  52. package/dist/{client-CKx0mQZ9.js → client-B6tG7Uvs.js} +5 -5
  53. package/dist/{client-C92y7sQr.js → client-CbWEB-Ag.js} +5 -5
  54. package/dist/{client-w300gZPu.js → client-DscxMhBC.js} +4 -4
  55. package/dist/{command-registry-DpQkZgbl.js → command-registry-Dn_GVpAL.js} +14 -14
  56. package/dist/{commands-registry-C863DsL3.js → commands-registry-DH6ymetJ.js} +2 -2
  57. package/dist/{commands-registry-Can979-O.js → commands-registry-oKdLXWl_.js} +2 -2
  58. package/dist/{completion-cli-iw7SVTBI.js → completion-cli-CfKytSbd.js} +1 -1
  59. package/dist/{completion-cli-ynSivZB6.js → completion-cli-ozWibTSL.js} +2 -2
  60. package/dist/{config-CeRW-yVy.js → config-46EEiw-I.js} +9 -1
  61. package/dist/{config-C7v6yY2J.js → config-DehMVNfT.js} +2 -2
  62. package/dist/{config-Cm8MqYN8.js → config-DhxWEGQB.js} +2 -2
  63. package/dist/{config-cli-BFKPXWfo.js → config-cli-CRC3zEGw.js} +4 -4
  64. package/dist/{config-cli-C0GVQwvZ.js → config-cli-DaMUo6r7.js} +4 -4
  65. package/dist/{config-guard-BcXgvP7Q.js → config-guard-Dvhh6UhH.js} +3 -3
  66. package/dist/{config-guard-DUB_sG7v.js → config-guard-iExiK0ea.js} +3 -3
  67. package/dist/{config-validation-CI4CpbiZ.js → config-validation-BwiyHMtc.js} +2 -2
  68. package/dist/{config-validation-PiRNAOU0.js → config-validation-D53Go4nQ.js} +2 -2
  69. package/dist/{configure-qYk6aPzc.js → configure-Bi-9cnMl.js} +16 -16
  70. package/dist/{configure-DHX4hMfG.js → configure-D85n-4iq.js} +16 -16
  71. package/dist/{control-service-0L910S2Q.js → control-service-5kw5OYIx.js} +6 -6
  72. package/dist/{control-service-BomzHVkf.js → control-service-B4NmPTp4.js} +6 -6
  73. package/dist/{cron-cli-AzKKuZWY.js → cron-cli-COKLRsNP.js} +2 -2
  74. package/dist/{cron-cli-CdOhLLeS.js → cron-cli-DoZ4CTLJ.js} +2 -2
  75. package/dist/{cron-tool-Cntt4OCG.js → cron-tool-CBzve6Wj.js} +5 -5
  76. package/dist/{cron-tool-DQlnrkMC.js → cron-tool-D9t1IW9g.js} +4 -4
  77. package/dist/{cron-tool-BjrIdOCZ.js → cron-tool-mYpbvP42.js} +5 -5
  78. package/dist/{daemon-cli-am9lVfde.js → daemon-cli-BIyeWSo9.js} +9 -9
  79. package/dist/{daemon-cli-DoYeUpfT.js → daemon-cli-eMnGI3zL.js} +9 -9
  80. package/dist/daemon-cli.js +9 -1
  81. package/dist/daemon-install-helpers-DFhh_xYP.js +2 -0
  82. package/dist/daemon-install-helpers-DGb3mbAW.js +2 -0
  83. package/dist/{daemon-runtime-DT3wcYKu.js → daemon-runtime-BwU5UG9c.js} +1 -1
  84. package/dist/{daemon-runtime-C6sGHOcm.js → daemon-runtime-RtqiEWdz.js} +1 -1
  85. package/dist/{deliver-Ckze82mh.js → deliver-C97xbDFj.js} +4 -4
  86. package/dist/{deliver-CLC5995g.js → deliver-CnWkOjIS.js} +4 -4
  87. package/dist/{deliver-PUOUs4ol.js → deliver-p_wWlh7d.js} +4 -4
  88. package/dist/{deps-OtLVxtqA.js → deps-dnIzvRTI.js} +7 -7
  89. package/dist/{devices-cli-D0BLiV5P.js → devices-cli-BK99ZWma.js} +1 -1
  90. package/dist/{devices-cli-BcP_ANPE.js → devices-cli-Re_Yv5w8.js} +1 -1
  91. package/dist/{directory-cli-DpBUXrp-.js → directory-cli-Cmg1IBIV.js} +4 -4
  92. package/dist/{directory-cli-DhxF4o13.js → directory-cli-_0XEzDQ4.js} +4 -4
  93. package/dist/{dispatcher-nmVyfQFp.js → dispatcher-DJI5AwTt.js} +1 -1
  94. package/dist/{dispatcher-CmOeTrK_.js → dispatcher-Dpk5Q-if.js} +1 -1
  95. package/dist/{dm-policy-shared-blX46cKQ.js → dm-policy-shared-CUioJdk1.js} +2 -2
  96. package/dist/{dm-policy-shared-C2q1D8fT.js → dm-policy-shared-YTfwZ6jY.js} +2 -2
  97. package/dist/{dns-cli-CQi019dy.js → dns-cli-HCXo7f3i.js} +2 -2
  98. package/dist/{dns-cli-BSNVla3B.js → dns-cli-dFY1v-iF.js} +2 -2
  99. package/dist/doctor-completion-B5-kCeMP.js +2 -0
  100. package/dist/{doctor-completion-BdgKiese.js → doctor-completion-B78sHoqs.js} +1 -1
  101. package/dist/doctor-completion-BeYCjlny.js +2 -0
  102. package/dist/{doctor-completion-BWQNa8Rn.js → doctor-completion-Kw4O81dP.js} +1 -1
  103. package/dist/{doctor-config-flow-BXSVwYS5.js → doctor-config-flow-890IANFn.js} +6 -6
  104. package/dist/{doctor-config-flow-B-H0pKMJ.js → doctor-config-flow-BtyHlY7m.js} +6 -6
  105. package/dist/entry.js +1 -1
  106. package/dist/{exec-approvals-cli-D7k2G-_u.js → exec-approvals-cli-A0fdPwKP.js} +2 -2
  107. package/dist/{exec-approvals-cli-BT4Xj7Y1.js → exec-approvals-cli-CVi3Qs4M.js} +2 -2
  108. package/dist/extensionAPI.d.ts +18 -0
  109. package/dist/extensionAPI.js +2 -2
  110. package/dist/{gateway-Bek458JN.js → gateway-4zoqQRFS.js} +2 -2
  111. package/dist/{gateway-BsDz6Txw.js → gateway-BjrVF36X.js} +3 -3
  112. package/dist/{gateway-Kvu235lW.js → gateway-C_y60rCC.js} +3 -3
  113. package/dist/{gateway-cli-DWNvy97w.js → gateway-cli-B2zp0e2L.js} +281 -90
  114. package/dist/{gateway-cli-DBYifD2O.js → gateway-cli-ChbnKEbL.js} +280 -89
  115. package/dist/{gateway-rpc-Dc0DnxUX.js → gateway-rpc-DL6Qup-i.js} +1 -1
  116. package/dist/{gateway-rpc-l6HPIQzp.js → gateway-rpc-DssF63Ne.js} +1 -1
  117. package/dist/{gateway-tool-Mw-Gx803.js → gateway-tool-BzJ0h7eR.js} +3 -3
  118. package/dist/{gateway-tool-xl9tAtSB.js → gateway-tool-DOztRJUz.js} +3 -3
  119. package/dist/{gateway-tool-a20jJWDq.js → gateway-tool-DqqN5bQR.js} +3 -3
  120. package/dist/{github-copilot-auth-litvRVoa.js → github-copilot-auth-DMIEk1vO.js} +2 -2
  121. package/dist/{github-copilot-auth-D-W8ft9q.js → github-copilot-auth-DxZiDiLm.js} +2 -2
  122. package/dist/{gmail-DgNp3YYe.js → gmail-DyzUUJJc.js} +37 -2
  123. package/dist/{gmail-zhEe5Z8O.js → gmail-smcTnAL4.js} +37 -2
  124. package/dist/{health-B8RawP7b.js → health-CMSekzYP.js} +9 -9
  125. package/dist/{health-CTFvDTD7.js → health-bhWSy0iT.js} +9 -9
  126. package/dist/{helpers-CGxR-v_q.js → helpers-BmlsKFRE.js} +1 -1
  127. package/dist/{helpers-BmRNbFqd.js → helpers-bV4rDY7S.js} +1 -1
  128. package/dist/{hooks-cli-B0acrP_x.js → hooks-cli-CHzL3VxB.js} +2 -2
  129. package/dist/{hooks-cli-B4UnTlhs.js → hooks-cli-DlB2CWZ3.js} +2 -2
  130. package/dist/{image-tool-CyX6NMfF.js → image-tool-BJ1l_29F.js} +2 -2
  131. package/dist/{image-tool-DSsariPb.js → image-tool-CVxor5gM.js} +1 -1
  132. package/dist/{image-tool-pVcdVsPz.js → image-tool-jbnSFNt8.js} +2 -2
  133. package/dist/index.d.ts +18 -0
  134. package/dist/index.js +10 -10
  135. package/dist/{io-m4wc1BAH.js → io-CdQCAaa6.js} +2 -2
  136. package/dist/{io-D25qfBsN.js → io-ixUbjx-d.js} +2 -2
  137. package/dist/{ir-Dx-C32VK.js → ir-BraJF3FA.js} +4 -4
  138. package/dist/{ir-C05WXJJk.js → ir-C1yvfPUD.js} +1 -1
  139. package/dist/{ir-CWl3mIBF.js → ir-ap_93956.js} +1 -1
  140. package/dist/{lifecycle-core-DfqLUBMA.js → lifecycle-core-D1qgiAnW.js} +3 -3
  141. package/dist/{lifecycle-core-DzUG_Ssw.js → lifecycle-core-DcELCz73.js} +3 -3
  142. package/dist/{logs-cli-BFL0tNQ7.js → logs-cli-B7DrbJJe.js} +2 -2
  143. package/dist/{logs-cli-57sWeC-n.js → logs-cli-BtsZAvQl.js} +2 -2
  144. package/dist/{memory-cli-C-GpnDhy.js → memory-cli-BPA2VF2K.js} +3 -3
  145. package/dist/{memory-cli-DSkmVEn2.js → memory-cli-Cjc2QC34.js} +3 -3
  146. package/dist/{message-action-runner-D4J_Q8si.js → message-action-runner-Cp7IDTgr.js} +10 -10
  147. package/dist/{message-action-runner-D3d8Qol-.js → message-action-runner-Y0gGuB9o.js} +10 -10
  148. package/dist/{message-ledger-B25yZ2QH.js → message-ledger-Dxdjwnp5.js} +6 -6
  149. package/dist/{message-tool-DaVlHkIL.js → message-tool-C0cB-u85.js} +8 -8
  150. package/dist/{message-tool-D4ICBygu.js → message-tool-D6_NEoKc.js} +6 -6
  151. package/dist/{message-tool-BoM6uXri.js → message-tool-tUSmmPC8.js} +6 -6
  152. package/dist/{minion-tools-Bl6_2TjV.js → minion-tools-DJy-WfEJ.js} +32 -32
  153. package/dist/{model-catalog-DAyuGuaM.js → model-catalog-BSiv3f8K.js} +3 -3
  154. package/dist/{model-catalog-D2mf6NCd.js → model-catalog-BT-GB5Sg.js} +3 -3
  155. package/dist/{model-fallback-CkHoZK3M.js → model-fallback-BnX9l93Z.js} +3 -3
  156. package/dist/{model-fallback-ClZN3VTY.js → model-fallback-CbUPBvLD.js} +2 -2
  157. package/dist/{model-fallback-BI2APyvK.js → model-fallback-xPeowZyn.js} +2 -2
  158. package/dist/{model-picker-DLQzZ-5Y.js → model-picker-ULuiV8vS.js} +2 -2
  159. package/dist/{model-picker-DMFOiIKC.js → model-picker-oHGlXGmQ.js} +2 -2
  160. package/dist/{models-CoBCsawh.js → models-Ctl2brz_.js} +12 -12
  161. package/dist/{models-cli-DzurrL4c.js → models-cli-BlfFEsbo.js} +2 -2
  162. package/dist/{models-cli-Du8v-We9.js → models-cli-uBrX9319.js} +12 -12
  163. package/dist/{models-config-9gR2ReZP.js → models-config-5UEUfArU.js} +2 -2
  164. package/dist/{models-config-CHQqAhX1.js → models-config-CfHxg89-.js} +2 -2
  165. package/dist/{node-cli-CfjV_Ydb.js → node-cli-BBOTnlCC.js} +8 -8
  166. package/dist/{node-cli-B6_kL5Io.js → node-cli-PphC70ft.js} +8 -8
  167. package/dist/{nodes-cli-LrnoE5Hf.js → nodes-cli-C1CX4km4.js} +5 -5
  168. package/dist/{nodes-cli-VZ3jgwE_.js → nodes-cli-D3Xc4a5j.js} +5 -5
  169. package/dist/{nodes-tool-7_gy6muZ.js → nodes-tool-B_huovGW.js} +3 -3
  170. package/dist/{nodes-tool-CC1r9rbg.js → nodes-tool-D7XW5R19.js} +3 -3
  171. package/dist/{nodes-tool-rm10iTBH.js → nodes-tool-YT7A5IpP.js} +3 -3
  172. package/dist/{nodes-utils-XrLsrfuH.js → nodes-utils-B1N5BMdS.js} +1 -1
  173. package/dist/{nodes-utils-KWfjG80h.js → nodes-utils-DoweebPv.js} +1 -1
  174. package/dist/{nodes-utils-CINjm-rv.js → nodes-utils-iQtlU_22.js} +1 -1
  175. package/dist/{onboard-DIPKzpum.js → onboard-D51kdZE7.js} +9 -9
  176. package/dist/{onboard-channels-BsGyK9L4.js → onboard-channels-5GW29O4D.js} +3 -3
  177. package/dist/{onboard-channels-B8EXMhqz.js → onboard-channels-BNsYG_kk.js} +1 -1
  178. package/dist/{onboard-channels-uqdpert3.js → onboard-channels-ChfJpe1O.js} +1 -1
  179. package/dist/{onboard-channels-2mjk8QRb.js → onboard-channels-DEEm5bq0.js} +3 -3
  180. package/dist/{onboard-custom-RaIi_OGk.js → onboard-custom-BTQOo_CS.js} +2 -2
  181. package/dist/{onboard-custom-dlxM-UkE.js → onboard-custom-BVTWXYZZ.js} +1 -1
  182. package/dist/{onboard-custom-vMIsoEjQ.js → onboard-custom-BW4cjI4L.js} +1 -1
  183. package/dist/{onboard-custom-OhyB5-Gd.js → onboard-custom-C0YZYcqB.js} +2 -2
  184. package/dist/{onboard-BX2-_phh.js → onboard-h_y7-C7c.js} +9 -9
  185. package/dist/{onboard-helpers-CmQBiGjp.js → onboard-helpers-CAp6xUvG.js} +1 -1
  186. package/dist/{onboard-helpers-BeTBv9NV.js → onboard-helpers-CLTVAIAP.js} +5 -5
  187. package/dist/{onboard-helpers-BAjkjDC1.js → onboard-helpers-D4NUWUH4.js} +5 -5
  188. package/dist/{onboard-helpers-DIRlPtVB.js → onboard-helpers-DobA9gFL.js} +1 -1
  189. package/dist/{onboard-remote-BBuIg8t3.js → onboard-remote-0D9FeBDo.js} +1 -1
  190. package/dist/{onboard-remote-BZSlbbvu.js → onboard-remote-BZhR0x4e.js} +1 -1
  191. package/dist/{onboard-skills-bJtoE2b0.js → onboard-skills-Dl9wVHp5.js} +1 -1
  192. package/dist/{onboard-skills-DphCt9Wl.js → onboard-skills-DonusvJ8.js} +1 -1
  193. package/dist/{onboarding-CquDb4Ko.js → onboarding-BOHF-KyS.js} +12 -12
  194. package/dist/{onboarding-BRTMRUY5.js → onboarding-CA28TXPp.js} +12 -12
  195. package/dist/{onboarding.finalize-Bb4ntaL-.js → onboarding.finalize-BcY1Tcgm.js} +9 -9
  196. package/dist/{onboarding.finalize-CCSPOpcJ.js → onboarding.finalize-CPjJ6oRP.js} +9 -9
  197. package/dist/{onboarding.gateway-config-DzlKkg5n.js → onboarding.gateway-config-CBdiSzJD.js} +2 -2
  198. package/dist/{onboarding.gateway-config-DY-KiclE.js → onboarding.gateway-config-DotULIqj.js} +2 -2
  199. package/dist/{outbound-send-deps-D_xee69M.js → outbound-send-deps-CLdxbXZ4.js} +7 -7
  200. package/dist/{outbound-session-CDWwaggL.js → outbound-session-DAvju8aE.js} +6 -6
  201. package/dist/{outbound-session-BfiNGbxM.js → outbound-session-SmzP0oiG.js} +6 -6
  202. package/dist/{pairing-cli-BQdVIKQi.js → pairing-cli-BGttqvX2.js} +4 -4
  203. package/dist/{pairing-cli-C_RIay6s.js → pairing-cli-DZhIJM3E.js} +4 -4
  204. package/dist/{pairing-store-D7i7bXiE.js → pairing-store-BKNRbNxY.js} +2 -2
  205. package/dist/{pairing-store-BngtUsor.js → pairing-store-Cf5T90i8.js} +2 -2
  206. package/dist/{pi-embedded-helpers-DdMwVhWo.js → pi-embedded-helpers-BfVIc4c5.js} +1 -1
  207. package/dist/{pi-embedded-helpers-DEW1Kowd.js → pi-embedded-helpers-e3rGVwvz.js} +4 -4
  208. package/dist/{pi-embedded-helpers-B09QHIJ6.js → pi-embedded-helpers-iIC17y0y.js} +1 -1
  209. package/dist/{pi-embedded-utils-EQyF94vt.js → pi-embedded-utils-CQXEVMAO.js} +1 -1
  210. package/dist/{pi-embedded-utils-KCO4xrpR.js → pi-embedded-utils-Ciyl4mBw.js} +1 -1
  211. package/dist/{pi-embedded-utils-DKuWTXNr.js → pi-embedded-utils-RlNd1YPz.js} +1 -1
  212. package/dist/{pi-tools.policy-CFHuM9wa.js → pi-tools.policy-BEqjC5lp.js} +3 -3
  213. package/dist/{plugin-auto-enable-BhGucCgt.js → plugin-auto-enable-C1841BQR.js} +1 -1
  214. package/dist/{plugin-auto-enable-tbz6JDnp.js → plugin-auto-enable-FIoIz-a0.js} +1 -1
  215. package/dist/{plugin-registry-Ca6X2inP.js → plugin-registry-BzUzEXW5.js} +3 -3
  216. package/dist/{plugin-registry-emvrVNCr.js → plugin-registry-CIkeUO1p.js} +3 -3
  217. package/dist/plugin-sdk/channels/discord.js +9 -1
  218. package/dist/plugin-sdk/channels/imessage.js +9 -1
  219. package/dist/plugin-sdk/channels/line.js +9 -1
  220. package/dist/plugin-sdk/channels/signal.js +9 -1
  221. package/dist/plugin-sdk/channels/slack.js +9 -1
  222. package/dist/plugin-sdk/channels/telegram.js +9 -1
  223. package/dist/plugin-sdk/channels/whatsapp.js +9 -1
  224. package/dist/plugin-sdk/config/types.hooks.d.ts +18 -0
  225. package/dist/plugin-sdk/config/zod-schema.d.ts +16 -0
  226. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +8 -0
  227. package/dist/plugin-sdk/core.js +9 -1
  228. package/dist/plugin-sdk/index.js +9 -1
  229. package/dist/{plugins-BBxVrybd.js → plugins-CDfgbD2S.js} +1 -1
  230. package/dist/{plugins-R05b7jc4.js → plugins-DPanwIbt.js} +1 -1
  231. package/dist/{plugins-C3Yr0vjv.js → plugins-DoD5loqV.js} +1 -1
  232. package/dist/{plugins-cli-QDEsQJm-.js → plugins-cli-BKtXDROc.js} +3 -3
  233. package/dist/{plugins-cli-Dn-MSLQu.js → plugins-cli-BW0N9fSR.js} +3 -3
  234. package/dist/{program-DHSIldNQ.js → program-DthXMAW7.js} +7 -7
  235. package/dist/{program-context-T2JYjWqc.js → program-context-DQ_mPSwe.js} +42 -42
  236. package/dist/{prompt-select-styled-mQlTs7CF.js → prompt-select-styled-CL2pJdYI.js} +18 -18
  237. package/dist/{prompt-select-styled-DcnMuuJL.js → prompt-select-styled-CVkDOduz.js} +18 -18
  238. package/dist/{push-apns-D61x7OCA.js → push-apns-BYvlu7xE.js} +1 -1
  239. package/dist/{push-apns-D08TcbbK.js → push-apns-DnLzbtEB.js} +1 -1
  240. package/dist/{pw-ai-BHl1-Iv9.js → pw-ai-CRKcQ4Lu.js} +2 -2
  241. package/dist/{pw-ai-DVHvqhN7.js → pw-ai-D7bg6NOC.js} +2 -2
  242. package/dist/{pw-ai-L9MpO96I.js → pw-ai-fnPq0hxx.js} +2 -2
  243. package/dist/{pw-session-DAEdZ_Jt.js → pw-session-Bwzc9e4u.js} +1 -1
  244. package/dist/{pw-session-BHkBkS6f.js → pw-session-Cymqd59A.js} +1 -1
  245. package/dist/{pw-session-iSeqduQN.js → pw-session-DWta6A5x.js} +1 -1
  246. package/dist/{qr-cli-BS4NphXo.js → qr-cli-BEIxivqG.js} +2 -2
  247. package/dist/{qr-cli-DcCr98E8.js → qr-cli-Dxk-9Aiq.js} +2 -2
  248. package/dist/{register.agent-BIY97DZM.js → register.agent-ZSVxMRSf.js} +7 -7
  249. package/dist/{register.agent-D00bssoy.js → register.agent-e9CkuZeX.js} +12 -12
  250. package/dist/{register.channel-DJ6HzsSR.js → register.channel-BD4jMjFt.js} +2 -2
  251. package/dist/{register.channel-DYqNRzGQ.js → register.channel-BsG64VlQ.js} +2 -2
  252. package/dist/{register.configure-CJU21ErI.js → register.configure-CF1kaDmi.js} +1 -1
  253. package/dist/{register.configure-BaGbYg0W.js → register.configure-CpS1rEZ7.js} +1 -1
  254. package/dist/{register.drone-B-gMKIGc.js → register.drone-DV3tHito.js} +1 -1
  255. package/dist/{register.drone-fp4Hp7td.js → register.drone-DpYnKKiY.js} +1 -1
  256. package/dist/{register.maintenance-hQ-lGg-3.js → register.maintenance-CE_wmlLd.js} +5 -5
  257. package/dist/{register.maintenance-CfgkkwNy.js → register.maintenance-Rpaq5Xgy.js} +5 -5
  258. package/dist/{register.message-DJ6m0hJm.js → register.message-CMIXJlcj.js} +8 -8
  259. package/dist/{register.message-BW431Wdc.js → register.message-DXvk3yWB.js} +8 -8
  260. package/dist/{register.onboard-Oaz1TlPk.js → register.onboard-CegpaJI9.js} +1 -1
  261. package/dist/{register.onboard-DuH2nA9A.js → register.onboard-DnXBbt3A.js} +1 -1
  262. package/dist/{register.setup-CwBj2rIK.js → register.setup-B0-IOheA.js} +4 -4
  263. package/dist/{register.setup-DFjvHDLh.js → register.setup-C7q45sGE.js} +4 -4
  264. package/dist/{register.status-health-sessions-DMdKoG2v.js → register.status-health-sessions--rSi39EL.js} +3 -3
  265. package/dist/{register.status-health-sessions-C0CKXfIL.js → register.status-health-sessions-CbYS1DRA.js} +6 -6
  266. package/dist/{register.subclis-ckbJFO-L.js → register.subclis-DBB-RHWD.js} +29 -29
  267. package/dist/{reply-DjQyZzxK.js → reply-Cztaxyf8.js} +44 -44
  268. package/dist/{reply-payloads-DRKznvAh.js → reply-payloads-SesmOYS1.js} +6 -6
  269. package/dist/{reply-prefix-COgNJVi7.js → reply-prefix-CqR6xBt8.js} +1 -1
  270. package/dist/{reply-prefix-DMYpa9nO.js → reply-prefix-DaqS3OL8.js} +1 -1
  271. package/dist/{resolve-route-C1gqJExF.js → resolve-route-BylUpvs3.js} +4 -4
  272. package/dist/{resolve-route-U1dN8gZq.js → resolve-route-CQ8m3Y_1.js} +2 -2
  273. package/dist/{routes-BwHxQr5z.js → routes-CVeLAQJp.js} +4 -4
  274. package/dist/{routes-S_klsryv.js → routes-DzArzaiM.js} +4 -4
  275. package/dist/{rpc-DNFilbM-.js → rpc-5jPxUJ4A.js} +1 -1
  276. package/dist/{rpc-Cd-Ec9Ba.js → rpc-Czo5KWhm.js} +1 -1
  277. package/dist/{run-main-DE-CWHv3.js → run-main-B3wm2juN.js} +19 -19
  278. package/dist/{sandbox-DuNLTHpm.js → sandbox-DbBsfhrg.js} +6 -6
  279. package/dist/{sandbox-DKbtOnC4.js → sandbox-DwGbzphU.js} +6 -6
  280. package/dist/{sandbox-cli-C0JQMKzM.js → sandbox-cli-CB7GmAVd.js} +4 -4
  281. package/dist/{sandbox-cli-DD3udf2_.js → sandbox-cli-DBHlPhv3.js} +4 -4
  282. package/dist/{security-cli-CRhvGph3.js → security-cli-B8KEOSM7.js} +4 -4
  283. package/dist/{security-cli-CkXUq5B9.js → security-cli-BIq6dAQQ.js} +4 -4
  284. package/dist/{send-_iLB73r8.js → send--cVaTW_v.js} +6 -6
  285. package/dist/{send-CzLI7gv4.js → send-BKT_lmUT.js} +5 -5
  286. package/dist/{send-VlNTkqaJ.js → send-BwVdjvzd.js} +6 -6
  287. package/dist/{send-Daph0nLd.js → send-CiJ0tV1S.js} +4 -4
  288. package/dist/{send-BSLXVHlm.js → send-CryjP4Y8.js} +4 -4
  289. package/dist/{send-DwuYUaI8.js → send-DPZQ1nNP.js} +5 -5
  290. package/dist/{send-DECu0R1a.js → send-DcasEJpW.js} +5 -5
  291. package/dist/{send-Jz-q93TZ.js → send-DkdEYAe5.js} +5 -5
  292. package/dist/{send-Cfc4zQZQ.js → send-Dwk8cP7W.js} +4 -4
  293. package/dist/{send-DRjKjZs1.js → send-Mb8xn3nw.js} +4 -4
  294. package/dist/{server-context-BUJezTt7.js → server-context-68HV9bpp.js} +6 -6
  295. package/dist/{server-context-DmXqKFna.js → server-context-D-6GdMor.js} +6 -6
  296. package/dist/{server-context-CFg_npAt.js → server-context-XRvM6sVl.js} +5 -5
  297. package/dist/{server-node-events-B6R9PtsE.js → server-node-events-CJsgH2Am.js} +11 -11
  298. package/dist/{server-node-events-DE9awsGD.js → server-node-events-SK_JbV5S.js} +9 -9
  299. package/dist/{session-status-tool-xcp9V7TS.js → session-status-tool-BJ3uXJiB.js} +6 -6
  300. package/dist/{session-status-tool-BAMVlbMV.js → session-status-tool-CxAtKcRz.js} +4 -4
  301. package/dist/{session-status-tool-CxHTQ9M-.js → session-status-tool-Df3p1FkL.js} +7 -7
  302. package/dist/{session-utils-WPz6l6QB.js → session-utils--BgIkPfi.js} +4 -4
  303. package/dist/{sessions-zdScGHgW.js → sessions-B-cuXd6I.js} +6 -6
  304. package/dist/{sessions-CLk9f3VS.js → sessions-BwRNCPkA.js} +6 -6
  305. package/dist/{sessions-Dl0Cd4oL.js → sessions-CNjX7z0J.js} +4 -4
  306. package/dist/{sessions-BzdtrJWV.js → sessions-CzHO0eVl.js} +2 -2
  307. package/dist/{sessions-helpers-D41batWj.js → sessions-helpers-D0q0G8LJ.js} +3 -3
  308. package/dist/{sessions-helpers-B5il3JNp.js → sessions-helpers-DLuKdjo_.js} +3 -3
  309. package/dist/{sessions-helpers-j1QroB55.js → sessions-helpers-DQeOOWhn.js} +3 -3
  310. package/dist/{sessions-history-tool-hXN2sQro.js → sessions-history-tool-2N5gNLun.js} +4 -4
  311. package/dist/{sessions-history-tool-BRbzOq97.js → sessions-history-tool-BSUrbcFq.js} +5 -5
  312. package/dist/{sessions-history-tool-BQ_spEuc.js → sessions-history-tool-BpoDhmO9.js} +5 -5
  313. package/dist/{sessions-list-tool-CJQntbWI.js → sessions-list-tool-BbX-qiub.js} +5 -5
  314. package/dist/{sessions-list-tool-Dg2loMdM.js → sessions-list-tool-CozuR0rR.js} +5 -5
  315. package/dist/{sessions-list-tool-DSDnEdeh.js → sessions-list-tool-DICPSLjZ.js} +4 -4
  316. package/dist/{sessions-send-tool-CpACfQXU.js → sessions-send-tool-D2HLfmT7.js} +4 -4
  317. package/dist/{sessions-send-tool-BRma72Qe.js → sessions-send-tool-PlwovQWQ.js} +6 -6
  318. package/dist/{sessions-send-tool-BGKsRTVQ.js → sessions-send-tool-_Gft5-ns.js} +6 -6
  319. package/dist/{sessions-spawn-tool-DOgBxODP.js → sessions-spawn-tool-BZEFuAfT.js} +1 -1
  320. package/dist/{sessions-spawn-tool-Bz9k0pyF.js → sessions-spawn-tool-DblQBRVE.js} +1 -1
  321. package/dist/{sessions-spawn-tool-BQZQ6qN9.js → sessions-spawn-tool-Yzyfg2jU.js} +1 -1
  322. package/dist/{shared-CRrAp12U.js → shared-CEUByqYl.js} +2 -2
  323. package/dist/{shared-DSKVP9mK.js → shared-Cpe2HKSy.js} +2 -2
  324. package/dist/{skills-cli-DuTDiiHI.js → skills-cli-CZ95j-SK.js} +2 -2
  325. package/dist/{skills-cli-Bqgq6w1O.js → skills-cli-CejQzPvn.js} +2 -2
  326. package/dist/{status-Cn_uxl76.js → status-B7w5Rjj0.js} +3 -3
  327. package/dist/{status-Z8UvQv14.js → status-Bxo5Qgkm.js} +14 -14
  328. package/dist/{status--iMuqyeg.js → status-D6dSGWoV.js} +3 -3
  329. package/dist/{status-DLQ6qhVR.js → status-V-A_EQLj.js} +13 -13
  330. package/dist/{status.update-DwZsqDjZ.js → status.update-D7OzY1un.js} +1 -1
  331. package/dist/{status.update-wJSTrY3p.js → status.update-xTrXCcTT.js} +1 -1
  332. package/dist/{subagent-registry-CW6S0hCt.js → subagent-registry-CtFQu2XK.js} +45 -45
  333. package/dist/{subagents-tool-LGTTnjN8.js → subagents-tool-BgHJ1Aq5.js} +5 -5
  334. package/dist/{subagents-tool-G_iTKaEM.js → subagents-tool-DVH-Yiuj.js} +6 -6
  335. package/dist/{subagents-tool-DVCoQVCv.js → subagents-tool-DrGmazl0.js} +6 -6
  336. package/dist/{system-cli-DcyrWw1d.js → system-cli-DsbBgaIf.js} +1 -1
  337. package/dist/{system-cli-Dy0bqSW4.js → system-cli-pUoSWi6a.js} +1 -1
  338. package/dist/{systemd-hints-DMPapqK4.js → systemd-hints-CxrUl99q.js} +1 -1
  339. package/dist/{systemd-hints-BS411_Qp.js → systemd-hints-h7Rsbtaq.js} +1 -1
  340. package/dist/{tables-BkOpcnFe.js → tables-BqbZpaiW.js} +1 -1
  341. package/dist/{tables-DxNxpmv_.js → tables-Dw6fPHPm.js} +1 -1
  342. package/dist/{targets-COAISf4b.js → targets-0zwF_rcw.js} +2 -2
  343. package/dist/{targets-aZjwTVyj.js → targets-BDAi2uAM.js} +1 -1
  344. package/dist/{targets-D83qNpgt.js → targets-ZMb4vg1U.js} +1 -1
  345. package/dist/{tools-cli-CHENLVBK.js → tools-cli-DxD_TWLP.js} +3 -3
  346. package/dist/{tools-cli-BMlA4gsY.js → tools-cli-jBx6fczM.js} +3 -3
  347. package/dist/{tts-CjrwccM4.js → tts-BFst7lT8.js} +1 -1
  348. package/dist/{tts-CWeZg7pL.js → tts-CrhkSarn.js} +1 -1
  349. package/dist/{tts-B96k_Lwf.js → tts-pal-CEGo.js} +1 -1
  350. package/dist/{tts-tool-bED0Rvrn.js → tts-tool-CHxhNUNS.js} +2 -2
  351. package/dist/{tts-tool-DRWkB0vy.js → tts-tool-Ca-KZba5.js} +3 -3
  352. package/dist/{tts-tool-OBys_Fcn.js → tts-tool-DxcHcbaB.js} +3 -3
  353. package/dist/{tui-PDYEGxqk.js → tui-C-R3f8Nx.js} +5 -5
  354. package/dist/{tui-BVB3So1e.js → tui-CMJvG6DY.js} +5 -5
  355. package/dist/{tui-cli-C47jFE5K.js → tui-cli-DgKi1NEY.js} +1 -1
  356. package/dist/{tui-cli-XZJF1TrA.js → tui-cli-VjwcXcq-.js} +1 -1
  357. package/dist/{update-cli-DjzWjC0N.js → update-cli-DHuLiu1K.js} +8 -8
  358. package/dist/{update-cli-BMmnfyl5.js → update-cli-QvYJPXKw.js} +8 -8
  359. package/dist/{validation-C3bcbV84.js → validation-BerZ8GL9.js} +8 -0
  360. package/dist/{validation-CMXTA_lT.js → validation-NFMJmuUc.js} +8 -0
  361. package/dist/{web-CmPUg1_h.js → web--T8iHjtC.js} +11 -11
  362. package/dist/web-B46WIIAq.js +2 -0
  363. package/dist/{web-search-BKjUWmD_.js → web-search-BZUuxSQw.js} +3 -3
  364. package/dist/{web-search-CAym2HtE.js → web-search-C8PfcjOm.js} +4 -4
  365. package/dist/{web-search-CvTnpnBT.js → web-search-CjPx3-uy.js} +4 -4
  366. package/dist/{webhooks-cli-5X1REotn.js → webhooks-cli-BRkm7juI.js} +4 -4
  367. package/dist/{webhooks-cli-DjrRcHg-.js → webhooks-cli-BZeAjDjf.js} +4 -4
  368. package/dist/{workspace-dirs-CBjbBiRa.js → workspace-dirs-7j25QnoW.js} +3 -3
  369. package/extensions/bluebubbles/index.js +8 -0
  370. package/extensions/feishu/index.js +8 -0
  371. package/extensions/flows/index.js +8 -0
  372. package/extensions/googlechat/index.js +8 -0
  373. package/extensions/irc/index.js +8 -0
  374. package/extensions/matrix/{credentials-BM0IUyzD.mjs → credentials-BHs_ypXX.mjs} +8 -0
  375. package/extensions/matrix/index.js +3 -3
  376. package/extensions/matrix/{matrix-CVXkVV5E.mjs → matrix-CEQ7r1mq.mjs} +2 -2
  377. package/extensions/matrix/{resolve-targets-D0pnafu-.mjs → resolve-targets-Ckl6DBF6.mjs} +2 -2
  378. package/extensions/mattermost/index.js +8 -0
  379. package/extensions/nextcloud-talk/index.js +8 -0
  380. package/extensions/wati/index.js +8 -0
  381. package/extensions/weixin/index.js +8 -0
  382. package/extensions/zalo/index.js +8 -0
  383. package/extensions/zalouser/index.js +8 -0
  384. package/package.json +1 -1
  385. package/dist/daemon-install-helpers-BHq5Umy1.js +0 -2
  386. package/dist/daemon-install-helpers-CKFMlhKx.js +0 -2
  387. package/dist/doctor-completion-D1hIk3j-.js +0 -2
  388. package/dist/doctor-completion-Db4jJGsj.js +0 -2
  389. package/dist/web-BL2lSkB9.js +0 -2
@@ -1,8 +1,8 @@
1
1
  import { C as expandHomePrefix, c as resolveConfigPath, d as resolveGatewayLockDir, f as resolveGatewayPort, n as STATE_DIR, r as isNixMode, t as CONFIG_PATH, v as resolveStateDir } from "./paths-CoM-oAkW.js";
2
2
  import { C as shortenHomePath, D as truncateUtf16Safe, L as getChildLogger, P as setVerbose, R as getLogger, _ as resolveConfigDir, b as resolveUserPath, c as ensureDir, d as isPlainObject, r as clamp, t as CONFIG_DIR, z as getResolvedLoggerSettings } from "./utils-FhRSYjMj.js";
3
3
  import { n as isRich, r as theme, t as colorize } from "./theme-CDbj88LB.js";
4
- import { A as resolveBootstrapTotalMaxChars, B as normalizeVerboseLevel, F as listThinkingLevels, H as supportsXHighThinking, I as normalizeElevatedLevel, L as normalizeReasoningLevel, M as formatThinkingLevels, N as formatXHighModelHint, R as normalizeThinkLevel, k as resolveBootstrapMaxChars, z as normalizeUsageDisplay } from "./pi-embedded-helpers-B09QHIJ6.js";
5
- import { $ as renamePairedNode, An as isAbortTrigger, At as abortEmbeddedPiRun, Bt as markRecoveryAttempt, C as initTemplateLoader, Ct as loadCombinedSessionStoreForGateway, Dn as resolveUserTimezone, Dt as resolveSessionModelRef, Et as resolveGatewaySessionStoreTarget, Fr as normalizeMimeList, Ft as closeInFlightTurnsStore, G as recordRemoteNodeInfo, Gn as clearAgentRunContext, Gt as getBuiltinSectionRegistry, H as resolveSendPolicy, In as countActiveDescendantRuns, Ir as resolveInputFileLimits, It as deleteRow, J as removeRemoteNodeInfo, Jn as onAgentEvent, Jt as buildToolSummaryMap, K as refreshRemoteBinsForConnectedNodes, Kn as emitAgentEvent, Ln as initSubagentRegistry, Lt as listForCurrentInstance, Mt as queueEmbeddedPiMessage, Nr as extractFileContentFromSource, Nt as waitForEmbeddedPiRunEnd, Ot as normalizeOrgIds, Pr as extractImageContentFromSource, Pt as registerLifecycleHooks, Q as rejectNodePairing, Qt as createOpenClawCodingTools, Rn as listDescendantRunsForRequester, Rr as transcribeOpenAiCompatibleAudio, Rt as listFromOtherInstances, S as getTemplateUsageStats, St as listSessionsFromStore, Tt as pruneLegacyStoreKeys, U as getRemoteSkillEligibility, Un as runSubagentAnnounceFlow, Ut as readConsolidationState, V as normalizeSendPolicy, Vn as markSubagentRunTerminated, Vr as resolveAgentTimeoutMs, Vt as openInFlightTurnsStore, W as primeRemoteSkillsCache, Wt as assembleAgentSystemPromptWithSections, X as approveNodePairing, Xt as PROSE_GLOBAL_ROOT, Y as setSkillsRemoteRegistry, Yn as registerAgentRunContext, Yt as PromptSectionRegistry, Z as listNodePairing, Zn as resolveAgentIdentity, Zt as _clearProseCache, _ as spawnSubagentDirect, _r as parseVerboseOverride, _t as buildSystemPromptReport, a as getCliSessionId, ar as getTotalQueueSize, at as verifyPairingToken, b as getTemplateCache, c as debugSkipAll, cr as waitForActiveTasks, ct as readJsonFile, d as setDebugStepBroadcaster, dt as getSkillsSnapshotVersion, en as applyToolPolicyPipeline, et as requestNodePairing, f as setSteppedBuild, ft as registerSkillsChangeListener, gn as getTotalPendingReplies, gr as applyVerboseOverride, gt as runEmbeddedPiAgent, hn as createReplyDispatcher, hr as applyModelOverrideToSessionEntry, ht as clearSessionQueues, i as resolveCronStyleNow, in as requestHeartbeatNow, it as hashToken, j as loadProviderUsageSummary, jn as stopSubagentsForRequester, jr as DEFAULT_INPUT_IMAGE_MIMES, jt as getActiveEmbeddedRunCount, k as normalizeGroupActivation, kr as registerUnhandledRejectionHandler, kt as orgScopeVisible, l as debugStepContinue, ln as loadMinionPlugins, lr as lookupContextTokens, lt as writeJsonAtomic, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, nn as createMinionTools, nr as resolveBootstrapContextForRun, nt as verifyNodeToken, o as setCliSessionId, or as resetAllLanes, ot as pruneExpiredPending, pr as buildAuthHealthSummary, q as refreshRemoteNodeBins, qn as getAgentRunContext, qt as buildSectionRenderContext, rn as TOOL_REGISTRY, rr as getActiveTaskCount, rt as generatePairingToken, s as runCliAgent, sn as getPluginToolMeta, sr as setCommandLaneConcurrency, st as resolvePairingPaths, tn as buildDefaultToolPolicyPipelineSteps, tt as updatePairedNodeMetadata, u as isSteppedBuildEnabled, un as loadOpenClawPlugins, ut as createAsyncLock, v as getLastReloadAt, vr as enqueueSystemEvent, vt as buildSystemPromptParams, w as stopTemplateWatcher, wn as formatZonedTimestamp, wt as loadSessionEntry, x as getTemplateLoadErrors, xt as listAgentsForGateway, y as getTemplate, yr as isSystemEventContextChanged, yt as canonicalizeSpawnedByForAgent, zt as markInterrupted } from "./reply-DjQyZzxK.js";
4
+ import { A as resolveBootstrapTotalMaxChars, B as normalizeVerboseLevel, F as listThinkingLevels, H as supportsXHighThinking, I as normalizeElevatedLevel, L as normalizeReasoningLevel, M as formatThinkingLevels, N as formatXHighModelHint, R as normalizeThinkLevel, k as resolveBootstrapMaxChars, z as normalizeUsageDisplay } from "./pi-embedded-helpers-iIC17y0y.js";
5
+ import { $ as renamePairedNode, An as isAbortTrigger, At as abortEmbeddedPiRun, Bt as markRecoveryAttempt, C as initTemplateLoader, Ct as loadCombinedSessionStoreForGateway, Dn as resolveUserTimezone, Dt as resolveSessionModelRef, Et as resolveGatewaySessionStoreTarget, Fr as normalizeMimeList, Ft as closeInFlightTurnsStore, G as recordRemoteNodeInfo, Gn as clearAgentRunContext, Gt as getBuiltinSectionRegistry, H as resolveSendPolicy, In as countActiveDescendantRuns, Ir as resolveInputFileLimits, It as deleteRow, J as removeRemoteNodeInfo, Jn as onAgentEvent, Jt as buildToolSummaryMap, K as refreshRemoteBinsForConnectedNodes, Kn as emitAgentEvent, Ln as initSubagentRegistry, Lt as listForCurrentInstance, Mt as queueEmbeddedPiMessage, Nr as extractFileContentFromSource, Nt as waitForEmbeddedPiRunEnd, Ot as normalizeOrgIds, Pr as extractImageContentFromSource, Pt as registerLifecycleHooks, Q as rejectNodePairing, Qt as createOpenClawCodingTools, Rn as listDescendantRunsForRequester, Rr as transcribeOpenAiCompatibleAudio, Rt as listFromOtherInstances, S as getTemplateUsageStats, St as listSessionsFromStore, Tt as pruneLegacyStoreKeys, U as getRemoteSkillEligibility, Un as runSubagentAnnounceFlow, Ut as readConsolidationState, V as normalizeSendPolicy, Vn as markSubagentRunTerminated, Vr as resolveAgentTimeoutMs, Vt as openInFlightTurnsStore, W as primeRemoteSkillsCache, Wt as assembleAgentSystemPromptWithSections, X as approveNodePairing, Xt as PROSE_GLOBAL_ROOT, Y as setSkillsRemoteRegistry, Yn as registerAgentRunContext, Yt as PromptSectionRegistry, Z as listNodePairing, Zn as resolveAgentIdentity, Zt as _clearProseCache, _ as spawnSubagentDirect, _r as parseVerboseOverride, _t as buildSystemPromptReport, a as getCliSessionId, ar as getTotalQueueSize, at as verifyPairingToken, b as getTemplateCache, c as debugSkipAll, cr as waitForActiveTasks, ct as readJsonFile, d as setDebugStepBroadcaster, dt as getSkillsSnapshotVersion, en as applyToolPolicyPipeline, et as requestNodePairing, f as setSteppedBuild, ft as registerSkillsChangeListener, gn as getTotalPendingReplies, gr as applyVerboseOverride, gt as runEmbeddedPiAgent, hn as createReplyDispatcher, hr as applyModelOverrideToSessionEntry, ht as clearSessionQueues, i as resolveCronStyleNow, in as requestHeartbeatNow, it as hashToken, j as loadProviderUsageSummary, jn as stopSubagentsForRequester, jr as DEFAULT_INPUT_IMAGE_MIMES, jt as getActiveEmbeddedRunCount, k as normalizeGroupActivation, kr as registerUnhandledRejectionHandler, kt as orgScopeVisible, l as debugStepContinue, ln as loadMinionPlugins, lr as lookupContextTokens, lt as writeJsonAtomic, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, nn as createMinionTools, nr as resolveBootstrapContextForRun, nt as verifyNodeToken, o as setCliSessionId, or as resetAllLanes, ot as pruneExpiredPending, pr as buildAuthHealthSummary, q as refreshRemoteNodeBins, qn as getAgentRunContext, qt as buildSectionRenderContext, rn as TOOL_REGISTRY, rr as getActiveTaskCount, rt as generatePairingToken, s as runCliAgent, sn as getPluginToolMeta, sr as setCommandLaneConcurrency, st as resolvePairingPaths, tn as buildDefaultToolPolicyPipelineSteps, tt as updatePairedNodeMetadata, u as isSteppedBuildEnabled, un as loadOpenClawPlugins, ut as createAsyncLock, v as getLastReloadAt, vr as enqueueSystemEvent, vt as buildSystemPromptParams, w as stopTemplateWatcher, wn as formatZonedTimestamp, wt as loadSessionEntry, x as getTemplateLoadErrors, xt as listAgentsForGateway, y as getTemplate, yr as isSystemEventContextChanged, yt as canonicalizeSpawnedByForAgent, zt as markInterrupted } from "./reply-Cztaxyf8.js";
6
6
  import { B as listMcpTools, E as createEmptyPluginRegistry, F as triggerInternalHook, H as registerMcpTool, I as addMcpSseSubscriber, L as getMcpDispatcher, M as clearInternalHooks, N as createInternalHookEvent, P as registerInternalHook, R as getMcpIdentityResolver, U as setMcpDispatcher, V as reconcileMcpPluginTools, W as setMcpIdentityResolver, a as setConsoleSubsystemFilter, d as CHANNEL_IDS, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger, w as setActivePluginRegistryConfig, x as getActivePluginRegistry, z as getMcpToolMethod } from "./subsystem-Dor46CEN.js";
7
7
  import { t as defaultRuntime } from "./runtime-Da615Z-K.js";
8
8
  import { b as isSubagentSessionKey, d as resolveAgentIdFromSessionKey, h as toAgentStoreSessionKey, i as buildAgentMainSessionKey, l as normalizeAgentId, m as toAgentRequestSessionKey, n as DEFAULT_AGENT_ID, s as classifySessionKeyShape, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as isCronRunSessionKey, x as parseAgentSessionKey } from "./session-key-BcXqsG0l.js";
@@ -16,19 +16,19 @@ import { t as applySqlitePragmas } from "./sqlite-pragmas-C_o_lU6a.js";
16
16
  import { t as requireNodeSqlite } from "./sqlite-TEJFfaDd.js";
17
17
  import { d as setSentryContext, f as setSentryTag, n as getReliabilityUptimeStartMs, r as initReliability, t as emitReliabilityEvent } from "./reliability-D5odTVhl.js";
18
18
  import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-IZo5oHSI.js";
19
- import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-C3bcbV84.js";
20
- import { C as resolveRuntimeServiceVersion, S as VERSION, a as parseConfigJson5, c as resolveConfigSnapshotHash, i as loadConfig, l as writeConfigFile, n as clearConfigCache, o as readConfigFileSnapshot, r as createConfigIO, s as readConfigFileSnapshotForWrite, t as applySnapshotDefaults, y as applyMergePatch } from "./io-m4wc1BAH.js";
19
+ import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-BerZ8GL9.js";
20
+ import { C as resolveRuntimeServiceVersion, S as VERSION, a as parseConfigJson5, c as resolveConfigSnapshotHash, i as loadConfig, l as writeConfigFile, n as clearConfigCache, o as readConfigFileSnapshot, r as createConfigIO, s as readConfigFileSnapshotForWrite, t as applySnapshotDefaults, y as applyMergePatch } from "./io-CdQCAaa6.js";
21
21
  import { l as isTestDefaultMemorySlotDisabled, n as loadPluginManifestRegistry } from "./manifest-registry-BhQtdshS.js";
22
- import { n as migrateLegacyConfig } from "./config-C7v6yY2J.js";
23
- import { A as getMirrorSnapshot, D as applyChannelRestart, F as setChannelRestartHandler, I as startMirrorRefreshTick, L as resolveHubMetricsConfig, O as channelConfigSource, P as seedMirror, _ as resolveTelegramAccount, c as resolveWhatsAppAccount, j as listMirrorAccountIds, k as getMirrorEntry, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as buildChannelAccountBindings, z as setMirrorAccountSource } from "./plugins-C3Yr0vjv.js";
24
- import { B as resolveExplicitAgentSessionKey, C as readSessionMessages, D as stripEnvelope, E as resolveSessionTranscriptCandidates, H as resolveMainSessionKeyFromConfig, L as resolveFreshSessionTotalTokens, N as resolveSessionResetPolicy, O as stripMessageIdHints, R as canonicalizeMainSessionAlias, S as capArrayByJsonBytes, V as resolveMainSessionKey, W as snapshotSessionOrigin, a as loadSessionStore, b as archiveFileOnDisk, g as mergeDeliveryContext, j as evaluateSessionFreshness, m as deliveryContextFromSession, n as parseSessionThreadInfo, nt as cleanStaleLockFiles, t as extractDeliveryInfo, u as updateSessionStore, v as normalizeSessionDeliveryFields, w as readSessionPreviewItemsFromTranscript, x as archiveSessionTranscripts, z as resolveAgentMainSessionKey } from "./sessions-CLk9f3VS.js";
25
- import { n as runWithModelFallback } from "./model-fallback-ClZN3VTY.js";
26
- import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-DuNLTHpm.js";
22
+ import { n as migrateLegacyConfig } from "./config-DehMVNfT.js";
23
+ import { A as getMirrorSnapshot, D as applyChannelRestart, F as setChannelRestartHandler, I as startMirrorRefreshTick, L as resolveHubMetricsConfig, O as channelConfigSource, P as seedMirror, _ as resolveTelegramAccount, c as resolveWhatsAppAccount, j as listMirrorAccountIds, k as getMirrorEntry, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as buildChannelAccountBindings, z as setMirrorAccountSource } from "./plugins-DoD5loqV.js";
24
+ import { B as resolveExplicitAgentSessionKey, C as readSessionMessages, D as stripEnvelope, E as resolveSessionTranscriptCandidates, H as resolveMainSessionKeyFromConfig, L as resolveFreshSessionTotalTokens, N as resolveSessionResetPolicy, O as stripMessageIdHints, R as canonicalizeMainSessionAlias, S as capArrayByJsonBytes, V as resolveMainSessionKey, W as snapshotSessionOrigin, a as loadSessionStore, b as archiveFileOnDisk, g as mergeDeliveryContext, j as evaluateSessionFreshness, m as deliveryContextFromSession, n as parseSessionThreadInfo, nt as cleanStaleLockFiles, t as extractDeliveryInfo, u as updateSessionStore, v as normalizeSessionDeliveryFields, w as readSessionPreviewItemsFromTranscript, x as archiveSessionTranscripts, z as resolveAgentMainSessionKey } from "./sessions-BwRNCPkA.js";
25
+ import { n as runWithModelFallback } from "./model-fallback-CbUPBvLD.js";
26
+ import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-DbBsfhrg.js";
27
27
  import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-ElLAPnGH.js";
28
28
  import { a as resolveRequestClientIp, c as createAuthRateLimiter, i as resolveGatewayAuth, l as safeEqualSecret, n as authorizeGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as isLocalDirectRequest, s as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, t as assertGatewayAuthConfigured } from "./auth-OWSujIee.js";
29
29
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C0DLwT7t.js";
30
30
  import { a as isTrustedProxyAddress, d as resolveGatewayClientIp, f as resolveGatewayListenHosts, i as isPrivateOrLoopbackAddress, l as pickPrimaryLanIPv4, n as isLoopbackAddress, p as resolveHostName, r as isLoopbackHost, s as normalizeHostHeader, t as rawDataToString, u as resolveGatewayBindHost } from "./ws-D1BO6u3O.js";
31
- import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-DmXqKFna.js";
31
+ import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-D-6GdMor.js";
32
32
  import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-CsM-Cs49.js";
33
33
  import "./skills-CiPqFRzf.js";
34
34
  import { a as isErrno, n as formatErrorMessage } from "./errors-iV4-NKRR.js";
@@ -40,22 +40,22 @@ import "./logging-_oKeHe0e.js";
40
40
  import { r as resolveUserDir } from "./user-directory-D27je39W.js";
41
41
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CIx6mrsE.js";
42
42
  import { i as normalizeInputProvenance } from "./input-provenance-ChJN5mZj.js";
43
- import { D as runGlobalGatewayStopSafely, S as patchRouting, T as getGlobalHookRunner, _ as closeMessageLedger, b as markSynced, g as claimBatch, k as isPluginEnabledForOrg, w as deterministicClientId, x as openMessageLedger, y as markFailed } from "./reply-payloads-DRKznvAh.js";
43
+ import { D as runGlobalGatewayStopSafely, S as patchRouting, T as getGlobalHookRunner, _ as closeMessageLedger, b as markSynced, g as claimBatch, k as isPluginEnabledForOrg, w as deterministicClientId, x as openMessageLedger, y as markFailed } from "./reply-payloads-SesmOYS1.js";
44
44
  import { t as fetchWithSsrFGuard } from "./fetch-guard-v1JmmyzF.js";
45
- import { n as loadModelCatalog } from "./model-catalog-D2mf6NCd.js";
45
+ import { n as loadModelCatalog } from "./model-catalog-BT-GB5Sg.js";
46
46
  import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-DyoUYpcY.js";
47
47
  import { a as stripHeartbeatToken } from "./lanes-lpI3esC4.js";
48
- import { i as resolveSessionDeliveryTarget, r as resolveOutboundTarget } from "./targets-COAISf4b.js";
48
+ import { i as resolveSessionDeliveryTarget, r as resolveOutboundTarget } from "./targets-0zwF_rcw.js";
49
49
  import { n as getMachineDisplayName } from "./with-timeout-B2r_vm3n.js";
50
50
  import { n as isDiagnosticsEnabled } from "./diagnostic-events-BIoHynd0.js";
51
51
  import { c as startDiagnosticHeartbeat, l as stopDiagnosticHeartbeat } from "./diagnostic-BAEmirZd.js";
52
- import { C as OPENAI_TTS_MODELS, T as defineDrone, _ as setTtsEnabled, d as resolveTtsAutoMode, f as resolveTtsConfig, i as getTtsProvider, m as resolveTtsProviderOrder, o as isTtsEnabled, p as resolveTtsPrefsPath, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, w as OPENAI_TTS_VOICES, x as textToSpeech, y as setTtsProvider } from "./tts-B96k_Lwf.js";
52
+ import { C as OPENAI_TTS_MODELS, T as defineDrone, _ as setTtsEnabled, d as resolveTtsAutoMode, f as resolveTtsConfig, i as getTtsProvider, m as resolveTtsProviderOrder, o as isTtsEnabled, p as resolveTtsPrefsPath, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, w as OPENAI_TTS_VOICES, x as textToSpeech, y as setTtsProvider } from "./tts-pal-CEGo.js";
53
53
  import { i as runDrone, t as createGatewayDroneHost } from "./host-DjZfjj2q.js";
54
54
  import { a as traceGatewayEvent, n as pruneOldTraceFiles } from "./chat-trace-DK2HjAH4.js";
55
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-DSkmVEn2.js";
55
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-Cjc2QC34.js";
56
56
  import { t as ToolInputError } from "./common-DSuaFkdO.js";
57
57
  import { $ as validateModelsSetEnabledParams, A as validateCronRunsParams, At as validateToolsOverridesSetParams, B as validateExecApprovalRequestParams, Bt as validateWizardStatusParams, C as validateConfigSchemaParams, Ct as validateSkillsBinsParams, D as validateCronListParams, Dt as validateTalkConfigParams, E as validateCronAddParams, Et as validateSkillsUpdateParams, F as validateDevicePairRejectParams, Ft as validateWebLoginStartParams, G as validateExecApprovalsSetParams, Gt as deriveDeviceIdFromPublicKey, H as validateExecApprovalsGetParams, Ht as buildDeviceAuthPayload, I as validateDevicePairRemoveParams, It as validateWebLoginWaitParams, J as validateMeshPlanParams, Jt as verifyDeviceSignature, K as validateLogsTailParams, L as validateDeviceTokenRevokeParams, Lt as validateWizardCancelParams, M as validateCronUpdateParams, Mt as validateToolsUpdateParams, N as validateDevicePairApproveParams, Nt as validateUpdateRunParams, O as validateCronRemoveParams, Ot as validateTalkModeParams, P as validateDevicePairListParams, Pt as validateWakeParams, Q as validateModelsListParams, R as validateDeviceTokenRotateParams, Rt as validateWizardNextParams, S as validateConfigPatchParams, St as validateSessionsUsageParams, T as validateConnectParams, Tt as validateSkillsStatusParams, U as validateExecApprovalsNodeGetParams, Ut as normalizeDeviceAuthScopes, V as validateExecApprovalResolveParams, Vt as parseSessionLabel, W as validateExecApprovalsNodeSetParams, X as validateMeshRunParams, Y as validateMeshRetryParams, Z as validateMeshStatusParams, _ as validateChatHistoryParams, _t as validateSessionsListParams, a as validateAgentWaitParams, at as validateNodePairApproveParams, b as validateConfigApplyParams, bt as validateSessionsResetParams, c as validateAgentsFilesGetParams, ct as validateNodePairRequestParams, d as validateAgentsListParams, dt as validatePlaygroundCompleteParams, et as validateNodeDescribeParams, f as validateAgentsSkillsSetParams, ft as validatePollParams, g as validateChatAbortParams, gt as validateSessionsDeleteParams, h as validateChannelsStatusParams, ht as validateSessionsCompactParams, i as validateAgentParams, it as validateNodeListParams, j as validateCronStatusParams, jt as validateToolsStatusParams, k as validateCronRunParams, kt as validateTelegramValidateTokenParams, l as validateAgentsFilesListParams, lt as validateNodePairVerifyParams, m as validateChannelsLogoutParams, mt as validateSendParams, n as formatValidationErrors, nt as validateNodeInvokeParams, o as validateAgentsCreateParams, ot as validateNodePairListParams, p as validateAgentsUpdateParams, pt as validateRequestFrame, q as validateMeshPlanAutoParams, qt as normalizeDevicePublicKeyBase64Url, r as validateAgentIdentityParams, rt as validateNodeInvokeResultParams, s as validateAgentsDeleteParams, st as validateNodePairRejectParams, tt as validateNodeEventParams, u as validateAgentsFilesSetParams, ut as validateNodeRenameParams, v as validateChatInjectParams, vt as validateSessionsPatchParams, w as validateConfigSetParams, wt as validateSkillsInstallParams, x as validateConfigGetParams, xt as validateSessionsResolveParams, y as validateChatSendParams, yt as validateSessionsPreviewParams, z as validateDiscordValidateTokenParams, zt as validateWizardStartParams } from "./client-D2G3F-qm.js";
58
- import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-CKivy66e.js";
58
+ import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-Cv9JOMB9.js";
59
59
  import { i as isExternalHookSession, n as detectSuspiciousPatterns, r as getHookType, t as buildSafeExternalPrompt } from "./external-content-Css-cJoz.js";
60
60
  import { t as formatDocsLink } from "./links-XaZTa0pi.js";
61
61
  import { n as runCommandWithRuntime } from "./cli-utils-Cg2c3XDf.js";
@@ -63,20 +63,20 @@ import { t as formatHelpExamples } from "./help-format-D20I7z1G.js";
63
63
  import { n as withProgress } from "./progress-Dai1njDG.js";
64
64
  import { t as getChannelActivity } from "./channel-activity-mLVM0GeJ.js";
65
65
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-DkFd6DjM.js";
66
- import { a as resolveGroupToolPolicy, i as resolveEffectiveToolPolicy, o as resolveSubagentToolPolicy, t as listAgentWorkspaceDirs } from "./workspace-dirs-CBjbBiRa.js";
66
+ import { a as resolveGroupToolPolicy, i as resolveEffectiveToolPolicy, o as resolveSubagentToolPolicy, t as listAgentWorkspaceDirs } from "./workspace-dirs-7j25QnoW.js";
67
67
  import { r as recallMemories, t as configureMemorySink } from "./memory-sink-D19pkCCX.js";
68
68
  import { t as KnowledgeGraphSession } from "./knowledge-graph-pXjPijn6.js";
69
69
  import { n as resolveModel } from "./model-BXSqE87X.js";
70
70
  import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-D-vzOkTS.js";
71
71
  import { n as formatTokenCount, r as formatUsd } from "./usage-format--dK3YoXf.js";
72
72
  import { a as markGatewaySigusr1RestartHandled, c as setPreRestartDeferralCheck, i as isGatewaySigusr1RestartExternallyAllowed, n as deferGatewayRestartUntilIdle, o as scheduleGatewaySigusr1Restart, r as emitGatewayRestart, s as setGatewaySigusr1RestartPolicy, t as consumeGatewaySigusr1RestartAuthorization } from "./restart-CrIJvqAZ.js";
73
- import { a as areHeartbeatsEnabled, c as setHeartbeatsEnabled, i as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as resolveHeartbeatVisibility } from "./health-B8RawP7b.js";
73
+ import { a as areHeartbeatsEnabled, c as setHeartbeatsEnabled, i as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as resolveHeartbeatVisibility } from "./health-CMSekzYP.js";
74
74
  import { n as getLastHeartbeatEvent, r as onHeartbeatEvent } from "./heartbeat-events-CNb7CXLY.js";
75
- import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, s as normalizePollInput, t as resolveOutboundSessionRoute } from "./outbound-session-CDWwaggL.js";
76
- import { a as computeBackoff, n as resolveChannelSenderIdentity, o as sleepWithAbort, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-DMYpa9nO.js";
75
+ import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, s as normalizePollInput, t as resolveOutboundSessionRoute } from "./outbound-session-DAvju8aE.js";
76
+ import { a as computeBackoff, n as resolveChannelSenderIdentity, o as sleepWithAbort, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-DaqS3OL8.js";
77
77
  import { n as handleHubAssignmentChanged, r as initUserSubsystem, t as getActiveUserSubsystem } from "./server-startup-users-BPNhajYB.js";
78
78
  import { t as mapRoleToScopes } from "./types-Utz3c3Qq.js";
79
- import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-OtLVxtqA.js";
79
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-dnIzvRTI.js";
80
80
  import { t as ensureMinionCliOnPath } from "./path-env-q2qzs5In.js";
81
81
  import { t as forceFreePortAndWait } from "./ports-CRi_UQIX.js";
82
82
  import { t as buildChannelUiCatalog } from "./catalog-Pmvum_mS.js";
@@ -87,41 +87,41 @@ import { a as normalizeOptionalAgentId, c as normalizePayloadToSystemText, d as
87
87
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BlvVswOf.js";
88
88
  import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-fbAWH01I.js";
89
89
  import { n as setHubRest } from "./hub-rest-registry-DQyDHHy2.js";
90
- import { o as normalizeReplyPayloadsForDelivery, s as loadChannelOutboundAdapter, t as deliverOutboundPayloads } from "./deliver-Ckze82mh.js";
91
- import { n as resolveMessageChannelSelection } from "./channel-selection-DlUXGnzg.js";
92
- import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-CUJ4eMri.js";
90
+ import { o as normalizeReplyPayloadsForDelivery, s as loadChannelOutboundAdapter, t as deliverOutboundPayloads } from "./deliver-C97xbDFj.js";
91
+ import { n as resolveMessageChannelSelection } from "./channel-selection-BTmIs82T.js";
92
+ import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-BlC5YTeo.js";
93
93
  import { a as runAggregation, n as executeOrchestration, r as readStatusJson, t as executePipeline } from "./orchestration-pipeline-BBscBgru.js";
94
94
  import { r as readManifest, t as completeManifest } from "./orchestration-manifest-ByxGsjSI.js";
95
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BomzHVkf.js";
96
- import { t as createBrowserRouteDispatcher } from "./dispatcher-CmOeTrK_.js";
95
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-B4NmPTp4.js";
96
+ import { t as createBrowserRouteDispatcher } from "./dispatcher-Dpk5Q-if.js";
97
97
  import { n as persistBrowserProxyFiles, t as applyBrowserProxyPaths } from "./proxy-files-CGzbQD6b.js";
98
98
  import { r as cachedJson } from "./ttl-cache-C8H9R9LT.js";
99
99
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-C1Fg_5xy.js";
100
100
  import { n as inheritOptionFromParent } from "./command-options-Dhjl7AMa.js";
101
101
  import { t as WizardCancelledError } from "./prompts-E0FayNjJ.js";
102
102
  import { t as resolveChannelDefaultAccountId } from "./helpers-BcEbnHmz.js";
103
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BhGucCgt.js";
103
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-C1841BQR.js";
104
104
  import { t as buildChannelAccountSnapshot } from "./status-Dg720jp3.js";
105
- import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-BeTBv9NV.js";
106
- import "./onboard-helpers-CmQBiGjp.js";
105
+ import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-CLTVAIAP.js";
106
+ import "./onboard-helpers-DobA9gFL.js";
107
107
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Qux811Cp.js";
108
108
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BwC8GE-s.js";
109
109
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-NB0c0sCF.js";
110
110
  import { t as installSkill } from "./skills-install-FagnOGmD.js";
111
111
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-C2cJYDtd.js";
112
- import { m as parsePort$1 } from "./lifecycle-core-DfqLUBMA.js";
113
- import { n as addGatewayServiceCommands } from "./daemon-cli-am9lVfde.js";
112
+ import { m as parsePort$1 } from "./lifecycle-core-D1qgiAnW.js";
113
+ import { n as addGatewayServiceCommands } from "./daemon-cli-BIyeWSo9.js";
114
114
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CwLlNhTt.js";
115
- import { a as resolveNodeCommandAllowlist, i as isNodeCommandAllowed, o as probeGateway } from "./audit-BJ-z-LVb.js";
116
- import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-DLQ6qhVR.js";
115
+ import { a as resolveNodeCommandAllowlist, i as isNodeCommandAllowed, o as probeGateway } from "./audit-bz0y9XAh.js";
116
+ import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-V-A_EQLj.js";
117
117
  import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-Bx-oG--O.js";
118
118
  import { i as initCrypto, n as ProbeRegistry, r as SecretsManager, t as SecretStore } from "./store-J0lVAVgk.js";
119
- import { t as runOnboardingWizard } from "./onboarding-CquDb4Ko.js";
120
- import { a as normalizeRpcAttachmentsToChatAttachments, c as logWs, d as setGatewayWsLogStyle, i as sendApnsBackgroundWake, l as shouldLogWs, o as parseMessageWithAttachments, r as resolveApnsAuthConfigFromEnv, s as formatForLog, t as loadApnsRegistration, u as summarizeAgentEventForWsLog } from "./push-apns-D08TcbbK.js";
121
- import { h as resolveGmailPullRuntimeConfig } from "./gmail-DgNp3YYe.js";
119
+ import { t as runOnboardingWizard } from "./onboarding-BOHF-KyS.js";
120
+ import { a as normalizeRpcAttachmentsToChatAttachments, c as logWs, d as setGatewayWsLogStyle, i as sendApnsBackgroundWake, l as shouldLogWs, o as parseMessageWithAttachments, r as resolveApnsAuthConfigFromEnv, s as formatForLog, t as loadApnsRegistration, u as summarizeAgentEventForWsLog } from "./push-apns-DnLzbtEB.js";
121
+ import { h as resolveGmailPullRuntimeConfig } from "./gmail-DyzUUJJc.js";
122
122
  import { t as createOutboundSendDeps$1 } from "./outbound-send-deps-BF7Fp5DR.js";
123
123
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-Bkv5OgWh.js";
124
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-PiFxVqHJ.js";
124
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-r19IQe9R.js";
125
125
  import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-BRxsVIll.js";
126
126
  import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-fhvkz2W3.js";
127
127
  import { n as setEmbedConcurrency } from "./qmd-embed-semaphore-BI3_fJ4u.js";
@@ -1379,7 +1379,7 @@ async function stripLegacyConfigOverrides(cfg, stateDir, log) {
1379
1379
  * Orchestration event bus — typed EventEmitter for orchestration progress
1380
1380
  * with auto-cleanup on completion and optional gateway bridge.
1381
1381
  */
1382
- const log$29 = createSubsystemLogger("orchestration-events");
1382
+ const log$30 = createSubsystemLogger("orchestration-events");
1383
1383
  var OrchestrationEventBus = class {
1384
1384
  constructor() {
1385
1385
  this.listeners = /* @__PURE__ */ new Map();
@@ -1477,7 +1477,7 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
1477
1477
  if (manifest.status === "running") {
1478
1478
  completeManifest(orchestrationDir, "interrupted");
1479
1479
  interrupted.push(manifest.orchestrationId);
1480
- log$29.info(`crash recovery: marked orchestration ${manifest.orchestrationId} as interrupted`);
1480
+ log$30.info(`crash recovery: marked orchestration ${manifest.orchestrationId} as interrupted`);
1481
1481
  }
1482
1482
  }
1483
1483
  }
@@ -1485,7 +1485,7 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
1485
1485
  }
1486
1486
  //#endregion
1487
1487
  //#region src/infra/exec-approval-forwarder.ts
1488
- const log$28 = createSubsystemLogger("gateway/exec-approvals");
1488
+ const log$29 = createSubsystemLogger("gateway/exec-approvals");
1489
1489
  const DEFAULT_MODE = "session";
1490
1490
  function normalizeMode(mode) {
1491
1491
  return mode ?? DEFAULT_MODE;
@@ -1603,7 +1603,7 @@ async function deliverToTargets(params) {
1603
1603
  payloads: [{ text: params.text }]
1604
1604
  });
1605
1605
  } catch (err) {
1606
- log$28.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1606
+ log$29.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1607
1607
  }
1608
1608
  });
1609
1609
  await Promise.allSettled(deliveries);
@@ -3216,7 +3216,7 @@ async function validateGatewayJwt(token, config) {
3216
3216
  }
3217
3217
  //#endregion
3218
3218
  //#region src/gateway/channel-health-monitor.ts
3219
- const log$27 = createSubsystemLogger("gateway/health-monitor");
3219
+ const log$28 = createSubsystemLogger("gateway/health-monitor");
3220
3220
  const DEFAULT_CHECK_INTERVAL_MS$1 = 5 * 6e4;
3221
3221
  const DEFAULT_STARTUP_GRACE_MS = 6e4;
3222
3222
  const DEFAULT_COOLDOWN_CYCLES = 2;
@@ -3266,11 +3266,11 @@ function startChannelHealthMonitor(deps) {
3266
3266
  if (now - record.lastRestartAt <= cooldownMs) continue;
3267
3267
  pruneOldRestarts(record, now);
3268
3268
  if (record.restartsThisHour.length >= maxRestartsPerHour) {
3269
- log$27.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
3269
+ log$28.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
3270
3270
  continue;
3271
3271
  }
3272
3272
  const reason = !status.running ? status.reconnectAttempts && status.reconnectAttempts >= 10 ? "gave-up" : "stopped" : "stuck";
3273
- log$27.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
3273
+ log$28.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
3274
3274
  try {
3275
3275
  if (status.running) await channelManager.stopChannel(channelId, accountId);
3276
3276
  channelManager.resetRestartAttempts(channelId, accountId);
@@ -3279,7 +3279,7 @@ function startChannelHealthMonitor(deps) {
3279
3279
  record.restartsThisHour.push({ at: now });
3280
3280
  restartRecords.set(key, record);
3281
3281
  } catch (err) {
3282
- log$27.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
3282
+ log$28.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
3283
3283
  }
3284
3284
  }
3285
3285
  }
@@ -3299,7 +3299,7 @@ function startChannelHealthMonitor(deps) {
3299
3299
  abortSignal?.addEventListener("abort", stop, { once: true });
3300
3300
  timer = setInterval(() => void runCheck(), checkIntervalMs);
3301
3301
  if (typeof timer === "object" && "unref" in timer) timer.unref();
3302
- log$27.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
3302
+ log$28.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
3303
3303
  }
3304
3304
  return { stop };
3305
3305
  }
@@ -3319,7 +3319,7 @@ function startChannelHealthMonitor(deps) {
3319
3319
  * compare) before any phase flips dispatch to the mirror. whatsapp + telegram compare
3320
3320
  * fully; discord is compare-deferred. See specs/2026-06-26-gateway-config-db-migration-plan.md.
3321
3321
  */
3322
- const log$26 = createSubsystemLogger("channel-mirror");
3322
+ const log$27 = createSubsystemLogger("channel-mirror");
3323
3323
  /** The gateway's live (gateway.json-resolved) comparable projection for an account.
3324
3324
  * Type-aware: whatsapp + telegram resolve cleanly; discord's per-guild/channel model
3325
3325
  * has no flat account projection → returns null (compare deferred, logged honestly). */
@@ -3378,7 +3378,7 @@ async function channelMirrorCompareFromTags(tags) {
3378
3378
  try {
3379
3379
  await seedMirror();
3380
3380
  } catch (err) {
3381
- log$26.warn(`mirror refresh on signal failed: ${String(err)}`);
3381
+ log$27.warn(`mirror refresh on signal failed: ${String(err)}`);
3382
3382
  }
3383
3383
  const affectedTypes = /* @__PURE__ */ new Set();
3384
3384
  for (const tag of channelTags) {
@@ -3390,7 +3390,7 @@ async function channelMirrorCompareFromTags(tags) {
3390
3390
  try {
3391
3391
  compareOne(type, accountId);
3392
3392
  } catch (err) {
3393
- log$26.warn(`compare failed for ${tag}: ${String(err)}`);
3393
+ log$27.warn(`compare failed for ${tag}: ${String(err)}`);
3394
3394
  }
3395
3395
  }
3396
3396
  for (const type of affectedTypes) await applyChannelRestart(type);
@@ -3399,18 +3399,18 @@ async function channelMirrorCompareFromTags(tags) {
3399
3399
  function compareOne(type, accountId) {
3400
3400
  const entry = getMirrorEntry(type, accountId);
3401
3401
  if (!entry) {
3402
- log$26.info(`signal for ${type}:${accountId}: not in mirror (Valkey/hub hydrate empty)`);
3402
+ log$27.info(`signal for ${type}:${accountId}: not in mirror (Valkey/hub hydrate empty)`);
3403
3403
  return;
3404
3404
  }
3405
3405
  const shadow = entry.projection;
3406
3406
  const live = liveProjection(type, accountId);
3407
3407
  if (!live) {
3408
- log$26.info(`signal for ${type}:${accountId}: no live comparable (new account or compare-deferred type) [observe-only]`);
3408
+ log$27.info(`signal for ${type}:${accountId}: no live comparable (new account or compare-deferred type) [observe-only]`);
3409
3409
  return;
3410
3410
  }
3411
3411
  const diff = diffFields(shadow, live);
3412
3412
  const intended = shadow.enabled ? live.enabled ? "noop(running)" : "START" : "STOP";
3413
- log$26.info(`mirror ${type}:${accountId}: diff=[${diff.join(",") || "none"}] intended=${intended} shadow=${JSON.stringify(shadow)} live=${JSON.stringify(live)} [observe-only]`);
3413
+ log$27.info(`mirror ${type}:${accountId}: diff=[${diff.join(",") || "none"}] intended=${intended} shadow=${JSON.stringify(shadow)} live=${JSON.stringify(live)} [observe-only]`);
3414
3414
  }
3415
3415
  /**
3416
3416
  * Boot parity check: read the seeded mirror snapshot and log how many accounts diverge
@@ -3430,10 +3430,10 @@ async function channelMirrorBootParity() {
3430
3430
  }
3431
3431
  if (diffFields(projection, live).length > 0) diffs += 1;
3432
3432
  }
3433
- log$26.info(`boot hydration: ${shadows.size} accounts from hub, ${diffs} diff(s), ${deferred} deferred vs gateway.json [observe-only]`);
3434
- log$26.info(`boot hydration keys: [${Array.from(shadows.keys()).sort().join(", ")}]`);
3433
+ log$27.info(`boot hydration: ${shadows.size} accounts from hub, ${diffs} diff(s), ${deferred} deferred vs gateway.json [observe-only]`);
3434
+ log$27.info(`boot hydration keys: [${Array.from(shadows.keys()).sort().join(", ")}]`);
3435
3435
  } catch (err) {
3436
- log$26.warn(`boot hydration parity failed: ${String(err)}`);
3436
+ log$27.warn(`boot hydration parity failed: ${String(err)}`);
3437
3437
  }
3438
3438
  }
3439
3439
  //#endregion
@@ -3933,7 +3933,7 @@ var ExecApprovalManager = class {
3933
3933
  * Opens the SQLite database, applies WAL pragmas, and runs the
3934
3934
  * 004_free_tier_users migration. Returns the DatabaseSync instance.
3935
3935
  */
3936
- const log$25 = createSubsystemLogger("free-tier/db");
3936
+ const log$26 = createSubsystemLogger("free-tier/db");
3937
3937
  const MIGRATION_SQL_PATH = join(dirname(fileURLToPath(import.meta.url)), "../../db/migrations/004_free_tier_users.sql");
3938
3938
  function openFreeTierDb(dbPath) {
3939
3939
  const { DatabaseSync } = requireNodeSqlite();
@@ -3942,9 +3942,9 @@ function openFreeTierDb(dbPath) {
3942
3942
  try {
3943
3943
  const sql = readFileSync(MIGRATION_SQL_PATH, "utf8");
3944
3944
  db.exec(sql);
3945
- log$25.info("free-tier DB migration applied", { dbPath });
3945
+ log$26.info("free-tier DB migration applied", { dbPath });
3946
3946
  } catch (err) {
3947
- log$25.error("free-tier DB migration failed", {
3947
+ log$26.error("free-tier DB migration failed", {
3948
3948
  dbPath,
3949
3949
  error: String(err)
3950
3950
  });
@@ -4084,13 +4084,13 @@ var UserRepository = class {
4084
4084
  };
4085
4085
  //#endregion
4086
4086
  //#region src/gateway/free-tier/email.ts
4087
- const log$24 = createSubsystemLogger("free-tier/email");
4087
+ const log$25 = createSubsystemLogger("free-tier/email");
4088
4088
  const RESEND_API = "https://api.resend.com/emails";
4089
4089
  const FROM = "OpenClaw <noreply@minion.ai>";
4090
4090
  async function send$1(to, subject, html) {
4091
4091
  const apiKey = process.env["RESEND_API_KEY"];
4092
4092
  if (!apiKey) {
4093
- log$24.warn("RESEND_API_KEY not set — email not sent", {
4093
+ log$25.warn("RESEND_API_KEY not set — email not sent", {
4094
4094
  to,
4095
4095
  subject
4096
4096
  });
@@ -4111,7 +4111,7 @@ async function send$1(to, subject, html) {
4111
4111
  });
4112
4112
  if (!res.ok) {
4113
4113
  const text = await res.text().catch(() => "");
4114
- log$24.error("Resend API error", {
4114
+ log$25.error("Resend API error", {
4115
4115
  status: res.status,
4116
4116
  body: text
4117
4117
  });
@@ -4124,7 +4124,7 @@ async function sendVerificationEmail(email, token, baseUrl) {
4124
4124
  }
4125
4125
  //#endregion
4126
4126
  //#region src/gateway/free-tier/auth-http.ts
4127
- const log$23 = createSubsystemLogger("free-tier/auth");
4127
+ const log$24 = createSubsystemLogger("free-tier/auth");
4128
4128
  function json$1(res, status, body) {
4129
4129
  res.statusCode = status;
4130
4130
  res.setHeader("Content-Type", "application/json; charset=utf-8");
@@ -4186,7 +4186,7 @@ async function handleSignup(req, res, users) {
4186
4186
  passwordHash
4187
4187
  });
4188
4188
  await sendVerificationEmail(email, verifyToken, process.env["HUB_BASE_URL"] ?? "https://hub.minion.ai").catch((e) => {
4189
- log$23.error("failed to send verification email", {
4189
+ log$24.error("failed to send verification email", {
4190
4190
  userId: user.id,
4191
4191
  error: String(e)
4192
4192
  });
@@ -4519,7 +4519,7 @@ function createFreeTierApiHandler(db) {
4519
4519
  *
4520
4520
  * @module
4521
4521
  */
4522
- const log$22 = createSubsystemLogger("gateway/metrics");
4522
+ const log$23 = createSubsystemLogger("gateway/metrics");
4523
4523
  /** Cap on retained latency samples per method (reservoir) to bound memory. */
4524
4524
  const MAX_SAMPLES_PER_METHOD = 512;
4525
4525
  /** Default snapshot window. Matches the reliability rate-limiter granularity. */
@@ -4633,7 +4633,7 @@ function startGatewayRequestMetrics(opts) {
4633
4633
  eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
4634
4634
  eventLoopHist.enable();
4635
4635
  } catch (err) {
4636
- log$22.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
4636
+ log$23.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
4637
4637
  eventLoopHist = null;
4638
4638
  }
4639
4639
  windowStartMs = Date.now();
@@ -4642,7 +4642,7 @@ function startGatewayRequestMetrics(opts) {
4642
4642
  try {
4643
4643
  emitSnapshot(now - windowStartMs);
4644
4644
  } catch (err) {
4645
- log$22.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
4645
+ log$23.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
4646
4646
  }
4647
4647
  methodStats.clear();
4648
4648
  eventLoopHist?.reset();
@@ -5815,7 +5815,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
5815
5815
  *
5816
5816
  * See specs/2026-05-22-gateway-turn-recovery.md.
5817
5817
  */
5818
- const log$21 = createSubsystemLogger("agents/in-flight-turns");
5818
+ const log$22 = createSubsystemLogger("agents/in-flight-turns");
5819
5819
  const STALE_AFTER_MS = 1800 * 1e3;
5820
5820
  const MAX_RECOVERY_ATTEMPTS = 2;
5821
5821
  const APOLOGY_SEND_TIMEOUT_MS = 3e3;
@@ -5848,7 +5848,7 @@ async function sendApology(cfg, row) {
5848
5848
  });
5849
5849
  return await Promise.race([send, timeout]);
5850
5850
  } catch (err) {
5851
- log$21.warn(`apology send failed for ${row.channel}:${row.chatId}: ${String(err)}`);
5851
+ log$22.warn(`apology send failed for ${row.channel}:${row.chatId}: ${String(err)}`);
5852
5852
  return false;
5853
5853
  } finally {
5854
5854
  if (timer) clearTimeout(timer);
@@ -5873,14 +5873,14 @@ async function recoverInterruptedTurns(deps) {
5873
5873
  if (isStale || looped) {
5874
5874
  deleteRow(row.id);
5875
5875
  summary.dropped++;
5876
- log$21.info(`dropped row ${row.id} (${isStale ? "stale" : "loop guard"}): ${row.channel}:${row.chatId} agent=${row.agentId}`);
5876
+ log$22.info(`dropped row ${row.id} (${isStale ? "stale" : "loop guard"}): ${row.channel}:${row.chatId} agent=${row.agentId}`);
5877
5877
  continue;
5878
5878
  }
5879
5879
  markRecoveryAttempt(row.id);
5880
5880
  if (await sendApology(deps.cfg, row)) summary.apologized++;
5881
5881
  deleteRow(row.id);
5882
5882
  }
5883
- log$21.info(`recovery scanned=${summary.scanned} apologized=${summary.apologized} dropped=${summary.dropped}`);
5883
+ log$22.info(`recovery scanned=${summary.scanned} apologized=${summary.apologized} dropped=${summary.dropped}`);
5884
5884
  return summary;
5885
5885
  }
5886
5886
  /**
@@ -5903,7 +5903,7 @@ async function drainInFlightTurns(deps) {
5903
5903
  deleteRow(row.id);
5904
5904
  }
5905
5905
  }
5906
- log$21.info(`drain drained=${summary.drained} apologized=${summary.apologized}`);
5906
+ log$22.info(`drain drained=${summary.drained} apologized=${summary.apologized}`);
5907
5907
  return summary;
5908
5908
  }
5909
5909
  //#endregion
@@ -5932,7 +5932,7 @@ async function drainInFlightTurns(deps) {
5932
5932
  *
5933
5933
  * Spec: specs/2026-06-11-gog-nuke-execution-plan.md (Phase D)
5934
5934
  */
5935
- const log$20 = createSubsystemLogger("gmail-gws");
5935
+ const log$21 = createSubsystemLogger("gmail-gws");
5936
5936
  /**
5937
5937
  * Run a `gws gmail …` command with the watcher's Gmail credentials file
5938
5938
  * injected. Returns parsed JSON on success. A non-zero exit is surfaced as
@@ -6013,7 +6013,7 @@ async function registerWatch(opts) {
6013
6013
  error: "users.watch response missing historyId"
6014
6014
  };
6015
6015
  const expiration = data.expiration != null && Number.isFinite(Number(data.expiration)) ? Number(data.expiration) : void 0;
6016
- log$20.info(`watch registered (historyId=${historyId}, expiration=${expiration ?? "?"})`);
6016
+ log$21.info(`watch registered (historyId=${historyId}, expiration=${expiration ?? "?"})`);
6017
6017
  return {
6018
6018
  ok: true,
6019
6019
  historyId,
@@ -6147,7 +6147,7 @@ async function getMessage(opts) {
6147
6147
  timeoutMs: opts.timeoutMs ?? 6e4
6148
6148
  });
6149
6149
  if (!res.ok) {
6150
- log$20.warn(`messages.get ${opts.id} failed: ${res.error}`);
6150
+ log$21.warn(`messages.get ${opts.id} failed: ${res.error}`);
6151
6151
  return null;
6152
6152
  }
6153
6153
  return parseGmailMessage(res.data, {
@@ -6228,6 +6228,177 @@ function truncateUtf8(value, maxBytes) {
6228
6228
  return `${text}…`;
6229
6229
  }
6230
6230
  //#endregion
6231
+ //#region src/hooks/gmail-auto-label.ts
6232
+ /**
6233
+ * AI auto-labeling for the Gmail pull watcher.
6234
+ *
6235
+ * As Pub/Sub notifications deliver new messages, each one is classified by a
6236
+ * schema-output drone (same primitive as the personal-agent email summaries —
6237
+ * works on OpenRouter-only deployments) into ONE of the configured labels,
6238
+ * and that Gmail label is applied via `gws gmail users messages modify`.
6239
+ *
6240
+ * Labels are resolved name → id via `users labels list` and created on first
6241
+ * use (`users labels create`), cached per credentials file. Applying a label
6242
+ * is idempotent (addLabelIds), so a redelivered notification re-labels
6243
+ * harmlessly.
6244
+ *
6245
+ * Everything here is best-effort: a classify or gws failure logs and skips
6246
+ * the message — it never blocks the watcher's history baseline from
6247
+ * advancing. Requires the watched account's token to hold gmail.modify scope
6248
+ * (a 403 here means the account must be re-linked with the current scopes).
6249
+ */
6250
+ const log$20 = createSubsystemLogger("gmail-auto-label");
6251
+ const classifyDrone = defineDrone({
6252
+ id: "gmail-auto-label",
6253
+ description: "Classifies an incoming email into one configured Gmail label.",
6254
+ systemPrompt: "You label incoming email for a small-business inbox. Given the allowed labels with their meanings and one email, answer with exactly one label name — the best fit — or \"none\" when no label clearly applies. Never invent labels not in the list.",
6255
+ model: {
6256
+ provider: "anthropic",
6257
+ model: "claude-haiku-4-5"
6258
+ },
6259
+ output: Type.Object({ label: Type.String({ description: "Exactly one of the allowed label names (verbatim), or \"none\" when no label clearly applies." }) }),
6260
+ timeoutMs: 15e3
6261
+ });
6262
+ /** Cap what we feed the classifier — triage metadata + a body slice is plenty. */
6263
+ const BODY_CHARS_FOR_CLASSIFY = 2e3;
6264
+ /** Build the classify prompt for one message. Exported for tests. */
6265
+ function buildClassifyPrompt(msg, labels) {
6266
+ const lines = [
6267
+ "Allowed labels:",
6268
+ ...labels.map((l) => `- ${l.name}${l.description ? `: ${l.description}` : ""}`),
6269
+ "",
6270
+ `From: ${msg.from}`,
6271
+ `Subject: ${msg.subject}`
6272
+ ];
6273
+ const preview = (msg.body || msg.snippet || "").slice(0, BODY_CHARS_FOR_CLASSIFY).trim();
6274
+ if (preview) lines.push("", preview);
6275
+ return lines.join("\n");
6276
+ }
6277
+ /**
6278
+ * Match the drone's answer against the configured rules. Case-insensitive;
6279
+ * returns the canonical configured name, or null for "none"/unknown answers.
6280
+ * Exported for tests.
6281
+ */
6282
+ function matchLabel(raw, labels) {
6283
+ const answer = raw.trim().toLowerCase();
6284
+ if (!answer || answer === "none") return null;
6285
+ return labels.find((l) => l.name.trim().toLowerCase() === answer)?.name ?? null;
6286
+ }
6287
+ const labelCaches = /* @__PURE__ */ new Map();
6288
+ async function loadLabelCache(credentialsFile) {
6289
+ const res = await runGwsGmail([
6290
+ "gmail",
6291
+ "users",
6292
+ "labels",
6293
+ "list",
6294
+ "--params",
6295
+ JSON.stringify({ userId: "me" })
6296
+ ], {
6297
+ credentialsFile,
6298
+ timeoutMs: 3e4
6299
+ });
6300
+ if (!res.ok) {
6301
+ log$20.warn(`labels.list failed: ${res.error}`);
6302
+ return null;
6303
+ }
6304
+ const cache = /* @__PURE__ */ new Map();
6305
+ for (const label of res.data.labels ?? []) if (label.id && label.name) cache.set(label.name.trim().toLowerCase(), label.id);
6306
+ return cache;
6307
+ }
6308
+ async function createLabel(credentialsFile, name) {
6309
+ const res = await runGwsGmail([
6310
+ "gmail",
6311
+ "users",
6312
+ "labels",
6313
+ "create",
6314
+ "--params",
6315
+ JSON.stringify({ userId: "me" }),
6316
+ "--json",
6317
+ JSON.stringify({
6318
+ name,
6319
+ labelListVisibility: "labelShow",
6320
+ messageListVisibility: "show"
6321
+ })
6322
+ ], {
6323
+ credentialsFile,
6324
+ timeoutMs: 3e4
6325
+ });
6326
+ if (!res.ok) {
6327
+ log$20.warn(`labels.create "${name}" failed: ${res.error}`);
6328
+ return null;
6329
+ }
6330
+ return res.data.id ?? null;
6331
+ }
6332
+ /** Resolve a label name to its Gmail id, creating the label on first use. */
6333
+ async function ensureLabelId(credentialsFile, name) {
6334
+ let cache = labelCaches.get(credentialsFile);
6335
+ if (!cache) {
6336
+ const loaded = await loadLabelCache(credentialsFile);
6337
+ if (!loaded) return null;
6338
+ cache = loaded;
6339
+ labelCaches.set(credentialsFile, cache);
6340
+ }
6341
+ const key = name.trim().toLowerCase();
6342
+ const existing = cache.get(key);
6343
+ if (existing) return existing;
6344
+ const created = await createLabel(credentialsFile, name);
6345
+ if (created) cache.set(key, created);
6346
+ return created;
6347
+ }
6348
+ async function applyLabel(credentialsFile, messageId, labelId) {
6349
+ const res = await runGwsGmail([
6350
+ "gmail",
6351
+ "users",
6352
+ "messages",
6353
+ "modify",
6354
+ "--params",
6355
+ JSON.stringify({
6356
+ userId: "me",
6357
+ id: messageId
6358
+ }),
6359
+ "--json",
6360
+ JSON.stringify({ addLabelIds: [labelId] })
6361
+ ], {
6362
+ credentialsFile,
6363
+ timeoutMs: 3e4
6364
+ });
6365
+ if (!res.ok) {
6366
+ log$20.warn(`messages.modify ${messageId} failed: ${res.error}`);
6367
+ return false;
6368
+ }
6369
+ return true;
6370
+ }
6371
+ async function classifyWithDrone(prompt) {
6372
+ const result = await runDrone(classifyDrone, { prompt }, createGatewayDroneHost());
6373
+ if (!result.ok) {
6374
+ log$20.debug(`classify drone failed: ${result.error.code} ${result.error.message}`);
6375
+ return null;
6376
+ }
6377
+ return result.data.label;
6378
+ }
6379
+ /**
6380
+ * Classify + label a batch of freshly delivered messages. Never throws;
6381
+ * per-message failures are logged and skipped. `classify` is injectable for
6382
+ * tests and defaults to the Haiku drone.
6383
+ */
6384
+ async function autoLabelMessages(opts) {
6385
+ const classify = opts.classify ?? classifyWithDrone;
6386
+ for (const msg of opts.messages) try {
6387
+ const answer = await classify(buildClassifyPrompt(msg, opts.labels));
6388
+ if (answer === null) continue;
6389
+ const name = matchLabel(answer, opts.labels);
6390
+ if (!name) {
6391
+ log$20.debug(`no label for ${msg.id} (classifier said "${answer}")`);
6392
+ continue;
6393
+ }
6394
+ const labelId = await ensureLabelId(opts.credentialsFile, name);
6395
+ if (!labelId) continue;
6396
+ if (await applyLabel(opts.credentialsFile, msg.id, labelId)) log$20.info(`labeled ${msg.id} as "${name}"`);
6397
+ } catch (err) {
6398
+ log$20.warn(`auto-label failed for ${msg.id}: ${String(err)}`);
6399
+ }
6400
+ }
6401
+ //#endregion
6231
6402
  //#region src/hooks/gmail-history-state.ts
6232
6403
  /**
6233
6404
  * Durable historyId persistence for the Gmail pull watcher.
@@ -6516,12 +6687,17 @@ async function syncOnce(notification) {
6516
6687
  if (msg) messages.push(msg);
6517
6688
  }
6518
6689
  if (messages.length > 0) {
6519
- if (!await postToHook(cfg, messages)) {
6690
+ if (cfg.autoLabel.enabled) await autoLabelMessages({
6691
+ credentialsFile: cfg.credentialsFile,
6692
+ labels: cfg.autoLabel.labels,
6693
+ messages
6694
+ });
6695
+ if (!(cfg.deliver ? await postToHook(cfg, messages) : true)) {
6520
6696
  log$17.warn("hook POST failed; will retry on next notification");
6521
6697
  return;
6522
6698
  }
6523
6699
  for (const msg of messages) rememberProcessed(current, msg.id);
6524
- log$17.info(`delivered ${messages.length} message(s) to ${cfg.hookUrl}`);
6700
+ if (cfg.deliver) log$17.info(`delivered ${messages.length} message(s) to ${cfg.hookUrl}`);
6525
6701
  } else for (const id of freshIds) rememberProcessed(current, id);
6526
6702
  advanceHistory(current, history.historyId ?? notification.historyId);
6527
6703
  await saveHistoryId(current.stateDir, cfg.account, current.lastHistoryId);
@@ -6553,19 +6729,34 @@ async function renewWatch() {
6553
6729
  /**
6554
6730
  * POST the normalized payload to the gateway's local `/hooks/gmail` endpoint
6555
6731
  * with the bearer hook token. Returns true on a 2xx response.
6732
+ *
6733
+ * Uses node:http(s) directly instead of global fetch: the default hookUrl is
6734
+ * the gateway POSTing to itself on 127.0.0.1, and undici's process-global
6735
+ * dispatcher state (mutable by other subsystems/extensions) broke that fetch
6736
+ * in production for weeks ("TypeError: fetch failed") while the endpoint was
6737
+ * reachable from every other client.
6556
6738
  */
6557
6739
  async function postToHook(cfg, messages) {
6740
+ const body = JSON.stringify({ messages });
6558
6741
  try {
6559
- const res = await fetch(cfg.hookUrl, {
6560
- method: "POST",
6561
- headers: {
6562
- "content-type": "application/json",
6563
- authorization: `Bearer ${cfg.hookToken}`
6564
- },
6565
- body: JSON.stringify({ messages })
6742
+ const status = await new Promise((resolve, reject) => {
6743
+ const req = (cfg.hookUrl.startsWith("https:") ? https : http).request(cfg.hookUrl, {
6744
+ method: "POST",
6745
+ headers: {
6746
+ "content-type": "application/json",
6747
+ authorization: `Bearer ${cfg.hookToken}`,
6748
+ "content-length": Buffer.byteLength(body)
6749
+ }
6750
+ }, (res) => {
6751
+ res.resume();
6752
+ res.on("end", () => resolve(res.statusCode ?? 0));
6753
+ });
6754
+ req.setTimeout(3e4, () => req.destroy(/* @__PURE__ */ new Error("hook POST timed out")));
6755
+ req.on("error", reject);
6756
+ req.end(body);
6566
6757
  });
6567
- if (!res.ok) {
6568
- log$17.warn(`hook POST returned ${res.status}`);
6758
+ if (status < 200 || status >= 300) {
6759
+ log$17.warn(`hook POST returned ${status}`);
6569
6760
  return false;
6570
6761
  }
6571
6762
  return true;
@@ -19727,7 +19918,7 @@ const nodeHandlers = {
19727
19918
  const p = params;
19728
19919
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
19729
19920
  await respondUnavailableOnThrow(respond, async () => {
19730
- const { handleNodeEvent } = await import("./server-node-events-DE9awsGD.js");
19921
+ const { handleNodeEvent } = await import("./server-node-events-SK_JbV5S.js");
19731
19922
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
19732
19923
  const nodeConnId = client?.connId;
19733
19924
  await handleNodeEvent({
@@ -27503,7 +27694,7 @@ function normalizeAgentPayload(payload) {
27503
27694
  async function startBrowserControlServerIfEnabled() {
27504
27695
  if (isTruthyEnvValue(process.env.MINION_SKIP_BROWSER_CONTROL_SERVER)) return null;
27505
27696
  const override = process.env.MINION_BROWSER_CONTROL_MODULE?.trim();
27506
- const mod = override ? await import(override) : await import("./control-service-BomzHVkf.js").then((n) => n.t);
27697
+ const mod = override ? await import(override) : await import("./control-service-B4NmPTp4.js").then((n) => n.t);
27507
27698
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
27508
27699
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
27509
27700
  if (!start) return null;
@@ -33465,7 +33656,7 @@ async function deliverFlowReply(sessionKey, reply) {
33465
33656
  }
33466
33657
  try {
33467
33658
  const cfg = loadConfig();
33468
- const { deliverOutboundPayloads } = await import("./deliver-Ckze82mh.js").then((n) => n.n);
33659
+ const { deliverOutboundPayloads } = await import("./deliver-C97xbDFj.js").then((n) => n.n);
33469
33660
  await deliverOutboundPayloads({
33470
33661
  cfg,
33471
33662
  channel: target.channel,
@@ -37184,7 +37375,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
37184
37375
  }
37185
37376
  if (!minimalTestGateway) (async () => {
37186
37377
  const { recoverPendingDeliveries } = await import("./delivery-queue-BTPlqn4c.js").then((n) => n.n);
37187
- const { deliverOutboundPayloads } = await import("./deliver-Ckze82mh.js").then((n) => n.n);
37378
+ const { deliverOutboundPayloads } = await import("./deliver-C97xbDFj.js").then((n) => n.n);
37188
37379
  await recoverPendingDeliveries({
37189
37380
  deliver: deliverOutboundPayloads,
37190
37381
  log: log.child("delivery-recovery"),