@nikolasp98/minion 2026.6.13-dev.20260616002242 → 2026.6.14-dev

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 (358) hide show
  1. package/dist/{acp-cli-kTGEkIIx.js → acp-cli-CprFYllO.js} +5 -5
  2. package/dist/{acp-cli-CY3ZQSmH.js → acp-cli-DJXj7cZX.js} +4 -4
  3. package/dist/{agent-NvyKtiKZ.js → agent-J4Hr7pxJ.js} +11 -11
  4. package/dist/{agent-step-W6wHZgfJ.js → agent-step-CUlu2Ce1.js} +2 -2
  5. package/dist/{agent-step-trCkc6Rj.js → agent-step-WEpy2gjj.js} +2 -2
  6. package/dist/{agents-DU-fozJQ.js → agents-DRnHlywG.js} +7 -7
  7. package/dist/{agents-list-tool-Bjq3Ps2w.js → agents-list-tool-Bsz2ydSo.js} +3 -3
  8. package/dist/{agents-list-tool-BT-6FZnx.js → agents-list-tool-C41TUO8C.js} +3 -3
  9. package/dist/{agents.config-DxAAWodz.js → agents.config-D-8oLvTL.js} +10 -10
  10. package/dist/{audit-CVKVyKoD.js → audit-CK0BMUWm.js} +10 -10
  11. package/dist/{audit-CSNd-phC.js → audit-bAFC5ey-.js} +9 -9
  12. package/dist/{auth-DA9L4qbt.js → auth-2GwvV8-B.js} +1 -1
  13. package/dist/{auth-B37vkorh.js → auth-CFiHbm6v.js} +1 -1
  14. package/dist/{auth-choice-CJymzvJ4.js → auth-choice-BwNqfULD.js} +4 -4
  15. package/dist/{auth-choice-DnBLAQyY.js → auth-choice-xdIz-tqo.js} +4 -4
  16. package/dist/{banner-BBtmUB00.js → banner-D8U02GWE.js} +1 -1
  17. package/dist/{browser-cli-CGV5xo5_.js → browser-cli-B4S7q1vd.js} +3 -3
  18. package/dist/{browser-cli-c6ldGDdr.js → browser-cli-DWWl_3f8.js} +3 -3
  19. package/dist/{browser-tool-DJyN0sH5.js → browser-tool-C095OFad.js} +7 -7
  20. package/dist/{browser-tool-BK_39O3I.js → browser-tool-C7x8YFTn.js} +7 -7
  21. package/dist/build-info.json +3 -3
  22. package/dist/bundled/boot-md/handler.js +135 -4
  23. package/dist/bundled/kg-message-sync/handler.js +3 -2
  24. package/dist/{call-BWHz092V.js → call-BH1OgnGt.js} +3 -3
  25. package/dist/{call-CNVcH2oR.js → call-DaiN21tT.js} +2 -2
  26. package/dist/{call-B6tcVJsz.js → call-lVSGXvNm.js} +1 -1
  27. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  28. package/dist/{canvas-tool-KclRfCb5.js → canvas-tool-BCySjCkU.js} +2 -2
  29. package/dist/{canvas-tool-B_Jq1m6-.js → canvas-tool-b9umP1PL.js} +2 -2
  30. package/dist/{channel-options-DT1bf8MM.js → channel-options-BhSTHUdE.js} +1 -1
  31. package/dist/{channel-options-DgcluI6F.js → channel-options-ZnqM-XwR.js} +1 -1
  32. package/dist/{channel-web-OnWoCODf.js → channel-web-mnjuaCAM.js} +135 -11
  33. package/dist/{channels-cli-BL_JtRd0.js → channels-cli-1YxtVy6F.js} +9 -9
  34. package/dist/{channels-cli-pkIsAVZj.js → channels-cli-DRBRx9Nm.js} +9 -9
  35. package/dist/{chrome-iX7jX5OS.js → chrome-CZH2epNE.js} +1 -1
  36. package/dist/{chrome-BdOQVkoq.js → chrome-CayJQXHk.js} +9 -9
  37. package/dist/{chrome-DgHLQTzd.js → chrome-Kb-zN-1U.js} +2 -2
  38. package/dist/{clawbot-cli-BbCypmzu.js → clawbot-cli-C5wgbNjN.js} +1 -1
  39. package/dist/{clawbot-cli-gP0JjrYs.js → clawbot-cli-ryT4wRfh.js} +1 -1
  40. package/dist/cli/daemon-cli.js +1 -1
  41. package/dist/{cli-DUo3q3T8.js → cli-BNAKtXkb.js} +3 -3
  42. package/dist/{cli-DkwhxNLS.js → cli-CdMtUWnf.js} +3 -3
  43. package/dist/{client-0Q0z75AO.js → client-4GINRkn3.js} +4 -4
  44. package/dist/{client-DGwQr6HD.js → client-A1Af97gJ.js} +4 -4
  45. package/dist/{client-DfeeU2OG.js → client-DhI_slxY.js} +4 -4
  46. package/dist/{client-u0H6YbL4.js → client-uZBU4o0-.js} +3 -3
  47. package/dist/{command-registry-2dkfDNs9.js → command-registry-CWDswhuz.js} +14 -14
  48. package/dist/{commands-registry-BHrFiCUX.js → commands-registry-BTS92V47.js} +2 -2
  49. package/dist/{commands-registry-DJC1InIg.js → commands-registry-DX4D41A4.js} +2 -2
  50. package/dist/{completion-cli-Dm_zSHn2.js → completion-cli-DNXaHtYm.js} +2 -2
  51. package/dist/{completion-cli-bn0-ohfm.js → completion-cli-DlHakkCA.js} +1 -1
  52. package/dist/{config-IIUu4YLi.js → config-Bad23vig.js} +3 -2
  53. package/dist/{config-CwI9qbLc.js → config-CJnHZ6tT.js} +2 -2
  54. package/dist/{config-CA9SbGZY.js → config-ULIrsUrF.js} +2 -2
  55. package/dist/{config-cli-BEeguDff.js → config-cli-COzM5Son.js} +4 -4
  56. package/dist/{config-cli-u1-3X8jD.js → config-cli-CzpyxdLG.js} +4 -4
  57. package/dist/{config-guard-Xxfp-ifF.js → config-guard-BBG7CM4Z.js} +3 -3
  58. package/dist/config-guard-C1FAfS4d.js +2 -0
  59. package/dist/{config-validation-Usm6uhfB.js → config-validation-BKuA0mkd.js} +2 -2
  60. package/dist/{config-validation-CjMhkuMa.js → config-validation-UxIy2sWe.js} +2 -2
  61. package/dist/{configure-BAZzvoAK.js → configure-52UcMwXn.js} +16 -16
  62. package/dist/{configure-Cwbp40XK.js → configure-CguZbLMl.js} +16 -16
  63. package/dist/{cron-cli-Cl7TbLdx.js → cron-cli-36Cz_NrS.js} +1 -1
  64. package/dist/{cron-cli-CYa3KrF1.js → cron-cli-DEw9bDao.js} +2 -2
  65. package/dist/{cron-tool-DflVbrpR.js → cron-tool-CnuvVvgq.js} +5 -5
  66. package/dist/{cron-tool-Dy19nFGY.js → cron-tool-X8kbYPMV.js} +5 -5
  67. package/dist/{daemon-cli-CPtjgknw.js → daemon-cli-Ca2eoh9D.js} +10 -10
  68. package/dist/{daemon-cli-CixlpEWT.js → daemon-cli-hj5oZeAU.js} +10 -10
  69. package/dist/daemon-cli.js +3 -2
  70. package/dist/daemon-install-helpers-D8fSRI0T.js +2 -0
  71. package/dist/daemon-install-helpers-DE1SJAht.js +2 -0
  72. package/dist/{daemon-runtime-thnunPGe.js → daemon-runtime-C0UWsej_.js} +1 -1
  73. package/dist/{daemon-runtime-BBIRyrKV.js → daemon-runtime-Dy-OUc18.js} +1 -1
  74. package/dist/{deliver-arEeQQHJ.js → deliver-BY_ZOJRJ.js} +5 -5
  75. package/dist/{deliver-H-iXFEE3.js → deliver-C1bBl42n.js} +3 -3
  76. package/dist/{deliver-CiN28QCt.js → deliver-DWPdKF44.js} +4 -4
  77. package/dist/{deps-D2eJTtWY.js → deps-DKuRLHBG.js} +6 -6
  78. package/dist/{devices-cli-CopnBFlo.js → devices-cli-BO2sNHNT.js} +1 -1
  79. package/dist/{devices-cli-BbA-NIxI.js → devices-cli-R0IkbrZu.js} +1 -1
  80. package/dist/{diagnostic-ClPdIo6B.js → diagnostic-Cl3uEh1I.js} +2 -2
  81. package/dist/{diagnostic-session-state-DD4itobG.js → diagnostic-session-state-Dq0GGJN-.js} +1 -1
  82. package/dist/{directory-cli-DITx4-po.js → directory-cli-CnUwk0iU.js} +2 -2
  83. package/dist/{directory-cli-Cs7AaG6k.js → directory-cli-DIbzMmUN.js} +2 -2
  84. package/dist/{dispatcher-BquAzCBK.js → dispatcher-MqSl1Kll.js} +7 -7
  85. package/dist/{dispatcher-SwUaqpQn.js → dispatcher-c-KZCtGa.js} +7 -7
  86. package/dist/{dm-policy-shared-BJYbc9e8.js → dm-policy-shared-CLiep-rz.js} +1 -1
  87. package/dist/{dm-policy-shared-CTl4t1cw.js → dm-policy-shared-yrgSr7PQ.js} +1 -1
  88. package/dist/{dns-cli-DqHzqw6d.js → dns-cli-CdL5VTsQ.js} +2 -2
  89. package/dist/{dns-cli-RRJtkcWo.js → dns-cli-uEzvZGuy.js} +2 -2
  90. package/dist/{doctor-completion-D990pj_f.js → doctor-completion-BIO1ml-4.js} +1 -1
  91. package/dist/doctor-completion-C-6V4bOL.js +2 -0
  92. package/dist/doctor-completion-Da18q6uh.js +2 -0
  93. package/dist/{doctor-completion-C2pKqEpP.js → doctor-completion-FE-HOhGA.js} +1 -1
  94. package/dist/{doctor-config-flow-Bln3MBNa.js → doctor-config-flow-CmGTYs67.js} +4 -4
  95. package/dist/{doctor-config-flow-Cuo1wlhB.js → doctor-config-flow-I-c9EB6e.js} +4 -4
  96. package/dist/entry.js +1 -1
  97. package/dist/{exec-approvals-cli-DyuaC7iM.js → exec-approvals-cli-BB6UI3mC.js} +2 -2
  98. package/dist/{exec-approvals-cli-B3afwmyy.js → exec-approvals-cli-DMlA8VUt.js} +2 -2
  99. package/dist/extensionAPI.d.ts +8 -0
  100. package/dist/extensionAPI.js +19 -19
  101. package/dist/{gateway-BTIu_WkF.js → gateway-C2etf3RM.js} +2 -2
  102. package/dist/{gateway-DWsA8AiN.js → gateway-CHsNxUxJ.js} +3 -3
  103. package/dist/{gateway-BWFLBWYE.js → gateway-CzCJQJHj.js} +3 -3
  104. package/dist/{gateway-cli-dYwREBbX.js → gateway-cli-B1dfOPMr.js} +159 -46
  105. package/dist/{gateway-cli-tfnPzrS0.js → gateway-cli-CDqZzGEK.js} +156 -43
  106. package/dist/{gateway-rpc-iUcohgOC.js → gateway-rpc-BorRW-tW.js} +1 -1
  107. package/dist/{gateway-rpc-DISv5FNW.js → gateway-rpc-DoWGDu53.js} +1 -1
  108. package/dist/{gateway-tool-V3nv-rvF.js → gateway-tool-CuLoIl7U.js} +3 -3
  109. package/dist/{gateway-tool-DdO8pujW.js → gateway-tool-uPKHvWcL.js} +3 -3
  110. package/dist/{github-copilot-auth-LwJGzpHj.js → github-copilot-auth-D2cXK0_7.js} +2 -2
  111. package/dist/{github-copilot-auth-6IEffFos.js → github-copilot-auth-Ddd7lvDL.js} +2 -2
  112. package/dist/{gmail-BuoyV4Np.js → gmail-D7l5YfAj.js} +1 -1
  113. package/dist/{gmail-BGbBY8iR.js → gmail-DQ48jQY-.js} +1 -1
  114. package/dist/{health-C7z2veIZ.js → health-CH0w5W34.js} +8 -8
  115. package/dist/{health-dMwMuCHD.js → health-D6n9mIOb.js} +8 -8
  116. package/dist/{hooks-cli-DpQ0Kkho.js → hooks-cli-CGWUEOpl.js} +2 -2
  117. package/dist/{hooks-cli-BMWKPVJp.js → hooks-cli-Qo6rhZ-q.js} +2 -2
  118. package/dist/{image-tool-D8wDxkRx.js → image-tool-B4fKiKu2.js} +2 -2
  119. package/dist/{image-tool-BqYO5O-3.js → image-tool-cib2VJkE.js} +2 -2
  120. package/dist/index.d.ts +9 -1
  121. package/dist/index.js +11 -11
  122. package/dist/{io-87ZCDtw1.js → io-D2T0KwYe.js} +2 -2
  123. package/dist/{io-dX6aN0-I.js → io-DWhsHb_h.js} +2 -2
  124. package/dist/{ir-xoKEMB_a.js → ir-_p6R0VXT.js} +2 -2
  125. package/dist/{knowledge-graph-BGqH6iEp.js → knowledge-graph-BKiuRnet.js} +1 -1
  126. package/dist/{lifecycle-core-D18AVKAw.js → lifecycle-core-DNqSLiR9.js} +3 -3
  127. package/dist/{lifecycle-core-CbEHpJjT.js → lifecycle-core-Dv6Y2s-1.js} +3 -3
  128. package/dist/{logs-cli-DgTaWydw.js → logs-cli-CXmi40WH.js} +2 -2
  129. package/dist/{logs-cli-CxWlPKlR.js → logs-cli-F-RAYI31.js} +2 -2
  130. package/dist/{manager-Ceza2Enp.js → manager-F7rDzi-_.js} +1 -1
  131. package/dist/{memory-cli-69-WrgnA.js → memory-cli-BVkodFu6.js} +3 -3
  132. package/dist/{memory-cli-fZmRRpWO.js → memory-cli-BYpHkFGw.js} +3 -3
  133. package/dist/{message-action-runner-DmbKeTkL.js → message-action-runner-CHrxSkge.js} +8 -8
  134. package/dist/{message-action-runner-BzauIqNS.js → message-action-runner-Dvk8IFpi.js} +8 -8
  135. package/dist/{message-tool-D5vrOcc4.js → message-tool-Be2kTIap.js} +6 -6
  136. package/dist/{message-tool-iJgtmRac.js → message-tool-CiPoXKtK.js} +6 -6
  137. package/dist/{model-catalog-BJJu7Y-K.js → model-catalog-DXonO3lD.js} +3 -3
  138. package/dist/{model-catalog-BJhTT_te.js → model-catalog-DdYPZDj0.js} +3 -3
  139. package/dist/{model-fallback-B_IR4wM4.js → model-fallback-DGrCGjis.js} +2 -2
  140. package/dist/{model-fallback-Cui8eNG0.js → model-fallback-DLcFpp9D.js} +3 -3
  141. package/dist/{model-fallback-DYdnIwoN.js → model-fallback-p7Wjn4Kg.js} +2 -2
  142. package/dist/{model-picker-DEZvfOtG.js → model-picker-CyF7R1Tk.js} +2 -2
  143. package/dist/{model-picker-BUeGAdfA.js → model-picker-DCN-zikS.js} +2 -2
  144. package/dist/{models-BKe2GIMf.js → models-C5NIvGQG.js} +12 -12
  145. package/dist/{models-cli-BgOzFK8J.js → models-cli-B-je-Fu6.js} +12 -12
  146. package/dist/{models-cli-D60Kkk8t.js → models-cli-C8GHr5Hc.js} +2 -2
  147. package/dist/{models-config-1NUFoR9h.js → models-config-DFTdHeZz.js} +2 -2
  148. package/dist/{models-config-sRpD9gQX.js → models-config-Dof8o9K-.js} +2 -2
  149. package/dist/{node-cli-DcjfrDaJ.js → node-cli-D0BhKuQM.js} +8 -8
  150. package/dist/{node-cli-Cv8gJpVW.js → node-cli-DhI2IgpK.js} +7 -7
  151. package/dist/{nodes-cli-CrlzYOkD.js → nodes-cli-Do4SOfRe.js} +5 -5
  152. package/dist/{nodes-cli-CLcrtfzN.js → nodes-cli-NTSdtNbM.js} +5 -5
  153. package/dist/{nodes-tool-DxpsNk1k.js → nodes-tool-B542JltK.js} +3 -3
  154. package/dist/{nodes-tool-ClqhSf4V.js → nodes-tool-gc0MeY8U.js} +3 -3
  155. package/dist/{nodes-utils-sk7SkOXJ.js → nodes-utils-BQ7_niGR.js} +1 -1
  156. package/dist/{nodes-utils-BAdzWq2Z.js → nodes-utils-DnVqS0gT.js} +1 -1
  157. package/dist/{nodes-utils-BMk2WuF2.js → nodes-utils-ESP44qeB.js} +1 -1
  158. package/dist/{onboard-DSgqWhz9.js → onboard-BrlNrDZR.js} +9 -9
  159. package/dist/{onboard-CD26erRG.js → onboard-DMdVqbJu.js} +9 -9
  160. package/dist/{onboard-channels-DYFmi11t.js → onboard-channels-B1odq8Pa.js} +1 -1
  161. package/dist/{onboard-channels-hoFDJFqN.js → onboard-channels-Bc0EWbkF.js} +1 -1
  162. package/dist/{onboard-channels-7nKLIMZ3.js → onboard-channels-CUT7TFAB.js} +1 -1
  163. package/dist/{onboard-channels-cgYswAAH.js → onboard-channels-DOws7yCU.js} +1 -1
  164. package/dist/{onboard-custom-Df3juWaB.js → onboard-custom-BTix-4gH.js} +2 -2
  165. package/dist/{onboard-custom-34QHYqay.js → onboard-custom-BlENe6tw.js} +1 -1
  166. package/dist/{onboard-custom-Cqc78i5P.js → onboard-custom-D9bbjX37.js} +2 -2
  167. package/dist/{onboard-custom-DQtlANRQ.js → onboard-custom-vNW9mjEy.js} +1 -1
  168. package/dist/{onboard-helpers-BxF3w4R5.js → onboard-helpers-CdkG3FJh.js} +5 -5
  169. package/dist/{onboard-helpers-CqjBXWOv.js → onboard-helpers-DOL7XT5w.js} +5 -5
  170. package/dist/{onboard-helpers-BzUHCvbd.js → onboard-helpers-DdV4FalP.js} +1 -1
  171. package/dist/{onboard-helpers-Cq-3sSbO.js → onboard-helpers-DvYmk4Z3.js} +1 -1
  172. package/dist/{onboard-remote-C4q8kRBm.js → onboard-remote-BE9WGIMB.js} +1 -1
  173. package/dist/{onboard-remote-CI039uE3.js → onboard-remote-CuhFGRCe.js} +1 -1
  174. package/dist/{onboard-skills-Dj1Dv2eJ.js → onboard-skills-B_t8vkkr.js} +1 -1
  175. package/dist/{onboard-skills-pc4sx1KV.js → onboard-skills-C208Z9aR.js} +1 -1
  176. package/dist/{onboarding-BJJPdTA6.js → onboarding-CBci11Hg.js} +11 -11
  177. package/dist/{onboarding-BxUShaVW.js → onboarding-wvCvkHuu.js} +11 -11
  178. package/dist/{onboarding.finalize-0e4Y8XBC.js → onboarding.finalize-BpeG_LfA.js} +9 -9
  179. package/dist/{onboarding.finalize-Cvhs2ymL.js → onboarding.finalize-IotPPzAe.js} +9 -9
  180. package/dist/{onboarding.gateway-config-Dd7Bt_0f.js → onboarding.gateway-config-CwSyOHdM.js} +3 -3
  181. package/dist/{onboarding.gateway-config-Dz2G7TSt.js → onboarding.gateway-config-D7bpPGDg.js} +3 -3
  182. package/dist/{outbound-send-deps-BECNMA9x.js → outbound-send-deps-BiCPa0bu.js} +6 -6
  183. package/dist/{outbound-session-BjJ_Kc2p.js → outbound-session-bdqdT6c0.js} +3 -3
  184. package/dist/{outbound-session-CrmR7m5Y.js → outbound-session-gwItY5Kf.js} +3 -3
  185. package/dist/{pairing-cli-Cnm45Q28.js → pairing-cli-CHcYti9d.js} +2 -2
  186. package/dist/{pairing-cli-CZv6ewRZ.js → pairing-cli-GMcpfddm.js} +2 -2
  187. package/dist/{pi-embedded-helpers-D9fHlhyc.js → pi-embedded-helpers-BFVQgHYJ.js} +1 -1
  188. package/dist/{pi-embedded-helpers-BjCYyLg-.js → pi-embedded-helpers-D6pGhqgI.js} +1 -1
  189. package/dist/{pi-embedded-helpers-6Q0O7Ax2.js → pi-embedded-helpers-RpDIkqxG.js} +5 -5
  190. package/dist/{pi-embedded-utils-BsHXtv_s.js → pi-embedded-utils-BEjLqKiL.js} +1 -1
  191. package/dist/{pi-embedded-utils-BsyXOK3B.js → pi-embedded-utils-Dl07kvbm.js} +1 -1
  192. package/dist/{pi-embedded-utils-DFygU0Hq.js → pi-embedded-utils-g5GthbqM.js} +1 -1
  193. package/dist/{pi-model-discovery-C9mzQkkq.js → pi-model-discovery-CQ80N8DY.js} +1 -1
  194. package/dist/{pi-tools.policy-CyixHAJx.js → pi-tools.policy-CixzOy4m.js} +3 -3
  195. package/dist/{plugin-registry-ClQCYDgr.js → plugin-registry-C7Y1ktn8.js} +3 -3
  196. package/dist/{plugin-registry-DubVIcYb.js → plugin-registry-DG11DxET.js} +3 -3
  197. package/dist/plugin-sdk/channels/discord.js +5 -3
  198. package/dist/plugin-sdk/channels/imessage.js +5 -3
  199. package/dist/plugin-sdk/channels/line.js +5 -3
  200. package/dist/plugin-sdk/channels/signal.js +5 -3
  201. package/dist/plugin-sdk/channels/slack.js +5 -3
  202. package/dist/plugin-sdk/channels/telegram.js +5 -3
  203. package/dist/plugin-sdk/channels/whatsapp.js +133 -4
  204. package/dist/plugin-sdk/config/types.gateway.d.ts +8 -0
  205. package/dist/plugin-sdk/config/zod-schema.d.ts +2 -0
  206. package/dist/plugin-sdk/core.js +5 -3
  207. package/dist/plugin-sdk/index.js +145 -16
  208. package/dist/plugin-sdk/infra/message-ledger-types.d.ts +6 -0
  209. package/dist/plugin-sdk/web/inbound/history-import.d.ts +58 -0
  210. package/dist/{plugins-cli-Cfbth6wy.js → plugins-cli-B33-EmSv.js} +4 -4
  211. package/dist/{plugins-cli-D1J1FjPZ.js → plugins-cli-BqzvGR-a.js} +4 -4
  212. package/dist/{program-BNOboVLd.js → program-DFexBhzE.js} +7 -7
  213. package/dist/{program-context-BvgimNof.js → program-context-BIlin27i.js} +42 -42
  214. package/dist/{prompt-select-styled-DOQApqqL.js → prompt-select-styled-D9INOuHo.js} +17 -17
  215. package/dist/{prompt-select-styled-CHhLDpFu.js → prompt-select-styled-DZxjZuQr.js} +17 -17
  216. package/dist/{push-apns-5-A137dF.js → push-apns-BjSGKBDn.js} +1 -1
  217. package/dist/{push-apns-BvtEOSzu.js → push-apns-Ce38yX-Q.js} +1 -1
  218. package/dist/{pw-ai-DBZCBB4A.js → pw-ai-B_yVsa7Y.js} +2 -2
  219. package/dist/{pw-ai-Dx-tC4ae.js → pw-ai-C3UXWAMi.js} +2 -2
  220. package/dist/{pw-ai-BUcuFzUA.js → pw-ai-DvZZMf9c.js} +2 -2
  221. package/dist/{pw-session-kvSkXTk5.js → pw-session-B-QP5UUg.js} +1 -1
  222. package/dist/{pw-session-HCWghVEO.js → pw-session-Bn2nA7mW.js} +1 -1
  223. package/dist/{pw-session-BxADE7ph.js → pw-session-ChISCyZS.js} +1 -1
  224. package/dist/{qr-cli-DhrNhN70.js → qr-cli-Bp8ZDWRE.js} +2 -2
  225. package/dist/{qr-cli-BmQ0-kcz.js → qr-cli-CNBJBiSg.js} +2 -2
  226. package/dist/{register.agent-Ch4E7Trn.js → register.agent-1ElLtqxB.js} +11 -11
  227. package/dist/{register.agent-ePYKy7GS.js → register.agent-BCCRMjBM.js} +8 -8
  228. package/dist/{register.channel-BvMIoupc.js → register.channel-CDRcmrW4.js} +2 -2
  229. package/dist/{register.channel-i4nFvWL2.js → register.channel-G0ZEQLvo.js} +2 -2
  230. package/dist/{register.configure-CKAivet1.js → register.configure-Br7l1eFA.js} +1 -1
  231. package/dist/{register.configure-DsYxhGCx.js → register.configure-uiB0IsSQ.js} +1 -1
  232. package/dist/{register.drone-JMpj1kWD.js → register.drone-0RImKhAz.js} +1 -1
  233. package/dist/{register.drone-DbyctqRy.js → register.drone-BVF23SAt.js} +1 -1
  234. package/dist/{register.maintenance-Bu5pNqR_.js → register.maintenance-D9g-yUsg.js} +5 -5
  235. package/dist/{register.maintenance-DlC9bFYr.js → register.maintenance-eWyQPi33.js} +5 -5
  236. package/dist/{register.message-DcZ38zPO.js → register.message-BrCxdS2X.js} +7 -7
  237. package/dist/{register.message-Bf3mgJmX.js → register.message-DUSrwutp.js} +8 -8
  238. package/dist/{register.onboard-Dq7qoeNn.js → register.onboard-CrTJnVfV.js} +1 -1
  239. package/dist/{register.onboard-CxuGjpvJ.js → register.onboard-DIo41tyc.js} +1 -1
  240. package/dist/{register.setup-7yUmHKiQ.js → register.setup-B_rBQxV8.js} +4 -4
  241. package/dist/{register.setup-BRljJtzO.js → register.setup-CYWQ8_Yg.js} +4 -4
  242. package/dist/{register.status-health-sessions-D8OPDFDo.js → register.status-health-sessions-CJla4eSY.js} +4 -4
  243. package/dist/{register.status-health-sessions-Be0pjOA2.js → register.status-health-sessions-DEa6PmDF.js} +6 -6
  244. package/dist/{register.subclis-BPX_ca3K.js → register.subclis-Dnq_ylof.js} +29 -29
  245. package/dist/{reply-DhwT8t3q.js → reply-D0CQyMj1.js} +40 -39
  246. package/dist/{reply-payloads-cXLwMDmA.js → reply-payloads-CSe-fnoQ.js} +2 -2
  247. package/dist/{reply-payloads-D_-_qjhk.js → reply-payloads-Doc7XJEA.js} +2 -2
  248. package/dist/{reply-prefix-DiUpMQsM.js → reply-prefix-Bf6xFewe.js} +1 -1
  249. package/dist/{reply-prefix-BsvRxJqb.js → reply-prefix-Dc5AW5Xm.js} +1 -1
  250. package/dist/{resolve-route-3TryCcGm.js → resolve-route-Bxvuje16.js} +1 -1
  251. package/dist/{resolve-route-BuDsUAp2.js → resolve-route-x8nX2Bvi.js} +2 -2
  252. package/dist/{routes-RPx8uptv.js → routes-CoNeVaLo.js} +4 -4
  253. package/dist/{routes-CDAhBrqH.js → routes-DkOoca7t.js} +4 -4
  254. package/dist/{rpc-0sy58ASH.js → rpc-BHHw6gvp.js} +1 -1
  255. package/dist/{rpc-CjI--xg8.js → rpc-DTW7KUND.js} +1 -1
  256. package/dist/{run-main-DafJY5Bc.js → run-main-E2vGCKLR.js} +20 -20
  257. package/dist/{sandbox-BGpWI5iG.js → sandbox-CGRbJpDU.js} +7 -7
  258. package/dist/{sandbox-zkn40jkP.js → sandbox-CHH3MkNd.js} +7 -7
  259. package/dist/{sandbox-cli-DFOcSc1Z.js → sandbox-cli-DjkEUwwk.js} +4 -4
  260. package/dist/{sandbox-cli-C_MWJfnl.js → sandbox-cli-OEmHLhQL.js} +4 -4
  261. package/dist/{security-cli-DXC4pUs9.js → security-cli-DL6wp1MI.js} +3 -3
  262. package/dist/{security-cli-DHaI2M0u.js → security-cli-qLsZmwtX.js} +3 -3
  263. package/dist/{send-DtzYU8UN.js → send-B8eQkbyo.js} +2 -2
  264. package/dist/{send-DRXqsNed.js → send-Bz-RkmpO.js} +2 -2
  265. package/dist/{send-DcbsEBHN.js → send-CCuZYSz3.js} +2 -2
  266. package/dist/{send-Cq75lYpq.js → send-CKeIogyK.js} +3 -3
  267. package/dist/{send-CQlBivex.js → send-CN13UpNn.js} +2 -2
  268. package/dist/{send-CnfQshKG.js → send-CngzhczN.js} +2 -2
  269. package/dist/{send-DSNvHzo2.js → send-DmxWOwB1.js} +2 -2
  270. package/dist/{send-BAGR79bg.js → send-Dy5OuEh7.js} +2 -2
  271. package/dist/{send-ChdxopHM.js → send-Li3zMEsA.js} +3 -3
  272. package/dist/{server-context-B5J56_wO.js → server-context-BLCsEJmC.js} +7 -7
  273. package/dist/{server-context-CpEmSoJu.js → server-context-CyRjTQlV.js} +7 -7
  274. package/dist/{server-context-BmpZ_o4F.js → server-context-DKIIU2b6.js} +5 -5
  275. package/dist/{server-node-events-CXzX6Y8i.js → server-node-events-DRsJK9ry.js} +10 -10
  276. package/dist/{server-node-events-2YO5oqx8.js → server-node-events-K-ULgWe3.js} +8 -8
  277. package/dist/{session-status-tool-BmqwcbLx.js → session-status-tool-_pn0YBwS.js} +7 -7
  278. package/dist/{session-status-tool-xGk_5uUB.js → session-status-tool-fZyi-JB4.js} +6 -6
  279. package/dist/{session-utils-C6V1m0Vd.js → session-utils-JpLf3m4T.js} +4 -4
  280. package/dist/{sessions-DbE8BbaC.js → sessions-CT7bhDNg.js} +4 -4
  281. package/dist/{sessions-C8o68kYY.js → sessions-CeClbleZ.js} +1 -1
  282. package/dist/{sessions-D1kXHQLO.js → sessions-DYp3Y72l.js} +3 -3
  283. package/dist/{sessions-BUJYqVut.js → sessions-DlMPB0jU.js} +3 -3
  284. package/dist/{sessions-helpers-D9_LcHW9.js → sessions-helpers-B4-7MIpM.js} +3 -3
  285. package/dist/{sessions-helpers-BbVA3qd5.js → sessions-helpers-CtUSER6R.js} +3 -3
  286. package/dist/{sessions-helpers-CAPPYXKN.js → sessions-helpers-DpSgUfas.js} +3 -3
  287. package/dist/{sessions-history-tool-BQLaFhrp.js → sessions-history-tool-Bh9spkpj.js} +5 -5
  288. package/dist/{sessions-history-tool-DJcUto6R.js → sessions-history-tool-dLSlgm-R.js} +5 -5
  289. package/dist/{sessions-list-tool-CSC9avk_.js → sessions-list-tool-CvZ_yxT5.js} +5 -5
  290. package/dist/{sessions-list-tool-BL4MdjbT.js → sessions-list-tool-Dr0jWvaF.js} +5 -5
  291. package/dist/{sessions-send-tool-z8adTMYm.js → sessions-send-tool-CEJy5Ycp.js} +5 -5
  292. package/dist/{sessions-send-tool-Cl_QuA26.js → sessions-send-tool-v4fWraD9.js} +5 -5
  293. package/dist/{sessions-spawn-tool-nG9L-ws3.js → sessions-spawn-tool-CfHjjhO1.js} +1 -1
  294. package/dist/{sessions-spawn-tool-CD-4mZEp.js → sessions-spawn-tool-DLFvrCQh.js} +1 -1
  295. package/dist/{shared-ChHpaKWN.js → shared-CEynHIUO.js} +2 -2
  296. package/dist/{shared-JG7DJRnN.js → shared-CvY-toLn.js} +2 -2
  297. package/dist/{skills-cli-DeiubHew.js → skills-cli-BDxwDf45.js} +2 -2
  298. package/dist/{skills-cli-B3OA3JEO.js → skills-cli-DRInfkS0.js} +2 -2
  299. package/dist/{status-DGBXWkfl.js → status-C2Gnsrky.js} +3 -3
  300. package/dist/{status-D0e-3_81.js → status-CaWXyjbk.js} +12 -12
  301. package/dist/{status-BTAp_Ctp.js → status-Cbd-T-8e.js} +3 -3
  302. package/dist/{status-DvuC2ZVh.js → status-CtTyPHvB.js} +13 -13
  303. package/dist/{status.update-BhAeIdYw.js → status.update-CYQXDEMu.js} +1 -1
  304. package/dist/{status.update-CwCKgSCv.js → status.update-DNHW4Mlx.js} +1 -1
  305. package/dist/{subagent-registry-Dr8IyuUy.js → subagent-registry-C4Xeveht.js} +41 -40
  306. package/dist/{subagents-tool-D8diKIHn.js → subagents-tool-BHb3ywK_.js} +6 -6
  307. package/dist/{subagents-tool-Fdhl4edt.js → subagents-tool-CGAEUIiu.js} +6 -6
  308. package/dist/{system-cli--9cvYplv.js → system-cli-B04yqmhf.js} +1 -1
  309. package/dist/{system-cli-CPDkQ624.js → system-cli-D_OwQRD2.js} +1 -1
  310. package/dist/{systemd-hints-BkXFTPT6.js → systemd-hints-Dtvkhe6-.js} +1 -1
  311. package/dist/{systemd-hints-DscCaFfc.js → systemd-hints-bD1RRy6m.js} +1 -1
  312. package/dist/{tailscale-B-h5FPXf.js → tailscale-CTwxLN7C.js} +3 -3
  313. package/dist/{tailscale-EgZafNge.js → tailscale-DztQ748s.js} +3 -3
  314. package/dist/{targets-F13czdSg.js → targets-ClLWbDD3.js} +1 -1
  315. package/dist/{tools-BOIsoaYH.js → tools-DHQl5ndU.js} +31 -30
  316. package/dist/{tools-cli-_y-n31XD.js → tools-cli-BW8kXqVK.js} +3 -3
  317. package/dist/{tools-cli-CK_K0-Iu.js → tools-cli-Bllm2jJj.js} +3 -3
  318. package/dist/{tts-5tm68-op.js → tts-BIIXe002.js} +1 -1
  319. package/dist/{tts-tool-C3UBjBDz.js → tts-tool-BIGYsbDN.js} +2 -2
  320. package/dist/{tts-tool-oyXCB2AA.js → tts-tool-BSrhnCjz.js} +2 -2
  321. package/dist/{tui-vUCv9pxi.js → tui-CZgCvWW1.js} +5 -5
  322. package/dist/{tui-KIOXfr10.js → tui-D-Vx6Gw3.js} +6 -6
  323. package/dist/{tui-cli-DWemmuIC.js → tui-cli-BfrtMM0o.js} +1 -1
  324. package/dist/{tui-cli-8g3-kGSb.js → tui-cli-Cc9b7CCN.js} +1 -1
  325. package/dist/{update-cli-DpDtC2Nb.js → update-cli-Bo37T55x.js} +8 -8
  326. package/dist/{update-cli-CNUaJqhY.js → update-cli-tkEb6Xq8.js} +8 -8
  327. package/dist/{validation-BNYj_b3N.js → validation-CG8Ui8_v.js} +2 -1
  328. package/dist/{validation-B0-Z-cLg.js → validation-T0CNq_JP.js} +2 -1
  329. package/dist/web-CAiLxEl2.js +2 -0
  330. package/dist/{web-CmaUi26F.js → web-DADihYVj.js} +8 -8
  331. package/dist/{web-search-ivwGo7WE.js → web-search-CGUGt246.js} +4 -4
  332. package/dist/{web-search-HRdWbyJV.js → web-search-D6Qi_dj3.js} +4 -4
  333. package/dist/{webhooks-cli-D60UbI06.js → webhooks-cli-BBWQzvqb.js} +4 -4
  334. package/dist/{webhooks-cli-ChRo9bvp.js → webhooks-cli-BZJlzHtN.js} +4 -4
  335. package/dist/{workspace-CcTveER4.js → workspace-5GvwPOFe.js} +1 -1
  336. package/dist/{workspace-dirs-Dms2kv8S.js → workspace-dirs-BchHf5Yd.js} +3 -3
  337. package/extensions/bluebubbles/index.js +2 -1
  338. package/extensions/feishu/index.js +2 -1
  339. package/extensions/flows/index.js +2 -1
  340. package/extensions/googlechat/index.js +2 -1
  341. package/extensions/irc/index.js +2 -1
  342. package/extensions/matrix/{credentials-MdwNeLfw.mjs → credentials-B1q3x-N0.mjs} +2 -1
  343. package/extensions/matrix/index.js +3 -3
  344. package/extensions/matrix/{matrix-BXJXoQAx.mjs → matrix-B9amoffh.mjs} +2 -2
  345. package/extensions/matrix/{resolve-targets-BJoLSX6e.mjs → resolve-targets-Dw7tv-7K.mjs} +2 -2
  346. package/extensions/mattermost/index.js +2 -1
  347. package/extensions/nextcloud-talk/index.js +2 -1
  348. package/extensions/wati/index.js +2 -1
  349. package/extensions/weixin/index.js +2 -1
  350. package/extensions/zalo/index.js +2 -1
  351. package/extensions/zalouser/index.js +2 -1
  352. package/package.json +3 -2
  353. package/dist/config-guard-B6sYyIlj.js +0 -2
  354. package/dist/daemon-install-helpers-CHH0UDkE.js +0 -2
  355. package/dist/daemon-install-helpers-CxjJzXqx.js +0 -2
  356. package/dist/doctor-completion-BrP8lQb_.js +0 -2
  357. package/dist/doctor-completion-CJTpKe6j.js +0 -2
  358. package/dist/web-BoQgU3SR.js +0 -2
