@symerian/symi 2.6.39 → 2.6.41

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 (392) hide show
  1. package/dist/{accounts-dRUMQQrB.js → accounts-3dCrO3oZ.js} +1 -1
  2. package/dist/{accounts-D1r2dq1t.js → accounts-BRw8yhIW.js} +21 -21
  3. package/dist/{accounts-wSphH5gv.js → accounts-BuZxOb3B.js} +1 -1
  4. package/dist/{acp-cli-EqE2uipx.js → acp-cli-BLUeUUA5.js} +2 -2
  5. package/dist/{acp-cli-ByYHYK_E.js → acp-cli-CrEIx-c7.js} +2 -2
  6. package/dist/{active-listener-C3pfJhdC.js → active-listener-Br2FcRv7.js} +1 -1
  7. package/dist/{agent-scope-D68_xfTL.js → agent-scope-CpEJ0B88.js} +3 -3
  8. package/dist/{agents-BaNrmXzu.js → agents-B4RNdKQ3.js} +7 -7
  9. package/dist/{agents.config-BOxmN33d.js → agents.config-CA31c0kN.js} +1 -1
  10. package/dist/{agents.config-C78DHdxT.js → agents.config-CG2klYOg.js} +1 -1
  11. package/dist/{audio-preflight-CzQUZSUK.js → audio-preflight-CIiS5cfP.js} +11 -11
  12. package/dist/{audio-preflight-DZ_2w4B5.js → audio-preflight-DD18zIZd.js} +5 -5
  13. package/dist/{audio-preflight-UXg8r6a7.js → audio-preflight-K-s65jbB.js} +29 -29
  14. package/dist/{audio-preflight-BuT_gIRW.js → audio-preflight-XrlQA8IZ.js} +11 -11
  15. package/dist/{audit-Cgd5-Y7W.js → audit-BjI_Yyr5.js} +5 -5
  16. package/dist/{audit-BxqTVyZo.js → audit-DB9YkTVX.js} +5 -5
  17. package/dist/{auth-choice-CnpKK0cS.js → auth-choice-CCGIgXvF.js} +4 -4
  18. package/dist/{auth-choice-BnJzLsv5.js → auth-choice-CiMf3Pjp.js} +4 -4
  19. package/dist/{auth-profiles-CZZjOpX8.js → auth-profiles-q3HjbboY.js} +17 -17
  20. package/dist/{banner-DdpNhjX6.js → banner-BNsB_A87.js} +1 -1
  21. package/dist/{bindings-Bat2RnAR.js → bindings-BsHoBLIE.js} +2 -2
  22. package/dist/{browser-cli-BrzYV9w9.js → browser-cli-Ctn9do4z.js} +3 -3
  23. package/dist/{browser-cli-Dun4KSp2.js → browser-cli-kDUw45Y0.js} +3 -3
  24. package/dist/build-info.json +3 -3
  25. package/dist/bundled/boot-md/handler.js +54 -54
  26. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  27. package/dist/bundled/command-logger/handler.js +1 -1
  28. package/dist/bundled/session-memory/handler.js +54 -54
  29. package/dist/{call-DIDhYlsx.js → call-DKi-hnaF.js} +1 -1
  30. package/dist/{call-CFhGTNtt.js → call-DwpGquzW.js} +1 -1
  31. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  32. package/dist/{channel-activity-Cm1OJRbv.js → channel-activity-D-kw83R0.js} +1 -1
  33. package/dist/{channel-options-CJE7N_QV.js → channel-options-BMQlkUDX.js} +1 -1
  34. package/dist/{channel-options-47wHx-rM.js → channel-options-pAH4A-xX.js} +1 -1
  35. package/dist/{channel-web-CVf8YV4M.js → channel-web-Dwuj48T5.js} +7 -7
  36. package/dist/{channels-cli-CMLy_xVT.js → channels-cli-CuExxB0U.js} +30 -30
  37. package/dist/{channels-cli-Iya7tcnY.js → channels-cli-rmDzxb0W.js} +29 -29
  38. package/dist/{chrome-CXbfCc20.js → chrome-BYOhnxTr.js} +5 -5
  39. package/dist/{chrome-D0sqCqXY.js → chrome-BxwUEWrH.js} +16 -16
  40. package/dist/{chrome-Dq0bSDVx.js → chrome-DAw-AWNi.js} +1 -1
  41. package/dist/{chrome-DtPkPq9T.js → chrome-DU2ZysN3.js} +1 -1
  42. package/dist/{chunk-B9x_1qSr.js → chunk-BHW8Yu5A.js} +1 -1
  43. package/dist/cli/daemon-cli.js +1 -1
  44. package/dist/{cli-dC-CEeDc.js → cli-BPGZalMg.js} +25 -25
  45. package/dist/{cli-DmGUr8aj.js → cli-Mcq2pPI0.js} +26 -26
  46. package/dist/{command-registry-DSV-4T7A.js → command-registry-BoEw2RzH.js} +11 -11
  47. package/dist/{commands-registry-DPf4J7nj.js → commands-registry-BSvi46KZ.js} +4 -4
  48. package/dist/{completion-cli-dlL2VvFw.js → completion-cli-CE9Xqlyx.js} +1 -1
  49. package/dist/{completion-cli-DjQVuJdD.js → completion-cli-CQVZGJPg.js} +2 -2
  50. package/dist/{config-giEDOxub.js → config-B6OxYMgn.js} +21 -13
  51. package/dist/{config-DHBLS1Hl.js → config-BNTB6qj8.js} +9 -1
  52. package/dist/{config-DBqxAhpU.js → config-BUTI-mUZ.js} +9 -1
  53. package/dist/{config-CHwyw6l5.js → config-Dz95lSBW.js} +9 -1
  54. package/dist/{config-cli-Cm4KwczC.js → config-cli-BucNvr-c.js} +2 -2
  55. package/dist/{config-cli-DLFKoU1U.js → config-cli-mU_ckD4l.js} +2 -2
  56. package/dist/{config-guard-CPHvOzsC.js → config-guard-B1skCv1C.js} +2 -2
  57. package/dist/{config-guard--WfHrCVe.js → config-guard-CEkSg4hl.js} +3 -3
  58. package/dist/{config-validation-BITwrsxY.js → config-validation-Cutpn5eO.js} +1 -1
  59. package/dist/{config-validation-BckiR0w9.js → config-validation-HDVDlMSV.js} +1 -1
  60. package/dist/{configure-DNRNOqKI.js → configure-CDOF87Fk.js} +10 -10
  61. package/dist/{configure-BbFd3c68.js → configure-CxnBcN95.js} +10 -10
  62. package/dist/{control-service-Dtn-qw2s.js → control-service-BYKXzY4f.js} +4 -4
  63. package/dist/{control-service-DEVN6FRR.js → control-service-rbSHSlcd.js} +4 -4
  64. package/dist/control-ui/css/style.css +43 -0
  65. package/dist/control-ui/index.html +7 -1
  66. package/dist/control-ui/js/app.js +41 -0
  67. package/dist/control-ui/js/models.js +56 -16
  68. package/dist/{cron-cli-Bml4UNHa.js → cron-cli-DCpsXkrw.js} +3 -3
  69. package/dist/{cron-cli-C-gg6wfO.js → cron-cli-QCTdVZuP.js} +3 -3
  70. package/dist/{daemon-cli-BPHe9wOW.js → daemon-cli-DSDcmWOi.js} +6 -6
  71. package/dist/{daemon-cli-0RLS-CwL.js → daemon-cli-DhJYEAoL.js} +6 -6
  72. package/dist/daemon-cli.js +9 -1
  73. package/dist/{daemon-runtime-CfRwa6qh.js → daemon-runtime-CVFg-ZmT.js} +1 -1
  74. package/dist/{daemon-runtime-COZ4usfy.js → daemon-runtime-mE1b-Q48.js} +1 -1
  75. package/dist/{deliver-DrFtaFZt.js → deliver-B4KZ6-oZ.js} +3 -3
  76. package/dist/{deliver-CXRSdUr1.js → deliver-Bu0iWeja.js} +3 -3
  77. package/dist/{deliver-BY58QnO8.js → deliver-C1HRkzPJ.js} +20 -20
  78. package/dist/{deliver-DepjYu87.js → deliver-DtuY4Wgl.js} +2 -2
  79. package/dist/{devices-cli-CI2TOoP1.js → devices-cli-BNG-fvdl.js} +2 -2
  80. package/dist/{devices-cli-texa_iUV.js → devices-cli-x3jIP4Ih.js} +2 -2
  81. package/dist/{diagnostic-DIKKFHpP.js → diagnostic-CQiU0O8b.js} +1 -1
  82. package/dist/{directory-cli-D6vlxPje.js → directory-cli-BxnSZZsW.js} +1 -1
  83. package/dist/{directory-cli-BRMi7Alb.js → directory-cli-KgsAVTA0.js} +1 -1
  84. package/dist/{dns-cli-BEub5qgQ.js → dns-cli-BuVomfxS.js} +1 -1
  85. package/dist/{dns-cli-BsRMpavf.js → dns-cli-Cwr92Aiq.js} +1 -1
  86. package/dist/{doctor-completion-Z_RXu40-.js → doctor-completion-CHF_TwGQ.js} +1 -1
  87. package/dist/{doctor-completion-Cm7WG43a.js → doctor-completion-CoftKlUX.js} +1 -1
  88. package/dist/{doctor-config-flow-CA3eiKhd.js → doctor-config-flow-DhAYwhNB.js} +2 -2
  89. package/dist/{doctor-config-flow-BTQvpBys.js → doctor-config-flow-iIzSEQxb.js} +2 -2
  90. package/dist/entry.js +1 -1
  91. package/dist/{env-xmBFQPBP.js → env-BDXYbTKj.js} +1 -1
  92. package/dist/{exec-approvals-cli-DxKAWA8Y.js → exec-approvals-cli-BSgxsdMt.js} +4 -4
  93. package/dist/{exec-approvals-cli-wesKZNXl.js → exec-approvals-cli-CmndFjEA.js} +4 -4
  94. package/dist/extensionAPI.js +13 -13
  95. package/dist/{frontmatter-CV0YkjoY.js → frontmatter-CTR5f_Ez.js} +2 -2
  96. package/dist/{gateway-cli-DliBYmLu.js → gateway-cli-G7fiXsQ6.js} +42 -42
  97. package/dist/{gateway-cli-Fnxgv97F.js → gateway-cli-SNaqDM7f.js} +41 -41
  98. package/dist/{gateway-rpc-DiTk_nOl.js → gateway-rpc-5fREQe9Q.js} +1 -1
  99. package/dist/{gateway-rpc-BkB6xEaM.js → gateway-rpc-BMdVa3QV.js} +1 -1
  100. package/dist/{gemini-auth-C39f2zRe.js → gemini-auth-BkLFtndu.js} +1 -1
  101. package/dist/{github-copilot-token-B8B2pmph.js → github-copilot-token-cCYzSU9h.js} +7 -7
  102. package/dist/{glass-ui-ws-CfNTIb_g.js → glass-ui-ws-CF0__vuO.js} +34 -34
  103. package/dist/{glass-ui-ws-B0sH6QQi.js → glass-ui-ws-he25wGFt.js} +33 -33
  104. package/dist/{health-9z0Hpkuc.js → health-en2N_Kqc.js} +5 -5
  105. package/dist/{health-NTpZ8ssG.js → health-q7706M36.js} +5 -5
  106. package/dist/{hooks-cli-C86OGnVu.js → hooks-cli-C4rVaLzZ.js} +26 -26
  107. package/dist/{hooks-cli-wq_uFJly.js → hooks-cli-ChQbBpyb.js} +27 -27
  108. package/dist/{image-BwXkayiM.js → image-BWmcNF8N.js} +2 -2
  109. package/dist/{image-CO4meYzg.js → image-C3wYkWyK.js} +2 -2
  110. package/dist/{image-CKMw_vhe.js → image-CbyTdMd5.js} +4 -4
  111. package/dist/{image-CjuJpc3E.js → image-lp19FlzF.js} +2 -2
  112. package/dist/{image-ops-M5agStZn.js → image-ops-C7CauEK8.js} +16 -16
  113. package/dist/index.js +34 -34
  114. package/dist/{ir-Z9axTYHx.js → ir-JAy_3A3B.js} +4 -4
  115. package/dist/{lifecycle-core-DIBHfMOL.js → lifecycle-core-BZ5sOcHT.js} +2 -2
  116. package/dist/{lifecycle-core-D0n_6gjJ.js → lifecycle-core-C4HzGXA1.js} +2 -2
  117. package/dist/llm-slug-generator.js +54 -54
  118. package/dist/{local-roots-Bh5xx9IO.js → local-roots-Se92wAN5.js} +5 -5
  119. package/dist/{login-CeXFO0OG.js → login-BkbDSDPc.js} +2 -2
  120. package/dist/{login-2w0Q7Btb.js → login-BtBwGFrb.js} +7 -7
  121. package/dist/{login-tFW8qUTU.js → login-CiVdC-o_.js} +2 -2
  122. package/dist/{login-y9uojrfG.js → login-DODfJ3Dn.js} +2 -2
  123. package/dist/{login-qr-CC0TE3ax.js → login-qr-CBRxijIg.js} +2 -2
  124. package/dist/{login-qr-CqPpNO1y.js → login-qr-DPxuLEvD.js} +2 -2
  125. package/dist/{login-qr-BMIn_eOf.js → login-qr-Dbw5m381.js} +2 -2
  126. package/dist/{login-qr-BJMvic1s.js → login-qr-q201Ckfe.js} +12 -12
  127. package/dist/{logs-cli-Dld6m2xN.js → logs-cli-CfGj-dOg.js} +3 -3
  128. package/dist/{logs-cli-Dvs8e7u9.js → logs-cli-DtlrLf7u.js} +3 -3
  129. package/dist/{manager-BoLUtbg2.js → manager-CJ3M1Uxq.js} +22 -22
  130. package/dist/{manifest-registry-0J48biqr.js → manifest-registry-yb7sAlu4.js} +19 -19
  131. package/dist/{markdown-tables-DuRhvVpP.js → markdown-tables-Dnj2LQUc.js} +1 -1
  132. package/dist/{memory-cli-C2SWDd8g.js → memory-cli-Btzr8gfD.js} +1 -1
  133. package/dist/{memory-cli-CPONmMrJ.js → memory-cli-DDumUksr.js} +1 -1
  134. package/dist/{message-channel-DwDSKGn4.js → message-channel-OlFBYAw8.js} +1 -1
  135. package/dist/{model-catalog-r6v4orfa.js → model-catalog-8Son0J4O.js} +2 -2
  136. package/dist/{model-catalog-Bn0ffe1O.js → model-catalog-DNvgFPZn.js} +2 -2
  137. package/dist/{model-picker-TnkH7DsN.js → model-picker-CAm2Bftd.js} +2 -2
  138. package/dist/{model-picker-D1J9kB3d.js → model-picker-Casgrpw3.js} +2 -2
  139. package/dist/{models-DfuMRKvu.js → models-DOTpfa7b.js} +8 -8
  140. package/dist/{models-cli-BJv-aMkH.js → models-cli-CBl45f7R.js} +28 -28
  141. package/dist/{models-cli-FnD3ZD7s.js → models-cli-MJAY_Wg4.js} +29 -29
  142. package/dist/{models-config-CCMpqFyr.js → models-config-Be8DRFkB.js} +1 -1
  143. package/dist/{models-config-qyOXrOli.js → models-config-CFFjJPe7.js} +1 -1
  144. package/dist/{node-cli-C8xs7jkn.js → node-cli-DnfDOh1d.js} +9 -9
  145. package/dist/{node-cli-C4b1vFcY.js → node-cli-eHn9-YfJ.js} +9 -9
  146. package/dist/{nodes-cli-_wKGGKvG.js → nodes-cli-Ci3oxw8k.js} +3 -3
  147. package/dist/{nodes-cli-alQ9Bv_-.js → nodes-cli-Ct4M7JOe.js} +3 -3
  148. package/dist/{onboard-BSlbkbv-.js → onboard-Bx02XPb1.js} +7 -7
  149. package/dist/{onboard-A5dfwOyL.js → onboard-DQdGJ1lE.js} +7 -7
  150. package/dist/{onboard-channels-CEZpwlsw.js → onboard-channels-Bp89ZT6Q.js} +1 -1
  151. package/dist/{onboard-channels-DjqHX51z.js → onboard-channels-Ct2eNYUC.js} +1 -1
  152. package/dist/{onboard-custom-yNOjvlgR.js → onboard-custom-CQOMQkfS.js} +2 -2
  153. package/dist/{onboard-custom-BNyCb71p.js → onboard-custom-XiomtQr7.js} +2 -2
  154. package/dist/{onboard-helpers-DASpwgat.js → onboard-helpers-BBtPmJEe.js} +2 -2
  155. package/dist/{onboard-helpers-CAjcAisT.js → onboard-helpers-DFvWPFhU.js} +2 -2
  156. package/dist/{onboard-remote-D-8pd-tx.js → onboard-remote-BURDxwoE.js} +1 -1
  157. package/dist/{onboard-remote-xXi061GI.js → onboard-remote-D-B4EiOE.js} +1 -1
  158. package/dist/{onboard-skills-Bn2T6lze.js → onboard-skills-BDCzVjxb.js} +1 -1
  159. package/dist/{onboard-skills-c4Rw-CGf.js → onboard-skills-CbzgBT1W.js} +1 -1
  160. package/dist/{onboarding-COqa6a28.js → onboarding-Dnn_0VTy.js} +10 -10
  161. package/dist/{onboarding-BTNiewJj.js → onboarding-DxUcsrKV.js} +10 -10
  162. package/dist/{onboarding.finalize-CAax5IdL.js → onboarding.finalize-1kzzMLFM.js} +33 -33
  163. package/dist/{onboarding.finalize-CDsTN9zD.js → onboarding.finalize-Dwr-jEtL.js} +31 -31
  164. package/dist/{onboarding.gateway-config-D6SN3HBb.js → onboarding.gateway-config-B9zGPfCl.js} +4 -4
  165. package/dist/{onboarding.gateway-config-DOna9Sr4.js → onboarding.gateway-config-DKwJ5bWd.js} +4 -4
  166. package/dist/{outbound-BihTVvMr.js → outbound-BIOChOHt.js} +1 -1
  167. package/dist/{outbound-drXCcH8D.js → outbound-Bt8rj9kO.js} +1 -1
  168. package/dist/{outbound-B_wliV26.js → outbound-DL8bdXlZ.js} +7 -7
  169. package/dist/{outbound-attachment-BOy-OY4-.js → outbound-attachment-BzwVH4Pn.js} +2 -2
  170. package/dist/{outbound-DyBiNY4z.js → outbound-wnv03tb3.js} +1 -1
  171. package/dist/{pairing-cli-CpKm3M-X.js → pairing-cli-DSM82gJG.js} +1 -1
  172. package/dist/{pairing-cli-CQRAnpvm.js → pairing-cli-HDWwcqjZ.js} +1 -1
  173. package/dist/{paths-DEuVuViW.js → paths-CbQV9WEg.js} +1 -1
  174. package/dist/{pi-auth-json-BQcKJvH0.js → pi-auth-json-CCaxCywz.js} +1 -1
  175. package/dist/{pi-embedded-R_JHJFwq.js → pi-embedded-BfEg6Wwb.js} +468 -253
  176. package/dist/{pi-embedded-helpers-BuVSLhG_.js → pi-embedded-helpers-BgdB5kvy.js} +1 -1
  177. package/dist/{pi-embedded-helpers-DE9h5GAu.js → pi-embedded-helpers-DA4liAIZ.js} +1 -1
  178. package/dist/{pi-embedded-helpers-BJrRH97f.js → pi-embedded-helpers-Dij3O6ox.js} +5 -5
  179. package/dist/{pi-embedded-helpers-Cr1X3W9i.js → pi-embedded-helpers-GaCyI2oH.js} +73 -73
  180. package/dist/{pi-tools.policy-C6MWZ59E.js → pi-tools.policy-DRWb_Cax.js} +2 -2
  181. package/dist/{pi-tools.policy-De00gPXt.js → pi-tools.policy-DxNwL7Dl.js} +2 -2
  182. package/dist/{plugin-registry-DeT0nOee.js → plugin-registry-BMFEJ4FA.js} +2 -2
  183. package/dist/{plugin-registry-DMUt9X9t.js → plugin-registry-wAQeBSeD.js} +2 -2
  184. package/dist/plugin-sdk/agents/session-empty-prune.d.ts +37 -0
  185. package/dist/plugin-sdk/agents/session-transcript-repair.d.ts +8 -0
  186. package/dist/plugin-sdk/{audio-preflight-JLsqSVmS.js → audio-preflight-BacDFPyc.js} +5 -5
  187. package/dist/plugin-sdk/{channel-web-BtuQPMkd.js → channel-web-Ba27v-Om.js} +7 -7
  188. package/dist/plugin-sdk/{chrome-cPabhZZ4.js → chrome-BMimuhgP.js} +1 -1
  189. package/dist/plugin-sdk/config/model-profiles.d.ts +10 -0
  190. package/dist/plugin-sdk/config/zod-schema.core.d.ts +8 -0
  191. package/dist/plugin-sdk/config/zod-schema.d.ts +4 -0
  192. package/dist/plugin-sdk/{config-XjK1L039.js → config-DdA6JiyD.js} +9 -1
  193. package/dist/plugin-sdk/{deliver-Clj5uUID.js → deliver-Bxa1-mj5.js} +2 -2
  194. package/dist/plugin-sdk/{image-CAA-0T17.js → image-aq-JAobP.js} +2 -2
  195. package/dist/plugin-sdk/index.js +17 -17
  196. package/dist/plugin-sdk/{login-Btqnuww9.js → login-CHgiUvI_.js} +2 -2
  197. package/dist/plugin-sdk/{login-qr-Bxhch9R1.js → login-qr-D5vJo1fy.js} +2 -2
  198. package/dist/plugin-sdk/{outbound-D_7ktHfW.js → outbound-CD38Hxn9.js} +1 -1
  199. package/dist/plugin-sdk/{pi-embedded-helpers-CDrcAlGW.js → pi-embedded-helpers-BPvzgLtj.js} +5 -5
  200. package/dist/plugin-sdk/{pw-ai-CJjlxWj7.js → pw-ai-fdBOQzz5.js} +2 -2
  201. package/dist/plugin-sdk/{replies-DC9NI2KS.js → replies-CW_-4klO.js} +1 -1
  202. package/dist/plugin-sdk/{reply-CnTdwks6.js → reply-Bok_WQGW.js} +464 -249
  203. package/dist/plugin-sdk/{runner-CBq0_f-j.js → runner-BQJ7x06O.js} +2 -2
  204. package/dist/plugin-sdk/{send-BditKDxK.js → send-C4t6h9-o.js} +1 -1
  205. package/dist/plugin-sdk/{send-u7SJPkmf.js → send-Cz_FQ8Ao.js} +1 -1
  206. package/dist/plugin-sdk/{send-vTA7ntTD.js → send-DG6c7BpZ.js} +1 -1
  207. package/dist/plugin-sdk/{send-CdJoYllr.js → send-HKy51Hz_.js} +1 -1
  208. package/dist/plugin-sdk/{send-BeO7M3pz.js → send-Xy1L54q4.js} +1 -1
  209. package/dist/plugin-sdk/{session-t6hhaLPe.js → session-BUzIlHr9.js} +1 -1
  210. package/dist/plugin-sdk/{web-BkK8fGjJ.js → web-BoOAa0Xn.js} +17 -17
  211. package/dist/plugin-sdk/{whatsapp-actions-DifisvHY.js → whatsapp-actions-CZLagx0h.js} +2 -2
  212. package/dist/{plugins-Bkr5ZdYs.js → plugins-BzmbgY7s.js} +9 -9
  213. package/dist/{plugins-cli-D85G3qZp.js → plugins-cli-B36YKKla.js} +26 -26
  214. package/dist/{plugins-cli-BCYM8B89.js → plugins-cli-DoJbbST7.js} +27 -27
  215. package/dist/{program-C4k7oBuC.js → program-4f7W2RMs.js} +33 -33
  216. package/dist/{program-context-CiGMAzyC.js → program-context-Y4KnAKNT.js} +38 -38
  217. package/dist/{prompt-select-styled-CYiMonwj.js → prompt-select-styled-D0sLJ4TD.js} +14 -14
  218. package/dist/{prompt-select-styled-CoWkFI4l.js → prompt-select-styled-Dql_0SI0.js} +14 -14
  219. package/dist/{provider-auth-helpers-CfkQBpo7.js → provider-auth-helpers-CJbHC_mv.js} +2 -2
  220. package/dist/{provider-auth-helpers-B8RGFZit.js → provider-auth-helpers-GSv3namf.js} +2 -2
  221. package/dist/{push-apns-DmpUv3y4.js → push-apns-giplY7u-.js} +1 -1
  222. package/dist/{push-apns-DM6nj062.js → push-apns-sxB8QxSj.js} +1 -1
  223. package/dist/{pw-ai-CbyO1fbh.js → pw-ai-BCSFVeD5.js} +2 -2
  224. package/dist/{pw-ai-CS2tDZd2.js → pw-ai-BO5cSmwD.js} +2 -2
  225. package/dist/{pw-ai-C_1hRlOM.js → pw-ai-DQohWnzT.js} +2 -2
  226. package/dist/{pw-ai-Ch_WUbQZ.js → pw-ai-pQoxTh-a.js} +11 -11
  227. package/dist/{qmd-manager-8-Z3Cdpt.js → qmd-manager-lBS9mT9w.js} +7 -7
  228. package/dist/{qr-cli-9L-HExyH.js → qr-cli-CejYwqsj.js} +1 -1
  229. package/dist/{qr-cli-mgnfD5ce.js → qr-cli-XttU2KOR.js} +1 -1
  230. package/dist/{register.agent-DX-OyYzL.js → register.agent-_2tVQLMK.js} +34 -34
  231. package/dist/{register.agent-DcvwdQXs.js → register.agent-vd2BSsyE.js} +32 -32
  232. package/dist/{register.configure-DBaELzEM.js → register.configure-BVKwTrz8.js} +37 -37
  233. package/dist/{register.configure-Bldjj3LP.js → register.configure-D-XV6_Nb.js} +36 -36
  234. package/dist/{register.maintenance-DAwf6cHN.js → register.maintenance-BqYR2fop.js} +36 -36
  235. package/dist/{register.maintenance-DVv8ljal.js → register.maintenance-XySU31jf.js} +34 -34
  236. package/dist/{register.message-ClKGIfK4.js → register.message-CCfWNWs3.js} +26 -26
  237. package/dist/{register.message-DUeR-Dz2.js → register.message-DOyREWdG.js} +27 -27
  238. package/dist/{register.onboard-DJEZcUm5.js → register.onboard-Dy_D_uMj.js} +33 -33
  239. package/dist/{register.onboard-DWrxbBr5.js → register.onboard-zmF-euog.js} +32 -32
  240. package/dist/{register.setup-BDqhSgCz.js → register.setup-DiGPa1Fw.js} +32 -32
  241. package/dist/{register.setup-Ah9E7LHA.js → register.setup-cE7gPp2m.js} +33 -33
  242. package/dist/{register.status-health-sessions-CMQS8zwA.js → register.status-health-sessions-DWKL1rkz.js} +29 -29
  243. package/dist/{register.status-health-sessions-BJYemCHi.js → register.status-health-sessions-ksv1WnIs.js} +31 -31
  244. package/dist/{register.subclis-Bb0yWevQ.js → register.subclis-Crt_IYK0.js} +28 -28
  245. package/dist/{registry-UkL38jvt.js → registry-DYq1AYOv.js} +17 -17
  246. package/dist/{replies-vgss3_QA.js → replies-BMqtgBhh.js} +1 -1
  247. package/dist/{replies-DO80zq73.js → replies-Bo49QlAg.js} +1 -1
  248. package/dist/{replies-CbeMv5WZ.js → replies-CBS0567j.js} +3 -3
  249. package/dist/{replies-CM5QgPHM.js → replies-CfyMcfoY.js} +1 -1
  250. package/dist/{reply-YphHjxHp.js → reply-CjYJHt_H.js} +475 -260
  251. package/dist/{reply-prefix-ZnX2V-k9.js → reply-prefix-CvEIl6_d.js} +1 -1
  252. package/dist/{resolve-route-gl0ZOOKR.js → resolve-route-DX7xcMsD.js} +4 -4
  253. package/dist/{retry-D25Z8MVS.js → retry-B-y5suGA.js} +1 -1
  254. package/dist/{routes-B1-BfEDm.js → routes-BAZTZNuQ.js} +3 -3
  255. package/dist/{routes-BFw2-yAN.js → routes-CMvgBDOg.js} +3 -3
  256. package/dist/{rpc-gJOYujMj.js → rpc-Co5PQ3IJ.js} +1 -1
  257. package/dist/{rpc--E7i90bk.js → rpc-D0FiEinj.js} +1 -1
  258. package/dist/{run-main-CZI2Ne08.js → run-main-bOlPbL7t.js} +44 -44
  259. package/dist/{runner-B2Y_5crX.js → runner-B0AbN8wV.js} +22 -22
  260. package/dist/{runner-DKkSu9cc.js → runner-Ct0suQrd.js} +2 -2
  261. package/dist/{runner-DmM2HhB-.js → runner-DRv0uCK_.js} +3 -3
  262. package/dist/{runner-CW9KEL7W.js → runner-Dd2bbNGV.js} +3 -3
  263. package/dist/{sandbox-DAOxwUQm.js → sandbox-B6N8cV4d.js} +5 -5
  264. package/dist/{sandbox-BFzSUT19.js → sandbox-DY75ZyJD.js} +5 -5
  265. package/dist/{sandbox-cli-Cj5__-gh.js → sandbox-cli-BDM_QM_f.js} +6 -6
  266. package/dist/{sandbox-cli-BV6FS0bK.js → sandbox-cli-DwzaNjIJ.js} +6 -6
  267. package/dist/{security-cli-KxA9AZ3q.js → security-cli-CG1uSlRK.js} +9 -9
  268. package/dist/{security-cli-BA4AGkeh.js → security-cli-D5BWzqEJ.js} +9 -9
  269. package/dist/{send-ZI2bG_Jc.js → send-9SapUCg7.js} +1 -1
  270. package/dist/{send-Cutb0ZDY.js → send-B3RdXvjC.js} +1 -1
  271. package/dist/{send-CukP8Vq4.js → send-B7HhiTdx.js} +1 -1
  272. package/dist/{send-DHWMRnPk.js → send-B986asZ7.js} +1 -1
  273. package/dist/{send-iUSZIdml.js → send-B9EinkUl.js} +7 -7
  274. package/dist/{send-CCNIWI2Z.js → send-BNnv8GtF.js} +10 -10
  275. package/dist/{send-CY8oqBFg.js → send-BhJZ16uV.js} +1 -1
  276. package/dist/{send-Cgcbuw8U.js → send-Bm4ULEzh.js} +1 -1
  277. package/dist/{send-CFzf_ab4.js → send-BzKHnf3b.js} +1 -1
  278. package/dist/{send-DTTtmhjA.js → send-CC9V8V81.js} +1 -1
  279. package/dist/{send-CZr1hVHY.js → send-CQVnyJyF.js} +1 -1
  280. package/dist/{send-CPSKimCF.js → send-CZemAajS.js} +6 -6
  281. package/dist/{send-Dy8tsHUE.js → send-DI9Vhnmw.js} +6 -6
  282. package/dist/{send-CB3dCCmE.js → send-DLWaX69q.js} +1 -1
  283. package/dist/{send-DK_pm_7l.js → send-DSnJ503J.js} +1 -1
  284. package/dist/{send-CPF8hSFp.js → send-DVm0du0_.js} +1 -1
  285. package/dist/{send-sgxdFZNy.js → send-DaBsat3L.js} +18 -18
  286. package/dist/{send-iVPD3yf2.js → send-DdLJtOjk.js} +1 -1
  287. package/dist/{send-CR5fRDgW.js → send-DlQtxlG_.js} +1 -1
  288. package/dist/{send-BJTX03Bn.js → send-RfIXG6-I.js} +1 -1
  289. package/dist/{server-context-CHYWo_TC.js → server-context-CCBZN8a0.js} +5 -5
  290. package/dist/{server-context-H24IFajW.js → server-context-DK-T2rBR.js} +5 -5
  291. package/dist/{server-methods-DJ3Bi-Xg.js → server-methods-CiwWwj6K.js} +15 -15
  292. package/dist/{server-methods-C3xXynlm.js → server-methods-VimYvcpY.js} +16 -16
  293. package/dist/{server-node-events-Cgdwex4k.js → server-node-events-CHmLiFNV.js} +27 -27
  294. package/dist/{server-node-events-DS50d7AK.js → server-node-events-DYC45lKC.js} +26 -26
  295. package/dist/{session-Ckw7cXeP.js → session-C1cn-CxQ.js} +1 -1
  296. package/dist/{session-BF9s_N2s.js → session-CUeezgP1.js} +1 -1
  297. package/dist/{session-CINKYYDi.js → session-DsJGtM7g.js} +1 -1
  298. package/dist/{session-utils-Bka9dR4m.js → session-utils-B8Fif925.js} +3 -3
  299. package/dist/{session-BTpKgzso.js → session-v_9AVJhH.js} +8 -8
  300. package/dist/{sessions-CJXnZVjR.js → sessions-Cfa6JEB3.js} +1 -1
  301. package/dist/{sessions-DgYpBvse.js → sessions-Cpgnq0pA.js} +1 -1
  302. package/dist/{sessions-WBoXk-Ag.js → sessions-DfbhRBHR.js} +3 -3
  303. package/dist/{shared-CvNixzwn.js → shared-73T9fyuK.js} +1 -1
  304. package/dist/{shared-D8K9MkWg.js → shared-DdxPzyOH.js} +1 -1
  305. package/dist/{skill-commands-HBkNllDU.js → skill-commands-BiPrghRt.js} +16 -16
  306. package/dist/{skills-CGHRETGF.js → skills-Bs0AW1g3.js} +24 -24
  307. package/dist/{skills-cli-C-URp1av.js → skills-cli-DXkx4vNV.js} +1 -1
  308. package/dist/{skills-cli-CkTGL9dR.js → skills-cli-uEA9KXOO.js} +1 -1
  309. package/dist/{sqlite-JHY-uOmS.js → sqlite-BHWvOATS.js} +16 -16
  310. package/dist/{status-BBnhTX-n.js → status-CA5wJHMj.js} +2 -2
  311. package/dist/{status-0aNBSe72.js → status-DEpM69Pd.js} +9 -9
  312. package/dist/{status-2KD2q2sn.js → status-Dt_MXoNa.js} +2 -2
  313. package/dist/{status-D9uWA9pU.js → status-DxhtJtzE.js} +10 -10
  314. package/dist/{status.update-DbmZz0Aq.js → status.update-C2GN8s9C.js} +1 -1
  315. package/dist/{status.update-DP0OFqyb.js → status.update-CG0ciGaf.js} +1 -1
  316. package/dist/{store-Ea3zM6xK.js → store-01F_JM7O.js} +6 -6
  317. package/dist/{subagent-registry-aZczbtLM.js → subagent-registry-BPwn3Qm7.js} +476 -261
  318. package/dist/{subsystem-DN75fnEF.js → subsystem-BjyjJF-d.js} +1 -1
  319. package/dist/{system-cli-BXewgTZR.js → system-cli-DFZNGx0i.js} +3 -3
  320. package/dist/{system-cli-CECNjZdB.js → system-cli-Z7uzO8qd.js} +3 -3
  321. package/dist/{systemd-hints-sQipWGd1.js → systemd-hints-DT6cDIM2.js} +1 -1
  322. package/dist/{systemd-hints-DZH9qY5W.js → systemd-hints-xYZbFny_.js} +1 -1
  323. package/dist/{tables-Dkg9O8rv.js → tables-BuM4FKR3.js} +1 -1
  324. package/dist/{target-errors-Pr77jao5.js → target-errors-BEugWC4F.js} +2 -2
  325. package/dist/{thinking-C9-JAUzD.js → thinking-BprCy23Z.js} +5 -5
  326. package/dist/{tokens-CCZl4YHT.js → tokens-W0JzCJJM.js} +1 -1
  327. package/dist/{tool-images-B1qVCntj.js → tool-images-SqqWIT22.js} +2 -2
  328. package/dist/{tool-loop-detection-C33wf43N.js → tool-loop-detection-D5mBY7AC.js} +3 -3
  329. package/dist/{tui-DLaU7tTx.js → tui-DjPsMdL6.js} +4 -4
  330. package/dist/{tui-2nWOvxxE.js → tui-DrATGNms.js} +4 -4
  331. package/dist/{tui-cli-B-Nl_8uj.js → tui-cli-D19-MCXt.js} +9 -9
  332. package/dist/{tui-cli-D-PVUsS5.js → tui-cli-pWD_NrUR.js} +9 -9
  333. package/dist/{unified-runner-hulABWDL.js → unified-runner-CVkyzT1I.js} +444 -229
  334. package/dist/{update-cli-DwGmFbPH.js → update-cli-Dh_dfprI.js} +39 -39
  335. package/dist/{update-cli-CnN_k3P1.js → update-cli-Dv4c5Gup.js} +37 -37
  336. package/dist/{update-runner-BkdQhkKR.js → update-runner-CG_kbbGR.js} +1 -1
  337. package/dist/{update-runner-dT5l0kuK.js → update-runner-MMFI1UZ0.js} +1 -1
  338. package/dist/{web-DpQ5RaFz.js → web-BUc-ts5b.js} +58 -58
  339. package/dist/{web-C0ZdaR6w.js → web-CJk-lv93.js} +16 -16
  340. package/dist/{web-CJSRBiDm.js → web-CfVd3Mhp.js} +29 -29
  341. package/dist/{web-DPki9fDa.js → web-DCBOD-Vj.js} +29 -29
  342. package/dist/{webhooks-cli-iOLEyFdx.js → webhooks-cli-BRxe4uCg.js} +1 -1
  343. package/dist/{webhooks-cli-ChiCyIaD.js → webhooks-cli-CsRZl0_H.js} +1 -1
  344. package/dist/{whatsapp-actions-C8nNH4ax.js → whatsapp-actions-7YbV2-Fv.js} +2 -2
  345. package/dist/{whatsapp-actions-BW8P8Izy.js → whatsapp-actions-BylecqEa.js} +2 -2
  346. package/dist/{whatsapp-actions-BmcMtU_J.js → whatsapp-actions-ChO_shrk.js} +2 -2
  347. package/dist/{whatsapp-actions-D_w4AfW9.js → whatsapp-actions-mBarFBeS.js} +23 -23
  348. package/dist/{with-timeout-Di0nddLY.js → with-timeout-Cgi3TwWN.js} +1 -1
  349. package/dist/{with-timeout-D2z7OkiK.js → with-timeout-CtVdu_1U.js} +1 -1
  350. package/dist/{workspace-DqJ5h-ZB.js → workspace-DscDraUb.js} +27 -27
  351. package/extensions/bluebubbles/package.json +1 -1
  352. package/extensions/copilot-proxy/package.json +1 -1
  353. package/extensions/diagnostics-otel/package.json +1 -1
  354. package/extensions/discord/package.json +1 -1
  355. package/extensions/feishu/package.json +1 -1
  356. package/extensions/google-antigravity-auth/package.json +1 -1
  357. package/extensions/google-gemini-cli-auth/package.json +1 -1
  358. package/extensions/googlechat/package.json +1 -1
  359. package/extensions/imessage/package.json +1 -1
  360. package/extensions/irc/package.json +1 -1
  361. package/extensions/learning-loop/package.json +1 -1
  362. package/extensions/line/package.json +1 -1
  363. package/extensions/llm-task/package.json +1 -1
  364. package/extensions/matrix/CHANGELOG.md +12 -0
  365. package/extensions/matrix/package.json +1 -1
  366. package/extensions/mattermost/package.json +1 -1
  367. package/extensions/memory-core/package.json +1 -1
  368. package/extensions/memory-lancedb/package.json +1 -1
  369. package/extensions/minimax-portal-auth/package.json +1 -1
  370. package/extensions/msteams/CHANGELOG.md +12 -0
  371. package/extensions/msteams/package.json +1 -1
  372. package/extensions/nextcloud-talk/package.json +1 -1
  373. package/extensions/nostr/CHANGELOG.md +12 -0
  374. package/extensions/nostr/package.json +1 -1
  375. package/extensions/open-prose/package.json +1 -1
  376. package/extensions/outlook/package.json +1 -1
  377. package/extensions/pipeline/package.json +1 -1
  378. package/extensions/signal/package.json +1 -1
  379. package/extensions/slack/package.json +1 -1
  380. package/extensions/telegram/package.json +1 -1
  381. package/extensions/tlon/package.json +1 -1
  382. package/extensions/twitch/CHANGELOG.md +12 -0
  383. package/extensions/twitch/package.json +1 -1
  384. package/extensions/voice-call/CHANGELOG.md +12 -0
  385. package/extensions/voice-call/package.json +1 -1
  386. package/extensions/whatsapp/package.json +1 -1
  387. package/extensions/zalo/CHANGELOG.md +12 -0
  388. package/extensions/zalo/package.json +1 -1
  389. package/extensions/zalouser/CHANGELOG.md +12 -0
  390. package/extensions/zalouser/package.json +1 -1
  391. package/package.json +1 -1
  392. package/dist/paths-CYmyCDsE.js +0 -212
