@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,29 +14,29 @@ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discov
14
14
  import { r as isPathInsideWithRealpath } from "./scan-paths-ppKrtZ9U.js";
15
15
  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-hAdgFdrv.js";
16
16
  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-Czr39pxG.js";
17
- 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-DHBLS1Hl.js";
17
+ 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-BNTB6qj8.js";
18
18
  import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-T3qcxXru.js";
19
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DIDhYlsx.js";
19
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DKi-hnaF.js";
20
20
  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-C9dERklz.js";
21
21
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-D0lNkCf6.js";
22
- import { A as DEFAULT_RESET_TRIGGERS, B as resolveGroupSessionKey, D as resolveSessionResetPolicy, E as resolveChannelResetConfig, F as resolveMainSessionKey, G as deliveryContextKey, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, L as deriveSessionMetaPatch, O as resolveSessionResetType, P as resolveExplicitAgentSessionKey, T as evaluateSessionFreshness, U as resolveSessionLockMaxHoldFromTimeout, V as acquireSessionWriteLock, W as deliveryContextFromSession, Y as normalizeAccountId$3, _ as capArrayByJsonBytes, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as archiveSessionTranscripts, j as resolveFreshSessionTotalTokens, k as resolveThreadFlag, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as normalizeDeliveryContext, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, w as resolveSessionKey } from "./sessions-CJXnZVjR.js";
22
+ import { A as DEFAULT_RESET_TRIGGERS, B as resolveGroupSessionKey, D as resolveSessionResetPolicy, E as resolveChannelResetConfig, F as resolveMainSessionKey, G as deliveryContextKey, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, L as deriveSessionMetaPatch, O as resolveSessionResetType, P as resolveExplicitAgentSessionKey, T as evaluateSessionFreshness, U as resolveSessionLockMaxHoldFromTimeout, V as acquireSessionWriteLock, W as deliveryContextFromSession, Y as normalizeAccountId$3, _ as capArrayByJsonBytes, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as archiveSessionTranscripts, j as resolveFreshSessionTotalTokens, k as resolveThreadFlag, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as normalizeDeliveryContext, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, w as resolveSessionKey } from "./sessions-Cfa6JEB3.js";
23
23
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Csntmwwn.js";
24
24
  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-CwSlLxM8.js";
25
25
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-D9ITgITj.js";
26
26
  import { t as normalizeChatType } from "./chat-type-CeFzWU-6.js";
27
- 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-CukP8Vq4.js";
28
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-DTTtmhjA.js";
29
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-Di0nddLY.js";
30
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CXRSdUr1.js";
27
+ 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-B7HhiTdx.js";
28
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CC9V8V81.js";
29
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-Cgi3TwWN.js";
30
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Bu0iWeja.js";
31
31
  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-Ci8Xsc_Y.js";
32
32
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CIjIGxEE.js";
33
33
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-D1eLj5t8.js";
34
- import { A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as parseTelegramTarget, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-CR5fRDgW.js";
34
+ import { A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as parseTelegramTarget, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DlQtxlG_.js";
35
35
  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-CUkaZz2F.js";
36
- 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-DE9h5GAu.js";
37
- 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-BFzSUT19.js";
38
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-Dq0bSDVx.js";
39
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-H24IFajW.js";
36
+ 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-DA4liAIZ.js";
37
+ 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-DY75ZyJD.js";
38
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DAw-AWNi.js";
39
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DK-T2rBR.js";
40
40
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Ba_ROWsq.js";
41
41
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-OWKu4tXF.js";
42
42
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-Ixuyn7h8.js";
@@ -48,9 +48,9 @@ import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveS
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-D5O01TlD.js";
49
49
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-CVLISeRT.js";
50
50
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
51
- import { t as ensureSymiModelsJson } from "./models-config-CCMpqFyr.js";
51
+ import { t as ensureSymiModelsJson } from "./models-config-Be8DRFkB.js";
52
52
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
53
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-C2SWDd8g.js";
53
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Btzr8gfD.js";
54
54
  import { i as resolveMemorySearchConfig } from "./manager-Vb2F7vQq.js";
55
55
  import { g as runTasksWithConcurrency } from "./sqlite-CQGamAhm.js";
56
56
  import { n as retryAsync } from "./retry-C4Q_VPOo.js";
@@ -63,13 +63,13 @@ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMedia
63
63
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-D-flMHhr.js";
64
64
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-CkrIpKCc.js";
65
65
  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-D1K_inhv.js";
66
- import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, y as stripReasoningTagsFromText } from "./image-CO4meYzg.js";
66
+ import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, y as stripReasoningTagsFromText } from "./image-C3wYkWyK.js";
67
67
  import { n as resolveToolDisplay } from "./tool-display-CXwOC-qw.js";
68
68
  import { n as formatTimeAgo } from "./format-relative-DX-rh76l.js";
