@symerian/symi 2.6.40 → 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 (343) hide show
  1. package/dist/{acp-cli-Cm65S6FL.js → acp-cli-BLUeUUA5.js} +2 -2
  2. package/dist/{acp-cli-CArw-nEj.js → acp-cli-CrEIx-c7.js} +2 -2
  3. package/dist/{agents-BUphGO8B.js → agents-B4RNdKQ3.js} +7 -7
  4. package/dist/{agents.config-bWQyGjxK.js → agents.config-CA31c0kN.js} +1 -1
  5. package/dist/{agents.config-C5FjRTiH.js → agents.config-CG2klYOg.js} +1 -1
  6. package/dist/{audio-preflight-DEJHmI9r.js → audio-preflight-CIiS5cfP.js} +11 -11
  7. package/dist/{audio-preflight-B0alOE_D.js → audio-preflight-DD18zIZd.js} +5 -5
  8. package/dist/{audio-preflight-BUO1aDLp.js → audio-preflight-K-s65jbB.js} +5 -5
  9. package/dist/{audio-preflight-EindUWk_.js → audio-preflight-XrlQA8IZ.js} +11 -11
  10. package/dist/{audit-ChxZ7_3y.js → audit-BjI_Yyr5.js} +5 -5
  11. package/dist/{audit-B_XnVSC_.js → audit-DB9YkTVX.js} +5 -5
  12. package/dist/{auth-choice-CScrqcEI.js → auth-choice-CCGIgXvF.js} +4 -4
  13. package/dist/{auth-choice-BZIJ1WP4.js → auth-choice-CiMf3Pjp.js} +4 -4
  14. package/dist/{banner-DdxLX10a.js → banner-BNsB_A87.js} +1 -1
  15. package/dist/{browser-cli-B8qCOonD.js → browser-cli-Ctn9do4z.js} +3 -3
  16. package/dist/{browser-cli-d3tBzuZB.js → browser-cli-kDUw45Y0.js} +3 -3
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +13 -13
  19. package/dist/bundled/session-memory/handler.js +13 -13
  20. package/dist/{call-CLKMnHOP.js → call-DKi-hnaF.js} +1 -1
  21. package/dist/{call-Dqx-xSZ7.js → call-DwpGquzW.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-CC5ojwB6.js → channel-options-BMQlkUDX.js} +1 -1
  24. package/dist/{channel-options-BAqgueJ5.js → channel-options-pAH4A-xX.js} +1 -1
  25. package/dist/{channel-web-_jV8VUEw.js → channel-web-Dwuj48T5.js} +7 -7
  26. package/dist/{channels-cli-1we8fBWm.js → channels-cli-CuExxB0U.js} +30 -30
  27. package/dist/{channels-cli-GldZ8ajW.js → channels-cli-rmDzxb0W.js} +29 -29
  28. package/dist/{chrome-D07ZncFh.js → chrome-BYOhnxTr.js} +8 -8
  29. package/dist/{chrome-DJn17LsI.js → chrome-BxwUEWrH.js} +1 -1
  30. package/dist/{chrome-Cixcv-qk.js → chrome-DAw-AWNi.js} +1 -1
  31. package/dist/{chrome-DtPv6OzN.js → chrome-DU2ZysN3.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-CNO5cyFx.js → cli-BPGZalMg.js} +25 -25
  34. package/dist/{cli-DZAotBEi.js → cli-Mcq2pPI0.js} +26 -26
  35. package/dist/{command-registry-DZIdLwVe.js → command-registry-BoEw2RzH.js} +11 -11
  36. package/dist/{completion-cli-BWw06AVN.js → completion-cli-CE9Xqlyx.js} +1 -1
  37. package/dist/{completion-cli-DYgPksHH.js → completion-cli-CQVZGJPg.js} +2 -2
  38. package/dist/{config-CyV6zkEL.js → config-B6OxYMgn.js} +6 -1
  39. package/dist/{config-BwQutavB.js → config-BNTB6qj8.js} +6 -1
  40. package/dist/{config-jVLwO6DP.js → config-BUTI-mUZ.js} +6 -1
  41. package/dist/{config-Bjt5P4vW.js → config-Dz95lSBW.js} +6 -1
  42. package/dist/{config-cli-DNHtgLYH.js → config-cli-BucNvr-c.js} +2 -2
  43. package/dist/{config-cli-BOS84uDD.js → config-cli-mU_ckD4l.js} +2 -2
  44. package/dist/{config-guard-bJv1t515.js → config-guard-B1skCv1C.js} +2 -2
  45. package/dist/{config-guard-BTGDJDTi.js → config-guard-CEkSg4hl.js} +3 -3
  46. package/dist/{config-validation-D1EjO6bG.js → config-validation-Cutpn5eO.js} +1 -1
  47. package/dist/{config-validation-PZAxf4DR.js → config-validation-HDVDlMSV.js} +1 -1
  48. package/dist/{configure-B7YGhbtM.js → configure-CDOF87Fk.js} +10 -10
  49. package/dist/{configure-DZQuTL_V.js → configure-CxnBcN95.js} +10 -10
  50. package/dist/{control-service-B0G5d40m.js → control-service-BYKXzY4f.js} +4 -4
  51. package/dist/{control-service-BW1BNnC1.js → control-service-rbSHSlcd.js} +4 -4
  52. package/dist/control-ui/js/app.js +41 -0
  53. package/dist/{cron-cli-B88WIOK2.js → cron-cli-DCpsXkrw.js} +3 -3
  54. package/dist/{cron-cli-QxHcrynL.js → cron-cli-QCTdVZuP.js} +3 -3
  55. package/dist/{daemon-cli-Cy45NZwV.js → daemon-cli-DSDcmWOi.js} +6 -6
  56. package/dist/{daemon-cli-DK3CCo49.js → daemon-cli-DhJYEAoL.js} +6 -6
  57. package/dist/daemon-cli.js +6 -1
  58. package/dist/{daemon-runtime-A-deduW3.js → daemon-runtime-CVFg-ZmT.js} +1 -1
  59. package/dist/{daemon-runtime-CdKAsAeg.js → daemon-runtime-mE1b-Q48.js} +1 -1
  60. package/dist/{deliver-BjpaKGTx.js → deliver-B4KZ6-oZ.js} +3 -3
  61. package/dist/{deliver-BCmoI9iE.js → deliver-Bu0iWeja.js} +3 -3
  62. package/dist/{deliver-Cm6Yfbzh.js → deliver-C1HRkzPJ.js} +2 -2
  63. package/dist/{deliver-SIVO_ZZm.js → deliver-DtuY4Wgl.js} +2 -2
  64. package/dist/{devices-cli-f3yJl6-G.js → devices-cli-BNG-fvdl.js} +2 -2
  65. package/dist/{devices-cli-D6sKbRkk.js → devices-cli-x3jIP4Ih.js} +2 -2
  66. package/dist/{directory-cli-DDb20Fzl.js → directory-cli-BxnSZZsW.js} +1 -1
  67. package/dist/{directory-cli-hohI4d8v.js → directory-cli-KgsAVTA0.js} +1 -1
  68. package/dist/{dns-cli-DIZyU_2d.js → dns-cli-BuVomfxS.js} +1 -1
  69. package/dist/{dns-cli-C1SXZIAh.js → dns-cli-Cwr92Aiq.js} +1 -1
  70. package/dist/{doctor-completion-UC-Jc5jn.js → doctor-completion-CHF_TwGQ.js} +1 -1
  71. package/dist/{doctor-completion-BayL_S0c.js → doctor-completion-CoftKlUX.js} +1 -1
  72. package/dist/{doctor-config-flow-DLtGtIf_.js → doctor-config-flow-DhAYwhNB.js} +2 -2
  73. package/dist/{doctor-config-flow-i4XYSFXR.js → doctor-config-flow-iIzSEQxb.js} +2 -2
  74. package/dist/entry.js +1 -1
  75. package/dist/{exec-approvals-cli-DpFjEahL.js → exec-approvals-cli-BSgxsdMt.js} +4 -4
  76. package/dist/{exec-approvals-cli-Cr-mrEfY.js → exec-approvals-cli-CmndFjEA.js} +4 -4
  77. package/dist/extensionAPI.js +13 -13
  78. package/dist/{gateway-cli-Cwh2BbPv.js → gateway-cli-G7fiXsQ6.js} +42 -42
  79. package/dist/{gateway-cli-BFPPqLYw.js → gateway-cli-SNaqDM7f.js} +41 -41
  80. package/dist/{gateway-rpc-CS_pPYyV.js → gateway-rpc-5fREQe9Q.js} +1 -1
  81. package/dist/{gateway-rpc-Ddqs16S-.js → gateway-rpc-BMdVa3QV.js} +1 -1
  82. package/dist/{glass-ui-ws-DB9p7t4H.js → glass-ui-ws-CF0__vuO.js} +34 -34
  83. package/dist/{glass-ui-ws-BfHJCfCz.js → glass-ui-ws-he25wGFt.js} +33 -33
  84. package/dist/{health-Bx6RQ4MZ.js → health-en2N_Kqc.js} +5 -5
  85. package/dist/{health-CLIwZbJe.js → health-q7706M36.js} +5 -5
  86. package/dist/{hooks-cli-BgALdxuB.js → hooks-cli-C4rVaLzZ.js} +26 -26
  87. package/dist/{hooks-cli-CF4fT-gm.js → hooks-cli-ChQbBpyb.js} +27 -27
  88. package/dist/{image-DI1dYFo0.js → image-BWmcNF8N.js} +2 -2
  89. package/dist/{image-KpMaj86B.js → image-C3wYkWyK.js} +2 -2
  90. package/dist/{image-BmIvgTV4.js → image-CbyTdMd5.js} +2 -2
  91. package/dist/{image-BrxGAFvc.js → image-lp19FlzF.js} +2 -2
  92. package/dist/index.js +34 -34
  93. package/dist/{lifecycle-core-BnlvcthF.js → lifecycle-core-BZ5sOcHT.js} +2 -2
  94. package/dist/{lifecycle-core-D8iU9ahw.js → lifecycle-core-C4HzGXA1.js} +2 -2
  95. package/dist/llm-slug-generator.js +13 -13
  96. package/dist/{login-CayZfsyE.js → login-BkbDSDPc.js} +2 -2
  97. package/dist/{login-bQWLSSfZ.js → login-BtBwGFrb.js} +2 -2
  98. package/dist/{login-DPxmcuIe.js → login-CiVdC-o_.js} +2 -2
  99. package/dist/{login-QU18rIZK.js → login-DODfJ3Dn.js} +2 -2
  100. package/dist/{login-qr-Bn4BQkWf.js → login-qr-CBRxijIg.js} +2 -2
  101. package/dist/{login-qr-BB2Zfn7K.js → login-qr-DPxuLEvD.js} +2 -2
  102. package/dist/{login-qr-CPn2Q7vV.js → login-qr-Dbw5m381.js} +2 -2
  103. package/dist/{login-qr-l5XwJWk9.js → login-qr-q201Ckfe.js} +2 -2
  104. package/dist/{logs-cli-COwO0YyZ.js → logs-cli-CfGj-dOg.js} +3 -3
  105. package/dist/{logs-cli-2z1YdwSX.js → logs-cli-DtlrLf7u.js} +3 -3
  106. package/dist/{memory-cli-B7GV_Iz_.js → memory-cli-Btzr8gfD.js} +1 -1
  107. package/dist/{memory-cli-9q0ppQpo.js → memory-cli-DDumUksr.js} +1 -1
  108. package/dist/{model-catalog-CsKgWlNp.js → model-catalog-8Son0J4O.js} +2 -2
  109. package/dist/{model-catalog-b9o0TtF7.js → model-catalog-DNvgFPZn.js} +2 -2
  110. package/dist/{model-picker-DBsP93uq.js → model-picker-CAm2Bftd.js} +2 -2
  111. package/dist/{model-picker-CRy3nJeT.js → model-picker-Casgrpw3.js} +2 -2
  112. package/dist/{models-CPIhph0W.js → models-DOTpfa7b.js} +8 -8
  113. package/dist/{models-cli-C01GsvW2.js → models-cli-CBl45f7R.js} +28 -28
  114. package/dist/{models-cli-CLqS4ENq.js → models-cli-MJAY_Wg4.js} +29 -29
  115. package/dist/{models-config-Bc8qKqev.js → models-config-Be8DRFkB.js} +1 -1
  116. package/dist/{models-config-BiIYPWCW.js → models-config-CFFjJPe7.js} +1 -1
  117. package/dist/{node-cli-BeZKOSYR.js → node-cli-DnfDOh1d.js} +9 -9
  118. package/dist/{node-cli-74pkmapS.js → node-cli-eHn9-YfJ.js} +9 -9
  119. package/dist/{nodes-cli-nic1q7eb.js → nodes-cli-Ci3oxw8k.js} +3 -3
  120. package/dist/{nodes-cli-DJHcnIfL.js → nodes-cli-Ct4M7JOe.js} +3 -3
  121. package/dist/{onboard-CzncEzdT.js → onboard-Bx02XPb1.js} +7 -7
  122. package/dist/{onboard-BrxB6sbz.js → onboard-DQdGJ1lE.js} +7 -7
  123. package/dist/{onboard-channels-BBUPobrz.js → onboard-channels-Bp89ZT6Q.js} +1 -1
  124. package/dist/{onboard-channels-H11ympjW.js → onboard-channels-Ct2eNYUC.js} +1 -1
  125. package/dist/{onboard-custom-BFbF4nGV.js → onboard-custom-CQOMQkfS.js} +2 -2
  126. package/dist/{onboard-custom-Bt-wDMSz.js → onboard-custom-XiomtQr7.js} +2 -2
  127. package/dist/{onboard-helpers-ChH5EhW2.js → onboard-helpers-BBtPmJEe.js} +2 -2
  128. package/dist/{onboard-helpers-MnxHJAaB.js → onboard-helpers-DFvWPFhU.js} +2 -2
  129. package/dist/{onboard-remote-57GHsVPU.js → onboard-remote-BURDxwoE.js} +1 -1
  130. package/dist/{onboard-remote-BRxgNeoe.js → onboard-remote-D-B4EiOE.js} +1 -1
  131. package/dist/{onboard-skills-DtcVRCTc.js → onboard-skills-BDCzVjxb.js} +1 -1
  132. package/dist/{onboard-skills-CLnJpRrp.js → onboard-skills-CbzgBT1W.js} +1 -1
  133. package/dist/{onboarding-D8p8ii63.js → onboarding-Dnn_0VTy.js} +10 -10
  134. package/dist/{onboarding-D7hzRo_I.js → onboarding-DxUcsrKV.js} +10 -10
  135. package/dist/{onboarding.finalize-BJUg2rlZ.js → onboarding.finalize-1kzzMLFM.js} +33 -33
  136. package/dist/{onboarding.finalize-C-rIKbkf.js → onboarding.finalize-Dwr-jEtL.js} +31 -31
  137. package/dist/{onboarding.gateway-config-CTbWQvl6.js → onboarding.gateway-config-B9zGPfCl.js} +4 -4
  138. package/dist/{onboarding.gateway-config-oxW0bLBK.js → onboarding.gateway-config-DKwJ5bWd.js} +4 -4
  139. package/dist/{outbound-BodV7hPd.js → outbound-BIOChOHt.js} +1 -1
  140. package/dist/{outbound-BOqx1b0e.js → outbound-Bt8rj9kO.js} +1 -1
  141. package/dist/{outbound-BhKz3zWF.js → outbound-DL8bdXlZ.js} +1 -1
  142. package/dist/{outbound-CG3KehgB.js → outbound-wnv03tb3.js} +1 -1
  143. package/dist/{pairing-cli-RbEs_EMc.js → pairing-cli-DSM82gJG.js} +1 -1
  144. package/dist/{pairing-cli-NErE7ajG.js → pairing-cli-HDWwcqjZ.js} +1 -1
  145. package/dist/{pi-embedded-b2yPH0UQ.js → pi-embedded-BfEg6Wwb.js} +377 -247
  146. package/dist/{pi-embedded-helpers-CeNTB0sV.js → pi-embedded-helpers-BgdB5kvy.js} +1 -1
  147. package/dist/{pi-embedded-helpers-cgZRM5cz.js → pi-embedded-helpers-DA4liAIZ.js} +1 -1
  148. package/dist/{pi-embedded-helpers-Bdac0DIf.js → pi-embedded-helpers-Dij3O6ox.js} +5 -5
  149. package/dist/{pi-embedded-helpers-BDI11Fqj.js → pi-embedded-helpers-GaCyI2oH.js} +5 -5
  150. package/dist/{pi-tools.policy-BYklnTNc.js → pi-tools.policy-DRWb_Cax.js} +2 -2
  151. package/dist/{pi-tools.policy-B4NDL7r-.js → pi-tools.policy-DxNwL7Dl.js} +2 -2
  152. package/dist/{plugin-registry-CzWOGG0k.js → plugin-registry-BMFEJ4FA.js} +2 -2
  153. package/dist/{plugin-registry-29yLAS46.js → plugin-registry-wAQeBSeD.js} +2 -2
  154. package/dist/plugin-sdk/agents/session-empty-prune.d.ts +37 -0
  155. package/dist/plugin-sdk/agents/session-transcript-repair.d.ts +8 -0
  156. package/dist/plugin-sdk/{audio-preflight-DSEypXnx.js → audio-preflight-BacDFPyc.js} +5 -5
  157. package/dist/plugin-sdk/{channel-web-DwLIjUen.js → channel-web-Ba27v-Om.js} +7 -7
  158. package/dist/plugin-sdk/{chrome-DC-la42T.js → chrome-BMimuhgP.js} +1 -1
  159. package/dist/plugin-sdk/config/model-profiles.d.ts +7 -0
  160. package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
  161. package/dist/plugin-sdk/config/zod-schema.d.ts +1 -0
  162. package/dist/plugin-sdk/{config-DgwyZd2S.js → config-DdA6JiyD.js} +6 -1
  163. package/dist/plugin-sdk/{deliver-7pgLdSpM.js → deliver-Bxa1-mj5.js} +2 -2
  164. package/dist/plugin-sdk/{image-CqMZSk6f.js → image-aq-JAobP.js} +2 -2
  165. package/dist/plugin-sdk/index.js +17 -17
  166. package/dist/plugin-sdk/{login-DJzS9QT2.js → login-CHgiUvI_.js} +2 -2
  167. package/dist/plugin-sdk/{login-qr-DziBjQY5.js → login-qr-D5vJo1fy.js} +2 -2
  168. package/dist/plugin-sdk/{outbound-DmsEc64Z.js → outbound-CD38Hxn9.js} +1 -1
  169. package/dist/plugin-sdk/{pi-embedded-helpers-C33OSgwG.js → pi-embedded-helpers-BPvzgLtj.js} +5 -5
  170. package/dist/plugin-sdk/{pw-ai-MIepjtIO.js → pw-ai-fdBOQzz5.js} +2 -2
  171. package/dist/plugin-sdk/{replies-Bw1Amxop.js → replies-CW_-4klO.js} +1 -1
  172. package/dist/plugin-sdk/{reply-BxYNpQRu.js → reply-Bok_WQGW.js} +377 -247
  173. package/dist/plugin-sdk/{runner-Bh4NdzRK.js → runner-BQJ7x06O.js} +2 -2
  174. package/dist/plugin-sdk/{send-CENVp2ol.js → send-C4t6h9-o.js} +1 -1
  175. package/dist/plugin-sdk/{send-Bf62p_ul.js → send-Cz_FQ8Ao.js} +1 -1
  176. package/dist/plugin-sdk/{send-D5_J2DiV.js → send-DG6c7BpZ.js} +1 -1
  177. package/dist/plugin-sdk/{send-P1G7c4FN.js → send-HKy51Hz_.js} +1 -1
  178. package/dist/plugin-sdk/{send-Ddy4p4LW.js → send-Xy1L54q4.js} +1 -1
  179. package/dist/plugin-sdk/{session-Z4-R_Top.js → session-BUzIlHr9.js} +1 -1
  180. package/dist/plugin-sdk/{web-DiNM_c37.js → web-BoOAa0Xn.js} +17 -17
  181. package/dist/plugin-sdk/{whatsapp-actions-Bg6DfWkN.js → whatsapp-actions-CZLagx0h.js} +2 -2
  182. package/dist/{plugins-cli-D4bGKnOF.js → plugins-cli-B36YKKla.js} +26 -26
  183. package/dist/{plugins-cli-DZ6arND4.js → plugins-cli-DoJbbST7.js} +27 -27
  184. package/dist/{program-DE9DbHYV.js → program-4f7W2RMs.js} +33 -33
  185. package/dist/{program-context-iI9_njQv.js → program-context-Y4KnAKNT.js} +38 -38
  186. package/dist/{prompt-select-styled-SHa0ZJL9.js → prompt-select-styled-D0sLJ4TD.js} +14 -14
  187. package/dist/{prompt-select-styled-D0ELdY0x.js → prompt-select-styled-Dql_0SI0.js} +14 -14
  188. package/dist/{provider-auth-helpers-EMBbfX3w.js → provider-auth-helpers-CJbHC_mv.js} +2 -2
  189. package/dist/{provider-auth-helpers-BI2k0jlH.js → provider-auth-helpers-GSv3namf.js} +2 -2
  190. package/dist/{push-apns-DyeCPAvI.js → push-apns-giplY7u-.js} +1 -1
  191. package/dist/{push-apns-DcbeaY5y.js → push-apns-sxB8QxSj.js} +1 -1
  192. package/dist/{pw-ai-LB6wkt8h.js → pw-ai-BCSFVeD5.js} +2 -2
  193. package/dist/{pw-ai-sY1BRRsq.js → pw-ai-BO5cSmwD.js} +2 -2
  194. package/dist/{pw-ai-C2z2aMEp.js → pw-ai-DQohWnzT.js} +2 -2
  195. package/dist/{pw-ai-C_7yEh9n.js → pw-ai-pQoxTh-a.js} +2 -2
  196. package/dist/{qr-cli-B-NWpxfN.js → qr-cli-CejYwqsj.js} +1 -1
  197. package/dist/{qr-cli-TaubpmtG.js → qr-cli-XttU2KOR.js} +1 -1
  198. package/dist/{register.agent-D4o7bi_u.js → register.agent-_2tVQLMK.js} +34 -34
  199. package/dist/{register.agent-D-1w3KOa.js → register.agent-vd2BSsyE.js} +32 -32
  200. package/dist/{register.configure-BIczNshG.js → register.configure-BVKwTrz8.js} +37 -37
  201. package/dist/{register.configure-BYCEJg1c.js → register.configure-D-XV6_Nb.js} +36 -36
  202. package/dist/{register.maintenance-k6z5GVrO.js → register.maintenance-BqYR2fop.js} +36 -36
  203. package/dist/{register.maintenance-Syt4oSuk.js → register.maintenance-XySU31jf.js} +34 -34
  204. package/dist/{register.message-Bi7QLNId.js → register.message-CCfWNWs3.js} +26 -26
  205. package/dist/{register.message-BJeeT9xQ.js → register.message-DOyREWdG.js} +27 -27
  206. package/dist/{register.onboard-B_FeHkL-.js → register.onboard-Dy_D_uMj.js} +33 -33
  207. package/dist/{register.onboard-DDbxMjmt.js → register.onboard-zmF-euog.js} +32 -32
  208. package/dist/{register.setup-Cpl67hQ6.js → register.setup-DiGPa1Fw.js} +32 -32
  209. package/dist/{register.setup-CPi3uss4.js → register.setup-cE7gPp2m.js} +33 -33
  210. package/dist/{register.status-health-sessions-DsY8YuEo.js → register.status-health-sessions-DWKL1rkz.js} +29 -29
  211. package/dist/{register.status-health-sessions-CHPN3CNt.js → register.status-health-sessions-ksv1WnIs.js} +31 -31
  212. package/dist/{register.subclis-D5JRuk93.js → register.subclis-Crt_IYK0.js} +28 -28
  213. package/dist/{replies-cMkt1-fW.js → replies-BMqtgBhh.js} +1 -1
  214. package/dist/{replies-CYuZN9PJ.js → replies-Bo49QlAg.js} +1 -1
  215. package/dist/{replies-C2sQt_cX.js → replies-CBS0567j.js} +1 -1
  216. package/dist/{replies-zOTZyd6v.js → replies-CfyMcfoY.js} +1 -1
  217. package/dist/{reply-D55iMWI5.js → reply-CjYJHt_H.js} +388 -258
  218. package/dist/{routes-ClhmdN8I.js → routes-BAZTZNuQ.js} +3 -3
  219. package/dist/{routes-DRkO6iuR.js → routes-CMvgBDOg.js} +3 -3
  220. package/dist/{rpc-DvA01fCj.js → rpc-Co5PQ3IJ.js} +1 -1
  221. package/dist/{rpc-UsQvUYIP.js → rpc-D0FiEinj.js} +1 -1
  222. package/dist/{run-main-BWoPODyq.js → run-main-bOlPbL7t.js} +44 -44
  223. package/dist/{runner-_7xOqQDP.js → runner-B0AbN8wV.js} +2 -2
  224. package/dist/{runner-CtF7EgsD.js → runner-Ct0suQrd.js} +2 -2
  225. package/dist/{runner-D3aZ5p3H.js → runner-DRv0uCK_.js} +3 -3
  226. package/dist/{runner-z_tSZGY5.js → runner-Dd2bbNGV.js} +3 -3
  227. package/dist/{sandbox-rjqN2SHD.js → sandbox-B6N8cV4d.js} +5 -5
  228. package/dist/{sandbox-DrIHYiE6.js → sandbox-DY75ZyJD.js} +5 -5
  229. package/dist/{sandbox-cli-QpZpJ6Hq.js → sandbox-cli-BDM_QM_f.js} +6 -6
  230. package/dist/{sandbox-cli-BiiThMpq.js → sandbox-cli-DwzaNjIJ.js} +6 -6
  231. package/dist/{security-cli-DxNPZzVB.js → security-cli-CG1uSlRK.js} +9 -9
  232. package/dist/{security-cli-s_AbIm-b.js → security-cli-D5BWzqEJ.js} +9 -9
  233. package/dist/{send-C1ptDV-M.js → send-9SapUCg7.js} +1 -1
  234. package/dist/{send-DV8npIWi.js → send-B3RdXvjC.js} +1 -1
  235. package/dist/{send-CVSO0ZdD.js → send-B7HhiTdx.js} +1 -1
  236. package/dist/{send-DryK_KEK.js → send-B986asZ7.js} +1 -1
  237. package/dist/{send-DNJAa7Q_.js → send-B9EinkUl.js} +1 -1
  238. package/dist/{send-De1p8sZA.js → send-BNnv8GtF.js} +1 -1
  239. package/dist/{send-B9pwTYyE.js → send-BhJZ16uV.js} +1 -1
  240. package/dist/{send-B62vYwo8.js → send-Bm4ULEzh.js} +1 -1
  241. package/dist/{send-BJNUY-9E.js → send-BzKHnf3b.js} +1 -1
  242. package/dist/{send-C6jy9sVB.js → send-CC9V8V81.js} +1 -1
  243. package/dist/{send-DK-Jat_i.js → send-CQVnyJyF.js} +1 -1
  244. package/dist/{send-Dx7S4jGp.js → send-CZemAajS.js} +1 -1
  245. package/dist/{send-BTXR3fPR.js → send-DI9Vhnmw.js} +1 -1
  246. package/dist/{send-BvCit35j.js → send-DLWaX69q.js} +1 -1
  247. package/dist/{send-qSITFlVc.js → send-DSnJ503J.js} +1 -1
  248. package/dist/{send-B7MtdeLq.js → send-DVm0du0_.js} +1 -1
  249. package/dist/{send-D8DhbDGm.js → send-DaBsat3L.js} +1 -1
  250. package/dist/{send-iIqnmxNc.js → send-DdLJtOjk.js} +1 -1
  251. package/dist/{send-4MJyhXk5.js → send-DlQtxlG_.js} +1 -1
  252. package/dist/{send-DiYc3Z2y.js → send-RfIXG6-I.js} +1 -1
  253. package/dist/{server-context-C3fvq6h5.js → server-context-CCBZN8a0.js} +5 -5
  254. package/dist/{server-context-CtYkBX0P.js → server-context-DK-T2rBR.js} +5 -5
  255. package/dist/{server-methods-DY-jApXo.js → server-methods-CiwWwj6K.js} +15 -15
  256. package/dist/{server-methods-C4oRmj--.js → server-methods-VimYvcpY.js} +16 -16
  257. package/dist/{server-node-events--9s3cGoR.js → server-node-events-CHmLiFNV.js} +27 -27
  258. package/dist/{server-node-events-Bw6yFsJP.js → server-node-events-DYC45lKC.js} +26 -26
  259. package/dist/{session-XfYb9nxX.js → session-C1cn-CxQ.js} +1 -1
  260. package/dist/{session-BmC1G2OF.js → session-CUeezgP1.js} +1 -1
  261. package/dist/{session-3P44Lx9Z.js → session-DsJGtM7g.js} +1 -1
  262. package/dist/{session-utils-DlQSI-Te.js → session-utils-B8Fif925.js} +3 -3
  263. package/dist/{session-BUTPdQjj.js → session-v_9AVJhH.js} +1 -1
  264. package/dist/{sessions-Dxc5UV-H.js → sessions-Cfa6JEB3.js} +1 -1
  265. package/dist/{sessions-9tWmT3oM.js → sessions-Cpgnq0pA.js} +1 -1
  266. package/dist/{sessions-BL_hivz0.js → sessions-DfbhRBHR.js} +3 -3
  267. package/dist/{shared-DEvSdt0I.js → shared-73T9fyuK.js} +1 -1
  268. package/dist/{shared-DwzDlNQn.js → shared-DdxPzyOH.js} +1 -1
  269. package/dist/{skills-cli-BHJAAvDv.js → skills-cli-DXkx4vNV.js} +1 -1
  270. package/dist/{skills-cli-CES7tX87.js → skills-cli-uEA9KXOO.js} +1 -1
  271. package/dist/{status-DxqgzaIz.js → status-CA5wJHMj.js} +2 -2
  272. package/dist/{status-CfCqG5a6.js → status-DEpM69Pd.js} +9 -9
  273. package/dist/{status-CPQrmN1p.js → status-Dt_MXoNa.js} +2 -2
  274. package/dist/{status-DZHTCKq_.js → status-DxhtJtzE.js} +10 -10
  275. package/dist/{status.update-BhJp4NkS.js → status.update-C2GN8s9C.js} +1 -1
  276. package/dist/{status.update-DqXGFKta.js → status.update-CG0ciGaf.js} +1 -1
  277. package/dist/{subagent-registry-BGKDFTRA.js → subagent-registry-BPwn3Qm7.js} +389 -259
  278. package/dist/{system-cli-BrZGQcZl.js → system-cli-DFZNGx0i.js} +3 -3
  279. package/dist/{system-cli-CjgIC8rh.js → system-cli-Z7uzO8qd.js} +3 -3
  280. package/dist/{systemd-hints-B8AHs8Nn.js → systemd-hints-DT6cDIM2.js} +1 -1
  281. package/dist/{systemd-hints-DUXXob94.js → systemd-hints-xYZbFny_.js} +1 -1
  282. package/dist/{tui-BktCSga7.js → tui-DjPsMdL6.js} +4 -4
  283. package/dist/{tui-CAzxJ9EP.js → tui-DrATGNms.js} +4 -4
  284. package/dist/{tui-cli-AXeYpVcb.js → tui-cli-D19-MCXt.js} +9 -9
  285. package/dist/{tui-cli-Bz3RdHqe.js → tui-cli-pWD_NrUR.js} +9 -9
  286. package/dist/{unified-runner-BhGMOS0G.js → unified-runner-CVkyzT1I.js} +166 -36
  287. package/dist/{update-cli-n_Tkv8N_.js → update-cli-Dh_dfprI.js} +39 -39
  288. package/dist/{update-cli-C8EpxduY.js → update-cli-Dv4c5Gup.js} +37 -37
  289. package/dist/{update-runner-CowTMnrt.js → update-runner-CG_kbbGR.js} +1 -1
  290. package/dist/{update-runner-Tk50GxTW.js → update-runner-MMFI1UZ0.js} +1 -1
  291. package/dist/{web-CMLJq-WC.js → web-BUc-ts5b.js} +16 -16
  292. package/dist/{web-Cz8o-Hc9.js → web-CJk-lv93.js} +16 -16
  293. package/dist/{web-ONk39lyq.js → web-CfVd3Mhp.js} +29 -29
  294. package/dist/{web-BIpIz8vD.js → web-DCBOD-Vj.js} +29 -29
  295. package/dist/{webhooks-cli-v0rfBwU8.js → webhooks-cli-BRxe4uCg.js} +1 -1
  296. package/dist/{webhooks-cli-Da8YhVu4.js → webhooks-cli-CsRZl0_H.js} +1 -1
  297. package/dist/{whatsapp-actions-Cz2qhCrD.js → whatsapp-actions-7YbV2-Fv.js} +2 -2
  298. package/dist/{whatsapp-actions-Ba3KBpGu.js → whatsapp-actions-BylecqEa.js} +2 -2
  299. package/dist/{whatsapp-actions-AEeCOVko.js → whatsapp-actions-ChO_shrk.js} +2 -2
  300. package/dist/{whatsapp-actions-BPn8FtPC.js → whatsapp-actions-mBarFBeS.js} +2 -2
  301. package/dist/{with-timeout-487M8IgO.js → with-timeout-Cgi3TwWN.js} +1 -1
  302. package/dist/{with-timeout-BU7MJQDD.js → with-timeout-CtVdu_1U.js} +1 -1
  303. package/extensions/bluebubbles/package.json +1 -1
  304. package/extensions/copilot-proxy/package.json +1 -1
  305. package/extensions/diagnostics-otel/package.json +1 -1
  306. package/extensions/discord/package.json +1 -1
  307. package/extensions/feishu/package.json +1 -1
  308. package/extensions/google-antigravity-auth/package.json +1 -1
  309. package/extensions/google-gemini-cli-auth/package.json +1 -1
  310. package/extensions/googlechat/package.json +1 -1
  311. package/extensions/imessage/package.json +1 -1
  312. package/extensions/irc/package.json +1 -1
  313. package/extensions/learning-loop/package.json +1 -1
  314. package/extensions/line/package.json +1 -1
  315. package/extensions/llm-task/package.json +1 -1
  316. package/extensions/matrix/CHANGELOG.md +6 -0
  317. package/extensions/matrix/package.json +1 -1
  318. package/extensions/mattermost/package.json +1 -1
  319. package/extensions/memory-core/package.json +1 -1
  320. package/extensions/memory-lancedb/package.json +1 -1
  321. package/extensions/minimax-portal-auth/package.json +1 -1
  322. package/extensions/msteams/CHANGELOG.md +6 -0
  323. package/extensions/msteams/package.json +1 -1
  324. package/extensions/nextcloud-talk/package.json +1 -1
  325. package/extensions/nostr/CHANGELOG.md +6 -0
  326. package/extensions/nostr/package.json +1 -1
  327. package/extensions/open-prose/package.json +1 -1
  328. package/extensions/outlook/package.json +1 -1
  329. package/extensions/pipeline/package.json +1 -1
  330. package/extensions/signal/package.json +1 -1
  331. package/extensions/slack/package.json +1 -1
  332. package/extensions/telegram/package.json +1 -1
  333. package/extensions/tlon/package.json +1 -1
  334. package/extensions/twitch/CHANGELOG.md +6 -0
  335. package/extensions/twitch/package.json +1 -1
  336. package/extensions/voice-call/CHANGELOG.md +6 -0
  337. package/extensions/voice-call/package.json +1 -1
  338. package/extensions/whatsapp/package.json +1 -1
  339. package/extensions/zalo/CHANGELOG.md +6 -0
  340. package/extensions/zalo/package.json +1 -1
  341. package/extensions/zalouser/CHANGELOG.md +6 -0
  342. package/extensions/zalouser/package.json +1 -1
  343. package/package.json +1 -1