@@ -12,20 +12,20 @@ import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY
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-71oIavrF.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-CFzf_ab4.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-BJTX03Bn.js";
17
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-DepjYu87.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-BzKHnf3b.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-RfIXG6-I.js";
17
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-DtuY4Wgl.js";
18
18
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-D0xmLpej.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-DHWMRnPk.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-B986asZ7.js";
22
22
  import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.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 mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-BJrRH97f.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-DBqxAhpU.js";
25
+ import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-Dij3O6ox.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-BUTI-mUZ.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-D-mTF1cj.js";
28
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CXbfCc20.js";
28
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BxwUEWrH.js";
29
29
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BNpGMnp-.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,7 +36,7 @@ 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-ChC2CXaN.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-CjuJpc3E.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-lp19FlzF.js";
40
40
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CgLdpXXM.js";
41
41
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
42
42
  import { n as retryAsync } from "./retry-QGp0jvVi.js";
@@ -49,18 +49,18 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.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-DYoNKo_h.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-D8RiKDh0.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.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-DKkSu9cc.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-Ct0suQrd.js";
53
53
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
54
54
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
55
55
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
56
56
  import { n as normalizePollInput } from "./polls-DQcEziPg.js";
57
57
  import { t as convertMarkdownTables } from "./tables-COnZ169v.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-CB3dCCmE.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-iVPD3yf2.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-DLWaX69q.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-DdLJtOjk.js";