69
69
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-72dOKfLG.js";
70
- 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-CW9KEL7W.js";
71
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-Bn0ffe1O.js";
72
- import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-Bka9dR4m.js";
70
+ 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-Dd2bbNGV.js";
71
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DNvgFPZn.js";
72
+ import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-B8Fif925.js";
73
73
  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-C8BcwE33.js";
74
74
  import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-vpO8vXVN.js";
75
75
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BhFkwlZW.js";
@@ -83,19 +83,19 @@ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChan
83
83
  import { n as normalizePollInput } from "./polls-DXeUmcgz.js";
84
84
  import { t as convertMarkdownTables } from "./tables-CXWwq-Md.js";
85
85
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CPeVoSXJ.js";
86
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DEVN6FRR.js";
86
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-rbSHSlcd.js";
87
87
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CQar2eKe.js";
88
88
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-BzfEFyPn.js";
89
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-CY8oqBFg.js";
90
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-DK_pm_7l.js";
89
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-BhJZ16uV.js";
90
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-DSnJ503J.js";
91
91
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CjnIuTqX.js";
92
92
  import { t as parseTimeoutMs } from "./parse-timeout-zNJBr1fY.js";
93
93
  import { t as makeProxyFetch } from "./proxy-DL3MD6-P.js";
94
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DO80zq73.js";
95
- import { r as detectBinary } from "./onboard-helpers-DASpwgat.js";
94
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Bo49QlAg.js";
95
+ import { r as detectBinary } from "./onboard-helpers-BBtPmJEe.js";
96
96
  import { t as resolvePairingIdLabel } from "./pairing-labels-D1HDboV2.js";
97
97
  import { t as getActiveWebListener } from "./active-listener-De1JhR4W.js";
98
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-De00gPXt.js";
98
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-DxNwL7Dl.js";
99
99
  import { createRequire } from "node:module";
100
100
  import { execFileSync, spawn, spawnSync } from "node:child_process";
101
101
  import os, { homedir } from "node:os";
