@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
@@ -14,53 +14,53 @@ import { n as getEventStore, r as initEventSystem, t as emitEvent } from "./emit
14
14
  import { t as applySqlitePragmas } from "./sqlite-pragmas-C_o_lU6a.js";
15
15
  import { t as requireNodeSqlite } from "./sqlite-C3xwcWJn.js";
16
16
  import { d as setSentryContext, f as setSentryTag, n as getReliabilityUptimeStartMs, r as initReliability, t as emitReliabilityEvent } from "./reliability-B8aPy4cP.js";
17
- import { $n as setCommandLaneConcurrency, $t as updatePairedNodeMetadata, A as loadMinionPlugins, An as normalizeMimeList, At as buildSystemPromptReport, B as resolveCronStyleNow, Bt as resolveSendPolicy, C as readConsolidationState, D as buildDefaultToolPolicyPipelineSteps, Dt as PROSE_GLOBAL_ROOT, E as applyToolPolicyPipeline, En as DEFAULT_INPUT_IMAGE_MIMES, Et as PromptSectionRegistry, G as debugSkipAll, Gn as resolveAgentIdentity, Gt as refreshRemoteNodeBins, H as setCliSessionId, Ht as primeRemoteSkillsCache, It as requestHeartbeatNow, J as setDebugStepBroadcaster, Jn as resolveBootstrapContextForRun, Jt as approveNodePairing, K as debugStepContinue, Kt as removeRemoteNodeInfo, Ln as resolveUserTimezone, M as dispatchInboundMessage, N as createReplyDispatcher, Nn as transcribeOpenAiCompatibleAudio, O as getPluginToolMeta, On as extractFileContentFromSource, Ot as _clearProseCache, P as getTotalPendingReplies, Pn as formatZonedTimestamp, Qn as resetAllLanes, Qt as requestNodePairing, R as BARE_SESSION_RESET_PROMPT, Rn as isAbortTrigger, S as openInFlightTurnsStore, St as getBuiltinSectionRegistry, Tt as buildToolSummaryMap, U as runCliAgent, Un as clearSessionQueues, Ut as recordRemoteNodeInfo, V as getCliSessionId, Vt as getRemoteSkillEligibility, Wt as refreshRemoteBinsForConnectedNodes, X as createMinionTools, Xt as rejectNodePairing, Y as setSteppedBuild, Yn as getActiveTaskCount, Yt as listNodePairing, Z as TOOL_REGISTRY, Zn as getTotalQueueSize, Zt as renamePairedNode, _ as deleteRow, _n as applyVerboseOverride, an as resolvePairingPaths, ar as onAgentEvent, at as getTemplateCache, b as markInterrupted, bn as isSystemEventContextChanged, cn as createAsyncLock, ct as initTemplateLoader, d as abortEmbeddedPiRun, en as verifyNodeToken, er as waitForActiveTasks, f as getActiveEmbeddedRunCount, g as closeInFlightTurnsStore, gn as applyModelOverrideToSessionEntry, gt as loadProviderUsageSummary, h as registerLifecycleHooks, ht as normalizeGroupActivation, i as listDescendantRunsForRequester, in as pruneExpiredPending, ir as getAgentRunContext, it as getTemplate, j as loadOpenClawPlugins, jn as resolveInputFileLimits, kn as extractImageContentFromSource, kt as buildSystemPromptParams, l as runSubagentAnnounceFlow, ln as getSkillsSnapshotVersion, lt as stopTemplateWatcher, m as waitForEmbeddedPiRunEnd, mn as buildAuthHealthSummary, n as countActiveDescendantRuns, nn as hashToken, nr as clearAgentRunContext, nt as spawnSubagentDirect, on as readJsonFile, or as registerAgentRunContext, ot as getTemplateLoadErrors, p as queueEmbeddedPiMessage, q as isSteppedBuildEnabled, qt as setSkillsRemoteRegistry, r as initSubagentRegistry, rn as verifyPairingToken, rr as emitAgentEvent, rt as getLastReloadAt, s as markSubagentRunTerminated, sn as writeJsonAtomic, st as getTemplateUsageStats, tn as generatePairingToken, tr as resolveAgentTimeoutMs, u as runEmbeddedPiAgent, un as registerSkillsChangeListener, v as listForCurrentInstance, vn as parseVerboseOverride, w as createOpenClawCodingTools, wn as registerUnhandledRejectionHandler, wt as buildSectionRenderContext, x as markRecoveryAttempt, xt as assembleAgentSystemPromptWithSections, y as listFromOtherInstances, yn as enqueueSystemEvent, zn as stopSubagentsForRequester, zt as normalizeSendPolicy } from "./subagent-registry-CW6S0hCt.js";
17
+ import { $n as setCommandLaneConcurrency, $t as updatePairedNodeMetadata, A as loadMinionPlugins, An as normalizeMimeList, At as buildSystemPromptReport, B as resolveCronStyleNow, Bt as resolveSendPolicy, C as readConsolidationState, D as buildDefaultToolPolicyPipelineSteps, Dt as PROSE_GLOBAL_ROOT, E as applyToolPolicyPipeline, En as DEFAULT_INPUT_IMAGE_MIMES, Et as PromptSectionRegistry, G as debugSkipAll, Gn as resolveAgentIdentity, Gt as refreshRemoteNodeBins, H as setCliSessionId, Ht as primeRemoteSkillsCache, It as requestHeartbeatNow, J as setDebugStepBroadcaster, Jn as resolveBootstrapContextForRun, Jt as approveNodePairing, K as debugStepContinue, Kt as removeRemoteNodeInfo, Ln as resolveUserTimezone, M as dispatchInboundMessage, N as createReplyDispatcher, Nn as transcribeOpenAiCompatibleAudio, O as getPluginToolMeta, On as extractFileContentFromSource, Ot as _clearProseCache, P as getTotalPendingReplies, Pn as formatZonedTimestamp, Qn as resetAllLanes, Qt as requestNodePairing, R as BARE_SESSION_RESET_PROMPT, Rn as isAbortTrigger, S as openInFlightTurnsStore, St as getBuiltinSectionRegistry, Tt as buildToolSummaryMap, U as runCliAgent, Un as clearSessionQueues, Ut as recordRemoteNodeInfo, V as getCliSessionId, Vt as getRemoteSkillEligibility, Wt as refreshRemoteBinsForConnectedNodes, X as createMinionTools, Xt as rejectNodePairing, Y as setSteppedBuild, Yn as getActiveTaskCount, Yt as listNodePairing, Z as TOOL_REGISTRY, Zn as getTotalQueueSize, Zt as renamePairedNode, _ as deleteRow, _n as applyVerboseOverride, an as resolvePairingPaths, ar as onAgentEvent, at as getTemplateCache, b as markInterrupted, bn as isSystemEventContextChanged, cn as createAsyncLock, ct as initTemplateLoader, d as abortEmbeddedPiRun, en as verifyNodeToken, er as waitForActiveTasks, f as getActiveEmbeddedRunCount, g as closeInFlightTurnsStore, gn as applyModelOverrideToSessionEntry, gt as loadProviderUsageSummary, h as registerLifecycleHooks, ht as normalizeGroupActivation, i as listDescendantRunsForRequester, in as pruneExpiredPending, ir as getAgentRunContext, it as getTemplate, j as loadOpenClawPlugins, jn as resolveInputFileLimits, kn as extractImageContentFromSource, kt as buildSystemPromptParams, l as runSubagentAnnounceFlow, ln as getSkillsSnapshotVersion, lt as stopTemplateWatcher, m as waitForEmbeddedPiRunEnd, mn as buildAuthHealthSummary, n as countActiveDescendantRuns, nn as hashToken, nr as clearAgentRunContext, nt as spawnSubagentDirect, on as readJsonFile, or as registerAgentRunContext, ot as getTemplateLoadErrors, p as queueEmbeddedPiMessage, q as isSteppedBuildEnabled, qt as setSkillsRemoteRegistry, r as initSubagentRegistry, rn as verifyPairingToken, rr as emitAgentEvent, rt as getLastReloadAt, s as markSubagentRunTerminated, sn as writeJsonAtomic, st as getTemplateUsageStats, tn as generatePairingToken, tr as resolveAgentTimeoutMs, u as runEmbeddedPiAgent, un as registerSkillsChangeListener, v as listForCurrentInstance, vn as parseVerboseOverride, w as createOpenClawCodingTools, wn as registerUnhandledRejectionHandler, wt as buildSectionRenderContext, x as markRecoveryAttempt, xt as assembleAgentSystemPromptWithSections, y as listFromOtherInstances, yn as enqueueSystemEvent, zn as stopSubagentsForRequester, zt as normalizeSendPolicy } from "./subagent-registry-CtFQu2XK.js";
18
18
  import { n as resolveModel } from "./model-Cyy-PjVo.js";
