@symerian/symi 3.0.5 → 3.0.7

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 (357) hide show
  1. package/dist/{acp-cli-SLX4U46H.js → acp-cli-BkefrcvU.js} +2 -2
  2. package/dist/{acp-cli-aPRPM1jU.js → acp-cli-xUgfc3WW.js} +2 -2
  3. package/dist/{agents-C31Rki42.js → agents-CFKyEJDh.js} +7 -7
  4. package/dist/{agents.config-RWRy6rIz.js → agents.config-DSrQ0TM2.js} +1 -1
  5. package/dist/{agents.config-CdW6XC70.js → agents.config-JYh7a1x9.js} +1 -1
  6. package/dist/{audio-preflight-7VlwIoAg.js → audio-preflight-B66B1jBT.js} +11 -11
  7. package/dist/{audio-preflight-DL9R0CRd.js → audio-preflight-Comf0VGa.js} +5 -5
  8. package/dist/{audio-preflight-RG0fTyhp.js → audio-preflight-DvcBay7C.js} +11 -11
  9. package/dist/{audio-preflight-BcD2PTHh.js → audio-preflight-u4QXbquh.js} +5 -5
  10. package/dist/{audit-Ip7BSgXq.js → audit-C7_mWfpH.js} +5 -5
  11. package/dist/{audit-Cb-ucNGz.js → audit-SikqG3KB.js} +5 -5
  12. package/dist/{auth-choice-HLzOtM_E.js → auth-choice-BPmdR0Zg.js} +4 -4
  13. package/dist/{auth-choice-CpkZA5Fb.js → auth-choice-BqParF2V.js} +4 -4
  14. package/dist/{banner-CLUMLrXg.js → banner-Lq52Hf1m.js} +1 -1
  15. package/dist/{browser-cli-DLQ9y_nL.js → browser-cli-Ct8HGWkE.js} +3 -3
  16. package/dist/{browser-cli-viYF_JXk.js → browser-cli-MS81z9wg.js} +3 -3
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +14 -14
  19. package/dist/bundled/session-memory/handler.js +14 -14
  20. package/dist/{call-D-QldPAl.js → call-CCvj2tKV.js} +1 -1
  21. package/dist/{call-CMMshdf7.js → call-DgBbW7bk.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-C7sNbfoR.js → channel-options-DbwyNFsd.js} +1 -1
  24. package/dist/{channel-options-CxTmVSD2.js → channel-options-uukUHxrR.js} +1 -1
  25. package/dist/{channel-web-BmuOMmHL.js → channel-web-CBUFAaN-.js} +7 -7
  26. package/dist/{channels-cli-BLSpVlq1.js → channels-cli-DUwg4n9o.js} +31 -31
  27. package/dist/{channels-cli-DcVZnbe4.js → channels-cli-DwWkhoS-.js} +30 -30
  28. package/dist/{chrome-DHuU-xaH.js → chrome-CCBNmCWW.js} +8 -8
  29. package/dist/{chrome-CF_sILE7.js → chrome-Ch4HcYne.js} +1 -1
  30. package/dist/{chrome-D28fLAW4.js → chrome-D5qBbYwG.js} +1 -1
  31. package/dist/{chrome-BA_vE-T_.js → chrome-jO6meeZ4.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-O31zGPF7.js → cli-BK00_StG.js} +27 -27
  34. package/dist/{cli-Dws1dyLp.js → cli-DZZmysLn.js} +26 -26
  35. package/dist/{command-registry-DwK4sR5U.js → command-registry-DPjt2ua4.js} +11 -11
  36. package/dist/{completion-cli-D2NsT7td.js → completion-cli-DUHXuBGj.js} +2 -2
  37. package/dist/{completion-cli-D5X-_U46.js → completion-cli-Jc5c91D9.js} +1 -1
  38. package/dist/{config-Ck5BcSWj.js → config-B4cq-LO4.js} +1 -0
  39. package/dist/{config-B7hytTVE.js → config-CE_yCGtB.js} +1 -0
  40. package/dist/{config-CgcIvWO3.js → config-DBkWC2pa.js} +1 -0
  41. package/dist/{config-BHaHTnBp.js → config-DFWXZ6fI.js} +1 -0
  42. package/dist/{config-cli-DBEwCCjh.js → config-cli-CfqGGDZJ.js} +2 -2
  43. package/dist/{config-cli-eSDuAsBV.js → config-cli-Chi8-vDl.js} +2 -2
  44. package/dist/{config-guard-CCevhnwv.js → config-guard-DwWl7TAK.js} +2 -2
  45. package/dist/{config-guard-DEyyUpt4.js → config-guard-TR1jkNXi.js} +3 -3
  46. package/dist/{config-validation-D-deHdS8.js → config-validation-DBZanCiB.js} +1 -1
  47. package/dist/{config-validation-B4fJ0DaZ.js → config-validation-DoUCftnO.js} +1 -1
  48. package/dist/{configure-BzIMwRxB.js → configure-CpVWXUGL.js} +10 -10
  49. package/dist/{configure-D6Qm4Lj-.js → configure-n6QOImwq.js} +10 -10
  50. package/dist/{control-service-B7RWQLiW.js → control-service-BvbXdY02.js} +4 -4
  51. package/dist/{control-service-BfxuozGa.js → control-service-DqxWEvk3.js} +4 -4
  52. package/dist/control-ui/index.html +16 -1
  53. package/dist/{cron-cli-BUo6ukF1.js → cron-cli-Bb5Tbd08.js} +3 -3
  54. package/dist/{cron-cli-NujNcXV0.js → cron-cli-CPIBEzc-.js} +3 -3
  55. package/dist/{daemon-cli-zdCsTJkJ.js → daemon-cli-C2Sgv9GR.js} +6 -6
  56. package/dist/{daemon-cli-BT7S5TvI.js → daemon-cli-oss3NUE6.js} +6 -6
  57. package/dist/daemon-cli.js +1 -0
  58. package/dist/{daemon-runtime-CNPR-HLA.js → daemon-runtime-BR2zWQaj.js} +1 -1
  59. package/dist/{daemon-runtime-BvbhyxAH.js → daemon-runtime-zr84-Tnf.js} +1 -1
  60. package/dist/{deliver-BrKrH637.js → deliver-C3uijPde.js} +2 -2
  61. package/dist/{deliver-D7DxJd91.js → deliver-CPScTkVa.js} +2 -2
  62. package/dist/{deliver-bdiDgz_m.js → deliver-DfhPoLks.js} +2 -2
  63. package/dist/{deliver-JbMfTPUB.js → deliver-x9pAF7V9.js} +2 -2
  64. package/dist/{devices-cli-C3pFybfH.js → devices-cli-BHFbtdom.js} +2 -2
  65. package/dist/{devices-cli-BM2FhD5K.js → devices-cli-ZjWVt5uI.js} +2 -2
  66. package/dist/{directory-cli-TJ11rS-t.js → directory-cli-CEUugb91.js} +1 -1
  67. package/dist/{directory-cli-g2Da9NUV.js → directory-cli-C_-IQf9-.js} +1 -1
  68. package/dist/{dns-cli-BUgjFYVN.js → dns-cli-Bf9asotE.js} +1 -1
  69. package/dist/{dns-cli-Dw5bGGFg.js → dns-cli-DUXHJI-m.js} +1 -1
  70. package/dist/{doctor-completion-BPwQV-ef.js → doctor-completion-DRSIyjR1.js} +1 -1
  71. package/dist/{doctor-completion-B8aPnK1D.js → doctor-completion-efxxrdhl.js} +1 -1
  72. package/dist/{doctor-config-flow-CrOs5nBZ.js → doctor-config-flow-D2wMpwl6.js} +2 -2
  73. package/dist/{doctor-config-flow-BJaezY-B.js → doctor-config-flow-DsChXcPq.js} +2 -2
  74. package/dist/entry.js +1 -1
  75. package/dist/{exec-approvals-cli-WKnRfsMz.js → exec-approvals-cli-C56dUYfB.js} +4 -4
  76. package/dist/{exec-approvals-cli-DwoKSdX6.js → exec-approvals-cli-_ZHxjDbs.js} +4 -4
  77. package/dist/extensionAPI.js +14 -14
  78. package/dist/{gateway-cli-DEUpTUUU.js → gateway-cli-5x14dzdY.js} +43 -43
  79. package/dist/{gateway-cli-CJdMzfGg.js → gateway-cli-C9oE1hBq.js} +44 -44
  80. package/dist/{gateway-rpc-CNhEaRwc.js → gateway-rpc-Dzze6TT0.js} +1 -1
  81. package/dist/{gateway-rpc-CKeyXemH.js → gateway-rpc-fAb4g-fo.js} +1 -1
  82. package/dist/{glass-ui-ws-USMsNlrF.js → glass-ui-ws-CSvguyD3.js} +36 -36
  83. package/dist/{glass-ui-ws-CI2tY4VY.js → glass-ui-ws-Dy9BMqps.js} +35 -35
  84. package/dist/{health-DADbcUjH.js → health-CMNaNxdO.js} +9 -7
  85. package/dist/{health-DKdSaaSp.js → health-CcIuOt6-.js} +9 -7
  86. package/dist/{heartbeat-visibility-BYAwpddv.js → heartbeat-visibility-C1vHOBwO.js} +1 -1
  87. package/dist/{heartbeat-visibility-DiRt-9SG.js → heartbeat-visibility-D7nLp3pi.js} +1 -1
  88. package/dist/{hooks-cli-DUTvz1Ga.js → hooks-cli-BJBRRQxq.js} +28 -28
  89. package/dist/{hooks-cli-Caw8gkQj.js → hooks-cli-Lu13tVB5.js} +27 -27
  90. package/dist/{image-BTMaLQoN.js → image-B90NjIcK.js} +2 -2
  91. package/dist/{image-jSoHhWOJ.js → image-Bd7PlbeW.js} +2 -2
  92. package/dist/{image-BnYsa0na.js → image-BwUdkv5g.js} +2 -2
  93. package/dist/{image-BHi93D0D.js → image-J0q4FTmt.js} +2 -2
  94. package/dist/index.js +36 -36
  95. package/dist/{lifecycle-core-TcTVKc-d.js → lifecycle-core-Bi2zk2t-.js} +2 -2
  96. package/dist/{lifecycle-core-CL5FgOC2.js → lifecycle-core-C4cR9VIh.js} +2 -2
  97. package/dist/llm-slug-generator.js +14 -14
  98. package/dist/{login-DNscSrCq.js → login-Ba3Gh8gO.js} +2 -2
  99. package/dist/{login-BO3iHX58.js → login-DBotroF6.js} +2 -2
  100. package/dist/{login-DpdiwfRY.js → login-DUm_-NBD.js} +2 -2
  101. package/dist/{login-B4-mDgre.js → login-Wq2hdug_.js} +2 -2
  102. package/dist/{login-qr-DEsNxfsa.js → login-qr-B54ufJlL.js} +2 -2
  103. package/dist/{login-qr-FW9mxnTZ.js → login-qr-CDH_6HK-.js} +2 -2
  104. package/dist/{login-qr-CHLiUIn4.js → login-qr-CVq-7wwT.js} +2 -2
  105. package/dist/{login-qr-DinQS5Q-.js → login-qr-X80N1gVK.js} +2 -2
  106. package/dist/{logs-cli-2wkZiUpg.js → logs-cli-CVoLQsLw.js} +3 -3
  107. package/dist/{logs-cli-CEw2p4KE.js → logs-cli-cuWYZSGm.js} +3 -3
  108. package/dist/{manager-D5aKFQan.js → manager-CpueNJtZ.js} +3 -1
  109. package/dist/{manager-B_DIQr5x.js → manager-DrpXfTr8.js} +3 -1
  110. package/dist/{manager-CCO83rju.js → manager-_IXN4-V8.js} +3 -1
  111. package/dist/{manager-i9c4knWr.js → manager-ba9NOjzn.js} +3 -1
  112. package/dist/{memory-cli-CcJZq959.js → memory-cli-CFc9bXRp.js} +4 -4
  113. package/dist/{memory-cli-CMV_4qNt.js → memory-cli-LV7-59SK.js} +4 -4
  114. package/dist/{model-catalog-CIhQleui.js → model-catalog-BXJvtHkB.js} +2 -2
  115. package/dist/{model-catalog-DLDKR0vH.js → model-catalog-D8_DUGhN.js} +2 -2
  116. package/dist/{model-picker-DTiPskHl.js → model-picker-BO_XjLs5.js} +2 -2
  117. package/dist/{model-picker-CvFyFoTj.js → model-picker-CdgzsHoJ.js} +2 -2
  118. package/dist/{models-BBVF3N5h.js → models-BB9yLhYJ.js} +8 -8
  119. package/dist/{models-cli-CWjUR6jD.js → models-cli-RtPAmw2C.js} +29 -29
  120. package/dist/{models-cli-BoEnfpbd.js → models-cli-trgrhp5d.js} +30 -30
  121. package/dist/{models-config-BNjsQXqN.js → models-config-BEX8iiQb.js} +1 -1
  122. package/dist/{models-config-aP6HLw1e.js → models-config-CL0wc8fj.js} +1 -1
  123. package/dist/{node-cli-DLLLnLB6.js → node-cli-B4GhtpZH.js} +9 -9
  124. package/dist/{node-cli-cqKJ8LTg.js → node-cli-BhTErAfL.js} +9 -9
  125. package/dist/{nodes-cli-Bl89357L.js → nodes-cli-DZVhhJte.js} +3 -3
  126. package/dist/{nodes-cli-4CdSHdgC.js → nodes-cli-DzaeDsdt.js} +3 -3
  127. package/dist/{onboard-B95SIUYs.js → onboard-CQ-O5iJq.js} +7 -7
  128. package/dist/{onboard-CkvEVZmg.js → onboard-DHXKRs-D.js} +7 -7
  129. package/dist/{onboard-channels-CR-xlJFO.js → onboard-channels-jMIN_VEb.js} +1 -1
  130. package/dist/{onboard-channels-DIcdi2AK.js → onboard-channels-puKAWnzj.js} +1 -1
  131. package/dist/{onboard-custom-DwAz_PQz.js → onboard-custom-BZNMW8nN.js} +2 -2
  132. package/dist/{onboard-custom-BlTblXsb.js → onboard-custom-D1bZYymg.js} +2 -2
  133. package/dist/{onboard-helpers-BhSxxuNs.js → onboard-helpers-B-ZzwyS1.js} +2 -2
  134. package/dist/{onboard-helpers-Cn16Pbie.js → onboard-helpers-wWVzXusf.js} +2 -2
  135. package/dist/{onboard-remote-qX5Wy_1Y.js → onboard-remote-BM6iyKMU.js} +1 -1
  136. package/dist/{onboard-remote-CogNkM-d.js → onboard-remote-BSJel3KR.js} +1 -1
  137. package/dist/{onboard-skills-BF2KTUYa.js → onboard-skills-Cu32ZZd8.js} +1 -1
  138. package/dist/{onboard-skills-D-AtUjv0.js → onboard-skills-DXXblSCY.js} +1 -1
  139. package/dist/{onboarding-BmLfdjCH.js → onboarding-B-gCsRKr.js} +10 -10
  140. package/dist/{onboarding-B1boPRId.js → onboarding-C0pJSLCL.js} +10 -10
  141. package/dist/{onboarding.finalize-CfEE7-PY.js → onboarding.finalize-CwYMMBek.js} +33 -33
  142. package/dist/{onboarding.finalize-_5UxeiqD.js → onboarding.finalize-TzNrDgVI.js} +35 -35
  143. package/dist/{onboarding.gateway-config-DsDYeeIU.js → onboarding.gateway-config-B6lMiTCf.js} +4 -4
  144. package/dist/{onboarding.gateway-config-BY2OMDhe.js → onboarding.gateway-config-B8jnL_8v.js} +4 -4
  145. package/dist/{outbound-DOGNdenh.js → outbound--D0GaEGd.js} +1 -1
  146. package/dist/{outbound-D1P9NRqt.js → outbound-CsDoW61Z.js} +1 -1
  147. package/dist/{outbound-C-G-kHsi.js → outbound-Deksgw1c.js} +1 -1
  148. package/dist/{outbound-FLxnqgVT.js → outbound-pYvJZbxj.js} +1 -1
  149. package/dist/{pairing-cli-GEeFof8K.js → pairing-cli-CctzIwyt.js} +1 -1
  150. package/dist/{pairing-cli-IFupy_GY.js → pairing-cli-DV5IoVo8.js} +1 -1
  151. package/dist/{pi-embedded-KvDF4k37.js → pi-embedded-D9KmgdGY.js} +128 -34
  152. package/dist/{pi-embedded-helpers-Cfs4ypqV.js → pi-embedded-helpers-CemJuCvK.js} +5 -5
  153. package/dist/{pi-embedded-helpers-jigXQXJ0.js → pi-embedded-helpers-CyWhePxB.js} +1 -1
  154. package/dist/{pi-embedded-helpers-B-8ZHWEv.js → pi-embedded-helpers-D-J8HX4N.js} +5 -5
  155. package/dist/{pi-embedded-helpers-OVjpYTjc.js → pi-embedded-helpers-DgpBVQgx.js} +1 -1
  156. package/dist/{pi-tools.policy-C-1ymH8j.js → pi-tools.policy-CQ0NqaBl.js} +2 -2
  157. package/dist/{pi-tools.policy-DhVFmon9.js → pi-tools.policy-Dcon0Kdw.js} +2 -2
  158. package/dist/{plugin-registry-BwD3_18N.js → plugin-registry-B33lS3i0.js} +2 -2
  159. package/dist/{plugin-registry-XCsRIV6A.js → plugin-registry-DzQCMRvf.js} +2 -2
  160. package/dist/plugin-sdk/agents/memory-search.d.ts +2 -0
  161. package/dist/plugin-sdk/agents/model-aware-stream.d.ts +21 -0
  162. package/dist/plugin-sdk/{audio-preflight-BhkCr3Qt.js → audio-preflight-Cl6PVUW_.js} +5 -5
  163. package/dist/plugin-sdk/{channel-web-CfX0N1pc.js → channel-web-oG-aaS67.js} +7 -7
  164. package/dist/plugin-sdk/{chrome-BaY-YSjo.js → chrome-CrHP4JAa.js} +1 -1
  165. package/dist/plugin-sdk/config/types.tools.d.ts +18 -0
  166. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +1 -0
  167. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +2 -0
  168. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +2 -0
  169. package/dist/plugin-sdk/config/zod-schema.d.ts +2 -0
  170. package/dist/plugin-sdk/{config-BueY-n42.js → config-Bv0LE_Mp.js} +1 -0
  171. package/dist/plugin-sdk/{deliver-DeZ3VnXe.js → deliver-lElKpUWY.js} +2 -2
  172. package/dist/plugin-sdk/{image-GswOdB-h.js → image-Br537YWQ.js} +2 -2
  173. package/dist/plugin-sdk/index.js +18 -18
  174. package/dist/plugin-sdk/{login-DFWiVGsL.js → login-BqGhBXI8.js} +2 -2
  175. package/dist/plugin-sdk/{login-qr-BL64vWvo.js → login-qr-mWNNbk2o.js} +2 -2
  176. package/dist/plugin-sdk/{manager-CTCJC3tJ.js → manager-hfHALsDs.js} +3 -1
  177. package/dist/plugin-sdk/{outbound-D4X0u9lm.js → outbound-CgeYMV-m.js} +1 -1
  178. package/dist/plugin-sdk/{pi-embedded-helpers-CJWL6gbA.js → pi-embedded-helpers-DLlOikDI.js} +5 -5
  179. package/dist/plugin-sdk/{pw-ai-COrukmRv.js → pw-ai-Bo7ZVnlF.js} +2 -2
  180. package/dist/plugin-sdk/{replies-CoKuXRsx.js → replies-CuNUVXBG.js} +1 -1
  181. package/dist/plugin-sdk/{runner-MEZJzDgS.js → runner-NZmejDHd.js} +2 -2
  182. package/dist/plugin-sdk/{send-Db0HK44C.js → send-BE1OwwUT.js} +1 -1
  183. package/dist/plugin-sdk/{send-NM_A_sOM.js → send-CKznEmCe.js} +1 -1
  184. package/dist/plugin-sdk/{send-BhxqKPEe.js → send-CNHhzZOb.js} +1 -1
  185. package/dist/plugin-sdk/{send-BxIdXVEH.js → send-CNkol_HZ.js} +1 -1
  186. package/dist/plugin-sdk/{send-DH8p3a8S.js → send-v8Nttqd6.js} +1 -1
  187. package/dist/plugin-sdk/{session-Ce4jJBkA.js → session-DMulfRcG.js} +1 -1
  188. package/dist/plugin-sdk/{synthesis-ConUzFGh.js → synthesis-BWBeCBqa.js} +14 -14
  189. package/dist/plugin-sdk/{unified-runner-CGG4V4GF.js → unified-runner-CZE3p9mg.js} +128 -34
  190. package/dist/plugin-sdk/{web-CQjh3AxJ.js → web-CD_2TcPx.js} +18 -18
  191. package/dist/plugin-sdk/{whatsapp-actions-B6wMaQvI.js → whatsapp-actions-BXONjmN2.js} +2 -2
  192. package/dist/{plugins-cli-BVTxTlfK.js → plugins-cli-BH-dPouA.js} +28 -28
  193. package/dist/{plugins-cli-1lBcktTr.js → plugins-cli-D7SeopUy.js} +27 -27
  194. package/dist/{program-DilieH76.js → program-CbKSDUST.js} +34 -34
  195. package/dist/{program-context-BUsGcZ5K.js → program-context-ClWlMpYr.js} +38 -38
  196. package/dist/{prompt-select-styled-CRidc79Z.js → prompt-select-styled-CM2KCKfA.js} +15 -15
  197. package/dist/{prompt-select-styled-Ctf1ruvB.js → prompt-select-styled-CdC8Q0fu.js} +15 -15
  198. package/dist/{provider-auth-helpers-8OqZi7_D.js → provider-auth-helpers-Brx0zsB4.js} +2 -2
  199. package/dist/{provider-auth-helpers-CsuwhlS8.js → provider-auth-helpers-Df50nCNL.js} +2 -2
  200. package/dist/{push-apns-sGhGdbb-.js → push-apns-CXP9q39j.js} +1 -1
  201. package/dist/{push-apns-CLRFaiAE.js → push-apns-jE3kPG6g.js} +1 -1
  202. package/dist/{pw-ai-CggZCM2p.js → pw-ai-BIjsJDaR.js} +2 -2
  203. package/dist/{pw-ai--dm2WXFo.js → pw-ai-BYNCEM3Z.js} +2 -2
  204. package/dist/{pw-ai-BWgottFJ.js → pw-ai-BbcvELF_.js} +2 -2
  205. package/dist/{pw-ai-DF9fuOsZ.js → pw-ai-BhyEbqyE.js} +2 -2
  206. package/dist/{qr-cli-dAjonhlC.js → qr-cli-CK0zGNZ4.js} +1 -1
  207. package/dist/{qr-cli-aqONL8cJ.js → qr-cli-XcVhH3Jv.js} +1 -1
  208. package/dist/{register.agent-BLqaC7wr.js → register.agent-DGwbPjex.js} +33 -33
  209. package/dist/{register.agent-D3r3Cfgl.js → register.agent-DzQtVgfQ.js} +35 -35
  210. package/dist/{register.configure-Ds0LPsl_.js → register.configure-B56gsKYf.js} +39 -39
  211. package/dist/{register.configure-jPXsZW6R.js → register.configure-BQ1gQQOO.js} +38 -38
  212. package/dist/{register.maintenance-Dyyz53l6.js → register.maintenance-DLsCNL7g.js} +38 -38
  213. package/dist/{register.maintenance-VVqxSbZ2.js → register.maintenance-mKHTp7uq.js} +36 -36
  214. package/dist/{register.message-BwBrpTAS.js → register.message--QXkhXHQ.js} +28 -28
  215. package/dist/{register.message-vrfo1lW2.js → register.message-xW7Gic5V.js} +27 -27
  216. package/dist/{register.onboard-4m2wQVCx.js → register.onboard-Cd0kw_oz.js} +35 -35
  217. package/dist/{register.onboard-CAdQ1fhS.js → register.onboard-Cxvbpqqb.js} +34 -34
  218. package/dist/{register.setup-CUygpxWF.js → register.setup-C63_l0Z_.js} +34 -34
  219. package/dist/{register.setup-H2ySxPeg.js → register.setup-D-WYhPYF.js} +35 -35
  220. package/dist/{register.status-health-sessions-VdPj8VE6.js → register.status-health-sessions-BGA-7IT8.js} +31 -31
  221. package/dist/{register.status-health-sessions-BU_Xepf2.js → register.status-health-sessions-CsjDghzj.js} +33 -33
  222. package/dist/{register.subclis-mOXyVjim.js → register.subclis-BOf3y4FX.js} +28 -28
  223. package/dist/{replies-BPQs27R4.js → replies-4XSfUGcM.js} +1 -1
  224. package/dist/{replies-CskRrKs9.js → replies-CWMT_rJr.js} +1 -1
  225. package/dist/{replies-BsFq4sZB.js → replies-DfZMhCS3.js} +1 -1
  226. package/dist/{replies-B5cTrFyD.js → replies-_B-06blu.js} +1 -1
  227. package/dist/{routes-DSW8S1um.js → routes-BSdW9fe_.js} +3 -3
  228. package/dist/{routes-DX1GUsXD.js → routes-CnaZbw2w.js} +3 -3
  229. package/dist/{rpc-CJPibsEg.js → rpc-B-YfFSK_.js} +1 -1
  230. package/dist/{rpc-C5ek807e.js → rpc-DVwN1wTq.js} +1 -1
  231. package/dist/{run-main-yY3TMnkx.js → run-main-CG1sYHQC.js} +45 -45
  232. package/dist/{runner-Cq65tnA2.js → runner-1H0w41iZ.js} +2 -2
  233. package/dist/{runner-BrSJk-nP.js → runner-BYhzYtCr.js} +2 -2
  234. package/dist/{runner-CjRh_0MJ.js → runner-CeTLeUz8.js} +3 -3
  235. package/dist/{runner-DZH8aTbF.js → runner-rnT7fZT8.js} +3 -3
  236. package/dist/{sandbox-BWC66gJ2.js → sandbox-KHd-LEcA.js} +5 -5
  237. package/dist/{sandbox-cli-Cw-78dgT.js → sandbox-cli-C8q8hpwm.js} +6 -6
  238. package/dist/{sandbox-cli-BVHZ3_cM.js → sandbox-cli-DAjKi08U.js} +6 -6
  239. package/dist/{sandbox-DzKDjwYE.js → sandbox-z-bMKyXG.js} +5 -5
  240. package/dist/{security-cli-COm1vy8H.js → security-cli-BZGXse8f.js} +9 -9
  241. package/dist/{security-cli-CNnScBKu.js → security-cli-lHDeyQML.js} +9 -9
  242. package/dist/{send-Df6r2zEP.js → send-4pTrVxql.js} +1 -1
  243. package/dist/{send-B9iXamIc.js → send-BC4ozm9s.js} +1 -1
  244. package/dist/{send-1QRxOP-y.js → send-BR7JNX2z.js} +1 -1
  245. package/dist/{send-BjssdZGh.js → send-BXtUzo0M.js} +1 -1
  246. package/dist/{send-D_0qYkk2.js → send-CHK8FtXb.js} +1 -1
  247. package/dist/{send-CRpxYIbW.js → send-CLMMR7dh.js} +1 -1
  248. package/dist/{send-D5-ISzQ4.js → send-CgdaRng5.js} +1 -1
  249. package/dist/{send-BW2RdeDW.js → send-Cx4vrfJP.js} +1 -1
  250. package/dist/{send-CueljEnr.js → send-D7lU0o62.js} +1 -1
  251. package/dist/{send-C8NGT-Ba.js → send-DD0hQa2v.js} +1 -1
  252. package/dist/{send-CF3rJWcH.js → send-DJFvNuZT.js} +1 -1
  253. package/dist/{send-0T_zeZwX.js → send-DNJPCiwf.js} +1 -1
  254. package/dist/{send-6tIchJx1.js → send-DYngxifF.js} +1 -1
  255. package/dist/{send-BB1-0YLF.js → send-DhAxzZ8w.js} +1 -1
  256. package/dist/{send-CaUsEh2i.js → send-DqDuxaGt.js} +1 -1
  257. package/dist/{send-BC0DD1NX.js → send-DsF_k4iD.js} +1 -1
  258. package/dist/{send-eKoZdxO3.js → send-Dt4ckMdP.js} +1 -1
  259. package/dist/{send-DnNGu-mg.js → send-EP8iUNe0.js} +1 -1
  260. package/dist/{send-T5cneHvv.js → send-GVWB2Voz.js} +1 -1
  261. package/dist/{send-CoyHTIkX.js → send-VWh1ZJ59.js} +1 -1
  262. package/dist/{server-context-BW6nsEj2.js → server-context-B6-_CwLh.js} +5 -5
  263. package/dist/{server-context-DB0lqAbd.js → server-context-CpBHom_o.js} +5 -5
  264. package/dist/{server-methods-6r8AVyZo.js → server-methods-C72ajlYe.js} +18 -18
  265. package/dist/{server-methods-fiw2vQ0D.js → server-methods-C_TFp6B4.js} +17 -17
  266. package/dist/{server-node-events-CVIOrcaZ.js → server-node-events-BTuwCzuB.js} +27 -27
  267. package/dist/{server-node-events-Da8gz0D4.js → server-node-events-Cn5abeER.js} +28 -28
  268. package/dist/{session-ClznZdso.js → session-B7i_vxCD.js} +1 -1
  269. package/dist/{session-DhuUx124.js → session-BF6vrmuh.js} +1 -1
  270. package/dist/{session-B0yYPsjc.js → session-Cqv-gYTI.js} +1 -1
  271. package/dist/{session-B-EgZObw.js → session-pKv-4CWW.js} +1 -1
  272. package/dist/{session-utils-D3bujr7i.js → session-utils-BUK1eo6T.js} +3 -3
  273. package/dist/{sessions-Bt2R8Frc.js → sessions-CRVLhjOR.js} +1 -1
  274. package/dist/{sessions-BcVubF7J.js → sessions-D94fC0u0.js} +1 -1
  275. package/dist/{sessions-BpsuHLTZ.js → sessions-p3nGvY-e.js} +3 -3
  276. package/dist/{shared-BUH3leMT.js → shared-BI81j0__.js} +1 -1
  277. package/dist/{shared-BA09_1j-.js → shared-CAMX8OWO.js} +1 -1
  278. package/dist/{skills-cli-C1LHgWl8.js → skills-cli-D97YSR7L.js} +1 -1
  279. package/dist/{skills-cli-wUf8KWaR.js → skills-cli-ICctTcAB.js} +1 -1
  280. package/dist/{status-B0Ym9IzS.js → status-C5RXDLjI.js} +2 -2
  281. package/dist/{status-1kUOwQfZ.js → status-CrxGjZwV.js} +10 -10
  282. package/dist/{status-9Glk2Q2B.js → status-CvJZLdWA.js} +2 -2
  283. package/dist/{status-CLjgAe5q.js → status-DIGJ8-hp.js} +9 -9
  284. package/dist/{status.update-a_fTORCa.js → status.update-BdkE6Cod.js} +1 -1
  285. package/dist/{status.update-ChzlQg6R.js → status.update-Ci9RxUx0.js} +1 -1
  286. package/dist/{subagent-registry-bK5FCDB-.js → subagent-registry-k0ZBnJuU.js} +138 -44
  287. package/dist/{synthesis-BE9kBVIy.js → synthesis-C-rsRpDw.js} +14 -14
  288. package/dist/{synthesis-CelFVrWu.js → synthesis-C3AKD3Nb.js} +14 -14
  289. package/dist/{synthesis-DKfVS207.js → synthesis-D4qwtCYE.js} +27 -27
  290. package/dist/{synthesis-CYyC8fJ7.js → synthesis-cor0WJGI.js} +26 -26
  291. package/dist/{system-cli-DHwi7B74.js → system-cli-BMi53V_0.js} +3 -3
  292. package/dist/{system-cli--HaQdhmT.js → system-cli-fvY3PiH8.js} +3 -3
  293. package/dist/{systemd-hints-7jA4B9yL.js → systemd-hints-CtDlWsoa.js} +1 -1
  294. package/dist/{systemd-hints-6b15UpwM.js → systemd-hints-rhtpAhSk.js} +1 -1
  295. package/dist/{tui-yHygmQGV.js → tui-Cb1kUTIe.js} +4 -4
  296. package/dist/{tui-cli-oysOeeS2.js → tui-cli-Cx44kIjI.js} +9 -9
  297. package/dist/{tui-cli-BNX6yajf.js → tui-cli-PaTg3cDc.js} +9 -9
  298. package/dist/{tui-FJicYjNU.js → tui-lLpf5sOM.js} +4 -4
  299. package/dist/{unified-runner-BvY8tmF0.js → unified-runner-CzxCpDUC.js} +137 -43
  300. package/dist/{unified-runner-Dh_hYmd8.js → unified-runner-Dv9LPnmm.js} +132 -38
  301. package/dist/{update-cli-CUvlEupN.js → update-cli-D2Ou3_k5.js} +39 -39
  302. package/dist/{update-cli-qhS0Kx8H.js → update-cli-DGrOVmGg.js} +41 -41
  303. package/dist/{update-runner-DHG9wCtv.js → update-runner-BSDKsvVP.js} +1 -1
  304. package/dist/{update-runner-D-kVrvYJ.js → update-runner-Bcmd0XnZ.js} +1 -1
  305. package/dist/{web-BsMyLJ9U.js → web-CSPcQYqR.js} +17 -17
  306. package/dist/{web-Dsz90QxB.js → web-D9-D09LS.js} +31 -31
  307. package/dist/{web-CuVSvTEx.js → web-DJqpgWuK.js} +31 -31
  308. package/dist/{web-CUH36UV-.js → web-gqbdxJga.js} +17 -17
  309. package/dist/{webhooks-cli-BvNkR37v.js → webhooks-cli-DPDaGUXl.js} +1 -1
  310. package/dist/{webhooks-cli-DBkUIJwC.js → webhooks-cli-zq1FsM8z.js} +1 -1
  311. package/dist/{whatsapp-actions-CClS-oC0.js → whatsapp-actions-CfnLN3ec.js} +2 -2
  312. package/dist/{whatsapp-actions-Cr1xA2R5.js → whatsapp-actions-DQjDkvGy.js} +2 -2
  313. package/dist/{whatsapp-actions-DkqHO1cU.js → whatsapp-actions-D_4XH0u1.js} +2 -2
  314. package/dist/{whatsapp-actions-Boi_IlYs.js → whatsapp-actions-Dl0Yvb4C.js} +2 -2
  315. package/dist/{with-timeout-Duce25_e.js → with-timeout-DLkDCwhx.js} +1 -1
  316. package/dist/{with-timeout-B4-KtRh-.js → with-timeout-Sf6xNmAk.js} +1 -1
  317. package/extensions/bluebubbles/package.json +1 -1
  318. package/extensions/copilot-proxy/package.json +1 -1
  319. package/extensions/diagnostics-otel/package.json +1 -1
  320. package/extensions/discord/package.json +1 -1
  321. package/extensions/feishu/package.json +1 -1
  322. package/extensions/google-antigravity-auth/package.json +1 -1
  323. package/extensions/google-gemini-cli-auth/package.json +1 -1
  324. package/extensions/googlechat/package.json +1 -1
  325. package/extensions/imessage/package.json +1 -1
  326. package/extensions/irc/package.json +1 -1
  327. package/extensions/learning-loop/package.json +1 -1
  328. package/extensions/line/package.json +1 -1
  329. package/extensions/llm-task/package.json +1 -1
  330. package/extensions/matrix/CHANGELOG.md +12 -0
  331. package/extensions/matrix/package.json +1 -1
  332. package/extensions/mattermost/package.json +1 -1
  333. package/extensions/memory-core/package.json +1 -1
  334. package/extensions/memory-lancedb/package.json +1 -1
  335. package/extensions/minimax-portal-auth/package.json +1 -1
  336. package/extensions/msteams/CHANGELOG.md +12 -0
  337. package/extensions/msteams/package.json +1 -1
  338. package/extensions/nextcloud-talk/package.json +1 -1
  339. package/extensions/nostr/CHANGELOG.md +12 -0
  340. package/extensions/nostr/package.json +1 -1
  341. package/extensions/open-prose/package.json +1 -1
  342. package/extensions/outlook/package.json +1 -1
  343. package/extensions/pipeline/package.json +1 -1
  344. package/extensions/signal/package.json +1 -1
  345. package/extensions/slack/package.json +1 -1
  346. package/extensions/telegram/package.json +1 -1
  347. package/extensions/tlon/package.json +1 -1
  348. package/extensions/twitch/CHANGELOG.md +12 -0
  349. package/extensions/twitch/package.json +1 -1
  350. package/extensions/voice-call/CHANGELOG.md +12 -0
  351. package/extensions/voice-call/package.json +1 -1
  352. package/extensions/whatsapp/package.json +1 -1
  353. package/extensions/zalo/CHANGELOG.md +12 -0
  354. package/extensions/zalo/package.json +1 -1
  355. package/extensions/zalouser/CHANGELOG.md +12 -0
  356. package/extensions/zalouser/package.json +1 -1
  357. package/package.json +1 -1
