@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
@@ -14,34 +14,34 @@ import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
15
15
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
17
- import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-CZr1hVHY.js";
18
- import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CHwyw6l5.js";
17
+ import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-CQVnyJyF.js";
18
+ import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-Dz95lSBW.js";
19
19
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-C4BxOMWX.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-DmM2HhB-.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-BwXkayiM.js";
26
- import { t as ensureSymiModelsJson } from "./models-config-qyOXrOli.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-DRv0uCK_.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-BWmcNF8N.js";
26
+ import { t as ensureSymiModelsJson } from "./models-config-CFFjJPe7.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-BuVSLhG_.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DAOxwUQm.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DtPkPq9T.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CHYWo_TC.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-BgdB5kvy.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-B6N8cV4d.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DU2ZysN3.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CCBZN8a0.js";
32
32
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-6jdJQ5ZL.js";
33
33
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
34
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
36
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
37
37
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-DgYpBvse.js";
38
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-Cpgnq0pA.js";
39
39
  import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
40
  import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
41
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
42
42
  import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
43
43
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
44
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CPF8hSFp.js";
44
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-DVm0du0_.js";
45
45
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
46
46
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
47
47
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
@@ -51,16 +51,16 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
52
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
53
  import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-r6v4orfa.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-8Son0J4O.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-D2z7OkiK.js";
57
- 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-DrFtaFZt.js";
56
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-CtVdu_1U.js";
57
+ 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-B4KZ6-oZ.js";
58
58
  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-CH0skkp6.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
- import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-Cutb0ZDY.js";
60
+ import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-B3RdXvjC.js";
61
61
  import { a as buildModelAliasLines, n as resolveModel } from "./model-tWhwnFf8.js";
62
62
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
63
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-CPONmMrJ.js";
63
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-DDumUksr.js";
64
64
  import { i as resolveMemorySearchConfig } from "./manager-D4LJSRyZ.js";
65
65
  import { n as retryAsync } from "./retry-BoS4e4X_.js";
66
66
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-7AvoVa10.js";
@@ -70,23 +70,23 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
70
70
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
71
71
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BT0-zzs3.js";
72
72
  import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-jI1oE0_k.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-CFhGTNtt.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DwpGquzW.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
75
75
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
77
77
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DTNGXEzX.js";
78
78
  import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
79
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-Cgcbuw8U.js";
79
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-Bm4ULEzh.js";
80
80
  import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-CK726Dzq.js";
81
81
  import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
82
82
  import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-D0B0Uo-I.js";
83
83
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BMoTaVAH.js";
84
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-vgss3_QA.js";
84
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BMqtgBhh.js";
85
85
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
86
86
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-zHckislA.js";
87
87
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BXAI7CNH.js";
88
- import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-ZI2bG_Jc.js";
89
- import { r as detectBinary } from "./onboard-helpers-CAjcAisT.js";
88
+ import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-9SapUCg7.js";
89
+ import { r as detectBinary } from "./onboard-helpers-DFvWPFhU.js";
90
90
  import { t as resolvePairingIdLabel } from "./pairing-labels-DyXoD1DS.js";
91
91
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BgUx3Bm4.js";
92
92
  import { t as getActiveWebListener } from "./active-listener-SKkHHqlN.js";
@@ -94,8 +94,8 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
94
94
  import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-8Bq7DiSa.js";