19
19
  import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-pEoxpxC2.js";
20
20
  import "./skills-3GqMCeaa.js";
21
21
  import { l as isTestDefaultMemorySlotDisabled, n as loadPluginManifestRegistry } from "./manifest-registry-ByjgBm6U.js";
22
22
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CIEf_GHk.js";
23
- import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-CMXTA_lT.js";
24
- 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-D25qfBsN.js";
25
- import { n as migrateLegacyConfig } from "./config-Cm8MqYN8.js";
23
+ import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-NFMJmuUc.js";
24
+ 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-ixUbjx-d.js";
25
+ import { n as migrateLegacyConfig } from "./config-DhxWEGQB.js";
26
26
  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-Bze4rUhk.js";
27
27
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C0DLwT7t.js";
28
- import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-Dkmv0jiT.js";
28
+ import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-XTvSS1II.js";
29
29
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BKpbLfdK.js";
30
30
  import { c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as resolveHostName, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, p as rawDataToString, r as isPrivateOrLoopbackAddress, t as isLoopbackAddress, u as resolveGatewayClientIp } from "./net-C0W-QK7p.js";
31
31
  import { i as normalizeInputProvenance } from "./input-provenance-ChJN5mZj.js";
32
- import { B as snapshotSessionOrigin, D as evaluateSessionFreshness, F as resolveAgentMainSessionKey, I as resolveExplicitAgentSessionKey, L as resolveMainSessionKey, N as resolveFreshSessionTotalTokens, P as canonicalizeMainSessionAlias, Q as deliveryContextFromSession, R as resolveMainSessionKeyFromConfig, S as stripMessageIdHints, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, et as mergeDeliveryContext, g as capArrayByJsonBytes, h as archiveSessionTranscripts, k as resolveSessionResetPolicy, m as archiveFileOnDisk, n as parseSessionThreadInfo, nt as normalizeSessionDeliveryFields, t as extractDeliveryInfo, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, w as cleanStaleLockFiles, x as stripEnvelope } from "./sessions-zdScGHgW.js";
32
+ import { B as snapshotSessionOrigin, D as evaluateSessionFreshness, F as resolveAgentMainSessionKey, I as resolveExplicitAgentSessionKey, L as resolveMainSessionKey, N as resolveFreshSessionTotalTokens, P as canonicalizeMainSessionAlias, Q as deliveryContextFromSession, R as resolveMainSessionKeyFromConfig, S as stripMessageIdHints, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, et as mergeDeliveryContext, g as capArrayByJsonBytes, h as archiveSessionTranscripts, k as resolveSessionResetPolicy, m as archiveFileOnDisk, n as parseSessionThreadInfo, nt as normalizeSessionDeliveryFields, t as extractDeliveryInfo, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, w as cleanStaleLockFiles, x as stripEnvelope } from "./sessions-B-cuXd6I.js";
33
33
  import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-CCCwddgc.js";
34
- import { A as resolveHubMetricsConfig, C as getMirrorSnapshot, D as seedMirror, M as setMirrorAccountSource, O as setChannelRestartHandler, S as getMirrorEntry, b as applyChannelRestart, c as resolveWhatsAppAccount, d as buildChannelAccountBindings, k as startMirrorRefreshTick, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, u as resolveTelegramAccount, w as listMirrorAccountIds, x as channelConfigSource } from "./plugins-BBxVrybd.js";
34
+ import { A as resolveHubMetricsConfig, C as getMirrorSnapshot, D as seedMirror, M as setMirrorAccountSource, O as setChannelRestartHandler, S as getMirrorEntry, b as applyChannelRestart, c as resolveWhatsAppAccount, d as buildChannelAccountBindings, k as startMirrorRefreshTick, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, u as resolveTelegramAccount, w as listMirrorAccountIds, x as channelConfigSource } from "./plugins-CDfgbD2S.js";
35
35
  import "./logging-CyBpyZLp.js";
36
36
  import { r as resolveUserDir } from "./user-directory-D27je39W.js";
37
37
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-Dm5-em7b.js";
38
38
  import { a as stripHeartbeatToken } from "./lanes-BEZu7L5R.js";
39
- import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-U1dN8gZq.js";
39
+ import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-CQ8m3Y_1.js";
40
40
  import { n as getMachineDisplayName } from "./with-timeout-BVhDEOTB.js";
41
41
  import { n as isDiagnosticsEnabled } from "./diagnostic-events-BIoHynd0.js";
42
42
  import { c as startDiagnosticHeartbeat, l as stopDiagnosticHeartbeat } from "./diagnostic-DYs0_0mX.js";
43
- import { D as getGlobalHookRunner, a as markSynced, i as markFailed, j as isPluginEnabledForOrg, k as runGlobalGatewayStopSafely, l as deterministicClientId, n as closeMessageLedger, o as openMessageLedger, s as patchRouting, t as claimBatch } from "./message-ledger-B25yZ2QH.js";
44
- 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-CjrwccM4.js";
43
+ import { D as getGlobalHookRunner, a as markSynced, i as markFailed, j as isPluginEnabledForOrg, k as runGlobalGatewayStopSafely, l as deterministicClientId, n as closeMessageLedger, o as openMessageLedger, s as patchRouting, t as claimBatch } from "./message-ledger-Dxdjwnp5.js";
44
+ 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-BFst7lT8.js";
45
45
  import { c as detectMime } from "./image-ops-C3SpAWwm.js";