60
60
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-We7ViAbg.js";
61
61
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-BloyLEwh.js";
62
62
  import { t as makeProxyFetch } from "./proxy-CLEew2L6.js";
63
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CM5QgPHM.js";
63
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CfyMcfoY.js";
64
64
  import { t as getActiveWebListener } from "./active-listener-Dx_Y1ouV.js";
65
65
  import { createRequire } from "node:module";
66
66
  import * as path$1 from "node:path";
@@ -80,7 +80,7 @@ import { EdgeTTS } from "node-edge-tts";
80
80
  import AjvPkg from "ajv";
81
81
  import { createServer } from "node:http";
82
82
  import { ProxyAgent, fetch as fetch$1 } from "undici";
83
- import WebSocket$1, { WebSocket } from "ws";
83
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
84
  import { Buffer as Buffer$1 } from "node:buffer";
85
85
  import { createJiti } from "jiti";
86
86
  import { Type } from "@sinclair/typebox";
@@ -5720,7 +5720,7 @@ var GatewayClient = class {
5720
5720
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5721
5721
  });
5722
5722
  }
5723
- this.ws = new WebSocket(url, wsOptions);
5723
+ this.ws = new WebSocket$1(url, wsOptions);
5724
5724
  this.ws.on("open", () => {
5725
5725
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5726
5726
  const tlsError = this.validateTlsFingerprint();
@@ -5939,7 +5939,7 @@ var GatewayClient = class {
5939
5939
  return null;
5940
5940
  }
5941
5941
  async request(method, params, opts) {
5942
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5942
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5943
5943
  const id = randomUUID();
5944
5944
  const frame = {
5945
5945
  type: "req",
@@ -7205,7 +7205,7 @@ async function routeReply(params) {
7205
7205
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7206
7206
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7207
7207
  try {
7208
- const { deliverOutboundPayloads } = await import("./deliver-DepjYu87.js").then((n) => n.n);
7208
+ const { deliverOutboundPayloads } = await import("./deliver-DtuY4Wgl.js").then((n) => n.n);
7209
7209
  return {
7210
7210
  ok: true,
7211
7211
  messageId: (await deliverOutboundPayloads({
@@ -39146,13 +39146,97 @@ const BUILTIN_PROFILES = [
39146
39146
  }
39147
39147
  },
39148
39148
  {
39149
- match: ["qwen-cw", "qwen3"],
39150
- label: "Qwen 3.5",
39149
+ match: ["qwen3.6", "spider-qwen36"],
39150
+ label: "Qwen 3.6",
39151
+ params: {
39152
+ temperature: 1,
39153
+ top_p: .95,
39154
+ top_k: 20,
39155
+ max_tokens: 16384,
39156
+ presence_penalty: 1.5,
39157
+ chatTemplateKwargs: { preserve_thinking: true }
39158
+ },
39159
+ streaming: {
39160
+ deltaThrottleMs: 50,
39161
+ flushOnFinal: true,
39162
+ chunkPattern: "burst"
39163
+ },
39164
+ filters: {
39165
+ stripPatterns: [],
39166
+ suppressMonologue: true,
39167
+ hasStructuredThinking: true,
39168
+ validateToolArgs: false
39169
+ },
39170
+ promptAdditions: [
39171
+ "CRITICAL OUTPUT RULES:",
39172
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
39173
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
39174
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
39175
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
39176
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
39177
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
39178
+ ],
39179
+ ui: {
39180
+ badge: "Spider",
39181
+ watchdogMs: 9e5,
39182
+ armWatchdogOnSend: true
39183
+ }
39184
+ },
39185
+ {
39186
+ match: ["trevorjs/gemma", "spider-gemma4"],
39187
+ label: "Gemma 4 (Spider)",
39151
39188
  params: {
39152
39189
  temperature: 1,
39153
39190
  top_p: .95,
39154
39191
  top_k: 64,
39155
- max_tokens: 16384
39192
+ max_tokens: 4096,
39193
+ stop: ["<end_of_turn>", "<eos>"]
39194
+ },
39195
+ streaming: {
39196
+ deltaThrottleMs: 50,
39197
+ flushOnFinal: true,
39198
+ chunkPattern: "burst"
39199
+ },
39200
+ filters: {
39201
+ stripPatterns: [
39202
+ "<\\|channel>\\w*",
39203
+ "<channel\\|>",
39204
+ "<start_of_turn>(?:model|user)?",
39205
+ "<end_of_turn>"
39206
+ ],
39207
+ suppressMonologue: true,
39208
+ hasStructuredThinking: false,
39209
+ validateToolArgs: true
39210
+ },
39211
+ promptAdditions: [
39212
+ "CRITICAL OUTPUT RULES:",
39213
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
39214
+ "- Do not output raw control tokens, channel tags, or turn markers.",
39215
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
39216
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
39217
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
39218
+ "- Send brief progress updates on long tasks so the user knows you are active.",
39219
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
39220
+ ],
39221
+ ui: {
39222
+ badge: "Spider",
39223
+ watchdogMs: 6e5,
39224
+ armWatchdogOnSend: true
39225
+ }
39226
+ },
39227
+ {
39228
+ match: [
39229
+ "qwen-cw",
39230
+ "spider-qwen35",
39231
+ "qwen3"
39232
+ ],
39233
+ label: "Qwen 3.5",
39234
+ params: {
39235
+ temperature: 1,
39236
+ top_p: .95,
39237
+ top_k: 20,
39238
+ max_tokens: 16384,
39239
+ presence_penalty: 1.5
39156
39240
  },
39157
39241
  streaming: {
39158
39242
  deltaThrottleMs: 50,
@@ -39802,6 +39886,10 @@ function createModelAwareStreamFn(opts) {
39802
39886
  if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
39803
39887
  if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
39804
39888
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
39889
+ if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
39890
+ if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
39891
+ const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
39892
+ if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
39805
39893
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
39806
39894
  const isOpenRouter = opts.provider === "openrouter";
39807
39895
  const extraHeaders = {};
@@ -40632,7 +40720,11 @@ function handleMessageUpdate(ctx, evt) {
40632
40720
  emitAgentEvent({
40633
40721
  runId: ctx.params.runId,
40634
40722
  stream: "thinking",
40635
- data: { phase: evtType }
40723
+ data: {
40724
+ phase: evtType,
40725
+ delta: thinkingDelta,
40726
+ content: thinkingContent
40727
+ }
40636
40728
  });
40637
40729
  if (ctx.state.streamReasoning) {
40638
40730
  const partialThinking = extractAssistantThinking(msg);
@@ -42674,6 +42766,338 @@ Use the message tool with buttons:
42674
42766
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
42675
42767
  </plan_mode>`;
42676
42768
 
42769
+ //#endregion
42770
+ //#region src/agents/session-transcript-repair.ts
42771
+ function isToolCallBlock(block) {
42772
+ if (!block || typeof block !== "object") return false;
42773
+ const type = block.type;
42774
+ return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
42775
+ }
42776
+ function hasToolCallInput(block) {
42777
+ const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
42778
+ const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
42779
+ return hasInput || hasArguments;
42780
+ }
42781
+ function hasNonEmptyStringField(value) {
42782
+ return typeof value === "string" && value.trim().length > 0;
42783
+ }
42784
+ function hasToolCallId(block) {
42785
+ return hasNonEmptyStringField(block.id);
42786
+ }
42787
+ function hasToolCallName(block) {
42788
+ return hasNonEmptyStringField(block.name);
42789
+ }
42790
+ function makeMissingToolResult(params) {
42791
+ return {
42792
+ role: "toolResult",
42793
+ toolCallId: params.toolCallId,
42794
+ toolName: params.toolName ?? "unknown",
42795
+ content: [{
42796
+ type: "text",
42797
+ text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
42798
+ }],
42799
+ isError: true,
42800
+ timestamp: Date.now()
42801
+ };
42802
+ }
42803
+ /**
42804
+ * True when an assistant message has no tool calls and only empty/whitespace
42805
+ * text or thinking blocks. This happens when a stream fails before any
42806
+ * content arrives — the blank entry is otherwise persisted and produces
42807
+ * consecutive same-role messages, which strict providers (vLLM) reject with
42808
+ * "role must alternate" errors that poison the session for every future turn.
42809
+ */
42810
+ function isEmptyAssistantMessage(message) {
42811
+ if (!message || typeof message !== "object") return false;
42812
+ const msg = message;
42813
+ if (msg.role !== "assistant") return false;
42814
+ if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
42815
+ for (const block of msg.content) {
42816
+ if (!block || typeof block !== "object") continue;
42817
+ const type = block.type;
42818
+ if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
42819
+ if (type === "text") {
42820
+ const text = block.text;
42821
+ if (typeof text === "string" && text.trim().length > 0) return false;
42822
+ continue;
42823
+ }
42824
+ if (type === "thinking") {
42825
+ const thinking = block.thinking;
42826
+ if (typeof thinking === "string" && thinking.trim().length > 0) return false;
42827
+ continue;
42828
+ }
42829
+ return false;
42830
+ }
42831
+ return true;
42832
+ }
42833
+ function stripToolResultDetails(messages) {
42834
+ let touched = false;
42835
+ const out = [];
42836
+ for (const msg of messages) {
42837
+ if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
42838
+ out.push(msg);
42839
+ continue;
42840
+ }
42841
+ if (!("details" in msg)) {
42842
+ out.push(msg);
42843
+ continue;
42844
+ }
42845
+ const { details: _details, ...rest } = msg;
42846
+ touched = true;
42847
+ out.push(rest);
42848
+ }
42849
+ return touched ? out : messages;
42850
+ }
42851
+ function repairToolCallInputs(messages) {
42852
+ let droppedToolCalls = 0;
42853
+ let droppedAssistantMessages = 0;
42854
+ let changed = false;
42855
+ const out = [];
42856
+ for (const msg of messages) {
42857
+ if (!msg || typeof msg !== "object") {
42858
+ out.push(msg);
42859
+ continue;
42860
+ }
42861
+ if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
42862
+ out.push(msg);
42863
+ continue;
42864
+ }
42865
+ const nextContent = [];
42866
+ let droppedInMessage = 0;
42867
+ for (const block of msg.content) {
42868
+ if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
42869
+ droppedToolCalls += 1;
42870
+ droppedInMessage += 1;
42871
+ changed = true;
42872
+ continue;
42873
+ }
42874
+ nextContent.push(block);
42875
+ }
42876
+ if (droppedInMessage > 0) {
42877
+ if (nextContent.length === 0) {
42878
+ droppedAssistantMessages += 1;
42879
+ changed = true;
42880
+ continue;
42881
+ }
42882
+ out.push({
42883
+ ...msg,
42884
+ content: nextContent
42885
+ });
42886
+ continue;
42887
+ }
42888
+ out.push(msg);
42889
+ }
42890
+ return {
42891
+ messages: changed ? out : messages,
42892
+ droppedToolCalls,
42893
+ droppedAssistantMessages
42894
+ };
42895
+ }
42896
+ function sanitizeToolCallInputs(messages) {
42897
+ return repairToolCallInputs(messages).messages;
42898
+ }
42899
+ function sanitizeToolUseResultPairing(messages) {
42900
+ return repairToolUseResultPairing(messages).messages;
42901
+ }
42902
+ function repairToolUseResultPairing(messages) {
42903
+ const out = [];
42904
+ const added = [];
42905
+ const seenToolResultIds = /* @__PURE__ */ new Set();
42906
+ let droppedDuplicateCount = 0;
42907
+ let droppedOrphanCount = 0;
42908
+ let moved = false;
42909
+ let changed = false;
42910
+ const pushToolResult = (msg) => {
42911
+ const id = extractToolResultId(msg);
42912
+ if (id && seenToolResultIds.has(id)) {
42913
+ droppedDuplicateCount += 1;
42914
+ changed = true;
42915
+ return;
42916
+ }
42917
+ if (id) seenToolResultIds.add(id);
42918
+ out.push(msg);
42919
+ };
42920
+ for (let i = 0; i < messages.length; i += 1) {
42921
+ const msg = messages[i];
42922
+ if (!msg || typeof msg !== "object") {
42923
+ out.push(msg);
42924
+ continue;
42925
+ }
42926
+ const role = msg.role;
42927
+ if (role !== "assistant") {
42928
+ if (role !== "toolResult") out.push(msg);
42929
+ else {
42930
+ droppedOrphanCount += 1;
42931
+ changed = true;
42932
+ }
42933
+ continue;
42934
+ }
42935
+ const assistant = msg;
42936
+ const stopReason = assistant.stopReason;
42937
+ if (stopReason === "error" || stopReason === "aborted") {
42938
+ out.push(msg);
42939
+ continue;
42940
+ }
42941
+ const toolCalls = extractToolCallsFromAssistant(assistant);
42942
+ if (toolCalls.length === 0) {
42943
+ out.push(msg);
42944
+ continue;
42945
+ }
42946
+ const toolCallIds = new Set(toolCalls.map((t) => t.id));
42947
+ const spanResultsById = /* @__PURE__ */ new Map();
42948
+ const remainder = [];
42949
+ let j = i + 1;
42950
+ for (; j < messages.length; j += 1) {
42951
+ const next = messages[j];
42952
+ if (!next || typeof next !== "object") {
42953
+ remainder.push(next);
42954
+ continue;
42955
+ }
42956
+ const nextRole = next.role;
42957
+ if (nextRole === "assistant") break;
42958
+ if (nextRole === "toolResult") {
42959
+ const toolResult = next;
42960
+ const id = extractToolResultId(toolResult);
42961
+ if (id && toolCallIds.has(id)) {
42962
+ if (seenToolResultIds.has(id)) {
42963
+ droppedDuplicateCount += 1;
42964
+ changed = true;
42965
+ continue;
42966
+ }
42967
+ if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
42968
+ continue;
42969
+ }
42970
+ }
42971
+ if (nextRole !== "toolResult") remainder.push(next);
42972
+ else {
42973
+ droppedOrphanCount += 1;
42974
+ changed = true;
42975
+ }
42976
+ }
42977
+ out.push(msg);
42978
+ if (spanResultsById.size > 0 && remainder.length > 0) {
42979
+ moved = true;
42980
+ changed = true;
42981
+ }
42982
+ for (const call of toolCalls) {
42983
+ const existing = spanResultsById.get(call.id);
42984
+ if (existing) pushToolResult(existing);
42985
+ else {
42986
+ const missing = makeMissingToolResult({
42987
+ toolCallId: call.id,
42988
+ toolName: call.name
42989
+ });
42990
+ added.push(missing);
42991
+ changed = true;
42992
+ pushToolResult(missing);
42993
+ }
42994
+ }
42995
+ for (const rem of remainder) {
42996
+ if (!rem || typeof rem !== "object") {
42997
+ out.push(rem);
42998
+ continue;
42999
+ }
43000
+ out.push(rem);
43001
+ }
43002
+ i = j - 1;
43003
+ }
43004
+ const changedOrMoved = changed || moved;
43005
+ return {
43006
+ messages: changedOrMoved ? out : messages,
43007
+ added,
43008
+ droppedDuplicateCount,
43009
+ droppedOrphanCount,
43010
+ moved: changedOrMoved
43011
+ };
43012
+ }
43013
+
43014
+ //#endregion
43015
+ //#region src/agents/session-empty-prune.ts
43016
+ /**
43017
+ * Pre-run prune of empty assistant entries from a session JSONL file.
43018
+ *
43019
+ * When a stream fails before any content arrives, pi-coding-agent persists
43020
+ * an assistant message with an empty content array. If this repeats (e.g. a
43021
+ * misconfigured provider fails on every retry), the session ends up with
43022
+ * hundreds of consecutive empty assistant entries. vLLM and other strict
43023
+ * providers then reject the request with a role-ordering error — once the
43024
+ * session is in that state, every future turn fails until the user runs /new.
43025
+ *
43026
+ * This helper runs before SessionManager opens the file, reads the JSONL
43027
+ * line-by-line, filters out any line whose `message` is an empty-content
43028
+ * assistant, and rewrites the file atomically if anything was dropped. The
43029
+ * in-memory SessionManager state and the on-disk file stay consistent.
43030
+ *
43031
+ * The append guard in {@link ./session-tool-result-guard.ts} prevents new
43032
+ * empty entries from being written; this helper retroactively cleans files
43033
+ * that were poisoned before the guard existed.
43034
+ *
43035
+ * @module
43036
+ */
43037
+ async function readSessionFile(sessionFile) {
43038
+ try {
43039
+ return await fs$1.readFile(sessionFile, "utf-8");
43040
+ } catch {
43041
+ return null;
43042
+ }
43043
+ }
43044
+ async function writeAtomically(sessionFile, text) {
43045
+ const dir = path.dirname(sessionFile);
43046
+ const base = path.basename(sessionFile);
43047
+ const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
43048
+ await fs$1.writeFile(tmp, text, "utf-8");
43049
+ await fs$1.rename(tmp, sessionFile);
43050
+ }
43051
+ /**
43052
+ * Remove empty assistant JSONL entries from the session file.
43053
+ *
43054
+ * Parses each line; lines that don't parse are preserved verbatim so we don't
43055
+ * lose unknown data. Only lines that parse into a `{type:"message", message:
43056
+ * <empty-assistant>}` entry are dropped.
43057
+ */
43058
+ async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
43059
+ const raw = await readSessionFile(sessionFile);
43060
+ if (raw === null || raw.length === 0) return {
43061
+ rewrote: false,
43062
+ pruned: 0,
43063
+ unparsable: 0
43064
+ };
43065
+ const lines = raw.split("\n");
43066
+ const kept = [];
43067
+ let pruned = 0;
43068
+ let unparsable = 0;
43069
+ for (const line of lines) {
43070
+ if (line.length === 0) {
43071
+ kept.push(line);
43072
+ continue;
43073
+ }
43074
+ let parsed = null;
43075
+ try {
43076
+ parsed = JSON.parse(line);
43077
+ } catch {
43078
+ unparsable += 1;
43079
+ kept.push(line);
43080
+ continue;
43081
+ }
43082
+ if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
43083
+ pruned += 1;
43084
+ continue;
43085
+ }
43086
+ kept.push(line);
43087
+ }
43088
+ if (pruned === 0) return {
43089
+ rewrote: false,
43090
+ pruned: 0,
43091
+ unparsable
43092
+ };
43093
+ await writeAtomically(sessionFile, kept.join("\n"));
43094
+ return {
43095
+ rewrote: true,
43096
+ pruned,
43097
+ unparsable
43098
+ };
43099
+ }
43100
+
42677
43101
  //#endregion
42678
43102
  //#region src/agents/session-file-repair.ts
42679
43103
  function isSessionHeader(entry) {
@@ -42947,221 +43371,6 @@ function sessionLikelyHasOversizedToolResults(params) {
42947
43371
  return false;
42948
43372
  }
42949
43373
 
42950
- //#endregion
42951
- //#region src/agents/session-transcript-repair.ts
42952
- function isToolCallBlock(block) {
42953
- if (!block || typeof block !== "object") return false;
42954
- const type = block.type;
42955
- return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
42956
- }
42957
- function hasToolCallInput(block) {
42958
- const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
42959
- const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
42960
- return hasInput || hasArguments;
42961
- }
42962
- function hasNonEmptyStringField(value) {
42963
- return typeof value === "string" && value.trim().length > 0;
42964
- }
42965
- function hasToolCallId(block) {
42966
- return hasNonEmptyStringField(block.id);
42967
- }
42968
- function hasToolCallName(block) {
42969
- return hasNonEmptyStringField(block.name);
42970
- }
42971
- function makeMissingToolResult(params) {
42972
- return {
42973
- role: "toolResult",
42974
- toolCallId: params.toolCallId,
42975
- toolName: params.toolName ?? "unknown",
42976
- content: [{
42977
- type: "text",
42978
- text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
42979
- }],
42980
- isError: true,
42981
- timestamp: Date.now()
42982
- };
42983
- }
42984
- function stripToolResultDetails(messages) {
42985
- let touched = false;
42986
- const out = [];
42987
- for (const msg of messages) {
42988
- if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
42989
- out.push(msg);
42990
- continue;
42991
- }
42992
- if (!("details" in msg)) {
42993
- out.push(msg);
42994
- continue;
42995
- }
42996
- const { details: _details, ...rest } = msg;
42997
- touched = true;
42998
- out.push(rest);
42999
- }
43000
- return touched ? out : messages;
43001
- }
43002
- function repairToolCallInputs(messages) {
43003
- let droppedToolCalls = 0;
43004
- let droppedAssistantMessages = 0;
43005
- let changed = false;
43006
- const out = [];
43007
- for (const msg of messages) {
43008
- if (!msg || typeof msg !== "object") {
43009
- out.push(msg);
43010
- continue;
43011
- }
43012
- if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
43013
- out.push(msg);
43014
- continue;
43015
- }
43016
- const nextContent = [];
43017
- let droppedInMessage = 0;
43018
- for (const block of msg.content) {
43019
- if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
43020
- droppedToolCalls += 1;
43021
- droppedInMessage += 1;
43022
- changed = true;
43023
- continue;
43024
- }
43025
- nextContent.push(block);
43026
- }
43027
- if (droppedInMessage > 0) {
43028
- if (nextContent.length === 0) {
43029
- droppedAssistantMessages += 1;
43030
- changed = true;
43031
- continue;
43032
- }
43033
- out.push({
43034
- ...msg,
43035
- content: nextContent
43036
- });
43037
- continue;
43038
- }
43039
- out.push(msg);
43040
- }
43041
- return {
43042
- messages: changed ? out : messages,
43043
- droppedToolCalls,
43044
- droppedAssistantMessages
43045
- };
43046
- }
43047
- function sanitizeToolCallInputs(messages) {
43048
- return repairToolCallInputs(messages).messages;
43049
- }
43050
- function sanitizeToolUseResultPairing(messages) {
43051
- return repairToolUseResultPairing(messages).messages;
43052
- }
43053
- function repairToolUseResultPairing(messages) {
43054
- const out = [];
43055
- const added = [];
43056
- const seenToolResultIds = /* @__PURE__ */ new Set();
43057
- let droppedDuplicateCount = 0;
43058
- let droppedOrphanCount = 0;
43059
- let moved = false;
43060
- let changed = false;
43061
- const pushToolResult = (msg) => {
43062
- const id = extractToolResultId(msg);
43063
- if (id && seenToolResultIds.has(id)) {
43064
- droppedDuplicateCount += 1;
43065
- changed = true;
43066
- return;
43067
- }
43068
- if (id) seenToolResultIds.add(id);
43069
- out.push(msg);
43070
- };
43071
- for (let i = 0; i < messages.length; i += 1) {
43072
- const msg = messages[i];
43073
- if (!msg || typeof msg !== "object") {
43074
- out.push(msg);
43075
- continue;
43076
- }
43077
- const role = msg.role;
43078
- if (role !== "assistant") {
43079
- if (role !== "toolResult") out.push(msg);
43080
- else {
43081
- droppedOrphanCount += 1;
43082
- changed = true;
43083
- }
43084
- continue;
43085
- }
43086
- const assistant = msg;
43087
- const stopReason = assistant.stopReason;
43088
- if (stopReason === "error" || stopReason === "aborted") {
43089
- out.push(msg);
43090
- continue;
43091
- }
43092
- const toolCalls = extractToolCallsFromAssistant(assistant);
43093
- if (toolCalls.length === 0) {
43094
- out.push(msg);
43095
- continue;
43096
- }
43097
- const toolCallIds = new Set(toolCalls.map((t) => t.id));
43098
- const spanResultsById = /* @__PURE__ */ new Map();
43099
- const remainder = [];
43100
- let j = i + 1;
43101
- for (; j < messages.length; j += 1) {
43102
- const next = messages[j];
43103
- if (!next || typeof next !== "object") {
43104
- remainder.push(next);
43105
- continue;
43106
- }
43107
- const nextRole = next.role;
43108
- if (nextRole === "assistant") break;
43109
- if (nextRole === "toolResult") {
43110
- const toolResult = next;
43111
- const id = extractToolResultId(toolResult);
43112
- if (id && toolCallIds.has(id)) {
43113
- if (seenToolResultIds.has(id)) {
43114
- droppedDuplicateCount += 1;
43115
- changed = true;
43116
- continue;
43117
- }
43118
- if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
43119
- continue;
43120
- }
43121
- }
43122
- if (nextRole !== "toolResult") remainder.push(next);
43123
- else {
43124
- droppedOrphanCount += 1;
43125
- changed = true;
43126
- }
43127
- }
43128
- out.push(msg);
43129
- if (spanResultsById.size > 0 && remainder.length > 0) {
43130
- moved = true;
43131
- changed = true;
43132
- }
43133
- for (const call of toolCalls) {
43134
- const existing = spanResultsById.get(call.id);
43135
- if (existing) pushToolResult(existing);
43136
- else {
43137
- const missing = makeMissingToolResult({
43138
- toolCallId: call.id,
43139
- toolName: call.name
43140
- });
43141
- added.push(missing);
43142
- changed = true;
43143
- pushToolResult(missing);
43144
- }
43145
- }
43146
- for (const rem of remainder) {
43147
- if (!rem || typeof rem !== "object") {
43148
- out.push(rem);
43149
- continue;
43150
- }
43151
- out.push(rem);
43152
- }
43153
- i = j - 1;
43154
- }
43155
- const changedOrMoved = changed || moved;
43156
- return {
43157
- messages: changedOrMoved ? out : messages,
43158
- added,
43159
- droppedDuplicateCount,
43160
- droppedOrphanCount,
43161
- moved: changedOrMoved
43162
- };
43163
- }
43164
-
43165
43374
  //#endregion
43166
43375
  //#region src/agents/session-tool-result-guard.ts
43167
43376
  const GUARD_TRUNCATION_SUFFIX = "\n\n⚠️ [Content truncated during persistence — original exceeded size limit. Use offset/limit parameters or request specific sections for large content.]";
@@ -43242,6 +43451,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
43242
43451
  const guardedAppend = (message) => {
43243
43452
  let nextMessage = message;
43244
43453
  if (message.role === "assistant") {
43454
+ if (isEmptyAssistantMessage(message)) {
43455
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
43456
+ return;
43457
+ }
43245
43458
  const sanitized = sanitizeToolCallInputs([message]);
43246
43459
  if (sanitized.length === 0) {
43247
43460
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -46440,6 +46653,8 @@ async function runEmbeddedAttempt(params) {
46440
46653
  });
46441
46654
  const versionCheck = await handleSessionVersion(params.sessionFile);
46442
46655
  if (versionCheck.archived) log$5.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
46656
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
46657
+ if (pruneReport.rewrote) log$5.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
46443
46658
  await prewarmSessionFile(params.sessionFile);
46444
46659
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
46445
46660
  agentId: sessionAgentId,
@@ -50806,7 +51021,7 @@ async function deliverSessionMaintenanceWarning(params) {
50806
51021
  return;
50807
51022
  }
50808
51023
  try {
50809
- const { deliverOutboundPayloads } = await import("./deliver-DepjYu87.js").then((n) => n.n);
51024
+ const { deliverOutboundPayloads } = await import("./deliver-DtuY4Wgl.js").then((n) => n.n);
50810
51025
  await deliverOutboundPayloads({
50811
51026
  cfg: params.cfg,
50812
51027
  channel,
@@ -54252,7 +54467,7 @@ async function describeStickerImage(params) {
54252
54467
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
54253
54468
  try {
54254
54469
  const buffer = await fs$1.readFile(imagePath);
54255
- const { describeImageWithModel } = await import("./image-CjuJpc3E.js").then((n) => n.n);
54470
+ const { describeImageWithModel } = await import("./image-lp19FlzF.js").then((n) => n.n);
54256
54471
  return (await describeImageWithModel({
54257
54472
  buffer,
54258
54473
  fileName: "sticker.webp",
@@ -54675,7 +54890,7 @@ function createWhatsAppLoginTool() {
54675
54890
  force: Type.Optional(Type.Boolean())
54676
54891
  }),
54677
54892
  execute: async (_toolCallId, args) => {
54678
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BMIn_eOf.js");
54893
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Dbw5m381.js");
54679
54894
  if ((args?.action ?? "start") === "wait") {
54680
54895
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
54681
54896
  return {
@@ -56914,7 +57129,7 @@ async function preflightDiscordMessage(params) {
56914
57129
  let preflightTranscript;
56915
57130
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
56916
57131
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
56917
- const { transcribeFirstAudio } = await import("./audio-preflight-DZ_2w4B5.js");
57132
+ const { transcribeFirstAudio } = await import("./audio-preflight-DD18zIZd.js");
56918
57133
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
56919
57134
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
56920
57135
  ctx: {
@@ -60697,27 +60912,27 @@ function isVoiceChannelType(type) {
60697
60912
  function createDefaultDeps() {
60698
60913
  return {
60699
60914
  sendMessageWhatsApp: async (...args) => {
60700
- const { sendMessageWhatsApp } = await import("./web-C0ZdaR6w.js");
60915
+ const { sendMessageWhatsApp } = await import("./web-CJk-lv93.js");
60701
60916
  return await sendMessageWhatsApp(...args);
60702
60917
  },
60703
60918
  sendMessageTelegram: async (...args) => {
60704
- const { sendMessageTelegram } = await import("./send-DHWMRnPk.js").then((n) => n.l);
60919
+ const { sendMessageTelegram } = await import("./send-B986asZ7.js").then((n) => n.l);
60705
60920
  return await sendMessageTelegram(...args);
60706
60921
  },
60707
60922
  sendMessageDiscord: async (...args) => {
60708
- const { sendMessageDiscord } = await import("./send-BJTX03Bn.js").then((n) => n.t);
60923
+ const { sendMessageDiscord } = await import("./send-RfIXG6-I.js").then((n) => n.t);
60709
60924
  return await sendMessageDiscord(...args);
60710
60925
  },
60711
60926
  sendMessageSlack: async (...args) => {
60712
- const { sendMessageSlack } = await import("./send-CFzf_ab4.js").then((n) => n.n);
60927
+ const { sendMessageSlack } = await import("./send-BzKHnf3b.js").then((n) => n.n);
60713
60928
  return await sendMessageSlack(...args);
60714
60929
  },
60715
60930
  sendMessageSignal: async (...args) => {
60716
- const { sendMessageSignal } = await import("./send-CB3dCCmE.js").then((n) => n.i);
60931
+ const { sendMessageSignal } = await import("./send-DLWaX69q.js").then((n) => n.i);
60717
60932
  return await sendMessageSignal(...args);
60718
60933
  },
60719
60934
  sendMessageIMessage: async (...args) => {
60720
- const { sendMessageIMessage } = await import("./send-iVPD3yf2.js").then((n) => n.n);
60935
+ const { sendMessageIMessage } = await import("./send-DdLJtOjk.js").then((n) => n.n);
60721
60936
  return await sendMessageIMessage(...args);
60722
60937
  }
60723
60938
  };
@@ -63602,7 +63817,7 @@ function createDiscordGatewayPlugin(params) {
63602
63817
  super(options);
63603
63818
  }
63604
63819
  createWebSocket(url) {
63605
- return new WebSocket$1(url, { agent });
63820
+ return new WebSocket(url, { agent });
63606
63821
  }
63607
63822
  }
63608
63823
  return new ProxyGatewayPlugin();
@@ -71547,7 +71762,7 @@ async function registerSlackMonitorSlashCommands(params) {
71547
71762
  });
71548
71763
  const deliverSlashPayloads = async (replies) => {
71549
71764
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
71550
- import("./replies-CM5QgPHM.js").then((n) => n.r),
71765
+ import("./replies-CfyMcfoY.js").then((n) => n.r),
71551
71766
  import("./chunk-DTMTDXwE.js").then((n) => n.s),
71552
71767
  import("./markdown-tables-DawaaZEe.js").then((n) => n.t)
71553
71768
  ]);
@@ -73820,7 +74035,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
73820
74035
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
73821
74036
  let preflightTranscript;
73822
74037
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
73823
- const { transcribeFirstAudio } = await import("./audio-preflight-DZ_2w4B5.js");
74038
+ const { transcribeFirstAudio } = await import("./audio-preflight-DD18zIZd.js");
73824
74039
  preflightTranscript = await transcribeFirstAudio({
73825
74040
  ctx: {
73826
74041
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -75965,23 +76180,23 @@ let webLoginQrPromise = null;
75965
76180
  let webChannelPromise = null;
75966
76181
  let whatsappActionsPromise = null;
75967
76182
  function loadWebOutbound() {
75968
- webOutboundPromise ??= import("./outbound-BihTVvMr.js").then((n) => n.t);
76183
+ webOutboundPromise ??= import("./outbound-BIOChOHt.js").then((n) => n.t);
75969
76184
  return webOutboundPromise;
75970
76185
  }
75971
76186
  function loadWebLogin() {
75972
- webLoginPromise ??= import("./login-CeXFO0OG.js").then((n) => n.n);
76187
+ webLoginPromise ??= import("./login-BkbDSDPc.js").then((n) => n.n);
75973
76188
  return webLoginPromise;
75974
76189
  }
75975
76190
  function loadWebLoginQr() {
75976
- webLoginQrPromise ??= import("./login-qr-BMIn_eOf.js");
76191
+ webLoginQrPromise ??= import("./login-qr-Dbw5m381.js");
75977
76192
  return webLoginQrPromise;
75978
76193
  }
75979
76194
  function loadWebChannel() {
75980
- webChannelPromise ??= import("./web-C0ZdaR6w.js");
76195
+ webChannelPromise ??= import("./web-CJk-lv93.js");
75981
76196
  return webChannelPromise;
75982
76197
  }
75983
76198
  function loadWhatsAppActions() {
75984
- whatsappActionsPromise ??= import("./whatsapp-actions-BW8P8Izy.js");
76199
+ whatsappActionsPromise ??= import("./whatsapp-actions-BylecqEa.js");
75985
76200
  return whatsappActionsPromise;
75986
76201
  }
75987
76202
  function createPluginRuntime() {