95
95
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CdUiymRU.js";
96
96
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CaTOIqVn.js";
97
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-C6MWZ59E.js";
98
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Dtn-qw2s.js";
97
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-DRWb_Cax.js";
98
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BYKXzY4f.js";
99
99
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CvFURHzt.js";
100
100
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CafH8-8D.js";
101
101
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-V2xDgw16.js";
@@ -10416,7 +10416,7 @@ async function routeReply(params) {
10416
10416
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10417
10417
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10418
10418
  try {
10419
- const { deliverOutboundPayloads } = await import("./deliver-DrFtaFZt.js").then((n) => n.n);
10419
+ const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
10420
10420
  return {
10421
10421
  ok: true,
10422
10422
  messageId: (await deliverOutboundPayloads({
@@ -12966,7 +12966,7 @@ async function describeStickerImage(params) {
12966
12966
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12967
12967
  try {
12968
12968
  const buffer = await fs$1.readFile(imagePath);
12969
- const { describeImageWithModel } = await import("./image-BwXkayiM.js").then((n) => n.n);
12969
+ const { describeImageWithModel } = await import("./image-BWmcNF8N.js").then((n) => n.n);
12970
12970
  return (await describeImageWithModel({
12971
12971
  buffer,
12972
12972
  fileName: "sticker.webp",
@@ -13389,7 +13389,7 @@ function createWhatsAppLoginTool() {
13389
13389
  force: Type.Optional(Type.Boolean())
13390
13390
  }),
13391
13391
  execute: async (_toolCallId, args) => {
13392
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CC0TE3ax.js");
13392
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CBRxijIg.js");
13393
13393
  if ((args?.action ?? "start") === "wait") {
13394
13394
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
13395
13395
  return {
@@ -15605,7 +15605,7 @@ async function preflightDiscordMessage(params) {
15605
15605
  let preflightTranscript;
15606
15606
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15607
15607
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15608
- const { transcribeFirstAudio } = await import("./audio-preflight-CzQUZSUK.js");
15608
+ const { transcribeFirstAudio } = await import("./audio-preflight-CIiS5cfP.js");
15609
15609
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15610
15610
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15611
15611
  ctx: {
@@ -22486,13 +22486,97 @@ const BUILTIN_PROFILES = [
22486
22486
  }
22487
22487
  },
22488
22488
  {
22489
- match: ["qwen-cw", "qwen3"],
22490
- label: "Qwen 3.5",
22489
+ match: ["qwen3.6", "spider-qwen36"],
22490
+ label: "Qwen 3.6",
22491
+ params: {
22492
+ temperature: 1,
22493
+ top_p: .95,
22494
+ top_k: 20,
22495
+ max_tokens: 16384,
22496
+ presence_penalty: 1.5,
22497
+ chatTemplateKwargs: { preserve_thinking: true }
22498
+ },
22499
+ streaming: {
22500
+ deltaThrottleMs: 50,
22501
+ flushOnFinal: true,
22502
+ chunkPattern: "burst"
22503
+ },
22504
+ filters: {
22505
+ stripPatterns: [],
22506
+ suppressMonologue: true,
22507
+ hasStructuredThinking: true,
22508
+ validateToolArgs: false
22509
+ },
22510
+ promptAdditions: [
22511
+ "CRITICAL OUTPUT RULES:",
22512
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
22513
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22514
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22515
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22516
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
22517
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
22518
+ ],
22519
+ ui: {
22520
+ badge: "Spider",
22521
+ watchdogMs: 9e5,
22522
+ armWatchdogOnSend: true
22523
+ }
22524
+ },
22525
+ {
22526
+ match: ["trevorjs/gemma", "spider-gemma4"],
22527
+ label: "Gemma 4 (Spider)",
22491
22528
  params: {
22492
22529
  temperature: 1,
22493
22530
  top_p: .95,
22494
22531
  top_k: 64,
22495
- max_tokens: 16384
22532
+ max_tokens: 4096,
22533
+ stop: ["<end_of_turn>", "<eos>"]
22534
+ },
22535
+ streaming: {
22536
+ deltaThrottleMs: 50,
22537
+ flushOnFinal: true,
22538
+ chunkPattern: "burst"
22539
+ },
22540
+ filters: {
22541
+ stripPatterns: [
22542
+ "<\\|channel>\\w*",
22543
+ "<channel\\|>",
22544
+ "<start_of_turn>(?:model|user)?",
22545
+ "<end_of_turn>"
22546
+ ],
22547
+ suppressMonologue: true,
22548
+ hasStructuredThinking: false,
22549
+ validateToolArgs: true
22550
+ },
22551
+ promptAdditions: [
22552
+ "CRITICAL OUTPUT RULES:",
22553
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
22554
+ "- Do not output raw control tokens, channel tags, or turn markers.",
22555
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22556
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22557
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22558
+ "- Send brief progress updates on long tasks so the user knows you are active.",
22559
+ "- 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."
22560
+ ],
22561
+ ui: {
22562
+ badge: "Spider",
22563
+ watchdogMs: 6e5,
22564
+ armWatchdogOnSend: true
22565
+ }
22566
+ },
22567
+ {
22568
+ match: [
22569
+ "qwen-cw",
22570
+ "spider-qwen35",
22571
+ "qwen3"
22572
+ ],
22573
+ label: "Qwen 3.5",
22574
+ params: {
22575
+ temperature: 1,
22576
+ top_p: .95,
22577
+ top_k: 20,
22578
+ max_tokens: 16384,
22579
+ presence_penalty: 1.5
22496
22580
  },
22497
22581
  streaming: {
22498
22582
  deltaThrottleMs: 50,
@@ -23142,6 +23226,10 @@ function createModelAwareStreamFn(opts) {
23142
23226
  if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
23143
23227
  if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
23144
23228
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
23229
+ if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
23230
+ if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
23231
+ const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
23232
+ if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
23145
23233
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
23146
23234
  const isOpenRouter = opts.provider === "openrouter";
23147
23235
  const extraHeaders = {};
@@ -23749,7 +23837,11 @@ function handleMessageUpdate(ctx, evt) {
23749
23837
  emitAgentEvent({
23750
23838
  runId: ctx.params.runId,
23751
23839
  stream: "thinking",
23752
- data: { phase: evtType }
23840
+ data: {
23841
+ phase: evtType,
23842
+ delta: thinkingDelta,
23843
+ content: thinkingContent
23844
+ }
23753
23845
  });
23754
23846
  if (ctx.state.streamReasoning) {
23755
23847
  const partialThinking = extractAssistantThinking(msg);
@@ -25804,6 +25896,338 @@ Use the message tool with buttons:
25804
25896
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
25805
25897
  </plan_mode>`;
25806
25898
 
25899
+ //#endregion
25900
+ //#region src/agents/session-transcript-repair.ts
25901
+ function isToolCallBlock(block) {
25902
+ if (!block || typeof block !== "object") return false;
25903
+ const type = block.type;
25904
+ return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
25905
+ }
25906
+ function hasToolCallInput(block) {
25907
+ const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
25908
+ const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
25909
+ return hasInput || hasArguments;
25910
+ }
25911
+ function hasNonEmptyStringField(value) {
25912
+ return typeof value === "string" && value.trim().length > 0;
25913
+ }
25914
+ function hasToolCallId(block) {
25915
+ return hasNonEmptyStringField(block.id);
25916
+ }
25917
+ function hasToolCallName(block) {
25918
+ return hasNonEmptyStringField(block.name);
25919
+ }
25920
+ function makeMissingToolResult(params) {
25921
+ return {
25922
+ role: "toolResult",
25923
+ toolCallId: params.toolCallId,
25924
+ toolName: params.toolName ?? "unknown",
25925
+ content: [{
25926
+ type: "text",
25927
+ text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
25928
+ }],
25929
+ isError: true,
25930
+ timestamp: Date.now()
25931
+ };
25932
+ }
25933
+ /**
25934
+ * True when an assistant message has no tool calls and only empty/whitespace
25935
+ * text or thinking blocks. This happens when a stream fails before any
25936
+ * content arrives — the blank entry is otherwise persisted and produces
25937
+ * consecutive same-role messages, which strict providers (vLLM) reject with
25938
+ * "role must alternate" errors that poison the session for every future turn.
25939
+ */
25940
+ function isEmptyAssistantMessage(message) {
25941
+ if (!message || typeof message !== "object") return false;
25942
+ const msg = message;
25943
+ if (msg.role !== "assistant") return false;
25944
+ if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
25945
+ for (const block of msg.content) {
25946
+ if (!block || typeof block !== "object") continue;
25947
+ const type = block.type;
25948
+ if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
25949
+ if (type === "text") {
25950
+ const text = block.text;
25951
+ if (typeof text === "string" && text.trim().length > 0) return false;
25952
+ continue;
25953
+ }
25954
+ if (type === "thinking") {
25955
+ const thinking = block.thinking;
25956
+ if (typeof thinking === "string" && thinking.trim().length > 0) return false;
25957
+ continue;
25958
+ }
25959
+ return false;
25960
+ }
25961
+ return true;
25962
+ }
25963
+ function stripToolResultDetails(messages) {
25964
+ let touched = false;
25965
+ const out = [];
25966
+ for (const msg of messages) {
25967
+ if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
25968
+ out.push(msg);
25969
+ continue;
25970
+ }
25971
+ if (!("details" in msg)) {
25972
+ out.push(msg);
25973
+ continue;
25974
+ }
25975
+ const { details: _details, ...rest } = msg;
25976
+ touched = true;
25977
+ out.push(rest);
25978
+ }
25979
+ return touched ? out : messages;
25980
+ }
25981
+ function repairToolCallInputs(messages) {
25982
+ let droppedToolCalls = 0;
25983
+ let droppedAssistantMessages = 0;
25984
+ let changed = false;
25985
+ const out = [];
25986
+ for (const msg of messages) {
25987
+ if (!msg || typeof msg !== "object") {
25988
+ out.push(msg);
25989
+ continue;
25990
+ }
25991
+ if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
25992
+ out.push(msg);
25993
+ continue;
25994
+ }
25995
+ const nextContent = [];
25996
+ let droppedInMessage = 0;
25997
+ for (const block of msg.content) {
25998
+ if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
25999
+ droppedToolCalls += 1;
26000
+ droppedInMessage += 1;
26001
+ changed = true;
26002
+ continue;
26003
+ }
26004
+ nextContent.push(block);
26005
+ }
26006
+ if (droppedInMessage > 0) {
26007
+ if (nextContent.length === 0) {
26008
+ droppedAssistantMessages += 1;
26009
+ changed = true;
26010
+ continue;
26011
+ }
26012
+ out.push({
26013
+ ...msg,
26014
+ content: nextContent
26015
+ });
26016
+ continue;
26017
+ }
26018
+ out.push(msg);
26019
+ }
26020
+ return {
26021
+ messages: changed ? out : messages,
26022
+ droppedToolCalls,
26023
+ droppedAssistantMessages
26024
+ };
26025
+ }
26026
+ function sanitizeToolCallInputs(messages) {
26027
+ return repairToolCallInputs(messages).messages;
26028
+ }
26029
+ function sanitizeToolUseResultPairing(messages) {
26030
+ return repairToolUseResultPairing(messages).messages;
26031
+ }
26032
+ function repairToolUseResultPairing(messages) {
26033
+ const out = [];
26034
+ const added = [];
26035
+ const seenToolResultIds = /* @__PURE__ */ new Set();
26036
+ let droppedDuplicateCount = 0;
26037
+ let droppedOrphanCount = 0;
26038
+ let moved = false;
26039
+ let changed = false;
26040
+ const pushToolResult = (msg) => {
26041
+ const id = extractToolResultId(msg);
26042
+ if (id && seenToolResultIds.has(id)) {
26043
+ droppedDuplicateCount += 1;
26044
+ changed = true;
26045
+ return;
26046
+ }
26047
+ if (id) seenToolResultIds.add(id);
26048
+ out.push(msg);
26049
+ };
26050
+ for (let i = 0; i < messages.length; i += 1) {
26051
+ const msg = messages[i];
26052
+ if (!msg || typeof msg !== "object") {
26053
+ out.push(msg);
26054
+ continue;
26055
+ }
26056
+ const role = msg.role;
26057
+ if (role !== "assistant") {
26058
+ if (role !== "toolResult") out.push(msg);
26059
+ else {
26060
+ droppedOrphanCount += 1;
26061
+ changed = true;
26062
+ }
26063
+ continue;
26064
+ }
26065
+ const assistant = msg;
26066
+ const stopReason = assistant.stopReason;
26067
+ if (stopReason === "error" || stopReason === "aborted") {
26068
+ out.push(msg);
26069
+ continue;
26070
+ }
26071
+ const toolCalls = extractToolCallsFromAssistant(assistant);
26072
+ if (toolCalls.length === 0) {
26073
+ out.push(msg);
26074
+ continue;
26075
+ }
26076
+ const toolCallIds = new Set(toolCalls.map((t) => t.id));
26077
+ const spanResultsById = /* @__PURE__ */ new Map();
26078
+ const remainder = [];
26079
+ let j = i + 1;
26080
+ for (; j < messages.length; j += 1) {
26081
+ const next = messages[j];
26082
+ if (!next || typeof next !== "object") {
26083
+ remainder.push(next);
26084
+ continue;
26085
+ }
26086
+ const nextRole = next.role;
26087
+ if (nextRole === "assistant") break;
26088
+ if (nextRole === "toolResult") {
26089
+ const toolResult = next;
26090
+ const id = extractToolResultId(toolResult);
26091
+ if (id && toolCallIds.has(id)) {
26092
+ if (seenToolResultIds.has(id)) {
26093
+ droppedDuplicateCount += 1;
26094
+ changed = true;
26095
+ continue;
26096
+ }
26097
+ if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
26098
+ continue;
26099
+ }
26100
+ }
26101
+ if (nextRole !== "toolResult") remainder.push(next);
26102
+ else {
26103
+ droppedOrphanCount += 1;
26104
+ changed = true;
26105
+ }
26106
+ }
26107
+ out.push(msg);
26108
+ if (spanResultsById.size > 0 && remainder.length > 0) {
26109
+ moved = true;
26110
+ changed = true;
26111
+ }
26112
+ for (const call of toolCalls) {
26113
+ const existing = spanResultsById.get(call.id);
26114
+ if (existing) pushToolResult(existing);
26115
+ else {
26116
+ const missing = makeMissingToolResult({
26117
+ toolCallId: call.id,
26118
+ toolName: call.name
26119
+ });
26120
+ added.push(missing);
26121
+ changed = true;
26122
+ pushToolResult(missing);
26123
+ }
26124
+ }
26125
+ for (const rem of remainder) {
26126
+ if (!rem || typeof rem !== "object") {
26127
+ out.push(rem);
26128
+ continue;
26129
+ }
26130
+ out.push(rem);
26131
+ }
26132
+ i = j - 1;
26133
+ }
26134
+ const changedOrMoved = changed || moved;
26135
+ return {
26136
+ messages: changedOrMoved ? out : messages,
26137
+ added,
26138
+ droppedDuplicateCount,
26139
+ droppedOrphanCount,
26140
+ moved: changedOrMoved
26141
+ };
26142
+ }
26143
+
26144
+ //#endregion
26145
+ //#region src/agents/session-empty-prune.ts
26146
+ /**
26147
+ * Pre-run prune of empty assistant entries from a session JSONL file.
26148
+ *
26149
+ * When a stream fails before any content arrives, pi-coding-agent persists
26150
+ * an assistant message with an empty content array. If this repeats (e.g. a
26151
+ * misconfigured provider fails on every retry), the session ends up with
26152
+ * hundreds of consecutive empty assistant entries. vLLM and other strict
26153
+ * providers then reject the request with a role-ordering error — once the
26154
+ * session is in that state, every future turn fails until the user runs /new.
26155
+ *
26156
+ * This helper runs before SessionManager opens the file, reads the JSONL
26157
+ * line-by-line, filters out any line whose `message` is an empty-content
26158
+ * assistant, and rewrites the file atomically if anything was dropped. The
26159
+ * in-memory SessionManager state and the on-disk file stay consistent.
26160
+ *
26161
+ * The append guard in {@link ./session-tool-result-guard.ts} prevents new
26162
+ * empty entries from being written; this helper retroactively cleans files
26163
+ * that were poisoned before the guard existed.
26164
+ *
26165
+ * @module
26166
+ */
26167
+ async function readSessionFile(sessionFile) {
26168
+ try {
26169
+ return await fs$1.readFile(sessionFile, "utf-8");
26170
+ } catch {
26171
+ return null;
26172
+ }
26173
+ }
26174
+ async function writeAtomically(sessionFile, text) {
26175
+ const dir = path.dirname(sessionFile);
26176
+ const base = path.basename(sessionFile);
26177
+ const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
26178
+ await fs$1.writeFile(tmp, text, "utf-8");
26179
+ await fs$1.rename(tmp, sessionFile);
26180
+ }
26181
+ /**
26182
+ * Remove empty assistant JSONL entries from the session file.
26183
+ *
26184
+ * Parses each line; lines that don't parse are preserved verbatim so we don't
26185
+ * lose unknown data. Only lines that parse into a `{type:"message", message:
26186
+ * <empty-assistant>}` entry are dropped.
26187
+ */
26188
+ async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
26189
+ const raw = await readSessionFile(sessionFile);
26190
+ if (raw === null || raw.length === 0) return {
26191
+ rewrote: false,
26192
+ pruned: 0,
26193
+ unparsable: 0
26194
+ };
26195
+ const lines = raw.split("\n");
26196
+ const kept = [];
26197
+ let pruned = 0;
26198
+ let unparsable = 0;
26199
+ for (const line of lines) {
26200
+ if (line.length === 0) {
26201
+ kept.push(line);
26202
+ continue;
26203
+ }
26204
+ let parsed = null;
26205
+ try {
26206
+ parsed = JSON.parse(line);
26207
+ } catch {
26208
+ unparsable += 1;
26209
+ kept.push(line);
26210
+ continue;
26211
+ }
26212
+ if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
26213
+ pruned += 1;
26214
+ continue;
26215
+ }
26216
+ kept.push(line);
26217
+ }
26218
+ if (pruned === 0) return {
26219
+ rewrote: false,
26220
+ pruned: 0,
26221
+ unparsable
26222
+ };
26223
+ await writeAtomically(sessionFile, kept.join("\n"));
26224
+ return {
26225
+ rewrote: true,
26226
+ pruned,
26227
+ unparsable
26228
+ };
26229
+ }
26230
+
25807
26231
  //#endregion
25808
26232
  //#region src/agents/session-file-repair.ts
25809
26233
  function isSessionHeader(entry) {
@@ -26077,221 +26501,6 @@ function sessionLikelyHasOversizedToolResults(params) {
26077
26501
  return false;
26078
26502
  }
26079
26503
 
26080
- //#endregion
26081
- //#region src/agents/session-transcript-repair.ts
26082
- function isToolCallBlock(block) {
26083
- if (!block || typeof block !== "object") return false;
26084
- const type = block.type;
26085
- return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
26086
- }
26087
- function hasToolCallInput(block) {
26088
- const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
26089
- const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
26090
- return hasInput || hasArguments;
26091
- }
26092
- function hasNonEmptyStringField(value) {
26093
- return typeof value === "string" && value.trim().length > 0;
26094
- }
26095
- function hasToolCallId(block) {
26096
- return hasNonEmptyStringField(block.id);
26097
- }
26098
- function hasToolCallName(block) {
26099
- return hasNonEmptyStringField(block.name);
26100
- }
26101
- function makeMissingToolResult(params) {
26102
- return {
26103
- role: "toolResult",
26104
- toolCallId: params.toolCallId,
26105
- toolName: params.toolName ?? "unknown",
26106
- content: [{
26107
- type: "text",
26108
- text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
26109
- }],
26110
- isError: true,
26111
- timestamp: Date.now()
26112
- };
26113
- }
26114
- function stripToolResultDetails(messages) {
26115
- let touched = false;
26116
- const out = [];
26117
- for (const msg of messages) {
26118
- if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
26119
- out.push(msg);
26120
- continue;
26121
- }
26122
- if (!("details" in msg)) {
26123
- out.push(msg);
26124
- continue;
26125
- }
26126
- const { details: _details, ...rest } = msg;
26127
- touched = true;
26128
- out.push(rest);
26129
- }
26130
- return touched ? out : messages;
26131
- }
26132
- function repairToolCallInputs(messages) {
26133
- let droppedToolCalls = 0;
26134
- let droppedAssistantMessages = 0;
26135
- let changed = false;
26136
- const out = [];
26137
- for (const msg of messages) {
26138
- if (!msg || typeof msg !== "object") {
26139
- out.push(msg);
26140
- continue;
26141
- }
26142
- if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
26143
- out.push(msg);
26144
- continue;
26145
- }
26146
- const nextContent = [];
26147
- let droppedInMessage = 0;
26148
- for (const block of msg.content) {
26149
- if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
26150
- droppedToolCalls += 1;
26151
- droppedInMessage += 1;
26152
- changed = true;
26153
- continue;
26154
- }
26155
- nextContent.push(block);
26156
- }
26157
- if (droppedInMessage > 0) {
26158
- if (nextContent.length === 0) {
26159
- droppedAssistantMessages += 1;
26160
- changed = true;
26161
- continue;
26162
- }
26163
- out.push({
26164
- ...msg,
26165
- content: nextContent
26166
- });
26167
- continue;
26168
- }
26169
- out.push(msg);
26170
- }
26171
- return {
26172
- messages: changed ? out : messages,
26173
- droppedToolCalls,
26174
- droppedAssistantMessages
26175
- };
26176
- }
26177
- function sanitizeToolCallInputs(messages) {
26178
- return repairToolCallInputs(messages).messages;
26179
- }
26180
- function sanitizeToolUseResultPairing(messages) {
26181
- return repairToolUseResultPairing(messages).messages;
26182
- }
26183
- function repairToolUseResultPairing(messages) {
26184
- const out = [];
26185
- const added = [];
26186
- const seenToolResultIds = /* @__PURE__ */ new Set();
26187
- let droppedDuplicateCount = 0;
26188
- let droppedOrphanCount = 0;
26189
- let moved = false;
26190
- let changed = false;
26191
- const pushToolResult = (msg) => {
26192
- const id = extractToolResultId(msg);
26193
- if (id && seenToolResultIds.has(id)) {
26194
- droppedDuplicateCount += 1;
26195
- changed = true;
26196
- return;
26197
- }
26198
- if (id) seenToolResultIds.add(id);
26199
- out.push(msg);
26200
- };
26201
- for (let i = 0; i < messages.length; i += 1) {
26202
- const msg = messages[i];
26203
- if (!msg || typeof msg !== "object") {
26204
- out.push(msg);
26205
- continue;
26206
- }
26207
- const role = msg.role;
26208
- if (role !== "assistant") {
26209
- if (role !== "toolResult") out.push(msg);
26210
- else {
26211
- droppedOrphanCount += 1;
26212
- changed = true;
26213
- }
26214
- continue;
26215
- }
26216
- const assistant = msg;
26217
- const stopReason = assistant.stopReason;
26218
- if (stopReason === "error" || stopReason === "aborted") {
26219
- out.push(msg);
26220
- continue;
26221
- }
26222
- const toolCalls = extractToolCallsFromAssistant(assistant);
26223
- if (toolCalls.length === 0) {
26224
- out.push(msg);
26225
- continue;
26226
- }
26227
- const toolCallIds = new Set(toolCalls.map((t) => t.id));
26228
- const spanResultsById = /* @__PURE__ */ new Map();
26229
- const remainder = [];
26230
- let j = i + 1;
26231
- for (; j < messages.length; j += 1) {
26232
- const next = messages[j];
26233
- if (!next || typeof next !== "object") {
26234
- remainder.push(next);
26235
- continue;
26236
- }
26237
- const nextRole = next.role;
26238
- if (nextRole === "assistant") break;
26239
- if (nextRole === "toolResult") {
26240
- const toolResult = next;
26241
- const id = extractToolResultId(toolResult);
26242
- if (id && toolCallIds.has(id)) {
26243
- if (seenToolResultIds.has(id)) {
26244
- droppedDuplicateCount += 1;
26245
- changed = true;
26246
- continue;
26247
- }
26248
- if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
26249
- continue;
26250
- }
26251
- }
26252
- if (nextRole !== "toolResult") remainder.push(next);
26253
- else {
26254
- droppedOrphanCount += 1;
26255
- changed = true;
26256
- }
26257
- }
26258
- out.push(msg);
26259
- if (spanResultsById.size > 0 && remainder.length > 0) {
26260
- moved = true;
26261
- changed = true;
26262
- }
26263
- for (const call of toolCalls) {
26264
- const existing = spanResultsById.get(call.id);
26265
- if (existing) pushToolResult(existing);
26266
- else {
26267
- const missing = makeMissingToolResult({
26268
- toolCallId: call.id,
26269
- toolName: call.name
26270
- });
26271
- added.push(missing);
26272
- changed = true;
26273
- pushToolResult(missing);
26274
- }
26275
- }
26276
- for (const rem of remainder) {
26277
- if (!rem || typeof rem !== "object") {
26278
- out.push(rem);
26279
- continue;
26280
- }
26281
- out.push(rem);
26282
- }
26283
- i = j - 1;
26284
- }
26285
- const changedOrMoved = changed || moved;
26286
- return {
26287
- messages: changedOrMoved ? out : messages,
26288
- added,
26289
- droppedDuplicateCount,
26290
- droppedOrphanCount,
26291
- moved: changedOrMoved
26292
- };
26293
- }
26294
-
26295
26504
  //#endregion
26296
26505
  //#region src/agents/session-tool-result-guard.ts
26297
26506
  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.]";
@@ -26372,6 +26581,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
26372
26581
  const guardedAppend = (message) => {
26373
26582
  let nextMessage = message;
26374
26583
  if (message.role === "assistant") {
26584
+ if (isEmptyAssistantMessage(message)) {
26585
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
26586
+ return;
26587
+ }
26375
26588
  const sanitized = sanitizeToolCallInputs([message]);
26376
26589
  if (sanitized.length === 0) {
26377
26590
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -29703,6 +29916,8 @@ async function runEmbeddedAttempt(params) {
29703
29916
  });
29704
29917
  const versionCheck = await handleSessionVersion(params.sessionFile);
29705
29918
  if (versionCheck.archived) log$7.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
29919
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
29920
+ if (pruneReport.rewrote) log$7.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
29706
29921
  await prewarmSessionFile(params.sessionFile);
29707
29922
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
29708
29923
  agentId: sessionAgentId,
@@ -31489,27 +31704,27 @@ async function runAgentTurn(params) {
31489
31704
  function createDefaultDeps() {
31490
31705
  return {
31491
31706
  sendMessageWhatsApp: async (...args) => {
31492
- const { sendMessageWhatsApp } = await import("./web-CJSRBiDm.js");
31707
+ const { sendMessageWhatsApp } = await import("./web-CfVd3Mhp.js");
31493
31708
  return await sendMessageWhatsApp(...args);
31494
31709
  },
31495
31710
  sendMessageTelegram: async (...args) => {
31496
- const { sendMessageTelegram } = await import("./send-Cutb0ZDY.js").then((n) => n.l);
31711
+ const { sendMessageTelegram } = await import("./send-B3RdXvjC.js").then((n) => n.l);
31497
31712
  return await sendMessageTelegram(...args);
31498
31713
  },
31499
31714
  sendMessageDiscord: async (...args) => {
31500
- const { sendMessageDiscord } = await import("./send-CZr1hVHY.js").then((n) => n.t);
31715
+ const { sendMessageDiscord } = await import("./send-CQVnyJyF.js").then((n) => n.t);
31501
31716
  return await sendMessageDiscord(...args);
31502
31717
  },
31503
31718
  sendMessageSlack: async (...args) => {
31504
- const { sendMessageSlack } = await import("./send-CPF8hSFp.js").then((n) => n.n);
31719
+ const { sendMessageSlack } = await import("./send-DVm0du0_.js").then((n) => n.n);
31505
31720
  return await sendMessageSlack(...args);
31506
31721
  },
31507
31722
  sendMessageSignal: async (...args) => {
31508
- const { sendMessageSignal } = await import("./send-Cgcbuw8U.js").then((n) => n.i);
31723
+ const { sendMessageSignal } = await import("./send-Bm4ULEzh.js").then((n) => n.i);
31509
31724
  return await sendMessageSignal(...args);
31510
31725
  },
31511
31726
  sendMessageIMessage: async (...args) => {
31512
- const { sendMessageIMessage } = await import("./send-ZI2bG_Jc.js").then((n) => n.n);
31727
+ const { sendMessageIMessage } = await import("./send-9SapUCg7.js").then((n) => n.n);
31513
31728
  return await sendMessageIMessage(...args);
31514
31729
  }
31515
31730
  };
@@ -43060,7 +43275,7 @@ async function registerSlackMonitorSlashCommands(params) {
43060
43275
  });
43061
43276
  const deliverSlashPayloads = async (replies) => {
43062
43277
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
43063
- import("./replies-vgss3_QA.js").then((n) => n.r),
43278
+ import("./replies-BMqtgBhh.js").then((n) => n.r),
43064
43279
  import("./chunk-1dhPX1NK.js").then((n) => n.s),
43065
43280
  import("./markdown-tables-CEbN0fEm.js").then((n) => n.t)
43066
43281
  ]);
@@ -47754,7 +47969,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
47754
47969
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
47755
47970
  let preflightTranscript;
47756
47971
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
47757
- const { transcribeFirstAudio } = await import("./audio-preflight-CzQUZSUK.js");
47972
+ const { transcribeFirstAudio } = await import("./audio-preflight-CIiS5cfP.js");
47758
47973
  preflightTranscript = await transcribeFirstAudio({
47759
47974
  ctx: {
47760
47975
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -49908,23 +50123,23 @@ let webLoginQrPromise = null;
49908
50123
  let webChannelPromise = null;
49909
50124
  let whatsappActionsPromise = null;
49910
50125
  function loadWebOutbound() {
49911
- webOutboundPromise ??= import("./outbound-DyBiNY4z.js").then((n) => n.t);
50126
+ webOutboundPromise ??= import("./outbound-wnv03tb3.js").then((n) => n.t);
49912
50127
  return webOutboundPromise;
49913
50128
  }
49914
50129
  function loadWebLogin() {
49915
- webLoginPromise ??= import("./login-y9uojrfG.js").then((n) => n.n);
50130
+ webLoginPromise ??= import("./login-DODfJ3Dn.js").then((n) => n.n);
49916
50131
  return webLoginPromise;
49917
50132
  }
49918
50133
  function loadWebLoginQr() {
49919
- webLoginQrPromise ??= import("./login-qr-CC0TE3ax.js");
50134
+ webLoginQrPromise ??= import("./login-qr-CBRxijIg.js");
49920
50135
  return webLoginQrPromise;
49921
50136
  }
49922
50137
  function loadWebChannel() {
49923
- webChannelPromise ??= import("./web-CJSRBiDm.js");
50138
+ webChannelPromise ??= import("./web-CfVd3Mhp.js");
49924
50139
  return webChannelPromise;
49925
50140
  }
49926
50141
  function loadWhatsAppActions() {
49927
- whatsappActionsPromise ??= import("./whatsapp-actions-BmcMtU_J.js");
50142
+ whatsappActionsPromise ??= import("./whatsapp-actions-ChO_shrk.js");
49928
50143
  return whatsappActionsPromise;
49929
50144
  }
49930
50145
  function createPluginRuntime() {
@@ -72623,7 +72838,7 @@ async function deliverSessionMaintenanceWarning(params) {
72623
72838
  return;
72624
72839
  }
72625
72840
  try {
72626
- const { deliverOutboundPayloads } = await import("./deliver-DrFtaFZt.js").then((n) => n.n);
72841
+ const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
72627
72842
  await deliverOutboundPayloads({
72628
72843
  cfg: params.cfg,
72629
72844
  channel,