@symerian/symi 2.6.39 → 2.6.40

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 (389) hide show
  1. package/dist/{accounts-dRUMQQrB.js → accounts-3dCrO3oZ.js} +1 -1
  2. package/dist/{accounts-D1r2dq1t.js → accounts-BRw8yhIW.js} +21 -21
  3. package/dist/{accounts-wSphH5gv.js → accounts-BuZxOb3B.js} +1 -1
  4. package/dist/{acp-cli-ByYHYK_E.js → acp-cli-CArw-nEj.js} +2 -2
  5. package/dist/{acp-cli-EqE2uipx.js → acp-cli-Cm65S6FL.js} +2 -2
  6. package/dist/{active-listener-C3pfJhdC.js → active-listener-Br2FcRv7.js} +1 -1
  7. package/dist/{agent-scope-D68_xfTL.js → agent-scope-CpEJ0B88.js} +3 -3
  8. package/dist/{agents-BaNrmXzu.js → agents-BUphGO8B.js} +7 -7
  9. package/dist/{agents.config-C78DHdxT.js → agents.config-C5FjRTiH.js} +1 -1
  10. package/dist/{agents.config-BOxmN33d.js → agents.config-bWQyGjxK.js} +1 -1
  11. package/dist/{audio-preflight-DZ_2w4B5.js → audio-preflight-B0alOE_D.js} +5 -5
  12. package/dist/{audio-preflight-UXg8r6a7.js → audio-preflight-BUO1aDLp.js} +29 -29
  13. package/dist/{audio-preflight-CzQUZSUK.js → audio-preflight-DEJHmI9r.js} +11 -11
  14. package/dist/{audio-preflight-BuT_gIRW.js → audio-preflight-EindUWk_.js} +11 -11
  15. package/dist/{audit-BxqTVyZo.js → audit-B_XnVSC_.js} +5 -5
  16. package/dist/{audit-Cgd5-Y7W.js → audit-ChxZ7_3y.js} +5 -5
  17. package/dist/{auth-choice-BnJzLsv5.js → auth-choice-BZIJ1WP4.js} +4 -4
  18. package/dist/{auth-choice-CnpKK0cS.js → auth-choice-CScrqcEI.js} +4 -4
  19. package/dist/{auth-profiles-CZZjOpX8.js → auth-profiles-q3HjbboY.js} +17 -17
  20. package/dist/{banner-DdpNhjX6.js → banner-DdxLX10a.js} +1 -1
  21. package/dist/{bindings-Bat2RnAR.js → bindings-BsHoBLIE.js} +2 -2
  22. package/dist/{browser-cli-BrzYV9w9.js → browser-cli-B8qCOonD.js} +3 -3
  23. package/dist/{browser-cli-Dun4KSp2.js → browser-cli-d3tBzuZB.js} +3 -3
  24. package/dist/build-info.json +3 -3
  25. package/dist/bundled/boot-md/handler.js +54 -54
  26. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  27. package/dist/bundled/command-logger/handler.js +1 -1
  28. package/dist/bundled/session-memory/handler.js +54 -54
  29. package/dist/{call-DIDhYlsx.js → call-CLKMnHOP.js} +1 -1
  30. package/dist/{call-CFhGTNtt.js → call-Dqx-xSZ7.js} +1 -1
  31. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  32. package/dist/{channel-activity-Cm1OJRbv.js → channel-activity-D-kw83R0.js} +1 -1
  33. package/dist/{channel-options-47wHx-rM.js → channel-options-BAqgueJ5.js} +1 -1
  34. package/dist/{channel-options-CJE7N_QV.js → channel-options-CC5ojwB6.js} +1 -1
  35. package/dist/{channel-web-CVf8YV4M.js → channel-web-_jV8VUEw.js} +7 -7
  36. package/dist/{channels-cli-CMLy_xVT.js → channels-cli-1we8fBWm.js} +30 -30
  37. package/dist/{channels-cli-Iya7tcnY.js → channels-cli-GldZ8ajW.js} +29 -29
  38. package/dist/{chrome-Dq0bSDVx.js → chrome-Cixcv-qk.js} +1 -1
  39. package/dist/{chrome-D0sqCqXY.js → chrome-D07ZncFh.js} +14 -14
  40. package/dist/{chrome-CXbfCc20.js → chrome-DJn17LsI.js} +8 -8
  41. package/dist/{chrome-DtPkPq9T.js → chrome-DtPv6OzN.js} +1 -1
  42. package/dist/{chunk-B9x_1qSr.js → chunk-BHW8Yu5A.js} +1 -1
  43. package/dist/cli/daemon-cli.js +1 -1
  44. package/dist/{cli-dC-CEeDc.js → cli-CNO5cyFx.js} +25 -25
  45. package/dist/{cli-DmGUr8aj.js → cli-DZAotBEi.js} +26 -26
  46. package/dist/{command-registry-DSV-4T7A.js → command-registry-DZIdLwVe.js} +11 -11
  47. package/dist/{commands-registry-DPf4J7nj.js → commands-registry-BSvi46KZ.js} +4 -4
  48. package/dist/{completion-cli-dlL2VvFw.js → completion-cli-BWw06AVN.js} +1 -1
  49. package/dist/{completion-cli-DjQVuJdD.js → completion-cli-DYgPksHH.js} +2 -2
  50. package/dist/{config-CHwyw6l5.js → config-Bjt5P4vW.js} +4 -1
  51. package/dist/{config-DHBLS1Hl.js → config-BwQutavB.js} +4 -1
  52. package/dist/{config-giEDOxub.js → config-CyV6zkEL.js} +16 -13
  53. package/dist/{config-cli-DLFKoU1U.js → config-cli-BOS84uDD.js} +2 -2
  54. package/dist/{config-cli-Cm4KwczC.js → config-cli-DNHtgLYH.js} +2 -2
  55. package/dist/{config-guard--WfHrCVe.js → config-guard-BTGDJDTi.js} +3 -3
  56. package/dist/{config-guard-CPHvOzsC.js → config-guard-bJv1t515.js} +2 -2
  57. package/dist/{config-DBqxAhpU.js → config-jVLwO6DP.js} +4 -1
  58. package/dist/{config-validation-BITwrsxY.js → config-validation-D1EjO6bG.js} +1 -1
  59. package/dist/{config-validation-BckiR0w9.js → config-validation-PZAxf4DR.js} +1 -1
  60. package/dist/{configure-DNRNOqKI.js → configure-B7YGhbtM.js} +10 -10
  61. package/dist/{configure-BbFd3c68.js → configure-DZQuTL_V.js} +10 -10
  62. package/dist/{control-service-Dtn-qw2s.js → control-service-B0G5d40m.js} +4 -4
  63. package/dist/{control-service-DEVN6FRR.js → control-service-BW1BNnC1.js} +4 -4
  64. package/dist/control-ui/css/style.css +43 -0
  65. package/dist/control-ui/index.html +7 -1
  66. package/dist/control-ui/js/models.js +56 -16
  67. package/dist/{cron-cli-Bml4UNHa.js → cron-cli-B88WIOK2.js} +3 -3
  68. package/dist/{cron-cli-C-gg6wfO.js → cron-cli-QxHcrynL.js} +3 -3
  69. package/dist/{daemon-cli-BPHe9wOW.js → daemon-cli-Cy45NZwV.js} +6 -6
  70. package/dist/{daemon-cli-0RLS-CwL.js → daemon-cli-DK3CCo49.js} +6 -6
  71. package/dist/daemon-cli.js +4 -1
  72. package/dist/{daemon-runtime-CfRwa6qh.js → daemon-runtime-A-deduW3.js} +1 -1
  73. package/dist/{daemon-runtime-COZ4usfy.js → daemon-runtime-CdKAsAeg.js} +1 -1
  74. package/dist/{deliver-CXRSdUr1.js → deliver-BCmoI9iE.js} +3 -3
  75. package/dist/{deliver-DrFtaFZt.js → deliver-BjpaKGTx.js} +3 -3
  76. package/dist/{deliver-BY58QnO8.js → deliver-Cm6Yfbzh.js} +20 -20
  77. package/dist/{deliver-DepjYu87.js → deliver-SIVO_ZZm.js} +2 -2
  78. package/dist/{devices-cli-texa_iUV.js → devices-cli-D6sKbRkk.js} +2 -2
  79. package/dist/{devices-cli-CI2TOoP1.js → devices-cli-f3yJl6-G.js} +2 -2
  80. package/dist/{diagnostic-DIKKFHpP.js → diagnostic-CQiU0O8b.js} +1 -1
  81. package/dist/{directory-cli-D6vlxPje.js → directory-cli-DDb20Fzl.js} +1 -1
  82. package/dist/{directory-cli-BRMi7Alb.js → directory-cli-hohI4d8v.js} +1 -1
  83. package/dist/{dns-cli-BsRMpavf.js → dns-cli-C1SXZIAh.js} +1 -1
  84. package/dist/{dns-cli-BEub5qgQ.js → dns-cli-DIZyU_2d.js} +1 -1
  85. package/dist/{doctor-completion-Cm7WG43a.js → doctor-completion-BayL_S0c.js} +1 -1
  86. package/dist/{doctor-completion-Z_RXu40-.js → doctor-completion-UC-Jc5jn.js} +1 -1
  87. package/dist/{doctor-config-flow-CA3eiKhd.js → doctor-config-flow-DLtGtIf_.js} +2 -2
  88. package/dist/{doctor-config-flow-BTQvpBys.js → doctor-config-flow-i4XYSFXR.js} +2 -2
  89. package/dist/entry.js +1 -1
  90. package/dist/{env-xmBFQPBP.js → env-BDXYbTKj.js} +1 -1
  91. package/dist/{exec-approvals-cli-wesKZNXl.js → exec-approvals-cli-Cr-mrEfY.js} +4 -4
  92. package/dist/{exec-approvals-cli-DxKAWA8Y.js → exec-approvals-cli-DpFjEahL.js} +4 -4
  93. package/dist/extensionAPI.js +13 -13
  94. package/dist/{frontmatter-CV0YkjoY.js → frontmatter-CTR5f_Ez.js} +2 -2
  95. package/dist/{gateway-cli-Fnxgv97F.js → gateway-cli-BFPPqLYw.js} +41 -41
  96. package/dist/{gateway-cli-DliBYmLu.js → gateway-cli-Cwh2BbPv.js} +42 -42
  97. package/dist/{gateway-rpc-DiTk_nOl.js → gateway-rpc-CS_pPYyV.js} +1 -1
  98. package/dist/{gateway-rpc-BkB6xEaM.js → gateway-rpc-Ddqs16S-.js} +1 -1
  99. package/dist/{gemini-auth-C39f2zRe.js → gemini-auth-BkLFtndu.js} +1 -1
  100. package/dist/{github-copilot-token-B8B2pmph.js → github-copilot-token-cCYzSU9h.js} +7 -7
  101. package/dist/{glass-ui-ws-B0sH6QQi.js → glass-ui-ws-BfHJCfCz.js} +33 -33
  102. package/dist/{glass-ui-ws-CfNTIb_g.js → glass-ui-ws-DB9p7t4H.js} +34 -34
  103. package/dist/{health-9z0Hpkuc.js → health-Bx6RQ4MZ.js} +5 -5
  104. package/dist/{health-NTpZ8ssG.js → health-CLIwZbJe.js} +5 -5
  105. package/dist/{hooks-cli-C86OGnVu.js → hooks-cli-BgALdxuB.js} +26 -26
  106. package/dist/{hooks-cli-wq_uFJly.js → hooks-cli-CF4fT-gm.js} +27 -27
  107. package/dist/{image-CKMw_vhe.js → image-BmIvgTV4.js} +4 -4
  108. package/dist/{image-CjuJpc3E.js → image-BrxGAFvc.js} +2 -2
  109. package/dist/{image-BwXkayiM.js → image-DI1dYFo0.js} +2 -2
  110. package/dist/{image-CO4meYzg.js → image-KpMaj86B.js} +2 -2
  111. package/dist/{image-ops-M5agStZn.js → image-ops-C7CauEK8.js} +16 -16
  112. package/dist/index.js +34 -34
  113. package/dist/{ir-Z9axTYHx.js → ir-JAy_3A3B.js} +4 -4
  114. package/dist/{lifecycle-core-DIBHfMOL.js → lifecycle-core-BnlvcthF.js} +2 -2
  115. package/dist/{lifecycle-core-D0n_6gjJ.js → lifecycle-core-D8iU9ahw.js} +2 -2
  116. package/dist/llm-slug-generator.js +54 -54
  117. package/dist/{local-roots-Bh5xx9IO.js → local-roots-Se92wAN5.js} +5 -5
  118. package/dist/{login-CeXFO0OG.js → login-CayZfsyE.js} +2 -2
  119. package/dist/{login-tFW8qUTU.js → login-DPxmcuIe.js} +2 -2
  120. package/dist/{login-y9uojrfG.js → login-QU18rIZK.js} +2 -2
  121. package/dist/{login-2w0Q7Btb.js → login-bQWLSSfZ.js} +7 -7
  122. package/dist/{login-qr-CqPpNO1y.js → login-qr-BB2Zfn7K.js} +2 -2
  123. package/dist/{login-qr-CC0TE3ax.js → login-qr-Bn4BQkWf.js} +2 -2
  124. package/dist/{login-qr-BMIn_eOf.js → login-qr-CPn2Q7vV.js} +2 -2
  125. package/dist/{login-qr-BJMvic1s.js → login-qr-l5XwJWk9.js} +12 -12
  126. package/dist/{logs-cli-Dvs8e7u9.js → logs-cli-2z1YdwSX.js} +3 -3
  127. package/dist/{logs-cli-Dld6m2xN.js → logs-cli-COwO0YyZ.js} +3 -3
  128. package/dist/{manager-BoLUtbg2.js → manager-CJ3M1Uxq.js} +22 -22
  129. package/dist/{manifest-registry-0J48biqr.js → manifest-registry-yb7sAlu4.js} +19 -19
  130. package/dist/{markdown-tables-DuRhvVpP.js → markdown-tables-Dnj2LQUc.js} +1 -1
  131. package/dist/{memory-cli-CPONmMrJ.js → memory-cli-9q0ppQpo.js} +1 -1
  132. package/dist/{memory-cli-C2SWDd8g.js → memory-cli-B7GV_Iz_.js} +1 -1
  133. package/dist/{message-channel-DwDSKGn4.js → message-channel-OlFBYAw8.js} +1 -1
  134. package/dist/{model-catalog-r6v4orfa.js → model-catalog-CsKgWlNp.js} +2 -2
  135. package/dist/{model-catalog-Bn0ffe1O.js → model-catalog-b9o0TtF7.js} +2 -2
  136. package/dist/{model-picker-D1J9kB3d.js → model-picker-CRy3nJeT.js} +2 -2
  137. package/dist/{model-picker-TnkH7DsN.js → model-picker-DBsP93uq.js} +2 -2
  138. package/dist/{models-DfuMRKvu.js → models-CPIhph0W.js} +8 -8
  139. package/dist/{models-cli-BJv-aMkH.js → models-cli-C01GsvW2.js} +28 -28
  140. package/dist/{models-cli-FnD3ZD7s.js → models-cli-CLqS4ENq.js} +29 -29
  141. package/dist/{models-config-CCMpqFyr.js → models-config-Bc8qKqev.js} +1 -1
  142. package/dist/{models-config-qyOXrOli.js → models-config-BiIYPWCW.js} +1 -1
  143. package/dist/{node-cli-C4b1vFcY.js → node-cli-74pkmapS.js} +9 -9
  144. package/dist/{node-cli-C8xs7jkn.js → node-cli-BeZKOSYR.js} +9 -9
  145. package/dist/{nodes-cli-alQ9Bv_-.js → nodes-cli-DJHcnIfL.js} +3 -3
  146. package/dist/{nodes-cli-_wKGGKvG.js → nodes-cli-nic1q7eb.js} +3 -3
  147. package/dist/{onboard-A5dfwOyL.js → onboard-BrxB6sbz.js} +7 -7
  148. package/dist/{onboard-BSlbkbv-.js → onboard-CzncEzdT.js} +7 -7
  149. package/dist/{onboard-channels-CEZpwlsw.js → onboard-channels-BBUPobrz.js} +1 -1
  150. package/dist/{onboard-channels-DjqHX51z.js → onboard-channels-H11ympjW.js} +1 -1
  151. package/dist/{onboard-custom-yNOjvlgR.js → onboard-custom-BFbF4nGV.js} +2 -2
  152. package/dist/{onboard-custom-BNyCb71p.js → onboard-custom-Bt-wDMSz.js} +2 -2
  153. package/dist/{onboard-helpers-DASpwgat.js → onboard-helpers-ChH5EhW2.js} +2 -2
  154. package/dist/{onboard-helpers-CAjcAisT.js → onboard-helpers-MnxHJAaB.js} +2 -2
  155. package/dist/{onboard-remote-D-8pd-tx.js → onboard-remote-57GHsVPU.js} +1 -1
  156. package/dist/{onboard-remote-xXi061GI.js → onboard-remote-BRxgNeoe.js} +1 -1
  157. package/dist/{onboard-skills-c4Rw-CGf.js → onboard-skills-CLnJpRrp.js} +1 -1
  158. package/dist/{onboard-skills-Bn2T6lze.js → onboard-skills-DtcVRCTc.js} +1 -1
  159. package/dist/{onboarding-BTNiewJj.js → onboarding-D7hzRo_I.js} +10 -10
  160. package/dist/{onboarding-COqa6a28.js → onboarding-D8p8ii63.js} +10 -10
  161. package/dist/{onboarding.finalize-CAax5IdL.js → onboarding.finalize-BJUg2rlZ.js} +33 -33
  162. package/dist/{onboarding.finalize-CDsTN9zD.js → onboarding.finalize-C-rIKbkf.js} +31 -31
  163. package/dist/{onboarding.gateway-config-D6SN3HBb.js → onboarding.gateway-config-CTbWQvl6.js} +4 -4
  164. package/dist/{onboarding.gateway-config-DOna9Sr4.js → onboarding.gateway-config-oxW0bLBK.js} +4 -4
  165. package/dist/{outbound-drXCcH8D.js → outbound-BOqx1b0e.js} +1 -1
  166. package/dist/{outbound-B_wliV26.js → outbound-BhKz3zWF.js} +7 -7
  167. package/dist/{outbound-BihTVvMr.js → outbound-BodV7hPd.js} +1 -1
  168. package/dist/{outbound-DyBiNY4z.js → outbound-CG3KehgB.js} +1 -1
  169. package/dist/{outbound-attachment-BOy-OY4-.js → outbound-attachment-BzwVH4Pn.js} +2 -2
  170. package/dist/{pairing-cli-CQRAnpvm.js → pairing-cli-NErE7ajG.js} +1 -1
  171. package/dist/{pairing-cli-CpKm3M-X.js → pairing-cli-RbEs_EMc.js} +1 -1
  172. package/dist/{paths-DEuVuViW.js → paths-CbQV9WEg.js} +1 -1
  173. package/dist/{pi-auth-json-BQcKJvH0.js → pi-auth-json-CCaxCywz.js} +1 -1
  174. package/dist/{pi-embedded-R_JHJFwq.js → pi-embedded-b2yPH0UQ.js} +122 -37
  175. package/dist/{pi-embedded-helpers-Cr1X3W9i.js → pi-embedded-helpers-BDI11Fqj.js} +73 -73
  176. package/dist/{pi-embedded-helpers-BJrRH97f.js → pi-embedded-helpers-Bdac0DIf.js} +5 -5
  177. package/dist/{pi-embedded-helpers-BuVSLhG_.js → pi-embedded-helpers-CeNTB0sV.js} +1 -1
  178. package/dist/{pi-embedded-helpers-DE9h5GAu.js → pi-embedded-helpers-cgZRM5cz.js} +1 -1
  179. package/dist/{pi-tools.policy-De00gPXt.js → pi-tools.policy-B4NDL7r-.js} +2 -2
  180. package/dist/{pi-tools.policy-C6MWZ59E.js → pi-tools.policy-BYklnTNc.js} +2 -2
  181. package/dist/{plugin-registry-DMUt9X9t.js → plugin-registry-29yLAS46.js} +2 -2
  182. package/dist/{plugin-registry-DeT0nOee.js → plugin-registry-CzWOGG0k.js} +2 -2
  183. package/dist/plugin-sdk/{audio-preflight-JLsqSVmS.js → audio-preflight-DSEypXnx.js} +5 -5
  184. package/dist/plugin-sdk/{channel-web-BtuQPMkd.js → channel-web-DwLIjUen.js} +7 -7
  185. package/dist/plugin-sdk/{chrome-cPabhZZ4.js → chrome-DC-la42T.js} +1 -1
  186. package/dist/plugin-sdk/config/model-profiles.d.ts +3 -0
  187. package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -0
  188. package/dist/plugin-sdk/config/zod-schema.d.ts +3 -0
  189. package/dist/plugin-sdk/{config-XjK1L039.js → config-DgwyZd2S.js} +4 -1
  190. package/dist/plugin-sdk/{deliver-Clj5uUID.js → deliver-7pgLdSpM.js} +2 -2
  191. package/dist/plugin-sdk/{image-CAA-0T17.js → image-CqMZSk6f.js} +2 -2
  192. package/dist/plugin-sdk/index.js +17 -17
  193. package/dist/plugin-sdk/{login-Btqnuww9.js → login-DJzS9QT2.js} +2 -2
  194. package/dist/plugin-sdk/{login-qr-Bxhch9R1.js → login-qr-DziBjQY5.js} +2 -2
  195. package/dist/plugin-sdk/{outbound-D_7ktHfW.js → outbound-DmsEc64Z.js} +1 -1
  196. package/dist/plugin-sdk/{pi-embedded-helpers-CDrcAlGW.js → pi-embedded-helpers-C33OSgwG.js} +5 -5
  197. package/dist/plugin-sdk/{pw-ai-CJjlxWj7.js → pw-ai-MIepjtIO.js} +2 -2
  198. package/dist/plugin-sdk/{replies-DC9NI2KS.js → replies-Bw1Amxop.js} +1 -1
  199. package/dist/plugin-sdk/{reply-CnTdwks6.js → reply-BxYNpQRu.js} +118 -33
  200. package/dist/plugin-sdk/{runner-CBq0_f-j.js → runner-Bh4NdzRK.js} +2 -2
  201. package/dist/plugin-sdk/{send-u7SJPkmf.js → send-Bf62p_ul.js} +1 -1
  202. package/dist/plugin-sdk/{send-BditKDxK.js → send-CENVp2ol.js} +1 -1
  203. package/dist/plugin-sdk/{send-vTA7ntTD.js → send-D5_J2DiV.js} +1 -1
  204. package/dist/plugin-sdk/{send-BeO7M3pz.js → send-Ddy4p4LW.js} +1 -1
  205. package/dist/plugin-sdk/{send-CdJoYllr.js → send-P1G7c4FN.js} +1 -1
  206. package/dist/plugin-sdk/{session-t6hhaLPe.js → session-Z4-R_Top.js} +1 -1
  207. package/dist/plugin-sdk/{web-BkK8fGjJ.js → web-DiNM_c37.js} +17 -17
  208. package/dist/plugin-sdk/{whatsapp-actions-DifisvHY.js → whatsapp-actions-Bg6DfWkN.js} +2 -2
  209. package/dist/{plugins-Bkr5ZdYs.js → plugins-BzmbgY7s.js} +9 -9
  210. package/dist/{plugins-cli-D85G3qZp.js → plugins-cli-D4bGKnOF.js} +26 -26
  211. package/dist/{plugins-cli-BCYM8B89.js → plugins-cli-DZ6arND4.js} +27 -27
  212. package/dist/{program-C4k7oBuC.js → program-DE9DbHYV.js} +33 -33
  213. package/dist/{program-context-CiGMAzyC.js → program-context-iI9_njQv.js} +38 -38
  214. package/dist/{prompt-select-styled-CoWkFI4l.js → prompt-select-styled-D0ELdY0x.js} +14 -14
  215. package/dist/{prompt-select-styled-CYiMonwj.js → prompt-select-styled-SHa0ZJL9.js} +14 -14
  216. package/dist/{provider-auth-helpers-B8RGFZit.js → provider-auth-helpers-BI2k0jlH.js} +2 -2
  217. package/dist/{provider-auth-helpers-CfkQBpo7.js → provider-auth-helpers-EMBbfX3w.js} +2 -2
  218. package/dist/{push-apns-DM6nj062.js → push-apns-DcbeaY5y.js} +1 -1
  219. package/dist/{push-apns-DmpUv3y4.js → push-apns-DyeCPAvI.js} +1 -1
  220. package/dist/{pw-ai-C_1hRlOM.js → pw-ai-C2z2aMEp.js} +2 -2
  221. package/dist/{pw-ai-Ch_WUbQZ.js → pw-ai-C_7yEh9n.js} +11 -11
  222. package/dist/{pw-ai-CbyO1fbh.js → pw-ai-LB6wkt8h.js} +2 -2
  223. package/dist/{pw-ai-CS2tDZd2.js → pw-ai-sY1BRRsq.js} +2 -2
  224. package/dist/{qmd-manager-8-Z3Cdpt.js → qmd-manager-lBS9mT9w.js} +7 -7
  225. package/dist/{qr-cli-9L-HExyH.js → qr-cli-B-NWpxfN.js} +1 -1
  226. package/dist/{qr-cli-mgnfD5ce.js → qr-cli-TaubpmtG.js} +1 -1
  227. package/dist/{register.agent-DcvwdQXs.js → register.agent-D-1w3KOa.js} +32 -32
  228. package/dist/{register.agent-DX-OyYzL.js → register.agent-D4o7bi_u.js} +34 -34
  229. package/dist/{register.configure-DBaELzEM.js → register.configure-BIczNshG.js} +37 -37
  230. package/dist/{register.configure-Bldjj3LP.js → register.configure-BYCEJg1c.js} +36 -36
  231. package/dist/{register.maintenance-DVv8ljal.js → register.maintenance-Syt4oSuk.js} +34 -34
  232. package/dist/{register.maintenance-DAwf6cHN.js → register.maintenance-k6z5GVrO.js} +36 -36
  233. package/dist/{register.message-DUeR-Dz2.js → register.message-BJeeT9xQ.js} +27 -27
  234. package/dist/{register.message-ClKGIfK4.js → register.message-Bi7QLNId.js} +26 -26
  235. package/dist/{register.onboard-DJEZcUm5.js → register.onboard-B_FeHkL-.js} +33 -33
  236. package/dist/{register.onboard-DWrxbBr5.js → register.onboard-DDbxMjmt.js} +32 -32
  237. package/dist/{register.setup-Ah9E7LHA.js → register.setup-CPi3uss4.js} +33 -33
  238. package/dist/{register.setup-BDqhSgCz.js → register.setup-Cpl67hQ6.js} +32 -32
  239. package/dist/{register.status-health-sessions-BJYemCHi.js → register.status-health-sessions-CHPN3CNt.js} +31 -31
  240. package/dist/{register.status-health-sessions-CMQS8zwA.js → register.status-health-sessions-DsY8YuEo.js} +29 -29
  241. package/dist/{register.subclis-Bb0yWevQ.js → register.subclis-D5JRuk93.js} +28 -28
  242. package/dist/{registry-UkL38jvt.js → registry-DYq1AYOv.js} +17 -17
  243. package/dist/{replies-CbeMv5WZ.js → replies-C2sQt_cX.js} +3 -3
  244. package/dist/{replies-DO80zq73.js → replies-CYuZN9PJ.js} +1 -1
  245. package/dist/{replies-vgss3_QA.js → replies-cMkt1-fW.js} +1 -1
  246. package/dist/{replies-CM5QgPHM.js → replies-zOTZyd6v.js} +1 -1
  247. package/dist/{reply-YphHjxHp.js → reply-D55iMWI5.js} +129 -44
  248. package/dist/{reply-prefix-ZnX2V-k9.js → reply-prefix-CvEIl6_d.js} +1 -1
  249. package/dist/{resolve-route-gl0ZOOKR.js → resolve-route-DX7xcMsD.js} +4 -4
  250. package/dist/{retry-D25Z8MVS.js → retry-B-y5suGA.js} +1 -1
  251. package/dist/{routes-B1-BfEDm.js → routes-ClhmdN8I.js} +3 -3
  252. package/dist/{routes-BFw2-yAN.js → routes-DRkO6iuR.js} +3 -3
  253. package/dist/{rpc-gJOYujMj.js → rpc-DvA01fCj.js} +1 -1
  254. package/dist/{rpc--E7i90bk.js → rpc-UsQvUYIP.js} +1 -1
  255. package/dist/{run-main-CZI2Ne08.js → run-main-BWoPODyq.js} +44 -44
  256. package/dist/{runner-DKkSu9cc.js → runner-CtF7EgsD.js} +2 -2
  257. package/dist/{runner-DmM2HhB-.js → runner-D3aZ5p3H.js} +3 -3
  258. package/dist/{runner-B2Y_5crX.js → runner-_7xOqQDP.js} +22 -22
  259. package/dist/{runner-CW9KEL7W.js → runner-z_tSZGY5.js} +3 -3
  260. package/dist/{sandbox-BFzSUT19.js → sandbox-DrIHYiE6.js} +5 -5
  261. package/dist/{sandbox-cli-BV6FS0bK.js → sandbox-cli-BiiThMpq.js} +6 -6
  262. package/dist/{sandbox-cli-Cj5__-gh.js → sandbox-cli-QpZpJ6Hq.js} +6 -6
  263. package/dist/{sandbox-DAOxwUQm.js → sandbox-rjqN2SHD.js} +5 -5
  264. package/dist/{security-cli-KxA9AZ3q.js → security-cli-DxNPZzVB.js} +9 -9
  265. package/dist/{security-cli-BA4AGkeh.js → security-cli-s_AbIm-b.js} +9 -9
  266. package/dist/{send-CR5fRDgW.js → send-4MJyhXk5.js} +1 -1
  267. package/dist/{send-Cgcbuw8U.js → send-B62vYwo8.js} +1 -1
  268. package/dist/{send-CPF8hSFp.js → send-B7MtdeLq.js} +1 -1
  269. package/dist/{send-CY8oqBFg.js → send-B9pwTYyE.js} +1 -1
  270. package/dist/{send-CFzf_ab4.js → send-BJNUY-9E.js} +1 -1
  271. package/dist/{send-Dy8tsHUE.js → send-BTXR3fPR.js} +6 -6
  272. package/dist/{send-CB3dCCmE.js → send-BvCit35j.js} +1 -1
  273. package/dist/{send-ZI2bG_Jc.js → send-C1ptDV-M.js} +1 -1
  274. package/dist/{send-DTTtmhjA.js → send-C6jy9sVB.js} +1 -1
  275. package/dist/{send-CukP8Vq4.js → send-CVSO0ZdD.js} +1 -1
  276. package/dist/{send-sgxdFZNy.js → send-D8DhbDGm.js} +18 -18
  277. package/dist/{send-CZr1hVHY.js → send-DK-Jat_i.js} +1 -1
  278. package/dist/{send-iUSZIdml.js → send-DNJAa7Q_.js} +7 -7
  279. package/dist/{send-Cutb0ZDY.js → send-DV8npIWi.js} +1 -1
  280. package/dist/{send-CCNIWI2Z.js → send-De1p8sZA.js} +10 -10
  281. package/dist/{send-BJTX03Bn.js → send-DiYc3Z2y.js} +1 -1
  282. package/dist/{send-DHWMRnPk.js → send-DryK_KEK.js} +1 -1
  283. package/dist/{send-CPSKimCF.js → send-Dx7S4jGp.js} +6 -6
  284. package/dist/{send-iVPD3yf2.js → send-iIqnmxNc.js} +1 -1
  285. package/dist/{send-DK_pm_7l.js → send-qSITFlVc.js} +1 -1
  286. package/dist/{server-context-CHYWo_TC.js → server-context-C3fvq6h5.js} +5 -5
  287. package/dist/{server-context-H24IFajW.js → server-context-CtYkBX0P.js} +5 -5
  288. package/dist/{server-methods-C3xXynlm.js → server-methods-C4oRmj--.js} +16 -16
  289. package/dist/{server-methods-DJ3Bi-Xg.js → server-methods-DY-jApXo.js} +15 -15
  290. package/dist/{server-node-events-Cgdwex4k.js → server-node-events--9s3cGoR.js} +27 -27
  291. package/dist/{server-node-events-DS50d7AK.js → server-node-events-Bw6yFsJP.js} +26 -26
  292. package/dist/{session-CINKYYDi.js → session-3P44Lx9Z.js} +1 -1
  293. package/dist/{session-BTpKgzso.js → session-BUTPdQjj.js} +8 -8
  294. package/dist/{session-BF9s_N2s.js → session-BmC1G2OF.js} +1 -1
  295. package/dist/{session-Ckw7cXeP.js → session-XfYb9nxX.js} +1 -1
  296. package/dist/{session-utils-Bka9dR4m.js → session-utils-DlQSI-Te.js} +3 -3
  297. package/dist/{sessions-DgYpBvse.js → sessions-9tWmT3oM.js} +1 -1
  298. package/dist/{sessions-WBoXk-Ag.js → sessions-BL_hivz0.js} +3 -3
  299. package/dist/{sessions-CJXnZVjR.js → sessions-Dxc5UV-H.js} +1 -1
  300. package/dist/{shared-CvNixzwn.js → shared-DEvSdt0I.js} +1 -1
  301. package/dist/{shared-D8K9MkWg.js → shared-DwzDlNQn.js} +1 -1
  302. package/dist/{skill-commands-HBkNllDU.js → skill-commands-BiPrghRt.js} +16 -16
  303. package/dist/{skills-CGHRETGF.js → skills-Bs0AW1g3.js} +24 -24
  304. package/dist/{skills-cli-C-URp1av.js → skills-cli-BHJAAvDv.js} +1 -1
  305. package/dist/{skills-cli-CkTGL9dR.js → skills-cli-CES7tX87.js} +1 -1
  306. package/dist/{sqlite-JHY-uOmS.js → sqlite-BHWvOATS.js} +16 -16
  307. package/dist/{status-2KD2q2sn.js → status-CPQrmN1p.js} +2 -2
  308. package/dist/{status-0aNBSe72.js → status-CfCqG5a6.js} +9 -9
  309. package/dist/{status-D9uWA9pU.js → status-DZHTCKq_.js} +10 -10
  310. package/dist/{status-BBnhTX-n.js → status-DxqgzaIz.js} +2 -2
  311. package/dist/{status.update-DbmZz0Aq.js → status.update-BhJp4NkS.js} +1 -1
  312. package/dist/{status.update-DP0OFqyb.js → status.update-DqXGFKta.js} +1 -1
  313. package/dist/{store-Ea3zM6xK.js → store-01F_JM7O.js} +6 -6
  314. package/dist/{subagent-registry-aZczbtLM.js → subagent-registry-BGKDFTRA.js} +130 -45
  315. package/dist/{subsystem-DN75fnEF.js → subsystem-BjyjJF-d.js} +1 -1
  316. package/dist/{system-cli-BXewgTZR.js → system-cli-BrZGQcZl.js} +3 -3
  317. package/dist/{system-cli-CECNjZdB.js → system-cli-CjgIC8rh.js} +3 -3
  318. package/dist/{systemd-hints-sQipWGd1.js → systemd-hints-B8AHs8Nn.js} +1 -1
  319. package/dist/{systemd-hints-DZH9qY5W.js → systemd-hints-DUXXob94.js} +1 -1
  320. package/dist/{tables-Dkg9O8rv.js → tables-BuM4FKR3.js} +1 -1
  321. package/dist/{target-errors-Pr77jao5.js → target-errors-BEugWC4F.js} +2 -2
  322. package/dist/{thinking-C9-JAUzD.js → thinking-BprCy23Z.js} +5 -5
  323. package/dist/{tokens-CCZl4YHT.js → tokens-W0JzCJJM.js} +1 -1
  324. package/dist/{tool-images-B1qVCntj.js → tool-images-SqqWIT22.js} +2 -2
  325. package/dist/{tool-loop-detection-C33wf43N.js → tool-loop-detection-D5mBY7AC.js} +3 -3
  326. package/dist/{tui-DLaU7tTx.js → tui-BktCSga7.js} +4 -4
  327. package/dist/{tui-2nWOvxxE.js → tui-CAzxJ9EP.js} +4 -4
  328. package/dist/{tui-cli-B-Nl_8uj.js → tui-cli-AXeYpVcb.js} +9 -9
  329. package/dist/{tui-cli-D-PVUsS5.js → tui-cli-Bz3RdHqe.js} +9 -9
  330. package/dist/{unified-runner-hulABWDL.js → unified-runner-BhGMOS0G.js} +309 -224
  331. package/dist/{update-cli-CnN_k3P1.js → update-cli-C8EpxduY.js} +37 -37
  332. package/dist/{update-cli-DwGmFbPH.js → update-cli-n_Tkv8N_.js} +39 -39
  333. package/dist/{update-runner-BkdQhkKR.js → update-runner-CowTMnrt.js} +1 -1
  334. package/dist/{update-runner-dT5l0kuK.js → update-runner-Tk50GxTW.js} +1 -1
  335. package/dist/{web-DPki9fDa.js → web-BIpIz8vD.js} +29 -29
  336. package/dist/{web-DpQ5RaFz.js → web-CMLJq-WC.js} +58 -58
  337. package/dist/{web-C0ZdaR6w.js → web-Cz8o-Hc9.js} +16 -16
  338. package/dist/{web-CJSRBiDm.js → web-ONk39lyq.js} +29 -29
  339. package/dist/{webhooks-cli-ChiCyIaD.js → webhooks-cli-Da8YhVu4.js} +1 -1
  340. package/dist/{webhooks-cli-iOLEyFdx.js → webhooks-cli-v0rfBwU8.js} +1 -1
  341. package/dist/{whatsapp-actions-BmcMtU_J.js → whatsapp-actions-AEeCOVko.js} +2 -2
  342. package/dist/{whatsapp-actions-D_w4AfW9.js → whatsapp-actions-BPn8FtPC.js} +23 -23
  343. package/dist/{whatsapp-actions-BW8P8Izy.js → whatsapp-actions-Ba3KBpGu.js} +2 -2
  344. package/dist/{whatsapp-actions-C8nNH4ax.js → whatsapp-actions-Cz2qhCrD.js} +2 -2
  345. package/dist/{with-timeout-Di0nddLY.js → with-timeout-487M8IgO.js} +1 -1
  346. package/dist/{with-timeout-D2z7OkiK.js → with-timeout-BU7MJQDD.js} +1 -1
  347. package/dist/{workspace-DqJ5h-ZB.js → workspace-DscDraUb.js} +27 -27
  348. package/extensions/bluebubbles/package.json +1 -1
  349. package/extensions/copilot-proxy/package.json +1 -1
  350. package/extensions/diagnostics-otel/package.json +1 -1
  351. package/extensions/discord/package.json +1 -1
  352. package/extensions/feishu/package.json +1 -1
  353. package/extensions/google-antigravity-auth/package.json +1 -1
  354. package/extensions/google-gemini-cli-auth/package.json +1 -1
  355. package/extensions/googlechat/package.json +1 -1
  356. package/extensions/imessage/package.json +1 -1
  357. package/extensions/irc/package.json +1 -1
  358. package/extensions/learning-loop/package.json +1 -1
  359. package/extensions/line/package.json +1 -1
  360. package/extensions/llm-task/package.json +1 -1
  361. package/extensions/matrix/CHANGELOG.md +6 -0
  362. package/extensions/matrix/package.json +1 -1
  363. package/extensions/mattermost/package.json +1 -1
  364. package/extensions/memory-core/package.json +1 -1
  365. package/extensions/memory-lancedb/package.json +1 -1
  366. package/extensions/minimax-portal-auth/package.json +1 -1
  367. package/extensions/msteams/CHANGELOG.md +6 -0
  368. package/extensions/msteams/package.json +1 -1
  369. package/extensions/nextcloud-talk/package.json +1 -1
  370. package/extensions/nostr/CHANGELOG.md +6 -0
  371. package/extensions/nostr/package.json +1 -1
  372. package/extensions/open-prose/package.json +1 -1
  373. package/extensions/outlook/package.json +1 -1
  374. package/extensions/pipeline/package.json +1 -1
  375. package/extensions/signal/package.json +1 -1
  376. package/extensions/slack/package.json +1 -1
  377. package/extensions/telegram/package.json +1 -1
  378. package/extensions/tlon/package.json +1 -1
  379. package/extensions/twitch/CHANGELOG.md +6 -0
  380. package/extensions/twitch/package.json +1 -1
  381. package/extensions/voice-call/CHANGELOG.md +6 -0
  382. package/extensions/voice-call/package.json +1 -1
  383. package/extensions/whatsapp/package.json +1 -1
  384. package/extensions/zalo/CHANGELOG.md +6 -0
  385. package/extensions/zalo/package.json +1 -1
  386. package/extensions/zalouser/CHANGELOG.md +6 -0
  387. package/extensions/zalouser/package.json +1 -1
  388. package/package.json +1 -1
  389. package/dist/paths-CYmyCDsE.js +0 -212
