@symerian/symi 2.5.7 → 2.6.0

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 (229) hide show
  1. package/dist/{accounts-qtxJ-6em.js → accounts-3dCrO3oZ.js} +1 -1
  2. package/dist/{accounts-tNElYrCH.js → accounts-BRw8yhIW.js} +21 -21
  3. package/dist/{accounts-CWktKM8a.js → accounts-BuZxOb3B.js} +1 -1
  4. package/dist/{active-listener-C9r8ZB9m.js → active-listener-CfHHV2SU.js} +1 -1
  5. package/dist/{agent-scope-BxoUQqgM.js → agent-scope-CpEJ0B88.js} +3 -3
  6. package/dist/{agents-CXloh6n_.js → agents-Bi50kp6u.js} +4 -4
  7. package/dist/{agents.config-BhAJXAtA.js → agents.config-BcTeP94V.js} +1 -1
  8. package/dist/{agents.config-BuTzBaXf.js → agents.config-Duce7lam.js} +1 -1
  9. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  10. package/dist/{audio-preflight-D02HwB-I.js → audio-preflight-DHTaS5U1.js} +34 -34
  11. package/dist/{auth-choice-DvaVrSwn.js → auth-choice-BFIBR4l9.js} +1 -1
  12. package/dist/{auth-choice-Br6zT8iS.js → auth-choice-Dyq-0MNq.js} +1 -1
  13. package/dist/{model-auth-DK43VicI.js → auth-profiles-DdK1Hxaa.js} +412 -412
  14. package/dist/{banner-BtqKaQZr.js → banner-D50f_0qf.js} +1 -1
  15. package/dist/{bindings-B7Ke6LJi.js → bindings-BsHoBLIE.js} +2 -2
  16. package/dist/build-info.json +3 -3
  17. package/dist/bundled/boot-md/handler.js +60 -60
  18. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  19. package/dist/bundled/command-logger/handler.js +3 -3
  20. package/dist/bundled/session-memory/handler.js +61 -61
  21. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  22. package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-B6G1jnQT.js} +2 -2
  23. package/dist/{channel-options-DFHEgad5.js → channel-options-BFqaanEt.js} +1 -1
  24. package/dist/{channel-options-CfLxsV76.js → channel-options-BvBcjqyk.js} +1 -1
  25. package/dist/{channel-web-D-jDDmWN.js → channel-web-BQtFg4IP.js} +1 -1
  26. package/dist/{channels-cli-BEZORT4N.js → channels-cli-BYFQdWnL.js} +4 -4
  27. package/dist/{channels-cli-CT6wdGT8.js → channels-cli-BuTH-iVi.js} +4 -4
  28. package/dist/{chrome-EyvdASWt.js → chrome-CDJYxX5a.js} +24 -24
  29. package/dist/{chrome-D2SKJnR7.js → chrome-DYZwl5Gv.js} +5 -5
  30. package/dist/{chunk-BW5f05BR.js → chunk-09egQapi.js} +1 -1
  31. package/dist/{cli-CkxvN9Cb.js → cli-eOBlVLcC.js} +1 -1
  32. package/dist/{cli-kxxM9xT0.js → cli-r2L-UK6y.js} +1 -1
  33. package/dist/{command-registry-C0Ht_h4u.js → command-registry-D-pwcAIW.js} +9 -9
  34. package/dist/{commands-registry-D7CTCQPm.js → commands-registry-Bfc7Uz0o.js} +4 -4
  35. package/dist/{completion-cli-DeieEaoW.js → completion-cli-DIx7KyOG.js} +2 -2
  36. package/dist/{completion-cli-BEzbCT8h.js → completion-cli-DMO2OGTm.js} +1 -1
  37. package/dist/{config-DRbjHIwD.js → config-5SdHIcHU.js} +6 -6
  38. package/dist/{config-cli-CS_0o9LY.js → config-cli-BsDxqYDU.js} +1 -1
  39. package/dist/{config-cli-DLsLPE4o.js → config-cli-seaVWVru.js} +1 -1
  40. package/dist/{configure-T9J4bw0H.js → configure-BmPwuHXL.js} +3 -3
  41. package/dist/{configure-BX4aNf3w.js → configure-CqbKA0_V.js} +3 -3
  42. package/dist/control-ui/js/app.js +1 -1
  43. package/dist/{conversation-label-DXUkoKcB.js → conversation-label-Onz2hiJh.js} +1 -1
  44. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  45. package/dist/{deliver-D1ZN6-fl.js → deliver-dODxSv3b.js} +11 -11
  46. package/dist/{diagnostic-CI0kRQkt.js → diagnostic-rPhsBoZz.js} +2 -2
  47. package/dist/{doctor-completion-C_0iVIQ2.js → doctor-completion-C2IV3lKi.js} +1 -1
  48. package/dist/{doctor-completion-D7oTPU1N.js → doctor-completion-DMjs7-Qa.js} +1 -1
  49. package/dist/entry.js +1 -1
  50. package/dist/{command-format-BaxDnULz.js → env-BDXYbTKj.js} +10 -10
  51. package/dist/{errors-BoQgnc8X.js → errors-XIsvXeC-.js} +1 -1
  52. package/dist/extensionAPI.js +6 -6
  53. package/dist/{frontmatter-C_bv_0P8.js → frontmatter-CTR5f_Ez.js} +2 -2
  54. package/dist/{gateway-cli-DvJ_O7kb.js → gateway-cli-BanaeKQ_.js} +22 -19
  55. package/dist/{gateway-cli-DDFydH8b.js → gateway-cli-C-J_s559.js} +22 -19
  56. package/dist/{gemini-auth-CdSPHuLl.js → gemini-auth-Dy12ZAH3.js} +2 -2
  57. package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-cCYzSU9h.js} +1 -1
  58. package/dist/{glass-ui-ws-KbKXJGb5.js → glass-ui-ws-DK7x3Tz7.js} +7 -7
  59. package/dist/{glass-ui-ws-BdBSYcsf.js → glass-ui-ws-DUzp9m0D.js} +7 -7
  60. package/dist/{health-z-YCZRhf.js → health-BpHgCv-u.js} +1 -1
  61. package/dist/{health-DQmyj-7z.js → health-DK6rAOhC.js} +1 -1
  62. package/dist/{hooks-cli-4d-QhgRs.js → hooks-cli-Cin_3tFg.js} +2 -2
  63. package/dist/{hooks-cli-BRehYEXJ.js → hooks-cli-D-75G_66.js} +2 -2
  64. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  65. package/dist/{image-Cp3JDEBB.js → image-CXu8W39c.js} +7 -7
  66. package/dist/{image-ops-CvJzsyvE.js → image-ops-C7CauEK8.js} +99 -99
  67. package/dist/{inbound-context-BlHX0H3E.js → inbound-context-DSDTl6Kj.js} +2 -2
  68. package/dist/index.js +6 -6
  69. package/dist/{ir-DccrnjsE.js → ir-CTiz95Vb.js} +5 -5
  70. package/dist/llm-slug-generator.js +64 -84
  71. package/dist/{local-roots-DMwIh5cS.js → local-roots-DhZz0Ybs.js} +6 -6
  72. package/dist/{login-qr-Batf3PT5.js → login-qr-AP9agO-i.js} +13 -13
  73. package/dist/{login-CwCoxapk.js → login-ul8zaw_S.js} +7 -7
  74. package/dist/{manager-D_LwXbc6.js → manager-PprhCvO_.js} +25 -25
  75. package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-yb7sAlu4.js} +2 -2
  76. package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-C-BmIap8.js} +1 -1
  77. package/dist/{message-channel-Dz5lr5b0.js → message-channel-OlFBYAw8.js} +1 -1
  78. package/dist/{models-CPlSSoV0.js → models-CeKIXf5B.js} +7 -8
  79. package/dist/{models-cli-BM2RWTmM.js → models-cli-2NcPKR9A.js} +7 -8
  80. package/dist/{models-cli-DDhpJuX3.js → models-cli-DN4AVlpI.js} +3 -3
  81. package/dist/{onboard-BlrojL3G.js → onboard-BcxDiUl_.js} +2 -2
  82. package/dist/{onboard-Bq2VEBrl.js → onboard-BukRqcRH.js} +2 -2
  83. package/dist/{onboard-channels-S0FbC25u.js → onboard-channels-DS6s341R.js} +1 -1
  84. package/dist/{onboard-channels-DjfS9mS6.js → onboard-channels-HPxu77wp.js} +1 -1
  85. package/dist/{onboarding-CwU-Uyo6.js → onboarding-B8uz24jt.js} +3 -3
  86. package/dist/{onboarding-Dg49kkBF.js → onboarding-DI-o_sax.js} +3 -3
  87. package/dist/{onboarding.finalize-CsBYKFAW.js → onboarding.finalize-Bn2e61yb.js} +5 -5
  88. package/dist/{onboarding.finalize-BaMs5pR4.js → onboarding.finalize-CfE_AEto.js} +6 -6
  89. package/dist/{outbound-D4fN_ZlE.js → outbound-CtMCmwxR.js} +7 -7
  90. package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-DJldbweZ.js} +2 -2
  91. package/dist/{paths-DLyHUt31.js → paths-CbQV9WEg.js} +2 -2
  92. package/dist/{pi-auth-json-0SYBFZTt.js → pi-auth-json-Bk8ERadJ.js} +10 -10
  93. package/dist/{pi-embedded-CKf4PxhQ.js → pi-embedded-B5qBa69e.js} +20143 -20044
  94. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  95. package/dist/{pi-embedded-helpers-ag2bosuj.js → pi-embedded-helpers-pubKo8HQ.js} +81 -81
  96. package/dist/{plugin-registry-VhRGXCLQ.js → plugin-registry-NIUxULTk.js} +1 -1
  97. package/dist/{plugin-registry-Dxo1iUfJ.js → plugin-registry-cj99EI0k.js} +1 -1
  98. package/dist/plugin-sdk/agents/pi-embedded-runner.d.ts +1 -1
  99. package/dist/plugin-sdk/agents/unified-runner.d.ts +69 -1
  100. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +2 -2
  101. package/dist/plugin-sdk/{channel-web-Bc8Fmiy7.js → channel-web-CSd16cDi.js} +1 -1
  102. package/dist/plugin-sdk/index.js +2 -2
  103. package/dist/plugin-sdk/{reply-BSW3CdwW.js → reply-CkqSfQZN.js} +419 -320
  104. package/dist/plugin-sdk/{web-CvCo9ULq.js → web-DdTTil50.js} +2 -2
  105. package/dist/{plugins-DQYI3Fr-.js → plugins-BzmbgY7s.js} +5 -5
  106. package/dist/{plugins-cli-zNr1ThAO.js → plugins-cli-CcjxxESJ.js} +2 -2
  107. package/dist/{plugins-cli-DeDSnKlr.js → plugins-cli-D8hhTHZD.js} +2 -2
  108. package/dist/{program-C4whW2Oi.js → program-D09h71pS.js} +7 -7
  109. package/dist/{program-context-1jbNznxI.js → program-context-CLJSWBZr.js} +17 -17
  110. package/dist/{prompt-select-styled-B7VjdRNk.js → prompt-select-styled-DQqZEGoo.js} +4 -4
  111. package/dist/{prompt-select-styled-B7nwl6rd.js → prompt-select-styled-zRUqu0c8.js} +4 -4
  112. package/dist/{provider-auth-helpers-BmH4oHwJ.js → provider-auth-helpers-16r2WHNe.js} +1 -1
  113. package/dist/{provider-auth-helpers-C8cO9DLi.js → provider-auth-helpers-LzJ2WQIc.js} +1 -1
  114. package/dist/{push-apns-CoqskfCc.js → push-apns-B5xZKIxK.js} +1 -1
  115. package/dist/{push-apns-CJtWrkQV.js → push-apns-DJddAK3u.js} +1 -1
  116. package/dist/{pw-ai-Ch7liUOW.js → pw-ai-B5asscAD.js} +16 -16
  117. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  118. package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-iDLSiI4Z.js} +10 -10
  119. package/dist/{register.agent-fK3vOCU5.js → register.agent-CP_sigRh.js} +6 -6
  120. package/dist/{register.agent-C1Is84Q1.js → register.agent-D7NKuUkY.js} +5 -5
  121. package/dist/{register.configure-CIwwqqt9.js → register.configure-BEsGd0PR.js} +6 -6
  122. package/dist/{register.configure-DFJeKFFK.js → register.configure-BjRLNatb.js} +6 -6
  123. package/dist/{register.maintenance-CfQRUUM5.js → register.maintenance-CN6KUuX7.js} +7 -7
  124. package/dist/{register.maintenance-CRnXZTDk.js → register.maintenance-DD6TNFtV.js} +8 -8
  125. package/dist/{register.message-DYnXMP4c.js → register.message-DEUcNly1.js} +2 -2
  126. package/dist/{register.message-Ce57RPK8.js → register.message-DMVC_Sqm.js} +2 -2
  127. package/dist/{register.onboard-BJxCO8W7.js → register.onboard-CP6RP90V.js} +4 -4
  128. package/dist/{register.onboard-If50a0yL.js → register.onboard-J1pgV7lz.js} +4 -4
  129. package/dist/{register.setup-sdzsXVrS.js → register.setup-BeHpW3xI.js} +4 -4
  130. package/dist/{register.setup-DZipmOBQ.js → register.setup-Dhc3jKpK.js} +4 -4
  131. package/dist/{register.status-health-sessions-BncpB9Vw.js → register.status-health-sessions-DDkC0aoW.js} +3 -3
  132. package/dist/{register.status-health-sessions-DBXMyrNP.js → register.status-health-sessions-b-lWNsTM.js} +3 -3
  133. package/dist/{register.subclis-JthXJSly.js → register.subclis-BJqiT8Q2.js} +9 -9
  134. package/dist/{registry-CK4e9hn8.js → registry-DYq1AYOv.js} +2 -2
  135. package/dist/{replies-BIX_isV7.js → replies-LSmuwOhA.js} +3 -3
  136. package/dist/{reply-BfZzgC9H.js → reply-D40cmAci.js} +420 -321
  137. package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-DpqZu44Z.js} +1 -1
  138. package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-C4_I4GFI.js} +5 -5
  139. package/dist/{retry-Cly39XZB.js → retry-BBVXkKBV.js} +1 -1
  140. package/dist/{run-main-Dl1Kbmx0.js → run-main-BruREeZ6.js} +14 -14
  141. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  142. package/dist/{runner-D0QUGA_X.js → runner-WAG0M5s9.js} +46 -46
  143. package/dist/{send-WyRqb4WD.js → send-CQAKg_12.js} +7 -7
  144. package/dist/{send-DeFniOjh.js → send-CVMyYPQw.js} +7 -7
  145. package/dist/{send-CiTGOvEc.js → send-CvhXrdgS.js} +12 -12
  146. package/dist/{send-DW96zgDL.js → send-DAN9hA5h.js} +6 -6
  147. package/dist/{send-B1u-LrcS.js → send-DYj_o4_F.js} +14 -14
  148. package/dist/{server-methods-xXv4ObXK.js → server-methods-Cyw_WS3A.js} +7 -7
  149. package/dist/{server-methods-D5zcFhng.js → server-methods-K-0MHs8x.js} +7 -7
  150. package/dist/{server-node-events-BN7H6wBM.js → server-node-events-89R9Ryky.js} +2 -2
  151. package/dist/{server-node-events-D4At7-pe.js → server-node-events-RA8RurtC.js} +2 -2
  152. package/dist/{session-SM36BTsl.js → session-DSU1vxxi.js} +4 -4
  153. package/dist/{skill-commands-BJMb_psG.js → skill-commands-DcVwOafC.js} +17 -17
  154. package/dist/{skills-BFekKL7i.js → skills-Bs0AW1g3.js} +25 -25
  155. package/dist/{sqlite-DRbx2dhW.js → sqlite-D_mz1_-y.js} +17 -17
  156. package/dist/{status-Nhvf_TEN.js → status-BSMEjz4q.js} +1 -1
  157. package/dist/{status-PbQwO8SV.js → status-CtNKWuzg.js} +2 -2
  158. package/dist/{status-XJTqV-CC.js → status-DHJLMwQN.js} +2 -2
  159. package/dist/{status-C5rGEkur.js → status-Kv_hsY8N.js} +1 -1
  160. package/dist/{store-C0wvOkae.js → store-01F_JM7O.js} +6 -6
  161. package/dist/{subagent-registry-DvCrN2PQ.js → subagent-registry-Cb5e_x99.js} +19342 -19243
  162. package/dist/{subsystem-Bs9YvKLa.js → subsystem-BjyjJF-d.js} +1 -1
  163. package/dist/{tables-DuZspiBu.js → tables-qMwbq29u.js} +1 -1
  164. package/dist/{target-errors-Be1SwYlW.js → target-errors-Bbr9rlzN.js} +2 -2
  165. package/dist/{thinking-CdlENGRW.js → thinking-BprCy23Z.js} +5 -5
  166. package/dist/{tokens-H1H1LiSQ.js → tokens-Bux9Y_xD.js} +1 -1
  167. package/dist/{tool-images-DXB7tqWi.js → tool-images-SqqWIT22.js} +2 -2
  168. package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-D0kUzUGu.js} +3 -3
  169. package/dist/{pi-embedded-o9vOF9wB.js → unified-runner-CkJLTsTK.js} +69840 -69741
  170. package/dist/{update-cli-CckGzVRg.js → update-cli-Bl66LJZ4.js} +7 -7
  171. package/dist/{update-cli-pkg2BEbj.js → update-cli-CrRBoiVU.js} +8 -8
  172. package/dist/{update-runner-BuoOzUcX.js → update-runner-DxpSPK-f.js} +1 -1
  173. package/dist/{update-runner-BFwirE1P.js → update-runner-FgrqoxvV.js} +1 -1
  174. package/dist/{web-Cr6E8Ych.js → web-BYRKX5Ln.js} +2 -2
  175. package/dist/{web-C4CDNJmR.js → web-Czp0JS6-.js} +1 -1
  176. package/dist/{web-BjuBp_oj.js → web-D99WHLTL.js} +6 -6
  177. package/dist/{web-ofRAH4R_.js → web-RePh7lRy.js} +64 -64
  178. package/dist/{whatsapp-actions-D1RsnX7P.js → whatsapp-actions-BIeSWsCF.js} +25 -25
  179. package/dist/{workspace-wAaHI8-5.js → workspace-DscDraUb.js} +28 -28
  180. package/extensions/bluebubbles/node_modules/.bin/symi +0 -0
  181. package/extensions/copilot-proxy/node_modules/.bin/symi +0 -0
  182. package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
  183. package/extensions/diagnostics-otel/node_modules/.bin/symi +0 -0
  184. package/extensions/discord/node_modules/.bin/symi +0 -0
  185. package/extensions/feishu/node_modules/.bin/symi +0 -0
  186. package/extensions/google-antigravity-auth/node_modules/.bin/symi +0 -0
  187. package/extensions/google-gemini-cli-auth/node_modules/.bin/symi +0 -0
  188. package/extensions/googlechat/node_modules/.bin/symi +0 -0
  189. package/extensions/imessage/node_modules/.bin/symi +0 -0
  190. package/extensions/irc/node_modules/.bin/symi +0 -0
  191. package/extensions/learning-loop/node_modules/.bin/symi +0 -0
  192. package/extensions/line/node_modules/.bin/symi +0 -0
  193. package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
  194. package/extensions/matrix/node_modules/.bin/symi +0 -0
  195. package/extensions/mattermost/node_modules/.bin/symi +0 -0
  196. package/extensions/memory-core/node_modules/.bin/symi +0 -0
  197. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
  198. package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
  199. package/extensions/memory-lancedb/node_modules/.bin/symi +0 -0
  200. package/extensions/minimax-portal-auth/node_modules/.bin/symi +0 -0
  201. package/extensions/msteams/node_modules/.bin/symi +0 -0
  202. package/extensions/nextcloud-talk/node_modules/.bin/symi +0 -0
  203. package/extensions/nostr/node_modules/.bin/symi +0 -0
  204. package/extensions/nostr/node_modules/.bin/tsc +0 -0
  205. package/extensions/nostr/node_modules/.bin/tsserver +0 -0
  206. package/extensions/signal/node_modules/.bin/symi +0 -0
  207. package/extensions/slack/node_modules/.bin/symi +0 -0
  208. package/extensions/telegram/node_modules/.bin/symi +0 -0
  209. package/extensions/tlon/node_modules/.bin/symi +0 -0
  210. package/extensions/twitch/node_modules/.bin/symi +0 -0
  211. package/extensions/voice-call/node_modules/.bin/symi +0 -0
  212. package/extensions/whatsapp/node_modules/.bin/symi +0 -0
  213. package/extensions/zalo/node_modules/.bin/symi +0 -0
  214. package/extensions/zalouser/node_modules/.bin/symi +0 -0
  215. package/package.json +83 -113
  216. package/skills/nano-banana-pro/scripts/generate_image.py +0 -0
  217. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
  218. package/skills/tmux/scripts/find-sessions.sh +0 -0
  219. package/skills/tmux/scripts/wait-for-text.sh +0 -0
  220. package/dist/paths-Cce4PUkG.js +0 -212
  221. /package/dist/{boolean-B8-BqKGQ.js → boolean-CE7i9tBR.js} +0 -0
  222. /package/dist/{chat-type-C_KiWNAH.js → chat-type-3FRbbjbq.js} +0 -0
  223. /package/dist/{diagnostic-session-state-Bxo4UHOL.js → diagnostic-session-state-Zw87xFym.js} +0 -0
  224. /package/dist/{legacy-names-BHV4AoFT.js → legacy-names-CePMUvus.js} +0 -0
  225. /package/dist/{pi-model-discovery-DaNAekda.js → pi-model-discovery-Bv5YDJc8.js} +0 -0
  226. /package/dist/{redact-jSxx6Ep2.js → redact-BDMXB06K.js} +0 -0
  227. /package/dist/{ssrf-BTMDZjHT.js → ssrf-DpUUUgkK.js} +0 -0
  228. /package/dist/{targets-CFovdgJI.js → targets-DGkXkFPj.js} +0 -0
  229. /package/dist/{transcript-events-DDYvbmRV.js → transcript-events-BBh3Gsrx.js} +0 -0