46
46
  import { i as runDrone, t as createGatewayDroneHost } from "./host-DUzTARxx.js";
47
- import { B as resolveBootstrapMaxChars, V as resolveBootstrapTotalMaxChars, a as listThinkingLevels, c as normalizeThinkLevel, f as supportsXHighThinking, l as normalizeUsageDisplay, n as formatThinkingLevels, o as normalizeElevatedLevel, r as formatXHighModelHint, s as normalizeReasoningLevel, u as normalizeVerboseLevel } from "./pi-embedded-helpers-DdMwVhWo.js";
48
- import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-DKbtOnC4.js";
47
+ import { B as resolveBootstrapMaxChars, V as resolveBootstrapTotalMaxChars, a as listThinkingLevels, c as normalizeThinkLevel, f as supportsXHighThinking, l as normalizeUsageDisplay, n as formatThinkingLevels, o as normalizeElevatedLevel, r as formatXHighModelHint, s as normalizeReasoningLevel, u as normalizeVerboseLevel } from "./pi-embedded-helpers-BfVIc4c5.js";
48
+ import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-DwGbzphU.js";
49
49
  import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-DdVOGsI9.js";
50
50
  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-DPXV6BW7.js";
51
- import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-BUJezTt7.js";
51
+ import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-68HV9bpp.js";
52
52
  import { a as isErrno, n as formatErrorMessage } from "./errors-iV4-NKRR.js";
53
53
  import { i as formatPortDiagnostics, n as inspectPortUsage, t as ensurePortAvailable } from "./ports-DHJ3IPPA.js";
54
54
  import { t as movePathToTrash } from "./trash--L0YM4v3.js";
55
- import { n as runWithModelFallback } from "./model-fallback-BI2APyvK.js";
55
+ import { n as runWithModelFallback } from "./model-fallback-xPeowZyn.js";
56
56
  import { a as traceGatewayEvent, n as pruneOldTraceFiles } from "./chat-trace-DMQCLCi7.js";
57
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-C-GpnDhy.js";
57
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BPA2VF2K.js";
58
58
  import { t as ToolInputError } from "./common-DaYU0QCr.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 fetchWithSsrFGuard } from "./fetch-guard-Cz8ylHLg.js";
61
- import { n as loadModelCatalog } from "./model-catalog-DAyuGuaM.js";
62
- import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as orgScopeVisible, f as lookupContextTokens, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as normalizeOrgIds } from "./session-utils-WPz6l6QB.js";
63
- import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-CFHuM9wa.js";
61
+ import { n as loadModelCatalog } from "./model-catalog-BSiv3f8K.js";
62
+ import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as orgScopeVisible, f as lookupContextTokens, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as normalizeOrgIds } from "./session-utils--BgIkPfi.js";
63
+ import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-BEqjC5lp.js";
64
64
  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-BeHGjZzx.js";
65
65
  import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-yBL75k4k.js";
66
66
  import { n as formatTokenCount, r as formatUsd } from "./usage-format--dK3YoXf.js";
