@symerian/symi 2.6.40 → 2.6.42

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 (346) 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-DDRDszOI.js} +7 -7
  4. package/dist/{agents.config-C5FjRTiH.js → agents.config-BEVb1Pyx.js} +1 -1
  5. package/dist/{agents.config-bWQyGjxK.js → agents.config-BKCY6F2A.js} +1 -1
  6. package/dist/{audio-preflight-DEJHmI9r.js → audio-preflight-CIiS5cfP.js} +11 -11
  7. package/dist/{audio-preflight-BUO1aDLp.js → audio-preflight-COaFw917.js} +5 -5
  8. package/dist/{audio-preflight-B0alOE_D.js → audio-preflight-DD18zIZd.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-BbzReh6k.js} +4 -4
  13. package/dist/{auth-choice-BZIJ1WP4.js → auth-choice-D2xXwBeN.js} +4 -4
  14. package/dist/{banner-DdxLX10a.js → banner-DqqRwplt.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-DQcpDVCx.js} +1 -1
  24. package/dist/{channel-options-BAqgueJ5.js → channel-options-DcazVJQf.js} +1 -1
  25. package/dist/{channel-web-_jV8VUEw.js → channel-web-u5yMYO4j.js} +7 -7
  26. package/dist/{channels-cli-GldZ8ajW.js → channels-cli-Bog4Kn3X.js} +29 -29
  27. package/dist/{channels-cli-1we8fBWm.js → channels-cli-C3iJE8eg.js} +30 -30
  28. package/dist/{chrome-DJn17LsI.js → chrome-BxwUEWrH.js} +1 -1
  29. package/dist/{chrome-D07ZncFh.js → chrome-CbA-qnhp.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-QybdZdE7.js} +25 -25
  34. package/dist/{cli-DZAotBEi.js → cli-eBtEEHLK.js} +26 -26
  35. package/dist/{command-registry-DZIdLwVe.js → command-registry-BWnZSpbL.js} +11 -11
  36. package/dist/{completion-cli-BWw06AVN.js → completion-cli-BhJFXaVU.js} +1 -1
  37. package/dist/{completion-cli-DYgPksHH.js → completion-cli-CUKm7Hb6.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-B796xZBe.js} +2 -2
  43. package/dist/{config-cli-BOS84uDD.js → config-cli-CjnQyv45.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-D3wIQ0yI.js} +10 -10
  49. package/dist/{configure-DZQuTL_V.js → configure-DUqT7Dyn.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-C7NePF9Z.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-BayL_S0c.js → doctor-completion-D3oUNFQM.js} +1 -1
  71. package/dist/{doctor-completion-UC-Jc5jn.js → doctor-completion-DBE1IVKj.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-BFPPqLYw.js → gateway-cli-BguO9yV4.js} +43 -42
  79. package/dist/{gateway-cli-Cwh2BbPv.js → gateway-cli-Dc1RT_b9.js} +44 -43
  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-D0UYleBF.js} +34 -34
  83. package/dist/{glass-ui-ws-BfHJCfCz.js → glass-ui-ws-DoIZyE9O.js} +33 -33
  84. package/dist/{health-Bx6RQ4MZ.js → health-D3w4YMlC.js} +5 -5
  85. package/dist/{health-CLIwZbJe.js → health-cVvZdeDu.js} +5 -5
  86. package/dist/{hooks-cli-CF4fT-gm.js → hooks-cli-DZIbjfOA.js} +27 -27
  87. package/dist/{hooks-cli-BgALdxuB.js → hooks-cli-te5hzOAB.js} +26 -26
  88. package/dist/{image-DI1dYFo0.js → image-BWmcNF8N.js} +2 -2
  89. package/dist/{image-BmIvgTV4.js → image-C3ugMkb5.js} +2 -2
  90. package/dist/{image-KpMaj86B.js → image-C3wYkWyK.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-BCfPhQ4m.js} +8 -8
  113. package/dist/{models-cli-C01GsvW2.js → models-cli-BFAtjNIF.js} +28 -28
  114. package/dist/{models-cli-CLqS4ENq.js → models-cli-Cj2CwbPw.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-BMq8qc1m.js} +7 -7
  122. package/dist/{onboard-BrxB6sbz.js → onboard-VcdBF5TB.js} +7 -7
  123. package/dist/{onboard-channels-H11ympjW.js → onboard-channels-B5wgcffj.js} +1 -1
  124. package/dist/{onboard-channels-BBUPobrz.js → onboard-channels-CiOun4k1.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-D7hzRo_I.js → onboarding-CGNpTyg2.js} +10 -10
  134. package/dist/{onboarding-D8p8ii63.js → onboarding-Dp7p6zKa.js} +10 -10
  135. package/dist/{onboarding.finalize-C-rIKbkf.js → onboarding.finalize-B6DOu8vp.js} +31 -31
  136. package/dist/{onboarding.finalize-BJUg2rlZ.js → onboarding.finalize-CrsE5P43.js} +33 -33
  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-DQe8vBwU.js} +415 -248
  146. package/dist/{pi-embedded-helpers-BDI11Fqj.js → pi-embedded-helpers-BgRcgoC9.js} +5 -5
  147. package/dist/{pi-embedded-helpers-CeNTB0sV.js → pi-embedded-helpers-BgdB5kvy.js} +1 -1
  148. package/dist/{pi-embedded-helpers-cgZRM5cz.js → pi-embedded-helpers-DA4liAIZ.js} +1 -1
  149. package/dist/{pi-embedded-helpers-Bdac0DIf.js → pi-embedded-helpers-Dij3O6ox.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-BzIbwU3K.js} +2 -2
  153. package/dist/{plugin-registry-29yLAS46.js → plugin-registry-D3TUplW8.js} +2 -2
  154. package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +5 -0
  155. package/dist/plugin-sdk/agents/session-empty-prune.d.ts +37 -0
  156. package/dist/plugin-sdk/agents/session-transcript-repair.d.ts +8 -0
  157. package/dist/plugin-sdk/{audio-preflight-DSEypXnx.js → audio-preflight-BacDFPyc.js} +5 -5
  158. package/dist/plugin-sdk/{channel-web-DwLIjUen.js → channel-web-B6m8UOCl.js} +7 -7
  159. package/dist/plugin-sdk/{chrome-DC-la42T.js → chrome-BMimuhgP.js} +1 -1
  160. package/dist/plugin-sdk/config/model-profiles.d.ts +7 -0
  161. package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
  162. package/dist/plugin-sdk/config/zod-schema.d.ts +1 -0
  163. package/dist/plugin-sdk/{config-DgwyZd2S.js → config-DdA6JiyD.js} +6 -1
  164. package/dist/plugin-sdk/{deliver-7pgLdSpM.js → deliver-Bxa1-mj5.js} +2 -2
  165. package/dist/plugin-sdk/{image-CqMZSk6f.js → image-aq-JAobP.js} +2 -2
  166. package/dist/plugin-sdk/index.js +17 -17
  167. package/dist/plugin-sdk/{login-DJzS9QT2.js → login-CHgiUvI_.js} +2 -2
  168. package/dist/plugin-sdk/{login-qr-DziBjQY5.js → login-qr-D5vJo1fy.js} +2 -2
  169. package/dist/plugin-sdk/{outbound-DmsEc64Z.js → outbound-CD38Hxn9.js} +1 -1
  170. package/dist/plugin-sdk/{pi-embedded-helpers-C33OSgwG.js → pi-embedded-helpers-BPvzgLtj.js} +5 -5
  171. package/dist/plugin-sdk/{pw-ai-MIepjtIO.js → pw-ai-fdBOQzz5.js} +2 -2
  172. package/dist/plugin-sdk/{replies-Bw1Amxop.js → replies-CW_-4klO.js} +1 -1
  173. package/dist/plugin-sdk/{reply-BxYNpQRu.js → reply-CGoJQT_s.js} +415 -248
  174. package/dist/plugin-sdk/{runner-Bh4NdzRK.js → runner-BQJ7x06O.js} +2 -2
  175. package/dist/plugin-sdk/{send-CENVp2ol.js → send-C4t6h9-o.js} +1 -1
  176. package/dist/plugin-sdk/{send-Bf62p_ul.js → send-Cz_FQ8Ao.js} +1 -1
  177. package/dist/plugin-sdk/{send-D5_J2DiV.js → send-DG6c7BpZ.js} +1 -1
  178. package/dist/plugin-sdk/{send-P1G7c4FN.js → send-HKy51Hz_.js} +1 -1
  179. package/dist/plugin-sdk/{send-Ddy4p4LW.js → send-Xy1L54q4.js} +1 -1
  180. package/dist/plugin-sdk/{session-Z4-R_Top.js → session-BUzIlHr9.js} +1 -1
  181. package/dist/plugin-sdk/{web-DiNM_c37.js → web-CJjSOTnI.js} +17 -17
  182. package/dist/plugin-sdk/{whatsapp-actions-Bg6DfWkN.js → whatsapp-actions-CZLagx0h.js} +2 -2
  183. package/dist/{plugins-cli-DZ6arND4.js → plugins-cli-BD1Jb2Ml.js} +27 -27
  184. package/dist/{plugins-cli-D4bGKnOF.js → plugins-cli-DFyRjAtJ.js} +26 -26
  185. package/dist/{program-context-iI9_njQv.js → program-context-45vPEw2G.js} +38 -38
  186. package/dist/{program-DE9DbHYV.js → program-qGm2M9PG.js} +33 -33
  187. package/dist/{prompt-select-styled-SHa0ZJL9.js → prompt-select-styled-DRIS9jSv.js} +14 -14
  188. package/dist/{prompt-select-styled-D0ELdY0x.js → prompt-select-styled-DRraJGwA.js} +14 -14
  189. package/dist/{provider-auth-helpers-BI2k0jlH.js → provider-auth-helpers-BNOWsjW5.js} +2 -2
  190. package/dist/{provider-auth-helpers-EMBbfX3w.js → provider-auth-helpers-BREVjR7R.js} +2 -2
  191. package/dist/{push-apns-DcbeaY5y.js → push-apns-CObVeJLC.js} +1 -1
  192. package/dist/{push-apns-DyeCPAvI.js → push-apns-CYC70eKy.js} +1 -1
  193. package/dist/{pw-ai-C_7yEh9n.js → pw-ai--LDjnyuN.js} +2 -2
  194. package/dist/{pw-ai-LB6wkt8h.js → pw-ai-BCSFVeD5.js} +2 -2
  195. package/dist/{pw-ai-sY1BRRsq.js → pw-ai-BO5cSmwD.js} +2 -2
  196. package/dist/{pw-ai-C2z2aMEp.js → pw-ai-DQohWnzT.js} +2 -2
  197. package/dist/{qr-cli-B-NWpxfN.js → qr-cli-CejYwqsj.js} +1 -1
  198. package/dist/{qr-cli-TaubpmtG.js → qr-cli-XttU2KOR.js} +1 -1
  199. package/dist/{register.agent-D-1w3KOa.js → register.agent-DRrHvYcz.js} +32 -32
  200. package/dist/{register.agent-D4o7bi_u.js → register.agent-DzzY8jON.js} +34 -34
  201. package/dist/{register.configure-BYCEJg1c.js → register.configure-BxtTIFTa.js} +36 -36
  202. package/dist/{register.configure-BIczNshG.js → register.configure-DlXkwkNR.js} +37 -37
  203. package/dist/{register.maintenance-Syt4oSuk.js → register.maintenance-CXLXouZV.js} +34 -34
  204. package/dist/{register.maintenance-k6z5GVrO.js → register.maintenance-LEf8Q_5p.js} +36 -36
  205. package/dist/{register.message-Bi7QLNId.js → register.message-C4ifV9vG.js} +26 -26
  206. package/dist/{register.message-BJeeT9xQ.js → register.message-DsPa-xHV.js} +27 -27
  207. package/dist/{register.onboard-DDbxMjmt.js → register.onboard-CrY4PxLP.js} +32 -32
  208. package/dist/{register.onboard-B_FeHkL-.js → register.onboard-DLRPa_4B.js} +33 -33
  209. package/dist/{register.setup-CPi3uss4.js → register.setup-By37g1vN.js} +33 -33
  210. package/dist/{register.setup-Cpl67hQ6.js → register.setup-fBG_dJfi.js} +32 -32
  211. package/dist/{register.status-health-sessions-DsY8YuEo.js → register.status-health-sessions-Ckw86-gn.js} +29 -29
  212. package/dist/{register.status-health-sessions-CHPN3CNt.js → register.status-health-sessions-DG7KGnD0.js} +31 -31
  213. package/dist/{register.subclis-D5JRuk93.js → register.subclis-C_xKLugM.js} +28 -28
  214. package/dist/{replies-cMkt1-fW.js → replies-BMqtgBhh.js} +1 -1
  215. package/dist/{replies-CYuZN9PJ.js → replies-Bo49QlAg.js} +1 -1
  216. package/dist/{replies-C2sQt_cX.js → replies-CBS0567j.js} +1 -1
  217. package/dist/{replies-zOTZyd6v.js → replies-CfyMcfoY.js} +1 -1
  218. package/dist/{reply-D55iMWI5.js → reply-DyjXROKp.js} +426 -259
  219. package/dist/{routes-ClhmdN8I.js → routes-BAZTZNuQ.js} +3 -3
  220. package/dist/{routes-DRkO6iuR.js → routes-CMvgBDOg.js} +3 -3
  221. package/dist/{rpc-DvA01fCj.js → rpc-Co5PQ3IJ.js} +1 -1
  222. package/dist/{rpc-UsQvUYIP.js → rpc-D0FiEinj.js} +1 -1
  223. package/dist/{run-main-BWoPODyq.js → run-main-Cg3ecTbO.js} +44 -44
  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/{runner-_7xOqQDP.js → runner-cJ3m-bxK.js} +2 -2
  228. package/dist/{sandbox-rjqN2SHD.js → sandbox-B6N8cV4d.js} +5 -5
  229. package/dist/{sandbox-DrIHYiE6.js → sandbox-DY75ZyJD.js} +5 -5
  230. package/dist/{sandbox-cli-QpZpJ6Hq.js → sandbox-cli-BDM_QM_f.js} +6 -6
  231. package/dist/{sandbox-cli-BiiThMpq.js → sandbox-cli-DwzaNjIJ.js} +6 -6
  232. package/dist/{security-cli-DxNPZzVB.js → security-cli-CG1uSlRK.js} +9 -9
  233. package/dist/{security-cli-s_AbIm-b.js → security-cli-D5BWzqEJ.js} +9 -9
  234. package/dist/{send-C1ptDV-M.js → send-9SapUCg7.js} +1 -1
  235. package/dist/{send-DV8npIWi.js → send-B3RdXvjC.js} +1 -1
  236. package/dist/{send-CVSO0ZdD.js → send-B7HhiTdx.js} +1 -1
  237. package/dist/{send-DryK_KEK.js → send-B986asZ7.js} +1 -1
  238. package/dist/{send-DNJAa7Q_.js → send-B9EinkUl.js} +1 -1
  239. package/dist/{send-De1p8sZA.js → send-BNnv8GtF.js} +1 -1
  240. package/dist/{send-B9pwTYyE.js → send-BhJZ16uV.js} +1 -1
  241. package/dist/{send-B62vYwo8.js → send-Bm4ULEzh.js} +1 -1
  242. package/dist/{send-BJNUY-9E.js → send-BzKHnf3b.js} +1 -1
  243. package/dist/{send-C6jy9sVB.js → send-CC9V8V81.js} +1 -1
  244. package/dist/{send-DK-Jat_i.js → send-CQVnyJyF.js} +1 -1
  245. package/dist/{send-Dx7S4jGp.js → send-CZemAajS.js} +1 -1
  246. package/dist/{send-BTXR3fPR.js → send-DI9Vhnmw.js} +1 -1
  247. package/dist/{send-BvCit35j.js → send-DLWaX69q.js} +1 -1
  248. package/dist/{send-qSITFlVc.js → send-DSnJ503J.js} +1 -1
  249. package/dist/{send-B7MtdeLq.js → send-DVm0du0_.js} +1 -1
  250. package/dist/{send-D8DhbDGm.js → send-DaBsat3L.js} +1 -1
  251. package/dist/{send-iIqnmxNc.js → send-DdLJtOjk.js} +1 -1
  252. package/dist/{send-4MJyhXk5.js → send-DlQtxlG_.js} +1 -1
  253. package/dist/{send-DiYc3Z2y.js → send-RfIXG6-I.js} +1 -1
  254. package/dist/{server-context-C3fvq6h5.js → server-context-CCBZN8a0.js} +5 -5
  255. package/dist/{server-context-CtYkBX0P.js → server-context-DK-T2rBR.js} +5 -5
  256. package/dist/{server-methods-DY-jApXo.js → server-methods-CW8eFTGD.js} +15 -15
  257. package/dist/{server-methods-C4oRmj--.js → server-methods-CWcLut3F.js} +16 -16
  258. package/dist/{server-node-events--9s3cGoR.js → server-node-events-C2h9OPo7.js} +27 -27
  259. package/dist/{server-node-events-Bw6yFsJP.js → server-node-events-CDB0u8PP.js} +26 -26
  260. package/dist/{session-XfYb9nxX.js → session-C1cn-CxQ.js} +1 -1
  261. package/dist/{session-BmC1G2OF.js → session-CUeezgP1.js} +1 -1
  262. package/dist/{session-3P44Lx9Z.js → session-DsJGtM7g.js} +1 -1
  263. package/dist/{session-utils-DlQSI-Te.js → session-utils-B8Fif925.js} +3 -3
  264. package/dist/{session-BUTPdQjj.js → session-v_9AVJhH.js} +1 -1
  265. package/dist/{sessions-Dxc5UV-H.js → sessions-Cfa6JEB3.js} +1 -1
  266. package/dist/{sessions-9tWmT3oM.js → sessions-Cpgnq0pA.js} +1 -1
  267. package/dist/{sessions-BL_hivz0.js → sessions-DfbhRBHR.js} +3 -3
  268. package/dist/{shared-DEvSdt0I.js → shared-73T9fyuK.js} +1 -1
  269. package/dist/{shared-DwzDlNQn.js → shared-DdxPzyOH.js} +1 -1
  270. package/dist/{skills-cli-BHJAAvDv.js → skills-cli-DXkx4vNV.js} +1 -1
  271. package/dist/{skills-cli-CES7tX87.js → skills-cli-uEA9KXOO.js} +1 -1
  272. package/dist/{status-DxqgzaIz.js → status-B2Qt-5kL.js} +2 -2
  273. package/dist/{status-CPQrmN1p.js → status-CMx3GAax.js} +2 -2
  274. package/dist/{status-DZHTCKq_.js → status-DfPfMVNZ.js} +10 -10
  275. package/dist/{status-CfCqG5a6.js → status-ZPW5EACm.js} +9 -9
  276. package/dist/{status.update-BhJp4NkS.js → status.update-C2GN8s9C.js} +1 -1
  277. package/dist/{status.update-DqXGFKta.js → status.update-CG0ciGaf.js} +1 -1
  278. package/dist/{subagent-registry-BGKDFTRA.js → subagent-registry-DQHg3jUV.js} +427 -260
  279. package/dist/{system-cli-BrZGQcZl.js → system-cli-DFZNGx0i.js} +3 -3
  280. package/dist/{system-cli-CjgIC8rh.js → system-cli-Z7uzO8qd.js} +3 -3
  281. package/dist/{systemd-hints-B8AHs8Nn.js → systemd-hints-DT6cDIM2.js} +1 -1
  282. package/dist/{systemd-hints-DUXXob94.js → systemd-hints-xYZbFny_.js} +1 -1
  283. package/dist/{tui-BktCSga7.js → tui-DjPsMdL6.js} +4 -4
  284. package/dist/{tui-CAzxJ9EP.js → tui-DrATGNms.js} +4 -4
  285. package/dist/{tui-cli-AXeYpVcb.js → tui-cli-D19-MCXt.js} +9 -9
  286. package/dist/{tui-cli-Bz3RdHqe.js → tui-cli-pWD_NrUR.js} +9 -9
  287. package/dist/{unified-runner-BhGMOS0G.js → unified-runner-DvOFqcrw.js} +200 -33
  288. package/dist/{update-cli-n_Tkv8N_.js → update-cli-DBasZeVl.js} +39 -39
  289. package/dist/{update-cli-C8EpxduY.js → update-cli-Df9rh_aN.js} +37 -37
  290. package/dist/{update-runner-Tk50GxTW.js → update-runner-BRKFzAwV.js} +1 -1
  291. package/dist/{update-runner-CowTMnrt.js → update-runner-DVa6cMqp.js} +1 -1
  292. package/dist/{web-Cz8o-Hc9.js → web-CGh5tw__.js} +16 -16
  293. package/dist/{web-CMLJq-WC.js → web-Cw3bFAiP.js} +16 -16
  294. package/dist/{web-BIpIz8vD.js → web-Dd05xbUr.js} +29 -29
  295. package/dist/{web-ONk39lyq.js → web-KiuDkd0x.js} +29 -29
  296. package/dist/{webhooks-cli-v0rfBwU8.js → webhooks-cli-BRxe4uCg.js} +1 -1
  297. package/dist/{webhooks-cli-Da8YhVu4.js → webhooks-cli-CsRZl0_H.js} +1 -1
  298. package/dist/{whatsapp-actions-Cz2qhCrD.js → whatsapp-actions-7YbV2-Fv.js} +2 -2
  299. package/dist/{whatsapp-actions-Ba3KBpGu.js → whatsapp-actions-BylecqEa.js} +2 -2
  300. package/dist/{whatsapp-actions-AEeCOVko.js → whatsapp-actions-ChO_shrk.js} +2 -2
  301. package/dist/{whatsapp-actions-BPn8FtPC.js → whatsapp-actions-mBarFBeS.js} +2 -2
  302. package/dist/{with-timeout-487M8IgO.js → with-timeout-Cgi3TwWN.js} +1 -1
  303. package/dist/{with-timeout-BU7MJQDD.js → with-timeout-CtVdu_1U.js} +1 -1
  304. package/extensions/bluebubbles/package.json +1 -1
  305. package/extensions/copilot-proxy/package.json +1 -1
  306. package/extensions/diagnostics-otel/package.json +1 -1
  307. package/extensions/discord/package.json +1 -1
  308. package/extensions/feishu/package.json +1 -1
  309. package/extensions/google-antigravity-auth/package.json +1 -1
  310. package/extensions/google-gemini-cli-auth/package.json +1 -1
  311. package/extensions/googlechat/package.json +1 -1
  312. package/extensions/imessage/package.json +1 -1
  313. package/extensions/irc/package.json +1 -1
  314. package/extensions/learning-loop/package.json +1 -1
  315. package/extensions/line/package.json +1 -1
  316. package/extensions/llm-task/package.json +1 -1
  317. package/extensions/matrix/CHANGELOG.md +12 -0
  318. package/extensions/matrix/package.json +1 -1
  319. package/extensions/mattermost/package.json +1 -1
  320. package/extensions/memory-core/package.json +1 -1
  321. package/extensions/memory-lancedb/package.json +1 -1
  322. package/extensions/minimax-portal-auth/package.json +1 -1
  323. package/extensions/msteams/CHANGELOG.md +12 -0
  324. package/extensions/msteams/package.json +1 -1
  325. package/extensions/nextcloud-talk/package.json +1 -1
  326. package/extensions/nostr/CHANGELOG.md +12 -0
  327. package/extensions/nostr/package.json +1 -1
  328. package/extensions/open-prose/package.json +1 -1
  329. package/extensions/outlook/package.json +1 -1
  330. package/extensions/pipeline/package.json +1 -1
  331. package/extensions/signal/package.json +1 -1
  332. package/extensions/slack/package.json +1 -1
  333. package/extensions/telegram/package.json +1 -1
  334. package/extensions/tlon/package.json +1 -1
  335. package/extensions/twitch/CHANGELOG.md +12 -0
  336. package/extensions/twitch/package.json +1 -1
  337. package/extensions/voice-call/CHANGELOG.md +12 -0
  338. package/extensions/voice-call/package.json +1 -1
  339. package/extensions/whatsapp/package.json +1 -1
  340. package/extensions/zalo/CHANGELOG.md +12 -0
  341. package/extensions/zalo/package.json +1 -1
  342. package/extensions/zalouser/CHANGELOG.md +12 -0
  343. package/extensions/zalouser/package.json +1 -1
  344. package/package.json +1 -1
  345. package/skills/long-task/SKILL.md +57 -0
  346. package/skills/long-task/scripts/detach-task.sh +58 -0