@@ -31034,7 +31034,8 @@ async function runAgentTurn(params) {
31034
31034
  const cb = params.callbacks;
31035
31035
  const sessionFile = resolveSessionFilePath(params.sessionId, void 0, { agentId });
31036
31036
  const profile = resolveModelProfile(params.provider && params.modelId ? `${params.provider}/${params.modelId}` : params.config.agents?.defaults?.model?.primary ?? "", params.config.models?.profiles);
31037
- const result = await runEmbeddedPiAgent({
31037
+ const toolsUsed = [];
31038
+ const buildInternalParams = (providerOverride, modelOverride) => ({
31038
31039
  sessionId: params.sessionId,
31039
31040
  sessionKey: params.sessionKey,
31040
31041
  agentId,
@@ -31049,14 +31050,28 @@ async function runAgentTurn(params) {
31049
31050
  extraSystemPrompt: params.extraSystemPrompt,
31050
31051
  clientTools: params.clientTools,
31051
31052
  disableTools: params.disableTools,
31052
- provider: params.provider,
31053
- model: params.modelId,
31053
+ provider: providerOverride ?? params.provider,
31054
+ model: modelOverride ?? params.modelId,
31054
31055
  authProfileId: params.authProfileId,
31055
31056
  authProfileIdSource: params.authProfileIdSource,
31056
31057
  thinkLevel: params.thinkLevel,
31057
31058
  reasoningLevel: params.reasoningLevel,
31058
31059
  timeoutMs: params.timeoutMs,
31059
31060
  abortSignal: params.abortSignal,
31061
+ lane: params.lane,
31062
+ toolResultFormat: params.toolResultFormat,
31063
+ verboseLevel: params.verboseLevel,
31064
+ ownerNumbers: params.ownerNumbers,
31065
+ enforceFinalTag: params.enforceFinalTag,
31066
+ execOverrides: params.execOverrides,
31067
+ bashElevated: params.bashElevated,
31068
+ suppressToolErrorWarnings: params.suppressToolErrorWarnings,
31069
+ streamParams: params.streamParams,
31070
+ blockReplyBreak: params.blockReplyBreak,
31071
+ blockReplyChunking: params.blockReplyChunking,
31072
+ requireExplicitMessageTarget: params.requireExplicitMessageTarget,
31073
+ disableMessageTool: params.disableMessageTool,
31074
+ symipulseMs: params.symipulseMs,
31060
31075
  messageChannel: ch?.messageChannel,
31061
31076
  messageProvider: ch?.messageProvider,
31062
31077
  agentAccountId: ch?.agentAccountId,
@@ -31078,26 +31093,92 @@ async function runAgentTurn(params) {
31078
31093
  onPartialReply: cb?.onDelta ? (payload) => {
31079
31094
  if (payload.text) cb.onDelta(payload.text);
31080
31095
  } : void 0,
31096
+ onAssistantMessageStart: cb?.onTypingStart ? () => {
31097
+ cb.onTypingStart();
31098
+ cb?.onLifecycle?.("streaming");
31099
+ } : cb?.onLifecycle ? () => {
31100
+ cb.onLifecycle("streaming");
31101
+ } : void 0,
31081
31102
  onToolResult: cb?.onToolResult ? (payload) => {
31082
31103
  if (payload.text) cb.onToolResult("tool", payload.text);
31083
31104
  } : void 0,
31084
31105
  onReasoningStream: cb?.onThinking ? (payload) => {
31085
31106
  if (payload.text) cb.onThinking(payload.text);
31086
31107
  } : void 0,
31087
- onAgentEvent: cb?.onAgentEvent
31108
+ onBlockReply: cb?.onBlockReply ? (payload) => {
31109
+ cb.onBlockReply({
31110
+ ...payload,
31111
+ isFinal: false
31112
+ });
31113
+ } : void 0,
31114
+ onBlockReplyFlush: cb?.onBlockReplyFlush,
31115
+ onAgentEvent: (evt) => {
31116
+ cb?.onAgentEvent?.(evt);
31117
+ const stream = evt.stream;
31118
+ const data = evt.data;
31119
+ const phase = typeof data?.phase === "string" ? data.phase : "";
31120
+ if (stream === "lifecycle") {
31121
+ if (phase === "start") {
31122
+ cb?.onLifecycle?.("start");
31123
+ cb?.onTypingStart?.();
31124
+ } else if (phase === "end") cb?.onTypingStop?.();
31125
+ else if (phase === "error") {
31126
+ cb?.onLifecycle?.("error");
31127
+ cb?.onTypingStop?.();
31128
+ if (cb?.onError && typeof data?.error === "string") cb.onError(new Error(data.error));
31129
+ }
31130
+ }
31131
+ if (stream === "tool") {
31132
+ const toolName = typeof data?.name === "string" ? data.name : "";
31133
+ if (phase === "start" && toolName) {
31134
+ toolsUsed.push(toolName);
31135
+ cb?.onToolStart?.(toolName, data?.args ?? {});
31136
+ cb?.onTypingStart?.();
31137
+ }
31138
+ }
31139
+ if (stream === "compaction" && phase === "end") cb?.onCompaction?.({
31140
+ tokensBefore: typeof data?.tokensBefore === "number" ? data.tokensBefore : 0,
31141
+ tokensAfter: typeof data?.tokensAfter === "number" ? data.tokensAfter : 0
31142
+ });
31143
+ }
31088
31144
  });
31145
+ let result;
31146
+ let fallbackProvider;
31147
+ let fallbackModel;
31148
+ const TRANSIENT_RETRY_DELAY_MS = 2500;
31149
+ const maxAttempts = params.retryOnTransientError ? 2 : 1;
31150
+ for (let attempt = 0; attempt < maxAttempts; attempt++) try {
31151
+ if (params.fallbackModels?.length) {
31152
+ const fallbackResult = await runWithModelFallback({
31153
+ cfg: params.config,
31154
+ provider: params.provider ?? "",
31155
+ model: params.modelId ?? "",
31156
+ agentDir,
31157
+ fallbacksOverride: params.fallbackModels,
31158
+ run: (provider, model) => runEmbeddedPiAgent(buildInternalParams(provider, model)),
31159
+ onError: async (fallbackAttempt) => {
31160
+ const fromModel = `${fallbackAttempt.provider}/${fallbackAttempt.model}`;
31161
+ cb?.onFallback?.(fromModel, "(next)", String(fallbackAttempt.error));
31162
+ }
31163
+ });
31164
+ result = fallbackResult.result;
31165
+ fallbackProvider = fallbackResult.provider;
31166
+ fallbackModel = fallbackResult.model;
31167
+ } else result = await runEmbeddedPiAgent(buildInternalParams());
31168
+ break;
31169
+ } catch (err) {
31170
+ const errMsg = err instanceof Error ? err.message : String(err);
31171
+ if (params.retryOnTransientError && attempt < maxAttempts - 1 && isTransientHttpError(errMsg)) {
31172
+ await new Promise((resolve) => setTimeout(resolve, TRANSIENT_RETRY_DELAY_MS));
31173
+ continue;
31174
+ }
31175
+ throw err;
31176
+ }
31177
+ result = result;
31089
31178
  const responseText = (result.payloads ?? []).filter((p) => p.text && !p.isError).map((p) => p.text).join("\n").trim();
31090
- const resolvedProvider = result.meta.agentMeta?.provider ?? params.provider ?? "";
31091
- const resolvedModel = result.meta.agentMeta?.model ?? params.modelId ?? "";
31092
- if (cb?.onFinal) await cb.onFinal(responseText, {
31093
- provider: resolvedProvider,
31094
- modelId: resolvedModel,
31095
- tokenCount: result.meta.agentMeta?.usage?.total ?? 0,
31096
- durationMs: Date.now() - startTime,
31097
- toolsUsed: []
31098
- });
31099
- if (cb?.onLifecycle) await cb.onLifecycle(result.meta.error ? "error" : "end");
31100
- return {
31179
+ const resolvedProvider = fallbackProvider ?? result.meta.agentMeta?.provider ?? params.provider ?? "";
31180
+ const resolvedModel = fallbackModel ?? result.meta.agentMeta?.model ?? params.modelId ?? "";
31181
+ const turnResult = {
31101
31182
  text: responseText,
31102
31183
  durationMs: Date.now() - startTime,
31103
31184
  provider: resolvedProvider,
@@ -31106,6 +31187,23 @@ async function runAgentTurn(params) {
31106
31187
  didSendViaMessagingTool: result.didSendViaMessagingTool ?? false,
31107
31188
  rawResult: result
31108
31189
  };
31190
+ if (params.postRunHooks?.length) {
31191
+ for (const hook of params.postRunHooks) if (hook.shouldRun(turnResult)) try {
31192
+ await hook.execute(turnResult, params);
31193
+ } catch (hookErr) {
31194
+ if (cb?.onError && hookErr instanceof Error) cb.onError(hookErr);
31195
+ }
31196
+ turnResult.durationMs = Date.now() - startTime;
31197
+ }
31198
+ if (cb?.onFinal) await cb.onFinal(responseText, {
31199
+ provider: resolvedProvider,
31200
+ modelId: resolvedModel,
31201
+ tokenCount: result.meta.agentMeta?.usage?.total ?? 0,
31202
+ durationMs: turnResult.durationMs,
31203
+ toolsUsed
31204
+ });
31205
+ if (cb?.onLifecycle) await cb.onLifecycle(result.meta.error ? "error" : "end");
31206
+ return turnResult;
31109
31207
  }
31110
31208
 
31111
31209
  //#endregion
@@ -31113,7 +31211,7 @@ async function runAgentTurn(params) {
31113
31211
  function createDefaultDeps() {
31114
31212
  return {
31115
31213
  sendMessageWhatsApp: async (...args) => {
31116
- const { sendMessageWhatsApp } = await import("./web-Cr6E8Ych.js");
31214
+ const { sendMessageWhatsApp } = await import("./web-BYRKX5Ln.js");
31117
31215
  return await sendMessageWhatsApp(...args);
31118
31216
  },
31119
31217
  sendMessageTelegram: async (...args) => {
@@ -49544,7 +49642,7 @@ function loadWebLoginQr() {
49544
49642
  return webLoginQrPromise;
49545
49643
  }
49546
49644
  function loadWebChannel() {
49547
- webChannelPromise ??= import("./web-Cr6E8Ych.js");
49645
+ webChannelPromise ??= import("./web-BYRKX5Ln.js");
49548
49646
  return webChannelPromise;
49549
49647
  }
49550
49648
  function loadWhatsAppActions() {
@@ -70141,7 +70239,6 @@ function createBlockReplyDeliveryHandler(params) {
70141
70239
  //#endregion
70142
70240
  //#region src/auto-reply/reply/agent-runner-execution.ts
70143
70241
  async function runAgentTurnWithFallback(params) {
70144
- const TRANSIENT_HTTP_RETRY_DELAY_MS = 2500;
70145
70242
  let didLogHeartbeatStrip = false;
70146
70243
  let autoCompactionCompleted = false;
70147
70244
  const directlySentBlockKeys = /* @__PURE__ */ new Set();
@@ -70162,199 +70259,216 @@ async function runAgentTurnWithFallback(params) {
70162
70259
  let fallbackModel = params.followupRun.run.model;
70163
70260
  let fallbackAttempts = [];
70164
70261
  let didResetAfterCompactionFailure = false;
70165
- let didRetryTransientHttpError = false;
70166
- while (true) try {
70167
- const normalizeStreamingText = (payload) => {
70168
- let text = payload.text;
70169
- if (!params.isHeartbeat && text?.includes("SYMIPULSE_OK")) {
70170
- const stripped = stripHeartbeatToken(text, { mode: "message" });
70171
- if (stripped.didStrip && !didLogHeartbeatStrip) {
70172
- didLogHeartbeatStrip = true;
70173
- logVerbose("Stripped stray SYMIPULSE_OK token from reply");
70174
- }
70175
- if (stripped.shouldSkip && (payload.mediaUrls?.length ?? 0) === 0) return { skip: true };
70176
- text = stripped.text;
70177
- }
70178
- if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return { skip: true };
70179
- if (!text) {
70180
- if ((payload.mediaUrls?.length ?? 0) > 0) return {
70181
- text: void 0,
70182
- skip: false
70183
- };
70184
- return { skip: true };
70262
+ const normalizeStreamingText = (payload) => {
70263
+ let text = payload.text;
70264
+ if (!params.isHeartbeat && text?.includes("SYMIPULSE_OK")) {
70265
+ const stripped = stripHeartbeatToken(text, { mode: "message" });
70266
+ if (stripped.didStrip && !didLogHeartbeatStrip) {
70267
+ didLogHeartbeatStrip = true;
70268
+ logVerbose("Stripped stray SYMIPULSE_OK token from reply");
70185
70269
  }
70186
- const sanitized = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
70187
- if (!sanitized.trim()) return { skip: true };
70188
- return {
70189
- text: sanitized,
70270
+ if (stripped.shouldSkip && (payload.mediaUrls?.length ?? 0) === 0) return { skip: true };
70271
+ text = stripped.text;
70272
+ }
70273
+ if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return { skip: true };
70274
+ if (!text) {
70275
+ if ((payload.mediaUrls?.length ?? 0) > 0) return {
70276
+ text: void 0,
70190
70277
  skip: false
70191
70278
  };
70279
+ return { skip: true };
70280
+ }
70281
+ const sanitized = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
70282
+ if (!sanitized.trim()) return { skip: true };
70283
+ return {
70284
+ text: sanitized,
70285
+ skip: false
70192
70286
  };
70193
- const handlePartialForTyping = async (payload) => {
70194
- if (isSilentReplyPrefixText(payload.text, SILENT_REPLY_TOKEN)) return;
70195
- const { text, skip } = normalizeStreamingText(payload);
70196
- if (skip || !text) return;
70287
+ };
70288
+ const blockReplyPipeline = params.blockReplyPipeline;
70289
+ const onToolResult = params.opts?.onToolResult;
70290
+ let toolResultChain = Promise.resolve();
70291
+ const serializedOnToolResult = onToolResult ? (name, resultText) => {
70292
+ toolResultChain = toolResultChain.then(async () => {
70293
+ const { text, skip } = normalizeStreamingText({ text: resultText });
70294
+ if (skip) return;
70197
70295
  await params.typingSignals.signalTextDelta(text);
70198
- return text;
70199
- };
70200
- const blockReplyPipeline = params.blockReplyPipeline;
70201
- const onToolResult = params.opts?.onToolResult;
70202
- const fallbackResult = await runWithModelFallback({
70203
- ...resolveModelFallbackOptions(params.followupRun.run),
70204
- run: (provider, model) => {
70205
- params.opts?.onModelSelected?.({
70206
- provider,
70207
- model,
70208
- thinkLevel: params.followupRun.run.thinkLevel
70209
- });
70210
- if (isCliProvider(provider, params.followupRun.run.config)) {
70211
- const startedAt = Date.now();
70212
- notifyAgentRunStart();
70213
- emitAgentEvent({
70214
- runId,
70215
- stream: "lifecycle",
70216
- data: {
70217
- phase: "start",
70218
- startedAt
70219
- }
70220
- });
70221
- const cliSessionId = getCliSessionId(params.getActiveSessionEntry(), provider);
70222
- return (async () => {
70223
- let lifecycleTerminalEmitted = false;
70224
- try {
70225
- const result = await runCliAgent({
70226
- sessionId: params.followupRun.run.sessionId,
70227
- sessionKey: params.sessionKey,
70228
- agentId: params.followupRun.run.agentId,
70229
- sessionFile: params.followupRun.run.sessionFile,
70230
- workspaceDir: params.followupRun.run.workspaceDir,
70231
- config: params.followupRun.run.config,
70232
- prompt: params.commandBody,
70233
- provider,
70234
- model,
70235
- thinkLevel: params.followupRun.run.thinkLevel,
70236
- timeoutMs: params.followupRun.run.timeoutMs,
70237
- runId,
70238
- extraSystemPrompt: params.followupRun.run.extraSystemPrompt,
70239
- ownerNumbers: params.followupRun.run.ownerNumbers,
70240
- cliSessionId,
70241
- images: params.opts?.images
70242
- });
70243
- const cliText = result.payloads?.[0]?.text?.trim();
70244
- if (cliText) emitAgentEvent({
70245
- runId,
70246
- stream: "assistant",
70247
- data: { text: cliText }
70248
- });
70249
- emitAgentEvent({
70250
- runId,
70251
- stream: "lifecycle",
70252
- data: {
70253
- phase: "end",
70254
- startedAt,
70255
- endedAt: Date.now()
70256
- }
70257
- });
70258
- lifecycleTerminalEmitted = true;
70259
- return result;
70260
- } catch (err) {
70261
- emitAgentEvent({
70262
- runId,
70263
- stream: "lifecycle",
70264
- data: {
70265
- phase: "error",
70266
- startedAt,
70267
- endedAt: Date.now(),
70268
- error: String(err)
70269
- }
70270
- });
70271
- lifecycleTerminalEmitted = true;
70272
- throw err;
70273
- } finally {
70274
- if (!lifecycleTerminalEmitted) emitAgentEvent({
70275
- runId,
70276
- stream: "lifecycle",
70277
- data: {
70278
- phase: "error",
70279
- startedAt,
70280
- endedAt: Date.now(),
70281
- error: "CLI run completed without lifecycle terminal event"
70282
- }
70283
- });
70284
- }
70285
- })();
70296
+ await onToolResult({
70297
+ text,
70298
+ mediaUrls: void 0
70299
+ });
70300
+ }).catch((err) => {
70301
+ logVerbose(`tool result delivery failed: ${String(err)}`);
70302
+ });
70303
+ const task = toolResultChain.finally(() => {
70304
+ params.pendingToolTasks.delete(task);
70305
+ });
70306
+ params.pendingToolTasks.add(task);
70307
+ } : void 0;
70308
+ while (true) try {
70309
+ const run = params.followupRun.run;
70310
+ const resolvedProvider = run.provider;
70311
+ const resolvedModel = run.model;
70312
+ if (isCliProvider(resolvedProvider, run.config)) {
70313
+ const startedAt = Date.now();
70314
+ notifyAgentRunStart();
70315
+ emitAgentEvent({
70316
+ runId,
70317
+ stream: "lifecycle",
70318
+ data: {
70319
+ phase: "start",
70320
+ startedAt
70286
70321
  }
70287
- const { authProfile, embeddedContext, senderContext } = buildEmbeddedRunContexts({
70288
- run: params.followupRun.run,
70289
- sessionCtx: params.sessionCtx,
70290
- hasRepliedRef: params.opts?.hasRepliedRef,
70291
- provider
70322
+ });
70323
+ const cliSessionId = getCliSessionId(params.getActiveSessionEntry(), resolvedProvider);
70324
+ let lifecycleTerminalEmitted = false;
70325
+ try {
70326
+ const cliResult = await runCliAgent({
70327
+ sessionId: run.sessionId,
70328
+ sessionKey: params.sessionKey,
70329
+ agentId: run.agentId,
70330
+ sessionFile: run.sessionFile,
70331
+ workspaceDir: run.workspaceDir,
70332
+ config: run.config,
70333
+ prompt: params.commandBody,
70334
+ provider: resolvedProvider,
70335
+ model: resolvedModel,
70336
+ thinkLevel: run.thinkLevel,
70337
+ timeoutMs: run.timeoutMs,
70338
+ runId,
70339
+ extraSystemPrompt: run.extraSystemPrompt,
70340
+ ownerNumbers: run.ownerNumbers,
70341
+ cliSessionId,
70342
+ images: params.opts?.images
70292
70343
  });
70293
- const runBaseParams = buildEmbeddedRunBaseParams({
70294
- run: params.followupRun.run,
70295
- provider,
70296
- model,
70344
+ const cliText = cliResult.payloads?.[0]?.text?.trim();
70345
+ if (cliText) emitAgentEvent({
70297
70346
  runId,
70298
- authProfile
70347
+ stream: "assistant",
70348
+ data: { text: cliText }
70299
70349
  });
70300
- return runEmbeddedPiAgent({
70301
- ...embeddedContext,
70302
- groupId: resolveGroupSessionKey(params.sessionCtx)?.id,
70303
- groupChannel: params.sessionCtx.GroupChannel?.trim() ?? params.sessionCtx.GroupSubject?.trim(),
70304
- groupSpace: params.sessionCtx.GroupSpace?.trim() ?? void 0,
70305
- ...senderContext,
70306
- ...runBaseParams,
70307
- prompt: params.commandBody,
70308
- extraSystemPrompt: params.followupRun.run.extraSystemPrompt,
70309
- toolResultFormat: (() => {
70310
- const channel = resolveMessageChannel(params.sessionCtx.Surface, params.sessionCtx.Provider);
70311
- if (!channel) return "markdown";
70312
- return isMarkdownCapableMessageChannel(channel) ? "markdown" : "plain";
70313
- })(),
70314
- suppressToolErrorWarnings: params.opts?.suppressToolErrorWarnings,
70315
- images: params.opts?.images,
70316
- abortSignal: params.opts?.abortSignal,
70317
- blockReplyBreak: params.resolvedBlockStreamingBreak,
70318
- blockReplyChunking: params.blockReplyChunking,
70319
- onPartialReply: async (payload) => {
70320
- const textForTyping = await handlePartialForTyping(payload);
70321
- if (!params.opts?.onPartialReply || textForTyping === void 0) return;
70322
- await params.opts.onPartialReply({
70323
- text: textForTyping,
70324
- mediaUrls: payload.mediaUrls
70325
- });
70326
- },
70327
- onAssistantMessageStart: async () => {
70328
- await params.typingSignals.signalMessageStart();
70329
- await params.opts?.onAssistantMessageStart?.();
70330
- },
70331
- onReasoningStream: params.typingSignals.shouldStartOnReasoning || params.opts?.onReasoningStream ? async (payload) => {
70332
- await params.typingSignals.signalReasoningDelta();
70333
- await params.opts?.onReasoningStream?.({
70334
- text: payload.text,
70335
- mediaUrls: payload.mediaUrls
70336
- });
70337
- } : void 0,
70338
- onReasoningEnd: params.opts?.onReasoningEnd,
70339
- onAgentEvent: async (evt) => {
70340
- const hasLifecyclePhase = evt.stream === "lifecycle" && typeof evt.data.phase === "string";
70341
- if (evt.stream !== "lifecycle" || hasLifecyclePhase) notifyAgentRunStart();
70342
- if (evt.stream === "tool") {
70343
- const phase = typeof evt.data.phase === "string" ? evt.data.phase : "";
70344
- const name = typeof evt.data.name === "string" ? evt.data.name : void 0;
70345
- if (phase === "start" || phase === "update") {
70346
- await params.typingSignals.signalToolStart();
70347
- await params.opts?.onToolStart?.({
70348
- name,
70349
- phase
70350
- });
70351
- }
70352
- }
70353
- if (evt.stream === "compaction") {
70354
- if ((typeof evt.data.phase === "string" ? evt.data.phase : "") === "end") autoCompactionCompleted = true;
70355
- }
70356
- },
70357
- onBlockReply: params.opts?.onBlockReply ? createBlockReplyDeliveryHandler({
70350
+ emitAgentEvent({
70351
+ runId,
70352
+ stream: "lifecycle",
70353
+ data: {
70354
+ phase: "end",
70355
+ startedAt,
70356
+ endedAt: Date.now()
70357
+ }
70358
+ });
70359
+ lifecycleTerminalEmitted = true;
70360
+ runResult = cliResult;
70361
+ break;
70362
+ } catch (err) {
70363
+ emitAgentEvent({
70364
+ runId,
70365
+ stream: "lifecycle",
70366
+ data: {
70367
+ phase: "error",
70368
+ startedAt,
70369
+ endedAt: Date.now(),
70370
+ error: String(err)
70371
+ }
70372
+ });
70373
+ lifecycleTerminalEmitted = true;
70374
+ throw err;
70375
+ } finally {
70376
+ if (!lifecycleTerminalEmitted) emitAgentEvent({
70377
+ runId,
70378
+ stream: "lifecycle",
70379
+ data: {
70380
+ phase: "error",
70381
+ startedAt,
70382
+ endedAt: Date.now(),
70383
+ error: "CLI run completed without lifecycle terminal event"
70384
+ }
70385
+ });
70386
+ }
70387
+ }
70388
+ params.opts?.onModelSelected?.({
70389
+ provider: resolvedProvider,
70390
+ model: resolvedModel,
70391
+ thinkLevel: run.thinkLevel
70392
+ });
70393
+ const toolResultFormat = (() => {
70394
+ const channel = resolveMessageChannel(params.sessionCtx.Surface, params.sessionCtx.Provider);
70395
+ return !channel || isMarkdownCapableMessageChannel(channel) ? "markdown" : "plain";
70396
+ })();
70397
+ const turnResult = await runAgentTurn({
70398
+ sessionId: run.sessionId,
70399
+ sessionKey: params.sessionKey ?? run.sessionKey ?? run.sessionId,
70400
+ agentId: run.agentId,
70401
+ workspaceDir: run.workspaceDir,
70402
+ agentDir: run.agentDir,
70403
+ config: run.config,
70404
+ skillsSnapshot: run.skillsSnapshot,
70405
+ prompt: params.commandBody,
70406
+ extraSystemPrompt: run.extraSystemPrompt,
70407
+ images: params.opts?.images,
70408
+ provider: resolvedProvider,
70409
+ modelId: resolvedModel,
70410
+ authProfileId: run.authProfileId,
70411
+ authProfileIdSource: run.authProfileIdSource,
70412
+ thinkLevel: run.thinkLevel,
70413
+ verboseLevel: run.verboseLevel,
70414
+ reasoningLevel: run.reasoningLevel,
70415
+ timeoutMs: run.timeoutMs,
70416
+ runId,
70417
+ abortSignal: params.opts?.abortSignal,
70418
+ toolResultFormat,
70419
+ ownerNumbers: run.ownerNumbers,
70420
+ enforceFinalTag: run.enforceFinalTag,
70421
+ execOverrides: run.execOverrides,
70422
+ bashElevated: run.bashElevated,
70423
+ suppressToolErrorWarnings: params.opts?.suppressToolErrorWarnings,
70424
+ blockReplyBreak: params.resolvedBlockStreamingBreak,
70425
+ blockReplyChunking: params.blockReplyChunking,
70426
+ retryOnTransientError: true,
70427
+ fallbackModels: resolveModelFallbackOptions(run).fallbacksOverride,
70428
+ channel: {
70429
+ messageChannel: resolveMessageChannel(params.sessionCtx.Surface, params.sessionCtx.Provider) ?? void 0,
70430
+ messageProvider: params.sessionCtx.Provider?.trim().toLowerCase() || void 0,
70431
+ agentAccountId: params.sessionCtx.AccountId,
70432
+ messageTo: params.sessionCtx.OriginatingTo ?? params.sessionCtx.To,
70433
+ messageThreadId: params.sessionCtx.MessageThreadId ?? void 0,
70434
+ groupId: resolveGroupSessionKey(params.sessionCtx)?.id,
70435
+ groupChannel: params.sessionCtx.GroupChannel?.trim() ?? params.sessionCtx.GroupSubject?.trim(),
70436
+ groupSpace: params.sessionCtx.GroupSpace?.trim() ?? void 0,
70437
+ senderId: params.sessionCtx.SenderId?.trim() || void 0,
70438
+ senderName: params.sessionCtx.SenderName?.trim() || void 0,
70439
+ senderUsername: params.sessionCtx.SenderUsername?.trim() || void 0,
70440
+ senderE164: params.sessionCtx.SenderE164?.trim() || void 0,
70441
+ senderIsOwner: run.senderIsOwner,
70442
+ currentChannelId: params.sessionCtx.CurrentChannelId,
70443
+ currentThreadTs: params.sessionCtx.CurrentThreadTs,
70444
+ hasRepliedRef: params.opts?.hasRepliedRef
70445
+ },
70446
+ callbacks: {
70447
+ onDelta: async (text) => {
70448
+ if (isSilentReplyPrefixText(text, SILENT_REPLY_TOKEN)) return;
70449
+ const { text: normalized, skip } = normalizeStreamingText({ text });
70450
+ if (skip || !normalized) return;
70451
+ await params.typingSignals.signalTextDelta(normalized);
70452
+ await params.opts?.onPartialReply?.({ text: normalized });
70453
+ },
70454
+ onToolStart: async (name) => {
70455
+ notifyAgentRunStart();
70456
+ await params.typingSignals.signalToolStart();
70457
+ await params.opts?.onToolStart?.({
70458
+ name,
70459
+ phase: "start"
70460
+ });
70461
+ },
70462
+ onToolResult: serializedOnToolResult,
70463
+ onThinking: params.typingSignals.shouldStartOnReasoning || params.opts?.onReasoningStream ? async (text) => {
70464
+ await params.typingSignals.signalReasoningDelta();
70465
+ await params.opts?.onReasoningStream?.({ text });
70466
+ } : void 0,
70467
+ onLifecycle: async (phase) => {
70468
+ if (phase === "start" || phase === "streaming") notifyAgentRunStart();
70469
+ },
70470
+ onBlockReply: params.opts?.onBlockReply ? async (payload) => {
70471
+ await createBlockReplyDeliveryHandler({
70358
70472
  onBlockReply: params.opts.onBlockReply,
70359
70473
  currentMessageId: params.sessionCtx.MessageSidFull ?? params.sessionCtx.MessageSid,
70360
70474
  normalizeStreamingText,
@@ -70363,46 +70477,22 @@ async function runAgentTurnWithFallback(params) {
70363
70477
  blockStreamingEnabled: params.blockStreamingEnabled,
70364
70478
  blockReplyPipeline,
70365
70479
  directlySentBlockKeys
70366
- }) : void 0,
70367
- onBlockReplyFlush: params.blockStreamingEnabled && blockReplyPipeline ? async () => {
70368
- await blockReplyPipeline.flush({ force: true });
70369
- } : void 0,
70370
- shouldEmitToolResult: params.shouldEmitToolResult,
70371
- shouldEmitToolOutput: params.shouldEmitToolOutput,
70372
- onToolResult: onToolResult ? (() => {
70373
- let toolResultChain = Promise.resolve();
70374
- return (payload) => {
70375
- toolResultChain = toolResultChain.then(async () => {
70376
- const { text, skip } = normalizeStreamingText(payload);
70377
- if (skip) return;
70378
- await params.typingSignals.signalTextDelta(text);
70379
- await onToolResult({
70380
- text,
70381
- mediaUrls: payload.mediaUrls
70382
- });
70383
- }).catch((err) => {
70384
- logVerbose(`tool result delivery failed: ${String(err)}`);
70385
- });
70386
- const task = toolResultChain.finally(() => {
70387
- params.pendingToolTasks.delete(task);
70388
- });
70389
- params.pendingToolTasks.add(task);
70390
- };
70391
- })() : void 0
70392
- });
70480
+ })(payload);
70481
+ } : void 0,
70482
+ onBlockReplyFlush: params.blockStreamingEnabled && blockReplyPipeline ? async () => {
70483
+ await blockReplyPipeline.flush({ force: true });
70484
+ } : void 0,
70485
+ onCompaction: () => {
70486
+ autoCompactionCompleted = true;
70487
+ },
70488
+ onAgentEvent: (evt) => {
70489
+ if (evt.stream !== "lifecycle") notifyAgentRunStart();
70490
+ }
70393
70491
  }
70394
70492
  });
70395
- runResult = fallbackResult.result;
70396
- fallbackProvider = fallbackResult.provider;
70397
- fallbackModel = fallbackResult.model;
70398
- fallbackAttempts = Array.isArray(fallbackResult.attempts) ? fallbackResult.attempts.map((attempt) => ({
70399
- provider: String(attempt.provider ?? ""),
70400
- model: String(attempt.model ?? ""),
70401
- error: String(attempt.error ?? ""),
70402
- reason: attempt.reason ? String(attempt.reason) : void 0,
70403
- status: typeof attempt.status === "number" ? attempt.status : void 0,
70404
- code: attempt.code ? String(attempt.code) : void 0
70405
- })) : [];
70493
+ runResult = turnResult.rawResult;
70494
+ fallbackProvider = turnResult.provider;
70495
+ fallbackModel = turnResult.modelId;
70406
70496
  const embeddedError = runResult.meta?.error;
70407
70497
  if (embeddedError && isContextOverflowError(embeddedError.message) && !didResetAfterCompactionFailure && await params.resetSessionAfterCompactionFailure(embeddedError.message)) {
70408
70498
  didResetAfterCompactionFailure = true;
@@ -70461,14 +70551,6 @@ async function runAgentTurnWithFallback(params) {
70461
70551
  payload: { text: "⚠️ Session history was corrupted. I've reset the conversation - please try again!" }
70462
70552
  };
70463
70553
  }
70464
- if (isTransientHttp && !didRetryTransientHttpError) {
70465
- didRetryTransientHttpError = true;
70466
- defaultRuntime.error(`Transient HTTP provider error before reply (${message}). Retrying once in ${TRANSIENT_HTTP_RETRY_DELAY_MS}ms.`);
70467
- await new Promise((resolve) => {
70468
- setTimeout(resolve, TRANSIENT_HTTP_RETRY_DELAY_MS);
70469
- });
70470
- continue;
70471
- }
70472
70554
  defaultRuntime.error(`Embedded agent failed before reply: ${message}`);
70473
70555
  const trimmedMessage = (isTransientHttp ? sanitizeUserFacingText(message, { errorContext: true }) : message).replace(/\.\s*$/, "");
70474
70556
  return {
@@ -70660,7 +70742,7 @@ async function runMemoryFlushIfNeeded(params) {
70660
70742
  try {
70661
70743
  await runWithModelFallback({
70662
70744
  ...resolveModelFallbackOptions(params.followupRun.run),
70663
- run: (provider, model) => {
70745
+ run: async (provider, model) => {
70664
70746
  const { authProfile, embeddedContext, senderContext } = buildEmbeddedRunContexts({
70665
70747
  run: params.followupRun.run,
70666
70748
  sessionCtx: params.sessionCtx,
@@ -70674,21 +70756,46 @@ async function runMemoryFlushIfNeeded(params) {
70674
70756
  runId: flushRunId,
70675
70757
  authProfile
70676
70758
  });
70677
- return runEmbeddedPiAgent({
70678
- ...embeddedContext,
70679
- ...senderContext,
70680
- ...runBaseParams,
70759
+ return (await runAgentTurn({
70760
+ sessionId: embeddedContext.sessionId,
70761
+ sessionKey: embeddedContext.sessionKey ?? embeddedContext.sessionId ?? "",
70762
+ workspaceDir: runBaseParams.workspaceDir,
70763
+ agentDir: runBaseParams.agentDir,
70764
+ config: runBaseParams.config ?? params.cfg,
70765
+ skillsSnapshot: runBaseParams.skillsSnapshot,
70681
70766
  prompt: resolveMemoryFlushPromptForRun({
70682
70767
  prompt: memoryFlushSettings.prompt,
70683
70768
  cfg: params.cfg
70684
70769
  }),
70685
70770
  extraSystemPrompt: flushSystemPrompt,
70686
- onAgentEvent: (evt) => {
70687
- if (evt.stream === "compaction") {
70688
- if ((typeof evt.data.phase === "string" ? evt.data.phase : "") === "end") memoryCompactionCompleted = true;
70689
- }
70690
- }
70691
- });
70771
+ provider,
70772
+ modelId: model,
70773
+ authProfileId: runBaseParams.authProfileId,
70774
+ authProfileIdSource: runBaseParams.authProfileIdSource,
70775
+ thinkLevel: runBaseParams.thinkLevel,
70776
+ verboseLevel: runBaseParams.verboseLevel,
70777
+ reasoningLevel: runBaseParams.reasoningLevel,
70778
+ timeoutMs: runBaseParams.timeoutMs,
70779
+ runId: runBaseParams.runId,
70780
+ ownerNumbers: runBaseParams.ownerNumbers,
70781
+ enforceFinalTag: runBaseParams.enforceFinalTag,
70782
+ execOverrides: runBaseParams.execOverrides,
70783
+ bashElevated: runBaseParams.bashElevated,
70784
+ channel: {
70785
+ messageProvider: embeddedContext.messageProvider,
70786
+ agentAccountId: embeddedContext.agentAccountId,
70787
+ messageTo: embeddedContext.messageTo,
70788
+ messageThreadId: embeddedContext.messageThreadId,
70789
+ senderId: senderContext.senderId,
70790
+ senderName: senderContext.senderName,
70791
+ senderUsername: senderContext.senderUsername,
70792
+ senderE164: senderContext.senderE164,
70793
+ senderIsOwner: runBaseParams.senderIsOwner
70794
+ },
70795
+ callbacks: { onCompaction: () => {
70796
+ memoryCompactionCompleted = true;
70797
+ } }
70798
+ })).rawResult;
70692
70799
  }
70693
70800
  });
70694
70801
  let memoryFlushCompactionCount = activeSessionEntry?.compactionCount ?? (params.sessionKey ? activeSessionStore?.[params.sessionKey]?.compactionCount : 0) ?? 0;
@@ -71003,81 +71110,73 @@ function createFollowupRunner(params) {
71003
71110
  let fallbackProvider = queued.run.provider;
71004
71111
  let fallbackModel = queued.run.model;
71005
71112
  try {
71006
- const fallbackResult = await runWithModelFallback({
71007
- cfg: queued.run.config,
71008
- provider: queued.run.provider,
71009
- model: queued.run.model,
71113
+ runResult = await runAgentTurn({
71114
+ sessionId: queued.run.sessionId,
71115
+ sessionKey: queued.run.sessionKey ?? queued.run.sessionId,
71116
+ workspaceDir: queued.run.workspaceDir,
71010
71117
  agentDir: queued.run.agentDir,
71011
- fallbacksOverride: resolveAgentModelFallbacksOverride(queued.run.config, resolveAgentIdFromSessionKey(queued.run.sessionKey)),
71012
- run: (provider, model) => {
71013
- const authProfile = resolveRunAuthProfile(queued.run, provider);
71014
- return runEmbeddedPiAgent({
71015
- sessionId: queued.run.sessionId,
71016
- sessionKey: queued.run.sessionKey,
71017
- agentId: queued.run.agentId,
71018
- messageProvider: queued.run.messageProvider,
71019
- agentAccountId: queued.run.agentAccountId,
71020
- messageTo: queued.originatingTo,
71021
- messageThreadId: queued.originatingThreadId,
71022
- groupId: queued.run.groupId,
71023
- groupChannel: queued.run.groupChannel,
71024
- groupSpace: queued.run.groupSpace,
71025
- senderId: queued.run.senderId,
71026
- senderName: queued.run.senderName,
71027
- senderUsername: queued.run.senderUsername,
71028
- senderE164: queued.run.senderE164,
71029
- senderIsOwner: queued.run.senderIsOwner,
71030
- sessionFile: queued.run.sessionFile,
71031
- workspaceDir: queued.run.workspaceDir,
71032
- config: queued.run.config,
71033
- skillsSnapshot: queued.run.skillsSnapshot,
71034
- prompt: queued.prompt,
71035
- extraSystemPrompt: queued.run.extraSystemPrompt,
71036
- ownerNumbers: queued.run.ownerNumbers,
71037
- enforceFinalTag: queued.run.enforceFinalTag,
71038
- provider,
71039
- model,
71040
- ...authProfile,
71041
- thinkLevel: queued.run.thinkLevel,
71042
- verboseLevel: queued.run.verboseLevel,
71043
- reasoningLevel: queued.run.reasoningLevel,
71044
- suppressToolErrorWarnings: opts?.suppressToolErrorWarnings,
71045
- execOverrides: queued.run.execOverrides,
71046
- bashElevated: queued.run.bashElevated,
71047
- timeoutMs: queued.run.timeoutMs,
71048
- runId,
71049
- blockReplyBreak: queued.run.blockReplyBreak,
71050
- onAgentEvent: (evt) => {
71051
- if (evt.stream !== "compaction") return;
71052
- if ((typeof evt.data.phase === "string" ? evt.data.phase : "") === "end") autoCompactionCompleted = true;
71053
- }
71054
- });
71055
- }
71118
+ config: queued.run.config,
71119
+ skillsSnapshot: queued.run.skillsSnapshot,
71120
+ prompt: queued.prompt,
71121
+ extraSystemPrompt: queued.run.extraSystemPrompt,
71122
+ provider: queued.run.provider,
71123
+ modelId: queued.run.model,
71124
+ authProfileId: queued.run.authProfileId,
71125
+ authProfileIdSource: queued.run.authProfileIdSource,
71126
+ thinkLevel: queued.run.thinkLevel,
71127
+ verboseLevel: queued.run.verboseLevel,
71128
+ reasoningLevel: queued.run.reasoningLevel,
71129
+ timeoutMs: queued.run.timeoutMs,
71130
+ runId,
71131
+ ownerNumbers: queued.run.ownerNumbers,
71132
+ enforceFinalTag: queued.run.enforceFinalTag,
71133
+ execOverrides: queued.run.execOverrides,
71134
+ bashElevated: queued.run.bashElevated,
71135
+ suppressToolErrorWarnings: opts?.suppressToolErrorWarnings,
71136
+ blockReplyBreak: queued.run.blockReplyBreak,
71137
+ fallbackModels: resolveAgentModelFallbacksOverride(queued.run.config, resolveAgentIdFromSessionKey(queued.run.sessionKey)),
71138
+ channel: {
71139
+ messageProvider: queued.run.messageProvider,
71140
+ agentAccountId: queued.run.agentAccountId,
71141
+ messageTo: queued.originatingTo,
71142
+ messageThreadId: queued.originatingThreadId,
71143
+ groupId: queued.run.groupId,
71144
+ groupChannel: queued.run.groupChannel,
71145
+ groupSpace: queued.run.groupSpace,
71146
+ senderId: queued.run.senderId,
71147
+ senderName: queued.run.senderName,
71148
+ senderUsername: queued.run.senderUsername,
71149
+ senderE164: queued.run.senderE164,
71150
+ senderIsOwner: queued.run.senderIsOwner
71151
+ },
71152
+ callbacks: { onCompaction: () => {
71153
+ autoCompactionCompleted = true;
71154
+ } }
71056
71155
  });
71057
- runResult = fallbackResult.result;
71058
- fallbackProvider = fallbackResult.provider;
71059
- fallbackModel = fallbackResult.model;
71156
+ fallbackProvider = runResult.provider;
71157
+ fallbackModel = runResult.modelId;
71060
71158
  } catch (err) {
71061
71159
  const message = err instanceof Error ? err.message : String(err);
71062
71160
  defaultRuntime.error?.(`Followup agent failed before reply: ${message}`);
71063
71161
  return;
71064
71162
  }
71065
- const usage = runResult.meta?.agentMeta?.usage;
71066
- const promptTokens = runResult.meta?.agentMeta?.promptTokens;
71067
- const modelUsed = runResult.meta?.agentMeta?.model ?? fallbackModel ?? defaultModel;
71163
+ const rawResult = runResult.rawResult;
71164
+ const usage = rawResult.meta?.agentMeta?.usage;
71165
+ const promptTokens = rawResult.meta?.agentMeta?.promptTokens;
71166
+ const modelUsed = rawResult.meta?.agentMeta?.model ?? fallbackModel ?? defaultModel;
71068
71167
  const contextTokensUsed = agentCfgContextTokens ?? lookupContextTokens(modelUsed) ?? sessionEntry?.contextTokens ?? DEFAULT_CONTEXT_TOKENS;
71069
71168
  if (storePath && sessionKey) await persistRunSessionUsage({
71070
71169
  storePath,
71071
71170
  sessionKey,
71072
71171
  usage,
71073
- lastCallUsage: runResult.meta?.agentMeta?.lastCallUsage,
71172
+ lastCallUsage: rawResult.meta?.agentMeta?.lastCallUsage,
71074
71173
  promptTokens,
71075
71174
  modelUsed,
71076
71175
  providerUsed: fallbackProvider,
71077
71176
  contextTokensUsed,
71078
71177
  logLabel: "followup"
71079
71178
  });
71080
- const payloadArray = runResult.payloads ?? [];
71179
+ const payloadArray = rawResult.payloads ?? [];
71081
71180
  if (payloadArray.length === 0) return;
71082
71181
  const sanitizedPayloads = payloadArray.flatMap((payload) => {
71083
71182
  const text = payload.text;
@@ -71098,13 +71197,13 @@ function createFollowupRunner(params) {
71098
71197
  replyToMode: resolveReplyToMode(queued.run.config, replyToChannel, queued.originatingAccountId, queued.originatingChatType),
71099
71198
  replyToChannel
71100
71199
  }),
71101
- sentTexts: runResult.messagingToolSentTexts ?? []
71200
+ sentTexts: rawResult.messagingToolSentTexts ?? []
71102
71201
  }),
71103
- sentMediaUrls: runResult.messagingToolSentMediaUrls ?? []
71202
+ sentMediaUrls: rawResult.messagingToolSentMediaUrls ?? []
71104
71203
  });
71105
71204
  const finalPayloads = shouldSuppressMessagingToolReplies({
71106
71205
  messageProvider: queued.run.messageProvider,
71107
- messagingToolSentTargets: runResult.messagingToolSentTargets,
71206
+ messagingToolSentTargets: rawResult.messagingToolSentTargets,
71108
71207
  originatingTo: queued.originatingTo,
71109
71208
  accountId: queued.run.agentAccountId
71110
71209
  }) ? [] : mediaFilteredPayloads;
@@ -71115,7 +71214,7 @@ function createFollowupRunner(params) {
71115
71214
  sessionStore,
71116
71215
  sessionKey,
71117
71216
  storePath,
71118
- lastCallUsage: runResult.meta?.agentMeta?.lastCallUsage,
71217
+ lastCallUsage: rawResult.meta?.agentMeta?.lastCallUsage,
71119
71218
  contextTokensUsed
71120
71219
  });
71121
71220
  if (queued.run.verboseLevel && queued.run.verboseLevel !== "off") {
@@ -73101,4 +73200,4 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
73101
73200
  }
73102
73201
 
73103
73202
  //#endregion
73104
- export { buildDeliveryFromLegacyPayload as $, OPENAI_TTS_MODELS as $n, parseIdentityMarkdown as $t, emitGatewayRestart as A, initSubagentRegistry as An, extractImageContentFromSource as Ar, resolveHeartbeatDeliveryTarget as At, summarizeRestartSentinel as B, registerAgentRunContext as Bn, abortEmbeddedPiRun as Bt, ensureOutboundSessionEntry as C, shouldComputeCommandAuthorized as Cn, peekSystemEventEntries as Cr, requestBodyErrorToText as Ct, CHANNEL_MESSAGE_ACTION_NAMES as D, normalizeMentionText as Dn, DEFAULT_INPUT_MAX_REDIRECTS as Dr, resolveSessionKeyForRequest as Dt, resetDirectoryCache as E, buildMentionRegexes as En, DEFAULT_INPUT_IMAGE_MIMES as Er, agentCommand as Et, setPreRestartDeferralCheck as F, readLatestAssistantReply as Fn, normalizeSendPolicy as Ft, normalizeCronJobPatch as G, resolveTtsApiKey as Gn, getCliSessionId as Gt, writeRestartSentinel as H, getTtsProvider as Hn, waitForEmbeddedPiRunEnd as Ht, consumeRestartSentinel as I, clearAgentRunContext as In, resolveSendPolicy as It, normalizeOptionalSessionKey as J, resolveTtsPrefsPath as Jn, sha256HexPrefix as Jt, inferLegacyName as K, resolveTtsAutoMode as Kn, setCliSessionId as Kt, formatDoctorNonInteractiveHint as L, emitAgentEvent as Ln, createDefaultDeps as Lt, markGatewaySigusr1RestartHandled as M, listSubagentRunsForRequester as Mn, resolveInputFileLimits as Mr, resolveOutboundTarget as Mt, scheduleGatewaySigusr1Restart as N, subagent_registry_exports as Nn, estimateBase64DecodedBytes as Nr, resolveSessionDeliveryTarget as Nt, consumeGatewaySigusr1RestartAuthorization as O, countActiveDescendantRuns as On, DEFAULT_INPUT_TIMEOUT_MS as Or, resolveAgentDeliveryPlan as Ot, setGatewaySigusr1RestartPolicy as P, runSubagentAnnounceFlow as Pn, resolveAgentTimeoutMs as Pr, createOutboundSendDeps as Pt, migrateLegacyCronPayload as Q, textToSpeech as Qn, loadAgentIdentityFromWorkspace as Qt, formatRestartSentinelMessage as R, getAgentRunContext as Rn, createOutboundSendDeps$1 as Rt, runMessageAction as S, hasControlCommand as Sn, isSystemEventContextChanged as Sr, readJsonBodyWithLimit as St, formatTargetDisplay as T, stopSubagentsForRequester as Tn, DEFAULT_INPUT_IMAGE_MAX_BYTES as Tr, sleepWithAbort as Tt, normalizeHttpWebhookUrl as U, isTtsEnabled as Un, resolveModelProfile as Ut, trimLogTail as V, resolveUserTimezone as Vn, getActiveEmbeddedRunCount as Vt, normalizeCronJobCreate as W, isTtsProviderConfigured as Wn, runWithModelFallback as Wt, normalizePayloadToSystemText as X, setTtsEnabled as Xn, resolveAgentAvatar as Xt, normalizeOptionalText as Y, resolveTtsProviderOrder as Yn, describeFailoverError as Yt, normalizeRequiredName as Z, setTtsProvider as Zn, identityHasValues as Zt, loadCombinedSessionStoreForGateway as _, createInboundDebouncer as _n, formatRemainingShort as _r, formatUsageReportLines as _t, buildChannelSummary as a, buildPairingReply as an, setCommandLaneConcurrency as ar, persistBrowserProxyFiles as at, resolveGatewaySessionStoreTarget as b, resolveEnvelopeFormatOptions as bn, parseVerboseOverride as br, resolveCommitHash as bt, clearSessionQueues as c, buildHistoryContextFromEntries as cn, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as cr, setHeartbeatWakeHandler as ct, createSymiTools as d, dispatchReplyWithBufferedBlockDispatcher as dn, resolveHeartbeatPrompt as dr, createPluginLoaderLogger as dt, buildSafeExternalPrompt as en, OPENAI_TTS_VOICES as er, hasLegacyDeliveryHints as et, resolveAnnounceTargetFromKey as f, provider_dispatcher_exports as fn, stripHeartbeatToken as fr, loadSymiPlugins as ft, listSessionsFromStore as g, createDedupeCache as gn, buildAuthHealthSummary as gr, loadProviderUsageSummary as gt, listAgentsForGateway as h, getTotalPendingReplies as hn, DEFAULT_OAUTH_WARN_MS as hr, parseActivationCommand as ht, resolveCronStyleNow as i, unbindThreadBindingsBySessionKey as in, resetAllLanes as ir, applyBrowserProxyPaths as it, isGatewaySigusr1RestartExternallyAllowed as j, listDescendantRunsForRequester as jn, normalizeMimeList as jr, resolveHeartbeatSenderContext as jt, deferGatewayRestartUntilIdle as k, countActiveRunsForSession as kn, extractFileContentFromSource as kr, resolveAgentOutboundTarget as kt, applyToolPolicyPipeline as l, recordPendingHistoryEntryIfEnabled as ln, DEFAULT_HEARTBEAT_EVERY as lr, resolveHeartbeatReasonKind as lt, classifySessionKey as m, createReplyDispatcher as mn, maskApiKey as mr, normalizeGroupActivation as mt, BARE_SESSION_RESET_PROMPT as n, getHookType as nn, getQueueSize as nr, CHANNEL_TARGETS_DESCRIPTION as nt, buildChannelAccountSnapshot as o, resolveMentionGating as on, waitForActiveTasks as or, sniffMimeFromBase64 as ot, canonicalizeSpawnedByForAgent as p, dispatchInboundMessage as pn, lookupContextTokens as pr, deleteTelegramUpdateOffset as pt, normalizeOptionalAgentId as q, resolveTtsConfig as qn, runCliAgent as qt, appendCronStyleCurrentTimeLine as r, isExternalHookSession as rn, getTotalQueueSize as rr, CHANNEL_TARGET_DESCRIPTION as rt, formatChannelAllowFrom as s, DEFAULT_GROUP_HISTORY_LIMIT as sn, CommandLane as sr, requestHeartbeatNow as st, getReplyFromConfig as t, detectSuspiciousPatterns as tn, getActiveTaskCount as tr, stripLegacyDeliveryFields as tt, buildDefaultToolPolicyPipelineSteps as u, shouldAckReactionForWhatsApp as un, isHeartbeatContentEffectivelyEmpty as ur, getPluginToolMeta as ut, loadSessionEntry as v, resolveInboundDebounceMs as vn, applyModelOverrideToSessionEntry as vr, formatUsageWindowSummary as vt, resolveOutboundSessionRoute as w, isAbortTrigger as wn, peekSystemEvents as wr, computeBackoff as wt, resolveSessionModelRef as x, formatZonedTimestamp as xn, enqueueSystemEvent as xr, handleSlackHttpRequest as xt, pruneLegacyStoreKeys as y, formatInboundEnvelope as yn, applyVerboseOverride as yr, resolveUsageProviderId as yt, readRestartSentinel as z, onAgentEvent as zn, runEmbeddedPiAgent as zt };
73203
+ export { buildDeliveryFromLegacyPayload as $, OPENAI_TTS_MODELS as $n, parseIdentityMarkdown as $t, emitGatewayRestart as A, initSubagentRegistry as An, extractImageContentFromSource as Ar, resolveHeartbeatDeliveryTarget as At, summarizeRestartSentinel as B, registerAgentRunContext as Bn, abortEmbeddedPiRun as Bt, ensureOutboundSessionEntry as C, shouldComputeCommandAuthorized as Cn, peekSystemEventEntries as Cr, requestBodyErrorToText as Ct, CHANNEL_MESSAGE_ACTION_NAMES as D, normalizeMentionText as Dn, DEFAULT_INPUT_MAX_REDIRECTS as Dr, resolveSessionKeyForRequest as Dt, resetDirectoryCache as E, buildMentionRegexes as En, DEFAULT_INPUT_IMAGE_MIMES as Er, agentCommand as Et, setPreRestartDeferralCheck as F, readLatestAssistantReply as Fn, normalizeSendPolicy as Ft, normalizeCronJobPatch as G, resolveTtsApiKey as Gn, getCliSessionId as Gt, writeRestartSentinel as H, getTtsProvider as Hn, waitForEmbeddedPiRunEnd as Ht, consumeRestartSentinel as I, clearAgentRunContext as In, resolveSendPolicy as It, normalizeOptionalSessionKey as J, resolveTtsPrefsPath as Jn, sha256HexPrefix as Jt, inferLegacyName as K, resolveTtsAutoMode as Kn, setCliSessionId as Kt, formatDoctorNonInteractiveHint as L, emitAgentEvent as Ln, createDefaultDeps as Lt, markGatewaySigusr1RestartHandled as M, listSubagentRunsForRequester as Mn, resolveInputFileLimits as Mr, resolveOutboundTarget as Mt, scheduleGatewaySigusr1Restart as N, subagent_registry_exports as Nn, estimateBase64DecodedBytes as Nr, resolveSessionDeliveryTarget as Nt, consumeGatewaySigusr1RestartAuthorization as O, countActiveDescendantRuns as On, DEFAULT_INPUT_TIMEOUT_MS as Or, resolveAgentDeliveryPlan as Ot, setGatewaySigusr1RestartPolicy as P, runSubagentAnnounceFlow as Pn, resolveAgentTimeoutMs as Pr, createOutboundSendDeps as Pt, migrateLegacyCronPayload as Q, textToSpeech as Qn, loadAgentIdentityFromWorkspace as Qt, formatRestartSentinelMessage as R, getAgentRunContext as Rn, createOutboundSendDeps$1 as Rt, runMessageAction as S, hasControlCommand as Sn, isSystemEventContextChanged as Sr, readJsonBodyWithLimit as St, formatTargetDisplay as T, stopSubagentsForRequester as Tn, DEFAULT_INPUT_IMAGE_MAX_BYTES as Tr, sleepWithAbort as Tt, normalizeHttpWebhookUrl as U, isTtsEnabled as Un, resolveModelProfile as Ut, trimLogTail as V, resolveUserTimezone as Vn, getActiveEmbeddedRunCount as Vt, normalizeCronJobCreate as W, isTtsProviderConfigured as Wn, runWithModelFallback as Wt, normalizePayloadToSystemText as X, setTtsEnabled as Xn, resolveAgentAvatar as Xt, normalizeOptionalText as Y, resolveTtsProviderOrder as Yn, describeFailoverError as Yt, normalizeRequiredName as Z, setTtsProvider as Zn, identityHasValues as Zt, loadCombinedSessionStoreForGateway as _, createInboundDebouncer as _n, formatRemainingShort as _r, formatUsageReportLines as _t, buildChannelSummary as a, buildPairingReply as an, setCommandLaneConcurrency as ar, persistBrowserProxyFiles as at, resolveGatewaySessionStoreTarget as b, resolveEnvelopeFormatOptions as bn, parseVerboseOverride as br, resolveCommitHash as bt, clearSessionQueues as c, buildHistoryContextFromEntries as cn, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as cr, setHeartbeatWakeHandler as ct, createSymiTools as d, dispatchReplyWithBufferedBlockDispatcher as dn, resolveHeartbeatPrompt as dr, createPluginLoaderLogger as dt, buildSafeExternalPrompt as en, OPENAI_TTS_VOICES as er, hasLegacyDeliveryHints as et, resolveAnnounceTargetFromKey as f, provider_dispatcher_exports as fn, stripHeartbeatToken as fr, loadSymiPlugins as ft, listSessionsFromStore as g, createDedupeCache as gn, buildAuthHealthSummary as gr, loadProviderUsageSummary as gt, listAgentsForGateway as h, getTotalPendingReplies as hn, DEFAULT_OAUTH_WARN_MS as hr, parseActivationCommand as ht, resolveCronStyleNow as i, unbindThreadBindingsBySessionKey as in, resetAllLanes as ir, applyBrowserProxyPaths as it, isGatewaySigusr1RestartExternallyAllowed as j, listDescendantRunsForRequester as jn, normalizeMimeList as jr, resolveHeartbeatSenderContext as jt, deferGatewayRestartUntilIdle as k, countActiveRunsForSession as kn, extractFileContentFromSource as kr, resolveAgentOutboundTarget as kt, applyToolPolicyPipeline as l, recordPendingHistoryEntryIfEnabled as ln, DEFAULT_HEARTBEAT_EVERY as lr, resolveHeartbeatReasonKind as lt, classifySessionKey as m, createReplyDispatcher as mn, maskApiKey as mr, normalizeGroupActivation as mt, BARE_SESSION_RESET_PROMPT as n, getHookType as nn, getQueueSize as nr, CHANNEL_TARGETS_DESCRIPTION as nt, buildChannelAccountSnapshot as o, resolveMentionGating as on, waitForActiveTasks as or, sniffMimeFromBase64 as ot, canonicalizeSpawnedByForAgent as p, dispatchInboundMessage as pn, lookupContextTokens as pr, deleteTelegramUpdateOffset as pt, normalizeOptionalAgentId as q, resolveTtsConfig as qn, runCliAgent as qt, appendCronStyleCurrentTimeLine as r, isExternalHookSession as rn, getTotalQueueSize as rr, CHANNEL_TARGET_DESCRIPTION as rt, formatChannelAllowFrom as s, DEFAULT_GROUP_HISTORY_LIMIT as sn, CommandLane as sr, requestHeartbeatNow as st, getReplyFromConfig as t, detectSuspiciousPatterns as tn, getActiveTaskCount as tr, stripLegacyDeliveryFields as tt, buildDefaultToolPolicyPipelineSteps as u, shouldAckReactionForWhatsApp as un, isHeartbeatContentEffectivelyEmpty as ur, getPluginToolMeta as ut, loadSessionEntry as v, resolveInboundDebounceMs as vn, applyModelOverrideToSessionEntry as vr, formatUsageWindowSummary as vt, resolveOutboundSessionRoute as w, isAbortTrigger as wn, peekSystemEvents as wr, computeBackoff as wt, resolveSessionModelRef as x, formatZonedTimestamp as xn, enqueueSystemEvent as xr, handleSlackHttpRequest as xt, pruneLegacyStoreKeys as y, formatInboundEnvelope as yn, applyVerboseOverride as yr, resolveUsageProviderId as yt, readRestartSentinel as z, onAgentEvent as zn, runAgentTurn as zt };