@@ -78,19 +78,19 @@ import { a as normalizeOptionalAgentId, c as normalizePayloadToSystemText, d as
78
78
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BlvVswOf.js";
79
79
  import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-f8KHn8x4.js";
80
80
  import { n as setHubRest } from "./hub-rest-registry-DQyDHHy2.js";
81
- import { o as normalizeReplyPayloadsForDelivery, s as loadChannelOutboundAdapter, t as deliverOutboundPayloads } from "./deliver-PUOUs4ol.js";
82
- import { n as resolveMessageChannelSelection } from "./channel-selection-BewMTsqq.js";
83
- import { n as ensureOutboundSessionEntry, o as resetDirectoryCache, r as normalizePollInput, t as resolveOutboundSessionRoute } from "./outbound-session-BfiNGbxM.js";
84
- import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-DSsPpXT3.js";
81
+ import { o as normalizeReplyPayloadsForDelivery, s as loadChannelOutboundAdapter, t as deliverOutboundPayloads } from "./deliver-p_wWlh7d.js";
82
+ import { n as resolveMessageChannelSelection } from "./channel-selection-C0mWZNWy.js";
83
+ import { n as ensureOutboundSessionEntry, o as resetDirectoryCache, r as normalizePollInput, t as resolveOutboundSessionRoute } from "./outbound-session-SmzP0oiG.js";
84
+ import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-Urh1ULgm.js";
85
85
  import { a as runAggregation, n as executeOrchestration, r as readStatusJson, t as executePipeline } from "./orchestration-pipeline-Bi3YT3Jf.js";
86
86
  import { r as readManifest, t as completeManifest } from "./orchestration-manifest-DXWf2_x7.js";
87
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-0L910S2Q.js";
88
- import { t as createBrowserRouteDispatcher } from "./dispatcher-nmVyfQFp.js";
87
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-5kw5OYIx.js";
88
+ import { t as createBrowserRouteDispatcher } from "./dispatcher-DJI5AwTt.js";
89
89
  import { n as persistBrowserProxyFiles, t as applyBrowserProxyPaths } from "./proxy-files-CndZU0gq.js";
90
90
  import { r as cachedJson } from "./ttl-cache-UdlZ-zJd.js";
91
- import { a as styleHealthChannelLine, c as runHeartbeatOnce, d as resolveHeartbeatVisibility, l as setHeartbeatsEnabled, n as formatHealthChannelLines, o as areHeartbeatsEnabled, r as getHealthSnapshot, u as startHeartbeatRunner } from "./health-CTFvDTD7.js";
91
+ import { a as styleHealthChannelLine, c as runHeartbeatOnce, d as resolveHeartbeatVisibility, l as setHeartbeatsEnabled, n as formatHealthChannelLines, o as areHeartbeatsEnabled, r as getHealthSnapshot, u as startHeartbeatRunner } from "./health-bhWSy0iT.js";
92
92
  import { n as getLastHeartbeatEvent, r as onHeartbeatEvent } from "./heartbeat-events-DLgkBgdw.js";
93
- import { n as resolveChannelSenderIdentity, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-COgNJVi7.js";
93
+ import { n as resolveChannelSenderIdentity, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-CqR6xBt8.js";
94
94
  import { n as handleHubAssignmentChanged, r as initUserSubsystem, t as getActiveUserSubsystem } from "./server-startup-users-B1IlQBSa.js";
95
95
  import { t as mapRoleToScopes } from "./types-Utz3c3Qq.js";
96
96
  import { t as ensureMinionCliOnPath } from "./path-env-DpsCNe2h.js";
@@ -99,10 +99,10 @@ import { n as inheritOptionFromParent } from "./command-options-Dhjl7AMa.js";
99
99
  import { t as buildChannelUiCatalog } from "./catalog-DOKauHFd.js";
100
100
  import { t as WizardCancelledError } from "./prompts-E0FayNjJ.js";
101
101
  import { t as resolveChannelDefaultAccountId } from "./helpers-HNAIOJ_3.js";
102
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-tbz6JDnp.js";
102
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-FIoIz-a0.js";
103
103
  import { t as buildChannelAccountSnapshot } from "./status-Dg720jp3.js";
104
- import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-BAjkjDC1.js";
105
- import "./onboard-helpers-DIRlPtVB.js";
104
+ import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-D4NUWUH4.js";
105
+ import "./onboard-helpers-CAp6xUvG.js";
106
106
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-BRZczxkO.js";
107
107
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-C7sF_VNq.js";
108
108
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DJ67yyP8.js";
@@ -110,17 +110,17 @@ import { t as discoverGatewayBeacons } from "./bonjour-discovery-DzKslgdA.js";
110
110
  import { t as installSkill } from "./skills-install-C-t6jFVR.js";
111
111
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DKaLYbe_.js";
112
112
  import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-C3c5TuO_.js";
113
- import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Z8UvQv14.js";
114
- import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-BQa9UHqw.js";
115
- import { m as parsePort$1 } from "./lifecycle-core-DzUG_Ssw.js";
116
- import { n as addGatewayServiceCommands } from "./daemon-cli-DoYeUpfT.js";
113
+ import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Bxo5Qgkm.js";
114
+ import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-DjsxBT25.js";
115
+ import { m as parsePort$1 } from "./lifecycle-core-DcELCz73.js";
116
+ import { n as addGatewayServiceCommands } from "./daemon-cli-eMnGI3zL.js";
117
117
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BjuB2JdU.js";
118
- import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-D_xee69M.js";
118
+ import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-CLdxbXZ4.js";
119
119
  import { i as initCrypto, n as ProbeRegistry, r as SecretsManager, t as SecretStore } from "./store-DR4Ip_0q.js";
120
- import { t as runOnboardingWizard } from "./onboarding-BRTMRUY5.js";
121
- 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-D61x7OCA.js";
122
- import { h as resolveGmailPullRuntimeConfig } from "./gmail-zhEe5Z8O.js";
123
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-CXpwHFOG.js";
120
+ import { t as runOnboardingWizard } from "./onboarding-CA28TXPp.js";
121
+ 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-BYvlu7xE.js";
122
+ import { h as resolveGmailPullRuntimeConfig } from "./gmail-smcTnAL4.js";
123
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DICZ1SNs.js";
124
124
  import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-BRxsVIll.js";
125
125
  import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-DGKCBPrM.js";
126
126
  import { n as setEmbedConcurrency } from "./qmd-embed-semaphore-CnC0D_l5.js";
@@ -1396,7 +1396,7 @@ async function stripLegacyConfigOverrides(cfg, stateDir, log) {
1396
1396
  * Orchestration event bus — typed EventEmitter for orchestration progress
1397
1397
  * with auto-cleanup on completion and optional gateway bridge.
1398
1398
  */
1399
- const log$29 = createSubsystemLogger("orchestration-events");
1399
+ const log$30 = createSubsystemLogger("orchestration-events");
1400
1400
  var OrchestrationEventBus = class {
1401
1401
  constructor() {
1402
1402
  this.listeners = /* @__PURE__ */ new Map();
@@ -1494,7 +1494,7 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
1494
1494
  if (manifest.status === "running") {
1495
1495
  completeManifest(orchestrationDir, "interrupted");
1496
1496
  interrupted.push(manifest.orchestrationId);
1497
- log$29.info(`crash recovery: marked orchestration ${manifest.orchestrationId} as interrupted`);
1497
+ log$30.info(`crash recovery: marked orchestration ${manifest.orchestrationId} as interrupted`);
1498
1498
  }
1499
1499
  }
1500
1500
  }
@@ -1502,7 +1502,7 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
1502
1502
  }
1503
1503
  //#endregion
1504
1504
  //#region src/infra/exec-approval-forwarder.ts
1505
- const log$28 = createSubsystemLogger("gateway/exec-approvals");
1505
+ const log$29 = createSubsystemLogger("gateway/exec-approvals");
1506
1506
  const DEFAULT_MODE = "session";
1507
1507
  function normalizeMode(mode) {
1508
1508
  return mode ?? DEFAULT_MODE;
@@ -1620,7 +1620,7 @@ async function deliverToTargets(params) {
1620
1620
  payloads: [{ text: params.text }]
1621
1621
  });
1622
1622
  } catch (err) {
1623
- log$28.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1623
+ log$29.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1624
1624
  }
1625
1625
  });
1626
1626
  await Promise.allSettled(deliveries);
@@ -3233,7 +3233,7 @@ async function validateGatewayJwt(token, config) {
3233
3233
  }
3234
3234
  //#endregion
3235
3235
  //#region src/gateway/channel-health-monitor.ts
3236
- const log$27 = createSubsystemLogger("gateway/health-monitor");
3236
+ const log$28 = createSubsystemLogger("gateway/health-monitor");
3237
3237
  const DEFAULT_CHECK_INTERVAL_MS$1 = 5 * 6e4;
3238
3238
  const DEFAULT_STARTUP_GRACE_MS = 6e4;
3239
3239
  const DEFAULT_COOLDOWN_CYCLES = 2;
@@ -3283,11 +3283,11 @@ function startChannelHealthMonitor(deps) {
3283
3283
  if (now - record.lastRestartAt <= cooldownMs) continue;
3284
3284
  pruneOldRestarts(record, now);
3285
3285
  if (record.restartsThisHour.length >= maxRestartsPerHour) {
3286
- log$27.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
3286
+ log$28.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
3287
3287
  continue;
3288
3288
  }
3289
3289
  const reason = !status.running ? status.reconnectAttempts && status.reconnectAttempts >= 10 ? "gave-up" : "stopped" : "stuck";
3290
- log$27.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
3290
+ log$28.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
3291
3291
  try {
3292
3292
  if (status.running) await channelManager.stopChannel(channelId, accountId);
3293
3293
  channelManager.resetRestartAttempts(channelId, accountId);
@@ -3296,7 +3296,7 @@ function startChannelHealthMonitor(deps) {
3296
3296
  record.restartsThisHour.push({ at: now });
3297
3297
  restartRecords.set(key, record);
3298
3298
  } catch (err) {
3299
- log$27.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
3299
+ log$28.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
3300
3300
  }
3301
3301
  }
3302
3302
  }
@@ -3316,7 +3316,7 @@ function startChannelHealthMonitor(deps) {
3316
3316
  abortSignal?.addEventListener("abort", stop, { once: true });
3317
3317
  timer = setInterval(() => void runCheck(), checkIntervalMs);
3318
3318
  if (typeof timer === "object" && "unref" in timer) timer.unref();
3319
- log$27.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
3319
+ log$28.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
3320
3320
  }
3321
3321
  return { stop };
3322
3322
  }