@@ -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-BwQutavB.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-CLKMnHOP.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-Dxc5UV-H.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-CVSO0ZdD.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-C6jy9sVB.js";
29
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-487M8IgO.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-BCmoI9iE.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-4MJyhXk5.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-cgZRM5cz.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-DrIHYiE6.js";
38
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-Cixcv-qk.js";
39
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CtYkBX0P.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-Bc8qKqev.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-B7GV_Iz_.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-KpMaj86B.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-z_tSZGY5.js";
71
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-b9o0TtF7.js";
72
- import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-DlQSI-Te.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-BW1BNnC1.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-B9pwTYyE.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-qSITFlVc.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-CYuZN9PJ.js";
95
- import { r as detectBinary } from "./onboard-helpers-ChH5EhW2.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-B4NDL7r-.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-BCmoI9iE.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({
@@ -32418,7 +32418,8 @@ const BUILTIN_PROFILES = [
32418
32418
  top_p: .95,
32419
32419
  top_k: 20,
32420
32420
  max_tokens: 16384,
32421
- presence_penalty: 1.5
32421
+ presence_penalty: 1.5,
32422
+ chatTemplateKwargs: { preserve_thinking: true }
32422
32423
  },
32423
32424
  streaming: {
32424
32425
  deltaThrottleMs: 50,
@@ -33152,6 +33153,8 @@ function createModelAwareStreamFn(opts) {
33152
33153
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
33153
33154
  if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
33154
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;
33155
33158
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
33156
33159
  const isOpenRouter = opts.provider === "openrouter";
33157
33160
  const extraHeaders = {};
@@ -33982,7 +33985,11 @@ function handleMessageUpdate(ctx, evt) {
33982
33985
  emitAgentEvent({
33983
33986
  runId: ctx.params.runId,
33984
33987
  stream: "thinking",
33985
- data: { phase: evtType }
33988
+ data: {
33989
+ phase: evtType,
33990
+ delta: thinkingDelta,
33991
+ content: thinkingContent
33992
+ }
33986
33993
  });
33987
33994
  if (ctx.state.streamReasoning) {
33988
33995
  const partialThinking = extractAssistantThinking(msg);
@@ -36024,6 +36031,338 @@ Use the message tool with buttons:
36024
36031
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
36025
36032
  </plan_mode>`;
36026
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
+
36027
36366
  //#endregion
36028
36367
  //#region src/agents/session-file-repair.ts
36029
36368
  function isSessionHeader(entry) {
@@ -36297,221 +36636,6 @@ function sessionLikelyHasOversizedToolResults(params) {
36297
36636
  return false;
36298
36637
  }
36299
36638
 
36300
- //#endregion
36301
- //#region src/agents/session-transcript-repair.ts
36302
- function isToolCallBlock(block) {
36303
- if (!block || typeof block !== "object") return false;
36304
- const type = block.type;
36305
- return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
36306
- }
36307
- function hasToolCallInput(block) {
36308
- const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
36309
- const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
36310
- return hasInput || hasArguments;
36311
- }
36312
- function hasNonEmptyStringField(value) {
36313
- return typeof value === "string" && value.trim().length > 0;
36314
- }
36315
- function hasToolCallId(block) {
36316
- return hasNonEmptyStringField(block.id);
36317
- }
36318
- function hasToolCallName(block) {
36319
- return hasNonEmptyStringField(block.name);
36320
- }
36321
- function makeMissingToolResult(params) {
36322
- return {
36323
- role: "toolResult",
36324
- toolCallId: params.toolCallId,
36325
- toolName: params.toolName ?? "unknown",
36326
- content: [{
36327
- type: "text",
36328
- text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
36329
- }],
36330
- isError: true,
36331
- timestamp: Date.now()
36332
- };
36333
- }
36334
- function stripToolResultDetails(messages) {
36335
- let touched = false;
36336
- const out = [];
36337
- for (const msg of messages) {
36338
- if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
36339
- out.push(msg);
36340
- continue;
36341
- }
36342
- if (!("details" in msg)) {
36343
- out.push(msg);
36344
- continue;
36345
- }
36346
- const { details: _details, ...rest } = msg;
36347
- touched = true;
36348
- out.push(rest);
36349
- }
36350
- return touched ? out : messages;
36351
- }
36352
- function repairToolCallInputs(messages) {
36353
- let droppedToolCalls = 0;
36354
- let droppedAssistantMessages = 0;
36355
- let changed = false;
36356
- const out = [];
36357
- for (const msg of messages) {
36358
- if (!msg || typeof msg !== "object") {
36359
- out.push(msg);
36360
- continue;
36361
- }
36362
- if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
36363
- out.push(msg);
36364
- continue;
36365
- }
36366
- const nextContent = [];
36367
- let droppedInMessage = 0;
36368
- for (const block of msg.content) {
36369
- if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
36370
- droppedToolCalls += 1;
36371
- droppedInMessage += 1;
36372
- changed = true;
36373
- continue;
36374
- }
36375
- nextContent.push(block);
36376
- }
36377
- if (droppedInMessage > 0) {
36378
- if (nextContent.length === 0) {
36379
- droppedAssistantMessages += 1;
36380
- changed = true;
36381
- continue;
36382
- }
36383
- out.push({
36384
- ...msg,
36385
- content: nextContent
36386
- });
36387
- continue;
36388
- }
36389
- out.push(msg);
36390
- }
36391
- return {
36392
- messages: changed ? out : messages,
36393
- droppedToolCalls,
36394
- droppedAssistantMessages
36395
- };
36396
- }
36397
- function sanitizeToolCallInputs(messages) {
36398
- return repairToolCallInputs(messages).messages;
36399
- }
36400
- function sanitizeToolUseResultPairing(messages) {
36401
- return repairToolUseResultPairing(messages).messages;
36402
- }
36403
- function repairToolUseResultPairing(messages) {
36404
- const out = [];
36405
- const added = [];
36406
- const seenToolResultIds = /* @__PURE__ */ new Set();
36407
- let droppedDuplicateCount = 0;
36408
- let droppedOrphanCount = 0;
36409
- let moved = false;
36410
- let changed = false;
36411
- const pushToolResult = (msg) => {
36412
- const id = extractToolResultId(msg);
36413
- if (id && seenToolResultIds.has(id)) {
36414
- droppedDuplicateCount += 1;
36415
- changed = true;
36416
- return;
36417
- }
36418
- if (id) seenToolResultIds.add(id);
36419
- out.push(msg);
36420
- };
36421
- for (let i = 0; i < messages.length; i += 1) {
36422
- const msg = messages[i];
36423
- if (!msg || typeof msg !== "object") {
36424
- out.push(msg);
36425
- continue;
36426
- }
36427
- const role = msg.role;
36428
- if (role !== "assistant") {
36429
- if (role !== "toolResult") out.push(msg);
36430
- else {
36431
- droppedOrphanCount += 1;
36432
- changed = true;
36433
- }
36434
- continue;
36435
- }
36436
- const assistant = msg;
36437
- const stopReason = assistant.stopReason;
36438
- if (stopReason === "error" || stopReason === "aborted") {
36439
- out.push(msg);
36440
- continue;
36441
- }
36442
- const toolCalls = extractToolCallsFromAssistant(assistant);
36443
- if (toolCalls.length === 0) {
36444
- out.push(msg);
36445
- continue;
36446
- }
36447
- const toolCallIds = new Set(toolCalls.map((t) => t.id));
36448
- const spanResultsById = /* @__PURE__ */ new Map();
36449
- const remainder = [];
36450
- let j = i + 1;
36451
- for (; j < messages.length; j += 1) {
36452
- const next = messages[j];
36453
- if (!next || typeof next !== "object") {
36454
- remainder.push(next);
36455
- continue;
36456
- }
36457
- const nextRole = next.role;
36458
- if (nextRole === "assistant") break;
36459
- if (nextRole === "toolResult") {
36460
- const toolResult = next;
36461
- const id = extractToolResultId(toolResult);
36462
- if (id && toolCallIds.has(id)) {
36463
- if (seenToolResultIds.has(id)) {
36464
- droppedDuplicateCount += 1;
36465
- changed = true;
36466
- continue;
36467
- }
36468
- if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
36469
- continue;
36470
- }
36471
- }
36472
- if (nextRole !== "toolResult") remainder.push(next);
36473
- else {
36474
- droppedOrphanCount += 1;
36475
- changed = true;
36476
- }
36477
- }
36478
- out.push(msg);
36479
- if (spanResultsById.size > 0 && remainder.length > 0) {
36480
- moved = true;
36481
- changed = true;
36482
- }
36483
- for (const call of toolCalls) {
36484
- const existing = spanResultsById.get(call.id);
36485
- if (existing) pushToolResult(existing);
36486
- else {
36487
- const missing = makeMissingToolResult({
36488
- toolCallId: call.id,
36489
- toolName: call.name
36490
- });
36491
- added.push(missing);
36492
- changed = true;
36493
- pushToolResult(missing);
36494
- }
36495
- }
36496
- for (const rem of remainder) {
36497
- if (!rem || typeof rem !== "object") {
36498
- out.push(rem);
36499
- continue;
36500
- }
36501
- out.push(rem);
36502
- }
36503
- i = j - 1;
36504
- }
36505
- const changedOrMoved = changed || moved;
36506
- return {
36507
- messages: changedOrMoved ? out : messages,
36508
- added,
36509
- droppedDuplicateCount,
36510
- droppedOrphanCount,
36511
- moved: changedOrMoved
36512
- };
36513
- }
36514
-
36515
36639
  //#endregion
36516
36640
  //#region src/agents/session-tool-result-guard.ts
36517
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.]";
@@ -36592,6 +36716,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
36592
36716
  const guardedAppend = (message) => {
36593
36717
  let nextMessage = message;
36594
36718
  if (message.role === "assistant") {
36719
+ if (isEmptyAssistantMessage(message)) {
36720
+ if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
36721
+ return;
36722
+ }
36595
36723
  const sanitized = sanitizeToolCallInputs([message]);
36596
36724
  if (sanitized.length === 0) {
36597
36725
  if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
@@ -38719,6 +38847,38 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
38719
38847
  */
38720
38848
  const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
38721
38849
 
38850
+ //#endregion
38851
+ //#region src/agents/pi-embedded-runner/long-task-prompt.ts
38852
+ const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
38853
+ let cachedScriptPath;
38854
+ async function resolveDetachScriptPath(params) {
38855
+ if (cachedScriptPath !== void 0) return cachedScriptPath;
38856
+ const packageRoot = await resolveSymiPackageRoot({
38857
+ cwd: params.cwd,
38858
+ argv1: params.argv1,
38859
+ moduleUrl: params.moduleUrl
38860
+ });
38861
+ if (!packageRoot) {
38862
+ cachedScriptPath = null;
38863
+ return null;
38864
+ }
38865
+ const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
38866
+ cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
38867
+ return cachedScriptPath;
38868
+ }
38869
+ async function buildLongTaskPromptSuffix(params) {
38870
+ const scriptPath = await resolveDetachScriptPath(params);
38871
+ if (!scriptPath) return "";
38872
+ return "\n\n" + [
38873
+ "LONG-RUNNING TASK PATTERN:",
38874
+ "- For any task that may exceed 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration): detach from the agent turn. Do NOT foreground-block the exec tool for the full duration; the agent turn will hit its timeout and SIGTERM the process mid-run.",
38875
+ `- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`. The script spawns under setsid+nohup, writes PID / cmd / started / status / log files in the workdir. Use the agent workspace as the workdir.`,
38876
+ "- Immediately after detaching, respond to the user with: task id, PID, log file path, your ETA estimate, and that a cron monitor has been scheduled.",
38877
+ "- Register a cron monitor using the `cron` tool with action=add. Schedule every 2-3 minutes. Job prompt must include the task-id, PID, log path, and status path so the future turn has enough context. Example job prompt: \"Check if PID <pid> is alive (kill -0). If alive: tail -n 20 <log>, post one-sentence progress update. If not alive: read <status> and tail <log>, post a final summary, then call cron tool with action=remove id=<this-cron-id>.\"",
38878
+ "- When the monitor turn observes status=complete, it MUST call the cron tool with action=remove to clean up its own job. Do not leave stale monitors running."
38879
+ ].join("\n");
38880
+ }
38881
+
38722
38882
  //#endregion
38723
38883
  //#region src/agents/pi-embedded-runner/runs.ts
38724
38884
  const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
@@ -39772,7 +39932,12 @@ async function runEmbeddedAttempt(params) {
39772
39932
  const profileModelKey = params.modelId ?? "";
39773
39933
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
39774
39934
  log$5.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
39775
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
39935
+ const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
39936
+ const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
39937
+ argv1: process.argv[1],
39938
+ cwd: process.cwd(),
39939
+ moduleUrl: import.meta.url
39940
+ }) + profilePromptSuffix)();
39776
39941
  const sessionLock = await acquireSessionWriteLock({
39777
39942
  sessionFile: params.sessionFile,
39778
39943
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -39793,6 +39958,8 @@ async function runEmbeddedAttempt(params) {
39793
39958
  });
39794
39959
  const versionCheck = await handleSessionVersion(params.sessionFile);
39795
39960
  if (versionCheck.archived) log$5.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
39961
+ const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
39962
+ if (pruneReport.rewrote) log$5.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
39796
39963
  await prewarmSessionFile(params.sessionFile);
39797
39964
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
39798
39965
  agentId: sessionAgentId,
@@ -44165,7 +44332,7 @@ async function deliverSessionMaintenanceWarning(params) {
44165
44332
  return;
44166
44333
  }
44167
44334
  try {
44168
- const { deliverOutboundPayloads } = await import("./deliver-BCmoI9iE.js").then((n) => n.n);
44335
+ const { deliverOutboundPayloads } = await import("./deliver-Bu0iWeja.js").then((n) => n.n);
44169
44336
  await deliverOutboundPayloads({
44170
44337
  cfg: params.cfg,
44171
44338
  channel,
@@ -47619,7 +47786,7 @@ async function describeStickerImage(params) {
47619
47786
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47620
47787
  try {
47621
47788
  const buffer = await fs$1.readFile(imagePath);
47622
- const { describeImageWithModel } = await import("./image-KpMaj86B.js").then((n) => n.n);
47789
+ const { describeImageWithModel } = await import("./image-C3wYkWyK.js").then((n) => n.n);
47623
47790
  return (await describeImageWithModel({
47624
47791
  buffer,
47625
47792
  fileName: "sticker.webp",
@@ -48042,7 +48209,7 @@ function createWhatsAppLoginTool() {
48042
48209
  force: Type.Optional(Type.Boolean())
48043
48210
  }),
48044
48211
  execute: async (_toolCallId, args) => {
48045
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BB2Zfn7K.js");
48212
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DPxuLEvD.js");
48046
48213
  if ((args?.action ?? "start") === "wait") {
48047
48214
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
48048
48215
  return {
@@ -49418,7 +49585,7 @@ async function preflightDiscordMessage(params) {
49418
49585
  let preflightTranscript;
49419
49586
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49420
49587
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49421
- const { transcribeFirstAudio } = await import("./audio-preflight-EindUWk_.js");
49588
+ const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
49422
49589
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49423
49590
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49424
49591
  ctx: {
@@ -53201,27 +53368,27 @@ function isVoiceChannelType(type) {
53201
53368
  function createDefaultDeps() {
53202
53369
  return {
53203
53370
  sendMessageWhatsApp: async (...args) => {
53204
- const { sendMessageWhatsApp } = await import("./web-BIpIz8vD.js");
53371
+ const { sendMessageWhatsApp } = await import("./web-Dd05xbUr.js");
53205
53372
  return await sendMessageWhatsApp(...args);
53206
53373
  },
53207
53374
  sendMessageTelegram: async (...args) => {
53208
- const { sendMessageTelegram } = await import("./send-4MJyhXk5.js").then((n) => n.l);
53375
+ const { sendMessageTelegram } = await import("./send-DlQtxlG_.js").then((n) => n.l);
53209
53376
  return await sendMessageTelegram(...args);
53210
53377
  },
53211
53378
  sendMessageDiscord: async (...args) => {
53212
- const { sendMessageDiscord } = await import("./send-C6jy9sVB.js").then((n) => n.t);
53379
+ const { sendMessageDiscord } = await import("./send-CC9V8V81.js").then((n) => n.t);
53213
53380
  return await sendMessageDiscord(...args);
53214
53381
  },
53215
53382
  sendMessageSlack: async (...args) => {
53216
- const { sendMessageSlack } = await import("./send-CVSO0ZdD.js").then((n) => n.n);
53383
+ const { sendMessageSlack } = await import("./send-B7HhiTdx.js").then((n) => n.n);
53217
53384
  return await sendMessageSlack(...args);
53218
53385
  },
53219
53386
  sendMessageSignal: async (...args) => {
53220
- const { sendMessageSignal } = await import("./send-B9pwTYyE.js").then((n) => n.i);
53387
+ const { sendMessageSignal } = await import("./send-BhJZ16uV.js").then((n) => n.i);
53221
53388
  return await sendMessageSignal(...args);
53222
53389
  },
53223
53390
  sendMessageIMessage: async (...args) => {
53224
- const { sendMessageIMessage } = await import("./send-qSITFlVc.js").then((n) => n.n);
53391
+ const { sendMessageIMessage } = await import("./send-DSnJ503J.js").then((n) => n.n);
53225
53392
  return await sendMessageIMessage(...args);
53226
53393
  }
53227
53394
  };
@@ -64076,7 +64243,7 @@ async function registerSlackMonitorSlashCommands(params) {
64076
64243
  });
64077
64244
  const deliverSlashPayloads = async (replies) => {
64078
64245
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
64079
- import("./replies-CYuZN9PJ.js").then((n) => n.r),
64246
+ import("./replies-Bo49QlAg.js").then((n) => n.r),
64080
64247
  import("./chunk-CQyUJNtc.js").then((n) => n.s),
64081
64248
  import("./markdown-tables-D82z_Ahc.js").then((n) => n.t)
64082
64249
  ]);
@@ -66349,7 +66516,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66349
66516
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66350
66517
  let preflightTranscript;
66351
66518
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66352
- const { transcribeFirstAudio } = await import("./audio-preflight-EindUWk_.js");
66519
+ const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
66353
66520
  preflightTranscript = await transcribeFirstAudio({
66354
66521
  ctx: {
66355
66522
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -68503,23 +68670,23 @@ let webLoginQrPromise = null;
68503
68670
  let webChannelPromise = null;
68504
68671
  let whatsappActionsPromise = null;
68505
68672
  function loadWebOutbound() {
68506
- webOutboundPromise ??= import("./outbound-BOqx1b0e.js").then((n) => n.t);
68673
+ webOutboundPromise ??= import("./outbound-Bt8rj9kO.js").then((n) => n.t);
68507
68674
  return webOutboundPromise;
68508
68675
  }
68509
68676
  function loadWebLogin() {
68510
- webLoginPromise ??= import("./login-DPxmcuIe.js").then((n) => n.n);
68677
+ webLoginPromise ??= import("./login-CiVdC-o_.js").then((n) => n.n);
68511
68678
  return webLoginPromise;
68512
68679
  }
68513
68680
  function loadWebLoginQr() {
68514
- webLoginQrPromise ??= import("./login-qr-BB2Zfn7K.js");
68681
+ webLoginQrPromise ??= import("./login-qr-DPxuLEvD.js");
68515
68682
  return webLoginQrPromise;
68516
68683
  }
68517
68684
  function loadWebChannel() {
68518
- webChannelPromise ??= import("./web-BIpIz8vD.js");
68685
+ webChannelPromise ??= import("./web-Dd05xbUr.js");
68519
68686
  return webChannelPromise;
68520
68687
  }
68521
68688
  function loadWhatsAppActions() {
68522
- whatsappActionsPromise ??= import("./whatsapp-actions-Cz2qhCrD.js");
68689
+ whatsappActionsPromise ??= import("./whatsapp-actions-7YbV2-Fv.js");
68523
68690
  return whatsappActionsPromise;
68524
68691
  }
68525
68692
  function createPluginRuntime() {