@@ -9,14 +9,14 @@ import "./github-copilot-token-DAu1a6BX.js";
9
9
  import "./boolean-BsqeuxE6.js";
10
10
  import "./env-DPCHYPeH.js";
11
11
  import "./message-channel-aT-I_DTX.js";
12
- import "./config-Bjt5P4vW.js";
12
+ import "./config-Dz95lSBW.js";
13
13
  import "./manifest-registry-C4BxOMWX.js";
14
14
  import "./client-jI1oE0_k.js";
15
- import "./call-Dqx-xSZ7.js";
15
+ import "./call-DwpGquzW.js";
16
16
  import "./pairing-token-CX3NN_qj.js";
17
17
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
18
18
  import "./progress-jIePzvGA.js";
19
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CS_pPYyV.js";
19
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-5fREQe9Q.js";
20
20
 
21
21
  //#region src/cli/system-cli.ts
22
22
  const normalizeWakeMode = (raw) => {
@@ -4,14 +4,14 @@ import "./exec-CBKBIMpA.js";
4
4
  import "./agent-scope-D-jRCY0d.js";
5
5
  import "./github-copilot-token-DuFIqfeC.js";
6
6
  import "./manifest-registry-Czr39pxG.js";
7
- import "./config-BwQutavB.js";
7
+ import "./config-BNTB6qj8.js";
8
8
  import "./client-T3qcxXru.js";
9
- import "./call-CLKMnHOP.js";
9
+ import "./call-DKi-hnaF.js";
10
10
  import "./message-channel-C9dERklz.js";
11
11
  import "./pairing-token-Byh6drgn.js";
12
12
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
13
13
  import "./progress-BAHiAaDW.js";
14
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Ddqs16S-.js";
14
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BMdVa3QV.js";
15
15
 
16
16
  //#region src/cli/system-cli.ts
17
17
  const normalizeWakeMode = (raw) => {
@@ -1,5 +1,5 @@
1
1
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
2
- import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime-A-deduW3.js";
2
+ import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime-CVFg-ZmT.js";
3
3
  import { o as resolveSystemdUserUnitPath } from "./systemd-DlMdyFDY.js";
4
4
  import { c as resolveLaunchAgentPlistPath } from "./service-Cm9j9WzQ.js";
5
5
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-hFVEC3wO.js";
@@ -1,5 +1,5 @@
1
1
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
2
- import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime-CdKAsAeg.js";
2
+ import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime-mE1b-Q48.js";
3
3
  import { o as resolveSystemdUserUnitPath } from "./systemd-DT6SbCim.js";
4
4
  import { c as resolveLaunchAgentPlistPath } from "./service-osK70kTZ.js";
5
5
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D6c3G7my.js";
@@ -3,13 +3,13 @@ import { S as parseAgentSessionKey, c as normalizeMainKey, r as buildAgentMainSe
3
3
  import { l as stripAnsi, u as visibleWidth } from "./subsystem-D9vIQve0.js";
4
4
  import { l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
5
5
  import { f as GATEWAY_CLIENT_CAPS, h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-aT-I_DTX.js";
6
- import { H as VERSION, i as loadConfig } from "./config-Bjt5P4vW.js";
7
- import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-CeNTB0sV.js";
8
- import { k as stripLeadingInboundMetadata } from "./sessions-9tWmT3oM.js";
6
+ import { H as VERSION, i as loadConfig } from "./config-Dz95lSBW.js";
7
+ import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-BgdB5kvy.js";
8
+ import { k as stripLeadingInboundMetadata } from "./sessions-Cpgnq0pA.js";
9
9
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-D8N3rsYt.js";
10
10
  import { a as listChatCommandsForConfig, i as listChatCommands } from "./commands-registry-BT0-zzs3.js";
11
11
  import { At as PROTOCOL_VERSION, t as GatewayClient } from "./client-jI1oE0_k.js";
12
- import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-Dqx-xSZ7.js";
12
+ import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-DwpGquzW.js";
13
13
  import { n as formatTimeAgo, t as formatRelativeTimestamp } from "./format-relative-BXoxEQVN.js";
14
14
  import { n as formatTokenCount } from "./usage-format-BgUx3Bm4.js";
15
15
  import chalk from "chalk";
@@ -1,12 +1,12 @@
1
1
  import { h as visibleWidth, m as stripAnsi } from "./entry.js";
2
2
  import { S as parseAgentSessionKey, c as normalizeMainKey, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-DjZ7Z1hW.js";
3
3
  import { l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
- import { H as VERSION, i as loadConfig } from "./config-BwQutavB.js";
4
+ import { H as VERSION, i as loadConfig } from "./config-BNTB6qj8.js";
5
5
  import { At as PROTOCOL_VERSION, t as GatewayClient } from "./client-T3qcxXru.js";
6
- import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-CLKMnHOP.js";
6
+ import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-DKi-hnaF.js";
7
7
  import { f as GATEWAY_CLIENT_CAPS, h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
8
- import { C as stripLeadingInboundMetadata } from "./sessions-Dxc5UV-H.js";
9
- import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-cgZRM5cz.js";
8
+ import { C as stripLeadingInboundMetadata } from "./sessions-Cfa6JEB3.js";
9
+ import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-DA4liAIZ.js";
10
10
  import { c as normalizeUsageDisplay, r as listThinkingLevelLabels, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
11
11
  import { a as listChatCommandsForConfig, i as listChatCommands } from "./commands-registry-D1K_inhv.js";
12
12
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-CXwOC-qw.js";
@@ -6,25 +6,25 @@ import "./github-copilot-token-DuFIqfeC.js";
6
6
  import "./frontmatter-B8duUx_6.js";
7
7
  import "./skills-hAdgFdrv.js";
8
8
  import "./manifest-registry-Czr39pxG.js";
9
- import "./config-BwQutavB.js";
9
+ import "./config-BNTB6qj8.js";
10
10
  import "./client-T3qcxXru.js";
11
- import "./call-CLKMnHOP.js";
11
+ import "./call-DKi-hnaF.js";
12
12
  import "./message-channel-C9dERklz.js";
13
13
  import "./pairing-token-Byh6drgn.js";
14
- import "./sessions-Dxc5UV-H.js";
14
+ import "./sessions-Cfa6JEB3.js";
15
15
  import "./plugins-CwSlLxM8.js";
16
16
  import "./accounts-D9ITgITj.js";
17
17
  import "./bindings-DlWb_Kaq.js";
18
18
  import "./logging-CFvkxgcX.js";
19
19
  import "./accounts-D1eLj5t8.js";
20
20
  import "./image-ops-CUkaZz2F.js";
21
- import "./pi-embedded-helpers-cgZRM5cz.js";
22
- import "./sandbox-DrIHYiE6.js";
23
- import "./chrome-Cixcv-qk.js";
21
+ import "./pi-embedded-helpers-DA4liAIZ.js";
22
+ import "./sandbox-DY75ZyJD.js";
23
+ import "./chrome-DAw-AWNi.js";
24
24
  import "./tailscale-CbbvYNVw.js";
25
25
  import "./auth-BfDMhFAj.js";
26
- import "./server-context-CtYkBX0P.js";
27
- import "./routes-DRkO6iuR.js";
26
+ import "./server-context-DK-T2rBR.js";
27
+ import "./routes-CMvgBDOg.js";
28
28
  import "./redact-B40lik2B.js";
29
29
  import "./errors-Ba_ROWsq.js";
30
30
  import "./fs-safe-CERgjtot.js";
@@ -43,7 +43,7 @@ import "./commands-registry-D1K_inhv.js";
43
43
  import "./tool-display-CXwOC-qw.js";
44
44
  import { t as parseTimeoutMs } from "./parse-timeout-zNJBr1fY.js";
45
45
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
46
- import { t as runTui } from "./tui-CAzxJ9EP.js";
46
+ import { t as runTui } from "./tui-DrATGNms.js";
47
47
 
48
48
  //#region src/cli/tui-cli.ts
49
49
  function registerTuiCli(program) {
@@ -10,17 +10,17 @@ import "./github-copilot-token-DAu1a6BX.js";
10
10
  import "./boolean-BsqeuxE6.js";
11
11
  import "./env-DPCHYPeH.js";
12
12
  import "./message-channel-aT-I_DTX.js";
13
- import "./config-Bjt5P4vW.js";
13
+ import "./config-Dz95lSBW.js";
14
14
  import "./manifest-registry-C4BxOMWX.js";
15
- import "./pi-embedded-helpers-CeNTB0sV.js";
16
- import "./sandbox-rjqN2SHD.js";
17
- import "./chrome-DtPv6OzN.js";
15
+ import "./pi-embedded-helpers-BgdB5kvy.js";
16
+ import "./sandbox-B6N8cV4d.js";
17
+ import "./chrome-DU2ZysN3.js";
18
18
  import "./tailscale-D5dKabOc.js";
19
19
  import "./auth-B741uFtk.js";
20
- import "./server-context-C3fvq6h5.js";
20
+ import "./server-context-CCBZN8a0.js";
21
21
  import "./frontmatter-DWQhtOo7.js";
22
22
  import "./skills-6jdJQ5ZL.js";
23
- import "./routes-ClhmdN8I.js";
23
+ import "./routes-BAZTZNuQ.js";
24
24
  import "./redact-f-Q-hFt_.js";
25
25
  import "./errors-BF3TeRH2.js";
26
26
  import "./fs-safe-CUjO1ca2.js";
@@ -30,7 +30,7 @@ import "./image-ops-1OJMSAUX.js";
30
30
  import "./store-r1DJSDq-.js";
31
31
  import "./ports-BOmtxoTv.js";
32
32
  import "./trash-DcMh1i4B.js";
33
- import "./sessions-9tWmT3oM.js";
33
+ import "./sessions-Cpgnq0pA.js";
34
34
  import "./dock-BhS32F6E.js";
35
35
  import "./plugins-DKDeQZF0.js";
36
36
  import "./accounts-DDuIpcln.js";
@@ -44,11 +44,11 @@ import "./tool-display-D8N3rsYt.js";
44
44
  import "./commands-BNLCWX6e.js";
45
45
  import "./commands-registry-BT0-zzs3.js";
46
46
  import "./client-jI1oE0_k.js";
47
- import "./call-Dqx-xSZ7.js";
47
+ import "./call-DwpGquzW.js";
48
48
  import "./pairing-token-CX3NN_qj.js";
49
49
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
50
50
  import { t as parseTimeoutMs } from "./parse-timeout-2S5vp0-9.js";
51
- import { t as runTui } from "./tui-BktCSga7.js";
51
+ import { t as runTui } from "./tui-DjPsMdL6.js";
52
52
 
53
53
  //#region src/cli/tui-cli.ts
54
54
  function registerTuiCli(program) {
@@ -10,10 +10,10 @@ import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C a
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-BDI11Fqj.js";
14
- import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-CyV6zkEL.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-GaCyI2oH.js";
14
+ import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-B6OxYMgn.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-yb7sAlu4.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D07ZncFh.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BYOhnxTr.js";
17
17
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-Bs0AW1g3.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
19
  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-C7CauEK8.js";
@@ -27,17 +27,17 @@ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTele
27
27
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-BRw8yhIW.js";
28
28
  import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
29
29
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BuZxOb3B.js";
30
- 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-BTXR3fPR.js";
31
- 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-De1p8sZA.js";
30
+ 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-DI9Vhnmw.js";
31
+ 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-BNnv8GtF.js";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
33
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
34
- 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-Cm6Yfbzh.js";
34
+ 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-C1HRkzPJ.js";
35
35
  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-CQiU0O8b.js";
36
36
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
37
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BmIvgTV4.js";
37
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CbyTdMd5.js";
38
38
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CCaxCywz.js";
39
39
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-W0JzCJJM.js";
40
- import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-D8DhbDGm.js";
40
+ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DaBsat3L.js";
41
41
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
42
42
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
43
43
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CJ3M1Uxq.js";
@@ -50,7 +50,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Cj6k
50
50
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Se92wAN5.js";
51
51
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-JAy_3A3B.js";
52
52
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BSvi46KZ.js";
53
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-_7xOqQDP.js";
53
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-B0AbN8wV.js";
54
54
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-BiPrghRt.js";
55
55
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-Dvqh1Tgb.js";
56
56
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Dnti0cFs.js";
@@ -58,11 +58,11 @@ import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-po
58
58
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D-kw83R0.js";
59
59
  import { n as normalizePollInput } from "./polls-BKbIUHj7.js";
60
60
  import { t as convertMarkdownTables } from "./tables-BuM4FKR3.js";
61
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-Dx7S4jGp.js";
62
- 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-DNJAa7Q_.js";
61
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-CZemAajS.js";
62
+ 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-B9EinkUl.js";
63
63
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-DX7xcMsD.js";
64
64
  import { t as makeProxyFetch } from "./proxy-DVy9foH0.js";
65
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-C2sQt_cX.js";
65
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CBS0567j.js";
66
66
  import { t as getActiveWebListener } from "./active-listener-Br2FcRv7.js";
67
67
  import { createRequire } from "node:module";
68
68
  import * as path$1 from "node:path";
@@ -81,7 +81,7 @@ import AjvPkg from "ajv";
81
81
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
+ import WebSocket$1, { WebSocket } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { EdgeTTS } from "node-edge-tts";
87
87
  import { createJiti } from "jiti";
@@ -225,7 +225,8 @@ const BUILTIN_PROFILES = [
225
225
  top_p: .95,
226
226
  top_k: 20,
227
227
  max_tokens: 16384,
228
- presence_penalty: 1.5
228
+ presence_penalty: 1.5,
229
+ chatTemplateKwargs: { preserve_thinking: true }
229
230
  },
230
231
  streaming: {
231
232
  deltaThrottleMs: 50,
@@ -5498,6 +5499,36 @@ function makeMissingToolResult(params) {
5498
5499
  timestamp: Date.now()
5499
5500
  };
5500
5501
  }
5502
+ /**
5503
+ * True when an assistant message has no tool calls and only empty/whitespace
5504
+ * text or thinking blocks. This happens when a stream fails before any
5505
+ * content arrives — the blank entry is otherwise persisted and produces
5506
+ * consecutive same-role messages, which strict providers (vLLM) reject with
5507
+ * "role must alternate" errors that poison the session for every future turn.
5508
+ */
5509
+ function isEmptyAssistantMessage(message) {
5510
+ if (!message || typeof message !== "object") return false;
5511
+ const msg = message;
5512
+ if (msg.role !== "assistant") return false;
5513
+ if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
5514
+ for (const block of msg.content) {
5515
+ if (!block || typeof block !== "object") continue;
5516
+ const type = block.type;
5517
+ if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
5518
+ if (type === "text") {
5519
+ const text = block.text;
5520
+ if (typeof text === "string" && text.trim().length > 0) return false;
5521
+ continue;
5522
+ }
5523
+ if (type === "thinking") {
5524
+ const thinking = block.thinking;
5525
+ if (typeof thinking === "string" && thinking.trim().length > 0) return false;
5526
+ continue;
5527
+ }
5528
+ return false;
5529
+ }
5530
+ return true;
5531
+ }
5501
5532
  function stripToolResultDetails(messages) {
5502
5533
  let touched = false;
5503
5534
  const out = [];
@@ -8751,7 +8782,7 @@ var GatewayClient = class {
8751
8782
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8752
8783
  });
8753
8784
  }
8754
- this.ws = new WebSocket$1(url, wsOptions);
8785
+ this.ws = new WebSocket(url, wsOptions);
8755
8786
  this.ws.on("open", () => {
8756
8787
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8757
8788
  const tlsError = this.validateTlsFingerprint();
@@ -8970,7 +9001,7 @@ var GatewayClient = class {
8970
9001
  return null;
8971
9002
  }
8972
9003
  async request(method, params, opts) {
8973
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
9004
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8974
9005
  const id = randomUUID();
8975
9006
  const frame = {
8976
9007
  type: "req",
@@ -10236,7 +10267,7 @@ async function routeReply(params) {
10236
10267
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10237
10268
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10238
10269
  try {
10239
- const { deliverOutboundPayloads } = await import("./deliver-Cm6Yfbzh.js").then((n) => n.n);
10270
+ const { deliverOutboundPayloads } = await import("./deliver-C1HRkzPJ.js").then((n) => n.n);
10240
10271
  return {
10241
10272
  ok: true,
10242
10273
  messageId: (await deliverOutboundPayloads({
@@ -43677,7 +43708,7 @@ async function deliverSessionMaintenanceWarning(params) {
43677
43708
  return;
43678
43709
  }
43679
43710
  try {
43680
- const { deliverOutboundPayloads } = await import("./deliver-Cm6Yfbzh.js").then((n) => n.n);
43711
+ const { deliverOutboundPayloads } = await import("./deliver-C1HRkzPJ.js").then((n) => n.n);
43681
43712
  await deliverOutboundPayloads({
43682
43713
  cfg: params.cfg,
43683
43714
  channel,
@@ -47123,7 +47154,7 @@ async function describeStickerImage(params) {
47123
47154
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47124
47155
  try {
47125
47156
  const buffer = await fs$1.readFile(imagePath);
47126
- const { describeImageWithModel } = await import("./image-BmIvgTV4.js").then((n) => n.n);
47157
+ const { describeImageWithModel } = await import("./image-CbyTdMd5.js").then((n) => n.n);
47127
47158
  return (await describeImageWithModel({
47128
47159
  buffer,
47129
47160
  fileName: "sticker.webp",
@@ -47546,7 +47577,7 @@ function createWhatsAppLoginTool() {
47546
47577
  force: Type.Optional(Type.Boolean())
47547
47578
  }),
47548
47579
  execute: async (_toolCallId, args) => {
47549
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-l5XwJWk9.js");
47580
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-q201Ckfe.js");
47550
47581
  if ((args?.action ?? "start") === "wait") {
47551
47582
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
47552
47583
  return {
@@ -49785,7 +49816,7 @@ async function preflightDiscordMessage(params) {
49785
49816
  let preflightTranscript;
49786
49817
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49787
49818
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49788
- const { transcribeFirstAudio } = await import("./audio-preflight-BUO1aDLp.js");
49819
+ const { transcribeFirstAudio } = await import("./audio-preflight-K-s65jbB.js");
49789
49820
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49790
49821
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49791
49822
  ctx: {
@@ -53791,27 +53822,27 @@ function isVoiceChannelType(type) {
53791
53822
  function createDefaultDeps() {
53792
53823
  return {
53793
53824
  sendMessageWhatsApp: async (...args) => {
53794
- const { sendMessageWhatsApp } = await import("./web-CMLJq-WC.js");
53825
+ const { sendMessageWhatsApp } = await import("./web-BUc-ts5b.js");
53795
53826
  return await sendMessageWhatsApp(...args);
53796
53827
  },
53797
53828
  sendMessageTelegram: async (...args) => {
53798
- const { sendMessageTelegram } = await import("./send-D8DhbDGm.js").then((n) => n.l);
53829
+ const { sendMessageTelegram } = await import("./send-DaBsat3L.js").then((n) => n.l);
53799
53830
  return await sendMessageTelegram(...args);
53800
53831
  },
53801
53832
  sendMessageDiscord: async (...args) => {
53802
- const { sendMessageDiscord } = await import("./send-De1p8sZA.js").then((n) => n.t);
53833
+ const { sendMessageDiscord } = await import("./send-BNnv8GtF.js").then((n) => n.t);
53803
53834
  return await sendMessageDiscord(...args);
53804
53835
  },
53805
53836
  sendMessageSlack: async (...args) => {
53806
- const { sendMessageSlack } = await import("./send-BTXR3fPR.js").then((n) => n.n);
53837
+ const { sendMessageSlack } = await import("./send-DI9Vhnmw.js").then((n) => n.n);
53807
53838
  return await sendMessageSlack(...args);
53808
53839
  },
53809
53840
  sendMessageSignal: async (...args) => {
53810
- const { sendMessageSignal } = await import("./send-Dx7S4jGp.js").then((n) => n.i);
53841
+ const { sendMessageSignal } = await import("./send-CZemAajS.js").then((n) => n.i);
53811
53842
  return await sendMessageSignal(...args);
53812
53843
  },
53813
53844
  sendMessageIMessage: async (...args) => {
53814
- const { sendMessageIMessage } = await import("./send-DNJAa7Q_.js").then((n) => n.n);
53845
+ const { sendMessageIMessage } = await import("./send-B9EinkUl.js").then((n) => n.n);
53815
53846
  return await sendMessageIMessage(...args);
53816
53847
  }
53817
53848
  };
@@ -56696,7 +56727,7 @@ function createDiscordGatewayPlugin(params) {
56696
56727
  super(options);
56697
56728
  }
56698
56729
  createWebSocket(url) {
56699
- return new WebSocket(url, { agent });
56730
+ return new WebSocket$1(url, { agent });
56700
56731
  }
56701
56732
  }
56702
56733
  return new ProxyGatewayPlugin();
@@ -64641,7 +64672,7 @@ async function registerSlackMonitorSlashCommands(params) {
64641
64672
  });
64642
64673
  const deliverSlashPayloads = async (replies) => {
64643
64674
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
64644
- import("./replies-C2sQt_cX.js").then((n) => n.r),
64675
+ import("./replies-CBS0567j.js").then((n) => n.r),
64645
64676
  import("./chunk-BHW8Yu5A.js").then((n) => n.s),
64646
64677
  import("./markdown-tables-Dnj2LQUc.js").then((n) => n.t)
64647
64678
  ]);
@@ -66914,7 +66945,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66914
66945
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66915
66946
  let preflightTranscript;
66916
66947
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66917
- const { transcribeFirstAudio } = await import("./audio-preflight-BUO1aDLp.js");
66948
+ const { transcribeFirstAudio } = await import("./audio-preflight-K-s65jbB.js");
66918
66949
  preflightTranscript = await transcribeFirstAudio({
66919
66950
  ctx: {
66920
66951
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -69059,23 +69090,23 @@ let webLoginQrPromise = null;
69059
69090
  let webChannelPromise = null;
69060
69091
  let whatsappActionsPromise = null;
69061
69092
  function loadWebOutbound() {
69062
- webOutboundPromise ??= import("./outbound-BhKz3zWF.js").then((n) => n.t);
69093
+ webOutboundPromise ??= import("./outbound-DL8bdXlZ.js").then((n) => n.t);
69063
69094
  return webOutboundPromise;
69064
69095
  }
69065
69096
  function loadWebLogin() {
69066
- webLoginPromise ??= import("./login-bQWLSSfZ.js").then((n) => n.n);
69097
+ webLoginPromise ??= import("./login-BtBwGFrb.js").then((n) => n.n);
69067
69098
  return webLoginPromise;
69068
69099
  }
69069
69100
  function loadWebLoginQr() {
69070
- webLoginQrPromise ??= import("./login-qr-l5XwJWk9.js");
69101
+ webLoginQrPromise ??= import("./login-qr-q201Ckfe.js");
69071
69102
  return webLoginQrPromise;
69072
69103
  }
69073
69104
  function loadWebChannel() {
69074
- webChannelPromise ??= import("./web-CMLJq-WC.js");
69105
+ webChannelPromise ??= import("./web-BUc-ts5b.js");
69075
69106
  return webChannelPromise;
69076
69107
  }
69077
69108
  function loadWhatsAppActions() {
69078
- whatsappActionsPromise ??= import("./whatsapp-actions-BPn8FtPC.js");
69109
+ whatsappActionsPromise ??= import("./whatsapp-actions-mBarFBeS.js");
69079
69110
  return whatsappActionsPromise;
69080
69111
  }
69081
69112
  function createPluginRuntime() {
@@ -71671,6 +71702,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
71671
71702
  const guardedAppend = (message) => {
71672
71703
  let nextMessage = message;
71673
71704
  if (message.role === "assistant") {
71705
+ if (isEmptyAssistantMessage(message)) {
71706
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
71707
+ return;
71708
+ }
71674
71709
  const sanitized = sanitizeToolCallInputs([message]);
71675
71710
  if (sanitized.length === 0) {
71676
71711
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -73616,6 +73651,8 @@ function createModelAwareStreamFn(opts) {
73616
73651
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
73617
73652
  if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
73618
73653
  if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
73654
+ const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
73655
+ if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
73619
73656
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
73620
73657
  const isOpenRouter = opts.provider === "openrouter";
73621
73658
  const extraHeaders = {};
@@ -74223,7 +74260,11 @@ function handleMessageUpdate(ctx, evt) {
74223
74260
  emitAgentEvent({
74224
74261
  runId: ctx.params.runId,
74225
74262
  stream: "thinking",
74226
- data: { phase: evtType }
74263
+ data: {
74264
+ phase: evtType,
74265
+ delta: thinkingDelta,
74266
+ content: thinkingContent
74267
+ }
74227
74268
  });
74228
74269
  if (ctx.state.streamReasoning) {
74229
74270
  const partialThinking = extractAssistantThinking(msg);
@@ -75949,6 +75990,93 @@ Use the message tool with buttons:
75949
75990
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
75950
75991
  </plan_mode>`;
75951
75992
 
75993
+ //#endregion
75994
+ //#region src/agents/session-empty-prune.ts
75995
+ /**
75996
+ * Pre-run prune of empty assistant entries from a session JSONL file.
75997
+ *
75998
+ * When a stream fails before any content arrives, pi-coding-agent persists
75999
+ * an assistant message with an empty content array. If this repeats (e.g. a
76000
+ * misconfigured provider fails on every retry), the session ends up with
76001
+ * hundreds of consecutive empty assistant entries. vLLM and other strict
76002
+ * providers then reject the request with a role-ordering error — once the
76003
+ * session is in that state, every future turn fails until the user runs /new.
76004
+ *
76005
+ * This helper runs before SessionManager opens the file, reads the JSONL
76006
+ * line-by-line, filters out any line whose `message` is an empty-content
76007
+ * assistant, and rewrites the file atomically if anything was dropped. The
76008
+ * in-memory SessionManager state and the on-disk file stay consistent.
76009
+ *
76010
+ * The append guard in {@link ./session-tool-result-guard.ts} prevents new
76011
+ * empty entries from being written; this helper retroactively cleans files
76012
+ * that were poisoned before the guard existed.
76013
+ *
76014
+ * @module
76015
+ */
76016
+ async function readSessionFile(sessionFile) {
76017
+ try {
76018
+ return await fs$1.readFile(sessionFile, "utf-8");
76019
+ } catch {
76020
+ return null;
76021
+ }
76022
+ }
76023
+ async function writeAtomically(sessionFile, text) {
76024
+ const dir = path.dirname(sessionFile);
76025
+ const base = path.basename(sessionFile);
76026
+ const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
76027
+ await fs$1.writeFile(tmp, text, "utf-8");
76028
+ await fs$1.rename(tmp, sessionFile);
76029
+ }
76030
+ /**
76031
+ * Remove empty assistant JSONL entries from the session file.
76032
+ *
76033
+ * Parses each line; lines that don't parse are preserved verbatim so we don't
76034
+ * lose unknown data. Only lines that parse into a `{type:"message", message:
76035
+ * <empty-assistant>}` entry are dropped.
76036
+ */
76037
+ async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
76038
+ const raw = await readSessionFile(sessionFile);
76039
+ if (raw === null || raw.length === 0) return {
76040
+ rewrote: false,
76041
+ pruned: 0,
76042
+ unparsable: 0
76043
+ };
76044
+ const lines = raw.split("\n");
76045
+ const kept = [];
76046
+ let pruned = 0;
76047
+ let unparsable = 0;
76048
+ for (const line of lines) {
76049
+ if (line.length === 0) {
76050
+ kept.push(line);
76051
+ continue;
76052
+ }
76053
+ let parsed = null;
76054
+ try {
76055
+ parsed = JSON.parse(line);
76056
+ } catch {
76057
+ unparsable += 1;
76058
+ kept.push(line);
76059
+ continue;
76060
+ }
76061
+ if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
76062
+ pruned += 1;
76063
+ continue;
76064
+ }
76065
+ kept.push(line);
76066
+ }
76067
+ if (pruned === 0) return {
76068
+ rewrote: false,
76069
+ pruned: 0,
76070
+ unparsable
76071
+ };
76072
+ await writeAtomically(sessionFile, kept.join("\n"));
76073
+ return {
76074
+ rewrote: true,
76075
+ pruned,
76076
+ unparsable
76077
+ };
76078
+ }
76079
+
75952
76080
  //#endregion
75953
76081
  //#region src/agents/session-version.ts
75954
76082
  /**
@@ -77000,6 +77128,8 @@ async function runEmbeddedAttempt(params) {
77000
77128
  });
77001
77129
  const versionCheck = await handleSessionVersion(params.sessionFile);
77002
77130
  if (versionCheck.archived) log$9.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
77131
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
77132
+ if (pruneReport.rewrote) log$9.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
77003
77133
  await prewarmSessionFile(params.sessionFile);
77004
77134
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
77005
77135
  agentId: sessionAgentId,