@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
@@ -8,8 +8,8 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYu
8
8
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
9
9
  import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
10
10
  import { n as retryAsync } from "./retry-ilSJqnz9.js";
11
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CdJoYllr.js";
12
- import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-XjK1L039.js";
11
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-HKy51Hz_.js";
12
+ import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-DdA6JiyD.js";
13
13
  import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
14
14
  import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
15
15
  import { $ as resolveShellEnvFallbackTimeoutMs, A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_CONTEXT_TOKENS, K as normalizeSecretInput, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as DEFAULT_PROVIDER, Y as DEFAULT_MODEL, Z as getShellPathFromLoginShell, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as resolveAuthProfileDisplayLabel, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-DduIg_Yt.js";
@@ -27,38 +27,38 @@ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel
27
27
  import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
28
28
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
29
29
  import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
30
- 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-BeO7M3pz.js";
30
+ 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-Xy1L54q4.js";
31
31
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
32
32
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
- import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-vTA7ntTD.js";
34
- import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-u7SJPkmf.js";
35
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-CBq0_f-j.js";
33
+ import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-DG6c7BpZ.js";
34
+ import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-Cz_FQ8Ao.js";
35
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BQJ7x06O.js";
36
36
  import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
37
37
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
38
38
  import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-D-rpF3bM.js";
39
39
  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-B1GeRYlu.js";
40
- import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-cPabhZZ4.js";
40
+ import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-BMimuhgP.js";
41
41
  import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
42
42
  import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
43
43
  import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
44
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Clj5uUID.js";
45
- import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-CDrcAlGW.js";
44
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Bxa1-mj5.js";
45
+ import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-BPvzgLtj.js";
46
46
  import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
47
47
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
49
49
  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-EyuCSUXO.js";
50
50
  import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
52
- import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-CAA-0T17.js";
52
+ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-aq-JAobP.js";
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
54
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-Cq_7Cg4E.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
56
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CJXUXj6F.js";
57
57
  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-C9W8UWBh.js";
58
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-BditKDxK.js";
58
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-C4t6h9-o.js";
59
59
  import { t as makeProxyFetch } from "./proxy-MquBDehr.js";
60
60
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-D3JH_D2N.js";
61
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DC9NI2KS.js";
61
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CW_-4klO.js";
62
62
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CcR0OJ6f.js";
63
63
  import { t as getActiveWebListener } from "./active-listener-BRYwA2Ic.js";
64
64
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bug27PHS.js";
@@ -15491,7 +15491,7 @@ async function routeReply(params) {
15491
15491
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
15492
15492
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
15493
15493
  try {
15494
- const { deliverOutboundPayloads } = await import("./deliver-Clj5uUID.js").then((n) => n.n);
15494
+ const { deliverOutboundPayloads } = await import("./deliver-Bxa1-mj5.js").then((n) => n.n);
15495
15495
  return {
15496
15496
  ok: true,
15497
15497
  messageId: (await deliverOutboundPayloads({
@@ -17965,7 +17965,7 @@ async function describeStickerImage(params) {
17965
17965
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
17966
17966
  try {
17967
17967
  const buffer = await fs$1.readFile(imagePath);
17968
- const { describeImageWithModel } = await import("./image-CAA-0T17.js").then((n) => n.n);
17968
+ const { describeImageWithModel } = await import("./image-aq-JAobP.js").then((n) => n.n);
17969
17969
  return (await describeImageWithModel({
17970
17970
  buffer,
17971
17971
  fileName: "sticker.webp",
@@ -18376,7 +18376,7 @@ function createWhatsAppLoginTool() {
18376
18376
  force: Type.Optional(Type.Boolean())
18377
18377
  }),
18378
18378
  execute: async (_toolCallId, args) => {
18379
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Bxhch9R1.js");
18379
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-D5vJo1fy.js");
18380
18380
  if ((args?.action ?? "start") === "wait") {
18381
18381
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
18382
18382
  return {
@@ -20444,7 +20444,7 @@ async function preflightDiscordMessage(params) {
20444
20444
  let preflightTranscript;
20445
20445
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
20446
20446
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
20447
- const { transcribeFirstAudio } = await import("./audio-preflight-JLsqSVmS.js");
20447
+ const { transcribeFirstAudio } = await import("./audio-preflight-BacDFPyc.js");
20448
20448
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
20449
20449
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
20450
20450
  ctx: {
@@ -27236,13 +27236,97 @@ const BUILTIN_PROFILES = [
27236
27236
  }
27237
27237
  },
27238
27238
  {
27239
- match: ["qwen-cw", "qwen3"],
27240
- label: "Qwen 3.5",
27239
+ match: ["qwen3.6", "spider-qwen36"],
27240
+ label: "Qwen 3.6",
27241
+ params: {
27242
+ temperature: 1,
27243
+ top_p: .95,
27244
+ top_k: 20,
27245
+ max_tokens: 16384,
27246
+ presence_penalty: 1.5,
27247
+ chatTemplateKwargs: { preserve_thinking: true }
27248
+ },
27249
+ streaming: {
27250
+ deltaThrottleMs: 50,
27251
+ flushOnFinal: true,
27252
+ chunkPattern: "burst"
27253
+ },
27254
+ filters: {
27255
+ stripPatterns: [],
27256
+ suppressMonologue: true,
27257
+ hasStructuredThinking: true,
27258
+ validateToolArgs: false
27259
+ },
27260
+ promptAdditions: [
27261
+ "CRITICAL OUTPUT RULES:",
27262
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
27263
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27264
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27265
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27266
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
27267
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
27268
+ ],
27269
+ ui: {
27270
+ badge: "Spider",
27271
+ watchdogMs: 9e5,
27272
+ armWatchdogOnSend: true
27273
+ }
27274
+ },
27275
+ {
27276
+ match: ["trevorjs/gemma", "spider-gemma4"],
27277
+ label: "Gemma 4 (Spider)",
27241
27278
  params: {
27242
27279
  temperature: 1,
27243
27280
  top_p: .95,
27244
27281
  top_k: 64,
27245
- max_tokens: 16384
27282
+ max_tokens: 4096,
27283
+ stop: ["<end_of_turn>", "<eos>"]
27284
+ },
27285
+ streaming: {
27286
+ deltaThrottleMs: 50,
27287
+ flushOnFinal: true,
27288
+ chunkPattern: "burst"
27289
+ },
27290
+ filters: {
27291
+ stripPatterns: [
27292
+ "<\\|channel>\\w*",
27293
+ "<channel\\|>",
27294
+ "<start_of_turn>(?:model|user)?",
27295
+ "<end_of_turn>"
27296
+ ],
27297
+ suppressMonologue: true,
27298
+ hasStructuredThinking: false,
27299
+ validateToolArgs: true
27300
+ },
27301
+ promptAdditions: [
27302
+ "CRITICAL OUTPUT RULES:",
27303
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
27304
+ "- Do not output raw control tokens, channel tags, or turn markers.",
27305
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27306
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27307
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27308
+ "- Send brief progress updates on long tasks so the user knows you are active.",
27309
+ "- 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."
27310
+ ],
27311
+ ui: {
27312
+ badge: "Spider",
27313
+ watchdogMs: 6e5,
27314
+ armWatchdogOnSend: true
27315
+ }
27316
+ },
27317
+ {
27318
+ match: [
27319
+ "qwen-cw",
27320
+ "spider-qwen35",
27321
+ "qwen3"
27322
+ ],
27323
+ label: "Qwen 3.5",
27324
+ params: {
27325
+ temperature: 1,
27326
+ top_p: .95,
27327
+ top_k: 20,
27328
+ max_tokens: 16384,
27329
+ presence_penalty: 1.5
27246
27330
  },
27247
27331
  streaming: {
27248
27332
  deltaThrottleMs: 50,
@@ -27948,6 +28032,10 @@ function createModelAwareStreamFn(opts) {
27948
28032
  if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
27949
28033
  if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
27950
28034
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
28035
+ if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
28036
+ if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
28037
+ const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
28038
+ if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
27951
28039
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
27952
28040
  const isOpenRouter = opts.provider === "openrouter";
27953
28041
  const extraHeaders = {};
@@ -28555,7 +28643,11 @@ function handleMessageUpdate(ctx, evt) {
28555
28643
  emitAgentEvent({
28556
28644
  runId: ctx.params.runId,
28557
28645
  stream: "thinking",
28558
- data: { phase: evtType }
28646
+ data: {
28647
+ phase: evtType,
28648
+ delta: thinkingDelta,
28649
+ content: thinkingContent
28650
+ }
28559
28651
  });
28560
28652
  if (ctx.state.streamReasoning) {
28561
28653
  const partialThinking = extractAssistantThinking(msg);
@@ -30610,6 +30702,338 @@ Use the message tool with buttons:
30610
30702
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
30611
30703
  </plan_mode>`;
30612
30704
 
30705
+ //#endregion
30706
+ //#region src/agents/session-transcript-repair.ts
30707
+ function isToolCallBlock(block) {
30708
+ if (!block || typeof block !== "object") return false;
30709
+ const type = block.type;
30710
+ return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
30711
+ }
30712
+ function hasToolCallInput(block) {
30713
+ const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
30714
+ const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
30715
+ return hasInput || hasArguments;
30716
+ }
30717
+ function hasNonEmptyStringField(value) {
30718
+ return typeof value === "string" && value.trim().length > 0;
30719
+ }
30720
+ function hasToolCallId(block) {
30721
+ return hasNonEmptyStringField(block.id);
30722
+ }
30723
+ function hasToolCallName(block) {
30724
+ return hasNonEmptyStringField(block.name);
30725
+ }
30726
+ function makeMissingToolResult(params) {
30727
+ return {
30728
+ role: "toolResult",
30729
+ toolCallId: params.toolCallId,
30730
+ toolName: params.toolName ?? "unknown",
30731
+ content: [{
30732
+ type: "text",
30733
+ text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
30734
+ }],
30735
+ isError: true,
30736
+ timestamp: Date.now()
30737
+ };
30738
+ }
30739
+ /**
30740
+ * True when an assistant message has no tool calls and only empty/whitespace
30741
+ * text or thinking blocks. This happens when a stream fails before any
30742
+ * content arrives — the blank entry is otherwise persisted and produces
30743
+ * consecutive same-role messages, which strict providers (vLLM) reject with
30744
+ * "role must alternate" errors that poison the session for every future turn.
30745
+ */
30746
+ function isEmptyAssistantMessage(message) {
30747
+ if (!message || typeof message !== "object") return false;
30748
+ const msg = message;
30749
+ if (msg.role !== "assistant") return false;
30750
+ if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
30751
+ for (const block of msg.content) {
30752
+ if (!block || typeof block !== "object") continue;
30753
+ const type = block.type;
30754
+ if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
30755
+ if (type === "text") {
30756
+ const text = block.text;
30757
+ if (typeof text === "string" && text.trim().length > 0) return false;
30758
+ continue;
30759
+ }
30760
+ if (type === "thinking") {
30761
+ const thinking = block.thinking;
30762
+ if (typeof thinking === "string" && thinking.trim().length > 0) return false;
30763
+ continue;
30764
+ }
30765
+ return false;
30766
+ }
30767
+ return true;
30768
+ }
30769
+ function stripToolResultDetails(messages) {
30770
+ let touched = false;
30771
+ const out = [];
30772
+ for (const msg of messages) {
30773
+ if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
30774
+ out.push(msg);
30775
+ continue;
30776
+ }
30777
+ if (!("details" in msg)) {
30778
+ out.push(msg);
30779
+ continue;
30780
+ }
30781
+ const { details: _details, ...rest } = msg;
30782
+ touched = true;
30783
+ out.push(rest);
30784
+ }
30785
+ return touched ? out : messages;
30786
+ }
30787
+ function repairToolCallInputs(messages) {
30788
+ let droppedToolCalls = 0;
30789
+ let droppedAssistantMessages = 0;
30790
+ let changed = false;
30791
+ const out = [];
30792
+ for (const msg of messages) {
30793
+ if (!msg || typeof msg !== "object") {
30794
+ out.push(msg);
30795
+ continue;
30796
+ }
30797
+ if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
30798
+ out.push(msg);
30799
+ continue;
30800
+ }
30801
+ const nextContent = [];
30802
+ let droppedInMessage = 0;
30803
+ for (const block of msg.content) {
30804
+ if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
30805
+ droppedToolCalls += 1;
30806
+ droppedInMessage += 1;
30807
+ changed = true;
30808
+ continue;
30809
+ }
30810
+ nextContent.push(block);
30811
+ }
30812
+ if (droppedInMessage > 0) {
30813
+ if (nextContent.length === 0) {
30814
+ droppedAssistantMessages += 1;
30815
+ changed = true;
30816
+ continue;
30817
+ }
30818
+ out.push({
30819
+ ...msg,
30820
+ content: nextContent
30821
+ });
30822
+ continue;
30823
+ }
30824
+ out.push(msg);
30825
+ }
30826
+ return {
30827
+ messages: changed ? out : messages,
30828
+ droppedToolCalls,
30829
+ droppedAssistantMessages
30830
+ };
30831
+ }
30832
+ function sanitizeToolCallInputs(messages) {
30833
+ return repairToolCallInputs(messages).messages;
30834
+ }
30835
+ function sanitizeToolUseResultPairing(messages) {
30836
+ return repairToolUseResultPairing(messages).messages;
30837
+ }
30838
+ function repairToolUseResultPairing(messages) {
30839
+ const out = [];
30840
+ const added = [];
30841
+ const seenToolResultIds = /* @__PURE__ */ new Set();
30842
+ let droppedDuplicateCount = 0;
30843
+ let droppedOrphanCount = 0;
30844
+ let moved = false;
30845
+ let changed = false;
30846
+ const pushToolResult = (msg) => {
30847
+ const id = extractToolResultId(msg);
30848
+ if (id && seenToolResultIds.has(id)) {
30849
+ droppedDuplicateCount += 1;
30850
+ changed = true;
30851
+ return;
30852
+ }
30853
+ if (id) seenToolResultIds.add(id);
30854
+ out.push(msg);
30855
+ };
30856
+ for (let i = 0; i < messages.length; i += 1) {
30857
+ const msg = messages[i];
30858
+ if (!msg || typeof msg !== "object") {
30859
+ out.push(msg);
30860
+ continue;
30861
+ }
30862
+ const role = msg.role;
30863
+ if (role !== "assistant") {
30864
+ if (role !== "toolResult") out.push(msg);
30865
+ else {
30866
+ droppedOrphanCount += 1;
30867
+ changed = true;
30868
+ }
30869
+ continue;
30870
+ }
30871
+ const assistant = msg;
30872
+ const stopReason = assistant.stopReason;
30873
+ if (stopReason === "error" || stopReason === "aborted") {
30874
+ out.push(msg);
30875
+ continue;
30876
+ }
30877
+ const toolCalls = extractToolCallsFromAssistant(assistant);
30878
+ if (toolCalls.length === 0) {
30879
+ out.push(msg);
30880
+ continue;
30881
+ }
30882
+ const toolCallIds = new Set(toolCalls.map((t) => t.id));
30883
+ const spanResultsById = /* @__PURE__ */ new Map();
30884
+ const remainder = [];
30885
+ let j = i + 1;
30886
+ for (; j < messages.length; j += 1) {
30887
+ const next = messages[j];
30888
+ if (!next || typeof next !== "object") {
30889
+ remainder.push(next);
30890
+ continue;
30891
+ }
30892
+ const nextRole = next.role;
30893
+ if (nextRole === "assistant") break;
30894
+ if (nextRole === "toolResult") {
30895
+ const toolResult = next;
30896
+ const id = extractToolResultId(toolResult);
30897
+ if (id && toolCallIds.has(id)) {
30898
+ if (seenToolResultIds.has(id)) {
30899
+ droppedDuplicateCount += 1;
30900
+ changed = true;
30901
+ continue;
30902
+ }
30903
+ if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
30904
+ continue;
30905
+ }
30906
+ }
30907
+ if (nextRole !== "toolResult") remainder.push(next);
30908
+ else {
30909
+ droppedOrphanCount += 1;
30910
+ changed = true;
30911
+ }
30912
+ }
30913
+ out.push(msg);
30914
+ if (spanResultsById.size > 0 && remainder.length > 0) {
30915
+ moved = true;
30916
+ changed = true;
30917
+ }
30918
+ for (const call of toolCalls) {
30919
+ const existing = spanResultsById.get(call.id);
30920
+ if (existing) pushToolResult(existing);
30921
+ else {
30922
+ const missing = makeMissingToolResult({
30923
+ toolCallId: call.id,
30924
+ toolName: call.name
30925
+ });
30926
+ added.push(missing);
30927
+ changed = true;
30928
+ pushToolResult(missing);
30929
+ }
30930
+ }
30931
+ for (const rem of remainder) {
30932
+ if (!rem || typeof rem !== "object") {
30933
+ out.push(rem);
30934
+ continue;
30935
+ }
30936
+ out.push(rem);
30937
+ }
30938
+ i = j - 1;
30939
+ }
30940
+ const changedOrMoved = changed || moved;
30941
+ return {
30942
+ messages: changedOrMoved ? out : messages,
30943
+ added,
30944
+ droppedDuplicateCount,
30945
+ droppedOrphanCount,
30946
+ moved: changedOrMoved
30947
+ };
30948
+ }
30949
+
30950
+ //#endregion
30951
+ //#region src/agents/session-empty-prune.ts
30952
+ /**
30953
+ * Pre-run prune of empty assistant entries from a session JSONL file.
30954
+ *
30955
+ * When a stream fails before any content arrives, pi-coding-agent persists
30956
+ * an assistant message with an empty content array. If this repeats (e.g. a
30957
+ * misconfigured provider fails on every retry), the session ends up with
30958
+ * hundreds of consecutive empty assistant entries. vLLM and other strict
30959
+ * providers then reject the request with a role-ordering error — once the
30960
+ * session is in that state, every future turn fails until the user runs /new.
30961
+ *
30962
+ * This helper runs before SessionManager opens the file, reads the JSONL
30963
+ * line-by-line, filters out any line whose `message` is an empty-content
30964
+ * assistant, and rewrites the file atomically if anything was dropped. The
30965
+ * in-memory SessionManager state and the on-disk file stay consistent.
30966
+ *
30967
+ * The append guard in {@link ./session-tool-result-guard.ts} prevents new
30968
+ * empty entries from being written; this helper retroactively cleans files
30969
+ * that were poisoned before the guard existed.
30970
+ *
30971
+ * @module
30972
+ */
30973
+ async function readSessionFile(sessionFile) {
30974
+ try {
30975
+ return await fs$1.readFile(sessionFile, "utf-8");
30976
+ } catch {
30977
+ return null;
30978
+ }
30979
+ }
30980
+ async function writeAtomically(sessionFile, text) {
30981
+ const dir = path.dirname(sessionFile);
30982
+ const base = path.basename(sessionFile);
30983
+ const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
30984
+ await fs$1.writeFile(tmp, text, "utf-8");
30985
+ await fs$1.rename(tmp, sessionFile);
30986
+ }
30987
+ /**
30988
+ * Remove empty assistant JSONL entries from the session file.
30989
+ *
30990
+ * Parses each line; lines that don't parse are preserved verbatim so we don't
30991
+ * lose unknown data. Only lines that parse into a `{type:"message", message:
30992
+ * <empty-assistant>}` entry are dropped.
30993
+ */
30994
+ async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
30995
+ const raw = await readSessionFile(sessionFile);
30996
+ if (raw === null || raw.length === 0) return {
30997
+ rewrote: false,
30998
+ pruned: 0,
30999
+ unparsable: 0
31000
+ };
31001
+ const lines = raw.split("\n");
31002
+ const kept = [];
31003
+ let pruned = 0;
31004
+ let unparsable = 0;
31005
+ for (const line of lines) {
31006
+ if (line.length === 0) {
31007
+ kept.push(line);
31008
+ continue;
31009
+ }
31010
+ let parsed = null;
31011
+ try {
31012
+ parsed = JSON.parse(line);
31013
+ } catch {
31014
+ unparsable += 1;
31015
+ kept.push(line);
31016
+ continue;
31017
+ }
31018
+ if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
31019
+ pruned += 1;
31020
+ continue;
31021
+ }
31022
+ kept.push(line);
31023
+ }
31024
+ if (pruned === 0) return {
31025
+ rewrote: false,
31026
+ pruned: 0,
31027
+ unparsable
31028
+ };
31029
+ await writeAtomically(sessionFile, kept.join("\n"));
31030
+ return {
31031
+ rewrote: true,
31032
+ pruned,
31033
+ unparsable
31034
+ };
31035
+ }
31036
+
30613
31037
  //#endregion
30614
31038
  //#region src/agents/session-file-repair.ts
30615
31039
  function isSessionHeader(entry) {
@@ -30883,221 +31307,6 @@ function sessionLikelyHasOversizedToolResults(params) {
30883
31307
  return false;
30884
31308
  }
30885
31309
 
30886
- //#endregion
30887
- //#region src/agents/session-transcript-repair.ts
30888
- function isToolCallBlock(block) {
30889
- if (!block || typeof block !== "object") return false;
30890
- const type = block.type;
30891
- return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
30892
- }
30893
- function hasToolCallInput(block) {
30894
- const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
30895
- const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
30896
- return hasInput || hasArguments;
30897
- }
30898
- function hasNonEmptyStringField(value) {
30899
- return typeof value === "string" && value.trim().length > 0;
30900
- }
30901
- function hasToolCallId(block) {
30902
- return hasNonEmptyStringField(block.id);
30903
- }
30904
- function hasToolCallName(block) {
30905
- return hasNonEmptyStringField(block.name);
30906
- }
30907
- function makeMissingToolResult(params) {
30908
- return {
30909
- role: "toolResult",
30910
- toolCallId: params.toolCallId,
30911
- toolName: params.toolName ?? "unknown",
30912
- content: [{
30913
- type: "text",
30914
- text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
30915
- }],
30916
- isError: true,
30917
- timestamp: Date.now()
30918
- };
30919
- }
30920
- function stripToolResultDetails(messages) {
30921
- let touched = false;
30922
- const out = [];
30923
- for (const msg of messages) {
30924
- if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
30925
- out.push(msg);
30926
- continue;
30927
- }
30928
- if (!("details" in msg)) {
30929
- out.push(msg);
30930
- continue;
30931
- }
30932
- const { details: _details, ...rest } = msg;
30933
- touched = true;
30934
- out.push(rest);
30935
- }
30936
- return touched ? out : messages;
30937
- }
30938
- function repairToolCallInputs(messages) {
30939
- let droppedToolCalls = 0;
30940
- let droppedAssistantMessages = 0;
30941
- let changed = false;
30942
- const out = [];
30943
- for (const msg of messages) {
30944
- if (!msg || typeof msg !== "object") {
30945
- out.push(msg);
30946
- continue;
30947
- }
30948
- if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
30949
- out.push(msg);
30950
- continue;
30951
- }
30952
- const nextContent = [];
30953
- let droppedInMessage = 0;
30954
- for (const block of msg.content) {
30955
- if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
30956
- droppedToolCalls += 1;
30957
- droppedInMessage += 1;
30958
- changed = true;
30959
- continue;
30960
- }
30961
- nextContent.push(block);
30962
- }
30963
- if (droppedInMessage > 0) {
30964
- if (nextContent.length === 0) {
30965
- droppedAssistantMessages += 1;
30966
- changed = true;
30967
- continue;
30968
- }
30969
- out.push({
30970
- ...msg,
30971
- content: nextContent
30972
- });
30973
- continue;
30974
- }
30975
- out.push(msg);
30976
- }
30977
- return {
30978
- messages: changed ? out : messages,
30979
- droppedToolCalls,
30980
- droppedAssistantMessages
30981
- };
30982
- }
30983
- function sanitizeToolCallInputs(messages) {
30984
- return repairToolCallInputs(messages).messages;
30985
- }
30986
- function sanitizeToolUseResultPairing(messages) {
30987
- return repairToolUseResultPairing(messages).messages;
30988
- }
30989
- function repairToolUseResultPairing(messages) {
30990
- const out = [];
30991
- const added = [];
30992
- const seenToolResultIds = /* @__PURE__ */ new Set();
30993
- let droppedDuplicateCount = 0;
30994
- let droppedOrphanCount = 0;
30995
- let moved = false;
30996
- let changed = false;
30997
- const pushToolResult = (msg) => {
30998
- const id = extractToolResultId(msg);
30999
- if (id && seenToolResultIds.has(id)) {
31000
- droppedDuplicateCount += 1;
31001
- changed = true;
31002
- return;
31003
- }
31004
- if (id) seenToolResultIds.add(id);
31005
- out.push(msg);
31006
- };
31007
- for (let i = 0; i < messages.length; i += 1) {
31008
- const msg = messages[i];
31009
- if (!msg || typeof msg !== "object") {
31010
- out.push(msg);
31011
- continue;
31012
- }
31013
- const role = msg.role;
31014
- if (role !== "assistant") {
31015
- if (role !== "toolResult") out.push(msg);
31016
- else {
31017
- droppedOrphanCount += 1;
31018
- changed = true;
31019
- }
31020
- continue;
31021
- }
31022
- const assistant = msg;
31023
- const stopReason = assistant.stopReason;
31024
- if (stopReason === "error" || stopReason === "aborted") {
31025
- out.push(msg);
31026
- continue;
31027
- }
31028
- const toolCalls = extractToolCallsFromAssistant(assistant);
31029
- if (toolCalls.length === 0) {
31030
- out.push(msg);
31031
- continue;
31032
- }
31033
- const toolCallIds = new Set(toolCalls.map((t) => t.id));
31034
- const spanResultsById = /* @__PURE__ */ new Map();
31035
- const remainder = [];
31036
- let j = i + 1;
31037
- for (; j < messages.length; j += 1) {
31038
- const next = messages[j];
31039
- if (!next || typeof next !== "object") {
31040
- remainder.push(next);
31041
- continue;
31042
- }
31043
- const nextRole = next.role;
31044
- if (nextRole === "assistant") break;
31045
- if (nextRole === "toolResult") {
31046
- const toolResult = next;
31047
- const id = extractToolResultId(toolResult);
31048
- if (id && toolCallIds.has(id)) {
31049
- if (seenToolResultIds.has(id)) {
31050
- droppedDuplicateCount += 1;
31051
- changed = true;
31052
- continue;
31053
- }
31054
- if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
31055
- continue;
31056
- }
31057
- }
31058
- if (nextRole !== "toolResult") remainder.push(next);
31059
- else {
31060
- droppedOrphanCount += 1;
31061
- changed = true;
31062
- }
31063
- }
31064
- out.push(msg);
31065
- if (spanResultsById.size > 0 && remainder.length > 0) {
31066
- moved = true;
31067
- changed = true;
31068
- }
31069
- for (const call of toolCalls) {
31070
- const existing = spanResultsById.get(call.id);
31071
- if (existing) pushToolResult(existing);
31072
- else {
31073
- const missing = makeMissingToolResult({
31074
- toolCallId: call.id,
31075
- toolName: call.name
31076
- });
31077
- added.push(missing);
31078
- changed = true;
31079
- pushToolResult(missing);
31080
- }
31081
- }
31082
- for (const rem of remainder) {
31083
- if (!rem || typeof rem !== "object") {
31084
- out.push(rem);
31085
- continue;
31086
- }
31087
- out.push(rem);
31088
- }
31089
- i = j - 1;
31090
- }
31091
- const changedOrMoved = changed || moved;
31092
- return {
31093
- messages: changedOrMoved ? out : messages,
31094
- added,
31095
- droppedDuplicateCount,
31096
- droppedOrphanCount,
31097
- moved: changedOrMoved
31098
- };
31099
- }
31100
-
31101
31310
  //#endregion
31102
31311
  //#region src/agents/session-tool-result-guard.ts
31103
31312
  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.]";
@@ -31178,6 +31387,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
31178
31387
  const guardedAppend = (message) => {
31179
31388
  let nextMessage = message;
31180
31389
  if (message.role === "assistant") {
31390
+ if (isEmptyAssistantMessage(message)) {
31391
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
31392
+ return;
31393
+ }
31181
31394
  const sanitized = sanitizeToolCallInputs([message]);
31182
31395
  if (sanitized.length === 0) {
31183
31396
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -34506,6 +34719,8 @@ async function runEmbeddedAttempt(params) {
34506
34719
  });
34507
34720
  const versionCheck = await handleSessionVersion(params.sessionFile);
34508
34721
  if (versionCheck.archived) log$7.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
34722
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
34723
+ if (pruneReport.rewrote) log$7.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
34509
34724
  await prewarmSessionFile(params.sessionFile);
34510
34725
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
34511
34726
  agentId: sessionAgentId,
@@ -36292,27 +36507,27 @@ async function runAgentTurn(params) {
36292
36507
  function createDefaultDeps() {
36293
36508
  return {
36294
36509
  sendMessageWhatsApp: async (...args) => {
36295
- const { sendMessageWhatsApp } = await import("./web-BkK8fGjJ.js");
36510
+ const { sendMessageWhatsApp } = await import("./web-BoOAa0Xn.js");
36296
36511
  return await sendMessageWhatsApp(...args);
36297
36512
  },
36298
36513
  sendMessageTelegram: async (...args) => {
36299
- const { sendMessageTelegram } = await import("./send-u7SJPkmf.js").then((n) => n.l);
36514
+ const { sendMessageTelegram } = await import("./send-Cz_FQ8Ao.js").then((n) => n.l);
36300
36515
  return await sendMessageTelegram(...args);
36301
36516
  },
36302
36517
  sendMessageDiscord: async (...args) => {
36303
- const { sendMessageDiscord } = await import("./send-CdJoYllr.js").then((n) => n.t);
36518
+ const { sendMessageDiscord } = await import("./send-HKy51Hz_.js").then((n) => n.t);
36304
36519
  return await sendMessageDiscord(...args);
36305
36520
  },
36306
36521
  sendMessageSlack: async (...args) => {
36307
- const { sendMessageSlack } = await import("./send-vTA7ntTD.js").then((n) => n.n);
36522
+ const { sendMessageSlack } = await import("./send-DG6c7BpZ.js").then((n) => n.n);
36308
36523
  return await sendMessageSlack(...args);
36309
36524
  },
36310
36525
  sendMessageSignal: async (...args) => {
36311
- const { sendMessageSignal } = await import("./send-BditKDxK.js").then((n) => n.i);
36526
+ const { sendMessageSignal } = await import("./send-C4t6h9-o.js").then((n) => n.i);
36312
36527
  return await sendMessageSignal(...args);
36313
36528
  },
36314
36529
  sendMessageIMessage: async (...args) => {
36315
- const { sendMessageIMessage } = await import("./send-BeO7M3pz.js").then((n) => n.n);
36530
+ const { sendMessageIMessage } = await import("./send-Xy1L54q4.js").then((n) => n.n);
36316
36531
  return await sendMessageIMessage(...args);
36317
36532
  }
36318
36533
  };
@@ -46867,7 +47082,7 @@ async function registerSlackMonitorSlashCommands(params) {
46867
47082
  });
46868
47083
  const deliverSlashPayloads = async (replies) => {
46869
47084
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
46870
- import("./replies-DC9NI2KS.js").then((n) => n.r),
47085
+ import("./replies-CW_-4klO.js").then((n) => n.r),
46871
47086
  import("./chunk-jvk9axTQ.js").then((n) => n.s),
46872
47087
  import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
46873
47088
  ]);
@@ -51573,7 +51788,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
51573
51788
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
51574
51789
  let preflightTranscript;
51575
51790
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
51576
- const { transcribeFirstAudio } = await import("./audio-preflight-JLsqSVmS.js");
51791
+ const { transcribeFirstAudio } = await import("./audio-preflight-BacDFPyc.js");
51577
51792
  preflightTranscript = await transcribeFirstAudio({
51578
51793
  ctx: {
51579
51794
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -53718,23 +53933,23 @@ let webLoginQrPromise = null;
53718
53933
  let webChannelPromise = null;
53719
53934
  let whatsappActionsPromise = null;
53720
53935
  function loadWebOutbound() {
53721
- webOutboundPromise ??= import("./outbound-D_7ktHfW.js").then((n) => n.t);
53936
+ webOutboundPromise ??= import("./outbound-CD38Hxn9.js").then((n) => n.t);
53722
53937
  return webOutboundPromise;
53723
53938
  }
53724
53939
  function loadWebLogin() {
53725
- webLoginPromise ??= import("./login-Btqnuww9.js").then((n) => n.n);
53940
+ webLoginPromise ??= import("./login-CHgiUvI_.js").then((n) => n.n);
53726
53941
  return webLoginPromise;
53727
53942
  }
53728
53943
  function loadWebLoginQr() {
53729
- webLoginQrPromise ??= import("./login-qr-Bxhch9R1.js");
53944
+ webLoginQrPromise ??= import("./login-qr-D5vJo1fy.js");
53730
53945
  return webLoginQrPromise;
53731
53946
  }
53732
53947
  function loadWebChannel() {
53733
- webChannelPromise ??= import("./web-BkK8fGjJ.js");
53948
+ webChannelPromise ??= import("./web-BoOAa0Xn.js");
53734
53949
  return webChannelPromise;
53735
53950
  }
53736
53951
  function loadWhatsAppActions() {
53737
- whatsappActionsPromise ??= import("./whatsapp-actions-DifisvHY.js");
53952
+ whatsappActionsPromise ??= import("./whatsapp-actions-CZLagx0h.js");
53738
53953
  return whatsappActionsPromise;
53739
53954
  }
53740
53955
  function createPluginRuntime() {
@@ -78179,7 +78394,7 @@ async function deliverSessionMaintenanceWarning(params) {
78179
78394
  return;
78180
78395
  }
78181
78396
  try {
78182
- const { deliverOutboundPayloads } = await import("./deliver-Clj5uUID.js").then((n) => n.n);
78397
+ const { deliverOutboundPayloads } = await import("./deliver-Bxa1-mj5.js").then((n) => n.n);
78183
78398
  await deliverOutboundPayloads({
78184
78399
  cfg: params.cfg,
78185
78400
  channel,