@symerian/symi 3.0.6 → 3.0.8

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 (217) hide show
  1. package/dist/{agents-gbr-1Je_.js → agents-CFKyEJDh.js} +4 -4
  2. package/dist/{agents.config-CpxstSW7.js → agents.config-DSrQ0TM2.js} +1 -1
  3. package/dist/{agents.config-BfNlwhop.js → agents.config-JYh7a1x9.js} +1 -1
  4. package/dist/{auth-choice-54kgymsK.js → auth-choice-BPmdR0Zg.js} +1 -1
  5. package/dist/{auth-choice-D-6X8Ju1.js → auth-choice-BqParF2V.js} +1 -1
  6. package/dist/{banner-a-SFB2A_.js → banner-Lq52Hf1m.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +2 -2
  9. package/dist/bundled/session-memory/handler.js +2 -2
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-LdOWOuGF.js → channel-options-DbwyNFsd.js} +1 -1
  12. package/dist/{channel-options-Gr9E4Kzw.js → channel-options-uukUHxrR.js} +1 -1
  13. package/dist/{channel-web-CegzhXtr.js → channel-web-CBUFAaN-.js} +1 -1
  14. package/dist/{channels-cli-yEaXg9E8.js → channels-cli-DUwg4n9o.js} +6 -6
  15. package/dist/{channels-cli-BqxfCcHJ.js → channels-cli-DwWkhoS-.js} +6 -6
  16. package/dist/{cli-frCx1q0g.js → cli-BK00_StG.js} +3 -3
  17. package/dist/{cli-CBgbuAgA.js → cli-DZZmysLn.js} +3 -3
  18. package/dist/{command-registry-BuNPoTgT.js → command-registry-DvI-_9ed.js} +10 -10
  19. package/dist/{completion-cli-CtslzC-3.js → completion-cli-CSoNdvYn.js} +1 -1
  20. package/dist/{completion-cli-CslG8pRZ.js → completion-cli-D4db0jDk.js} +2 -2
  21. package/dist/{config-cli-DG0Q2opp.js → config-cli-CfqGGDZJ.js} +1 -1
  22. package/dist/{config-cli-Bne_ToTi.js → config-cli-Chi8-vDl.js} +1 -1
  23. package/dist/{configure-CrUroh9h.js → configure-CpVWXUGL.js} +3 -3
  24. package/dist/{configure-DVEumX9d.js → configure-n6QOImwq.js} +3 -3
  25. package/dist/{doctor-completion-C7FYoFcz.js → doctor-completion-Cx_h4e8C.js} +1 -1
  26. package/dist/{doctor-completion-BdPD9NXi.js → doctor-completion-Dh1Ui0Jl.js} +1 -1
  27. package/dist/entry.js +1 -1
  28. package/dist/extensionAPI.js +2 -2
  29. package/dist/{gateway-cli-C01t6lTD.js → gateway-cli-CBC3MsCD.js} +25 -14
  30. package/dist/{gateway-cli-C3pl_TOb.js → gateway-cli-DLCN4Pur.js} +25 -14
  31. package/dist/{glass-ui-ws-DdfAZRq2.js → glass-ui-ws-CSvguyD3.js} +10 -10
  32. package/dist/{glass-ui-ws-D4FpSEkk.js → glass-ui-ws-Dy9BMqps.js} +10 -10
  33. package/dist/{health-BJOdskDn.js → health-CMNaNxdO.js} +2 -2
  34. package/dist/{health-Ux1rRtE3.js → health-CcIuOt6-.js} +2 -2
  35. package/dist/{heartbeat-visibility-BOc3XHJM.js → heartbeat-visibility-C1vHOBwO.js} +1 -1
  36. package/dist/{heartbeat-visibility-DiKuGlXT.js → heartbeat-visibility-D7nLp3pi.js} +1 -1
  37. package/dist/{hooks-cli-QOqeVacd.js → hooks-cli-BJBRRQxq.js} +4 -4
  38. package/dist/{hooks-cli-C4qRn2e6.js → hooks-cli-Lu13tVB5.js} +4 -4
  39. package/dist/index.js +9 -9
  40. package/dist/llm-slug-generator.js +2 -2
  41. package/dist/{manager-H_Xir_av.js → manager-CpueNJtZ.js} +1 -1
  42. package/dist/{manager-OL6o99xD.js → manager-DrpXfTr8.js} +1 -1
  43. package/dist/{manager-DdfJ-DW0.js → manager-_IXN4-V8.js} +1 -1
  44. package/dist/{manager-D7uDkX3d.js → manager-ba9NOjzn.js} +1 -1
  45. package/dist/{memory-cli-CEvfDody.js → memory-cli-CFc9bXRp.js} +3 -3
  46. package/dist/{memory-cli-BFgNzW3D.js → memory-cli-LV7-59SK.js} +3 -3
  47. package/dist/{models-Bf1Qgxcd.js → models-BB9yLhYJ.js} +2 -2
  48. package/dist/{models-cli-C-yQI9uO.js → models-cli-RtPAmw2C.js} +4 -4
  49. package/dist/{models-cli-IPj8YpFi.js → models-cli-trgrhp5d.js} +5 -5
  50. package/dist/{onboard-DxD7tZro.js → onboard-2UCdDScQ.js} +2 -2
  51. package/dist/{onboard-D3RCwOQV.js → onboard-BLaF7s8_.js} +2 -2
  52. package/dist/{onboard-channels-C9yhPSG7.js → onboard-channels-jMIN_VEb.js} +1 -1
  53. package/dist/{onboard-channels-DjyTcloL.js → onboard-channels-puKAWnzj.js} +1 -1
  54. package/dist/{onboarding-BT5x19Ld.js → onboarding-Buq2k7LQ.js} +3 -3
  55. package/dist/{onboarding-3Zmxzq_U.js → onboarding-HqJ5qUk9.js} +3 -3
  56. package/dist/{onboarding.finalize-Di8oo0E9.js → onboarding.finalize-B_n1Ng2R.js} +8 -8
  57. package/dist/{onboarding.finalize-DYIUxpai.js → onboarding.finalize-CDNE7OaF.js} +9 -9
  58. package/dist/{pi-embedded-DiktDTAb.js → pi-embedded-D9KmgdGY.js} +99 -5
  59. package/dist/{plugin-registry-Dv9QEb6z.js → plugin-registry-B33lS3i0.js} +1 -1
  60. package/dist/{plugin-registry-DSVGT3l_.js → plugin-registry-DzQCMRvf.js} +1 -1
  61. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  62. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  63. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  64. package/dist/plugin-sdk/{active-listener-BtNt_ynZ.js → active-listener-BaxIPBYG.js} +1 -1
  65. package/dist/plugin-sdk/{agent-scope-RSN8nr_m.js → agent-scope-BREbt-rZ.js} +2 -2
  66. package/dist/plugin-sdk/agents/model-aware-stream.d.ts +21 -0
  67. package/dist/plugin-sdk/{audio-preflight-Cl6PVUW_.js → audio-preflight-D9L7twa5.js} +24 -24
  68. package/dist/plugin-sdk/{bindings-DhPQDTtp.js → bindings-Da0i5ERM.js} +2 -2
  69. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  70. package/dist/plugin-sdk/{channel-web-CQucEpek.js → channel-web-C8ezEiP7.js} +22 -22
  71. package/dist/plugin-sdk/{chrome-CrHP4JAa.js → chrome-BWTwV7zX.js} +3 -3
  72. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  73. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  74. package/dist/plugin-sdk/{commands-registry-BMqWVyks.js → commands-registry-Du2NjN4l.js} +4 -4
  75. package/dist/plugin-sdk/{config-Bv0LE_Mp.js → config-gBtOrR8U.js} +9 -9
  76. package/dist/plugin-sdk/{consolidate-BieO-_k_.js → consolidate-DHzE-Epp.js} +2 -2
  77. package/dist/plugin-sdk/{deliver-lElKpUWY.js → deliver-DnGDY8HE.js} +9 -9
  78. package/dist/plugin-sdk/{diagnostic-fnIb_o_V.js → diagnostic-Jo7QixCi.js} +1 -1
  79. package/dist/plugin-sdk/{gemini-auth-BJBLsO9s.js → gemini-auth-tw0x8cTJ.js} +1 -1
  80. package/dist/plugin-sdk/{image-Br537YWQ.js → image-B5JkxaYD.js} +4 -4
  81. package/dist/plugin-sdk/{image-ops-C_3iBQe1.js → image-ops-DZ8OTT0B.js} +1 -1
  82. package/dist/plugin-sdk/index.js +54 -54
  83. package/dist/plugin-sdk/{ir-DrnNua4p.js → ir-DfsDN6C5.js} +4 -4
  84. package/dist/plugin-sdk/{local-roots-8f4AroIC.js → local-roots-CxzyCF23.js} +3 -3
  85. package/dist/plugin-sdk/{login-BqGhBXI8.js → login-CiJUA7rI.js} +7 -7
  86. package/dist/plugin-sdk/{login-qr-mWNNbk2o.js → login-qr-DOY_pSMD.js} +9 -9
  87. package/dist/plugin-sdk/{manager-DMMQnz2r.js → manager-DfIw_nTh.js} +9 -9
  88. package/dist/plugin-sdk/{manifest-registry-hy3Bn-r9.js → manifest-registry-BRx4JDK0.js} +1 -1
  89. package/dist/plugin-sdk/{markdown-tables-ivSTmsOn.js → markdown-tables-BBiVsk1q.js} +1 -1
  90. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  91. package/dist/plugin-sdk/{model-selection-B-K2B0xR.js → model-selection-DSYL4oYC.js} +4 -4
  92. package/dist/plugin-sdk/{outbound-CgeYMV-m.js → outbound-0mkEeuuS.js} +7 -7
  93. package/dist/plugin-sdk/{outbound-attachment-qB-kgb_3.js → outbound-attachment-V-8HPvXC.js} +2 -2
  94. package/dist/plugin-sdk/{pi-auth-json-BMKHahdN.js → pi-auth-json-7_Iwu6Aw.js} +1 -1
  95. package/dist/plugin-sdk/{pi-embedded-helpers-DLlOikDI.js → pi-embedded-helpers-IgdlMVmo.js} +17 -17
  96. package/dist/plugin-sdk/{plugins-muf5lfx-.js → plugins-DRWyzk5i.js} +4 -4
  97. package/dist/plugin-sdk/{pw-ai-Bo7ZVnlF.js → pw-ai-Ch5O4KwP.js} +8 -8
  98. package/dist/plugin-sdk/{qmd-manager-Chj9aSN5.js → qmd-manager-BvQckdNY.js} +4 -4
  99. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  100. package/dist/plugin-sdk/{replies-CuNUVXBG.js → replies-D5beVE9J.js} +3 -3
  101. package/dist/plugin-sdk/{reply-prefix-CDeu1pum.js → reply-prefix-BKFQ9roP.js} +1 -1
  102. package/dist/plugin-sdk/{resolve-outbound-target-BkHNUpdB.js → resolve-outbound-target-BHmUS6gT.js} +2 -2
  103. package/dist/plugin-sdk/{resolve-route-kXW9e3Go.js → resolve-route-B34r6gNi.js} +3 -3
  104. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  105. package/dist/plugin-sdk/{runner-NZmejDHd.js → runner-BbSYOhWN.js} +9 -9
  106. package/dist/plugin-sdk/{send-CNkol_HZ.js → send-BG9dfcnW.js} +10 -10
  107. package/dist/plugin-sdk/{send-v8Nttqd6.js → send-BkajF0QS.js} +7 -7
  108. package/dist/plugin-sdk/{send-BE1OwwUT.js → send-BrFerfxu.js} +6 -6
  109. package/dist/plugin-sdk/{send-CKznEmCe.js → send-CYozWNvy.js} +6 -6
  110. package/dist/plugin-sdk/{send-CNHhzZOb.js → send-v1NlN5gT.js} +10 -10
  111. package/dist/plugin-sdk/{session-DMulfRcG.js → session-Cs-mNH2L.js} +4 -4
  112. package/dist/plugin-sdk/{skill-commands-HLp_gCNJ.js → skill-commands-7-2Ap-qA.js} +5 -5
  113. package/dist/plugin-sdk/{skills-ksP6m2tL.js → skills-BDwS4XUE.js} +7 -7
  114. package/dist/plugin-sdk/{sqlite-BflKfcLD.js → sqlite-DLwYpBWC.js} +1 -1
  115. package/dist/plugin-sdk/{store-uf7TpQm3.js → store-Dt1oCaOn.js} +2 -2
  116. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  117. package/dist/plugin-sdk/{synthesis-B3oSNA87.js → synthesis-D3NFc3n3.js} +49 -49
  118. package/dist/plugin-sdk/{tables-DE2W8BrP.js → tables-MCQfYFPK.js} +1 -1
  119. package/dist/plugin-sdk/{target-errors-Dqf_-SRz.js → target-errors-BGT90lj4.js} +2 -2
  120. package/dist/plugin-sdk/{thinking-Bq90REOa.js → thinking-qM2Kzm92.js} +5 -5
  121. package/dist/plugin-sdk/{tokens-D-HI9PZG.js → tokens-CVWPo-HD.js} +1 -1
  122. package/dist/plugin-sdk/{tool-images-DAXbRHJ1.js → tool-images-DvOrYSAO.js} +2 -2
  123. package/dist/plugin-sdk/{tool-loop-detection-DseOlBug.js → tool-loop-detection-gmtzSlNZ.js} +2 -2
  124. package/dist/plugin-sdk/{unified-runner-DPD66ppH.js → unified-runner-BnOMNrBG.js} +172 -78
  125. package/dist/plugin-sdk/web-pXmkwCgo.js +66 -0
  126. package/dist/plugin-sdk/{whatsapp-actions-BXONjmN2.js → whatsapp-actions-00m45Zqm.js} +21 -21
  127. package/dist/{plugins-cli-BKE00xaA.js → plugins-cli-BH-dPouA.js} +4 -4
  128. package/dist/{plugins-cli-Cudgx5xM.js → plugins-cli-D7SeopUy.js} +4 -4
  129. package/dist/{program-D6GycU7K.js → program-CWtqcl5o.js} +9 -9
  130. package/dist/{program-context-DUf2HkNT.js → program-context-C_BCGX6e.js} +18 -18
  131. package/dist/{prompt-select-styled-9fffbtA8.js → prompt-select-styled-DZLfB9dr.js} +6 -6
  132. package/dist/{prompt-select-styled-MZgg9luq.js → prompt-select-styled-DmA5bdHo.js} +6 -6
  133. package/dist/{provider-auth-helpers-CbjDDek6.js → provider-auth-helpers-Brx0zsB4.js} +1 -1
  134. package/dist/{provider-auth-helpers-CH_rD9Ck.js → provider-auth-helpers-Df50nCNL.js} +1 -1
  135. package/dist/{push-apns-D2xhFnz-.js → push-apns-CXP9q39j.js} +1 -1
  136. package/dist/{push-apns-zIsKDi4p.js → push-apns-jE3kPG6g.js} +1 -1
  137. package/dist/{register.agent-BkQdGAxf.js → register.agent-DGwbPjex.js} +7 -7
  138. package/dist/{register.agent-CR1I0Nxi.js → register.agent-DzQtVgfQ.js} +8 -8
  139. package/dist/{register.configure-CIbNs3Ys.js → register.configure-B56gsKYf.js} +9 -9
  140. package/dist/{register.configure-O5fmbHql.js → register.configure-BQ1gQQOO.js} +9 -9
  141. package/dist/{register.maintenance-BjE-lDkf.js → register.maintenance-B12lwewm.js} +10 -10
  142. package/dist/{register.maintenance-B6o6Fdf-.js → register.maintenance-DXD1xP8H.js} +11 -11
  143. package/dist/{register.message-DkZC56-E.js → register.message--QXkhXHQ.js} +4 -4
  144. package/dist/{register.message-CPV6KKj_.js → register.message-xW7Gic5V.js} +4 -4
  145. package/dist/{register.onboard-DB0X3H1H.js → register.onboard-CWycJIUS.js} +7 -7
  146. package/dist/{register.onboard-DPUx5H9I.js → register.onboard-CqP2iJit.js} +7 -7
  147. package/dist/{register.setup-BHGui0h8.js → register.setup-B33Xl3Vr.js} +7 -7
  148. package/dist/{register.setup-BdfIHr44.js → register.setup-COjF7Ffj.js} +7 -7
  149. package/dist/{register.status-health-sessions-CAr_-YOR.js → register.status-health-sessions-BGA-7IT8.js} +6 -6
  150. package/dist/{register.status-health-sessions-Bx_x7PLI.js → register.status-health-sessions-CsjDghzj.js} +6 -6
  151. package/dist/{register.subclis-Bd9G7Uhk.js → register.subclis-Bzag-xbt.js} +9 -9
  152. package/dist/{run-main-DINwkweo.js → run-main-BPMrQvz2.js} +17 -17
  153. package/dist/{server-methods-D_HpHoWo.js → server-methods-C72ajlYe.js} +9 -9
  154. package/dist/{server-methods-BBiqjTnY.js → server-methods-C_TFp6B4.js} +9 -9
  155. package/dist/{server-node-events-D33Ivpdb.js → server-node-events-BTuwCzuB.js} +4 -4
  156. package/dist/{server-node-events-BBcYbve5.js → server-node-events-Cn5abeER.js} +4 -4
  157. package/dist/{status-CdRoRdX8.js → status-C5RXDLjI.js} +1 -1
  158. package/dist/{status-Do0t7I6P.js → status-CrxGjZwV.js} +3 -3
  159. package/dist/{status-B5SAsM15.js → status-CvJZLdWA.js} +1 -1
  160. package/dist/{status-E8bxgRbF.js → status-DIGJ8-hp.js} +3 -3
  161. package/dist/{subagent-registry-B4gg8TFc.js → subagent-registry-k0ZBnJuU.js} +98 -4
  162. package/dist/{synthesis-BzXl3DdN.js → synthesis-C-rsRpDw.js} +2 -2
  163. package/dist/{synthesis-BuXEOM51.js → synthesis-C3AKD3Nb.js} +2 -2
  164. package/dist/{synthesis-CmoAF3Ks.js → synthesis-D4qwtCYE.js} +3 -3
  165. package/dist/{synthesis-Camc_uQg.js → synthesis-cor0WJGI.js} +3 -3
  166. package/dist/{unified-runner-NjwIEpGt.js → unified-runner-CzxCpDUC.js} +98 -4
  167. package/dist/{unified-runner-Bvqbwaaa.js → unified-runner-Dv9LPnmm.js} +99 -5
  168. package/dist/{update-cli-DT51XdLt.js → update-cli-CEhf4IFG.js} +11 -11
  169. package/dist/{update-cli-BmxN561H.js → update-cli-uwOyL4_F.js} +10 -10
  170. package/dist/{update-runner-BSHkPRya.js → update-runner-BSDKsvVP.js} +1 -1
  171. package/dist/{update-runner-DObjNXP5.js → update-runner-Bcmd0XnZ.js} +1 -1
  172. package/dist/{web-CWFF4V6q.js → web-CSPcQYqR.js} +2 -2
  173. package/dist/{web-DMJyGxn3.js → web-D9-D09LS.js} +4 -4
  174. package/dist/{web-DNwg0ZOA.js → web-DJqpgWuK.js} +5 -5
  175. package/dist/{web-BPiGXIj5.js → web-gqbdxJga.js} +2 -2
  176. package/extensions/bluebubbles/package.json +1 -1
  177. package/extensions/copilot-proxy/package.json +1 -1
  178. package/extensions/diagnostics-otel/package.json +1 -1
  179. package/extensions/discord/package.json +1 -1
  180. package/extensions/feishu/package.json +1 -1
  181. package/extensions/google-antigravity-auth/package.json +1 -1
  182. package/extensions/google-gemini-cli-auth/package.json +1 -1
  183. package/extensions/googlechat/package.json +1 -1
  184. package/extensions/imessage/package.json +1 -1
  185. package/extensions/irc/package.json +1 -1
  186. package/extensions/learning-loop/package.json +1 -1
  187. package/extensions/line/package.json +1 -1
  188. package/extensions/llm-task/package.json +1 -1
  189. package/extensions/matrix/CHANGELOG.md +12 -0
  190. package/extensions/matrix/package.json +1 -1
  191. package/extensions/mattermost/package.json +1 -1
  192. package/extensions/memory-core/package.json +1 -1
  193. package/extensions/memory-lancedb/package.json +1 -1
  194. package/extensions/minimax-portal-auth/package.json +1 -1
  195. package/extensions/msteams/CHANGELOG.md +12 -0
  196. package/extensions/msteams/package.json +1 -1
  197. package/extensions/nextcloud-talk/package.json +1 -1
  198. package/extensions/nostr/CHANGELOG.md +12 -0
  199. package/extensions/nostr/package.json +1 -1
  200. package/extensions/open-prose/package.json +1 -1
  201. package/extensions/outlook/package.json +1 -1
  202. package/extensions/pipeline/package.json +1 -1
  203. package/extensions/signal/package.json +1 -1
  204. package/extensions/slack/package.json +1 -1
  205. package/extensions/telegram/package.json +1 -1
  206. package/extensions/tlon/package.json +1 -1
  207. package/extensions/twitch/CHANGELOG.md +12 -0
  208. package/extensions/twitch/package.json +1 -1
  209. package/extensions/voice-call/CHANGELOG.md +12 -0
  210. package/extensions/voice-call/package.json +1 -1
  211. package/extensions/whatsapp/package.json +1 -1
  212. package/extensions/zalo/CHANGELOG.md +12 -0
  213. package/extensions/zalo/package.json +1 -1
  214. package/extensions/zalouser/CHANGELOG.md +12 -0
  215. package/extensions/zalouser/package.json +1 -1
  216. package/package.json +1 -1
  217. package/dist/plugin-sdk/web-O8zxjM0h.js +0 -66