@@ -1,77 +1,77 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { c as expandHomePrefix, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-CYmyCDsE.js";
2
+ import { c as expandHomePrefix, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
3
3
  import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normalizeMainKey, d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, g as isAcpSessionKey, h as getSubagentDepth, l as resolveAgentIdFromSessionKey, o as classifySessionKeyShape, p as normalizeAccountId$2, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-BCzIW1Y2.js";
4
- import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-UkL38jvt.js";
5
- import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-D68_xfTL.js";
6
- import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DN75fnEF.js";
7
- import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DqJ5h-ZB.js";
8
- import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DEuVuViW.js";
9
- import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, G as getShellPathFromLoginShell, H as resolveModelAuthMode, I as createOllamaStreamFn, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as DEFAULT_PROVIDER, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, V as resolveEnvApiKey, W as normalizeSecretInput, X as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_MODEL, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, et as resolveSymiAgentDir, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, q as resolveShellEnvFallbackTimeoutMs, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-CZZjOpX8.js";
10
- import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-xmBFQPBP.js";
11
- import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-B8B2pmph.js";
4
+ import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-DYq1AYOv.js";
5
+ import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-CpEJ0B88.js";
6
+ import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
7
+ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
8
+ import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CbQV9WEg.js";
9
+ import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, G as getShellPathFromLoginShell, H as resolveModelAuthMode, I as createOllamaStreamFn, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as DEFAULT_PROVIDER, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, V as resolveEnvApiKey, W as normalizeSecretInput, X as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_MODEL, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, et as resolveSymiAgentDir, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, q as resolveShellEnvFallbackTimeoutMs, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-q3HjbboY.js";
10
+ import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
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-Cr1X3W9i.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-giEDOxub.js";
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-0J48biqr.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D0sqCqXY.js";
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-CGHRETGF.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";
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";
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
- 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-M5agStZn.js";
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";
20
20
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DpUUUgkK.js";
21
- import { n as getMediaDir, r as saveMediaBuffer } from "./store-Ea3zM6xK.js";
22
- import { _ as normalizeAtHashSlug, a as normalizeReasoningLevel, b as normalizeStringEntriesLower, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as resolveChannelGroupToolsPolicy, h as resolveChannelGroupRequireMention, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupPolicy, n as formatXHighModelHint, o as normalizeThinkLevel, p as normalizeSignalMessagingTarget, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeHyphenSlug, y as normalizeStringEntries } from "./thinking-C9-JAUzD.js";
23
- import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-DwDSKGn4.js";
21
+ import { n as getMediaDir, r as saveMediaBuffer } from "./store-01F_JM7O.js";
22
+ import { _ as normalizeAtHashSlug, a as normalizeReasoningLevel, b as normalizeStringEntriesLower, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as resolveChannelGroupToolsPolicy, h as resolveChannelGroupRequireMention, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupPolicy, n as formatXHighModelHint, o as normalizeThinkLevel, p as normalizeSignalMessagingTarget, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeHyphenSlug, y as normalizeStringEntries } from "./thinking-BprCy23Z.js";
23
+ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-OlFBYAw8.js";
24
24
  import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
25
25
  import { n as resolveConversationLabel } from "./conversation-label-Onz2hiJh.js";
26
- import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$1, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-Bkr5ZdYs.js";
27
- import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-D1r2dq1t.js";
28
- import { t as resolveIMessageAccount } from "./accounts-dRUMQQrB.js";
29
- import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-wSphH5gv.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-Dy8tsHUE.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-CCNIWI2Z.js";
26
+ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$1, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-BzmbgY7s.js";
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
+ import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
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";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
- import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-B1qVCntj.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-BY58QnO8.js";
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-DIKKFHpP.js";
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";
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-CKMw_vhe.js";
38
- import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-BQcKJvH0.js";
39
- import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CCZl4YHT.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-sgxdFZNy.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";
38
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CCaxCywz.js";
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";
41
41
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
42
- import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-ZnX2V-k9.js";
43
- import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-BoLUtbg2.js";
44
- import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-JHY-uOmS.js";
45
- import { n as retryAsync } from "./retry-D25Z8MVS.js";
46
- import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Pr77jao5.js";
47
- import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-B9x_1qSr.js";
48
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DuRhvVpP.js";
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
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CJ3M1Uxq.js";
44
+ import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BHWvOATS.js";
45
+ import { n as retryAsync } from "./retry-B-y5suGA.js";
46
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-BEugWC4F.js";
47
+ import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BHW8Yu5A.js";
48
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dnj2LQUc.js";
49
49
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Cj6kcyGt.js";
50
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Bh5xx9IO.js";
51
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-Z9axTYHx.js";
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-DPf4J7nj.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-B2Y_5crX.js";
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-HBkNllDU.js";
50
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Se92wAN5.js";
51
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-JAy_3A3B.js";
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";
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";
57
57
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BGS2SHjF.js";
58
- import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-Cm1OJRbv.js";
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
- import { t as convertMarkdownTables } from "./tables-Dkg9O8rv.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-CPSKimCF.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-iUSZIdml.js";
63
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-gl0ZOOKR.js";
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";
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-CbeMv5WZ.js";
66
- import { t as getActiveWebListener } from "./active-listener-C3pfJhdC.js";
65
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-C2sQt_cX.js";
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";
69
69
  import path from "node:path";
70
- import fsSync, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
70
+ import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
71
71
  import os, { homedir } from "node:os";
72
72
  import JSON5 from "json5";
73
- import * as fs$1 from "node:fs/promises";
74
- import fs from "node:fs/promises";
73
+ import * as fs$2 from "node:fs/promises";
74
+ import fs$1 from "node:fs/promises";
75
75
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
76
76
  import { inspect, promisify } from "node:util";
77
77
  import { fileURLToPath } from "node:url";
@@ -218,13 +218,96 @@ const BUILTIN_PROFILES = [
218
218
  }
219
219
  },
220
220
  {
221
- match: ["qwen-cw", "qwen3"],
222
- label: "Qwen 3.5",
221
+ match: ["qwen3.6", "spider-qwen36"],
222
+ label: "Qwen 3.6",
223
+ params: {
224
+ temperature: 1,
225
+ top_p: .95,
226
+ top_k: 20,
227
+ max_tokens: 16384,
228
+ presence_penalty: 1.5
229
+ },
230
+ streaming: {
231
+ deltaThrottleMs: 50,
232
+ flushOnFinal: true,
233
+ chunkPattern: "burst"
234
+ },
235
+ filters: {
236
+ stripPatterns: [],
237
+ suppressMonologue: true,
238
+ hasStructuredThinking: true,
239
+ validateToolArgs: false
240
+ },
241
+ promptAdditions: [
242
+ "CRITICAL OUTPUT RULES:",
243
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
244
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
245
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
246
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
247
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
248
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
249
+ ],
250
+ ui: {
251
+ badge: "Spider",
252
+ watchdogMs: 9e5,
253
+ armWatchdogOnSend: true
254
+ }
255
+ },
256
+ {
257
+ match: ["trevorjs/gemma", "spider-gemma4"],
258
+ label: "Gemma 4 (Spider)",
223
259
  params: {
224
260
  temperature: 1,
225
261
  top_p: .95,
226
262
  top_k: 64,
227
- max_tokens: 16384
263
+ max_tokens: 4096,
264
+ stop: ["<end_of_turn>", "<eos>"]
265
+ },
266
+ streaming: {
267
+ deltaThrottleMs: 50,
268
+ flushOnFinal: true,
269
+ chunkPattern: "burst"
270
+ },
271
+ filters: {
272
+ stripPatterns: [
273
+ "<\\|channel>\\w*",
274
+ "<channel\\|>",
275
+ "<start_of_turn>(?:model|user)?",
276
+ "<end_of_turn>"
277
+ ],
278
+ suppressMonologue: true,
279
+ hasStructuredThinking: false,
280
+ validateToolArgs: true
281
+ },
282
+ promptAdditions: [
283
+ "CRITICAL OUTPUT RULES:",
284
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
285
+ "- Do not output raw control tokens, channel tags, or turn markers.",
286
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
287
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
288
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
289
+ "- Send brief progress updates on long tasks so the user knows you are active.",
290
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
291
+ ],
292
+ ui: {
293
+ badge: "Spider",
294
+ watchdogMs: 6e5,
295
+ armWatchdogOnSend: true
296
+ }
297
+ },
298
+ {
299
+ match: [
300
+ "qwen-cw",
301
+ "spider-qwen35",
302
+ "qwen3"
303
+ ],
304
+ label: "Qwen 3.5",
305
+ params: {
306
+ temperature: 1,
307
+ top_p: .95,
308
+ top_k: 20,
309
+ max_tokens: 16384,
310
+ presence_penalty: 1.5
228
311
  },
229
312
  streaming: {
230
313
  deltaThrottleMs: 50,
@@ -3922,7 +4005,7 @@ async function resolveSymiDocsPath(params) {
3922
4005
  const workspaceDir = params.workspaceDir?.trim();
3923
4006
  if (workspaceDir) {
3924
4007
  const workspaceDocs = path.join(workspaceDir, "docs");
3925
- if (fsSync.existsSync(workspaceDocs)) return workspaceDocs;
4008
+ if (fs.existsSync(workspaceDocs)) return workspaceDocs;
3926
4009
  }
3927
4010
  const packageRoot = await resolveSymiPackageRoot({
3928
4011
  cwd: params.cwd,
@@ -3931,7 +4014,7 @@ async function resolveSymiDocsPath(params) {
3931
4014
  });
3932
4015
  if (!packageRoot) return null;
3933
4016
  const packageDocs = path.join(packageRoot, "docs");
3934
- return fsSync.existsSync(packageDocs) ? packageDocs : null;
4017
+ return fs.existsSync(packageDocs) ? packageDocs : null;
3935
4018
  }
3936
4019
 
3937
4020
  //#endregion
@@ -4240,7 +4323,7 @@ async function getMemorySearchManager(params) {
4240
4323
  if (cached) return { manager: cached };
4241
4324
  }
4242
4325
  try {
4243
- const { QmdMemoryManager } = await import("./qmd-manager-8-Z3Cdpt.js");
4326
+ const { QmdMemoryManager } = await import("./qmd-manager-lBS9mT9w.js");
4244
4327
  const primary = await QmdMemoryManager.create({
4245
4328
  cfg: params.cfg,
4246
4329
  agentId: params.agentId,
@@ -4252,7 +4335,7 @@ async function getMemorySearchManager(params) {
4252
4335
  const wrapper = new FallbackMemoryManager({
4253
4336
  primary,
4254
4337
  fallbackFactory: async () => {
4255
- const { MemoryIndexManager } = await import("./manager-BoLUtbg2.js").then((n) => n.t);
4338
+ const { MemoryIndexManager } = await import("./manager-CJ3M1Uxq.js").then((n) => n.t);
4256
4339
  return await MemoryIndexManager.get(params);
4257
4340
  }
4258
4341
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4265,7 +4348,7 @@ async function getMemorySearchManager(params) {
4265
4348
  }
4266
4349
  }
4267
4350
  try {
4268
- const { MemoryIndexManager } = await import("./manager-BoLUtbg2.js").then((n) => n.t);
4351
+ const { MemoryIndexManager } = await import("./manager-CJ3M1Uxq.js").then((n) => n.t);
4269
4352
  return { manager: await MemoryIndexManager.get(params) };
4270
4353
  } catch (err) {
4271
4354
  return {
@@ -6813,7 +6896,7 @@ async function recordLoopOutcome(args) {
6813
6896
  if (!args.ctx?.sessionKey) return;
6814
6897
  try {
6815
6898
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Zw87xFym.js").then((n) => n.n);
6816
- const { recordToolCallOutcome } = await import("./tool-loop-detection-C33wf43N.js");
6899
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-D5mBY7AC.js");
6817
6900
  recordToolCallOutcome(getDiagnosticSessionState({
6818
6901
  sessionKey: args.ctx.sessionKey,
6819
6902
  sessionId: args.ctx?.agentId
@@ -6834,8 +6917,8 @@ async function runBeforeToolCallHook(args) {
6834
6917
  const params = args.params;
6835
6918
  if (args.ctx?.sessionKey) {
6836
6919
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Zw87xFym.js").then((n) => n.n);
6837
- const { logToolLoopAction } = await import("./diagnostic-DIKKFHpP.js").then((n) => n.n);
6838
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-C33wf43N.js");
6920
+ const { logToolLoopAction } = await import("./diagnostic-CQiU0O8b.js").then((n) => n.n);
6921
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-D5mBY7AC.js");
6839
6922
  const sessionState = getDiagnosticSessionState({
6840
6923
  sessionKey: args.ctx.sessionKey,
6841
6924
  sessionId: args.ctx?.agentId
@@ -7122,7 +7205,7 @@ function resolveDefaultIdentityPath() {
7122
7205
  return path.join(resolveStateDir(), "identity", "device.json");
7123
7206
  }
7124
7207
  function ensureDir$2(filePath) {
7125
- fsSync.mkdirSync(path.dirname(filePath), { recursive: true });
7208
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
7126
7209
  }
7127
7210
  const ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
7128
7211
  function base64UrlEncode(buf) {
@@ -7158,8 +7241,8 @@ function generateIdentity() {
7158
7241
  }
7159
7242
  function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
7160
7243
  try {
7161
- if (fsSync.existsSync(filePath)) {
7162
- const raw = fsSync.readFileSync(filePath, "utf8");
7244
+ if (fs.existsSync(filePath)) {
7245
+ const raw = fs.readFileSync(filePath, "utf8");
7163
7246
  const parsed = JSON.parse(raw);
7164
7247
  if (parsed?.version === 1 && typeof parsed.deviceId === "string" && typeof parsed.publicKeyPem === "string" && typeof parsed.privateKeyPem === "string") {
7165
7248
  const derivedId = fingerprintPublicKey(parsed.publicKeyPem);
@@ -7168,9 +7251,9 @@ function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
7168
7251
  ...parsed,
7169
7252
  deviceId: derivedId
7170
7253
  };
7171
- fsSync.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
7254
+ fs.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
7172
7255
  try {
7173
- fsSync.chmodSync(filePath, 384);
7256
+ fs.chmodSync(filePath, 384);
7174
7257
  } catch {}
7175
7258
  return {
7176
7259
  deviceId: derivedId,
@@ -7195,9 +7278,9 @@ function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
7195
7278
  privateKeyPem: identity.privateKeyPem,
7196
7279
  createdAtMs: Date.now()
7197
7280
  };
7198
- fsSync.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
7281
+ fs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
7199
7282
  try {
7200
- fsSync.chmodSync(filePath, 384);
7283
+ fs.chmodSync(filePath, 384);
7201
7284
  } catch {}
7202
7285
  return identity;
7203
7286
  }
@@ -7220,7 +7303,7 @@ function normalizeFingerprint(input) {
7220
7303
  const execFileAsync = promisify(execFile);
7221
7304
  async function fileExists(filePath) {
7222
7305
  try {
7223
- await fs.access(filePath);
7306
+ await fs$1.access(filePath);
7224
7307
  return true;
7225
7308
  } catch {
7226
7309
  return false;
@@ -7247,8 +7330,8 @@ async function generateSelfSignedCert(params) {
7247
7330
  "-subj",
7248
7331
  "/CN=symi-gateway"
7249
7332
  ]);
7250
- await fs.chmod(params.keyPath, 384).catch(() => {});
7251
- await fs.chmod(params.certPath, 384).catch(() => {});
7333
+ await fs$1.chmod(params.keyPath, 384).catch(() => {});
7334
+ await fs$1.chmod(params.certPath, 384).catch(() => {});
7252
7335
  params.log?.info?.(`gateway tls: generated self-signed cert at ${shortenHomeInString(params.certPath)}`);
7253
7336
  }
7254
7337
  async function loadGatewayTlsRuntime(cfg, log) {
@@ -7286,9 +7369,9 @@ async function loadGatewayTlsRuntime(cfg, log) {
7286
7369
  error: "gateway tls: cert/key missing"
7287
7370
  };
7288
7371
  try {
7289
- const cert = await fs.readFile(certPath, "utf8");
7290
- const key = await fs.readFile(keyPath, "utf8");
7291
- const ca = caPath ? await fs.readFile(caPath, "utf8") : void 0;
7372
+ const cert = await fs$1.readFile(certPath, "utf8");
7373
+ const key = await fs$1.readFile(keyPath, "utf8");
7374
+ const ca = caPath ? await fs$1.readFile(caPath, "utf8") : void 0;
7292
7375
  const fingerprintSha256 = normalizeFingerprint(new X509Certificate(cert).fingerprint256 ?? "");
7293
7376
  if (!fingerprintSha256) return {
7294
7377
  enabled: false,
@@ -7347,8 +7430,8 @@ function resolveDeviceAuthPath(env = process.env) {
7347
7430
  }
7348
7431
  function readStore(filePath) {
7349
7432
  try {
7350
- if (!fsSync.existsSync(filePath)) return null;
7351
- const raw = fsSync.readFileSync(filePath, "utf8");
7433
+ if (!fs.existsSync(filePath)) return null;
7434
+ const raw = fs.readFileSync(filePath, "utf8");
7352
7435
  const parsed = JSON.parse(raw);
7353
7436
  if (parsed?.version !== 1 || typeof parsed.deviceId !== "string") return null;
7354
7437
  if (!parsed.tokens || typeof parsed.tokens !== "object") return null;
@@ -7358,10 +7441,10 @@ function readStore(filePath) {
7358
7441
  }
7359
7442
  }
7360
7443
  function writeStore(filePath, store) {
7361
- fsSync.mkdirSync(path.dirname(filePath), { recursive: true });
7362
- fsSync.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
7444
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
7445
+ fs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
7363
7446
  try {
7364
- fsSync.chmodSync(filePath, 384);
7447
+ fs.chmodSync(filePath, 384);
7365
7448
  } catch {}
7366
7449
  }
7367
7450
  function loadDeviceAuthToken(params) {
@@ -10153,7 +10236,7 @@ async function routeReply(params) {
10153
10236
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10154
10237
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10155
10238
  try {
10156
- const { deliverOutboundPayloads } = await import("./deliver-BY58QnO8.js").then((n) => n.n);
10239
+ const { deliverOutboundPayloads } = await import("./deliver-Cm6Yfbzh.js").then((n) => n.n);
10157
10240
  return {
10158
10241
  ok: true,
10159
10242
  messageId: (await deliverOutboundPayloads({
@@ -10549,7 +10632,7 @@ function normalizeSessionKey(value) {
10549
10632
  }
10550
10633
  function readSessionStore(storePath) {
10551
10634
  try {
10552
- const raw = fsSync.readFileSync(storePath, "utf-8");
10635
+ const raw = fs.readFileSync(storePath, "utf-8");
10553
10636
  const parsed = JSON5.parse(raw);
10554
10637
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
10555
10638
  } catch {}
@@ -15608,7 +15691,7 @@ async function createModelSelectionState(params) {
15608
15691
  }
15609
15692
  }
15610
15693
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
15611
- const { ensureAuthProfileStore } = await import("./auth-profiles-CZZjOpX8.js").then((n) => n.t);
15694
+ const { ensureAuthProfileStore } = await import("./auth-profiles-q3HjbboY.js").then((n) => n.t);
15612
15695
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
15613
15696
  const providerKey = normalizeProviderId(provider);
15614
15697
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -17981,8 +18064,8 @@ const DEFAULT_SAFE_BINS = [
17981
18064
  ];
17982
18065
  function isExecutableFile(filePath) {
17983
18066
  try {
17984
- if (!fsSync.statSync(filePath).isFile()) return false;
17985
- if (process.platform !== "win32") fsSync.accessSync(filePath, fsSync.constants.X_OK);
18067
+ if (!fs.statSync(filePath).isFile()) return false;
18068
+ if (process.platform !== "win32") fs.accessSync(filePath, fs.constants.X_OK);
17986
18069
  return true;
17987
18070
  } catch {
17988
18071
  return false;
@@ -18020,7 +18103,7 @@ function normalizeMatchTarget(value) {
18020
18103
  }
18021
18104
  function tryRealpath(value) {
18022
18105
  try {
18023
- return fsSync.realpathSync(value);
18106
+ return fs.realpathSync(value);
18024
18107
  } catch {
18025
18108
  return null;
18026
18109
  }
@@ -19252,7 +19335,7 @@ function mergeLegacyAgent(current, legacy) {
19252
19335
  }
19253
19336
  function ensureDir$1(filePath) {
19254
19337
  const dir = path.dirname(filePath);
19255
- fsSync.mkdirSync(dir, { recursive: true });
19338
+ fs.mkdirSync(dir, { recursive: true });
19256
19339
  }
19257
19340
  function coerceAllowlistEntries(allowlist) {
19258
19341
  if (!Array.isArray(allowlist) || allowlist.length === 0) return Array.isArray(allowlist) ? allowlist : void 0;
@@ -19322,11 +19405,11 @@ function generateToken() {
19322
19405
  function loadExecApprovals() {
19323
19406
  const filePath = resolveExecApprovalsPath();
19324
19407
  try {
19325
- if (!fsSync.existsSync(filePath)) return normalizeExecApprovals({
19408
+ if (!fs.existsSync(filePath)) return normalizeExecApprovals({
19326
19409
  version: 1,
19327
19410
  agents: {}
19328
19411
  });
19329
- const raw = fsSync.readFileSync(filePath, "utf8");
19412
+ const raw = fs.readFileSync(filePath, "utf8");
19330
19413
  const parsed = JSON.parse(raw);
19331
19414
  if (parsed?.version !== 1) return normalizeExecApprovals({
19332
19415
  version: 1,
@@ -19343,9 +19426,9 @@ function loadExecApprovals() {
19343
19426
  function saveExecApprovals(file) {
19344
19427
  const filePath = resolveExecApprovalsPath();
19345
19428
  ensureDir$1(filePath);
19346
- fsSync.writeFileSync(filePath, `${JSON.stringify(file, null, 2)}\n`, { mode: 384 });
19429
+ fs.writeFileSync(filePath, `${JSON.stringify(file, null, 2)}\n`, { mode: 384 });
19347
19430
  try {
19348
- fsSync.chmodSync(filePath, 384);
19431
+ fs.chmodSync(filePath, 384);
19349
19432
  } catch {}
19350
19433
  }
19351
19434
  function ensureExecApprovals() {
@@ -19666,7 +19749,7 @@ function resolvePowerShellPath() {
19666
19749
  const systemRoot = process.env.SystemRoot || process.env.WINDIR;
19667
19750
  if (systemRoot) {
19668
19751
  const candidate = path.join(systemRoot, "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
19669
- if (fsSync.existsSync(candidate)) return candidate;
19752
+ if (fs.existsSync(candidate)) return candidate;
19670
19753
  }
19671
19754
  return "powershell.exe";
19672
19755
  }
@@ -19704,7 +19787,7 @@ function resolveShellFromPath(name) {
19704
19787
  for (const entry of entries) {
19705
19788
  const candidate = path.join(entry, name);
19706
19789
  try {
19707
- fsSync.accessSync(candidate, fsSync.constants.X_OK);
19790
+ fs.accessSync(candidate, fs.constants.X_OK);
19708
19791
  return candidate;
19709
19792
  } catch {}
19710
19793
  }
@@ -20452,7 +20535,7 @@ async function resolveSandboxWorkdir(params) {
20452
20535
  cwd: process.cwd(),
20453
20536
  root: params.sandbox.workspaceDir
20454
20537
  });
20455
- if (!(await fs.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
20538
+ if (!(await fs$1.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
20456
20539
  const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
20457
20540
  const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
20458
20541
  return {
@@ -21503,13 +21586,13 @@ async function validateScriptFileForShellBleed(params) {
21503
21586
  cwd: params.workdir,
21504
21587
  root: params.workdir
21505
21588
  });
21506
- stat = await fs.stat(absPath);
21589
+ stat = await fs$1.stat(absPath);
21507
21590
  } catch {
21508
21591
  return;
21509
21592
  }
21510
21593
  if (!stat.isFile()) return;
21511
21594
  if (stat.size > 512 * 1024) return;
21512
- const content = await fs.readFile(absPath, "utf-8");
21595
+ const content = await fs$1.readFile(absPath, "utf-8");
21513
21596
  const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
21514
21597
  if (first) {
21515
21598
  const idx = first.index;
@@ -22760,7 +22843,7 @@ function walkUpFrom(startDir, opts, resolveAtDir) {
22760
22843
  function hasGitMarker(repoRoot) {
22761
22844
  const gitPath = path.join(repoRoot, ".git");
22762
22845
  try {
22763
- const stat = fsSync.statSync(gitPath);
22846
+ const stat = fs.statSync(gitPath);
22764
22847
  return stat.isDirectory() || stat.isFile();
22765
22848
  } catch {
22766
22849
  return false;
@@ -22772,10 +22855,10 @@ function findGitRoot(startDir, opts = {}) {
22772
22855
  function resolveGitDirFromMarker(repoRoot) {
22773
22856
  const gitPath = path.join(repoRoot, ".git");
22774
22857
  try {
22775
- const stat = fsSync.statSync(gitPath);
22858
+ const stat = fs.statSync(gitPath);
22776
22859
  if (stat.isDirectory()) return gitPath;
22777
22860
  if (!stat.isFile()) return null;
22778
- const match = fsSync.readFileSync(gitPath, "utf-8").match(/gitdir:\s*(.+)/i);
22861
+ const match = fs.readFileSync(gitPath, "utf-8").match(/gitdir:\s*(.+)/i);
22779
22862
  if (!match?.[1]) return null;
22780
22863
  return path.resolve(repoRoot, match[1].trim());
22781
22864
  } catch {
@@ -22842,7 +22925,7 @@ const resolveCommitHash = (options = {}) => {
22842
22925
  cachedCommit = null;
22843
22926
  return cachedCommit;
22844
22927
  }
22845
- const head = fsSync.readFileSync(headPath, "utf-8").trim();
22928
+ const head = fs.readFileSync(headPath, "utf-8").trim();
22846
22929
  if (!head) {
22847
22930
  cachedCommit = null;
22848
22931
  return cachedCommit;
@@ -22850,7 +22933,7 @@ const resolveCommitHash = (options = {}) => {
22850
22933
  if (head.startsWith("ref:")) {
22851
22934
  const ref = head.replace(/^ref:\s*/i, "").trim();
22852
22935
  const refPath = path.resolve(path.dirname(headPath), ref);
22853
- cachedCommit = formatCommit(fsSync.readFileSync(refPath, "utf-8").trim());
22936
+ cachedCommit = formatCommit(fs.readFileSync(refPath, "utf-8").trim());
22854
22937
  return cachedCommit;
22855
22938
  }
22856
22939
  cachedCommit = formatCommit(head);
@@ -23054,9 +23137,9 @@ const readUsageFromSessionLog = (sessionId, sessionEntry, agentId, sessionKey, s
23054
23137
  } catch {
23055
23138
  return;
23056
23139
  }
23057
- if (!fsSync.existsSync(logPath)) return;
23140
+ if (!fs.existsSync(logPath)) return;
23058
23141
  try {
23059
- const lines = fsSync.readFileSync(logPath, "utf-8").split(/\n+/);
23142
+ const lines = fs.readFileSync(logPath, "utf-8").split(/\n+/);
23060
23143
  let input = 0;
23061
23144
  let output = 0;
23062
23145
  let promptTokens = 0;
@@ -24296,7 +24379,7 @@ function resolveRepoRoot(params) {
24296
24379
  const configured = params.config?.agents?.defaults?.repoRoot?.trim();
24297
24380
  if (configured) try {
24298
24381
  const resolved = path.resolve(configured);
24299
- if (fsSync.statSync(resolved).isDirectory()) return resolved;
24382
+ if (fs.statSync(resolved).isDirectory()) return resolved;
24300
24383
  } catch {}
24301
24384
  const candidates = [params.workspaceDir, params.cwd].map((value) => value?.trim()).filter(Boolean);
24302
24385
  const seen = /* @__PURE__ */ new Set();
@@ -24615,7 +24698,7 @@ async function buildContextReply(params) {
24615
24698
  //#region src/auto-reply/reply/commands-export-session.ts
24616
24699
  const EXPORT_HTML_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "export-html");
24617
24700
  function loadTemplate(fileName) {
24618
- return fsSync.readFileSync(path.join(EXPORT_HTML_DIR, fileName), "utf-8");
24701
+ return fs.readFileSync(path.join(EXPORT_HTML_DIR, fileName), "utf-8");
24619
24702
  }
24620
24703
  function generateHtml(sessionData) {
24621
24704
  const template = loadTemplate("template.html");
@@ -24689,7 +24772,7 @@ async function buildExportSessionReply(params) {
24689
24772
  } catch (err) {
24690
24773
  return { text: `❌ Failed to resolve session file: ${err instanceof Error ? err.message : String(err)}` };
24691
24774
  }
24692
- if (!fsSync.existsSync(sessionFile)) return { text: `❌ Session file not found: ${sessionFile}` };
24775
+ if (!fs.existsSync(sessionFile)) return { text: `❌ Session file not found: ${sessionFile}` };
24693
24776
  const sessionManager = SessionManager.open(sessionFile);
24694
24777
  const entries = sessionManager.getEntries();
24695
24778
  const header = sessionManager.getHeader();
@@ -24710,8 +24793,8 @@ async function buildExportSessionReply(params) {
24710
24793
  const defaultFileName = `symi-session-${entry.sessionId.slice(0, 8)}-${timestamp}.html`;
24711
24794
  const outputPath = args.outputPath ? path.resolve(args.outputPath.startsWith("~") ? args.outputPath.replace("~", process.env.HOME ?? "") : args.outputPath) : path.join(params.workspaceDir, defaultFileName);
24712
24795
  const outputDir = path.dirname(outputPath);
24713
- if (!fsSync.existsSync(outputDir)) fsSync.mkdirSync(outputDir, { recursive: true });
24714
- fsSync.writeFileSync(outputPath, html, "utf-8");
24796
+ if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
24797
+ fs.writeFileSync(outputPath, html, "utf-8");
24715
24798
  const relativePath = path.relative(params.workspaceDir, outputPath);
24716
24799
  return { text: [
24717
24800
  "✅ Session exported!",
@@ -24825,8 +24908,8 @@ function resolveZaiApiKey() {
24825
24908
  }
24826
24909
  try {
24827
24910
  const authPath = path.join(os.homedir(), ".pi", "agent", "auth.json");
24828
- if (!fsSync.existsSync(authPath)) return;
24829
- const data = JSON.parse(fsSync.readFileSync(authPath, "utf-8"));
24911
+ if (!fs.existsSync(authPath)) return;
24912
+ const data = JSON.parse(fs.readFileSync(authPath, "utf-8"));
24830
24913
  return data["z-ai"]?.access || data.zai?.access;
24831
24914
  } catch {
24832
24915
  return;
@@ -26391,7 +26474,7 @@ function shouldPersistAnyBindingState() {
26391
26474
  }
26392
26475
  function shouldPersistBindingMutations() {
26393
26476
  if (shouldPersistAnyBindingState()) return true;
26394
- return fsSync.existsSync(resolveThreadBindingsPath());
26477
+ return fs.existsSync(resolveThreadBindingsPath());
26395
26478
  }
26396
26479
  function saveBindingsToDisk(params = {}) {
26397
26480
  if (!params.force && !shouldPersistAnyBindingState()) return;
@@ -27379,7 +27462,7 @@ const applyCostTotal = (totals, costTotal) => {
27379
27462
  totals.totalCost += costTotal;
27380
27463
  };
27381
27464
  async function* readJsonlRecords(filePath) {
27382
- const fileStream = fsSync.createReadStream(filePath, { encoding: "utf-8" });
27465
+ const fileStream = fs.createReadStream(filePath, { encoding: "utf-8" });
27383
27466
  const rl = readline.createInterface({
27384
27467
  input: fileStream,
27385
27468
  crlfDelay: Infinity
@@ -27451,10 +27534,10 @@ async function loadCostUsageSummary(params) {
27451
27534
  const dailyMap = /* @__PURE__ */ new Map();
27452
27535
  const totals = emptyTotals();
27453
27536
  const sessionsDir = resolveSessionTranscriptsDirForAgent(params?.agentId);
27454
- const entries = await fsSync.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
27537
+ const entries = await fs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
27455
27538
  const files = (await Promise.all(entries.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map(async (entry) => {
27456
27539
  const filePath = path.join(sessionsDir, entry.name);
27457
- const stats = await fsSync.promises.stat(filePath).catch(() => null);
27540
+ const stats = await fs.promises.stat(filePath).catch(() => null);
27458
27541
  if (!stats) return null;
27459
27542
  if (stats.mtimeMs < sinceTime) return null;
27460
27543
  return filePath;
@@ -27487,7 +27570,7 @@ async function loadCostUsageSummary(params) {
27487
27570
  }
27488
27571
  async function loadSessionCostSummary(params) {
27489
27572
  const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
27490
- if (!sessionFile || !fsSync.existsSync(sessionFile)) return null;
27573
+ if (!sessionFile || !fs.existsSync(sessionFile)) return null;
27491
27574
  const totals = emptyTotals();
27492
27575
  let firstActivity;
27493
27576
  let lastActivity;
@@ -29359,7 +29442,7 @@ async function handleCommands(params) {
29359
29442
  try {
29360
29443
  const messages = [];
29361
29444
  if (sessionFile) {
29362
- const content = await fs.readFile(sessionFile, "utf-8");
29445
+ const content = await fs$1.readFile(sessionFile, "utf-8");
29363
29446
  for (const line of content.split("\n")) {
29364
29447
  if (!line.trim()) continue;
29365
29448
  try {
@@ -31693,7 +31776,7 @@ function asBoolean(value) {
31693
31776
  }
31694
31777
  function resolveTempPathParts(opts) {
31695
31778
  const tmpDir = opts.tmpDir ?? resolvePreferredSymiTmpDir();
31696
- if (!opts.tmpDir) fsSync.mkdirSync(tmpDir, {
31779
+ if (!opts.tmpDir) fs.mkdirSync(tmpDir, {
31697
31780
  recursive: true,
31698
31781
  mode: 448
31699
31782
  });
@@ -31759,7 +31842,7 @@ async function writeUrlToFile(filePath, url) {
31759
31842
  if (typeof contentLength === "number" && Number.isFinite(contentLength) && contentLength > MAX_CAMERA_URL_DOWNLOAD_BYTES) throw new Error(`writeUrlToFile: content-length ${contentLength} exceeds max ${MAX_CAMERA_URL_DOWNLOAD_BYTES}`);
31760
31843
  const body = res.body;
31761
31844
  if (!body) throw new Error(`failed to download ${url}: empty response body`);
31762
- const fileHandle = await fs$1.open(filePath, "w");
31845
+ const fileHandle = await fs$2.open(filePath, "w");
31763
31846
  let bytes = 0;
31764
31847
  let thrown;
31765
31848
  try {
@@ -31778,7 +31861,7 @@ async function writeUrlToFile(filePath, url) {
31778
31861
  await fileHandle.close();
31779
31862
  }
31780
31863
  if (thrown) {
31781
- await fs$1.unlink(filePath).catch(() => {});
31864
+ await fs$2.unlink(filePath).catch(() => {});
31782
31865
  throw thrown;
31783
31866
  }
31784
31867
  return {
@@ -31788,7 +31871,7 @@ async function writeUrlToFile(filePath, url) {
31788
31871
  }
31789
31872
  async function writeBase64ToFile(filePath, base64) {
31790
31873
  const buf = Buffer.from(base64, "base64");
31791
- await fs$1.writeFile(filePath, buf);
31874
+ await fs$2.writeFile(filePath, buf);
31792
31875
  return {
31793
31876
  path: filePath,
31794
31877
  bytes: buf.length
@@ -31854,7 +31937,7 @@ async function readJsonlFromPath(jsonlPath) {
31854
31937
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
31855
31938
  throw new Error("jsonlPath outside allowed roots");
31856
31939
  }
31857
- const canonical = await fs.realpath(resolved).catch(() => resolved);
31940
+ const canonical = await fs$1.realpath(resolved).catch(() => resolved);
31858
31941
  if (!isInboundPathAllowed({
31859
31942
  filePath: canonical,
31860
31943
  roots
@@ -31862,7 +31945,7 @@ async function readJsonlFromPath(jsonlPath) {
31862
31945
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
31863
31946
  throw new Error("jsonlPath outside allowed roots");
31864
31947
  }
31865
- return await fs.readFile(canonical, "utf8");
31948
+ return await fs$1.readFile(canonical, "utf8");
31866
31949
  }
31867
31950
  const CanvasToolSchema = Type.Object({
31868
31951
  action: stringEnum(CANVAS_ACTIONS),
@@ -32666,12 +32749,12 @@ function resolveRestartSentinelPath(env = process.env) {
32666
32749
  }
32667
32750
  async function writeRestartSentinel(payload, env = process.env) {
32668
32751
  const filePath = resolveRestartSentinelPath(env);
32669
- await fs.mkdir(path.dirname(filePath), { recursive: true });
32752
+ await fs$1.mkdir(path.dirname(filePath), { recursive: true });
32670
32753
  const data = {
32671
32754
  version: 1,
32672
32755
  payload
32673
32756
  };
32674
- await fs.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
32757
+ await fs$1.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
32675
32758
  return filePath;
32676
32759
  }
32677
32760
 
@@ -33486,7 +33569,7 @@ async function hydrateAttachmentPayload(params) {
33486
33569
  accountId: params.accountId
33487
33570
  }),
33488
33571
  sandboxValidated: true,
33489
- readFile: (filePath) => fs.readFile(filePath)
33572
+ readFile: (filePath) => fs$1.readFile(filePath)
33490
33573
  });
33491
33574
  params.args.buffer = media.buffer.toString("base64");
33492
33575
  if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
@@ -36771,7 +36854,7 @@ function listExistingAgentIdsFromDisk() {
36771
36854
  const root = resolveStateDir();
36772
36855
  const agentsDir = path.join(root, "agents");
36773
36856
  try {
36774
- return fsSync.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
36857
+ return fs.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
36775
36858
  } catch {
36776
36859
  return [];
36777
36860
  }
@@ -40639,18 +40722,18 @@ function appendImagePathsToPrompt(prompt, paths) {
40639
40722
  return `${trimmed}${trimmed ? "\n\n" : ""}${paths.join("\n")}`;
40640
40723
  }
40641
40724
  async function writeCliImages(images) {
40642
- const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
40725
+ const tempDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
40643
40726
  const paths = [];
40644
40727
  for (let i = 0; i < images.length; i += 1) {
40645
40728
  const image = images[i];
40646
40729
  const ext = resolveImageExtension(image.mimeType);
40647
40730
  const filePath = path.join(tempDir, `image-${i + 1}.${ext}`);
40648
40731
  const buffer = Buffer.from(image.data, "base64");
40649
- await fs.writeFile(filePath, buffer, { mode: 384 });
40732
+ await fs$1.writeFile(filePath, buffer, { mode: 384 });
40650
40733
  paths.push(filePath);
40651
40734
  }
40652
40735
  const cleanup = async () => {
40653
- await fs.rm(tempDir, {
40736
+ await fs$1.rm(tempDir, {
40654
40737
  recursive: true,
40655
40738
  force: true
40656
40739
  });
@@ -41724,7 +41807,7 @@ async function runAgentTurnWithFallback(params) {
41724
41807
  if (corruptedSessionId) {
41725
41808
  const transcriptPath = resolveSessionTranscriptPath(corruptedSessionId);
41726
41809
  try {
41727
- fsSync.unlinkSync(transcriptPath);
41810
+ fs.unlinkSync(transcriptPath);
41728
41811
  } catch {}
41729
41812
  }
41730
41813
  delete params.activeSessionStore[sessionKey];
@@ -42440,9 +42523,9 @@ function auditPostCompactionReads(readFilePaths, workspaceDir, requiredReads = D
42440
42523
  * Returns messages from the last N lines (default 100).
42441
42524
  */
42442
42525
  function readSessionMessages(sessionFile, maxLines = 100) {
42443
- if (!fsSync.existsSync(sessionFile)) return [];
42526
+ if (!fs.existsSync(sessionFile)) return [];
42444
42527
  try {
42445
- const recentLines = fsSync.readFileSync(sessionFile, "utf-8").trim().split("\n").slice(-maxLines);
42528
+ const recentLines = fs.readFileSync(sessionFile, "utf-8").trim().split("\n").slice(-maxLines);
42446
42529
  const messages = [];
42447
42530
  for (const line of recentLines) try {
42448
42531
  const entry = JSON.parse(line);
@@ -42483,8 +42566,8 @@ const MAX_CONTEXT_CHARS = 3e3;
42483
42566
  async function readPostCompactionContext(workspaceDir) {
42484
42567
  const agentsPath = path.join(workspaceDir, "AGENTS.md");
42485
42568
  try {
42486
- if (!fsSync.existsSync(agentsPath)) return null;
42487
- const sections = extractSections(await fsSync.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
42569
+ if (!fs.existsSync(agentsPath)) return null;
42570
+ const sections = extractSections(await fs.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
42488
42571
  if (sections.length === 0) return null;
42489
42572
  const combined = sections.join("\n\n");
42490
42573
  return "[Post-compaction context refresh]\n\nSession was just compacted. The conversation summary above is a hint, NOT a substitute for your startup sequence. Execute your Session Startup sequence now — read the required files before responding to the user.\n\nCritical rules from AGENTS.md:\n\n" + (combined.length > MAX_CONTEXT_CHARS ? combined.slice(0, MAX_CONTEXT_CHARS) + "\n...[truncated]..." : combined);
@@ -42688,7 +42771,7 @@ async function runReplyAgent(params) {
42688
42771
  if (resolved) transcriptCandidates.add(resolved);
42689
42772
  transcriptCandidates.add(resolveSessionTranscriptPath(prevSessionId, agentId));
42690
42773
  for (const candidate of transcriptCandidates) try {
42691
- fsSync.unlinkSync(candidate);
42774
+ fs.unlinkSync(candidate);
42692
42775
  } catch {}
42693
42776
  }
42694
42777
  return true;
@@ -43594,7 +43677,7 @@ async function deliverSessionMaintenanceWarning(params) {
43594
43677
  return;
43595
43678
  }
43596
43679
  try {
43597
- const { deliverOutboundPayloads } = await import("./deliver-BY58QnO8.js").then((n) => n.n);
43680
+ const { deliverOutboundPayloads } = await import("./deliver-Cm6Yfbzh.js").then((n) => n.n);
43598
43681
  await deliverOutboundPayloads({
43599
43682
  cfg: params.cfg,
43600
43683
  channel,
@@ -43620,7 +43703,7 @@ function forkSessionFromParent(params) {
43620
43703
  agentId: params.agentId,
43621
43704
  sessionsDir: params.sessionsDir
43622
43705
  });
43623
- if (!parentSessionFile || !fsSync.existsSync(parentSessionFile)) return null;
43706
+ if (!parentSessionFile || !fs.existsSync(parentSessionFile)) return null;
43624
43707
  try {
43625
43708
  const manager = SessionManager.open(parentSessionFile);
43626
43709
  const leafId = manager.getLeafId();
@@ -43644,7 +43727,7 @@ function forkSessionFromParent(params) {
43644
43727
  cwd: manager.getCwd(),
43645
43728
  parentSession: parentSessionFile
43646
43729
  };
43647
- fsSync.writeFileSync(sessionFile, `${JSON.stringify(header)}\n`, "utf-8");
43730
+ fs.writeFileSync(sessionFile, `${JSON.stringify(header)}\n`, "utf-8");
43648
43731
  return {
43649
43732
  sessionId,
43650
43733
  sessionFile
@@ -43969,7 +44052,7 @@ async function stageSandboxMedia(params) {
43969
44052
  };
43970
44053
  try {
43971
44054
  const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
43972
- await fs.mkdir(destDir, { recursive: true });
44055
+ await fs$1.mkdir(destDir, { recursive: true });
43973
44056
  const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
43974
44057
  cfg,
43975
44058
  accountId: ctx.AccountId
@@ -44019,7 +44102,7 @@ async function stageSandboxMedia(params) {
44019
44102
  usedNames.add(fileName);
44020
44103
  const dest = path.join(destDir, fileName);
44021
44104
  if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
44022
- else await fs.copyFile(source, dest);
44105
+ else await fs$1.copyFile(source, dest);
44023
44106
  const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
44024
44107
  staged.set(source, stagedPath);
44025
44108
  }
@@ -47039,8 +47122,8 @@ async function describeStickerImage(params) {
47039
47122
  const { provider, model } = resolved;
47040
47123
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47041
47124
  try {
47042
- const buffer = await fs.readFile(imagePath);
47043
- const { describeImageWithModel } = await import("./image-CKMw_vhe.js").then((n) => n.n);
47125
+ const buffer = await fs$1.readFile(imagePath);
47126
+ const { describeImageWithModel } = await import("./image-BmIvgTV4.js").then((n) => n.n);
47044
47127
  return (await describeImageWithModel({
47045
47128
  buffer,
47046
47129
  fileName: "sticker.webp",
@@ -47463,7 +47546,7 @@ function createWhatsAppLoginTool() {
47463
47546
  force: Type.Optional(Type.Boolean())
47464
47547
  }),
47465
47548
  execute: async (_toolCallId, args) => {
47466
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BJMvic1s.js");
47549
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-l5XwJWk9.js");
47467
47550
  if ((args?.action ?? "start") === "wait") {
47468
47551
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
47469
47552
  return {
@@ -47745,7 +47828,7 @@ async function withMemoryManagerForAgent(params) {
47745
47828
  }
47746
47829
  async function checkReadableFile(pathname) {
47747
47830
  try {
47748
- await fs.access(pathname, fsSync.constants.R_OK);
47831
+ await fs$1.access(pathname, fs.constants.R_OK);
47749
47832
  return { exists: true };
47750
47833
  } catch (err) {
47751
47834
  const code = err.code;
@@ -47762,7 +47845,7 @@ async function scanSessionFiles(agentId) {
47762
47845
  try {
47763
47846
  return {
47764
47847
  source: "sessions",
47765
- totalFiles: (await fs.readdir(sessionsDir, { withFileTypes: true })).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).length,
47848
+ totalFiles: (await fs$1.readdir(sessionsDir, { withFileTypes: true })).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).length,
47766
47849
  issues
47767
47850
  };
47768
47851
  } catch (err) {
@@ -47794,7 +47877,7 @@ async function scanMemoryFiles(workspaceDir, extraPaths = []) {
47794
47877
  if (alt.issue) issues.push(alt.issue);
47795
47878
  const resolvedExtraPaths = normalizeExtraMemoryPaths(workspaceDir, extraPaths);
47796
47879
  for (const extraPath of resolvedExtraPaths) try {
47797
- if ((await fs.lstat(extraPath)).isSymbolicLink()) continue;
47880
+ if ((await fs$1.lstat(extraPath)).isSymbolicLink()) continue;
47798
47881
  const extraCheck = await checkReadableFile(extraPath);
47799
47882
  if (extraCheck.issue) issues.push(extraCheck.issue);
47800
47883
  } catch (err) {
@@ -47804,7 +47887,7 @@ async function scanMemoryFiles(workspaceDir, extraPaths = []) {
47804
47887
  }
47805
47888
  let dirReadable = null;
47806
47889
  try {
47807
- await fs.access(memoryDir, fsSync.constants.R_OK);
47890
+ await fs$1.access(memoryDir, fs.constants.R_OK);
47808
47891
  dirReadable = true;
47809
47892
  } catch (err) {
47810
47893
  const code = err.code;
@@ -47852,7 +47935,7 @@ async function summarizeQmdIndexArtifact(manager) {
47852
47935
  if (!dbPath) return null;
47853
47936
  let stat;
47854
47937
  try {
47855
- stat = await fs.stat(dbPath);
47938
+ stat = await fs$1.stat(dbPath);
47856
47939
  } catch (err) {
47857
47940
  const code = err.code;
47858
47941
  if (code === "ENOENT") throw new Error(`QMD index file not found: ${shortenHomePath(dbPath)}`, { cause: err });
@@ -49702,7 +49785,7 @@ async function preflightDiscordMessage(params) {
49702
49785
  let preflightTranscript;
49703
49786
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49704
49787
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49705
- const { transcribeFirstAudio } = await import("./audio-preflight-UXg8r6a7.js");
49788
+ const { transcribeFirstAudio } = await import("./audio-preflight-BUO1aDLp.js");
49706
49789
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49707
49790
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49708
49791
  ctx: {
@@ -50665,7 +50748,7 @@ function identityHasValues(identity) {
50665
50748
  }
50666
50749
  function loadIdentityFromFile(identityPath) {
50667
50750
  try {
50668
- const parsed = parseIdentityMarkdown(fsSync.readFileSync(identityPath, "utf-8"));
50751
+ const parsed = parseIdentityMarkdown(fs.readFileSync(identityPath, "utf-8"));
50669
50752
  if (!identityHasValues(parsed)) return null;
50670
50753
  return parsed;
50671
50754
  } catch {
@@ -50704,7 +50787,7 @@ function isDataAvatar(value) {
50704
50787
  }
50705
50788
  function resolveExistingPath(value) {
50706
50789
  try {
50707
- return fsSync.realpathSync(value);
50790
+ return fs.realpathSync(value);
50708
50791
  } catch {
50709
50792
  return path.resolve(value);
50710
50793
  }
@@ -50728,7 +50811,7 @@ function resolveLocalAvatarPath(params) {
50728
50811
  reason: "unsupported_extension"
50729
50812
  };
50730
50813
  try {
50731
- if (!fsSync.statSync(realPath).isFile()) return {
50814
+ if (!fs.statSync(realPath).isFile()) return {
50732
50815
  ok: false,
50733
50816
  reason: "missing"
50734
50817
  };
@@ -51591,7 +51674,7 @@ function sanitizeRecentModels(models, limit) {
51591
51674
  }
51592
51675
  async function readJsonFileWithFallback(filePath, fallback) {
51593
51676
  try {
51594
- const raw = await fsSync.promises.readFile(filePath, "utf-8");
51677
+ const raw = await fs.promises.readFile(filePath, "utf-8");
51595
51678
  return {
51596
51679
  value: JSON.parse(raw),
51597
51680
  exists: true
@@ -51609,14 +51692,14 @@ async function readJsonFileWithFallback(filePath, fallback) {
51609
51692
  }
51610
51693
  async function writeJsonFileAtomically(filePath, value) {
51611
51694
  const dir = path.dirname(filePath);
51612
- await fsSync.promises.mkdir(dir, {
51695
+ await fs.promises.mkdir(dir, {
51613
51696
  recursive: true,
51614
51697
  mode: 448
51615
51698
  });
51616
51699
  const tmp = path.join(dir, `${path.basename(filePath)}.${crypto.randomUUID()}.tmp`);
51617
- await fsSync.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, "utf-8");
51618
- await fsSync.promises.chmod(tmp, 384);
51619
- await fsSync.promises.rename(tmp, filePath);
51700
+ await fs.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, "utf-8");
51701
+ await fs.promises.chmod(tmp, 384);
51702
+ await fs.promises.rename(tmp, filePath);
51620
51703
  }
51621
51704
  async function readPreferencesStore(filePath) {
51622
51705
  const { value } = await readJsonFileWithFallback(filePath, {
@@ -53708,27 +53791,27 @@ function isVoiceChannelType(type) {
53708
53791
  function createDefaultDeps() {
53709
53792
  return {
53710
53793
  sendMessageWhatsApp: async (...args) => {
53711
- const { sendMessageWhatsApp } = await import("./web-DpQ5RaFz.js");
53794
+ const { sendMessageWhatsApp } = await import("./web-CMLJq-WC.js");
53712
53795
  return await sendMessageWhatsApp(...args);
53713
53796
  },
53714
53797
  sendMessageTelegram: async (...args) => {
53715
- const { sendMessageTelegram } = await import("./send-sgxdFZNy.js").then((n) => n.l);
53798
+ const { sendMessageTelegram } = await import("./send-D8DhbDGm.js").then((n) => n.l);
53716
53799
  return await sendMessageTelegram(...args);
53717
53800
  },
53718
53801
  sendMessageDiscord: async (...args) => {
53719
- const { sendMessageDiscord } = await import("./send-CCNIWI2Z.js").then((n) => n.t);
53802
+ const { sendMessageDiscord } = await import("./send-De1p8sZA.js").then((n) => n.t);
53720
53803
  return await sendMessageDiscord(...args);
53721
53804
  },
53722
53805
  sendMessageSlack: async (...args) => {
53723
- const { sendMessageSlack } = await import("./send-Dy8tsHUE.js").then((n) => n.n);
53806
+ const { sendMessageSlack } = await import("./send-BTXR3fPR.js").then((n) => n.n);
53724
53807
  return await sendMessageSlack(...args);
53725
53808
  },
53726
53809
  sendMessageSignal: async (...args) => {
53727
- const { sendMessageSignal } = await import("./send-CPSKimCF.js").then((n) => n.i);
53810
+ const { sendMessageSignal } = await import("./send-Dx7S4jGp.js").then((n) => n.i);
53728
53811
  return await sendMessageSignal(...args);
53729
53812
  },
53730
53813
  sendMessageIMessage: async (...args) => {
53731
- const { sendMessageIMessage } = await import("./send-iUSZIdml.js").then((n) => n.n);
53814
+ const { sendMessageIMessage } = await import("./send-DNJAa7Q_.js").then((n) => n.n);
53732
53815
  return await sendMessageIMessage(...args);
53733
53816
  }
53734
53817
  };
@@ -54637,10 +54720,10 @@ function estimateDurationSeconds(pcm) {
54637
54720
  return pcm.length / (bytesPerSample * SAMPLE_RATE);
54638
54721
  }
54639
54722
  async function writeWavFile(pcm) {
54640
- const tempDir = await fs.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
54723
+ const tempDir = await fs$1.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
54641
54724
  const filePath = path.join(tempDir, `segment-${randomUUID()}.wav`);
54642
54725
  const wav = buildWavBuffer(pcm);
54643
- await fs.writeFile(filePath, wav);
54726
+ await fs$1.writeFile(filePath, wav);
54644
54727
  scheduleTempCleanup(tempDir);
54645
54728
  return {
54646
54729
  path: filePath,
@@ -54649,7 +54732,7 @@ async function writeWavFile(pcm) {
54649
54732
  }
54650
54733
  function scheduleTempCleanup(tempDir, delayMs = 1800 * 1e3) {
54651
54734
  setTimeout(() => {
54652
- fs.rm(tempDir, {
54735
+ fs$1.rm(tempDir, {
54653
54736
  recursive: true,
54654
54737
  force: true
54655
54738
  }).catch((err) => {
@@ -57713,7 +57796,7 @@ async function detectBinary(name) {
57713
57796
  if (!isSafeExecutableValue(name)) return false;
57714
57797
  const resolved = name.startsWith("~") ? resolveUserPath(name) : name;
57715
57798
  if (path.isAbsolute(resolved) || resolved.startsWith(".") || resolved.includes("/") || resolved.includes("\\")) try {
57716
- await fs.access(resolved);
57799
+ await fs$1.access(resolved);
57717
57800
  return true;
57718
57801
  } catch {
57719
57802
  return false;
@@ -58263,7 +58346,7 @@ function normalizeAllowList$1(list) {
58263
58346
  async function detectRemoteHostFromCliPath(cliPath) {
58264
58347
  try {
58265
58348
  const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
58266
- const content = await fs.readFile(expanded, "utf8");
58349
+ const content = await fs$1.readFile(expanded, "utf8");
58267
58350
  const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
58268
58351
  if (userHostMatch) return userHostMatch[1];
58269
58352
  return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
@@ -58607,7 +58690,7 @@ async function monitorIMessageProvider(opts = {}) {
58607
58690
  function readFileIfExists(filePath) {
58608
58691
  if (!filePath) return;
58609
58692
  try {
58610
- return fsSync.readFileSync(filePath, "utf-8").trim();
58693
+ return fs.readFileSync(filePath, "utf-8").trim();
58611
58694
  } catch {
58612
58695
  return;
58613
58696
  }
@@ -59168,7 +59251,7 @@ async function downloadLineMedia(messageId, channelAccessToken, maxBytes = 10 *
59168
59251
  prefix: "line-media",
59169
59252
  extension: getExtensionForContentType(contentType)
59170
59253
  });
59171
- await fsSync.promises.writeFile(filePath, buffer);
59254
+ await fs.promises.writeFile(filePath, buffer);
59172
59255
  logVerbose(`line: downloaded media ${messageId} to ${filePath} (${buffer.length} bytes)`);
59173
59256
  return {
59174
59257
  path: filePath,
@@ -64155,7 +64238,7 @@ function readSlackExternalArgMenuToken(raw) {
64155
64238
  }
64156
64239
  let commandsRegistry;
64157
64240
  async function getCommandsRegistry() {
64158
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-DPf4J7nj.js").then((n) => n.n);
64241
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BSvi46KZ.js").then((n) => n.n);
64159
64242
  return commandsRegistry;
64160
64243
  }
64161
64244
  function encodeSlackCommandArgValue(parts) {
@@ -64497,11 +64580,11 @@ async function registerSlackMonitorSlashCommands(params) {
64497
64580
  const channelName = channelInfo?.name;
64498
64581
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
64499
64582
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
64500
- import("./resolve-route-gl0ZOOKR.js").then((n) => n.r),
64583
+ import("./resolve-route-DX7xcMsD.js").then((n) => n.r),
64501
64584
  import("./inbound-context-Dvqh1Tgb.js").then((n) => n.n),
64502
64585
  Promise.resolve().then(() => provider_dispatcher_exports)
64503
64586
  ]);
64504
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Onz2hiJh.js").then((n) => n.t), import("./reply-prefix-ZnX2V-k9.js").then((n) => n.n)]);
64587
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Onz2hiJh.js").then((n) => n.t), import("./reply-prefix-CvEIl6_d.js").then((n) => n.n)]);
64505
64588
  const route = resolveAgentRoute({
64506
64589
  cfg,
64507
64590
  channel: "slack",
@@ -64558,9 +64641,9 @@ async function registerSlackMonitorSlashCommands(params) {
64558
64641
  });
64559
64642
  const deliverSlashPayloads = async (replies) => {
64560
64643
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
64561
- import("./replies-CbeMv5WZ.js").then((n) => n.r),
64562
- import("./chunk-B9x_1qSr.js").then((n) => n.s),
64563
- import("./markdown-tables-DuRhvVpP.js").then((n) => n.t)
64644
+ import("./replies-C2sQt_cX.js").then((n) => n.r),
64645
+ import("./chunk-BHW8Yu5A.js").then((n) => n.s),
64646
+ import("./markdown-tables-Dnj2LQUc.js").then((n) => n.t)
64564
64647
  ]);
64565
64648
  await deliverSlackSlashReplies({
64566
64649
  replies,
@@ -64613,7 +64696,7 @@ async function registerSlackMonitorSlashCommands(params) {
64613
64696
  let nativeCommands = [];
64614
64697
  if (nativeEnabled) {
64615
64698
  reg = await getCommandsRegistry();
64616
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-HBkNllDU.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
64699
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-BiPrghRt.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
64617
64700
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
64618
64701
  skillCommands,
64619
64702
  provider: "slack"
@@ -66831,7 +66914,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66831
66914
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66832
66915
  let preflightTranscript;
66833
66916
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66834
- const { transcribeFirstAudio } = await import("./audio-preflight-UXg8r6a7.js");
66917
+ const { transcribeFirstAudio } = await import("./audio-preflight-BUO1aDLp.js");
66835
66918
  preflightTranscript = await transcribeFirstAudio({
66836
66919
  ctx: {
66837
66920
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -68599,7 +68682,7 @@ function safeParseState(raw) {
68599
68682
  async function readTelegramUpdateOffset(params) {
68600
68683
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
68601
68684
  try {
68602
- return safeParseState(await fs.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
68685
+ return safeParseState(await fs$1.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
68603
68686
  } catch (err) {
68604
68687
  if (err.code === "ENOENT") return null;
68605
68688
  return null;
@@ -68608,7 +68691,7 @@ async function readTelegramUpdateOffset(params) {
68608
68691
  async function writeTelegramUpdateOffset(params) {
68609
68692
  const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
68610
68693
  const dir = path.dirname(filePath);
68611
- await fs.mkdir(dir, {
68694
+ await fs$1.mkdir(dir, {
68612
68695
  recursive: true,
68613
68696
  mode: 448
68614
68697
  });
@@ -68617,9 +68700,9 @@ async function writeTelegramUpdateOffset(params) {
68617
68700
  version: STORE_VERSION,
68618
68701
  lastUpdateId: params.updateId
68619
68702
  };
68620
- await fs.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
68621
- await fs.chmod(tmp, 384);
68622
- await fs.rename(tmp, filePath);
68703
+ await fs$1.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
68704
+ await fs$1.chmod(tmp, 384);
68705
+ await fs$1.rename(tmp, filePath);
68623
68706
  }
68624
68707
 
68625
68708
  //#endregion
@@ -68976,23 +69059,23 @@ let webLoginQrPromise = null;
68976
69059
  let webChannelPromise = null;
68977
69060
  let whatsappActionsPromise = null;
68978
69061
  function loadWebOutbound() {
68979
- webOutboundPromise ??= import("./outbound-B_wliV26.js").then((n) => n.t);
69062
+ webOutboundPromise ??= import("./outbound-BhKz3zWF.js").then((n) => n.t);
68980
69063
  return webOutboundPromise;
68981
69064
  }
68982
69065
  function loadWebLogin() {
68983
- webLoginPromise ??= import("./login-2w0Q7Btb.js").then((n) => n.n);
69066
+ webLoginPromise ??= import("./login-bQWLSSfZ.js").then((n) => n.n);
68984
69067
  return webLoginPromise;
68985
69068
  }
68986
69069
  function loadWebLoginQr() {
68987
- webLoginQrPromise ??= import("./login-qr-BJMvic1s.js");
69070
+ webLoginQrPromise ??= import("./login-qr-l5XwJWk9.js");
68988
69071
  return webLoginQrPromise;
68989
69072
  }
68990
69073
  function loadWebChannel() {
68991
- webChannelPromise ??= import("./web-DpQ5RaFz.js");
69074
+ webChannelPromise ??= import("./web-CMLJq-WC.js");
68992
69075
  return webChannelPromise;
68993
69076
  }
68994
69077
  function loadWhatsAppActions() {
68995
- whatsappActionsPromise ??= import("./whatsapp-actions-D_w4AfW9.js");
69078
+ whatsappActionsPromise ??= import("./whatsapp-actions-BPn8FtPC.js");
68996
69079
  return whatsappActionsPromise;
68997
69080
  }
68998
69081
  function createPluginRuntime() {
@@ -69213,7 +69296,7 @@ const resolvePluginSdkAliasFile = (params) => {
69213
69296
  const srcCandidate = path.join(cursor, "src", "plugin-sdk", params.srcFile);
69214
69297
  const distCandidate = path.join(cursor, "dist", "plugin-sdk", params.distFile);
69215
69298
  const orderedCandidates = isTest ? [distCandidate, srcCandidate] : [distCandidate];
69216
- for (const candidate of orderedCandidates) if (fsSync.existsSync(candidate)) return candidate;
69299
+ for (const candidate of orderedCandidates) if (fs.existsSync(candidate)) return candidate;
69217
69300
  const parent = path.dirname(cursor);
69218
69301
  if (parent === cursor) break;
69219
69302
  cursor = parent;
@@ -69759,7 +69842,7 @@ function resolvePluginTools(params) {
69759
69842
  //#endregion
69760
69843
  //#region src/agents/apply-patch-update.ts
69761
69844
  async function defaultReadFile(filePath) {
69762
- return fs.readFile(filePath, "utf8");
69845
+ return fs$1.readFile(filePath, "utf8");
69763
69846
  }
69764
69847
  async function applyUpdateHunk(filePath, chunks, options) {
69765
69848
  const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
@@ -70003,10 +70086,10 @@ function resolvePatchFileOps(options) {
70003
70086
  };
70004
70087
  }
70005
70088
  return {
70006
- readFile: (filePath) => fs.readFile(filePath, "utf8"),
70007
- writeFile: (filePath, content) => fs.writeFile(filePath, content, "utf8"),
70008
- remove: (filePath) => fs.rm(filePath),
70009
- mkdirp: (dir) => fs.mkdir(dir, { recursive: true }).then(() => {})
70089
+ readFile: (filePath) => fs$1.readFile(filePath, "utf8"),
70090
+ writeFile: (filePath, content) => fs$1.writeFile(filePath, content, "utf8"),
70091
+ remove: (filePath) => fs$1.rm(filePath),
70092
+ mkdirp: (dir) => fs$1.mkdir(dir, { recursive: true }).then(() => {})
70010
70093
  };
70011
70094
  }
70012
70095
  async function ensureDir(filePath, ops) {
@@ -71251,7 +71334,7 @@ async function repairSessionFileIfNeeded(params) {
71251
71334
  };
71252
71335
  let content;
71253
71336
  try {
71254
- content = await fs.readFile(sessionFile, "utf-8");
71337
+ content = await fs$1.readFile(sessionFile, "utf-8");
71255
71338
  } catch (err) {
71256
71339
  if (err?.code === "ENOENT") return {
71257
71340
  repaired: false,
@@ -71299,15 +71382,15 @@ async function repairSessionFileIfNeeded(params) {
71299
71382
  const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
71300
71383
  const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
71301
71384
  try {
71302
- const stat = await fs.stat(sessionFile).catch(() => null);
71303
- await fs.writeFile(backupPath, content, "utf-8");
71304
- if (stat) await fs.chmod(backupPath, stat.mode);
71305
- await fs.writeFile(tmpPath, cleaned, "utf-8");
71306
- if (stat) await fs.chmod(tmpPath, stat.mode);
71307
- await fs.rename(tmpPath, sessionFile);
71385
+ const stat = await fs$1.stat(sessionFile).catch(() => null);
71386
+ await fs$1.writeFile(backupPath, content, "utf-8");
71387
+ if (stat) await fs$1.chmod(backupPath, stat.mode);
71388
+ await fs$1.writeFile(tmpPath, cleaned, "utf-8");
71389
+ if (stat) await fs$1.chmod(tmpPath, stat.mode);
71390
+ await fs$1.rename(tmpPath, sessionFile);
71308
71391
  } catch (err) {
71309
71392
  try {
71310
- await fs.unlink(tmpPath);
71393
+ await fs$1.unlink(tmpPath);
71311
71394
  } catch (cleanupErr) {
71312
71395
  params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
71313
71396
  }
@@ -71991,8 +72074,8 @@ async function readWorkspaceContextForSummary() {
71991
72074
  const workspaceDir = process.cwd();
71992
72075
  const agentsPath = path.join(workspaceDir, "AGENTS.md");
71993
72076
  try {
71994
- if (!fsSync.existsSync(agentsPath)) return "";
71995
- const sections = extractSections(await fsSync.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
72077
+ if (!fs.existsSync(agentsPath)) return "";
72078
+ const sections = extractSections(await fs.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
71996
72079
  if (sections.length === 0) return "";
71997
72080
  const combined = sections.join("\n\n");
71998
72081
  return `\n\n<workspace-critical-rules>\n${combined.length > MAX_SUMMARY_CONTEXT_CHARS ? combined.slice(0, MAX_SUMMARY_CONTEXT_CHARS) + "\n...[truncated]..." : combined}\n</workspace-critical-rules>`;
@@ -72548,7 +72631,7 @@ async function prewarmSessionFile(sessionFile) {
72548
72631
  if (!isSessionManagerCacheEnabled()) return;
72549
72632
  if (isSessionManagerCached(sessionFile)) return;
72550
72633
  try {
72551
- const handle = await fs.open(sessionFile, "r");
72634
+ const handle = await fs$1.open(sessionFile, "r");
72552
72635
  try {
72553
72636
  const buffer = Buffer$1.alloc(4096);
72554
72637
  await handle.read(buffer, 0, buffer.length, 0);
@@ -72681,14 +72764,14 @@ async function compactEmbeddedPiSessionDirect(params) {
72681
72764
  if (!apiKeyInfo.apiKey) {
72682
72765
  if (apiKeyInfo.mode !== "aws-sdk") throw new Error(`No API key resolved for provider "${model.provider}" (auth mode: ${apiKeyInfo.mode}).`);
72683
72766
  } else if (model.provider === "github-copilot") {
72684
- const { resolveCopilotApiToken } = await import("./github-copilot-token-B8B2pmph.js").then((n) => n.n);
72767
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-cCYzSU9h.js").then((n) => n.n);
72685
72768
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
72686
72769
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
72687
72770
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
72688
72771
  } catch (err) {
72689
72772
  return fail(describeUnknownError(err));
72690
72773
  }
72691
- await fs.mkdir(resolvedWorkspace, { recursive: true });
72774
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
72692
72775
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
72693
72776
  const sandbox = await resolveSandboxContext({
72694
72777
  config: params.config,
@@ -72696,7 +72779,7 @@ async function compactEmbeddedPiSessionDirect(params) {
72696
72779
  workspaceDir: resolvedWorkspace
72697
72780
  });
72698
72781
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
72699
- await fs.mkdir(effectiveWorkspace, { recursive: true });
72782
+ await fs$1.mkdir(effectiveWorkspace, { recursive: true });
72700
72783
  await ensureSessionHeader({
72701
72784
  sessionFile: params.sessionFile,
72702
72785
  sessionId: params.sessionId,
@@ -73050,12 +73133,12 @@ function getQueuedFileWriter(writers, filePath) {
73050
73133
  const existing = writers.get(filePath);
73051
73134
  if (existing) return existing;
73052
73135
  const dir = path.dirname(filePath);
73053
- const ready = fs.mkdir(dir, { recursive: true }).catch(() => void 0);
73136
+ const ready = fs$1.mkdir(dir, { recursive: true }).catch(() => void 0);
73054
73137
  let queue = Promise.resolve();
73055
73138
  const writer = {
73056
73139
  filePath,
73057
73140
  write: (line) => {
73058
- queue = queue.then(() => ready).then(() => fs.appendFile(filePath, line, "utf8")).catch(() => void 0);
73141
+ queue = queue.then(() => ready).then(() => fs$1.appendFile(filePath, line, "utf8")).catch(() => void 0);
73059
73142
  }
73060
73143
  };
73061
73144
  writers.set(filePath, writer);
@@ -73531,6 +73614,8 @@ function createModelAwareStreamFn(opts) {
73531
73614
  if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
73532
73615
  if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
73533
73616
  if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
73617
+ if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
73618
+ if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
73534
73619
  const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
73535
73620
  const isOpenRouter = opts.provider === "openrouter";
73536
73621
  const extraHeaders = {};
@@ -74080,11 +74165,11 @@ function appendRawStream(payload) {
74080
74165
  if (!rawStreamReady) {
74081
74166
  rawStreamReady = true;
74082
74167
  try {
74083
- fsSync.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
74168
+ fs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
74084
74169
  } catch {}
74085
74170
  }
74086
74171
  try {
74087
- fsSync.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
74172
+ fs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
74088
74173
  } catch {}
74089
74174
  }
74090
74175
 
@@ -75914,7 +75999,7 @@ function isInPoisonRange(version) {
75914
75999
  */
75915
76000
  async function checkSessionPoison(sessionFile) {
75916
76001
  try {
75917
- const firstLine = (await fs.readFile(sessionFile, "utf-8")).split("\n")[0];
76002
+ const firstLine = (await fs$1.readFile(sessionFile, "utf-8")).split("\n")[0];
75918
76003
  if (!firstLine) return null;
75919
76004
  const header = JSON.parse(firstLine);
75920
76005
  if (header.type !== "session") return null;
@@ -75932,7 +76017,7 @@ async function checkSessionPoison(sessionFile) {
75932
76017
  */
75933
76018
  async function archivePoisonedSession(sessionFile) {
75934
76019
  const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
75935
- await fs.rename(sessionFile, archiveName);
76020
+ await fs$1.rename(sessionFile, archiveName);
75936
76021
  return archiveName;
75937
76022
  }
75938
76023
  /**
@@ -75941,14 +76026,14 @@ async function archivePoisonedSession(sessionFile) {
75941
76026
  */
75942
76027
  async function stampSessionVersion(sessionFile) {
75943
76028
  try {
75944
- const lines = (await fs.readFile(sessionFile, "utf-8")).split("\n");
76029
+ const lines = (await fs$1.readFile(sessionFile, "utf-8")).split("\n");
75945
76030
  if (lines.length === 0) return;
75946
76031
  const header = JSON.parse(lines[0]);
75947
76032
  if (header.type !== "session") return;
75948
76033
  if (header.symiVersion === VERSION) return;
75949
76034
  header.symiVersion = VERSION;
75950
76035
  lines[0] = JSON.stringify(header);
75951
- await fs.writeFile(sessionFile, lines.join("\n"), "utf-8");
76036
+ await fs$1.writeFile(sessionFile, lines.join("\n"), "utf-8");
75952
76037
  } catch {}
75953
76038
  }
75954
76039
  /**
@@ -76111,7 +76196,7 @@ async function prepareSessionManagerForRun(params) {
76111
76196
  return;
76112
76197
  }
76113
76198
  if (params.hadSessionFile && header && !hasAssistant) {
76114
- await fs.writeFile(params.sessionFile, "", "utf-8");
76199
+ await fs$1.writeFile(params.sessionFile, "", "utf-8");
76115
76200
  sm.fileEntries = [header];
76116
76201
  sm.byId?.clear?.();
76117
76202
  sm.labelsById?.clear?.();
@@ -76669,7 +76754,7 @@ async function runEmbeddedAttempt(params) {
76669
76754
  const prevCwd = process.cwd();
76670
76755
  const runAbortController = new AbortController();
76671
76756
  log$9.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
76672
- await fs.mkdir(resolvedWorkspace, { recursive: true });
76757
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
76673
76758
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
76674
76759
  const sandbox = await resolveSandboxContext({
76675
76760
  config: params.config,
@@ -76677,7 +76762,7 @@ async function runEmbeddedAttempt(params) {
76677
76762
  workspaceDir: resolvedWorkspace
76678
76763
  });
76679
76764
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
76680
- await fs.mkdir(effectiveWorkspace, { recursive: true });
76765
+ await fs$1.mkdir(effectiveWorkspace, { recursive: true });
76681
76766
  let restoreSkillEnv;
76682
76767
  process.chdir(effectiveWorkspace);
76683
76768
  try {
@@ -76907,7 +76992,7 @@ async function runEmbeddedAttempt(params) {
76907
76992
  sessionFile: params.sessionFile,
76908
76993
  warn: (message) => log$9.warn(message)
76909
76994
  });
76910
- const hadSessionFile = await fs.stat(params.sessionFile).then(() => true).catch(() => false);
76995
+ const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
76911
76996
  const transcriptPolicy = resolveTranscriptPolicy({
76912
76997
  modelApi: params.model?.api,
76913
76998
  provider: params.provider,
@@ -77892,7 +77977,7 @@ async function runEmbeddedPiAgent(params) {
77892
77977
  return;
77893
77978
  }
77894
77979
  if (model.provider === "github-copilot") {
77895
- const { resolveCopilotApiToken } = await import("./github-copilot-token-B8B2pmph.js").then((n) => n.n);
77980
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-cCYzSU9h.js").then((n) => n.n);
77896
77981
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
77897
77982
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
77898
77983
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -77977,7 +78062,7 @@ async function runEmbeddedPiAgent(params) {
77977
78062
  }
77978
78063
  runLoopIterations += 1;
77979
78064
  attemptedThinking.add(thinkLevel);
77980
- await fs.mkdir(resolvedWorkspace, { recursive: true });
78065
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
77981
78066
  const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
77982
78067
  const attempt = await runEmbeddedAttempt({
77983
78068
  sessionId: params.sessionId,