@@ -20374,7 +20374,7 @@ async function routeReply(params) {
20374
20374
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
20375
20375
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
20376
20376
  try {
20377
- const { deliverOutboundPayloads } = await import("./deliver-CXRSdUr1.js").then((n) => n.n);
20377
+ const { deliverOutboundPayloads } = await import("./deliver-Bu0iWeja.js").then((n) => n.n);
20378
20378
  return {
20379
20379
  ok: true,
20380
20380
  messageId: (await deliverOutboundPayloads({
@@ -32411,13 +32411,97 @@ const BUILTIN_PROFILES = [
32411
32411
  }
32412
32412
  },
32413
32413
  {
32414
- match: ["qwen-cw", "qwen3"],
32415
- label: "Qwen 3.5",
32414
+ match: ["qwen3.6", "spider-qwen36"],
32415
+ label: "Qwen 3.6",
32416
+ params: {
32417
+ temperature: 1,
32418
+ top_p: .95,
32419
+ top_k: 20,
32420
+ max_tokens: 16384,
32421
+ presence_penalty: 1.5,
32422
+ chatTemplateKwargs: { preserve_thinking: true }
32423
+ },
32424
+ streaming: {
32425
+ deltaThrottleMs: 50,
32426
+ flushOnFinal: true,
32427
+ chunkPattern: "burst"
32428
+ },
32429
+ filters: {
32430
+ stripPatterns: [],
32431
+ suppressMonologue: true,
32432
+ hasStructuredThinking: true,
32433
+ validateToolArgs: false
32434
+ },
32435
+ promptAdditions: [
32436
+ "CRITICAL OUTPUT RULES:",
32437
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
32438
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
32439
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
32440
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
32441
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
32442
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
32443
+ ],
32444
+ ui: {
32445
+ badge: "Spider",
32446
+ watchdogMs: 9e5,
32447
+ armWatchdogOnSend: true
32448
+ }
32449
+ },
32450
+ {
32451
+ match: ["trevorjs/gemma", "spider-gemma4"],
32452
+ label: "Gemma 4 (Spider)",
32416
32453
  params: {
32417
32454
  temperature: 1,
32418
32455
  top_p: .95,
32419
32456
  top_k: 64,
32420
- max_tokens: 16384
32457
+ max_tokens: 4096,
32458
+ stop: ["<end_of_turn>", "<eos>"]
32459
+ },
32460
+ streaming: {
32461
+ deltaThrottleMs: 50,
32462
+ flushOnFinal: true,
32463
+ chunkPattern: "burst"
32464
+ },
32465
+ filters: {
32466
+ stripPatterns: [
32467
+ "<\\|channel>\\w*",
32468
+ "<channel\\|>",
32469
+ "<start_of_turn>(?:model|user)?",
32470
+ "<end_of_turn>"
32471
+ ],
32472
+ suppressMonologue: true,
32473
+ hasStructuredThinking: false,
32474
+ validateToolArgs: true
32475
+ },
32476
+ promptAdditions: [
32477
+ "CRITICAL OUTPUT RULES:",
32478
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
32479
+ "- Do not output raw control tokens, channel tags, or turn markers.",
32480
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
32481
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
32482
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
32483
+ "- Send brief progress updates on long tasks so the user knows you are active.",
32484
+ "- 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."
32485
+ ],
32486
+ ui: {
32487
+ badge: "Spider",
32488
+ watchdogMs: 6e5,
32489
+ armWatchdogOnSend: true
32490
+ }
32491
+ },
32492
+ {
32493
+ match: [
32494
+ "qwen-cw",
32495
+ "spider-qwen35",
32496
+ "qwen3"
32497
+ ],
32498
+ label: "Qwen 3.5",
32499
+ params: {
32500
+ temperature: 1,
32501
+ top_p: .95,
32502
+ top_k: 20,
32503
+ max_tokens: 16384,
32504
+ presence_penalty: 1.5
32421
32505
  },
32422
32506
  streaming: {
32423
32507
  deltaThrottleMs: 50,
@@ -33067,6 +33151,10 @@ function createModelAwareStreamFn(opts) {
33067
33151
  if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
33068
33152
  if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
33069
33153
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
33154
+ if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
33155
+ if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
33156
+ const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
33157
+ if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
33070
33158
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
33071
33159
  const isOpenRouter = opts.provider === "openrouter";
33072
33160
  const extraHeaders = {};
@@ -33897,7 +33985,11 @@ function handleMessageUpdate(ctx, evt) {
33897
33985
  emitAgentEvent({
33898
33986
  runId: ctx.params.runId,
33899
33987
  stream: "thinking",
33900
- data: { phase: evtType }
33988
+ data: {
33989
+ phase: evtType,
33990
+ delta: thinkingDelta,
33991
+ content: thinkingContent
33992
+ }
33901
33993
  });
33902
33994
  if (ctx.state.streamReasoning) {
33903
33995
  const partialThinking = extractAssistantThinking(msg);
@@ -35939,6 +36031,338 @@ Use the message tool with buttons:
35939
36031
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
35940
36032
  </plan_mode>`;
35941
36033
 
36034
+ //#endregion
36035
+ //#region src/agents/session-transcript-repair.ts
36036
+ function isToolCallBlock(block) {
36037
+ if (!block || typeof block !== "object") return false;
36038
+ const type = block.type;
36039
+ return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
36040
+ }
36041
+ function hasToolCallInput(block) {
36042
+ const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
36043
+ const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
36044
+ return hasInput || hasArguments;
36045
+ }
36046
+ function hasNonEmptyStringField(value) {
36047
+ return typeof value === "string" && value.trim().length > 0;
36048
+ }
36049
+ function hasToolCallId(block) {
36050
+ return hasNonEmptyStringField(block.id);
36051
+ }
36052
+ function hasToolCallName(block) {
36053
+ return hasNonEmptyStringField(block.name);
36054
+ }
36055
+ function makeMissingToolResult(params) {
36056
+ return {
36057
+ role: "toolResult",
36058
+ toolCallId: params.toolCallId,
36059
+ toolName: params.toolName ?? "unknown",
36060
+ content: [{
36061
+ type: "text",
36062
+ text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
36063
+ }],
36064
+ isError: true,
36065
+ timestamp: Date.now()
36066
+ };
36067
+ }
36068
+ /**
36069
+ * True when an assistant message has no tool calls and only empty/whitespace
36070
+ * text or thinking blocks. This happens when a stream fails before any
36071
+ * content arrives — the blank entry is otherwise persisted and produces
36072
+ * consecutive same-role messages, which strict providers (vLLM) reject with
36073
+ * "role must alternate" errors that poison the session for every future turn.
36074
+ */
36075
+ function isEmptyAssistantMessage(message) {
36076
+ if (!message || typeof message !== "object") return false;
36077
+ const msg = message;
36078
+ if (msg.role !== "assistant") return false;
36079
+ if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
36080
+ for (const block of msg.content) {
36081
+ if (!block || typeof block !== "object") continue;
36082
+ const type = block.type;
36083
+ if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
36084
+ if (type === "text") {
36085
+ const text = block.text;
36086
+ if (typeof text === "string" && text.trim().length > 0) return false;
36087
+ continue;
36088
+ }
36089
+ if (type === "thinking") {
36090
+ const thinking = block.thinking;
36091
+ if (typeof thinking === "string" && thinking.trim().length > 0) return false;
36092
+ continue;
36093
+ }
36094
+ return false;
36095
+ }
36096
+ return true;
36097
+ }
36098
+ function stripToolResultDetails(messages) {
36099
+ let touched = false;
36100
+ const out = [];
36101
+ for (const msg of messages) {
36102
+ if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
36103
+ out.push(msg);
36104
+ continue;
36105
+ }
36106
+ if (!("details" in msg)) {
36107
+ out.push(msg);
36108
+ continue;
36109
+ }
36110
+ const { details: _details, ...rest } = msg;
36111
+ touched = true;
36112
+ out.push(rest);
36113
+ }
36114
+ return touched ? out : messages;
36115
+ }
36116
+ function repairToolCallInputs(messages) {
36117
+ let droppedToolCalls = 0;
36118
+ let droppedAssistantMessages = 0;
36119
+ let changed = false;
36120
+ const out = [];
36121
+ for (const msg of messages) {
36122
+ if (!msg || typeof msg !== "object") {
36123
+ out.push(msg);
36124
+ continue;
36125
+ }
36126
+ if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
36127
+ out.push(msg);
36128
+ continue;
36129
+ }
36130
+ const nextContent = [];
36131
+ let droppedInMessage = 0;
36132
+ for (const block of msg.content) {
36133
+ if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
36134
+ droppedToolCalls += 1;
36135
+ droppedInMessage += 1;
36136
+ changed = true;
36137
+ continue;
36138
+ }
36139
+ nextContent.push(block);
36140
+ }
36141
+ if (droppedInMessage > 0) {
36142
+ if (nextContent.length === 0) {
36143
+ droppedAssistantMessages += 1;
36144
+ changed = true;
36145
+ continue;
36146
+ }
36147
+ out.push({
36148
+ ...msg,
36149
+ content: nextContent
36150
+ });
36151
+ continue;
36152
+ }
36153
+ out.push(msg);
36154
+ }
36155
+ return {
36156
+ messages: changed ? out : messages,
36157
+ droppedToolCalls,
36158
+ droppedAssistantMessages
36159
+ };
36160
+ }
36161
+ function sanitizeToolCallInputs(messages) {
36162
+ return repairToolCallInputs(messages).messages;
36163
+ }
36164
+ function sanitizeToolUseResultPairing(messages) {
36165
+ return repairToolUseResultPairing(messages).messages;
36166
+ }
36167
+ function repairToolUseResultPairing(messages) {
36168
+ const out = [];
36169
+ const added = [];
36170
+ const seenToolResultIds = /* @__PURE__ */ new Set();
36171
+ let droppedDuplicateCount = 0;
36172
+ let droppedOrphanCount = 0;
36173
+ let moved = false;
36174
+ let changed = false;
36175
+ const pushToolResult = (msg) => {
36176
+ const id = extractToolResultId(msg);
36177
+ if (id && seenToolResultIds.has(id)) {
36178
+ droppedDuplicateCount += 1;
36179
+ changed = true;
36180
+ return;
36181
+ }
36182
+ if (id) seenToolResultIds.add(id);
36183
+ out.push(msg);
36184
+ };
36185
+ for (let i = 0; i < messages.length; i += 1) {
36186
+ const msg = messages[i];
36187
+ if (!msg || typeof msg !== "object") {
36188
+ out.push(msg);
36189
+ continue;
36190
+ }
36191
+ const role = msg.role;
36192
+ if (role !== "assistant") {
36193
+ if (role !== "toolResult") out.push(msg);
36194
+ else {
36195
+ droppedOrphanCount += 1;
36196
+ changed = true;
36197
+ }
36198
+ continue;
36199
+ }
36200
+ const assistant = msg;
36201
+ const stopReason = assistant.stopReason;
36202
+ if (stopReason === "error" || stopReason === "aborted") {
36203
+ out.push(msg);
36204
+ continue;
36205
+ }
36206
+ const toolCalls = extractToolCallsFromAssistant(assistant);
36207
+ if (toolCalls.length === 0) {
36208
+ out.push(msg);
36209
+ continue;
36210
+ }
36211
+ const toolCallIds = new Set(toolCalls.map((t) => t.id));
36212
+ const spanResultsById = /* @__PURE__ */ new Map();
36213
+ const remainder = [];
36214
+ let j = i + 1;
36215
+ for (; j < messages.length; j += 1) {
36216
+ const next = messages[j];
36217
+ if (!next || typeof next !== "object") {
36218
+ remainder.push(next);
36219
+ continue;
36220
+ }
36221
+ const nextRole = next.role;
36222
+ if (nextRole === "assistant") break;
36223
+ if (nextRole === "toolResult") {
36224
+ const toolResult = next;
36225
+ const id = extractToolResultId(toolResult);
36226
+ if (id && toolCallIds.has(id)) {
36227
+ if (seenToolResultIds.has(id)) {
36228
+ droppedDuplicateCount += 1;
36229
+ changed = true;
36230
+ continue;
36231
+ }
36232
+ if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
36233
+ continue;
36234
+ }
36235
+ }
36236
+ if (nextRole !== "toolResult") remainder.push(next);
36237
+ else {
36238
+ droppedOrphanCount += 1;
36239
+ changed = true;
36240
+ }
36241
+ }
36242
+ out.push(msg);
36243
+ if (spanResultsById.size > 0 && remainder.length > 0) {
36244
+ moved = true;
36245
+ changed = true;
36246
+ }
36247
+ for (const call of toolCalls) {
36248
+ const existing = spanResultsById.get(call.id);
36249
+ if (existing) pushToolResult(existing);
36250
+ else {
36251
+ const missing = makeMissingToolResult({
36252
+ toolCallId: call.id,
36253
+ toolName: call.name
36254
+ });
36255
+ added.push(missing);
36256
+ changed = true;
36257
+ pushToolResult(missing);
36258
+ }
36259
+ }
36260
+ for (const rem of remainder) {
36261
+ if (!rem || typeof rem !== "object") {
36262
+ out.push(rem);
36263
+ continue;
36264
+ }
36265
+ out.push(rem);
36266
+ }
36267
+ i = j - 1;
36268
+ }
36269
+ const changedOrMoved = changed || moved;
36270
+ return {
36271
+ messages: changedOrMoved ? out : messages,
36272
+ added,
36273
+ droppedDuplicateCount,
36274
+ droppedOrphanCount,
36275
+ moved: changedOrMoved
36276
+ };
36277
+ }
36278
+
36279
+ //#endregion
36280
+ //#region src/agents/session-empty-prune.ts
36281
+ /**
36282
+ * Pre-run prune of empty assistant entries from a session JSONL file.
36283
+ *
36284
+ * When a stream fails before any content arrives, pi-coding-agent persists
36285
+ * an assistant message with an empty content array. If this repeats (e.g. a
36286
+ * misconfigured provider fails on every retry), the session ends up with
36287
+ * hundreds of consecutive empty assistant entries. vLLM and other strict
36288
+ * providers then reject the request with a role-ordering error — once the
36289
+ * session is in that state, every future turn fails until the user runs /new.
36290
+ *
36291
+ * This helper runs before SessionManager opens the file, reads the JSONL
36292
+ * line-by-line, filters out any line whose `message` is an empty-content
36293
+ * assistant, and rewrites the file atomically if anything was dropped. The
36294
+ * in-memory SessionManager state and the on-disk file stay consistent.
36295
+ *
36296
+ * The append guard in {@link ./session-tool-result-guard.ts} prevents new
36297
+ * empty entries from being written; this helper retroactively cleans files
36298
+ * that were poisoned before the guard existed.
36299
+ *
36300
+ * @module
36301
+ */
36302
+ async function readSessionFile(sessionFile) {
36303
+ try {
36304
+ return await fs$1.readFile(sessionFile, "utf-8");
36305
+ } catch {
36306
+ return null;
36307
+ }
36308
+ }
36309
+ async function writeAtomically(sessionFile, text) {
36310
+ const dir = path.dirname(sessionFile);
36311
+ const base = path.basename(sessionFile);
36312
+ const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
36313
+ await fs$1.writeFile(tmp, text, "utf-8");
36314
+ await fs$1.rename(tmp, sessionFile);
36315
+ }
36316
+ /**
36317
+ * Remove empty assistant JSONL entries from the session file.
36318
+ *
36319
+ * Parses each line; lines that don't parse are preserved verbatim so we don't
36320
+ * lose unknown data. Only lines that parse into a `{type:"message", message:
36321
+ * <empty-assistant>}` entry are dropped.
36322
+ */
36323
+ async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
36324
+ const raw = await readSessionFile(sessionFile);
36325
+ if (raw === null || raw.length === 0) return {
36326
+ rewrote: false,
36327
+ pruned: 0,
36328
+ unparsable: 0
36329
+ };
36330
+ const lines = raw.split("\n");
36331
+ const kept = [];
36332
+ let pruned = 0;
36333
+ let unparsable = 0;
36334
+ for (const line of lines) {
36335
+ if (line.length === 0) {
36336
+ kept.push(line);
36337
+ continue;
36338
+ }
36339
+ let parsed = null;
36340
+ try {
36341
+ parsed = JSON.parse(line);
36342
+ } catch {
36343
+ unparsable += 1;
36344
+ kept.push(line);
36345
+ continue;
36346
+ }
36347
+ if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
36348
+ pruned += 1;
36349
+ continue;
36350
+ }
36351
+ kept.push(line);
36352
+ }
36353
+ if (pruned === 0) return {
36354
+ rewrote: false,
36355
+ pruned: 0,
36356
+ unparsable
36357
+ };
36358
+ await writeAtomically(sessionFile, kept.join("\n"));
36359
+ return {
36360
+ rewrote: true,
36361
+ pruned,
36362
+ unparsable
36363
+ };
36364
+ }
36365
+
35942
36366
  //#endregion
35943
36367
  //#region src/agents/session-file-repair.ts
35944
36368
  function isSessionHeader(entry) {
@@ -36212,221 +36636,6 @@ function sessionLikelyHasOversizedToolResults(params) {
36212
36636
  return false;
36213
36637
  }
36214
36638
 
36215
- //#endregion
36216
- //#region src/agents/session-transcript-repair.ts
36217
- function isToolCallBlock(block) {
36218
- if (!block || typeof block !== "object") return false;
36219
- const type = block.type;
36220
- return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
36221
- }
36222
- function hasToolCallInput(block) {
36223
- const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
36224
- const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
36225
- return hasInput || hasArguments;
36226
- }
36227
- function hasNonEmptyStringField(value) {
36228
- return typeof value === "string" && value.trim().length > 0;
36229
- }
36230
- function hasToolCallId(block) {
36231
- return hasNonEmptyStringField(block.id);
36232
- }
36233
- function hasToolCallName(block) {
36234
- return hasNonEmptyStringField(block.name);
36235
- }
36236
- function makeMissingToolResult(params) {
36237
- return {
36238
- role: "toolResult",
36239
- toolCallId: params.toolCallId,
36240
- toolName: params.toolName ?? "unknown",
36241
- content: [{
36242
- type: "text",
36243
- text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
36244
- }],
36245
- isError: true,
36246
- timestamp: Date.now()
36247
- };
36248
- }
36249
- function stripToolResultDetails(messages) {
36250
- let touched = false;
36251
- const out = [];
36252
- for (const msg of messages) {
36253
- if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
36254
- out.push(msg);
36255
- continue;
36256
- }
36257
- if (!("details" in msg)) {
36258
- out.push(msg);
36259
- continue;
36260
- }
36261
- const { details: _details, ...rest } = msg;
36262
- touched = true;
36263
- out.push(rest);
36264
- }
36265
- return touched ? out : messages;
36266
- }
36267
- function repairToolCallInputs(messages) {
36268
- let droppedToolCalls = 0;
36269
- let droppedAssistantMessages = 0;
36270
- let changed = false;
36271
- const out = [];
36272
- for (const msg of messages) {
36273
- if (!msg || typeof msg !== "object") {
36274
- out.push(msg);
36275
- continue;
36276
- }
36277
- if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
36278
- out.push(msg);
36279
- continue;
36280
- }
36281
- const nextContent = [];
36282
- let droppedInMessage = 0;
36283
- for (const block of msg.content) {
36284
- if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
36285
- droppedToolCalls += 1;
36286
- droppedInMessage += 1;
36287
- changed = true;
36288
- continue;
36289
- }
36290
- nextContent.push(block);
36291
- }
36292
- if (droppedInMessage > 0) {
36293
- if (nextContent.length === 0) {
36294
- droppedAssistantMessages += 1;
36295
- changed = true;
36296
- continue;
36297
- }
36298
- out.push({
36299
- ...msg,
36300
- content: nextContent
36301
- });
36302
- continue;
36303
- }
36304
- out.push(msg);
36305
- }
36306
- return {
36307
- messages: changed ? out : messages,
36308
- droppedToolCalls,
36309
- droppedAssistantMessages
36310
- };
36311
- }
36312
- function sanitizeToolCallInputs(messages) {
36313
- return repairToolCallInputs(messages).messages;
36314
- }
36315
- function sanitizeToolUseResultPairing(messages) {
36316
- return repairToolUseResultPairing(messages).messages;
36317
- }
36318
- function repairToolUseResultPairing(messages) {
36319
- const out = [];
36320
- const added = [];
36321
- const seenToolResultIds = /* @__PURE__ */ new Set();
36322
- let droppedDuplicateCount = 0;
36323
- let droppedOrphanCount = 0;
36324
- let moved = false;
36325
- let changed = false;
36326
- const pushToolResult = (msg) => {
36327
- const id = extractToolResultId(msg);
36328
- if (id && seenToolResultIds.has(id)) {
36329
- droppedDuplicateCount += 1;
36330
- changed = true;
36331
- return;
36332
- }
36333
- if (id) seenToolResultIds.add(id);
36334
- out.push(msg);
36335
- };
36336
- for (let i = 0; i < messages.length; i += 1) {
36337
- const msg = messages[i];
36338
- if (!msg || typeof msg !== "object") {
36339
- out.push(msg);
36340
- continue;
36341
- }
36342
- const role = msg.role;
36343
- if (role !== "assistant") {
36344
- if (role !== "toolResult") out.push(msg);
36345
- else {
36346
- droppedOrphanCount += 1;
36347
- changed = true;
36348
- }
36349
- continue;
36350
- }
36351
- const assistant = msg;
36352
- const stopReason = assistant.stopReason;
36353
- if (stopReason === "error" || stopReason === "aborted") {
36354
- out.push(msg);
36355
- continue;
36356
- }
36357
- const toolCalls = extractToolCallsFromAssistant(assistant);
36358
- if (toolCalls.length === 0) {
36359
- out.push(msg);
36360
- continue;
36361
- }
36362
- const toolCallIds = new Set(toolCalls.map((t) => t.id));
36363
- const spanResultsById = /* @__PURE__ */ new Map();
36364
- const remainder = [];
36365
- let j = i + 1;
36366
- for (; j < messages.length; j += 1) {
36367
- const next = messages[j];
36368
- if (!next || typeof next !== "object") {
36369
- remainder.push(next);
36370
- continue;
36371
- }
36372
- const nextRole = next.role;
36373
- if (nextRole === "assistant") break;
36374
- if (nextRole === "toolResult") {
36375
- const toolResult = next;
36376
- const id = extractToolResultId(toolResult);
36377
- if (id && toolCallIds.has(id)) {
36378
- if (seenToolResultIds.has(id)) {
36379
- droppedDuplicateCount += 1;
36380
- changed = true;
36381
- continue;
36382
- }
36383
- if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
36384
- continue;
36385
- }
36386
- }
36387
- if (nextRole !== "toolResult") remainder.push(next);
36388
- else {
36389
- droppedOrphanCount += 1;
36390
- changed = true;
36391
- }
36392
- }
36393
- out.push(msg);
36394
- if (spanResultsById.size > 0 && remainder.length > 0) {
36395
- moved = true;
36396
- changed = true;
36397
- }
36398
- for (const call of toolCalls) {
36399
- const existing = spanResultsById.get(call.id);
36400
- if (existing) pushToolResult(existing);
36401
- else {
36402
- const missing = makeMissingToolResult({
36403
- toolCallId: call.id,
36404
- toolName: call.name
36405
- });
36406
- added.push(missing);
36407
- changed = true;
36408
- pushToolResult(missing);
36409
- }
36410
- }
36411
- for (const rem of remainder) {
36412
- if (!rem || typeof rem !== "object") {
36413
- out.push(rem);
36414
- continue;
36415
- }
36416
- out.push(rem);
36417
- }
36418
- i = j - 1;
36419
- }
36420
- const changedOrMoved = changed || moved;
36421
- return {
36422
- messages: changedOrMoved ? out : messages,
36423
- added,
36424
- droppedDuplicateCount,
36425
- droppedOrphanCount,
36426
- moved: changedOrMoved
36427
- };
36428
- }
36429
-
36430
36639
  //#endregion
36431
36640
  //#region src/agents/session-tool-result-guard.ts
36432
36641
  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.]";
@@ -36507,6 +36716,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
36507
36716
  const guardedAppend = (message) => {
36508
36717
  let nextMessage = message;
36509
36718
  if (message.role === "assistant") {
36719
+ if (isEmptyAssistantMessage(message)) {
36720
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
36721
+ return;
36722
+ }
36510
36723
  const sanitized = sanitizeToolCallInputs([message]);
36511
36724
  if (sanitized.length === 0) {
36512
36725
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -39708,6 +39921,8 @@ async function runEmbeddedAttempt(params) {
39708
39921
  });
39709
39922
  const versionCheck = await handleSessionVersion(params.sessionFile);
39710
39923
  if (versionCheck.archived) log$5.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
39924
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
39925
+ if (pruneReport.rewrote) log$5.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
39711
39926
  await prewarmSessionFile(params.sessionFile);
39712
39927
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
39713
39928
  agentId: sessionAgentId,
@@ -44080,7 +44295,7 @@ async function deliverSessionMaintenanceWarning(params) {
44080
44295
  return;
44081
44296
  }
44082
44297
  try {
44083
- const { deliverOutboundPayloads } = await import("./deliver-CXRSdUr1.js").then((n) => n.n);
44298
+ const { deliverOutboundPayloads } = await import("./deliver-Bu0iWeja.js").then((n) => n.n);
44084
44299
  await deliverOutboundPayloads({
44085
44300
  cfg: params.cfg,
44086
44301
  channel,
@@ -47534,7 +47749,7 @@ async function describeStickerImage(params) {
47534
47749
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47535
47750
  try {
47536
47751
  const buffer = await fs$1.readFile(imagePath);
47537
- const { describeImageWithModel } = await import("./image-CO4meYzg.js").then((n) => n.n);
47752
+ const { describeImageWithModel } = await import("./image-C3wYkWyK.js").then((n) => n.n);
47538
47753
  return (await describeImageWithModel({
47539
47754
  buffer,
47540
47755
  fileName: "sticker.webp",
@@ -47957,7 +48172,7 @@ function createWhatsAppLoginTool() {
47957
48172
  force: Type.Optional(Type.Boolean())
47958
48173
  }),
47959
48174
  execute: async (_toolCallId, args) => {
47960
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CqPpNO1y.js");
48175
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DPxuLEvD.js");
47961
48176
  if ((args?.action ?? "start") === "wait") {
47962
48177
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
47963
48178
  return {
@@ -49333,7 +49548,7 @@ async function preflightDiscordMessage(params) {
49333
49548
  let preflightTranscript;
49334
49549
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49335
49550
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49336
- const { transcribeFirstAudio } = await import("./audio-preflight-BuT_gIRW.js");
49551
+ const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
49337
49552
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49338
49553
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49339
49554
  ctx: {
@@ -53116,27 +53331,27 @@ function isVoiceChannelType(type) {
53116
53331
  function createDefaultDeps() {
53117
53332
  return {
53118
53333
  sendMessageWhatsApp: async (...args) => {
53119
- const { sendMessageWhatsApp } = await import("./web-DPki9fDa.js");
53334
+ const { sendMessageWhatsApp } = await import("./web-DCBOD-Vj.js");
53120
53335
  return await sendMessageWhatsApp(...args);
53121
53336
  },
53122
53337
  sendMessageTelegram: async (...args) => {
53123
- const { sendMessageTelegram } = await import("./send-CR5fRDgW.js").then((n) => n.l);
53338
+ const { sendMessageTelegram } = await import("./send-DlQtxlG_.js").then((n) => n.l);
53124
53339
  return await sendMessageTelegram(...args);
53125
53340
  },
53126
53341
  sendMessageDiscord: async (...args) => {
53127
- const { sendMessageDiscord } = await import("./send-DTTtmhjA.js").then((n) => n.t);
53342
+ const { sendMessageDiscord } = await import("./send-CC9V8V81.js").then((n) => n.t);
53128
53343
  return await sendMessageDiscord(...args);
53129
53344
  },
53130
53345
  sendMessageSlack: async (...args) => {
53131
- const { sendMessageSlack } = await import("./send-CukP8Vq4.js").then((n) => n.n);
53346
+ const { sendMessageSlack } = await import("./send-B7HhiTdx.js").then((n) => n.n);
53132
53347
  return await sendMessageSlack(...args);
53133
53348
  },
53134
53349
  sendMessageSignal: async (...args) => {
53135
- const { sendMessageSignal } = await import("./send-CY8oqBFg.js").then((n) => n.i);
53350
+ const { sendMessageSignal } = await import("./send-BhJZ16uV.js").then((n) => n.i);
53136
53351
  return await sendMessageSignal(...args);
53137
53352
  },
53138
53353
  sendMessageIMessage: async (...args) => {
53139
- const { sendMessageIMessage } = await import("./send-DK_pm_7l.js").then((n) => n.n);
53354
+ const { sendMessageIMessage } = await import("./send-DSnJ503J.js").then((n) => n.n);
53140
53355
  return await sendMessageIMessage(...args);
53141
53356
  }
53142
53357
  };
@@ -63991,7 +64206,7 @@ async function registerSlackMonitorSlashCommands(params) {
63991
64206
  });
63992
64207
  const deliverSlashPayloads = async (replies) => {
63993
64208
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
63994
- import("./replies-DO80zq73.js").then((n) => n.r),
64209
+ import("./replies-Bo49QlAg.js").then((n) => n.r),
63995
64210
  import("./chunk-CQyUJNtc.js").then((n) => n.s),
63996
64211
  import("./markdown-tables-D82z_Ahc.js").then((n) => n.t)
63997
64212
  ]);
@@ -66264,7 +66479,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66264
66479
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66265
66480
  let preflightTranscript;
66266
66481
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66267
- const { transcribeFirstAudio } = await import("./audio-preflight-BuT_gIRW.js");
66482
+ const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
66268
66483
  preflightTranscript = await transcribeFirstAudio({
66269
66484
  ctx: {
66270
66485
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -68418,23 +68633,23 @@ let webLoginQrPromise = null;
68418
68633
  let webChannelPromise = null;
68419
68634
  let whatsappActionsPromise = null;
68420
68635
  function loadWebOutbound() {
68421
- webOutboundPromise ??= import("./outbound-drXCcH8D.js").then((n) => n.t);
68636
+ webOutboundPromise ??= import("./outbound-Bt8rj9kO.js").then((n) => n.t);
68422
68637
  return webOutboundPromise;
68423
68638
  }
68424
68639
  function loadWebLogin() {
68425
- webLoginPromise ??= import("./login-tFW8qUTU.js").then((n) => n.n);
68640
+ webLoginPromise ??= import("./login-CiVdC-o_.js").then((n) => n.n);
68426
68641
  return webLoginPromise;
68427
68642
  }
68428
68643
  function loadWebLoginQr() {
68429
- webLoginQrPromise ??= import("./login-qr-CqPpNO1y.js");
68644
+ webLoginQrPromise ??= import("./login-qr-DPxuLEvD.js");
68430
68645
  return webLoginQrPromise;
68431
68646
  }
68432
68647
  function loadWebChannel() {
68433
- webChannelPromise ??= import("./web-DPki9fDa.js");
68648
+ webChannelPromise ??= import("./web-DCBOD-Vj.js");
68434
68649
  return webChannelPromise;
68435
68650
  }
68436
68651
  function loadWhatsAppActions() {
68437
- whatsappActionsPromise ??= import("./whatsapp-actions-C8nNH4ax.js");
68652
+ whatsappActionsPromise ??= import("./whatsapp-actions-7YbV2-Fv.js");
68438
68653
  return whatsappActionsPromise;
68439
68654
  }
68440
68655
  function createPluginRuntime() {