@@ -3336,7 +3336,7 @@ function startChannelHealthMonitor(deps) {
3336
3336
  * compare) before any phase flips dispatch to the mirror. whatsapp + telegram compare
3337
3337
  * fully; discord is compare-deferred. See specs/2026-06-26-gateway-config-db-migration-plan.md.
3338
3338
  */
3339
- const log$26 = createSubsystemLogger("channel-mirror");
3339
+ const log$27 = createSubsystemLogger("channel-mirror");
3340
3340
  /** The gateway's live (gateway.json-resolved) comparable projection for an account.
3341
3341
  * Type-aware: whatsapp + telegram resolve cleanly; discord's per-guild/channel model
3342
3342
  * has no flat account projection → returns null (compare deferred, logged honestly). */
@@ -3395,7 +3395,7 @@ async function channelMirrorCompareFromTags(tags) {
3395
3395
  try {
3396
3396
  await seedMirror();
3397
3397
  } catch (err) {
3398
- log$26.warn(`mirror refresh on signal failed: ${String(err)}`);
3398
+ log$27.warn(`mirror refresh on signal failed: ${String(err)}`);
3399
3399
  }
3400
3400
  const affectedTypes = /* @__PURE__ */ new Set();
3401
3401
  for (const tag of channelTags) {
@@ -3407,7 +3407,7 @@ async function channelMirrorCompareFromTags(tags) {
3407
3407
  try {
3408
3408
  compareOne(type, accountId);
3409
3409
  } catch (err) {
3410
- log$26.warn(`compare failed for ${tag}: ${String(err)}`);
3410
+ log$27.warn(`compare failed for ${tag}: ${String(err)}`);
3411
3411
  }
3412
3412
  }
3413
3413
  for (const type of affectedTypes) await applyChannelRestart(type);
@@ -3416,18 +3416,18 @@ async function channelMirrorCompareFromTags(tags) {
3416
3416
  function compareOne(type, accountId) {
3417
3417
  const entry = getMirrorEntry(type, accountId);
3418
3418
  if (!entry) {
3419
- log$26.info(`signal for ${type}:${accountId}: not in mirror (Valkey/hub hydrate empty)`);
3419
+ log$27.info(`signal for ${type}:${accountId}: not in mirror (Valkey/hub hydrate empty)`);
3420
3420
  return;
3421
3421
  }
3422
3422
  const shadow = entry.projection;
3423
3423
  const live = liveProjection(type, accountId);
3424
3424
  if (!live) {
3425
- log$26.info(`signal for ${type}:${accountId}: no live comparable (new account or compare-deferred type) [observe-only]`);
3425
+ log$27.info(`signal for ${type}:${accountId}: no live comparable (new account or compare-deferred type) [observe-only]`);
3426
3426
  return;
3427
3427
  }
3428
3428
  const diff = diffFields(shadow, live);
3429
3429
  const intended = shadow.enabled ? live.enabled ? "noop(running)" : "START" : "STOP";
3430
- log$26.info(`mirror ${type}:${accountId}: diff=[${diff.join(",") || "none"}] intended=${intended} shadow=${JSON.stringify(shadow)} live=${JSON.stringify(live)} [observe-only]`);
3430
+ log$27.info(`mirror ${type}:${accountId}: diff=[${diff.join(",") || "none"}] intended=${intended} shadow=${JSON.stringify(shadow)} live=${JSON.stringify(live)} [observe-only]`);
3431
3431
  }
3432
3432
  /**
3433
3433
  * Boot parity check: read the seeded mirror snapshot and log how many accounts diverge
@@ -3447,10 +3447,10 @@ async function channelMirrorBootParity() {
3447
3447
  }
3448
3448
  if (diffFields(projection, live).length > 0) diffs += 1;
3449
3449
  }
3450
- log$26.info(`boot hydration: ${shadows.size} accounts from hub, ${diffs} diff(s), ${deferred} deferred vs gateway.json [observe-only]`);
3451
- log$26.info(`boot hydration keys: [${Array.from(shadows.keys()).sort().join(", ")}]`);
3450
+ log$27.info(`boot hydration: ${shadows.size} accounts from hub, ${diffs} diff(s), ${deferred} deferred vs gateway.json [observe-only]`);
3451
+ log$27.info(`boot hydration keys: [${Array.from(shadows.keys()).sort().join(", ")}]`);
3452
3452
  } catch (err) {
3453
- log$26.warn(`boot hydration parity failed: ${String(err)}`);
3453
+ log$27.warn(`boot hydration parity failed: ${String(err)}`);
3454
3454
  }
3455
3455
  }
3456
3456
  //#endregion
@@ -3950,7 +3950,7 @@ var ExecApprovalManager = class {
3950
3950
  * Opens the SQLite database, applies WAL pragmas, and runs the
3951
3951
  * 004_free_tier_users migration. Returns the DatabaseSync instance.
3952
3952
  */
3953
- const log$25 = createSubsystemLogger("free-tier/db");
3953
+ const log$26 = createSubsystemLogger("free-tier/db");
3954
3954
  const MIGRATION_SQL_PATH = join(dirname(fileURLToPath(import.meta.url)), "../../db/migrations/004_free_tier_users.sql");
3955
3955
  function openFreeTierDb(dbPath) {
3956
3956
  const { DatabaseSync } = requireNodeSqlite();
@@ -3959,9 +3959,9 @@ function openFreeTierDb(dbPath) {
3959
3959
  try {
3960
3960
  const sql = readFileSync(MIGRATION_SQL_PATH, "utf8");
3961
3961
  db.exec(sql);
3962
- log$25.info("free-tier DB migration applied", { dbPath });
3962
+ log$26.info("free-tier DB migration applied", { dbPath });
3963
3963
  } catch (err) {
3964
- log$25.error("free-tier DB migration failed", {
3964
+ log$26.error("free-tier DB migration failed", {
3965
3965
  dbPath,
3966
3966
  error: String(err)
3967
3967
  });
@@ -4101,13 +4101,13 @@ var UserRepository = class {
4101
4101
  };
4102
4102
  //#endregion
4103
4103
  //#region src/gateway/free-tier/email.ts
4104
- const log$24 = createSubsystemLogger("free-tier/email");
4104
+ const log$25 = createSubsystemLogger("free-tier/email");
4105
4105
  const RESEND_API = "https://api.resend.com/emails";
4106
4106
  const FROM = "OpenClaw <noreply@minion.ai>";
4107
4107
  async function send$1(to, subject, html) {
4108
4108
  const apiKey = process.env["RESEND_API_KEY"];
4109
4109
  if (!apiKey) {
4110
- log$24.warn("RESEND_API_KEY not set — email not sent", {
4110
+ log$25.warn("RESEND_API_KEY not set — email not sent", {
4111
4111
  to,
4112
4112
  subject
4113
4113
  });
@@ -4128,7 +4128,7 @@ async function send$1(to, subject, html) {
4128
4128
  });
4129
4129
  if (!res.ok) {
4130
4130
  const text = await res.text().catch(() => "");
4131
- log$24.error("Resend API error", {
4131
+ log$25.error("Resend API error", {
4132
4132
  status: res.status,
4133
4133
  body: text
4134
4134
  });
@@ -4141,7 +4141,7 @@ async function sendVerificationEmail(email, token, baseUrl) {
4141
4141
  }
4142
4142
  //#endregion
4143
4143
  //#region src/gateway/free-tier/auth-http.ts
4144
- const log$23 = createSubsystemLogger("free-tier/auth");
4144
+ const log$24 = createSubsystemLogger("free-tier/auth");
4145
4145
  function json$1(res, status, body) {
4146
4146
  res.statusCode = status;
4147
4147
  res.setHeader("Content-Type", "application/json; charset=utf-8");
@@ -4203,7 +4203,7 @@ async function handleSignup(req, res, users) {
4203
4203
  passwordHash
4204
4204
  });
4205
4205
  await sendVerificationEmail(email, verifyToken, process.env["HUB_BASE_URL"] ?? "https://hub.minion.ai").catch((e) => {
4206
- log$23.error("failed to send verification email", {
4206
+ log$24.error("failed to send verification email", {
4207
4207
  userId: user.id,
4208
4208
  error: String(e)
4209
4209
  });
@@ -4536,7 +4536,7 @@ function createFreeTierApiHandler(db) {
4536
4536
  *
4537
4537
  * @module
4538
4538
  */
4539
- const log$22 = createSubsystemLogger("gateway/metrics");
4539
+ const log$23 = createSubsystemLogger("gateway/metrics");
4540
4540
  /** Cap on retained latency samples per method (reservoir) to bound memory. */
4541
4541
  const MAX_SAMPLES_PER_METHOD = 512;
4542
4542
  /** Default snapshot window. Matches the reliability rate-limiter granularity. */
@@ -4650,7 +4650,7 @@ function startGatewayRequestMetrics(opts) {
4650
4650
  eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
4651
4651
  eventLoopHist.enable();
4652
4652
  } catch (err) {
4653
- log$22.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
4653
+ log$23.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
4654
4654
  eventLoopHist = null;
4655
4655
  }
4656
4656
  windowStartMs = Date.now();
@@ -4659,7 +4659,7 @@ function startGatewayRequestMetrics(opts) {
4659
4659
  try {
4660
4660
  emitSnapshot(now - windowStartMs);
4661
4661
  } catch (err) {
4662
- log$22.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
4662
+ log$23.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
4663
4663
  }
4664
4664
  methodStats.clear();
4665
4665
  eventLoopHist?.reset();
@@ -5832,7 +5832,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
5832
5832
  *
5833
5833
  * See specs/2026-05-22-gateway-turn-recovery.md.
5834
5834
  */
5835
- const log$21 = createSubsystemLogger("agents/in-flight-turns");
5835
+ const log$22 = createSubsystemLogger("agents/in-flight-turns");
5836
5836
  const STALE_AFTER_MS = 1800 * 1e3;
5837
5837
  const MAX_RECOVERY_ATTEMPTS = 2;
5838
5838
  const APOLOGY_SEND_TIMEOUT_MS = 3e3;
@@ -5865,7 +5865,7 @@ async function sendApology(cfg, row) {
5865
5865
  });
5866
5866
  return await Promise.race([send, timeout]);
5867
5867
  } catch (err) {
5868
- log$21.warn(`apology send failed for ${row.channel}:${row.chatId}: ${String(err)}`);
5868
+ log$22.warn(`apology send failed for ${row.channel}:${row.chatId}: ${String(err)}`);
5869
5869
  return false;
5870
5870
  } finally {
5871
5871
  if (timer) clearTimeout(timer);
@@ -5890,14 +5890,14 @@ async function recoverInterruptedTurns(deps) {
5890
5890
  if (isStale || looped) {
5891
5891
  deleteRow(row.id);
5892
5892
  summary.dropped++;
5893
- log$21.info(`dropped row ${row.id} (${isStale ? "stale" : "loop guard"}): ${row.channel}:${row.chatId} agent=${row.agentId}`);
5893
+ log$22.info(`dropped row ${row.id} (${isStale ? "stale" : "loop guard"}): ${row.channel}:${row.chatId} agent=${row.agentId}`);
5894
5894
  continue;
5895
5895
  }
5896
5896
  markRecoveryAttempt(row.id);
5897
5897
  if (await sendApology(deps.cfg, row)) summary.apologized++;
5898
5898
  deleteRow(row.id);
5899
5899
  }
5900
- log$21.info(`recovery scanned=${summary.scanned} apologized=${summary.apologized} dropped=${summary.dropped}`);
5900
+ log$22.info(`recovery scanned=${summary.scanned} apologized=${summary.apologized} dropped=${summary.dropped}`);
5901
5901
  return summary;
5902
5902
  }
5903
5903
  /**
@@ -5920,7 +5920,7 @@ async function drainInFlightTurns(deps) {
5920
5920
  deleteRow(row.id);
5921
5921
  }
5922
5922
  }
5923
- log$21.info(`drain drained=${summary.drained} apologized=${summary.apologized}`);
5923
+ log$22.info(`drain drained=${summary.drained} apologized=${summary.apologized}`);
5924
5924
  return summary;
5925
5925
  }
5926
5926
  //#endregion
@@ -5949,7 +5949,7 @@ async function drainInFlightTurns(deps) {
5949
5949
  *
5950
5950
  * Spec: specs/2026-06-11-gog-nuke-execution-plan.md (Phase D)
5951
5951
  */
5952
- const log$20 = createSubsystemLogger("gmail-gws");
5952
+ const log$21 = createSubsystemLogger("gmail-gws");
5953
5953
  /**
5954
5954
  * Run a `gws gmail …` command with the watcher's Gmail credentials file
5955
5955
  * injected. Returns parsed JSON on success. A non-zero exit is surfaced as
@@ -6030,7 +6030,7 @@ async function registerWatch(opts) {
6030
6030
  error: "users.watch response missing historyId"
6031
6031
  };
6032
6032
  const expiration = data.expiration != null && Number.isFinite(Number(data.expiration)) ? Number(data.expiration) : void 0;
6033
- log$20.info(`watch registered (historyId=${historyId}, expiration=${expiration ?? "?"})`);
6033
+ log$21.info(`watch registered (historyId=${historyId}, expiration=${expiration ?? "?"})`);
6034
6034
  return {
6035
6035
  ok: true,
6036
6036
  historyId,
@@ -6164,7 +6164,7 @@ async function getMessage(opts) {
6164
6164
  timeoutMs: opts.timeoutMs ?? 6e4
6165
6165
  });
6166
6166
  if (!res.ok) {
6167
- log$20.warn(`messages.get ${opts.id} failed: ${res.error}`);
6167
+ log$21.warn(`messages.get ${opts.id} failed: ${res.error}`);
6168
6168
  return null;
6169
6169
  }
6170
6170
  return parseGmailMessage(res.data, {
@@ -6245,6 +6245,177 @@ function truncateUtf8(value, maxBytes) {
6245
6245
  return `${text}…`;
6246
6246
  }
6247
6247
  //#endregion
6248
+ //#region src/hooks/gmail-auto-label.ts
6249
+ /**
6250
+ * AI auto-labeling for the Gmail pull watcher.
6251
+ *
6252
+ * As Pub/Sub notifications deliver new messages, each one is classified by a
6253
+ * schema-output drone (same primitive as the personal-agent email summaries —
6254
+ * works on OpenRouter-only deployments) into ONE of the configured labels,
6255
+ * and that Gmail label is applied via `gws gmail users messages modify`.
6256
+ *
6257
+ * Labels are resolved name → id via `users labels list` and created on first
6258
+ * use (`users labels create`), cached per credentials file. Applying a label
6259
+ * is idempotent (addLabelIds), so a redelivered notification re-labels
6260
+ * harmlessly.
6261
+ *
6262
+ * Everything here is best-effort: a classify or gws failure logs and skips
6263
+ * the message — it never blocks the watcher's history baseline from
6264
+ * advancing. Requires the watched account's token to hold gmail.modify scope
6265
+ * (a 403 here means the account must be re-linked with the current scopes).
6266
+ */
6267
+ const log$20 = createSubsystemLogger("gmail-auto-label");
6268
+ const classifyDrone = defineDrone({
6269
+ id: "gmail-auto-label",
6270
+ description: "Classifies an incoming email into one configured Gmail label.",
6271
+ 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.",
6272
+ model: {
6273
+ provider: "anthropic",
6274
+ model: "claude-haiku-4-5"
6275
+ },
6276
+ output: Type.Object({ label: Type.String({ description: "Exactly one of the allowed label names (verbatim), or \"none\" when no label clearly applies." }) }),
6277
+ timeoutMs: 15e3
6278
+ });
6279
+ /** Cap what we feed the classifier — triage metadata + a body slice is plenty. */
6280
+ const BODY_CHARS_FOR_CLASSIFY = 2e3;
6281
+ /** Build the classify prompt for one message. Exported for tests. */
6282
+ function buildClassifyPrompt(msg, labels) {
6283
+ const lines = [
6284
+ "Allowed labels:",
6285
+ ...labels.map((l) => `- ${l.name}${l.description ? `: ${l.description}` : ""}`),
6286
+ "",
6287
+ `From: ${msg.from}`,
6288
+ `Subject: ${msg.subject}`
6289
+ ];
6290
+ const preview = (msg.body || msg.snippet || "").slice(0, BODY_CHARS_FOR_CLASSIFY).trim();
6291
+ if (preview) lines.push("", preview);
6292
+ return lines.join("\n");
6293
+ }
6294
+ /**
6295
+ * Match the drone's answer against the configured rules. Case-insensitive;
6296
+ * returns the canonical configured name, or null for "none"/unknown answers.
6297
+ * Exported for tests.
6298
+ */
6299
+ function matchLabel(raw, labels) {
6300
+ const answer = raw.trim().toLowerCase();
6301
+ if (!answer || answer === "none") return null;
6302
+ return labels.find((l) => l.name.trim().toLowerCase() === answer)?.name ?? null;
6303
+ }
6304
+ const labelCaches = /* @__PURE__ */ new Map();
6305
+ async function loadLabelCache(credentialsFile) {
6306
+ const res = await runGwsGmail([
6307
+ "gmail",
6308
+ "users",
6309
+ "labels",
6310
+ "list",
6311
+ "--params",
6312
+ JSON.stringify({ userId: "me" })
6313
+ ], {
6314
+ credentialsFile,
6315
+ timeoutMs: 3e4
6316
+ });
6317
+ if (!res.ok) {
6318
+ log$20.warn(`labels.list failed: ${res.error}`);
6319
+ return null;
6320
+ }
6321
+ const cache = /* @__PURE__ */ new Map();
6322
+ for (const label of res.data.labels ?? []) if (label.id && label.name) cache.set(label.name.trim().toLowerCase(), label.id);
6323
+ return cache;
6324
+ }
6325
+ async function createLabel(credentialsFile, name) {
6326
+ const res = await runGwsGmail([
6327
+ "gmail",
6328
+ "users",
6329
+ "labels",
6330
+ "create",
6331
+ "--params",
6332
+ JSON.stringify({ userId: "me" }),
6333
+ "--json",
6334
+ JSON.stringify({
6335
+ name,
6336
+ labelListVisibility: "labelShow",
6337
+ messageListVisibility: "show"
6338
+ })
6339
+ ], {
6340
+ credentialsFile,
6341
+ timeoutMs: 3e4
6342
+ });
6343
+ if (!res.ok) {
6344
+ log$20.warn(`labels.create "${name}" failed: ${res.error}`);
6345
+ return null;
6346
+ }
6347
+ return res.data.id ?? null;
6348
+ }
6349
+ /** Resolve a label name to its Gmail id, creating the label on first use. */
6350
+ async function ensureLabelId(credentialsFile, name) {
6351
+ let cache = labelCaches.get(credentialsFile);
6352
+ if (!cache) {
6353
+ const loaded = await loadLabelCache(credentialsFile);
6354
+ if (!loaded) return null;
6355
+ cache = loaded;
6356
+ labelCaches.set(credentialsFile, cache);
6357
+ }
6358
+ const key = name.trim().toLowerCase();
6359
+ const existing = cache.get(key);
6360
+ if (existing) return existing;
6361
+ const created = await createLabel(credentialsFile, name);
6362
+ if (created) cache.set(key, created);
6363
+ return created;
6364
+ }
6365
+ async function applyLabel(credentialsFile, messageId, labelId) {
6366
+ const res = await runGwsGmail([
6367
+ "gmail",
6368
+ "users",
6369
+ "messages",
6370
+ "modify",
6371
+ "--params",
6372
+ JSON.stringify({
6373
+ userId: "me",
6374
+ id: messageId
6375
+ }),
6376
+ "--json",
6377
+ JSON.stringify({ addLabelIds: [labelId] })
6378
+ ], {
6379
+ credentialsFile,
6380
+ timeoutMs: 3e4
6381
+ });
6382
+ if (!res.ok) {
6383
+ log$20.warn(`messages.modify ${messageId} failed: ${res.error}`);
6384
+ return false;
6385
+ }
6386
+ return true;
6387
+ }
6388
+ async function classifyWithDrone(prompt) {
6389
+ const result = await runDrone(classifyDrone, { prompt }, createGatewayDroneHost());
6390
+ if (!result.ok) {
6391
+ log$20.debug(`classify drone failed: ${result.error.code} ${result.error.message}`);
6392
+ return null;
6393
+ }
6394
+ return result.data.label;
6395
+ }
6396
+ /**
6397
+ * Classify + label a batch of freshly delivered messages. Never throws;
6398
+ * per-message failures are logged and skipped. `classify` is injectable for
6399
+ * tests and defaults to the Haiku drone.
6400
+ */
6401
+ async function autoLabelMessages(opts) {
6402
+ const classify = opts.classify ?? classifyWithDrone;
6403
+ for (const msg of opts.messages) try {
6404
+ const answer = await classify(buildClassifyPrompt(msg, opts.labels));
6405
+ if (answer === null) continue;
6406
+ const name = matchLabel(answer, opts.labels);
6407
+ if (!name) {
6408
+ log$20.debug(`no label for ${msg.id} (classifier said "${answer}")`);
6409
+ continue;
6410
+ }
6411
+ const labelId = await ensureLabelId(opts.credentialsFile, name);
6412
+ if (!labelId) continue;
6413
+ if (await applyLabel(opts.credentialsFile, msg.id, labelId)) log$20.info(`labeled ${msg.id} as "${name}"`);
6414
+ } catch (err) {
6415
+ log$20.warn(`auto-label failed for ${msg.id}: ${String(err)}`);
6416
+ }
6417
+ }
6418
+ //#endregion
6248
6419
  //#region src/hooks/gmail-history-state.ts
6249
6420
  /**
6250
6421
  * Durable historyId persistence for the Gmail pull watcher.
@@ -6533,12 +6704,17 @@ async function syncOnce(notification) {
6533
6704
  if (msg) messages.push(msg);
6534
6705
  }
6535
6706
  if (messages.length > 0) {
6536
- if (!await postToHook(cfg, messages)) {
6707
+ if (cfg.autoLabel.enabled) await autoLabelMessages({
6708
+ credentialsFile: cfg.credentialsFile,
6709
+ labels: cfg.autoLabel.labels,
6710
+ messages
6711
+ });
6712
+ if (!(cfg.deliver ? await postToHook(cfg, messages) : true)) {
6537
6713
  log$17.warn("hook POST failed; will retry on next notification");
6538
6714
  return;
6539
6715
  }
6540
6716
  for (const msg of messages) rememberProcessed(current, msg.id);
6541
- log$17.info(`delivered ${messages.length} message(s) to ${cfg.hookUrl}`);
6717
+ if (cfg.deliver) log$17.info(`delivered ${messages.length} message(s) to ${cfg.hookUrl}`);
6542
6718
  } else for (const id of freshIds) rememberProcessed(current, id);
6543
6719
  advanceHistory(current, history.historyId ?? notification.historyId);
6544
6720
  await saveHistoryId(current.stateDir, cfg.account, current.lastHistoryId);
@@ -6570,19 +6746,34 @@ async function renewWatch() {
6570
6746
  /**
6571
6747
  * POST the normalized payload to the gateway's local `/hooks/gmail` endpoint
6572
6748
  * with the bearer hook token. Returns true on a 2xx response.
6749
+ *
6750
+ * Uses node:http(s) directly instead of global fetch: the default hookUrl is
6751
+ * the gateway POSTing to itself on 127.0.0.1, and undici's process-global
6752
+ * dispatcher state (mutable by other subsystems/extensions) broke that fetch
6753
+ * in production for weeks ("TypeError: fetch failed") while the endpoint was
6754
+ * reachable from every other client.
6573
6755
  */
6574
6756
  async function postToHook(cfg, messages) {
6757
+ const body = JSON.stringify({ messages });
6575
6758
  try {
6576
- const res = await fetch(cfg.hookUrl, {
6577
- method: "POST",
6578
- headers: {
6579
- "content-type": "application/json",
6580
- authorization: `Bearer ${cfg.hookToken}`
6581
- },
6582
- body: JSON.stringify({ messages })
6759
+ const status = await new Promise((resolve, reject) => {
6760
+ const req = (cfg.hookUrl.startsWith("https:") ? https : http).request(cfg.hookUrl, {
6761
+ method: "POST",
6762
+ headers: {
6763
+ "content-type": "application/json",
6764
+ authorization: `Bearer ${cfg.hookToken}`,
6765
+ "content-length": Buffer.byteLength(body)
6766
+ }
6767
+ }, (res) => {
6768
+ res.resume();
6769
+ res.on("end", () => resolve(res.statusCode ?? 0));
6770
+ });
6771
+ req.setTimeout(3e4, () => req.destroy(/* @__PURE__ */ new Error("hook POST timed out")));
6772
+ req.on("error", reject);
6773
+ req.end(body);
6583
6774
  });
6584
- if (!res.ok) {
6585
- log$17.warn(`hook POST returned ${res.status}`);
6775
+ if (status < 200 || status >= 300) {
6776
+ log$17.warn(`hook POST returned ${status}`);
6586
6777
  return false;
6587
6778
  }
6588
6779
  return true;
@@ -19744,7 +19935,7 @@ const nodeHandlers = {
19744
19935
  const p = params;
19745
19936
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
19746
19937
  await respondUnavailableOnThrow(respond, async () => {
19747
- const { handleNodeEvent } = await import("./server-node-events-B6R9PtsE.js");
19938
+ const { handleNodeEvent } = await import("./server-node-events-CJsgH2Am.js");
19748
19939
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
19749
19940
  const nodeConnId = client?.connId;
19750
19941
  await handleNodeEvent({
@@ -27520,7 +27711,7 @@ function normalizeAgentPayload(payload) {
27520
27711
  async function startBrowserControlServerIfEnabled() {
27521
27712
  if (isTruthyEnvValue(process.env.MINION_SKIP_BROWSER_CONTROL_SERVER)) return null;
27522
27713
  const override = process.env.MINION_BROWSER_CONTROL_MODULE?.trim();
27523
- const mod = override ? await import(override) : await import("./control-service-0L910S2Q.js").then((n) => n.t);
27714
+ const mod = override ? await import(override) : await import("./control-service-5kw5OYIx.js").then((n) => n.t);
27524
27715
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
27525
27716
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
27526
27717
  if (!start) return null;
@@ -33482,7 +33673,7 @@ async function deliverFlowReply(sessionKey, reply) {
33482
33673
  }
33483
33674
  try {
33484
33675
  const cfg = loadConfig();
33485
- const { deliverOutboundPayloads } = await import("./deliver-PUOUs4ol.js").then((n) => n.n);
33676
+ const { deliverOutboundPayloads } = await import("./deliver-p_wWlh7d.js").then((n) => n.n);
33486
33677
  await deliverOutboundPayloads({
33487
33678
  cfg,
33488
33679
  channel: target.channel,
@@ -37201,7 +37392,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
37201
37392
  }
37202
37393
  if (!minimalTestGateway) (async () => {
37203
37394
  const { recoverPendingDeliveries } = await import("./delivery-queue-4i2kXntr.js").then((n) => n.n);
37204
- const { deliverOutboundPayloads } = await import("./deliver-PUOUs4ol.js").then((n) => n.n);
37395
+ const { deliverOutboundPayloads } = await import("./deliver-p_wWlh7d.js").then((n) => n.n);
37205
37396
  await recoverPendingDeliveries({
37206
37397
  deliver: deliverOutboundPayloads,
37207
37398
  log: log.child("delivery-recovery"),