@@ -12,20 +12,20 @@ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN,
12
12
  import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$1, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-CpxUKuIt.js";
13
13
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-DDEyGwby.js";
14
14
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
15
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CoyHTIkX.js";
16
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-1QRxOP-y.js";
17
- import { a as normalizeOutboundPayloadsForJson, c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, i as normalizeOutboundPayloads, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, r as formatOutboundPayloadLog, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-BrKrH637.js";
15
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-VWh1ZJ59.js";
16
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-BR7JNX2z.js";
17
+ import { a as normalizeOutboundPayloadsForJson, c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, i as normalizeOutboundPayloads, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, r as formatOutboundPayloadLog, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-C3uijPde.js";
18
18
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, o as logMessageQueued, p as isDiagnosticsEnabled, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BVsSwe-J.js";
19
19
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
21
- import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-D5-ISzQ4.js";
21
+ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-CgdaRng5.js";
22
22
  import { d as detectMime, f as extensionForMime, g as isGifMedia, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-BKUwjozo.js";
23
23
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
24
24
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BQINJQIT.js";
25
- import { $ as normalizeDeliveryContext, A as parseImageDimensionError, At as resolveExistingPathsWithinRoot, B as resolveAndPersistSessionFile, Bt as normalizeToolName, C as isFailoverAssistantError, Ct as acquireSessionWriteLock, D as isRawApiErrorPayload, Dt as resolveBrowserConfig, E as isRateLimitAssistantError, Et as registerBrowserRoutes, F as resolveSandboxRuntimeStatus, Ft as buildPluginToolGroups, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as readSessionUpdatedAt, Ht as stripPluginOnlyAllowlist, I as extractDeliveryInfo, It as collectExplicitAllowlist, J as isCacheEnabled, Jt as resolveBootstrapTotalMaxChars, K as updateSessionStore, Kt as ensureSessionHeader, L as parseSessionThreadInfo, Lt as expandPolicyWithPluginGroups, M as sanitizeUserFacingText, Mt as ensureBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as resolveBrowserControlAuth, O as isTimeoutErrorMessage, Ot as resolveProfile, P as resolveSandboxContext, Pt as applyOwnerOnlyToolPolicy, Q as mergeDeliveryContext, R as appendAssistantMessageToSessionTranscript, Rt as expandToolGroups, S as isContextOverflowError, St as resolveGroupSessionKey, T as isLikelyContextOverflowError, Tt as createBrowserRouteContext, U as recordSessionMetaFromInbound, Ut as compileGlobPatterns, V as loadSessionStore, Vt as resolveToolProfilePolicy, Wt as matchesAnyGlobPattern, X as deliveryContextFromSession, Y as resolveCacheTtlMs$1, Yt as sanitizeGoogleTurnOrdering, Z as deliveryContextKey, _ as getApiErrorPayloadFingerprint, _t as resolveFreshSessionTotalTokens, a as normalizeTextForComparison, at as extractToolCallNames, b as isCloudCodeAssistFormatError, bt as resolveMainSessionKey, c as extractToolResultId, ct as hasInterSessionUserProvenance, d as isGoogleModelApi, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as BILLING_ERROR_USER_MESSAGE, ft as resolveChannelResetConfig, g as formatRawAssistantErrorForUi, gt as DEFAULT_RESET_TRIGGERS, h as formatBillingErrorMessage, ht as resolveThreadFlag, i as isMessagingToolDuplicateNormalized, it as countToolResults, j as parseImageSizeError, jt as getBridgeAuthForPort, k as isTransientHttpError, kt as DEFAULT_UPLOAD_DIR, l as downgradeOpenAIReasoningBlocks, lt as normalizeInputProvenance, m as formatAssistantErrorText, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as sanitizeSessionMessagesImages, ot as INPUT_PROVENANCE_KIND_VALUES, p as classifyFailoverReason, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as resolveBootstrapMaxChars, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as extractToolCallsFromAssistant, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as isAntigravityClaude, ut as resolveSessionKey, v as isAuthAssistantError, vt as canonicalizeMainSessionAlias, w as isFailoverErrorMessage, wt as resolveSessionLockMaxHoldFromTimeout, x as isCompactionFailureError, xt as deriveSessionMetaPatch, y as isBillingAssistantError, yt as resolveExplicitAgentSessionKey, zt as mergeAlsoAllowPolicy } from "./pi-embedded-helpers-Cfs4ypqV.js";
26
- import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BHaHTnBp.js";
25
+ import { $ as normalizeDeliveryContext, A as parseImageDimensionError, At as resolveExistingPathsWithinRoot, B as resolveAndPersistSessionFile, Bt as normalizeToolName, C as isFailoverAssistantError, Ct as acquireSessionWriteLock, D as isRawApiErrorPayload, Dt as resolveBrowserConfig, E as isRateLimitAssistantError, Et as registerBrowserRoutes, F as resolveSandboxRuntimeStatus, Ft as buildPluginToolGroups, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as readSessionUpdatedAt, Ht as stripPluginOnlyAllowlist, I as extractDeliveryInfo, It as collectExplicitAllowlist, J as isCacheEnabled, Jt as resolveBootstrapTotalMaxChars, K as updateSessionStore, Kt as ensureSessionHeader, L as parseSessionThreadInfo, Lt as expandPolicyWithPluginGroups, M as sanitizeUserFacingText, Mt as ensureBrowserControlAuth, N as ensureSandboxWorkspaceForSession, Nt as resolveBrowserControlAuth, O as isTimeoutErrorMessage, Ot as resolveProfile, P as resolveSandboxContext, Pt as applyOwnerOnlyToolPolicy, Q as mergeDeliveryContext, R as appendAssistantMessageToSessionTranscript, Rt as expandToolGroups, S as isContextOverflowError, St as resolveGroupSessionKey, T as isLikelyContextOverflowError, Tt as createBrowserRouteContext, U as recordSessionMetaFromInbound, Ut as compileGlobPatterns, V as loadSessionStore, Vt as resolveToolProfilePolicy, Wt as matchesAnyGlobPattern, X as deliveryContextFromSession, Y as resolveCacheTtlMs$1, Yt as sanitizeGoogleTurnOrdering, Z as deliveryContextKey, _ as getApiErrorPayloadFingerprint, _t as resolveFreshSessionTotalTokens, a as normalizeTextForComparison, at as extractToolCallNames, b as isCloudCodeAssistFormatError, bt as resolveMainSessionKey, c as extractToolResultId, ct as hasInterSessionUserProvenance, d as isGoogleModelApi, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as BILLING_ERROR_USER_MESSAGE, ft as resolveChannelResetConfig, g as formatRawAssistantErrorForUi, gt as DEFAULT_RESET_TRIGGERS, h as formatBillingErrorMessage, ht as resolveThreadFlag, i as isMessagingToolDuplicateNormalized, it as countToolResults, j as parseImageSizeError, jt as getBridgeAuthForPort, k as isTransientHttpError, kt as DEFAULT_UPLOAD_DIR, l as downgradeOpenAIReasoningBlocks, lt as normalizeInputProvenance, m as formatAssistantErrorText, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as sanitizeSessionMessagesImages, ot as INPUT_PROVENANCE_KIND_VALUES, p as classifyFailoverReason, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as resolveBootstrapMaxChars, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as extractToolCallsFromAssistant, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as isAntigravityClaude, ut as resolveSessionKey, v as isAuthAssistantError, vt as canonicalizeMainSessionAlias, w as isFailoverErrorMessage, wt as resolveSessionLockMaxHoldFromTimeout, x as isCompactionFailureError, xt as deriveSessionMetaPatch, y as isBillingAssistantError, yt as resolveExplicitAgentSessionKey, zt as mergeAlsoAllowPolicy } from "./pi-embedded-helpers-CemJuCvK.js";
26
+ import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-DFWXZ6fI.js";
27
27
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-DWdYdchb.js";
28
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D28fLAW4.js";
28
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D5qBbYwG.js";
29
29
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, h as parseFrontmatterBlock, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-amp3F-om.js";
30
30
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
31
31
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -36,8 +36,8 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
36
36
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
37
37
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
38
38
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-CdTyeTEN.js";
39
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BnYsa0na.js";
40
- import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-i9c4knWr.js";
39
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BwUdkv5g.js";
40
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-ba9NOjzn.js";
41
41
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-479FB0St.js";
42
42
  import { n as retryAsync } from "./retry-QGp0jvVi.js";
43
43
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-43lkDH_r.js";
@@ -49,18 +49,18 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CDdlA9_f.js";
49
49
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DI253Fxx.js";
50
50
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-1kAWj31E.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CgGv6nTy.js";
52
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-BrSJk-nP.js";
52
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-BYhzYtCr.js";
53
53
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-WLZaC77l.js";
54
54
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BaoETsQI.js";
55
55
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-C-6tM-GK.js";
56
56
  import { n as normalizePollInput } from "./polls-Coxe0Akm.js";
57
57
  import { t as convertMarkdownTables } from "./tables-BuPzx5Wl.js";
58
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-C8NGT-Ba.js";
59
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-CueljEnr.js";
58
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-DD0hQa2v.js";
59
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-D7lU0o62.js";
60
60
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CWA0pNwO.js";
61
61
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-lYEzzOiQ.js";
62
62
  import { t as makeProxyFetch } from "./proxy-DaT-KQ7w.js";
63
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CskRrKs9.js";
63
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CWMT_rJr.js";
64
64
  import { t as getActiveWebListener } from "./active-listener-OKZn7EWc.js";
65
65
  import { createRequire } from "node:module";
66
66
  import * as path$1 from "node:path";
@@ -3473,7 +3473,7 @@ async function getMemorySearchManager(params) {
3473
3473
  const wrapper = new FallbackMemoryManager({
3474
3474
  primary,
3475
3475
  fallbackFactory: async () => {
3476
- const { MemoryIndexManager } = await import("./manager-i9c4knWr.js").then((n) => n.t);
3476
+ const { MemoryIndexManager } = await import("./manager-ba9NOjzn.js").then((n) => n.t);
3477
3477
  return await MemoryIndexManager.get(params);
3478
3478
  }
3479
3479
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3486,7 +3486,7 @@ async function getMemorySearchManager(params) {
3486
3486
  }
3487
3487
  }
3488
3488
  try {
3489
- const { MemoryIndexManager } = await import("./manager-i9c4knWr.js").then((n) => n.t);
3489
+ const { MemoryIndexManager } = await import("./manager-ba9NOjzn.js").then((n) => n.t);
3490
3490
  return { manager: await MemoryIndexManager.get(params) };
3491
3491
  } catch (err) {
3492
3492
  return {
@@ -7339,7 +7339,7 @@ async function routeReply(params) {
7339
7339
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7340
7340
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7341
7341
  try {
7342
- const { deliverOutboundPayloads } = await import("./deliver-BrKrH637.js").then((n) => n.n);
7342
+ const { deliverOutboundPayloads } = await import("./deliver-C3uijPde.js").then((n) => n.n);
7343
7343
  return {
7344
7344
  ok: true,
7345
7345
  messageId: (await deliverOutboundPayloads({
@@ -22489,6 +22489,11 @@ function buildAgentSystemPrompt(params) {
22489
22489
  "- 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.",
22490
22490
  "- 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.",
22491
22491
  "",
22492
+ "Example — when the user explicitly names a tool:",
22493
+ " User: \"Use the exec tool to run: echo hi\"",
22494
+ " Correct: call exec with command=\"echo hi\", then summarise the actual stdout you received.",
22495
+ " Wrong: emit \"hi\" as text without calling exec — that's fabrication.",
22496
+ "",
22492
22497
  ...compactMode ? [] : [
22493
22498
  "## Tool Call Style",
22494
22499
  "Default: do not narrate routine, low-risk tool calls (just call the tool).",
@@ -39476,7 +39481,7 @@ async function deliverSessionMaintenanceWarning(params) {
39476
39481
  return;
39477
39482
  }
39478
39483
  try {
39479
- const { deliverOutboundPayloads } = await import("./deliver-BrKrH637.js").then((n) => n.n);
39484
+ const { deliverOutboundPayloads } = await import("./deliver-C3uijPde.js").then((n) => n.n);
39480
39485
  await deliverOutboundPayloads({
39481
39486
  cfg: params.cfg,
39482
39487
  channel,
@@ -41604,6 +41609,91 @@ function createOutputNormalizer(profile, modelId) {
41604
41609
  //#endregion
41605
41610
  //#region src/agents/model-aware-stream.ts
41606
41611
  /**
41612
+ * Match imperative tool requests:
41613
+ * "Use the exec tool to run X"
41614
+ * "use exec to ..."
41615
+ * "Please invoke the read tool"
41616
+ * "call memory_search with ..."
41617
+ *
41618
+ * Anchored to start-of-string, start-of-line, or after a closing-bracket
41619
+ * delimiter `] ` (covers Symi's `[Thu 2026-04-30 20:48 EDT] ` timestamp
41620
+ * envelope, the `[Outlook 365] ` plugin banner, and similar prefixes that
41621
+ * gateway middleware can inject before the user's actual prompt — verified
41622
+ * live: `chat.send` from Glass UI ships content like
41623
+ *
41624
+ * Conversation info (untrusted metadata):
41625
+ * ```json
41626
+ * { "message_id": "...", ... }
41627
+ * ```
41628
+ *
41629
+ * [Thu 2026-04-30 20:48 EDT] Use the exec tool to run: hostname
41630
+ *
41631
+ * so the `Use` is preceded by `] ` not by `\n` or `^`).
41632
+ *
41633
+ * Verb list is conservative (use/invoke/call/please-{use,call}) — pure
41634
+ * imperative verbs that read unambiguously as "do this for me." Tool name
41635
+ * must match EXPLICIT_TOOL_NAMES exactly to keep "use poetic language" /
41636
+ * "use clear writing" / etc. from triggering.
41637
+ */
41638
+ const EXPLICIT_TOOL_REQUEST_PATTERN = new RegExp(String.raw`(?:^|\n|\]\s)\s*(?:please\s+)?(?:use|invoke|call)\s+(?:the\s+)?(?:` + [
41639
+ "exec",
41640
+ "bash",
41641
+ "read",
41642
+ "write",
41643
+ "edit",
41644
+ "patch",
41645
+ "web_search",
41646
+ "web_fetch",
41647
+ "browser",
41648
+ "browser_navigate",
41649
+ "browser_snapshot",
41650
+ "browser_click",
41651
+ "browser_type",
41652
+ "memory_search",
41653
+ "memory_get",
41654
+ "memory_pin",
41655
+ "memory_unpin",
41656
+ "spawn_agent",
41657
+ "message",
41658
+ "task_list",
41659
+ "task_cancel",
41660
+ "cron",
41661
+ "fetch",
41662
+ "skill_search"
41663
+ ].map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|") + String.raw`)(?:\s+tool)?\b`, "i");
41664
+ /**
41665
+ * Extract the user-role text ONLY when it's the LAST message in the
41666
+ * conversation (i.e., we're at the start of a fresh turn, not in the
41667
+ * middle of an agent loop). Returns "" when:
41668
+ * - messages isn't an array
41669
+ * - the last message isn't user-role (= we're after a tool_call /
41670
+ * tool_result and the model is continuing — forcing tool_choice
41671
+ * "required" here would loop the agent: model must call a tool →
41672
+ * tool result → model must call ANOTHER tool → tool result → ...)
41673
+ *
41674
+ * Verified live on 3.0.7 dev: with the original "find any prior user
41675
+ * message" implementation, every agent-loop iteration saw the same
41676
+ * matching userText and re-forced tool_choice="required", spinning the
41677
+ * model in an infinite tool-call loop and timing out at 180s.
41678
+ */
41679
+ function extractLastUserText(messages) {
41680
+ if (!Array.isArray(messages) || messages.length === 0) return "";
41681
+ const last = messages[messages.length - 1];
41682
+ if (!last || typeof last !== "object") return "";
41683
+ const msg = last;
41684
+ if (msg.role !== "user") return "";
41685
+ if (typeof msg.content === "string") return msg.content;
41686
+ if (Array.isArray(msg.content)) {
41687
+ const parts = [];
41688
+ for (const part of msg.content) if (part && typeof part === "object") {
41689
+ const block = part;
41690
+ if (block.type === "text" && typeof block.text === "string") parts.push(block.text);
41691
+ }
41692
+ return parts.join("\n");
41693
+ }
41694
+ return "";
41695
+ }
41696
+ /**
41607
41697
  * Create a single stream function wrapper that handles all provider-specific
41608
41698
  * param injection via one onPayload hook.
41609
41699
  *
@@ -41651,6 +41741,10 @@ function createModelAwareStreamFn(opts) {
41651
41741
  delete p.store;
41652
41742
  }
41653
41743
  if (Array.isArray(p.tools) && p.tools.length > 0 && p.tool_choice === void 0) p.tool_choice = "auto";
41744
+ if (Array.isArray(p.tools) && p.tools.length > 0 && p.tool_choice === "auto") {
41745
+ const userText = extractLastUserText(p.messages);
41746
+ if (userText && EXPLICIT_TOOL_REQUEST_PATTERN.test(userText)) p.tool_choice = "required";
41747
+ }
41654
41748
  }
41655
41749
  callerOnPayload?.(payload);
41656
41750
  };
@@ -49054,7 +49148,7 @@ async function runEmbeddedAttempt(params) {
49054
49148
  }
49055
49149
  {
49056
49150
  const autoRecallAgentId = normalizeAgentId(params.sessionKey);
49057
- if ((params.config ? resolveMemorySearchConfig(params.config, autoRecallAgentId) : null) && params.config) try {
49151
+ if ((params.config ? resolveMemorySearchConfig(params.config, autoRecallAgentId) : null)?.autoRecall && params.config) try {
49058
49152
  const { manager } = await getMemorySearchManager({
49059
49153
  cfg: params.config,
49060
49154
  agentId: autoRecallAgentId
@@ -53664,7 +53758,7 @@ async function describeStickerImage(params) {
53664
53758
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
53665
53759
  try {
53666
53760
  const buffer = await fs$1.readFile(imagePath);
53667
- const { describeImageWithModel } = await import("./image-BnYsa0na.js").then((n) => n.n);
53761
+ const { describeImageWithModel } = await import("./image-BwUdkv5g.js").then((n) => n.n);
53668
53762
  return (await describeImageWithModel({
53669
53763
  buffer,
53670
53764
  fileName: "sticker.webp",
@@ -54087,7 +54181,7 @@ function createWhatsAppLoginTool() {
54087
54181
  force: Type.Optional(Type.Boolean())
54088
54182
  }),
54089
54183
  execute: async (_toolCallId, args) => {
54090
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-FW9mxnTZ.js");
54184
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CDH_6HK-.js");
54091
54185
  if ((args?.action ?? "start") === "wait") {
54092
54186
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
54093
54187
  return {
@@ -56413,7 +56507,7 @@ async function preflightDiscordMessage(params) {
56413
56507
  let preflightTranscript;
56414
56508
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
56415
56509
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
56416
- const { transcribeFirstAudio } = await import("./audio-preflight-DL9R0CRd.js");
56510
+ const { transcribeFirstAudio } = await import("./audio-preflight-Comf0VGa.js");
56417
56511
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
56418
56512
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
56419
56513
  ctx: {
@@ -60936,27 +61030,27 @@ function setCliSessionId(entry, provider, sessionId) {
60936
61030
  function createDefaultDeps() {
60937
61031
  return {
60938
61032
  sendMessageWhatsApp: async (...args) => {
60939
- const { sendMessageWhatsApp } = await import("./web-CUH36UV-.js");
61033
+ const { sendMessageWhatsApp } = await import("./web-gqbdxJga.js");
60940
61034
  return await sendMessageWhatsApp(...args);
60941
61035
  },
60942
61036
  sendMessageTelegram: async (...args) => {
60943
- const { sendMessageTelegram } = await import("./send-D5-ISzQ4.js").then((n) => n.l);
61037
+ const { sendMessageTelegram } = await import("./send-CgdaRng5.js").then((n) => n.l);
60944
61038
  return await sendMessageTelegram(...args);
60945
61039
  },
60946
61040
  sendMessageDiscord: async (...args) => {
60947
- const { sendMessageDiscord } = await import("./send-1QRxOP-y.js").then((n) => n.t);
61041
+ const { sendMessageDiscord } = await import("./send-BR7JNX2z.js").then((n) => n.t);
60948
61042
  return await sendMessageDiscord(...args);
60949
61043
  },
60950
61044
  sendMessageSlack: async (...args) => {
60951
- const { sendMessageSlack } = await import("./send-CoyHTIkX.js").then((n) => n.n);
61045
+ const { sendMessageSlack } = await import("./send-VWh1ZJ59.js").then((n) => n.n);
60952
61046
  return await sendMessageSlack(...args);
60953
61047
  },
60954
61048
  sendMessageSignal: async (...args) => {
60955
- const { sendMessageSignal } = await import("./send-C8NGT-Ba.js").then((n) => n.i);
61049
+ const { sendMessageSignal } = await import("./send-DD0hQa2v.js").then((n) => n.i);
60956
61050
  return await sendMessageSignal(...args);
60957
61051
  },
60958
61052
  sendMessageIMessage: async (...args) => {
60959
- const { sendMessageIMessage } = await import("./send-CueljEnr.js").then((n) => n.n);
61053
+ const { sendMessageIMessage } = await import("./send-D7lU0o62.js").then((n) => n.n);
60960
61054
  return await sendMessageIMessage(...args);
60961
61055
  }
60962
61056
  };
@@ -71786,7 +71880,7 @@ async function registerSlackMonitorSlashCommands(params) {
71786
71880
  });
71787
71881
  const deliverSlashPayloads = async (replies) => {
71788
71882
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
71789
- import("./replies-CskRrKs9.js").then((n) => n.r),
71883
+ import("./replies-CWMT_rJr.js").then((n) => n.r),
71790
71884
  import("./chunk-Bk95VMr4.js").then((n) => n.s),
71791
71885
  import("./markdown-tables-DAG0TQQX.js").then((n) => n.t)
71792
71886
  ]);
@@ -74059,7 +74153,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
74059
74153
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
74060
74154
  let preflightTranscript;
74061
74155
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
74062
- const { transcribeFirstAudio } = await import("./audio-preflight-DL9R0CRd.js");
74156
+ const { transcribeFirstAudio } = await import("./audio-preflight-Comf0VGa.js");
74063
74157
  preflightTranscript = await transcribeFirstAudio({
74064
74158
  ctx: {
74065
74159
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -76204,23 +76298,23 @@ let webLoginQrPromise = null;
76204
76298
  let webChannelPromise = null;
76205
76299
  let whatsappActionsPromise = null;
76206
76300
  function loadWebOutbound() {
76207
- webOutboundPromise ??= import("./outbound-DOGNdenh.js").then((n) => n.t);
76301
+ webOutboundPromise ??= import("./outbound--D0GaEGd.js").then((n) => n.t);
76208
76302
  return webOutboundPromise;
76209
76303
  }
76210
76304
  function loadWebLogin() {
76211
- webLoginPromise ??= import("./login-DNscSrCq.js").then((n) => n.n);
76305
+ webLoginPromise ??= import("./login-Ba3Gh8gO.js").then((n) => n.n);
76212
76306
  return webLoginPromise;
76213
76307
  }
76214
76308
  function loadWebLoginQr() {
76215
- webLoginQrPromise ??= import("./login-qr-FW9mxnTZ.js");
76309
+ webLoginQrPromise ??= import("./login-qr-CDH_6HK-.js");
76216
76310
  return webLoginQrPromise;
76217
76311
  }
76218
76312
  function loadWebChannel() {
76219
- webChannelPromise ??= import("./web-CUH36UV-.js");
76313
+ webChannelPromise ??= import("./web-gqbdxJga.js");
76220
76314
  return webChannelPromise;
76221
76315
  }
76222
76316
  function loadWhatsAppActions() {
76223
- whatsappActionsPromise ??= import("./whatsapp-actions-CClS-oC0.js");
76317
+ whatsappActionsPromise ??= import("./whatsapp-actions-CfnLN3ec.js");
76224
76318
  return whatsappActionsPromise;
76225
76319
  }
76226
76320
  function createPluginRuntime() {
@@ -9,8 +9,8 @@ import { r as normalizeChannelId } from "./plugins-CpxUKuIt.js";
9
9
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
10
10
  import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BKUwjozo.js";
11
11
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
12
- import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BHaHTnBp.js";
13
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-D28fLAW4.js";
12
+ import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-DFWXZ6fI.js";
13
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-D5qBbYwG.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-amp3F-om.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
16
16
  import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -938,7 +938,7 @@ function isModuleNotFoundError(err) {
938
938
  }
939
939
  async function loadPwAiModule(mode) {
940
940
  try {
941
- return await import("./pw-ai-CggZCM2p.js");
941
+ return await import("./pw-ai-BIjsJDaR.js");
942
942
  } catch (err) {
943
943
  if (mode === "soft") return null;
944
944
  if (isModuleNotFoundError(err)) return null;
@@ -3478,11 +3478,11 @@ function createProfileContext(opts, profile) {
3478
3478
  const userDataDir = resolveSymiUserDataDir(profile.name);
3479
3479
  const profileState = getProfileState();
3480
3480
  if (await isHttpReachable(300) && !profileState.running) try {
3481
- await (await import("./pw-ai-CggZCM2p.js")).closePlaywrightBrowserConnection();
3481
+ await (await import("./pw-ai-BIjsJDaR.js")).closePlaywrightBrowserConnection();
3482
3482
  } catch {}
3483
3483
  if (profileState.running) await stopRunningBrowser();
3484
3484
  try {
3485
- await (await import("./pw-ai-CggZCM2p.js")).closePlaywrightBrowserConnection();
3485
+ await (await import("./pw-ai-BIjsJDaR.js")).closePlaywrightBrowserConnection();
3486
3486
  } catch {}
3487
3487
  if (!fs.existsSync(userDataDir)) return {
3488
3488
  moved: false,
@@ -1,5 +1,5 @@
1
1
  import { pt as truncateUtf16Safe } from "./entry.js";
2
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-BWC66gJ2.js";
2
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-KHd-LEcA.js";
3
3
  import { t as sanitizeContentBlocksImages } from "./tool-images-CVLISeRT.js";
4
4
  import { s as normalizeThinkLevel } from "./thinking-8sKPnzpp.js";
5
5
  import path from "node:path";
@@ -7,8 +7,8 @@ import { _ as runExec, a as DEFAULT_SYMICORE_FILENAME, c as DEFAULT_USER_FILENAM
7
7
  import { g as isPidAlive, h as resolveProcessScopedMap } from "./auth-profiles-D4Yfd-KL.js";
8
8
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
9
9
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
10
- import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-CgcIvWO3.js";
11
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-DHuU-xaH.js";
10
+ import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-DBkWC2pa.js";
11
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CCBNmCWW.js";
12
12
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DjtoXuuJ.js";
13
13
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-XIsvXeC-.js";
14
14
  import { b as openFileWithinRoot, i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, y as SafeOpenError } from "./image-ops-DFFGK0lW.js";
@@ -940,7 +940,7 @@ function isModuleNotFoundError(err) {
940
940
  }
941
941
  async function loadPwAiModule(mode) {
942
942
  try {
943
- return await import("./pw-ai-BWgottFJ.js");
943
+ return await import("./pw-ai-BbcvELF_.js");
944
944
  } catch (err) {
945
945
  if (mode === "soft") return null;
946
946
  if (isModuleNotFoundError(err)) return null;
@@ -3480,11 +3480,11 @@ function createProfileContext(opts, profile) {
3480
3480
  const userDataDir = resolveSymiUserDataDir(profile.name);
3481
3481
  const profileState = getProfileState();
3482
3482
  if (await isHttpReachable(300) && !profileState.running) try {
3483
- await (await import("./pw-ai-BWgottFJ.js")).closePlaywrightBrowserConnection();
3483
+ await (await import("./pw-ai-BbcvELF_.js")).closePlaywrightBrowserConnection();
3484
3484
  } catch {}
3485
3485
  if (profileState.running) await stopRunningBrowser();
3486
3486
  try {
3487
- await (await import("./pw-ai-BWgottFJ.js")).closePlaywrightBrowserConnection();
3487
+ await (await import("./pw-ai-BbcvELF_.js")).closePlaywrightBrowserConnection();
3488
3488
  } catch {}
3489
3489
  if (!fs.existsSync(userDataDir)) return {
3490
3490
  moved: false,
@@ -1,5 +1,5 @@
1
1
  import { E as truncateUtf16Safe } from "./utils-B-0b9bGM.js";
2
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-DzKDjwYE.js";
2
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-z-bMKyXG.js";
3
3
  import { t as sanitizeContentBlocksImages } from "./tool-images-D1y8Z_RM.js";
4
4
  import { s as normalizeThinkLevel } from "./thinking-uppU3NJg.js";
5
5
  import { createHash } from "node:crypto";
@@ -1,7 +1,7 @@
1
1
  import { C as resolveThreadParentSessionKey, l as resolveAgentIdFromSessionKey } from "./session-key-oOB32jSB.js";
2
2
  import { r as resolveAgentConfig } from "./agent-scope-BajBuriF.js";
3
- import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-Ck5BcSWj.js";
4
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-DzKDjwYE.js";
3
+ import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-B4cq-LO4.js";
4
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-z-bMKyXG.js";
5
5
  import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-DncI8XLd.js";
6
6
  import { l as normalizeMessageChannel } from "./message-channel-D6zBsZMB.js";
7
7
 
@@ -1,8 +1,8 @@
1
1
  import { C as resolveThreadParentSessionKey, l as resolveAgentIdFromSessionKey } from "./session-key-DjZ7Z1hW.js";
2
2
  import { r as resolveAgentConfig } from "./agent-scope-xM36I1Em.js";
3
- import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-B7hytTVE.js";
3
+ import { z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CE_yCGtB.js";
4
4
  import { l as normalizeMessageChannel } from "./message-channel-C9dERklz.js";
5
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-BWC66gJ2.js";
5
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-KHd-LEcA.js";
6
6
  import { o as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-C15cXc7s.js";
7
7
 
8
8
  //#region src/agents/sandbox-tool-policy.ts
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as loadSymiPlugins } from "./unified-runner-BvY8tmF0.js";
2
+ import { s as loadSymiPlugins } from "./unified-runner-CzxCpDUC.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-ClO_zVv-.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BajBuriF.js";
6
- import { i as loadConfig } from "./config-Ck5BcSWj.js";
6
+ import { i as loadConfig } from "./config-B4cq-LO4.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-xM36I1Em.js";
4
- import { i as loadConfig } from "./config-B7hytTVE.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-bK5FCDB-.js";
4
+ import { i as loadConfig } from "./config-CE_yCGtB.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-k0ZBnJuU.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,6 +1,8 @@
1
1
  import type { SymiConfig } from "../config/config.js";
2
2
  export type ResolvedMemorySearchConfig = {
3
3
  enabled: boolean;
4
+ /** 3.0.6: opt-in flag for unconditional per-turn recall. Default false. */
5
+ autoRecall: boolean;
4
6
  sources: Array<"memory" | "sessions">;
5
7
  extraPaths: string[];
6
8
  provider: "openai" | "local" | "gemini" | "voyage" | "ollama" | "auto";
@@ -13,6 +13,26 @@
13
13
  import type { StreamFn } from "@mariozechner/pi-agent-core";
14
14
  import type { SymiConfig } from "../config/config.js";
15
15
  import type { ModelProfile } from "../config/model-profiles.js";
16
+ /**
17
+ * Extract the user-role text ONLY when it's the LAST message in the
18
+ * conversation (i.e., we're at the start of a fresh turn, not in the
19
+ * middle of an agent loop). Returns "" when:
20
+ * - messages isn't an array
21
+ * - the last message isn't user-role (= we're after a tool_call /
22
+ * tool_result and the model is continuing — forcing tool_choice
23
+ * "required" here would loop the agent: model must call a tool →
24
+ * tool result → model must call ANOTHER tool → tool result → ...)
25
+ *
26
+ * Verified live on 3.0.7 dev: with the original "find any prior user
27
+ * message" implementation, every agent-loop iteration saw the same
28
+ * matching userText and re-forced tool_choice="required", spinning the
29
+ * model in an infinite tool-call loop and timing out at 180s.
30
+ */
31
+ declare function extractLastUserText(messages: unknown): string;
32
+ /** Exposed for unit tests. */
33
+ export declare const __EXPLICIT_TOOL_REQUEST_PATTERN: RegExp;
34
+ /** Exposed for unit tests. */
35
+ export declare const __extractLastUserText: typeof extractLastUserText;
16
36
  export interface ModelAwareStreamOptions {
17
37
  /** Base streaming function — streamSimple or createOllamaStreamFn. */
18
38
  baseStreamFn?: StreamFn;
@@ -39,3 +59,4 @@ export interface ModelAwareStreamOptions {
39
59
  export declare function createModelAwareStreamFn(opts: ModelAwareStreamOptions): StreamFn;
40
60
  /** Detect vLLM providers by model hints or baseUrl patterns. */
41
61
  export declare function isVllmProvider(provider: string, modelId: string, config?: SymiConfig): boolean;
62
+ export {};
@@ -3,7 +3,7 @@ import "./paths-DR2yt_mP.js";
3
3
  import "./github-copilot-token-D9X2phUj.js";
4
4
  import "./plugins-muf5lfx-.js";
5
5
  import { K as logVerbose, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
6
- import "./config-BueY-n42.js";
6
+ import "./config-Bv0LE_Mp.js";
7
7
  import "./subsystem-Coz2AgU8.js";
8
8
  import "./command-format-DSdvQ_M5.js";
9
9
  import "./model-selection-B-K2B0xR.js";
@@ -17,16 +17,16 @@ import "./local-roots-8f4AroIC.js";
17
17
  import "./message-channel-BdI5Ra9S.js";
18
18
  import "./bindings-DhPQDTtp.js";
19
19
  import "./tool-images-DAXbRHJ1.js";
20
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-MEZJzDgS.js";
20
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-NZmejDHd.js";
21
21
  import "./skills-ksP6m2tL.js";
22
- import "./chrome-BaY-YSjo.js";
22
+ import "./chrome-CrHP4JAa.js";
23
23
  import "./thinking-Bq90REOa.js";
24
24
  import "./accounts-Dtszw3Zn.js";
25
25
  import "./accounts-BToL3HlP.js";
26
- import "./pi-embedded-helpers-CJWL6gbA.js";
26
+ import "./pi-embedded-helpers-DLlOikDI.js";
27
27
  import "./paths-A0xdf3yk.js";
28
28
  import "./store-uf7TpQm3.js";
29
- import "./image-GswOdB-h.js";
29
+ import "./image-Br537YWQ.js";
30
30
  import "./pi-model-discovery-Cdz3tuFk.js";
31
31
  import "./gemini-auth-BJBLsO9s.js";
32
32