@@ -2,10 +2,10 @@ import { St as theme, g as defaultRuntime, xt as isRich } from "./entry.js";
2
2
  import { n as formatTimeAgo } from "./format-relative-Bjc3l98W.js";
3
3
  import { c as readExecApprovalsSnapshot, p as saveExecApprovals } from "./exec-approvals-9-5NQEhL.js";
4
4
  import { t as formatDocsLink } from "./links-B03m-P2Z.js";
5
- import { n as callGatewayFromCli } from "./gateway-rpc-DISv5FNW.js";
5
+ import { n as callGatewayFromCli } from "./gateway-rpc-DoWGDu53.js";
6
6
  import { t as renderTable } from "./table-C83lTYaN.js";
7
7
  import { t as describeUnknownError } from "./shared-C-PEQv_O.js";
8
- import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-0sy58ASH.js";
8
+ import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-BHHw6gvp.js";
9
9
  import JSON5 from "json5";
10
10
  import fs from "node:fs/promises";
11
11
  //#region src/cli/exec-approvals-cli.ts
@@ -2308,6 +2308,14 @@ type GatewayConfig = {
2308
2308
  messageLedger?: {
2309
2309
  enabled?: boolean;
2310
2310
  dbPath?: string;
2311
+ /**
2312
+ * Import a channel's existing conversations as ledger rows on (re)connect,
2313
+ * so they can be harvested into CRM contacts even before any new message
2314
+ * arrives. Currently WhatsApp only (Baileys `messaging-history.set`): each
2315
+ * 1:1 chat becomes one idempotent inbound shell row. Enabling this also
2316
+ * requests a full WhatsApp history sync. Off by default. Fork-specific.
2317
+ */
2318
+ importContacts?: boolean;
2311
2319
  };
2312
2320
  /**
2313
2321
  * Memory sync: fire-and-forget shipping of captured agent memories to the hub
@@ -1,13 +1,13 @@
1
- import { f as extractTextFromChatContent, m as __exportAll } from "./pi-embedded-utils-BsHXtv_s.js";
1
+ import { f as extractTextFromChatContent, m as __exportAll } from "./pi-embedded-utils-BEjLqKiL.js";
2
2
  import { A as normalizeE164, H as logVerbose, N as resolveUserPath, k as isRecord, n as defaultRuntime, t as createSubsystemLogger, u as normalizeChannelId, ut as resolveStateDir, z as truncateUtf16Safe } from "./subsystem-Bz8lTz2g.js";
3
3
  import { A as DEFAULT_AGENT_ID, B as sanitizeAgentId, C as ensureAgentWorkspace, F as normalizeAccountId, G as parseAgentSessionKey, I as normalizeAgentId, M as buildAgentMainSessionKey, R as resolveAgentIdFromSessionKey, W as isSubagentSessionKey, c as resolveAgentWorkspaceDir, n as resolveAgentConfig, r as resolveAgentDir, u as resolveSessionAgentId, z as resolveThreadSessionKeys } from "./agent-scope-G3FqXqqy.js";
4
4
  import { i as logDebug, s as logWarn } from "./exec-DWwKe_AW.js";
5
5
  import { E as resolveEnvApiKey, S as getApiKeyForModel, Y as ensureAuthProfileStore, d as resolveDefaultModelForAgent, dt as DEFAULT_MODEL, f as resolveModelRefFromString, ft as DEFAULT_PROVIDER, it as resolveCliName, m as resolveThinkingDefault, o as modelKey, q as listProfilesForProvider, r as buildModelAliasIndex, rt as formatCliCommand, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey } from "./model-selection-CpCBvCTw.js";
6
- import { A as abortEmbeddedPiRun, C as replaceSubagentRunAfterSteer, D as resolveAgentTimeoutMs, E as clearSessionQueues, F as resolveAgentIdentity, M as resolveUserTimeFormat, N as resolveUserTimezone, O as runEmbeddedPiAgent, P as getSubagentDepthFromSessionStore, S as markSubagentRunTerminated, T as getFollowupQueueDepth, _ as applyModelOverrideToSessionEntry, a as truncateLine, b as listSubagentRunsForRequester, c as resolveSubagentLabel, d as normalizeGroupActivation, f as loadProviderUsageSummary, g as buildStatusMessage, h as resolveModelAuthLabel, i as resolveTotalTokens, j as formatUserTime, k as loadCombinedSessionStoreForGateway, l as resolveSubagentTargetFromRuns, m as resolveUsageProviderId, n as formatDurationCompact, o as spawnSubagentDirect, p as formatUsageWindowSummary, r as formatTokenUsageDisplay, s as getTemplate, t as resolvePluginTools, u as sortSubagentRuns, v as loadModelCatalog, w as resolveQueueSettings, x as markSubagentRunForSteerRestart, y as clearSubagentRunSteerRestart } from "./tools-BOIsoaYH.js";
6
+ import { A as abortEmbeddedPiRun, C as replaceSubagentRunAfterSteer, D as resolveAgentTimeoutMs, E as clearSessionQueues, F as resolveAgentIdentity, M as resolveUserTimeFormat, N as resolveUserTimezone, O as runEmbeddedPiAgent, P as getSubagentDepthFromSessionStore, S as markSubagentRunTerminated, T as getFollowupQueueDepth, _ as applyModelOverrideToSessionEntry, a as truncateLine, b as listSubagentRunsForRequester, c as resolveSubagentLabel, d as normalizeGroupActivation, f as loadProviderUsageSummary, g as buildStatusMessage, h as resolveModelAuthLabel, i as resolveTotalTokens, j as formatUserTime, k as loadCombinedSessionStoreForGateway, l as resolveSubagentTargetFromRuns, m as resolveUsageProviderId, n as formatDurationCompact, o as spawnSubagentDirect, p as formatUsageWindowSummary, r as formatTokenUsageDisplay, s as getTemplate, t as resolvePluginTools, u as sortSubagentRuns, v as loadModelCatalog, w as resolveQueueSettings, x as markSubagentRunForSteerRestart, y as clearSubagentRunSteerRestart } from "./tools-DHQl5ndU.js";
7
7
  import { n as recallMemories } from "./memory-sink-Cai9LXP2.js";
8
- import { n as createKnowledgeGraphTools, t as KnowledgeGraphSession } from "./knowledge-graph-BGqH6iEp.js";
9
- import { _ as parseDurationMs, i as resolveConfigSnapshotHash, n as loadConfig } from "./config-IIUu4YLi.js";
10
- import { _ as parseReplyDirectives, g as normalizeTargetForProvider, h as normalizeChannelTargetInput, m as buildTargetResolverSignature } from "./ir-xoKEMB_a.js";
8
+ import { n as createKnowledgeGraphTools, t as KnowledgeGraphSession } from "./knowledge-graph-BKiuRnet.js";
9
+ import { _ as parseDurationMs, i as resolveConfigSnapshotHash, n as loadConfig } from "./config-Bad23vig.js";
10
+ import { _ as parseReplyDirectives, g as normalizeTargetForProvider, h as normalizeChannelTargetInput, m as buildTargetResolverSignature } from "./ir-_p6R0VXT.js";
11
11
  import { t as wrapToolWithTracking } from "./tool-tracking-BfpUmfBM.js";
12
12
  import { n as formatErrorMessage } from "./errors-DInjg6Ku.js";
13
13
  import { n as normalizeSecretInput } from "./normalize-secret-input-Ct6H42vX.js";
@@ -16,30 +16,30 @@ import { h as imageMimeFromFormat, i as resolveImageSanitizationLimits, p as ext
16
16
  import { a as readNumberParam, i as jsonResult, n as imageResult, o as readStringArrayParam, r as imageResultFromFile, s as readStringParam } from "./common-mPQVYX41.js";
17
17
  import { a as INTERNAL_MESSAGE_CHANNEL, h as GATEWAY_CLIENT_NAMES, l as listDeliverableMessageChannels, m as GATEWAY_CLIENT_MODES, o as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, u as normalizeMessageChannel } from "./input-provenance-BUf7opno.js";
18
18
  import { a as normalizeWhatsAppTarget, f as resolveDiscordAccount, i as isWhatsAppGroupJid, l as resolveSlackAccount, n as listChannelPlugins, r as normalizeChannelId$1, t as getChannelPlugin } from "./plugins-7HkLtO7B.js";
19
- import { V as normalizeStringEntriesLower, i as loadSessionStore, l as updateSessionStore, n as appendAssistantMessageToSessionTranscript, o as recordSessionMetaFromInbound, s as saveSessionStore, t as extractDeliveryInfo, y as capArrayByJsonBytes } from "./sessions-C8o68kYY.js";
19
+ import { V as normalizeStringEntriesLower, i as loadSessionStore, l as updateSessionStore, n as appendAssistantMessageToSessionTranscript, o as recordSessionMetaFromInbound, s as saveSessionStore, t as extractDeliveryInfo, y as capArrayByJsonBytes } from "./sessions-CeClbleZ.js";
20
20
  import { n as SILENT_REPLY_TOKEN } from "./tokens-Dxroopzl.js";
21
21
  import { i as stripHeartbeatToken, n as AGENT_LANE_SUBAGENT, t as AGENT_LANE_NESTED } from "./lanes-BR5o5mOf.js";
22
- import { _ as listChannelSupportedActions, a as ambiguousTargetError, b as parseTelegramTarget, f as createSlackWebClient, o as unknownTargetError, r as resolveOutboundTarget, t as buildAgentSessionKey, x as resolveTelegramTargetChatType } from "./resolve-route-BuDsUAp2.js";
23
- import { b as textToSpeech } from "./tts-5tm68-op.js";
24
- import { l as assertMediaNotDataUrl, p as resolveSandboxedMediaSource } from "./workspace-CcTveER4.js";
25
- import { x as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-iX7jX5OS.js";
26
- import { c as DEFAULT_UPLOAD_DIR, l as resolvePathsWithinRoot, o as saveMediaBuffer, r as resolveBrowserConfig, s as DEFAULT_DOWNLOAD_DIR } from "./server-context-BmpZ_o4F.js";
22
+ import { _ as listChannelSupportedActions, a as ambiguousTargetError, b as parseTelegramTarget, f as createSlackWebClient, o as unknownTargetError, r as resolveOutboundTarget, t as buildAgentSessionKey, x as resolveTelegramTargetChatType } from "./resolve-route-x8nX2Bvi.js";
23
+ import { b as textToSpeech } from "./tts-BIIXe002.js";
24
+ import { l as assertMediaNotDataUrl, p as resolveSandboxedMediaSource } from "./workspace-5GvwPOFe.js";
25
+ import { x as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CZH2epNE.js";
26
+ import { c as DEFAULT_UPLOAD_DIR, l as resolvePathsWithinRoot, o as saveMediaBuffer, r as resolveBrowserConfig, s as DEFAULT_DOWNLOAD_DIR } from "./server-context-DKIIU2b6.js";
27
27
  import { t as SsrFBlockedError } from "./ssrf-DWqM0QRy.js";
28
- import { a as decodeDataUrl, f as normalizeWorkspaceDir, h as ensureOpenClawModelsJson, i as coerceImageModelConfig, o as resolveProviderVisionModelFromConfig, p as resolveWorkspaceRoot, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as runWithImageModelFallback } from "./model-fallback-Cui8eNG0.js";
29
- import { n as randomIdempotencyKey, t as callGateway } from "./call-B6tcVJsz.js";
30
- import { n as readGatewayCallOptions, r as resolveGatewayOptions$1, t as callGatewayTool } from "./gateway-BTIu_WkF.js";
31
- import { n as resolveNodeId, r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-sk7SkOXJ.js";
28
+ import { a as decodeDataUrl, f as normalizeWorkspaceDir, h as ensureOpenClawModelsJson, i as coerceImageModelConfig, o as resolveProviderVisionModelFromConfig, p as resolveWorkspaceRoot, r as coerceImageAssistantText, s as minimaxUnderstandImage, t as runWithImageModelFallback } from "./model-fallback-DLcFpp9D.js";
29
+ import { n as randomIdempotencyKey, t as callGateway } from "./call-lVSGXvNm.js";
30
+ import { n as readGatewayCallOptions, r as resolveGatewayOptions$1, t as callGatewayTool } from "./gateway-C2etf3RM.js";
31
+ import { n as resolveNodeId, r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-BQ7_niGR.js";
32
32
  import { t as fetchWithSsrFGuard } from "./fetch-guard-6r0F3dD_.js";
33
- import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-C9mzQkkq.js";
33
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CQ80N8DY.js";
34
34
  import { t as stripReasoningTagsFromText } from "./reasoning-tags-DYznQbdm.js";
35
35
  import { n as loadWebMedia, t as getDefaultLocalRoots } from "./load-DKwJGFTz.js";
36
- import { a as stripToolMessages, c as resolveEffectiveSessionToolsVisibility, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, h as shouldResolveSessionIdInput, l as resolveSandboxedSessionToolContext, m as resolveSessionReference, n as deriveChannel, o as createAgentToAgentPolicy, p as resolveMainSessionAlias, r as extractAssistantText, s as createSessionVisibilityGuard, t as classifySessionKind, u as isRequesterSpawnedSessionVisible } from "./sessions-helpers-D9_LcHW9.js";
36
+ import { a as stripToolMessages, c as resolveEffectiveSessionToolsVisibility, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, h as shouldResolveSessionIdInput, l as resolveSandboxedSessionToolContext, m as resolveSessionReference, n as deriveChannel, o as createAgentToAgentPolicy, p as resolveMainSessionAlias, r as extractAssistantText, s as createSessionVisibilityGuard, t as classifySessionKind, u as isRequesterSpawnedSessionVisible } from "./sessions-helpers-B4-7MIpM.js";
37
37
  import { n as wrapExternalContent, r as wrapWebContent } from "./external-content-BeJGOgQK.js";
38
38
  import { t as scheduleGatewaySigusr1Restart } from "./restart-DTw1wkyF.js";
39
39
  import { a as applyTargetToParams, i as stringEnum, n as channelTargetsSchema, o as actionHasTarget, r as optionalStringEnum, s as actionRequiresTarget, t as channelTargetSchema } from "./typebox-AaaT2Z0h.js";
40
- import { i as throwIfAborted, r as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-arEeQQHJ.js";
40
+ import { i as throwIfAborted, r as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BY_ZOJRJ.js";
41
41
  import { a as writeCameraClipPayloadToFile, c as asString, i as writeBase64ToFile, l as resolveTempPathParts, n as parseCameraClipPayload, o as writeUrlToFile, r as parseCameraSnapPayload, s as asRecord, t as cameraTempPath } from "./nodes-camera-C2Ht8dH1.js";
42
- import { _ as fetchBrowserJson, a as browserSnapshot, c as browserStop, d as browserArmDialog, f as browserArmFileChooser, g as browserWaitForDownload, h as browserScreenshotAction, i as browserProfiles, l as browserTabs, m as browserNavigate, n as browserFocusTab, o as browserStart, p as browserDownload, r as browserOpenTab, s as browserStatus, t as browserCloseTab, u as browserAct, v as buildProfileQuery, y as withBaseUrl } from "./client-0Q0z75AO.js";
42
+ import { _ as fetchBrowserJson, a as browserSnapshot, c as browserStop, d as browserArmDialog, f as browserArmFileChooser, g as browserWaitForDownload, h as browserScreenshotAction, i as browserProfiles, l as browserTabs, m as browserNavigate, n as browserFocusTab, o as browserStart, p as browserDownload, r as browserOpenTab, s as browserStatus, t as browserCloseTab, u as browserAct, v as buildProfileQuery, y as withBaseUrl } from "./client-4GINRkn3.js";
43
43
  import { a as resolveTimeoutSeconds, i as resolveCacheTtlMs, n as readCacheShared, o as withTimeout, r as readResponseText, s as writeCacheShared, t as normalizeCacheKey } from "./web-shared-wFHHPl7K.js";
44
44
  import * as path$1 from "node:path";
45
45
  import path from "node:path";
@@ -1,8 +1,8 @@
1
1
  import { st as resolveGatewayPort } from "./subsystem-Bz8lTz2g.js";
2
- import { n as loadConfig } from "./config-IIUu4YLi.js";
2
+ import { n as loadConfig } from "./config-Bad23vig.js";
3
3
  import { s as readStringParam } from "./common-mPQVYX41.js";
4
4
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./input-provenance-BUf7opno.js";
5
- import { t as callGateway } from "./call-B6tcVJsz.js";
5
+ import { t as callGateway } from "./call-lVSGXvNm.js";
6
6
  //#region src/agents/tools/automation/gateway.ts
7
7
  function readGatewayCallOptions(params) {
8
8
  return {
@@ -1,9 +1,9 @@
1
1
  import { f as resolveGatewayPort } from "./paths-Ce170Tex.js";
2
- import { i as loadConfig } from "./io-dX6aN0-I.js";
3
- import "./config-CwI9qbLc.js";
2
+ import { i as loadConfig } from "./io-DWhsHb_h.js";
3
+ import "./config-CJnHZ6tT.js";
4
4
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-_gH8UHtd.js";
5
5
  import { s as readStringParam } from "./common-CRD8HhuP.js";
6
- import { n as callGateway } from "./call-BWHz092V.js";
6
+ import { n as callGateway } from "./call-BH1OgnGt.js";
7
7
  //#region src/agents/tools/automation/gateway.ts
8
8
  function readGatewayCallOptions(params) {
9
9
  return {
@@ -1,7 +1,7 @@
1
1
  import { f as resolveGatewayPort } from "./paths-aEg9UgoF.js";
2
- import { i as loadConfig } from "./io-87ZCDtw1.js";
3
- import "./config-CA9SbGZY.js";
4
- import { n as callGateway } from "./call-CNVcH2oR.js";
2
+ import { i as loadConfig } from "./io-D2T0KwYe.js";
3
+ import "./config-ULIrsUrF.js";
4
+ import { n as callGateway } from "./call-DaiN21tT.js";
5
5
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C02KGm4w.js";
6
6
  import { s as readStringParam } from "./common-BHzo6lXS.js";
7
7
  //#region src/agents/tools/automation/gateway.ts
@@ -14,47 +14,47 @@ import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from
14
14
  import "./skills-DMPRReoe.js";
15
15
  import { l as isTestDefaultMemorySlotDisabled, n as loadPluginManifestRegistry } from "./manifest-registry-DCVfom1u.js";
16
16
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DDzkv-Rj.js";
17
- import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-BNYj_b3N.js";
18
- 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-87ZCDtw1.js";
19
- import { n as migrateLegacyConfig } from "./config-CA9SbGZY.js";
17
+ import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-CG8Ui8_v.js";
18
+ 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-D2T0KwYe.js";
19
+ import { n as migrateLegacyConfig } from "./config-ULIrsUrF.js";
20
20
  import { $ as validateNodeDescribeParams, A as validateCronRunsParams, At as validateToolsUpdateParams, B as validateExecApprovalRequestParams, Bt as errorShape, C as validateConfigSchemaParams, Ct as validateSkillsStatusParams, D as validateCronListParams, Dt as validateTelegramValidateTokenParams, E as validateCronAddParams, Et as validateTalkModeParams, F as validateDevicePairRejectParams, Ft as validateWizardCancelParams, G as validateExecApprovalsSetParams, Gt as deriveDeviceIdFromPublicKey, H as validateExecApprovalsGetParams, Ht as buildDeviceAuthPayload, I as validateDevicePairRemoveParams, It as validateWizardNextParams, J as validateMeshPlanParams, Jt as verifyDeviceSignature, K as validateLogsTailParams, L as validateDeviceTokenRevokeParams, Lt as validateWizardStartParams, M as validateCronUpdateParams, Mt as validateWakeParams, N as validateDevicePairApproveParams, Nt as validateWebLoginStartParams, O as validateCronRemoveParams, Ot as validateToolsOverridesSetParams, P as validateDevicePairListParams, Pt as validateWebLoginWaitParams, Q as validateModelsListParams, R as validateDeviceTokenRotateParams, Rt as validateWizardStatusParams, S as validateConfigPatchParams, St as validateSkillsInstallParams, T as validateConnectParams, Tt as validateTalkConfigParams, 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 validateSessionsPreviewParams, a as validateAgentWaitParams, at as validateNodePairListParams, b as validateConfigApplyParams, bt as validateSessionsUsageParams, c as validateAgentsFilesGetParams, ct as validateNodePairVerifyParams, d as validateAgentsListParams, dt as validateRequestFrame, et as validateNodeEventParams, f as validateAgentsSkillsSetParams, ft as validateSendParams, g as validateChatAbortParams, gt as validateSessionsPatchParams, h as validateChannelsStatusParams, ht as validateSessionsListParams, i as validateAgentParams, it as validateNodePairApproveParams, j as validateCronStatusParams, jt as validateUpdateRunParams, k as validateCronRunParams, kt as validateToolsStatusParams, l as validateAgentsFilesListParams, lt as validateNodeRenameParams, m as validateChannelsLogoutParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodeInvokeResultParams, o as validateAgentsCreateParams, ot as validateNodePairRejectParams, p as validateAgentsUpdateParams, pt as validateSessionsCompactParams, q as validateMeshPlanAutoParams, qt as normalizeDevicePublicKeyBase64Url, r as validateAgentIdentityParams, rt as validateNodeListParams, s as validateAgentsDeleteParams, st as validateNodePairRequestParams, tt as validateNodeInvokeParams, u as validateAgentsFilesSetParams, ut as validatePollParams, v as validateChatInjectParams, vt as validateSessionsResetParams, w as validateConfigSetParams, wt as validateSkillsUpdateParams, x as validateConfigGetParams, xt as validateSkillsBinsParams, y as validateChatSendParams, yt as validateSessionsResolveParams, z as validateDiscordValidateTokenParams, zt as ErrorCodes } from "./client-DaLwaG9G.js";
21
21
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C0DLwT7t.js";
22
- import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-CNVcH2oR.js";
22
+ import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-DaiN21tT.js";
23
23
  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-C02KGm4w.js";
24
24
  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";
25
25
  import { i as normalizeInputProvenance } from "./input-provenance-ChJN5mZj.js";
26
- import { $ as isSteppedBuildEnabled, $t as setSkillsRemoteRegistry, A as loadOpenClawPlugins, An as registerUnhandledRejectionHandler, At as buildSectionRenderContext, B as getTotalPendingReplies, Bn as formatZonedTimestamp, C as createOpenClawCodingTools, Cn as applyVerboseOverride, D as getPluginToolMeta, Dt as assembleAgentSystemPromptWithSections, E as buildDefaultToolPolicyPipelineSteps, En as isSystemEventContextChanged, F as openMessageLedger, Fn as extractImageContentFromSource, Ft as buildSystemPromptParams, Gn as stopSubagentsForRequester, Gt as normalizeSendPolicy, Ht as requestHeartbeatNow, I as patchRouting, In as normalizeMimeList, It as buildSystemPromptReport, J as setCliSessionId, Jt as primeRemoteSkillsCache, K as resolveCronStyleNow, Kt as resolveSendPolicy, L as record, Ln as resolveInputFileLimits, M as closeMessageLedger, Mn as DEFAULT_INPUT_IMAGE_MIMES, Mt as PromptSectionRegistry, N as markFailed, Nt as PROSE_GLOBAL_ROOT, Ot as getBuiltinSectionRegistry, P as markSynced, Pn as extractFileContentFromSource, Pt as _clearProseCache, Q as debugStepContinue, Qt as removeRemoteNodeInfo, R as dispatchInboundMessage, S as readConsolidationState, Sn as applyModelOverrideToSessionEntry, St as loadProviderUsageSummary, T as applyToolPolicyPipeline, Tn as enqueueSystemEvent, Un as resolveUserTimezone, W as BARE_SESSION_RESET_PROMPT, Wn as isAbortTrigger, Xt as refreshRemoteBinsForConnectedNodes, Y as runCliAgent, Yn as clearSessionQueues, Yt as recordRemoteNodeInfo, Z as debugSkipAll, Zn as resolveAgentIdentity, Zt as refreshRemoteNodeBins, _ as listForCurrentInstance, an as updatePairedNodeMetadata, ar as setCommandLaneConcurrency, b as markRecoveryAttempt, bn as buildAuthHealthSummary, cn as hashToken, cr as clearAgentRunContext, ct as spawnSubagentDirect, d as abortEmbeddedPiRun, dn as resolvePairingPaths, dr as onAgentEvent, dt as getTemplateCache, en as approveNodePairing, er as resolveBootstrapContextForRun, et as setDebugStepBroadcaster, f as getActiveEmbeddedRunCount, fn as readJsonFile, fr as registerAgentRunContext, ft as getTemplateLoadErrors, g as deleteRow, gn as registerSkillsChangeListener, h as closeInFlightTurnsStore, hn as getSkillsSnapshotVersion, ht as stopTemplateWatcher, i as listDescendantRunsForRequester, in as requestNodePairing, ir as resetAllLanes, j as claimBatch, jt as buildToolSummaryMap, k as loadMinionPlugins, l as runSubagentAnnounceFlow, ln as verifyPairingToken, lr as emitAgentEvent, lt as getLastReloadAt, m as waitForEmbeddedPiRunEnd, mn as createAsyncLock, mt as initTemplateLoader, n as countActiveDescendantRuns, nn as rejectNodePairing, nt as createOpenClawTools, on as verifyNodeToken, or as waitForActiveTasks, p as queueEmbeddedPiMessage, pn as writeJsonAtomic, pt as getTemplateUsageStats, q as getCliSessionId, qt as getRemoteSkillEligibility, r as initSubagentRegistry, rn as renamePairedNode, rr as getTotalQueueSize, rt as TOOL_REGISTRY, s as markSubagentRunTerminated, sn as generatePairingToken, sr as resolveAgentTimeoutMs, tn as listNodePairing, tr as getActiveTaskCount, tt as setSteppedBuild, u as runEmbeddedPiAgent, un as pruneExpiredPending, ur as getAgentRunContext, ut as getTemplate, v as listFromOtherInstances, wn as parseVerboseOverride, x as openInFlightTurnsStore, xt as normalizeGroupActivation, y as markInterrupted, z as createReplyDispatcher, zn as transcribeOpenAiCompatibleAudio } from "./subagent-registry-Dr8IyuUy.js";
27
- import { $ as mergeDeliveryContext, C as cleanStaleLockFiles, E as evaluateSessionFreshness, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, L as resolveMainSessionKeyFromConfig, M as resolveFreshSessionTotalTokens, N as canonicalizeMainSessionAlias, O as resolveSessionResetPolicy, P as resolveAgentMainSessionKey, Z as deliveryContextFromSession, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, g as capArrayByJsonBytes, h as archiveSessionTranscripts, m as archiveFileOnDisk, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as normalizeSessionDeliveryFields, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, x as stripEnvelopeFromMessages, z as snapshotSessionOrigin } from "./sessions-BUJYqVut.js";
26
+ import { $ as isSteppedBuildEnabled, $t as setSkillsRemoteRegistry, A as loadOpenClawPlugins, An as registerUnhandledRejectionHandler, At as buildSectionRenderContext, B as getTotalPendingReplies, Bn as formatZonedTimestamp, C as createOpenClawCodingTools, Cn as applyVerboseOverride, D as getPluginToolMeta, Dt as assembleAgentSystemPromptWithSections, E as buildDefaultToolPolicyPipelineSteps, En as isSystemEventContextChanged, F as openMessageLedger, Fn as extractImageContentFromSource, Ft as buildSystemPromptParams, Gn as stopSubagentsForRequester, Gt as normalizeSendPolicy, Ht as requestHeartbeatNow, I as patchRouting, In as normalizeMimeList, It as buildSystemPromptReport, J as setCliSessionId, Jt as primeRemoteSkillsCache, K as resolveCronStyleNow, Kt as resolveSendPolicy, L as record, Ln as resolveInputFileLimits, M as closeMessageLedger, Mn as DEFAULT_INPUT_IMAGE_MIMES, Mt as PromptSectionRegistry, N as markFailed, Nt as PROSE_GLOBAL_ROOT, Ot as getBuiltinSectionRegistry, P as markSynced, Pn as extractFileContentFromSource, Pt as _clearProseCache, Q as debugStepContinue, Qt as removeRemoteNodeInfo, R as dispatchInboundMessage, S as readConsolidationState, Sn as applyModelOverrideToSessionEntry, St as loadProviderUsageSummary, T as applyToolPolicyPipeline, Tn as enqueueSystemEvent, Un as resolveUserTimezone, W as BARE_SESSION_RESET_PROMPT, Wn as isAbortTrigger, Xt as refreshRemoteBinsForConnectedNodes, Y as runCliAgent, Yn as clearSessionQueues, Yt as recordRemoteNodeInfo, Z as debugSkipAll, Zn as resolveAgentIdentity, Zt as refreshRemoteNodeBins, _ as listForCurrentInstance, an as updatePairedNodeMetadata, ar as setCommandLaneConcurrency, b as markRecoveryAttempt, bn as buildAuthHealthSummary, cn as hashToken, cr as clearAgentRunContext, ct as spawnSubagentDirect, d as abortEmbeddedPiRun, dn as resolvePairingPaths, dr as onAgentEvent, dt as getTemplateCache, en as approveNodePairing, er as resolveBootstrapContextForRun, et as setDebugStepBroadcaster, f as getActiveEmbeddedRunCount, fn as readJsonFile, fr as registerAgentRunContext, ft as getTemplateLoadErrors, g as deleteRow, gn as registerSkillsChangeListener, h as closeInFlightTurnsStore, hn as getSkillsSnapshotVersion, ht as stopTemplateWatcher, i as listDescendantRunsForRequester, in as requestNodePairing, ir as resetAllLanes, j as claimBatch, jt as buildToolSummaryMap, k as loadMinionPlugins, l as runSubagentAnnounceFlow, ln as verifyPairingToken, lr as emitAgentEvent, lt as getLastReloadAt, m as waitForEmbeddedPiRunEnd, mn as createAsyncLock, mt as initTemplateLoader, n as countActiveDescendantRuns, nn as rejectNodePairing, nt as createOpenClawTools, on as verifyNodeToken, or as waitForActiveTasks, p as queueEmbeddedPiMessage, pn as writeJsonAtomic, pt as getTemplateUsageStats, q as getCliSessionId, qt as getRemoteSkillEligibility, r as initSubagentRegistry, rn as renamePairedNode, rr as getTotalQueueSize, rt as TOOL_REGISTRY, s as markSubagentRunTerminated, sn as generatePairingToken, sr as resolveAgentTimeoutMs, tn as listNodePairing, tr as getActiveTaskCount, tt as setSteppedBuild, u as runEmbeddedPiAgent, un as pruneExpiredPending, ur as getAgentRunContext, ut as getTemplate, v as listFromOtherInstances, wn as parseVerboseOverride, x as openInFlightTurnsStore, xt as normalizeGroupActivation, y as markInterrupted, z as createReplyDispatcher, zn as transcribeOpenAiCompatibleAudio } from "./subagent-registry-C4Xeveht.js";
27
+ import { $ as mergeDeliveryContext, C as cleanStaleLockFiles, E as evaluateSessionFreshness, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, L as resolveMainSessionKeyFromConfig, M as resolveFreshSessionTotalTokens, N as canonicalizeMainSessionAlias, O as resolveSessionResetPolicy, P as resolveAgentMainSessionKey, Z as deliveryContextFromSession, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, g as capArrayByJsonBytes, h as archiveSessionTranscripts, m as archiveFileOnDisk, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as normalizeSessionDeliveryFields, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, x as stripEnvelopeFromMessages, z as snapshotSessionOrigin } from "./sessions-DlMPB0jU.js";
28
28
  import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-BkvS7DSy.js";
29
29
  import { d as buildChannelAccountBindings, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-irMKpl65.js";
30
30
  import "./logging-D43UWj1X.js";
31
31
  import { r as resolveUserDir } from "./user-directory-D27je39W.js";
32
32
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-D59m1grH.js";
33
33
  import { a as stripHeartbeatToken } from "./lanes-L5j3C7cx.js";
34
- import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-3TryCcGm.js";
34
+ import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-Bxvuje16.js";
35
35
  import { n as getMachineDisplayName } from "./with-timeout-BVhDEOTB.js";
36
36
  import { c as startDiagnosticHeartbeat, d as isDiagnosticsEnabled, l as stopDiagnosticHeartbeat } from "./diagnostic-BEEvI8Zw.js";
37
- import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-D_-_qjhk.js";
37
+ import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-Doc7XJEA.js";
38
38
  import { C as OPENAI_TTS_MODELS, _ 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-CRpGlsYO.js";
39
39
  import { c as detectMime } from "./image-ops-QvmG4zb9.js";
40
40
  import { a as defineDrone, i as runDrone, t as createGatewayDroneHost } from "./host-CafVbu36.js";
41
- import { K as resolveBootstrapMaxChars, a as formatXHighModelHint, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, i as formatThinkingLevels, l as normalizeReasoningLevel, m as supportsXHighThinking, q as resolveBootstrapTotalMaxChars, s as listThinkingLevels, u as normalizeThinkLevel } from "./pi-embedded-helpers-D9fHlhyc.js";
42
- import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-BGpWI5iG.js";
43
- import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-EgZafNge.js";
44
- 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-B37vkorh.js";
45
- import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-CpEmSoJu.js";
41
+ import { K as resolveBootstrapMaxChars, a as formatXHighModelHint, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, i as formatThinkingLevels, l as normalizeReasoningLevel, m as supportsXHighThinking, q as resolveBootstrapTotalMaxChars, s as listThinkingLevels, u as normalizeThinkLevel } from "./pi-embedded-helpers-BFVQgHYJ.js";
42
+ import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-CGRbJpDU.js";
43
+ import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-DztQ748s.js";
44
+ 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-CFiHbm6v.js";
45
+ import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-CyRjTQlV.js";
46
46
  import { a as isErrno, n as formatErrorMessage } from "./errors-iV4-NKRR.js";
47
47
  import { i as formatPortDiagnostics, n as inspectPortUsage, t as ensurePortAvailable } from "./ports-CWP9QmS6.js";
48
48
  import { t as movePathToTrash } from "./trash-DPd6fFGH.js";
49
49
  import { a as traceGatewayEvent, n as pruneOldTraceFiles } from "./chat-trace-BMcJ2gl7.js";
50
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-fZmRRpWO.js";
50
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BYpHkFGw.js";
51
51
  import { t as ToolInputError } from "./common-BHzo6lXS.js";
52
52
  import { i as isExternalHookSession, n as detectSuspiciousPatterns, r as getHookType, t as buildSafeExternalPrompt } from "./external-content-Css-cJoz.js";
53
- import { n as runWithModelFallback } from "./model-fallback-B_IR4wM4.js";
53
+ import { n as runWithModelFallback } from "./model-fallback-DGrCGjis.js";
54
54
  import { t as fetchWithSsrFGuard } from "./fetch-guard-2x6L37KS.js";
55
- import { n as loadModelCatalog } from "./model-catalog-BJJu7Y-K.js";
56
- 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-C6V1m0Vd.js";
57
- import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-CyixHAJx.js";
55
+ import { n as loadModelCatalog } from "./model-catalog-DXonO3lD.js";
56
+ 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-JpLf3m4T.js";
57
+ import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-CixzOy4m.js";
58
58
  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-9-5NQEhL.js";
59
59
  import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-b8aNuBYW.js";
60
60
  import { n as formatTokenCount, r as formatUsd } from "./usage-format--dK3YoXf.js";
@@ -70,18 +70,18 @@ import { n as setGoogleAdcClient, t as getGoogleAdcClient } from "./hub-credenti
70
70
  import { a as normalizeOptionalAgentId, c as normalizePayloadToSystemText, d as buildDeliveryFromLegacyPayload, f as hasLegacyDeliveryHints, i as inferLegacyName, l as normalizeRequiredName, n as normalizeCronJobCreate, o as normalizeOptionalSessionKey, p as stripLegacyDeliveryFields, r as normalizeCronJobPatch, s as normalizeOptionalText, t as normalizeHttpWebhookUrl, u as migrateLegacyCronPayload } from "./webhook-url-DQ4SDf3R.js";
71
71
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BlvVswOf.js";
72
72
  import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-CFtgrOm4.js";
73
- import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CiN28QCt.js";
73
+ import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-DWPdKF44.js";
74
74
  import { n as resolveMessageChannelSelection } from "./channel-selection-Bzg2Xpo4.js";
75
- import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-BjJ_Kc2p.js";
75
+ import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-bdqdT6c0.js";
76
76
  import { t as normalizePollInput } from "./polls-8i6CJXI7.js";
77
- import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-trCkc6Rj.js";
77
+ import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-WEpy2gjj.js";
78
78
  import { a as runAggregation, n as executeOrchestration, r as readStatusJson, t as executePipeline } from "./orchestration-pipeline-Bi3YT3Jf.js";
79
79
  import { r as readManifest, t as completeManifest } from "./orchestration-manifest-DXWf2_x7.js";
80
- import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-BquAzCBK.js";
80
+ import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-MqSl1Kll.js";
81
81
  import { n as persistBrowserProxyFiles, t as applyBrowserProxyPaths } from "./proxy-files-DtQxHMjp.js";
82
82
  import { r as cachedJson } from "./ttl-cache-CEaNnSl4.js";
83
83
  import { i as onHeartbeatEvent, r as getLastHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-BqNH_1lC.js";
84
- import { a as initUserSubsystem, d as sleepWithAbort, i as handleHubAssignmentChanged, l as buildHistoryContextFromEntries, n as resolveChannelSenderIdentity, r as getActiveUserSubsystem, s as mapRoleToScopes, t as createReplyPrefixOptions, u as computeBackoff } from "./reply-prefix-DiUpMQsM.js";
84
+ import { a as initUserSubsystem, d as sleepWithAbort, i as handleHubAssignmentChanged, l as buildHistoryContextFromEntries, n as resolveChannelSenderIdentity, r as getActiveUserSubsystem, s as mapRoleToScopes, t as createReplyPrefixOptions, u as computeBackoff } from "./reply-prefix-Bf6xFewe.js";
85
85
  import { t as ensureMinionCliOnPath } from "./path-env-DpsCNe2h.js";
86
86
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-_OH_n-zu.js";
87
87
  import { n as inheritOptionFromParent } from "./command-options-Dhjl7AMa.js";
@@ -90,27 +90,27 @@ import { t as WizardCancelledError } from "./prompts-E0FayNjJ.js";
90
90
  import { t as resolveChannelDefaultAccountId } from "./helpers-HNAIOJ_3.js";
91
91
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-CEWEwQIw.js";
92
92
  import { t as buildChannelAccountSnapshot } from "./status-Dg720jp3.js";
93
- import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-BxF3w4R5.js";
94
- import "./onboard-helpers-BzUHCvbd.js";
93
+ import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-CdkG3FJh.js";
94
+ import "./onboard-helpers-DvYmk4Z3.js";
95
95
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-DMloABxR.js";
96
96
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Cx6dCwYR.js";
97
- import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as formatHealthChannelLines, r as getHealthSnapshot, s as runHeartbeatOnce } from "./health-dMwMuCHD.js";
97
+ import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as formatHealthChannelLines, r as getHealthSnapshot, s as runHeartbeatOnce } from "./health-D6n9mIOb.js";
98
98
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-76BDB4BP.js";
99
99
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-COG6-6UR.js";
100
100
  import { t as installSkill } from "./skills-install-DAphGXoj.js";
101
101
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-B2N-dnoC.js";
102
102
  import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-DUIvch0v.js";
103
- import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-DvuC2ZVh.js";
104
- import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-CSNd-phC.js";
103
+ import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-CtTyPHvB.js";
104
+ import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-bAFC5ey-.js";
105
105
  import { t as parsePort$1 } from "./parse-port-DA32M3gA.js";
106
- import { n as addGatewayServiceCommands } from "./daemon-cli-CPtjgknw.js";
106
+ import { n as addGatewayServiceCommands } from "./daemon-cli-Ca2eoh9D.js";
107
107
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-C-PEQv_O.js";
108
- import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-BECNMA9x.js";
108
+ import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-BiCPa0bu.js";
109
109
  import { i as initCrypto, n as ProbeRegistry, r as SecretsManager, t as SecretStore } from "./store-CCYsWl7_.js";
110
- import { t as runOnboardingWizard } from "./onboarding-BJJPdTA6.js";
111
- 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-BvtEOSzu.js";
112
- import { h as resolveGmailPullRuntimeConfig } from "./gmail-BGbBY8iR.js";
113
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-NvyKtiKZ.js";
110
+ import { t as runOnboardingWizard } from "./onboarding-CBci11Hg.js";
111
+ 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-Ce38yX-Q.js";
112
+ import { h as resolveGmailPullRuntimeConfig } from "./gmail-DQ48jQY-.js";
113
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-J4Hr7pxJ.js";
114
114
  import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-BRxsVIll.js";
115
115
  import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-B0q97NF_.js";
116
116
  import { n as setEmbedConcurrency } from "./qmd-embed-semaphore-CLBO94qU.js";
@@ -136,8 +136,8 @@ import { WebSocketServer } from "ws";
136
136
  import { Buffer as Buffer$1 } from "node:buffer";
137
137
  import { Type } from "@sinclair/typebox";
138
138
  import net from "node:net";
139
- import { createServer } from "node:http";
140
- import { createServer as createServer$1 } from "node:https";
139
+ import http, { createServer } from "node:http";
140
+ import https, { createServer as createServer$1 } from "node:https";
141
141
  import { lookup } from "node:dns/promises";
142
142
  import chokidar from "chokidar";
143
143
  import { EventEmitter } from "node:events";
@@ -3975,7 +3975,7 @@ var UserRepository = class {
3975
3975
  const log$22 = createSubsystemLogger("free-tier/email");
3976
3976
  const RESEND_API = "https://api.resend.com/emails";
3977
3977
  const FROM = "OpenClaw <noreply@minion.ai>";
3978
- async function send(to, subject, html) {
3978
+ async function send$1(to, subject, html) {
3979
3979
  const apiKey = process.env["RESEND_API_KEY"];
3980
3980
  if (!apiKey) {
3981
3981
  log$22.warn("RESEND_API_KEY not set — email not sent", {
@@ -4007,7 +4007,7 @@ async function send(to, subject, html) {
4007
4007
  }
4008
4008
  async function sendVerificationEmail(email, token, baseUrl) {
4009
4009
  const link = `${baseUrl}/auth/verify-email?token=${encodeURIComponent(token)}`;
4010
- await send(email, "Verify your OpenClaw email", `<p>Click the link below to verify your email address. It expires in 24 hours.</p>
4010
+ await send$1(email, "Verify your OpenClaw email", `<p>Click the link below to verify your email address. It expires in 24 hours.</p>
4011
4011
  <p><a href="${link}">${link}</a></p>`);
4012
4012
  }
4013
4013
  //#endregion
@@ -18899,7 +18899,7 @@ const nodeHandlers = {
18899
18899
  const p = params;
18900
18900
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
18901
18901
  await respondUnavailableOnThrow(respond, async () => {
18902
- const { handleNodeEvent } = await import("./server-node-events-CXzX6Y8i.js");
18902
+ const { handleNodeEvent } = await import("./server-node-events-DRsJK9ry.js");
18903
18903
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
18904
18904
  const nodeConnId = client?.connId;
18905
18905
  await handleNodeEvent({
@@ -26406,7 +26406,7 @@ function normalizeAgentPayload(payload) {
26406
26406
  async function startBrowserControlServerIfEnabled() {
26407
26407
  if (isTruthyEnvValue(process.env.MINION_SKIP_BROWSER_CONTROL_SERVER)) return null;
26408
26408
  const override = process.env.MINION_BROWSER_CONTROL_MODULE?.trim();
26409
- const mod = override ? await import(override) : await import("./dispatcher-BquAzCBK.js").then((n) => n.n);
26409
+ const mod = override ? await import(override) : await import("./dispatcher-MqSl1Kll.js").then((n) => n.n);
26410
26410
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
26411
26411
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
26412
26412
  if (!start) return null;
@@ -30481,6 +30481,118 @@ async function handleToolsInvokeHttpRequest(req, res, opts) {
30481
30481
  return true;
30482
30482
  }
30483
30483
  //#endregion
30484
+ //#region src/gateway/workforce-proxy.ts
30485
+ /**
30486
+ * Workforce backend reverse-proxy (Minion Workforce, formerly Paperclip).
30487
+ *
30488
+ * The Workforce backend runs co-located with the gateway (localhost on the same
30489
+ * box) and is NOT publicly reachable. The hub (on Vercel) cannot reach it
30490
+ * directly over the private network, so it dials the gateway's public hostname
30491
+ * instead and the gateway forwards over loopback:
30492
+ *
30493
+ * hub → https://<gw-public>/api/workforce-backend/api/companies/... (TLS)
30494
+ * → gateway strips /api/workforce-backend
30495
+ * → http://127.0.0.1:3200/api/companies/... (loopback)
30496
+ *
30497
+ * This keeps the Workforce backend private (only the gateway is exposed, which
30498
+ * is already fronted by Cloudflare WAF) and turns the cross-machine hop into a
30499
+ * loopback hop. The backend self-authenticates on the forwarded board key /
30500
+ * x-hub-identity header, so this proxy is a thin forwarder.
30501
+ *
30502
+ * Opt-in: enabled only when MINION_WORKFORCE_UPSTREAM_URL is set (operators set
30503
+ * it on the box that runs the Workforce backend). On every other gateway the
30504
+ * handler is inert and the path 404s like any other unknown route.
30505
+ *
30506
+ * Optional hardening: set MINION_WORKFORCE_PROXY_SECRET to require a matching
30507
+ * x-workforce-proxy-secret header (the hub must then send it). When unset, the
30508
+ * proxy still requires a backend auth header to be present so it never behaves
30509
+ * as an open loopback proxy — the backend does the real validation.
30510
+ */
30511
+ const PROXY_PREFIX = "/api/workforce-backend";
30512
+ const HOP_BY_HOP = new Set([
30513
+ "connection",
30514
+ "keep-alive",
30515
+ "proxy-authenticate",
30516
+ "proxy-authorization",
30517
+ "te",
30518
+ "trailer",
30519
+ "transfer-encoding",
30520
+ "upgrade",
30521
+ "host",
30522
+ "x-workforce-proxy-secret"
30523
+ ]);
30524
+ function send(res, status, body) {
30525
+ res.statusCode = status;
30526
+ res.setHeader("Content-Type", "application/json; charset=utf-8");
30527
+ res.end(JSON.stringify({ error: body }));
30528
+ }
30529
+ /** True if the request looks like a legitimate hub→backend call. */
30530
+ function hasBackendAuth(req) {
30531
+ const auth = req.headers["authorization"];
30532
+ const hubId = req.headers["x-hub-identity"];
30533
+ return typeof auth === "string" && auth.startsWith("Bearer ") || typeof hubId === "string" && hubId.length > 0;
30534
+ }
30535
+ /**
30536
+ * Forward a matched request to the Workforce backend. Returns true if the
30537
+ * request was handled (matched the proxy prefix), false to let the gateway's
30538
+ * remaining handlers try it.
30539
+ */
30540
+ async function handleWorkforceProxyRequest(req, res) {
30541
+ const upstreamBase = process.env.MINION_WORKFORCE_UPSTREAM_URL;
30542
+ if (!upstreamBase) return false;
30543
+ const url = new URL(req.url ?? "/", "http://localhost");
30544
+ if (url.pathname !== PROXY_PREFIX && !url.pathname.startsWith(`${PROXY_PREFIX}/`)) return false;
30545
+ const requiredSecret = process.env.MINION_WORKFORCE_PROXY_SECRET;
30546
+ if (requiredSecret) {
30547
+ const provided = req.headers["x-workforce-proxy-secret"];
30548
+ if (!safeEqualSecret(Array.isArray(provided) ? provided[0] ?? "" : provided ?? "", requiredSecret)) {
30549
+ send(res, 401, "workforce proxy: unauthorized");
30550
+ return true;
30551
+ }
30552
+ } else if (!hasBackendAuth(req)) {
30553
+ send(res, 401, "workforce proxy: missing backend auth header");
30554
+ return true;
30555
+ }
30556
+ const rest = url.pathname.slice(22);
30557
+ const base = upstreamBase.replace(/\/+$/, "");
30558
+ const target = new URL(`${base}${rest || "/"}${url.search}`);
30559
+ const headers = {};
30560
+ for (const [k, v] of Object.entries(req.headers)) {
30561
+ if (HOP_BY_HOP.has(k.toLowerCase())) continue;
30562
+ if (v !== void 0) headers[k] = v;
30563
+ }
30564
+ headers["host"] = target.host;
30565
+ const transport = target.protocol === "https:" ? https : http;
30566
+ const options = {
30567
+ protocol: target.protocol,
30568
+ hostname: target.hostname,
30569
+ port: target.port || (target.protocol === "https:" ? 443 : 80),
30570
+ path: `${target.pathname}${target.search}`,
30571
+ method: req.method,
30572
+ headers
30573
+ };
30574
+ await new Promise((resolve) => {
30575
+ const upstream = transport.request(options, (upstreamRes) => {
30576
+ const responseHeaders = {};
30577
+ for (const [k, v] of Object.entries(upstreamRes.headers)) {
30578
+ if (HOP_BY_HOP.has(k.toLowerCase())) continue;
30579
+ if (v !== void 0) responseHeaders[k] = v;
30580
+ }
30581
+ res.writeHead(upstreamRes.statusCode ?? 502, responseHeaders);
30582
+ upstreamRes.pipe(res);
30583
+ upstreamRes.on("end", () => resolve());
30584
+ upstreamRes.on("error", () => resolve());
30585
+ });
30586
+ upstream.on("error", () => {
30587
+ if (!res.headersSent) send(res, 502, "workforce proxy: upstream unreachable");
30588
+ else res.end();
30589
+ resolve();
30590
+ });
30591
+ req.pipe(upstream);
30592
+ });
30593
+ return true;
30594
+ }
30595
+ //#endregion
30484
30596
  //#region src/gateway/server-core/server-http.ts
30485
30597
  const HOOK_AUTH_FAILURE_LIMIT = 20;
30486
30598
  const HOOK_AUTH_FAILURE_WINDOW_MS = 6e4;
@@ -30888,6 +31000,7 @@ function createGatewayHttpServer(opts) {
30888
31000
  const trustedProxies = configSnapshot.gateway?.trustedProxies ?? [];
30889
31001
  const requestPath = new URL(req.url ?? "/", "http://localhost").pathname;
30890
31002
  if (await handleHooksRequest(req, res)) return;
31003
+ if (await handleWorkforceProxyRequest(req, res)) return;
30891
31004
  if (await handleToolsInvokeHttpRequest(req, res, {
30892
31005
  auth: resolvedAuth,
30893
31006
  trustedProxies,
@@ -32152,7 +32265,7 @@ async function deliverFlowReply(sessionKey, reply) {
32152
32265
  }
32153
32266
  try {
32154
32267
  const cfg = loadConfig();
32155
- const { deliverOutboundPayloads } = await import("./deliver-CiN28QCt.js").then((n) => n.n);
32268
+ const { deliverOutboundPayloads } = await import("./deliver-DWPdKF44.js").then((n) => n.n);
32156
32269
  await deliverOutboundPayloads({
32157
32270
  cfg,
32158
32271
  channel: target.channel,
@@ -33835,7 +33948,7 @@ function attachGatewayWsMessageHandler(params) {
33835
33948
  mtUserRole = matchedSvc.role;
33836
33949
  mtOrgId = "service";
33837
33950
  mtAssignedAgentIds = matchedSvc.agentIds;
33838
- const { mapRoleToScopes: mapRole } = await import("./reply-prefix-DiUpMQsM.js").then((n) => n.c);
33951
+ const { mapRoleToScopes: mapRole } = await import("./reply-prefix-Bf6xFewe.js").then((n) => n.c);
33839
33952
  scopes = mapRole(matchedSvc.role);
33840
33953
  connectParams.scopes = scopes;
33841
33954
  authOk = true;
@@ -33876,7 +33989,7 @@ function attachGatewayWsMessageHandler(params) {
33876
33989
  scopes = jwtResult.scopes;
33877
33990
  connectParams.scopes = scopes;
33878
33991
  if (jwtResult.jti) {
33879
- const { getActiveUserSubsystem } = await import("./reply-prefix-DiUpMQsM.js").then((n) => n.o);
33992
+ const { getActiveUserSubsystem } = await import("./reply-prefix-Bf6xFewe.js").then((n) => n.o);
33880
33993
  if (getActiveUserSubsystem()?.tokenRevocationStore.isRevoked(jwtResult.jti)) {
33881
33994
  markHandshakeFailure("token-revoked", {
33882
33995
  userId: mtUserId,
@@ -33924,7 +34037,7 @@ function attachGatewayWsMessageHandler(params) {
33924
34037
  return;
33925
34038
  }
33926
34039
  if (mtUserId) {
33927
- const { provisionOnConnect } = await import("./reply-prefix-DiUpMQsM.js").then((n) => n.o);
34040
+ const { provisionOnConnect } = await import("./reply-prefix-Bf6xFewe.js").then((n) => n.o);
33928
34041
  const { resolveStateDir } = await import("./paths-aEg9UgoF.js").then((n) => n.i);
33929
34042
  provisionOnConnect({
33930
34043
  stateDir: resolveStateDir(process.env),
@@ -35818,8 +35931,8 @@ async function startGatewayServer(port = 18789, opts = {}) {
35818
35931
  });
35819
35932
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
35820
35933
  if (!minimalTestGateway) (async () => {
35821
- const { recoverPendingDeliveries } = await import("./deliver-CiN28QCt.js").then((n) => n.s);
35822
- const { deliverOutboundPayloads } = await import("./deliver-CiN28QCt.js").then((n) => n.n);
35934
+ const { recoverPendingDeliveries } = await import("./deliver-DWPdKF44.js").then((n) => n.s);
35935
+ const { deliverOutboundPayloads } = await import("./deliver-DWPdKF44.js").then((n) => n.n);
35823
35936
  await recoverPendingDeliveries({
35824
35937
  deliver: deliverOutboundPayloads,
35825
35938
  log: log.child("delivery-recovery"),