@@ -14,7 +14,7 @@ import "./client-CJIMV1WD.js";
14
14
  import "./call-DgBbW7bk.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-B4gg8TFc.js";
17
+ import "./subagent-registry-k0ZBnJuU.js";
18
18
  import "./sessions-D94fC0u0.js";
19
19
  import "./tokens-BEvOiQ65.js";
20
20
  import "./plugins-DTKQE9kt.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-BEX8iiQb.js";
54
54
  import "./reply-prefix-Pz-5t5RS.js";
55
- import "./memory-cli-CEvfDody.js";
56
- import "./manager-OL6o99xD.js";
55
+ import "./memory-cli-CFc9bXRp.js";
56
+ import "./manager-DrpXfTr8.js";
57
57
  import "./gemini-auth-48fFOTO4.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";
@@ -102,9 +102,9 @@ import { t as ensureSymiCliOnPath } from "./path-env-CaiY2aOj.js";
102
102
  import "./catalog-KcLvtTfa.js";
103
103
  import "./note-DewoEWtc.js";
104
104
  import "./plugin-auto-enable-CunAz2Q8.js";
105
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DSVGT3l_.js";
105
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DzQCMRvf.js";
106
106
  import { t as assertSupportedRuntime } from "./runtime-guard-BofkqBu7.js";
107
- import { t as emitCliBanner } from "./banner-a-SFB2A_.js";
107
+ import { t as emitCliBanner } from "./banner-Lq52Hf1m.js";
108
108
  import "./doctor-config-flow-DsChXcPq.js";
109
109
  import { n as ensureConfigReady } from "./config-guard-DwWl7TAK.js";
110
110
  import process$1 from "node:process";
@@ -119,7 +119,7 @@ const routeHealth = {
119
119
  const verbose = getVerboseFlag(argv, { includeDebug: true });
120
120
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
121
121
  if (timeoutMs === null) return false;
122
- const { healthCommand } = await import("./health-BJOdskDn.js").then((n) => n.i);
122
+ const { healthCommand } = await import("./health-CMNaNxdO.js").then((n) => n.i);
123
123
  await healthCommand({
124
124
  json,
125
125
  timeoutMs,
@@ -139,7 +139,7 @@ const routeStatus = {
139
139
  const verbose = getVerboseFlag(argv, { includeDebug: true });
140
140
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
141
141
  if (timeoutMs === null) return false;
142
- const { statusCommand } = await import("./status-Do0t7I6P.js").then((n) => n.t);
142
+ const { statusCommand } = await import("./status-CrxGjZwV.js").then((n) => n.t);
143
143
  await statusCommand({
144
144
  json,
145
145
  deep,
@@ -173,7 +173,7 @@ const routeAgentsList = {
173
173
  run: async (argv) => {
174
174
  const json = hasFlag(argv, "--json");
175
175
  const bindings = hasFlag(argv, "--bindings");
176
- const { agentsListCommand } = await import("./agents-gbr-1Je_.js").then((n) => n.t);
176
+ const { agentsListCommand } = await import("./agents-CFKyEJDh.js").then((n) => n.t);
177
177
  await agentsListCommand({
178
178
  json,
179
179
  bindings
@@ -190,7 +190,7 @@ const routeMemoryStatus = {
190
190
  const deep = hasFlag(argv, "--deep");
191
191
  const index = hasFlag(argv, "--index");
192
192
  const verbose = hasFlag(argv, "--verbose");
193
- const { runMemoryStatus } = await import("./memory-cli-CEvfDody.js").then((n) => n.t);
193
+ const { runMemoryStatus } = await import("./memory-cli-CFc9bXRp.js").then((n) => n.t);
194
194
  await runMemoryStatus({
195
195
  agent,
196
196
  json,
@@ -244,7 +244,7 @@ const routes = [
244
244
  const pathArg = getCommandPositionals(argv)[2];
245
245
  if (!pathArg) return false;
246
246
  const json = hasFlag(argv, "--json");
247
- const { runConfigGet } = await import("./config-cli-DG0Q2opp.js");
247
+ const { runConfigGet } = await import("./config-cli-CfqGGDZJ.js");
248
248
  await runConfigGet({
249
249
  path: pathArg,
250
250
  json
@@ -257,7 +257,7 @@ const routes = [
257
257
  run: async (argv) => {
258
258
  const pathArg = getCommandPositionals(argv)[2];
259
259
  if (!pathArg) return false;
260
- const { runConfigUnset } = await import("./config-cli-DG0Q2opp.js");
260
+ const { runConfigUnset } = await import("./config-cli-CfqGGDZJ.js");
261
261
  await runConfigUnset({ path: pathArg });
262
262
  return true;
263
263
  }
@@ -271,7 +271,7 @@ const routes = [
271
271
  const local = hasFlag(argv, "--local");
272
272
  const json = hasFlag(argv, "--json");
273
273
  const plain = hasFlag(argv, "--plain");
274
- const { modelsListCommand } = await import("./models-Bf1Qgxcd.js").then((n) => n.t);
274
+ const { modelsListCommand } = await import("./models-BB9yLhYJ.js").then((n) => n.t);
275
275
  await modelsListCommand({
276
276
  all,
277
277
  local,
@@ -302,7 +302,7 @@ const routes = [
302
302
  const plain = hasFlag(argv, "--plain");
303
303
  const check = hasFlag(argv, "--check");
304
304
  const probe = hasFlag(argv, "--probe");
305
- const { modelsStatusCommand } = await import("./models-Bf1Qgxcd.js").then((n) => n.t);
305
+ const { modelsStatusCommand } = await import("./models-BB9yLhYJ.js").then((n) => n.t);
306
306
  await modelsStatusCommand({
307
307
  json,
308
308
  plain,
@@ -380,7 +380,7 @@ async function runCli(argv = process$1.argv) {
380
380
  assertSupportedRuntime();
381
381
  if (await tryRouteCli(normalizedArgv)) return;
382
382
  enableConsoleCapture();
383
- const { buildProgram } = await import("./program-D6GycU7K.js");
383
+ const { buildProgram } = await import("./program-CWtqcl5o.js");
384
384
  const program = buildProgram();
385
385
  installUnhandledRejectionHandler();
386
386
  process$1.on("uncaughtException", (error) => {
@@ -412,10 +412,10 @@ async function runCli(argv = process$1.argv) {
412
412
  const { getProgramContext } = await import("./program-context-DeZ44oQ9.js").then((n) => n.n);
413
413
  const ctx = getProgramContext(program);
414
414
  if (ctx) {
415
- const { registerCoreCliByName } = await import("./command-registry-BuNPoTgT.js").then((n) => n.t);
415
+ const { registerCoreCliByName } = await import("./command-registry-DvI-_9ed.js").then((n) => n.t);
416
416
  await registerCoreCliByName(program, ctx, primary, parseArgv);
417
417
  }
418
- const { registerSubCliByName } = await import("./register.subclis-Bd9G7Uhk.js").then((n) => n.a);
418
+ const { registerSubCliByName } = await import("./register.subclis-Bzag-xbt.js").then((n) => n.a);
419
419
  await registerSubCliByName(program, primary);
420
420
  }
421
421
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -424,7 +424,7 @@ async function runCli(argv = process$1.argv) {
424
424
  primary,
425
425
  hasBuiltinPrimary
426
426
  })) {
427
- const { registerPluginCliCommands } = await import("./cli-frCx1q0g.js");
427
+ const { registerPluginCliCommands } = await import("./cli-BK00_StG.js");
428
428
  const { loadConfig } = await import("./config-CE_yCGtB.js").then((n) => n.t);
429
429
  registerPluginCliCommands(program, loadConfig());
430
430
  }
@@ -12,7 +12,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
12
12
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
13
13
  import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
14
14
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
15
- import { $ as waitForEmbeddedPiRunEnd, C as resolveAgentDeliveryPlan, D as createOutboundSendDeps, Fn as isSystemEventContextChanged, G as buildGlassUiProfile, Hn as normalizeGroupActivation, Jn as formatZonedTimestamp, Mn as resolveAgentTimeoutMs, Mr as onAgentEvent, Mt as normalizeCronJobPatch, Nn as prepareAgentRun, Nr as registerAgentRunContext, Pn as enqueueSystemEvent, Qn as stopSubagentsForRequester, Sn as parseVerboseOverride, U as createReplyDispatcher, Vn as BARE_SESSION_RESET_PROMPT, Xt as persistBrowserProxyFiles, Y as runUnifiedTurn, Yt as applyBrowserProxyPaths, Z as abortEmbeddedPiRun, Zn as isAbortTrigger, a as listSubagentRunsForRequester, an as unbindThreadBindingsBySessionKey, ar as isTtsEnabled, at as buildAgentTurnParams, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, cr as resolveTtsAutoMode, ct as listTasksInWorkdir, dr as resolveTtsProviderOrder, fr as setTtsEnabled, ft as ensureOutboundSessionEntry, gr as OPENAI_TTS_VOICES, gt as resolveOutboundTarget, hn as resolveSendPolicy, hr as OPENAI_TTS_MODELS, i as listDescendantRunsForRequester, ir as getTtsProvider, jt as normalizeCronJobCreate, kt as writeRestartSentinel, lr as resolveTtsConfig, m as loadSymiPlugins, mn as normalizeSendPolicy, mr as textToSpeech, nn as scheduleGatewaySigusr1Restart, on as loadProviderUsageSummary, or as isTtsProviderConfigured, ot as prepareReplyTurn, pr as setTtsProvider, pt as resolveOutboundSessionRoute, rr as resolveUserTimezone, sr as resolveTtsApiKey, ur as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wt as formatDoctorNonInteractiveHint, x as agentCommand, xn as applyVerboseOverride } from "./subagent-registry-B4gg8TFc.js";
15
+ import { $ as waitForEmbeddedPiRunEnd, C as resolveAgentDeliveryPlan, D as createOutboundSendDeps, Fn as isSystemEventContextChanged, G as buildGlassUiProfile, Hn as normalizeGroupActivation, Jn as formatZonedTimestamp, Mn as resolveAgentTimeoutMs, Mr as onAgentEvent, Mt as normalizeCronJobPatch, Nn as prepareAgentRun, Nr as registerAgentRunContext, Pn as enqueueSystemEvent, Qn as stopSubagentsForRequester, Sn as parseVerboseOverride, U as createReplyDispatcher, Vn as BARE_SESSION_RESET_PROMPT, Xt as persistBrowserProxyFiles, Y as runUnifiedTurn, Yt as applyBrowserProxyPaths, Z as abortEmbeddedPiRun, Zn as isAbortTrigger, a as listSubagentRunsForRequester, an as unbindThreadBindingsBySessionKey, ar as isTtsEnabled, at as buildAgentTurnParams, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, cr as resolveTtsAutoMode, ct as listTasksInWorkdir, dr as resolveTtsProviderOrder, fr as setTtsEnabled, ft as ensureOutboundSessionEntry, gr as OPENAI_TTS_VOICES, gt as resolveOutboundTarget, hn as resolveSendPolicy, hr as OPENAI_TTS_MODELS, i as listDescendantRunsForRequester, ir as getTtsProvider, jt as normalizeCronJobCreate, kt as writeRestartSentinel, lr as resolveTtsConfig, m as loadSymiPlugins, mn as normalizeSendPolicy, mr as textToSpeech, nn as scheduleGatewaySigusr1Restart, on as loadProviderUsageSummary, or as isTtsProviderConfigured, ot as prepareReplyTurn, pr as setTtsProvider, pt as resolveOutboundSessionRoute, rr as resolveUserTimezone, sr as resolveTtsApiKey, ur as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wt as formatDoctorNonInteractiveHint, x as agentCommand, xn as applyVerboseOverride } from "./subagent-registry-k0ZBnJuU.js";
16
16
  import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-D94fC0u0.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DTKQE9kt.js";
18
18
  import { n as createBrowserRouteDispatcher } from "./with-timeout-Sf6xNmAk.js";
@@ -21,7 +21,7 @@ import { t as movePathToTrash } from "./trash-CWQQXWX3.js";
21
21
  import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
22
22
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-8sKPnzpp.js";
23
23
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-Pz-5t5RS.js";
24
- import { r as getMemorySearchManager } from "./memory-cli-CEvfDody.js";
24
+ import { r as getMemorySearchManager } from "./memory-cli-CFc9bXRp.js";
25
25
  import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-BLuiRgmy.js";
26
26
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-CFbo15ku.js";
27
27
  import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent } from "./session-utils-BUK1eo6T.js";
@@ -32,20 +32,20 @@ import { n as normalizePollInput } from "./polls-Cm1-n4jF.js";
32
32
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BvbXdY02.js";
33
33
  import { i as parseAbsoluteTimeMs } from "./stagger-BDqsqTKI.js";
34
34
  import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-wWVzXusf.js";
35
- import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-BOc3XHJM.js";
35
+ import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-C1vHOBwO.js";
36
36
  import { t as buildChannelUiCatalog } from "./catalog-KcLvtTfa.js";
37
37
  import { t as WizardCancelledError } from "./prompts-DbHSz44H.js";
38
38
  import { t as resolveChannelDefaultAccountId } from "./helpers-gWnZ9zWR.js";
39
39
  import { t as buildChannelAccountSnapshot } from "./status-B8TZsG0t.js";
40
40
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-C7_mWfpH.js";
41
- import { r as getStatusSummary } from "./status-Do0t7I6P.js";
42
- import { c as setHeartbeatsEnabled, u as abortHeartbeatRunForSession } from "./health-BJOdskDn.js";
41
+ import { r as getStatusSummary } from "./status-CrxGjZwV.js";
42
+ import { c as setHeartbeatsEnabled, u as abortHeartbeatRunForSession } from "./health-CMNaNxdO.js";
43
43
  import { m as normalizeUpdateChannel } from "./update-check-BNjupSIM.js";
44
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-zIsKDi4p.js";
45
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BfNlwhop.js";
44
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-jE3kPG6g.js";
45
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-JYh7a1x9.js";
46
46
  import { t as resolveSystemRunCommand } from "./system-run-command-B_qw8CXP.js";
47
47
  import { t as installSkill } from "./skills-install-DEq4Ey44.js";
48
- import { t as runGatewayUpdate } from "./update-runner-BSHkPRya.js";
48
+ import { t as runGatewayUpdate } from "./update-runner-BSDKsvVP.js";
49
49
  import { spawnSync } from "node:child_process";
50
50
  import * as os$1 from "node:os";
51
51
  import os from "node:os";
@@ -7580,7 +7580,7 @@ const nodeHandlers = {
7580
7580
  const p = params;
7581
7581
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7582
7582
  await respondUnavailableOnThrow(respond, async () => {
7583
- const { handleNodeEvent } = await import("./server-node-events-BBcYbve5.js");
7583
+ const { handleNodeEvent } = await import("./server-node-events-Cn5abeER.js");
7584
7584
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7585
7585
  await handleNodeEvent({
7586
7586
  deps: context.deps,
@@ -1,6 +1,6 @@
1
1
  import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { D as isPlainObject, U as getResolvedLoggerSettings, r as clamp, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
- import { $ as loadSessionEntry, Bt as persistBrowserProxyFiles, Cn as prepareAgentRun, H as runUnifiedTurn, Hn as stopSubagentsForRequester, I as createReplyDispatcher, J as canonicalizeSpawnedByForAgent, Jn as listDescendantRunsForRequester, K as listTasksInWorkdir, Kt as scheduleGatewaySigusr1Restart, Mn as normalizeGroupActivation, Mr as onAgentEvent, Nr as registerAgentRunContext, Q as loadCombinedSessionStoreForGateway, R as buildGlassUiProfile, Rn as formatZonedTimestamp, St as normalizeCronJobPatch, Tn as isSystemEventContextChanged, U as buildAgentTurnParams, Vn as isAbortTrigger, W as prepareReplyTurn, X as listAgentsForGateway, Xt as loadProviderUsageSummary, Yn as listSubagentRunsForRequester, Yt as unbindThreadBindingsBySessionKey, Z as listSessionsFromStore, Zn as resolveAgentTimeoutMs, _ as resolveAgentOutboundTarget, _r as setTtsProvider, an as resolveSendPolicy, at as resolveOutboundSessionRoute, b as createOutboundSendDeps, br as OPENAI_TTS_VOICES, cr as getTtsProvider, ct as resolveOutboundTarget, dn as applyModelOverrideToSessionEntry, dr as resolveTtsApiKey, er as clearSessionQueues, et as pruneLegacyStoreKeys, fn as applyVerboseOverride, fr as resolveTtsAutoMode, g as resolveAgentDeliveryPlan, gr as setTtsEnabled, hr as resolveTtsProviderOrder, in as normalizeSendPolicy, it as ensureOutboundSessionEntry, jn as BARE_SESSION_RESET_PROMPT, lr as isTtsEnabled, m as agentCommand, mr as resolveTtsPrefsPath, mt as formatDoctorNonInteractiveHint, nt as resolveSessionModelRef, pn as parseVerboseOverride, pr as resolveTtsConfig, rr as waitForEmbeddedPiRunEnd, s as loadSymiPlugins, sr as resolveUserTimezone, tr as abortEmbeddedPiRun, tt as resolveGatewaySessionStoreTarget, ur as isTtsProviderConfigured, vr as textToSpeech, wn as enqueueSystemEvent, xt as normalizeCronJobCreate, yr as OPENAI_TTS_MODELS, yt as writeRestartSentinel, zt as applyBrowserProxyPaths } from "./unified-runner-NjwIEpGt.js";
3
+ import { $ as loadSessionEntry, Bt as persistBrowserProxyFiles, Cn as prepareAgentRun, H as runUnifiedTurn, Hn as stopSubagentsForRequester, I as createReplyDispatcher, J as canonicalizeSpawnedByForAgent, Jn as listDescendantRunsForRequester, K as listTasksInWorkdir, Kt as scheduleGatewaySigusr1Restart, Mn as normalizeGroupActivation, Mr as onAgentEvent, Nr as registerAgentRunContext, Q as loadCombinedSessionStoreForGateway, R as buildGlassUiProfile, Rn as formatZonedTimestamp, St as normalizeCronJobPatch, Tn as isSystemEventContextChanged, U as buildAgentTurnParams, Vn as isAbortTrigger, W as prepareReplyTurn, X as listAgentsForGateway, Xt as loadProviderUsageSummary, Yn as listSubagentRunsForRequester, Yt as unbindThreadBindingsBySessionKey, Z as listSessionsFromStore, Zn as resolveAgentTimeoutMs, _ as resolveAgentOutboundTarget, _r as setTtsProvider, an as resolveSendPolicy, at as resolveOutboundSessionRoute, b as createOutboundSendDeps, br as OPENAI_TTS_VOICES, cr as getTtsProvider, ct as resolveOutboundTarget, dn as applyModelOverrideToSessionEntry, dr as resolveTtsApiKey, er as clearSessionQueues, et as pruneLegacyStoreKeys, fn as applyVerboseOverride, fr as resolveTtsAutoMode, g as resolveAgentDeliveryPlan, gr as setTtsEnabled, hr as resolveTtsProviderOrder, in as normalizeSendPolicy, it as ensureOutboundSessionEntry, jn as BARE_SESSION_RESET_PROMPT, lr as isTtsEnabled, m as agentCommand, mr as resolveTtsPrefsPath, mt as formatDoctorNonInteractiveHint, nt as resolveSessionModelRef, pn as parseVerboseOverride, pr as resolveTtsConfig, rr as waitForEmbeddedPiRunEnd, s as loadSymiPlugins, sr as resolveUserTimezone, tr as abortEmbeddedPiRun, tt as resolveGatewaySessionStoreTarget, ur as isTtsProviderConfigured, vr as textToSpeech, wn as enqueueSystemEvent, xt as normalizeCronJobCreate, yr as OPENAI_TTS_MODELS, yt as writeRestartSentinel, zt as applyBrowserProxyPaths } from "./unified-runner-CzxCpDUC.js";
4
4
  import { C as createInternalHookEvent, T as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS } from "./registry-ClO_zVv-.js";
5
5
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
6
6
  import { Et as normalizeSecretInput, G as resolveSubagentConfiguredModelSelection, H as resolveDefaultModelForAgent, q as resolveThinkingDefault, z as resolveAllowedModelRef } from "./auth-profiles-HXq6s5EV.js";
@@ -21,7 +21,7 @@ import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as
21
21
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-CfQCToqp.js";
22
22
  import { n as createBrowserRouteDispatcher } from "./with-timeout-DLkDCwhx.js";
23
23
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-DnXliXio.js";
24
- import { r as getMemorySearchManager } from "./memory-cli-BFgNzW3D.js";
24
+ import { r as getMemorySearchManager } from "./memory-cli-LV7-59SK.js";
25
25
  import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as validateWebLoginWaitParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateSkillsUpdateParams, D as validateCronRemoveParams, Dt as validateUpdateRunParams, E as validateCronListParams, Et as validateTasksListParams, F as validateDevicePairRemoveParams, G as validateModelsListParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, I as validateDeviceTokenRevokeParams, It as ErrorCodes, J as validateNodeInvokeParams, Jt as revokeDeviceToken, K as validateNodeDescribeParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as errorShape, M as validateDevicePairApproveParams, Mt as validateWizardNextParams, N as validateDevicePairListParams, Nt as validateWizardStartParams, O as validateCronRunParams, Ot as validateWakeParams, P as validateDevicePairRejectParams, Pt as validateWizardStatusParams, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateSkillsStatusParams, T as validateCronAddParams, Tt as validateTalkModeParams, U as validateExecApprovalsSetParams, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeListParams, Xt as summarizeDeviceTokens, Y as validateNodeInvokeResultParams, Yt as rotateDeviceToken, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSessionsRestoreParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateSkillsBinsParams, c as validateAgentsFilesGetParams, ct as validateSessionsCompactParams, d as validateAgentsListParams, dt as validateSessionsFavoriteFileParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsListParams, g as validateChatHistoryParams, gt as validateSessionsResolveParams, h as validateChatAbortParams, ht as validateSessionsResetParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as validateWizardCancelParams, k as validateCronRunsParams, kt as validateWebLoginStartParams, l as validateAgentsFilesListParams, lt as validateSessionsDeleteFileParams, m as validateChannelsStatusParams, mt as validateSessionsPreviewParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsPatchParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsAdoptFileParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSessionsSearchParams, wt as validateTalkConfigParams, x as validateConfigPatchParams, xt as validateSkillsInstallParams, y as validateConfigApplyParams, yt as validateSessionsUsageParams, zt as parseSessionLabel } from "./client-CZSkE50e.js";
26
26
  import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-CCvj2tKV.js";
27
27
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-CTHqnrDZ.js";
@@ -33,21 +33,21 @@ import { n as normalizePollInput } from "./polls-C5iuAHi5.js";
33
33
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DqxWEvk3.js";
34
34
  import { i as parseAbsoluteTimeMs } from "./stagger-BEsczMsw.js";
35
35
  import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-B-ZzwyS1.js";
36
- import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-DiKuGlXT.js";
36
+ import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-D7nLp3pi.js";
37
37
  import { t as buildChannelUiCatalog } from "./catalog-pt1jhhyb.js";
38
38
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DzvtNke3.js";
39
39
  import { t as WizardCancelledError } from "./prompts-NOUgk6FH.js";
40
40
  import { t as resolveChannelDefaultAccountId } from "./helpers-CYGbI-uz.js";
41
41
  import { t as buildChannelAccountSnapshot } from "./status-TtGsgDjP.js";
42
42
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-SikqG3KB.js";
43
- import { n as getStatusSummary } from "./status-E8bxgRbF.js";
44
- import { l as abortHeartbeatRunForSession, s as setHeartbeatsEnabled } from "./health-Ux1rRtE3.js";
43
+ import { n as getStatusSummary } from "./status-DIGJ8-hp.js";
44
+ import { l as abortHeartbeatRunForSession, s as setHeartbeatsEnabled } from "./health-CcIuOt6-.js";
45
45
  import { m as normalizeUpdateChannel } from "./update-check-BIE5FLmi.js";
46
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-D2xhFnz-.js";
47
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-CpxstSW7.js";
46
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-CXP9q39j.js";
47
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DSrQ0TM2.js";
48
48
  import { t as resolveSystemRunCommand } from "./system-run-command-DKiCEPJc.js";
49
49
  import { t as installSkill } from "./skills-install-ClMBHyh2.js";
50
- import { t as runGatewayUpdate } from "./update-runner-DObjNXP5.js";
50
+ import { t as runGatewayUpdate } from "./update-runner-Bcmd0XnZ.js";
51
51
  import crypto, { randomUUID } from "node:crypto";
52
52
  import * as fs$2 from "node:fs";
53
53
  import fs from "node:fs";
@@ -7582,7 +7582,7 @@ const nodeHandlers = {
7582
7582
  const p = params;
7583
7583
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7584
7584
  await respondUnavailableOnThrow(respond, async () => {
7585
- const { handleNodeEvent } = await import("./server-node-events-D33Ivpdb.js");
7585
+ const { handleNodeEvent } = await import("./server-node-events-BTuwCzuB.js");
7586
7586
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7587
7587
  await handleNodeEvent({
7588
7588
  deps: context.deps,
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./tokens-Cz6cgZ7r.js";
4
- import { $ as loadSessionEntry, ct as resolveOutboundTarget, et as pruneLegacyStoreKeys, m as agentCommand, tn as requestHeartbeatNow, tt as resolveGatewaySessionStoreTarget, v as createOutboundSendDeps, wn as enqueueSystemEvent } from "./unified-runner-NjwIEpGt.js";
4
+ import { $ as loadSessionEntry, ct as resolveOutboundTarget, et as pruneLegacyStoreKeys, m as agentCommand, tn as requestHeartbeatNow, tt as resolveGatewaySessionStoreTarget, v as createOutboundSendDeps, wn as enqueueSystemEvent } from "./unified-runner-CzxCpDUC.js";
5
5
  import "./registry-ClO_zVv-.js";
6
6
  import { f as defaultRuntime } from "./subsystem-zqierDLj.js";
7
7
  import "./auth-profiles-HXq6s5EV.js";
@@ -56,8 +56,8 @@ import "./send-DNJPCiwf.js";
56
56
  import "./model-DIO3dH08.js";
57
57
  import "./pi-model-discovery-CXXH7biP.js";
58
58
  import "./reply-prefix-DnXliXio.js";
59
- import "./memory-cli-BFgNzW3D.js";
60
- import "./manager-DdfJ-DW0.js";
59
+ import "./memory-cli-LV7-59SK.js";
60
+ import "./manager-_IXN4-V8.js";
61
61
  import "./gemini-auth-D7Wqp9Ma.js";
62
62
  import "./retry-DYICeae5.js";
63
63
  import "./sqlite-CRogFEk1.js";
@@ -103,7 +103,7 @@ import "./onboard-helpers-B-ZzwyS1.js";
103
103
  import "./prompt-style-CSNJI4MG.js";
104
104
  import "./pairing-labels-6wdVkxUt.js";
105
105
  import "./pi-tools.policy-CQ0NqaBl.js";
106
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-D2xhFnz-.js";
106
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CXP9q39j.js";
107
107
  import { randomUUID } from "node:crypto";
108
108
 
109
109
  //#region src/gateway/server-node-events.ts
@@ -15,7 +15,7 @@ import "./client-CJIMV1WD.js";
15
15
  import "./call-DgBbW7bk.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import { Pn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, gt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-B4gg8TFc.js";
18
+ import { Pn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, gt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-k0ZBnJuU.js";
19
19
  import { d as updateSessionStore } from "./sessions-D94fC0u0.js";
20
20
  import "./tokens-BEvOiQ65.js";
21
21
  import { r as normalizeChannelId } from "./plugins-DTKQE9kt.js";
@@ -53,8 +53,8 @@ import "./tool-images-CVLISeRT.js";
53
53
  import "./thinking-8sKPnzpp.js";
54
54
  import "./models-config-BEX8iiQb.js";
55
55
  import "./reply-prefix-Pz-5t5RS.js";
56
- import "./memory-cli-CEvfDody.js";
57
- import "./manager-OL6o99xD.js";
56
+ import "./memory-cli-CFc9bXRp.js";
57
+ import "./manager-DrpXfTr8.js";
58
58
  import "./gemini-auth-48fFOTO4.js";
59
59
  import "./retry-C4Q_VPOo.js";
60
60
  import "./sqlite-BP8tiuca.js";
@@ -99,7 +99,7 @@ import "./onboard-helpers-wWVzXusf.js";
99
99
  import "./prompt-style-BxVdnrLq.js";
100
100
  import "./pairing-labels-D5bj-6hr.js";
101
101
  import "./pi-tools.policy-Dcon0Kdw.js";
102
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-zIsKDi4p.js";
102
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-jE3kPG6g.js";
103
103
  import { randomUUID } from "node:crypto";
104
104
 
105
105
  //#region src/gateway/server-node-events.ts
@@ -1,4 +1,4 @@
1
- import { o as createPluginLoaderLogger, s as loadSymiPlugins } from "./unified-runner-NjwIEpGt.js";
1
+ import { o as createPluginLoaderLogger, s as loadSymiPlugins } from "./unified-runner-CzxCpDUC.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
3
3
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BajBuriF.js";
4
4
  import { i as loadConfig } from "./config-B4cq-LO4.js";
@@ -9,13 +9,13 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-xM36I1Em.js";
9
9
  import { t as buildWorkspaceSkillStatus } from "./skills-status-BNfHkto8.js";
10
10
  import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-CE_yCGtB.js";
11
11
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DgBbW7bk.js";
12
- import { Bn as formatChannelAllowFrom, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Ln as peekSystemEvents, Rn as buildChannelSummary, on as loadProviderUsageSummary, sn as formatUsageReportLines, tt as sha256HexPrefix, zn as buildChannelAccountSnapshot } from "./subagent-registry-B4gg8TFc.js";
12
+ import { Bn as formatChannelAllowFrom, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Ln as peekSystemEvents, Rn as buildChannelSummary, on as loadProviderUsageSummary, sn as formatUsageReportLines, tt as sha256HexPrefix, zn as buildChannelAccountSnapshot } from "./subagent-registry-k0ZBnJuU.js";
13
13
  import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-D94fC0u0.js";
14
14
  import { n as listChannelPlugins } from "./plugins-DTKQE9kt.js";
15
15
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
16
16
  import { i as formatPortDiagnostics, n as inspectPortUsage } from "./ports-2xFXbwLq.js";
17
17
  import { c as resolveStorePath } from "./paths-DNdWAq7b.js";
18
- import { r as getMemorySearchManager } from "./memory-cli-CEvfDody.js";
18
+ import { r as getMemorySearchManager } from "./memory-cli-CFc9bXRp.js";
19
19
  import { n as formatTimeAgo } from "./format-relative-BDwAggS5.js";
20
20
  import { o as getRemoteSkillEligibility } from "./skill-commands-BLuiRgmy.js";
21
21
  import { l as resolveSessionModelRef, n as classifySessionKey, r as listAgentsForGateway, u as lookupContextTokens } from "./session-utils-BUK1eo6T.js";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-DJYthOLz.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-C6xPE2ln.js";
30
30
  import { t as renderTable } from "./table-Bka4fasy.js";
31
31
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-C7_mWfpH.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BJOdskDn.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CMNaNxdO.js";
33
33
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-BNjupSIM.js";
34
34
  import { t as resolveNodeService } from "./node-service-B-qdOCNb.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-xM36I1Em.js";
3
3
  import { i as loadConfig } from "./config-CE_yCGtB.js";
4
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-B4gg8TFc.js";
4
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-k0ZBnJuU.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
3
- import { An as formatChannelAllowFrom, Dn as peekSystemEvents, On as buildChannelSummary, X as listAgentsForGateway, Xt as loadProviderUsageSummary, Y as classifySessionKey, Zt as formatUsageReportLines, _t as summarizeRestartSentinel, gt as readRestartSentinel, kn as buildChannelAccountSnapshot, nt as resolveSessionModelRef, on as lookupContextTokens, xr as sha256HexPrefix } from "./unified-runner-NjwIEpGt.js";
3
+ import { An as formatChannelAllowFrom, Dn as peekSystemEvents, On as buildChannelSummary, X as listAgentsForGateway, Xt as loadProviderUsageSummary, Y as classifySessionKey, Zt as formatUsageReportLines, _t as summarizeRestartSentinel, gt as readRestartSentinel, kn as buildChannelAccountSnapshot, nt as resolveSessionModelRef, on as lookupContextTokens, xr as sha256HexPrefix } from "./unified-runner-CzxCpDUC.js";
4
4
  import { Ht as DEFAULT_MODEL, Ut as DEFAULT_PROVIDER, V as resolveConfiguredModelRef, Vt as DEFAULT_CONTEXT_TOKENS } from "./auth-profiles-HXq6s5EV.js";
5
5
  import { t as formatCliCommand } from "./command-format-CyXZlazG.js";
6
6
  import { S as parseAgentSessionKey } from "./session-key-oOB32jSB.js";
@@ -13,7 +13,7 @@ import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-VTIa2
13
13
  import { H as resolveMainSessionKey, R as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-CRVLhjOR.js";
14
14
  import { n as listChannelPlugins } from "./plugins-BL5D1_sT.js";
15
15
  import { c as resolveStorePath } from "./paths-BtFfPm8h.js";
16
- import { r as getMemorySearchManager } from "./memory-cli-BFgNzW3D.js";
16
+ import { r as getMemorySearchManager } from "./memory-cli-LV7-59SK.js";
17
17
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CCvj2tKV.js";
18
18
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
19
19
  import { o as getRemoteSkillEligibility } from "./skill-commands-Cph46COl.js";
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D0P5lDGf.j
28
28
  import { t as readLastGatewayErrorLine } from "./diagnostics-D40jPn_9.js";
29
29
  import { t as renderTable } from "./table-Cg6YZXv9.js";
30
30
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-SikqG3KB.js";
31
- import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-Ux1rRtE3.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CcIuOt6-.js";
32
32
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-BIE5FLmi.js";
33
33
  import { t as resolveNodeService } from "./node-service-DiZDC-T7.js";
34
34
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DNqZrSx7.js";
@@ -51,8 +51,8 @@ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as san
51
51
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
52
52
  import { t as ensureSymiModelsJson } from "./models-config-BEX8iiQb.js";
53
53
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-Pz-5t5RS.js";
54
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-CEvfDody.js";
55
- import { i as resolveMemorySearchConfig } from "./manager-OL6o99xD.js";
54
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-CFc9bXRp.js";
55
+ import { i as resolveMemorySearchConfig } from "./manager-DrpXfTr8.js";
56
56
  import { f as runTasksWithConcurrency } from "./internal-C2jxeHS9.js";
57
57
  import { n as retryAsync } from "./retry-C4Q_VPOo.js";
58
58
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-Co0LcWKH.js";
@@ -16194,6 +16194,11 @@ function buildAgentSystemPrompt(params) {
16194
16194
  "- Never narrate or quote tool output you did not actually receive from a real tool result. Writing \"I ran X and got Y\" without a corresponding tool invocation is fabrication and breaks user trust.",
16195
16195
  "- For factual local-system lookups (hostname, file contents, process state, env vars, current dir, system info), the answer comes from invoking the appropriate tool — not from priors. Always invoke.",
16196
16196
  "",
16197
+ "Example — when the user explicitly names a tool:",
16198
+ " User: \"Use the exec tool to run: echo hi\"",
16199
+ " Correct: call exec with command=\"echo hi\", then summarise the actual stdout you received.",
16200
+ " Wrong: emit \"hi\" as text without calling exec — that's fabrication.",
16201
+ "",
16197
16202
  ...compactMode ? [] : [
16198
16203
  "## Tool Call Style",
16199
16204
  "Default: do not narrate routine, low-risk tool calls (just call the tool).",
@@ -34938,6 +34943,91 @@ function createOutputNormalizer(profile, modelId) {
34938
34943
  //#endregion
34939
34944
  //#region src/agents/model-aware-stream.ts
34940
34945
  /**
34946
+ * Match imperative tool requests:
34947
+ * "Use the exec tool to run X"
34948
+ * "use exec to ..."
34949
+ * "Please invoke the read tool"
34950
+ * "call memory_search with ..."
34951
+ *
34952
+ * Anchored to start-of-string, start-of-line, or after a closing-bracket
34953
+ * delimiter `] ` (covers Symi's `[Thu 2026-04-30 20:48 EDT] ` timestamp
34954
+ * envelope, the `[Outlook 365] ` plugin banner, and similar prefixes that
34955
+ * gateway middleware can inject before the user's actual prompt — verified
34956
+ * live: `chat.send` from Glass UI ships content like
34957
+ *
34958
+ * Conversation info (untrusted metadata):
34959
+ * ```json
34960
+ * { "message_id": "...", ... }
34961
+ * ```
34962
+ *
34963
+ * [Thu 2026-04-30 20:48 EDT] Use the exec tool to run: hostname
34964
+ *
34965
+ * so the `Use` is preceded by `] ` not by `\n` or `^`).
34966
+ *
34967
+ * Verb list is conservative (use/invoke/call/please-{use,call}) — pure
34968
+ * imperative verbs that read unambiguously as "do this for me." Tool name
34969
+ * must match EXPLICIT_TOOL_NAMES exactly to keep "use poetic language" /
34970
+ * "use clear writing" / etc. from triggering.
34971
+ */
34972
+ const EXPLICIT_TOOL_REQUEST_PATTERN = new RegExp(String.raw`(?:^|\n|\]\s)\s*(?:please\s+)?(?:use|invoke|call)\s+(?:the\s+)?(?:` + [
34973
+ "exec",
34974
+ "bash",
34975
+ "read",
34976
+ "write",
34977
+ "edit",
34978
+ "patch",
34979
+ "web_search",
34980
+ "web_fetch",
34981
+ "browser",
34982
+ "browser_navigate",
34983
+ "browser_snapshot",
34984
+ "browser_click",
34985
+ "browser_type",
34986
+ "memory_search",
34987
+ "memory_get",
34988
+ "memory_pin",
34989
+ "memory_unpin",
34990
+ "spawn_agent",
34991
+ "message",
34992
+ "task_list",
34993
+ "task_cancel",
34994
+ "cron",
34995
+ "fetch",
34996
+ "skill_search"
34997
+ ].map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|") + String.raw`)(?:\s+tool)?\b`, "i");
34998
+ /**
34999
+ * Extract the user-role text ONLY when it's the LAST message in the
35000
+ * conversation (i.e., we're at the start of a fresh turn, not in the
35001
+ * middle of an agent loop). Returns "" when:
35002
+ * - messages isn't an array
35003
+ * - the last message isn't user-role (= we're after a tool_call /
35004
+ * tool_result and the model is continuing — forcing tool_choice
35005
+ * "required" here would loop the agent: model must call a tool →
35006
+ * tool result → model must call ANOTHER tool → tool result → ...)
35007
+ *
35008
+ * Verified live on 3.0.7 dev: with the original "find any prior user
35009
+ * message" implementation, every agent-loop iteration saw the same
35010
+ * matching userText and re-forced tool_choice="required", spinning the
35011
+ * model in an infinite tool-call loop and timing out at 180s.
35012
+ */
35013
+ function extractLastUserText(messages) {
35014
+ if (!Array.isArray(messages) || messages.length === 0) return "";
35015
+ const last = messages[messages.length - 1];
35016
+ if (!last || typeof last !== "object") return "";
35017
+ const msg = last;
35018
+ if (msg.role !== "user") return "";
35019
+ if (typeof msg.content === "string") return msg.content;
35020
+ if (Array.isArray(msg.content)) {
35021
+ const parts = [];
35022
+ for (const part of msg.content) if (part && typeof part === "object") {
35023
+ const block = part;
35024
+ if (block.type === "text" && typeof block.text === "string") parts.push(block.text);
35025
+ }
35026
+ return parts.join("\n");
35027
+ }
35028
+ return "";
35029
+ }
35030
+ /**
34941
35031
  * Create a single stream function wrapper that handles all provider-specific
34942
35032
  * param injection via one onPayload hook.
34943
35033
  *
@@ -34985,6 +35075,10 @@ function createModelAwareStreamFn(opts) {
34985
35075
  delete p.store;
34986
35076
  }
34987
35077
  if (Array.isArray(p.tools) && p.tools.length > 0 && p.tool_choice === void 0) p.tool_choice = "auto";
35078
+ if (Array.isArray(p.tools) && p.tools.length > 0 && p.tool_choice === "auto") {
35079
+ const userText = extractLastUserText(p.messages);
35080
+ if (userText && EXPLICIT_TOOL_REQUEST_PATTERN.test(userText)) p.tool_choice = "required";
35081
+ }
34988
35082
  }
34989
35083
  callerOnPayload?.(payload);
34990
35084
  };
@@ -53352,7 +53446,7 @@ function setCliSessionId(entry, provider, sessionId) {
53352
53446
  function createDefaultDeps() {
53353
53447
  return {
53354
53448
  sendMessageWhatsApp: async (...args) => {
53355
- const { sendMessageWhatsApp } = await import("./web-DMJyGxn3.js");
53449
+ const { sendMessageWhatsApp } = await import("./web-D9-D09LS.js");
53356
53450
  return await sendMessageWhatsApp(...args);
53357
53451
  },
53358
53452
  sendMessageTelegram: async (...args) => {
@@ -68666,7 +68760,7 @@ function loadWebLoginQr() {
68666
68760
  return webLoginQrPromise;
68667
68761
  }
68668
68762
  function loadWebChannel() {
68669
- webChannelPromise ??= import("./web-DMJyGxn3.js");
68763
+ webChannelPromise ??= import("./web-D9-D09LS.js");
68670
68764
  return webChannelPromise;
68671
68765
  }
68672
68766
  function loadWhatsAppActions() {
@@ -7,7 +7,7 @@ import "./reply-prefix-C7ZwCr7X.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-CQ_DQOwT.js";
9
9
  import "./tokens-DRIIdGfF.js";
10
- import { f as runAgentTurn } from "./pi-embedded-DiktDTAb.js";
10
+ import { f as runAgentTurn } from "./pi-embedded-D9KmgdGY.js";
11
11
  import "./plugins-CpxUKuIt.js";
12
12
  import "./accounts-DDEyGwby.js";
13
13
  import "./bindings-pK-Lzohb.js";
@@ -35,7 +35,7 @@ import "./accounts-DImOt9jX.js";
35
35
  import "./paths-DkMamAQ-.js";
36
36
  import "./tool-images-CdTyeTEN.js";
37
37
  import "./image-BwUdkv5g.js";
38
- import "./manager-D7uDkX3d.js";
38
+ import "./manager-ba9NOjzn.js";
39
39
  import "./gemini-auth-Drot-Pd7.js";
40
40
  import "./retry-QGp0jvVi.js";
41
41
  import "./sqlite-Bo4pHfp8.js";
@@ -4,7 +4,7 @@ import "./agent-scope-Ddr0Ws7u.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
5
5
  import "./workspace-CarmeCYN.js";
6
6
  import "./tokens-DLGDtW5r.js";
7
- import { t as runAgentTurn } from "./unified-runner-Bvqbwaaa.js";
7
+ import { t as runAgentTurn } from "./unified-runner-Dv9LPnmm.js";
8
8
  import "./auth-profiles-D4Yfd-KL.js";
9
9
  import "./env-BDXYbTKj.js";
10
10
  import "./github-copilot-token-cCYzSU9h.js";
@@ -39,7 +39,7 @@ import "./pi-auth-json-BmjnXR7W.js";
39
39
  import "./send-DqDuxaGt.js";
40
40
  import "./pi-model-discovery-CuZX_Q4t.js";
41
41
  import "./reply-prefix-C1Tw2ERK.js";
42
- import "./manager-H_Xir_av.js";
42
+ import "./manager-CpueNJtZ.js";
43
43
  import "./gemini-auth-CN9Q-uXv.js";
44
44
  import "./retry-B-y5suGA.js";
45
45
  import "./sqlite-VBmM_OHS.js";
@@ -14,7 +14,7 @@ import "./client-CJIMV1WD.js";
14
14
  import "./call-DgBbW7bk.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { X as runAgentTurn } from "./subagent-registry-B4gg8TFc.js";
17
+ import { X as runAgentTurn } from "./subagent-registry-k0ZBnJuU.js";
18
18
  import "./sessions-D94fC0u0.js";
19
19
  import "./tokens-BEvOiQ65.js";
20
20
  import "./plugins-DTKQE9kt.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-BEX8iiQb.js";
54
54
  import "./reply-prefix-Pz-5t5RS.js";
55
- import "./memory-cli-CEvfDody.js";
56
- import "./manager-OL6o99xD.js";
55
+ import "./memory-cli-CFc9bXRp.js";
56
+ import "./manager-DrpXfTr8.js";
57
57
  import "./gemini-auth-48fFOTO4.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./tokens-Cz6cgZ7r.js";
4
- import { t as runAgentTurn } from "./unified-runner-NjwIEpGt.js";
4
+ import { t as runAgentTurn } from "./unified-runner-CzxCpDUC.js";
5
5
  import "./registry-ClO_zVv-.js";
6
6
  import { t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
7
7
  import "./auth-profiles-HXq6s5EV.js";
@@ -55,8 +55,8 @@ import "./send-DNJPCiwf.js";
55
55
  import "./model-DIO3dH08.js";
56
56
  import "./pi-model-discovery-CXXH7biP.js";
57
57
  import "./reply-prefix-DnXliXio.js";
58
- import "./memory-cli-BFgNzW3D.js";
59
- import "./manager-DdfJ-DW0.js";
58
+ import "./memory-cli-LV7-59SK.js";
59
+ import "./manager-_IXN4-V8.js";
60
60
  import "./gemini-auth-D7Wqp9Ma.js";
61
61
  import "./retry-DYICeae5.js";
62
62
  import "./sqlite-CRogFEk1.js";