@symerian/symi 2.8.5 → 2.8.7

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 (244) hide show
  1. package/dist/{accounts-BRw8yhIW.js → accounts-D1r2dq1t.js} +21 -21
  2. package/dist/{accounts-3dCrO3oZ.js → accounts-dRUMQQrB.js} +1 -1
  3. package/dist/{accounts-BuZxOb3B.js → accounts-wSphH5gv.js} +1 -1
  4. package/dist/{active-listener-Br2FcRv7.js → active-listener-C3pfJhdC.js} +1 -1
  5. package/dist/{agent-scope-CpEJ0B88.js → agent-scope-D68_xfTL.js} +3 -3
  6. package/dist/{agents-DWuqUDaG.js → agents-CKqrLbBd.js} +4 -4
  7. package/dist/{agents.config-DWsjuONZ.js → agents.config-D17kikNs.js} +1 -1
  8. package/dist/{agents.config-B8euVOOW.js → agents.config-DnEa79_a.js} +1 -1
  9. package/dist/{audio-preflight-DIXDvyz5.js → audio-preflight-DFLcuVNn.js} +29 -29
  10. package/dist/{audio-preflight-CKbpf-IL.js → audio-preflight-DJXj9QP9.js} +5 -5
  11. package/dist/{audio-preflight-BQaUmV6k.js → audio-preflight-DfALITTK.js} +5 -5
  12. package/dist/{audit-DCOp_J5K.js → audit-DVUHZrf4.js} +2 -2
  13. package/dist/{audit-BIeVybsA.js → audit-DgAM_dWL.js} +2 -2
  14. package/dist/{auth-choice-kpk3L0TR.js → auth-choice-KEir_3i_.js} +1 -1
  15. package/dist/{auth-choice-hKVjPWaU.js → auth-choice-obR6mZqe.js} +1 -1
  16. package/dist/{auth-profiles-C2vj6htZ.js → auth-profiles-aJfgABnE.js} +17 -17
  17. package/dist/{banner-C1RFNTRm.js → banner-BEYICVDD.js} +1 -1
  18. package/dist/{bindings-BsHoBLIE.js → bindings-Bat2RnAR.js} +2 -2
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +54 -54
  21. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  22. package/dist/bundled/command-logger/handler.js +1 -1
  23. package/dist/bundled/session-memory/handler.js +54 -54
  24. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  25. package/dist/{channel-activity-D-kw83R0.js → channel-activity-Cm1OJRbv.js} +1 -1
  26. package/dist/{channel-options-Vjegw-bn.js → channel-options-D9g8Ji5_.js} +1 -1
  27. package/dist/{channel-options-Pit7RtN-.js → channel-options-H9pR0AWZ.js} +1 -1
  28. package/dist/{channel-web-BVm_UWyj.js → channel-web-B9-EHnds.js} +3 -3
  29. package/dist/{channels-cli-Bh07AMec.js → channels-cli-C_YU5GaO.js} +11 -11
  30. package/dist/{channels-cli-CXws5tG8.js → channels-cli-mCf_KwBC.js} +12 -12
  31. package/dist/{chrome-ROtrXlNs.js → chrome-B0yKTuIS.js} +14 -14
  32. package/dist/{chunk-BHW8Yu5A.js → chunk-B9x_1qSr.js} +1 -1
  33. package/dist/{cli-D5qinxg-.js → cli-D8xchhQH.js} +8 -8
  34. package/dist/{cli-TABOKnEJ.js → cli-WAg9Zydm.js} +9 -9
  35. package/dist/{command-registry-DEe4juCf.js → command-registry-nSYGDoue.js} +9 -9
  36. package/dist/{commands-registry-CfoYlMQB.js → commands-registry-CeBC8Vy2.js} +4 -4
  37. package/dist/{completion-cli-W3fyiL94.js → completion-cli-BzV4_BVf.js} +1 -1
  38. package/dist/{completion-cli-D0j-46vF.js → completion-cli-CR5v_bKh.js} +2 -2
  39. package/dist/{config-BkZ9HOKT.js → config-Dp67YMkg.js} +12 -12
  40. package/dist/{config-cli-DLBtnr_W.js → config-cli-DFXYnUAB.js} +1 -1
  41. package/dist/{config-cli-CajteLy8.js → config-cli-wcQ2PQ2b.js} +1 -1
  42. package/dist/{config-guard-DjlYIjka.js → config-guard-CJ4iAPK5.js} +1 -1
  43. package/dist/{config-guard-BJE6xSY9.js → config-guard-DsOhmFl6.js} +2 -2
  44. package/dist/{configure-B79KjBCS.js → configure-CCux4ZEl.js} +3 -3
  45. package/dist/{configure-2PdZnKO6.js → configure-DSXgdzrp.js} +3 -3
  46. package/dist/control-ui/js/app.js +6 -33
  47. package/dist/control-ui/js/render.js +4 -14
  48. package/dist/{deliver-CiL9mQXH.js → deliver-BLt_liXS.js} +2 -2
  49. package/dist/{deliver-BC3liFsT.js → deliver-DPWY9adX.js} +20 -20
  50. package/dist/{deliver-CXpvGXqJ.js → deliver-lG9ITE8w.js} +2 -2
  51. package/dist/{diagnostic-CQiU0O8b.js → diagnostic-DIKKFHpP.js} +1 -1
  52. package/dist/{doctor-completion-DOnUbTdS.js → doctor-completion-D-deyczv.js} +1 -1
  53. package/dist/{doctor-completion-mlj3aq0W.js → doctor-completion-jev9bFib.js} +1 -1
  54. package/dist/{doctor-config-flow-DFk-NaP5.js → doctor-config-flow-C81j0-sE.js} +1 -1
  55. package/dist/{doctor-config-flow-BRB_O0jG.js → doctor-config-flow-CN8seKLA.js} +1 -1
  56. package/dist/entry.js +1 -1
  57. package/dist/{env-BDXYbTKj.js → env-xmBFQPBP.js} +1 -1
  58. package/dist/extensionAPI.js +1 -1
  59. package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CV0YkjoY.js} +2 -2
  60. package/dist/{gateway-cli-D7jQypRh.js → gateway-cli-BJvattWu.js} +19 -19
  61. package/dist/{gateway-cli-nHVe7vxD.js → gateway-cli-_BIiMqiD.js} +18 -18
  62. package/dist/{gemini-auth-BefM10YB.js → gemini-auth-JP7SzVpY.js} +1 -1
  63. package/dist/{github-copilot-token-cCYzSU9h.js → github-copilot-token-B8B2pmph.js} +7 -7
  64. package/dist/{glass-ui-ws-BgVPCNjg.js → glass-ui-ws-BHVpfzRg.js} +16 -16
  65. package/dist/{glass-ui-ws-CMMnvVpl.js → glass-ui-ws-DRWpg6Qb.js} +15 -15
  66. package/dist/{health-DvkoG4Dw.js → health-7ZvWXkvm.js} +3 -3
  67. package/dist/{health-DKxSHkOQ.js → health-D1L94KKE.js} +3 -3
  68. package/dist/{hooks-cli-DV1GeJpO.js → hooks-cli-B-JbgOoq.js} +9 -9
  69. package/dist/{hooks-cli-DsWn_3um.js → hooks-cli-BjYy0UUP.js} +10 -10
  70. package/dist/{image-C6v6m8Id.js → image-DCB54N2j.js} +4 -4
  71. package/dist/{image-CJ_QZqzR.js → image-DXco5IYt.js} +1 -1
  72. package/dist/{image-C2IvljWU.js → image-D_qN_IxA.js} +1 -1
  73. package/dist/{image-ops-C7CauEK8.js → image-ops-M5agStZn.js} +16 -16
  74. package/dist/index.js +14 -14
  75. package/dist/{ir-JAy_3A3B.js → ir-Z9axTYHx.js} +4 -4
  76. package/dist/llm-slug-generator.js +54 -54
  77. package/dist/{local-roots-Se92wAN5.js → local-roots-Bh5xx9IO.js} +5 -5
  78. package/dist/{login-CksRbu5D.js → login-Z-O7e3RD.js} +7 -7
  79. package/dist/{login-qr-COIr6FGZ.js → login-qr-Cqe-9-jf.js} +12 -12
  80. package/dist/{manager-DXyJKTj7.js → manager-ayAJucg2.js} +22 -22
  81. package/dist/{manifest-registry-CBCGTsIb.js → manifest-registry-QT5_77XA.js} +19 -19
  82. package/dist/{markdown-tables-Dnj2LQUc.js → markdown-tables-DuRhvVpP.js} +1 -1
  83. package/dist/{message-channel-OlFBYAw8.js → message-channel-DwDSKGn4.js} +1 -1
  84. package/dist/{models-BohMMqeG.js → models-PeKQE2ct.js} +2 -2
  85. package/dist/{models-cli-DabormMV.js → models-cli-ChoXOtnk.js} +9 -9
  86. package/dist/{models-cli-CJywE4w7.js → models-cli-lSGGkLeL.js} +11 -11
  87. package/dist/{onboard-ygIcreY9.js → onboard-9PT0Wv1A.js} +2 -2
  88. package/dist/{onboard-CyuUucGA.js → onboard-B8q4Vpz1.js} +2 -2
  89. package/dist/{onboard-channels-DU6do-N5.js → onboard-channels-CN0qvsHO.js} +1 -1
  90. package/dist/{onboard-channels-DaY1NwXd.js → onboard-channels-Cg4bD8ps.js} +1 -1
  91. package/dist/{onboarding-Bqz1NgoR.js → onboarding-BAn2oNRB.js} +4 -4
  92. package/dist/{onboarding-BfeyfvK_.js → onboarding-hJaI3u5t.js} +4 -4
  93. package/dist/{onboarding.finalize-CG0xwhEw.js → onboarding.finalize-BPZZr8Cm.js} +13 -13
  94. package/dist/{onboarding.finalize-DzTo4LEo.js → onboarding.finalize-BTrhVcW5.js} +15 -15
  95. package/dist/{onboarding.gateway-config-7LGxdDrq.js → onboarding.gateway-config-TM8ERKyn.js} +1 -1
  96. package/dist/{onboarding.gateway-config-DJJRuyZ_.js → onboarding.gateway-config-vGTQDqA6.js} +1 -1
  97. package/dist/{outbound-attachment-BzwVH4Pn.js → outbound-attachment-BOy-OY4-.js} +2 -2
  98. package/dist/{outbound-CX-uuDet.js → outbound-xWV2AYDD.js} +7 -7
  99. package/dist/paths-CYmyCDsE.js +212 -0
  100. package/dist/{paths-CbQV9WEg.js → paths-DEuVuViW.js} +1 -1
  101. package/dist/{pi-auth-json-RXOlh8ar.js → pi-auth-json-Q3FwtPeJ.js} +1 -1
  102. package/dist/{pi-embedded-BIATvD3R.js → pi-embedded-F3kbSP7M.js} +6 -2
  103. package/dist/{pi-embedded-helpers-BUNbSNWw.js → pi-embedded-helpers-CFTCaByg.js} +73 -73
  104. package/dist/{pi-embedded-helpers-jo_kKs-Z.js → pi-embedded-helpers-DSscUmkR.js} +1 -1
  105. package/dist/{pi-embedded-helpers-DiXXYmgo.js → pi-embedded-helpers-DpOccVre.js} +1 -1
  106. package/dist/{pi-tools.policy-p7LLu64F.js → pi-tools.policy-BpN-v9bT.js} +1 -1
  107. package/dist/{pi-tools.policy-CGVKAOoE.js → pi-tools.policy-DOVQ8dDx.js} +1 -1
  108. package/dist/{plugin-registry-DG2IOSY3.js → plugin-registry-BVoIgv-5.js} +1 -1
  109. package/dist/{plugin-registry-DTm-oyEP.js → plugin-registry-DFPTE_HO.js} +1 -1
  110. package/dist/plugin-sdk/{channel-web-D-ct3FR3.js → channel-web-BNGOwMat.js} +1 -1
  111. package/dist/plugin-sdk/index.js +2 -2
  112. package/dist/plugin-sdk/{reply-Gpdxnjey.js → reply-DcNZU8lj.js} +6 -2
  113. package/dist/plugin-sdk/{web-BFa_GJSK.js → web-CeR-wf-N.js} +2 -2
  114. package/dist/{plugins-BzmbgY7s.js → plugins-Bkr5ZdYs.js} +9 -9
  115. package/dist/{plugins-cli-BrHhfpbX.js → plugins-cli-BwM4f91E.js} +10 -10
  116. package/dist/{plugins-cli-BJpemLCS.js → plugins-cli-uoGDkhOc.js} +9 -9
  117. package/dist/{program-CYzFuO3w.js → program-DhBZLOgJ.js} +16 -16
  118. package/dist/{program-context-G2iHoB5D.js → program-context-BJEZcvA2.js} +20 -20
  119. package/dist/{prompt-select-styled-lVyrkSPI.js → prompt-select-styled-CJjLDUCj.js} +7 -7
  120. package/dist/{prompt-select-styled-P0KS75Rt.js → prompt-select-styled-CMBgFELR.js} +7 -7
  121. package/dist/{provider-auth-helpers-CoYjxsb2.js → provider-auth-helpers-DeWQHkRc.js} +1 -1
  122. package/dist/{provider-auth-helpers-Cygsm5_L.js → provider-auth-helpers-S2j3hcBK.js} +1 -1
  123. package/dist/{push-apns-CHM_4e6x.js → push-apns-CJ2CpgRB.js} +1 -1
  124. package/dist/{push-apns-BMfcGm-A.js → push-apns-YD8SuIy0.js} +1 -1
  125. package/dist/{pw-ai-BLrC_W1X.js → pw-ai-DHoYzirP.js} +11 -11
  126. package/dist/{qmd-manager-lBS9mT9w.js → qmd-manager-8-Z3Cdpt.js} +7 -7
  127. package/dist/{register.agent-BTmY2MoW.js → register.agent-B2u3ouKf.js} +14 -14
  128. package/dist/{register.agent-efba5ajU.js → register.agent-gMPMyFRj.js} +12 -12
  129. package/dist/{register.configure-DHSfWAqs.js → register.configure-C6mVcNay.js} +14 -14
  130. package/dist/{register.configure-EQOE0vHS.js → register.configure-DncWEkhU.js} +13 -13
  131. package/dist/{register.maintenance-CzcgKkH3.js → register.maintenance-Cz1IOILv.js} +15 -15
  132. package/dist/{register.maintenance-CsczzIEq.js → register.maintenance-D5oV0fjR.js} +17 -17
  133. package/dist/{register.message-Bc3A_dfj.js → register.message-B6hxm3rn.js} +9 -9
  134. package/dist/{register.message-u6gwfQPX.js → register.message-QejTHJGQ.js} +10 -10
  135. package/dist/{register.onboard-CtKNq5I_.js → register.onboard-CA06T3Jp.js} +12 -12
  136. package/dist/{register.onboard-yDsskHey.js → register.onboard-kJuHrfio.js} +11 -11
  137. package/dist/{register.setup-BPeB8JTw.js → register.setup-BD8QKVsT.js} +11 -11
  138. package/dist/{register.setup-BJqk3N2q.js → register.setup-C11edfdp.js} +12 -12
  139. package/dist/{register.status-health-sessions-CU6Uv3iO.js → register.status-health-sessions-257I77oA.js} +13 -13
  140. package/dist/{register.status-health-sessions-KzzMJ0H1.js → register.status-health-sessions-CrTiF0_d.js} +11 -11
  141. package/dist/{register.subclis-C_464foT.js → register.subclis-CnOalkYH.js} +12 -12
  142. package/dist/{registry-DYq1AYOv.js → registry-UkL38jvt.js} +17 -17
  143. package/dist/{replies-BWgZR_w5.js → replies-CWH084Xr.js} +3 -3
  144. package/dist/{reply-kWKTXRkY.js → reply-o0IEwJ_P.js} +18 -14
  145. package/dist/{reply-prefix-CvEIl6_d.js → reply-prefix-ZnX2V-k9.js} +1 -1
  146. package/dist/{resolve-route-DX7xcMsD.js → resolve-route-gl0ZOOKR.js} +4 -4
  147. package/dist/{retry-B-y5suGA.js → retry-D25Z8MVS.js} +1 -1
  148. package/dist/{run-main-I-kj1_yf.js → run-main-BuVFHsuQ.js} +25 -25
  149. package/dist/{runner-QX0Z6K1w.js → runner-C-ygJOAu.js} +22 -22
  150. package/dist/{runner-BopCEjwB.js → runner-CSdQSvE8.js} +1 -1
  151. package/dist/{runner-eBF6SlQ6.js → runner-C_BlQ2fG.js} +1 -1
  152. package/dist/{sandbox-ooxzsj2D.js → sandbox-BOVopTqv.js} +1 -1
  153. package/dist/{sandbox-Cl2r-bXv.js → sandbox-CDxHBl3I.js} +1 -1
  154. package/dist/{sandbox-cli-CZSrSTkk.js → sandbox-cli-0eu7BCa8.js} +2 -2
  155. package/dist/{sandbox-cli-BH45SMwC.js → sandbox-cli-BpfYaZBG.js} +2 -2
  156. package/dist/{security-cli-CEI0zQJs.js → security-cli-B5s73Le2.js} +4 -4
  157. package/dist/{security-cli-Bz-Sv5-H.js → security-cli-CzWHkrqD.js} +4 -4
  158. package/dist/{send-CCmxHtaA.js → send-BJhQtCyM.js} +6 -6
  159. package/dist/{send-xTfsDEE2.js → send-CF_nzDHe.js} +18 -18
  160. package/dist/{send-vqwluhp3.js → send-Cf47Nas6.js} +7 -7
  161. package/dist/{send-B7aHpAco.js → send-DERqzyba.js} +6 -6
  162. package/dist/{send-Yzy50T1h.js → send-DQoKXmre.js} +10 -10
  163. package/dist/{server-methods-DuXvSLX-.js → server-methods-D0laPfTZ.js} +10 -10
  164. package/dist/{server-methods-DQHU-PVR.js → server-methods-D1eF0-Yu.js} +11 -11
  165. package/dist/{server-node-events-CwAM91fd.js → server-node-events-D3iV_wDf.js} +9 -9
  166. package/dist/{server-node-events-ecaGjg5E.js → server-node-events-b7X9bVIS.js} +10 -10
  167. package/dist/{session-BTLA3Rm7.js → session-C1eFu8k4.js} +8 -8
  168. package/dist/{session-utils-Dwt6eGX6.js → session-utils-BPXkhuNM.js} +1 -1
  169. package/dist/{sessions-Do060W3W.js → sessions-BPD85pWA.js} +2 -3
  170. package/dist/{sessions-vYQs1OzE.js → sessions-BeYHj0gr.js} +2 -3
  171. package/dist/{sessions-DQxygr94.js → sessions-NTd36-CO.js} +2 -2
  172. package/dist/{skill-commands-D1hG6Ikz.js → skill-commands-CKXkvl80.js} +16 -16
  173. package/dist/{skills-CXxrn_e2.js → skills-DxmX9HVT.js} +24 -24
  174. package/dist/{sqlite-BHWvOATS.js → sqlite-JHY-uOmS.js} +16 -16
  175. package/dist/{status-v8DOdpX6.js → status-Cv3PcsRo.js} +4 -4
  176. package/dist/{status-DNVKHGLC.js → status-CwrFTb4t.js} +1 -1
  177. package/dist/{status-CW9LMA2M.js → status-K22ODH_m.js} +1 -1
  178. package/dist/{status-DsFAg-bK.js → status-eVKjxfUO.js} +5 -5
  179. package/dist/{store-01F_JM7O.js → store-Ea3zM6xK.js} +6 -6
  180. package/dist/{subagent-registry-C8UsZ8F0.js → subagent-registry-4XZvxwX0.js} +19 -15
  181. package/dist/{subsystem-BjyjJF-d.js → subsystem-DN75fnEF.js} +1 -1
  182. package/dist/{tables-BuM4FKR3.js → tables-Dkg9O8rv.js} +1 -1
  183. package/dist/{target-errors-BEugWC4F.js → target-errors-Pr77jao5.js} +2 -2
  184. package/dist/{thinking-BprCy23Z.js → thinking-C9-JAUzD.js} +5 -5
  185. package/dist/{tokens-W0JzCJJM.js → tokens-CCZl4YHT.js} +1 -1
  186. package/dist/{tool-images-SqqWIT22.js → tool-images-B1qVCntj.js} +2 -2
  187. package/dist/{tool-loop-detection-D5mBY7AC.js → tool-loop-detection-C33wf43N.js} +3 -3
  188. package/dist/{tui-B61kHmM2.js → tui-DfPeXwah.js} +2 -2
  189. package/dist/{tui-CiGfEtDa.js → tui-LZPdrFmK.js} +2 -2
  190. package/dist/{tui-cli-CwNXfDnk.js → tui-cli-Bm3TJgXf.js} +4 -4
  191. package/dist/{tui-cli-DHKMCeGp.js → tui-cli-DFXZ7r1F.js} +4 -4
  192. package/dist/{unified-runner-CUXcv08a.js → unified-runner-BL7URnpP.js} +231 -227
  193. package/dist/{update-cli-BwX8SW9m.js → update-cli-Bf-HR0_b.js} +17 -17
  194. package/dist/{update-cli-DQOw6sqy.js → update-cli-CjtzOlMZ.js} +15 -15
  195. package/dist/{update-runner-BhXkq5Gw.js → update-runner-CxuU59aU.js} +1 -1
  196. package/dist/{update-runner-C56OyqSE.js → update-runner-i95oVXRi.js} +1 -1
  197. package/dist/{web-DgoKLcMP.js → web-B3QBvAid.js} +58 -58
  198. package/dist/{web-CGicnDRL.js → web-CTog1mw0.js} +9 -9
  199. package/dist/{web-Ifwqx6Dt.js → web-D6aUh_IC.js} +1 -1
  200. package/dist/{web-NSGlkQEO.js → web-D_WLAogr.js} +9 -9
  201. package/dist/{whatsapp-actions-CiXMwRR8.js → whatsapp-actions-pddprZ8J.js} +23 -23
  202. package/dist/{workspace-DscDraUb.js → workspace-DqJ5h-ZB.js} +27 -27
  203. package/extensions/bluebubbles/package.json +1 -1
  204. package/extensions/copilot-proxy/package.json +1 -1
  205. package/extensions/diagnostics-otel/package.json +1 -1
  206. package/extensions/discord/package.json +1 -1
  207. package/extensions/feishu/package.json +1 -1
  208. package/extensions/google-antigravity-auth/package.json +1 -1
  209. package/extensions/google-gemini-cli-auth/package.json +1 -1
  210. package/extensions/googlechat/package.json +1 -1
  211. package/extensions/imessage/package.json +1 -1
  212. package/extensions/irc/package.json +1 -1
  213. package/extensions/learning-loop/package.json +1 -1
  214. package/extensions/line/package.json +1 -1
  215. package/extensions/llm-task/package.json +1 -1
  216. package/extensions/matrix/CHANGELOG.md +12 -0
  217. package/extensions/matrix/package.json +1 -1
  218. package/extensions/mattermost/package.json +1 -1
  219. package/extensions/memory-core/package.json +1 -1
  220. package/extensions/memory-lancedb/package.json +1 -1
  221. package/extensions/minimax-portal-auth/package.json +1 -1
  222. package/extensions/msteams/CHANGELOG.md +12 -0
  223. package/extensions/msteams/package.json +1 -1
  224. package/extensions/nextcloud-talk/package.json +1 -1
  225. package/extensions/nostr/CHANGELOG.md +12 -0
  226. package/extensions/nostr/package.json +1 -1
  227. package/extensions/open-prose/package.json +1 -1
  228. package/extensions/outlook/index.ts +1 -1
  229. package/extensions/outlook/package.json +1 -1
  230. package/extensions/pipeline/package.json +1 -1
  231. package/extensions/signal/package.json +1 -1
  232. package/extensions/slack/package.json +1 -1
  233. package/extensions/telegram/package.json +1 -1
  234. package/extensions/tlon/package.json +1 -1
  235. package/extensions/twitch/CHANGELOG.md +12 -0
  236. package/extensions/twitch/package.json +1 -1
  237. package/extensions/voice-call/CHANGELOG.md +12 -0
  238. package/extensions/voice-call/package.json +1 -1
  239. package/extensions/whatsapp/package.json +1 -1
  240. package/extensions/zalo/CHANGELOG.md +12 -0
  241. package/extensions/zalo/package.json +1 -1
  242. package/extensions/zalouser/CHANGELOG.md +12 -0
  243. package/extensions/zalouser/package.json +1 -1
  244. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
1
+ import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-CYmyCDsE.js";
2
2
  import path from "node:path";
3
- import fs from "node:fs";
3
+ import fsSync from "node:fs";
4
4
  import os from "node:os";
5
5
  import { Logger } from "tslog";
6
6
  import JSON5 from "json5";
@@ -12,9 +12,9 @@ function isNodeErrorWithCode(err, code) {
12
12
  return typeof err === "object" && err !== null && "code" in err && err.code === code;
13
13
  }
14
14
  function resolvePreferredSymiTmpDir(options = {}) {
15
- const accessSync = options.accessSync ?? fs.accessSync;
16
- const lstatSync = options.lstatSync ?? fs.lstatSync;
17
- const mkdirSync = options.mkdirSync ?? fs.mkdirSync;
15
+ const accessSync = options.accessSync ?? fsSync.accessSync;
16
+ const lstatSync = options.lstatSync ?? fsSync.lstatSync;
17
+ const mkdirSync = options.mkdirSync ?? fsSync.mkdirSync;
18
18
  const getuid = options.getuid ?? (() => {
19
19
  try {
20
20
  return typeof process.getuid === "function" ? process.getuid() : void 0;
@@ -38,14 +38,14 @@ function resolvePreferredSymiTmpDir(options = {}) {
38
38
  try {
39
39
  const preferred = lstatSync(POSIX_SYMI_TMP_DIR);
40
40
  if (!preferred.isDirectory() || preferred.isSymbolicLink()) return fallback();
41
- accessSync(POSIX_SYMI_TMP_DIR, fs.constants.W_OK | fs.constants.X_OK);
41
+ accessSync(POSIX_SYMI_TMP_DIR, fsSync.constants.W_OK | fsSync.constants.X_OK);
42
42
  if (!isSecureDirForUser(preferred)) return fallback();
43
43
  return POSIX_SYMI_TMP_DIR;
44
44
  } catch (err) {
45
45
  if (!isNodeErrorWithCode(err, "ENOENT")) return fallback();
46
46
  }
47
47
  try {
48
- accessSync("/tmp", fs.constants.W_OK | fs.constants.X_OK);
48
+ accessSync("/tmp", fsSync.constants.W_OK | fsSync.constants.X_OK);
49
49
  mkdirSync(POSIX_SYMI_TMP_DIR, {
50
50
  recursive: true,
51
51
  mode: 448
@@ -68,8 +68,8 @@ function resolvePreferredSymiTmpDir(options = {}) {
68
68
  function readLoggingConfig() {
69
69
  const configPath = resolveConfigPath();
70
70
  try {
71
- if (!fs.existsSync(configPath)) return;
72
- const raw = fs.readFileSync(configPath, "utf-8");
71
+ if (!fsSync.existsSync(configPath)) return;
72
+ const raw = fsSync.readFileSync(configPath, "utf-8");
73
73
  const logging = JSON5.parse(raw)?.logging;
74
74
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
75
75
  return logging;
@@ -172,7 +172,7 @@ function isFileLogLevelEnabled(level) {
172
172
  return levelToMinLevel(level) <= levelToMinLevel(settings.level);
173
173
  }
174
174
  function buildLogger(settings) {
175
- fs.mkdirSync(path.dirname(settings.file), { recursive: true });
175
+ fsSync.mkdirSync(path.dirname(settings.file), { recursive: true });
176
176
  if (isRollingPath(settings.file)) pruneOldRollingLogs(path.dirname(settings.file));
177
177
  const logger = new Logger({
178
178
  name: "symi",
@@ -186,7 +186,7 @@ function buildLogger(settings) {
186
186
  ...logObj,
187
187
  time
188
188
  });
189
- fs.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
189
+ fsSync.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
190
190
  } catch {}
191
191
  });
192
192
  for (const transport of externalTransports) attachExternalTransport(logger, transport);
@@ -238,14 +238,14 @@ function isRollingPath(file) {
238
238
  }
239
239
  function pruneOldRollingLogs(dir) {
240
240
  try {
241
- const entries = fs.readdirSync(dir, { withFileTypes: true });
241
+ const entries = fsSync.readdirSync(dir, { withFileTypes: true });
242
242
  const cutoff = Date.now() - MAX_LOG_AGE_MS;
243
243
  for (const entry of entries) {
244
244
  if (!entry.isFile()) continue;
245
245
  if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX)) continue;
246
246
  const fullPath = path.join(dir, entry.name);
247
247
  try {
248
- if (fs.statSync(fullPath).mtimeMs < cutoff) fs.rmSync(fullPath, { force: true });
248
+ if (fsSync.statSync(fullPath).mtimeMs < cutoff) fsSync.rmSync(fullPath, { force: true });
249
249
  } catch {}
250
250
  }
251
251
  } catch {}
@@ -326,14 +326,14 @@ function isPlainObject(value) {
326
326
  //#endregion
327
327
  //#region src/utils.ts
328
328
  async function ensureDir(dir) {
329
- await fs.promises.mkdir(dir, { recursive: true });
329
+ await fsSync.promises.mkdir(dir, { recursive: true });
330
330
  }
331
331
  /**
332
332
  * Check if a file or directory exists at the given path.
333
333
  */
334
334
  async function pathExists(targetPath) {
335
335
  try {
336
- await fs.promises.access(targetPath);
336
+ await fsSync.promises.access(targetPath);
337
337
  return true;
338
338
  } catch {
339
339
  return false;
@@ -416,7 +416,7 @@ function readLidReverseMapping(lid, opts) {
416
416
  for (const dir of mappingDirs) {
417
417
  const mappingPath = path.join(dir, mappingFilename);
418
418
  try {
419
- const data = fs.readFileSync(mappingPath, "utf8");
419
+ const data = fsSync.readFileSync(mappingPath, "utf8");
420
420
  const phone = JSON.parse(data);
421
421
  if (phone === null || phone === void 0) continue;
422
422
  return normalizeE164(String(phone));
@@ -500,7 +500,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
500
500
  if (override) return resolveUserPath(override);
501
501
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".symi");
502
502
  try {
503
- if (fs.existsSync(newDir)) return newDir;
503
+ if (fsSync.existsSync(newDir)) return newDir;
504
504
  } catch {}
505
505
  return newDir;
506
506
  }
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-B7aHpAco.js";
3
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-W0JzCJJM.js";
4
- import { i as chunkMarkdownTextWithMode } from "./chunk-BHW8Yu5A.js";
2
+ import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-DERqzyba.js";
3
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CCZl4YHT.js";
4
+ import { i as chunkMarkdownTextWithMode } from "./chunk-B9x_1qSr.js";
5
5
 
6
6
  //#region src/auto-reply/reply/reply-reference.ts
7
7
  function createReplyReferencePlanner(options) {
@@ -21,12 +21,12 @@ import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-eBF6SlQ6.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-C2IvljWU.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-C_BlQ2fG.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-D_qN_IxA.js";
26
26
  import { t as ensureSymiModelsJson } from "./models-config-B91ShhoT.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DiXXYmgo.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-ooxzsj2D.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DpOccVre.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BOVopTqv.js";
30
30
  import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-BJvuH-NZ.js";
31
31
  import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-C2gfYdh8.js";
32
32
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BG8FpqDp.js";
@@ -35,7 +35,7 @@ import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
36
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
37
37
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-vYQs1OzE.js";
38
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-BeYHj0gr.js";
39
39
  import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
40
  import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
41
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
@@ -54,7 +54,7 @@ import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
54
  import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-Dex2EDUJ.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
56
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-emS7y-kf.js";
57
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CXpvGXqJ.js";
57
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-lG9ITE8w.js";
58
58
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-CH0skkp6.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
60
  import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DFftzTHo.js";
@@ -94,7 +94,7 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
94
94
  import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-8Bq7DiSa.js";
95
95
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CdUiymRU.js";
96
96
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CaTOIqVn.js";
97
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-p7LLu64F.js";
97
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BpN-v9bT.js";
98
98
  import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-D0IdaeI8.js";
99
99
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CvFURHzt.js";
100
100
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CafH8-8D.js";
@@ -10416,7 +10416,7 @@ async function routeReply(params) {
10416
10416
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10417
10417
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10418
10418
  try {
10419
- const { deliverOutboundPayloads } = await import("./deliver-CXpvGXqJ.js").then((n) => n.n);
10419
+ const { deliverOutboundPayloads } = await import("./deliver-lG9ITE8w.js").then((n) => n.n);
10420
10420
  return {
10421
10421
  ok: true,
10422
10422
  messageId: (await deliverOutboundPayloads({
@@ -12966,7 +12966,7 @@ async function describeStickerImage(params) {
12966
12966
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12967
12967
  try {
12968
12968
  const buffer = await fs$1.readFile(imagePath);
12969
- const { describeImageWithModel } = await import("./image-C2IvljWU.js").then((n) => n.n);
12969
+ const { describeImageWithModel } = await import("./image-D_qN_IxA.js").then((n) => n.n);
12970
12970
  return (await describeImageWithModel({
12971
12971
  buffer,
12972
12972
  fileName: "sticker.webp",
@@ -15605,7 +15605,7 @@ async function preflightDiscordMessage(params) {
15605
15605
  let preflightTranscript;
15606
15606
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15607
15607
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15608
- const { transcribeFirstAudio } = await import("./audio-preflight-CKbpf-IL.js");
15608
+ const { transcribeFirstAudio } = await import("./audio-preflight-DJXj9QP9.js");
15609
15609
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15610
15610
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15611
15611
  ctx: {
@@ -30410,6 +30410,10 @@ async function runEmbeddedAttempt(params) {
30410
30410
  effectivePrompt = `${hookResult.prependContext}\n\n${params.prompt}`;
30411
30411
  log$7.debug(`hooks: prepended context to prompt (${hookResult.prependContext.length} chars)`);
30412
30412
  }
30413
+ if (hookResult?.systemPrompt) {
30414
+ applySystemPromptOverrideToSession(activeSession, `${systemPromptText}\n\n${hookResult.systemPrompt}`);
30415
+ log$7.debug(`hooks: appended systemPrompt from plugin hook (${hookResult.systemPrompt.length} chars)`);
30416
+ }
30413
30417
  {
30414
30418
  const autoRecallAgentId = normalizeAgentId(params.sessionKey);
30415
30419
  if ((params.config ? resolveMemorySearchConfig(params.config, autoRecallAgentId) : null) && params.config) try {
@@ -31807,7 +31811,7 @@ async function runAgentTurn(params) {
31807
31811
  function createDefaultDeps() {
31808
31812
  return {
31809
31813
  sendMessageWhatsApp: async (...args) => {
31810
- const { sendMessageWhatsApp } = await import("./web-NSGlkQEO.js");
31814
+ const { sendMessageWhatsApp } = await import("./web-D_WLAogr.js");
31811
31815
  return await sendMessageWhatsApp(...args);
31812
31816
  },
31813
31817
  sendMessageTelegram: async (...args) => {
@@ -48072,7 +48076,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
48072
48076
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
48073
48077
  let preflightTranscript;
48074
48078
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
48075
- const { transcribeFirstAudio } = await import("./audio-preflight-CKbpf-IL.js");
48079
+ const { transcribeFirstAudio } = await import("./audio-preflight-DJXj9QP9.js");
48076
48080
  preflightTranscript = await transcribeFirstAudio({
48077
48081
  ctx: {
48078
48082
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -50238,7 +50242,7 @@ function loadWebLoginQr() {
50238
50242
  return webLoginQrPromise;
50239
50243
  }
50240
50244
  function loadWebChannel() {
50241
- webChannelPromise ??= import("./web-NSGlkQEO.js");
50245
+ webChannelPromise ??= import("./web-D_WLAogr.js");
50242
50246
  return webChannelPromise;
50243
50247
  }
50244
50248
  function loadWhatsAppActions() {
@@ -72941,7 +72945,7 @@ async function deliverSessionMaintenanceWarning(params) {
72941
72945
  return;
72942
72946
  }
72943
72947
  try {
72944
- const { deliverOutboundPayloads } = await import("./deliver-CXpvGXqJ.js").then((n) => n.n);
72948
+ const { deliverOutboundPayloads } = await import("./deliver-lG9ITE8w.js").then((n) => n.n);
72945
72949
  await deliverOutboundPayloads({
72946
72950
  cfg: params.cfg,
72947
72951
  channel,
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as resolveAgentConfig } from "./agent-scope-CpEJ0B88.js";
2
+ import { n as resolveAgentConfig } from "./agent-scope-D68_xfTL.js";
3
3
 
4
4
  //#region src/agents/identity.ts
5
5
  const DEFAULT_ACK_REACTION = "👀";
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, i as buildAgentPeerSessionKey, n as DEFAULT_MAIN_KEY, p as normalizeAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { Z as shouldLogVerbose } from "./registry-DYq1AYOv.js";
4
- import { c as resolveDefaultAgentId } from "./agent-scope-CpEJ0B88.js";
5
- import { y as logDebug } from "./workspace-DscDraUb.js";
3
+ import { Z as shouldLogVerbose } from "./registry-UkL38jvt.js";
4
+ import { c as resolveDefaultAgentId } from "./agent-scope-D68_xfTL.js";
5
+ import { y as logDebug } from "./workspace-DqJ5h-ZB.js";
6
6
  import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
7
- import { t as listBindings } from "./bindings-BsHoBLIE.js";
7
+ import { t as listBindings } from "./bindings-Bat2RnAR.js";
8
8
 
9
9
  //#region src/routing/resolve-route.ts
10
10
  var resolve_route_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,4 @@
1
- import { B as sleep } from "./registry-DYq1AYOv.js";
1
+ import { B as sleep } from "./registry-UkL38jvt.js";
2
2
 
3
3
  //#region src/infra/retry.ts
4
4
  const DEFAULT_RETRY_CONFIG = {
@@ -14,8 +14,8 @@ import "./client-qUlxXXVJ.js";
14
14
  import "./call-BrRWr7Lj.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-C8UsZ8F0.js";
18
- import "./sessions-Do060W3W.js";
17
+ import "./subagent-registry-4XZvxwX0.js";
18
+ import "./sessions-BPD85pWA.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
21
21
  import "./accounts-D9ITgITj.js";
@@ -24,14 +24,14 @@ import "./logging-CFvkxgcX.js";
24
24
  import "./send-BcvVKfh2.js";
25
25
  import "./send-DnsTDCll.js";
26
26
  import "./with-timeout-BIXdW2Bg.js";
27
- import "./deliver-CiL9mQXH.js";
27
+ import "./deliver-BLt_liXS.js";
28
28
  import "./diagnostic-Ci8Xsc_Y.js";
29
29
  import "./diagnostic-session-state-CIjIGxEE.js";
30
30
  import "./accounts-D1eLj5t8.js";
31
31
  import "./send-CaUqpyyp.js";
32
32
  import "./image-ops-CUkaZz2F.js";
33
- import "./pi-embedded-helpers-jo_kKs-Z.js";
34
- import "./sandbox-Cl2r-bXv.js";
33
+ import "./pi-embedded-helpers-DSscUmkR.js";
34
+ import "./sandbox-CDxHBl3I.js";
35
35
  import "./chrome-D2ohnA09.js";
36
36
  import "./tailscale-CbbvYNVw.js";
37
37
  import "./auth-BfDMhFAj.js";
@@ -66,11 +66,11 @@ import "./ir-D-flMHhr.js";
66
66
  import "./render-e7fENCYH.js";
67
67
  import "./commands-CkrIpKCc.js";
68
68
  import "./commands-registry-CccyRhnX.js";
69
- import "./image-CJ_QZqzR.js";
69
+ import "./image-DXco5IYt.js";
70
70
  import "./tool-display-CXwOC-qw.js";
71
- import { u as installUnhandledRejectionHandler } from "./runner-BopCEjwB.js";
71
+ import { u as installUnhandledRejectionHandler } from "./runner-CSdQSvE8.js";
72
72
  import "./model-catalog-DKGSg6jF.js";
73
- import "./session-utils-Dwt6eGX6.js";
73
+ import "./session-utils-BPXkhuNM.js";
74
74
  import "./skill-commands-BSJONVkt.js";
75
75
  import "./workspace-dirs-CPNL2Acu.js";
76
76
  import "./pairing-store-NgA78L2g.js";
@@ -97,16 +97,16 @@ import "./replies-CsUBFXf6.js";
97
97
  import "./onboard-helpers-7H_XiJt-.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-DwceB1dG.js";
100
- import "./pi-tools.policy-CGVKAOoE.js";
100
+ import "./pi-tools.policy-DOVQ8dDx.js";
101
101
  import { t as ensureSymiCliOnPath } from "./path-env-Bic_wXs9.js";
102
102
  import "./catalog-buoA8ik4.js";
103
103
  import "./note-DDecZomM.js";
104
104
  import "./plugin-auto-enable-BvmQklg-.js";
105
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DG2IOSY3.js";
105
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BVoIgv-5.js";
106
106
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
107
- import { t as emitCliBanner } from "./banner-C1RFNTRm.js";
108
- import "./doctor-config-flow-DFk-NaP5.js";
109
- import { n as ensureConfigReady } from "./config-guard-DjlYIjka.js";
107
+ import { t as emitCliBanner } from "./banner-BEYICVDD.js";
108
+ import "./doctor-config-flow-C81j0-sE.js";
109
+ import { n as ensureConfigReady } from "./config-guard-CJ4iAPK5.js";
110
110
  import process$1 from "node:process";
111
111
  import { fileURLToPath } from "node:url";
112
112
 
@@ -119,7 +119,7 @@ const routeHealth = {
119
119
  const verbose = getVerboseFlag(argv, { includeDebug: true });
120
120
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
121
121
  if (timeoutMs === null) return false;
122
- const { healthCommand } = await import("./health-DvkoG4Dw.js").then((n) => n.i);
122
+ const { healthCommand } = await import("./health-7ZvWXkvm.js").then((n) => n.i);
123
123
  await healthCommand({
124
124
  json,
125
125
  timeoutMs,
@@ -139,7 +139,7 @@ const routeStatus = {
139
139
  const verbose = getVerboseFlag(argv, { includeDebug: true });
140
140
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
141
141
  if (timeoutMs === null) return false;
142
- const { statusCommand } = await import("./status-DsFAg-bK.js").then((n) => n.t);
142
+ const { statusCommand } = await import("./status-eVKjxfUO.js").then((n) => n.t);
143
143
  await statusCommand({
144
144
  json,
145
145
  deep,
@@ -159,7 +159,7 @@ const routeSessions = {
159
159
  if (store === null) return false;
160
160
  const active = getFlagValue(argv, "--active");
161
161
  if (active === null) return false;
162
- const { sessionsCommand } = await import("./sessions-DQxygr94.js").then((n) => n.n);
162
+ const { sessionsCommand } = await import("./sessions-NTd36-CO.js").then((n) => n.n);
163
163
  await sessionsCommand({
164
164
  json,
165
165
  store,
@@ -173,7 +173,7 @@ const routeAgentsList = {
173
173
  run: async (argv) => {
174
174
  const json = hasFlag(argv, "--json");
175
175
  const bindings = hasFlag(argv, "--bindings");
176
- const { agentsListCommand } = await import("./agents-DWuqUDaG.js").then((n) => n.t);
176
+ const { agentsListCommand } = await import("./agents-CKqrLbBd.js").then((n) => n.t);
177
177
  await agentsListCommand({
178
178
  json,
179
179
  bindings
@@ -244,7 +244,7 @@ const routes = [
244
244
  const pathArg = getCommandPositionals(argv)[2];
245
245
  if (!pathArg) return false;
246
246
  const json = hasFlag(argv, "--json");
247
- const { runConfigGet } = await import("./config-cli-CajteLy8.js");
247
+ const { runConfigGet } = await import("./config-cli-wcQ2PQ2b.js");
248
248
  await runConfigGet({
249
249
  path: pathArg,
250
250
  json
@@ -257,7 +257,7 @@ const routes = [
257
257
  run: async (argv) => {
258
258
  const pathArg = getCommandPositionals(argv)[2];
259
259
  if (!pathArg) return false;
260
- const { runConfigUnset } = await import("./config-cli-CajteLy8.js");
260
+ const { runConfigUnset } = await import("./config-cli-wcQ2PQ2b.js");
261
261
  await runConfigUnset({ path: pathArg });
262
262
  return true;
263
263
  }
@@ -271,7 +271,7 @@ const routes = [
271
271
  const local = hasFlag(argv, "--local");
272
272
  const json = hasFlag(argv, "--json");
273
273
  const plain = hasFlag(argv, "--plain");
274
- const { modelsListCommand } = await import("./models-BohMMqeG.js").then((n) => n.t);
274
+ const { modelsListCommand } = await import("./models-PeKQE2ct.js").then((n) => n.t);
275
275
  await modelsListCommand({
276
276
  all,
277
277
  local,
@@ -302,7 +302,7 @@ const routes = [
302
302
  const plain = hasFlag(argv, "--plain");
303
303
  const check = hasFlag(argv, "--check");
304
304
  const probe = hasFlag(argv, "--probe");
305
- const { modelsStatusCommand } = await import("./models-BohMMqeG.js").then((n) => n.t);
305
+ const { modelsStatusCommand } = await import("./models-PeKQE2ct.js").then((n) => n.t);
306
306
  await modelsStatusCommand({
307
307
  json,
308
308
  plain,
@@ -380,7 +380,7 @@ async function runCli(argv = process$1.argv) {
380
380
  assertSupportedRuntime();
381
381
  if (await tryRouteCli(normalizedArgv)) return;
382
382
  enableConsoleCapture();
383
- const { buildProgram } = await import("./program-CYzFuO3w.js");
383
+ const { buildProgram } = await import("./program-DhBZLOgJ.js");
384
384
  const program = buildProgram();
385
385
  installUnhandledRejectionHandler();
386
386
  process$1.on("uncaughtException", (error) => {
@@ -412,10 +412,10 @@ async function runCli(argv = process$1.argv) {
412
412
  const { getProgramContext } = await import("./program-context-CqzR_m-7.js").then((n) => n.n);
413
413
  const ctx = getProgramContext(program);
414
414
  if (ctx) {
415
- const { registerCoreCliByName } = await import("./command-registry-DEe4juCf.js").then((n) => n.t);
415
+ const { registerCoreCliByName } = await import("./command-registry-nSYGDoue.js").then((n) => n.t);
416
416
  await registerCoreCliByName(program, ctx, primary, parseArgv);
417
417
  }
418
- const { registerSubCliByName } = await import("./register.subclis-C_464foT.js").then((n) => n.a);
418
+ const { registerSubCliByName } = await import("./register.subclis-CnOalkYH.js").then((n) => n.a);
419
419
  await registerSubCliByName(program, primary);
420
420
  }
421
421
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -424,7 +424,7 @@ async function runCli(argv = process$1.argv) {
424
424
  primary,
425
425
  hasBuiltinPrimary
426
426
  })) {
427
- const { registerPluginCliCommands } = await import("./cli-TABOKnEJ.js");
427
+ const { registerPluginCliCommands } = await import("./cli-WAg9Zydm.js");
428
428
  const { loadConfig } = await import("./config-DXt3pc08.js").then((n) => n.t);
429
429
  registerPluginCliCommands(program, loadConfig());
430
430
  }
@@ -1,17 +1,17 @@
1
- import { J as logVerbose, Z as shouldLogVerbose } from "./registry-DYq1AYOv.js";
2
- import { _ as runExec } from "./workspace-DscDraUb.js";
3
- import { A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, et as resolveSymiAgentDir, z as requireApiKey } from "./auth-profiles-C2vj6htZ.js";
4
- import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-BkZ9HOKT.js";
5
- import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-C7CauEK8.js";
1
+ import { J as logVerbose, Z as shouldLogVerbose } from "./registry-UkL38jvt.js";
2
+ import { _ as runExec } from "./workspace-DqJ5h-ZB.js";
3
+ import { A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, et as resolveSymiAgentDir, z as requireApiKey } from "./auth-profiles-aJfgABnE.js";
4
+ import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-Dp67YMkg.js";
5
+ import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-M5agStZn.js";
6
6
  import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-C6v6m8Id.js";
8
- import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-BefM10YB.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DCB54N2j.js";
8
+ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-JP7SzVpY.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-Cj6kcyGt.js";
10
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-Se92wAN5.js";
10
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-Bh5xx9IO.js";
11
11
  import path from "node:path";
12
12
  import { constants } from "node:fs";
13
13
  import os from "node:os";
14
- import fs$1 from "node:fs/promises";
14
+ import fs from "node:fs/promises";
15
15
  import { fileURLToPath } from "node:url";
16
16
  import crypto from "node:crypto";
17
17
  import process$1 from "node:process";
@@ -693,7 +693,7 @@ var MediaAttachmentCache = class {
693
693
  const size = await this.ensureLocalStat(entry);
694
694
  if (entry.resolvedPath) {
695
695
  if (size !== void 0 && size > params.maxBytes) throw new MediaUnderstandingSkipError("maxBytes", `Attachment ${params.attachmentIndex + 1} exceeds maxBytes ${params.maxBytes}`);
696
- const buffer = await fs$1.readFile(entry.resolvedPath);
696
+ const buffer = await fs.readFile(entry.resolvedPath);
697
697
  entry.buffer = buffer;
698
698
  entry.bufferMime = entry.bufferMime ?? entry.attachment.mime ?? await detectMime({
699
699
  buffer,
@@ -763,10 +763,10 @@ var MediaAttachmentCache = class {
763
763
  prefix: "symi-media",
764
764
  extension: path.extname(bufferResult.fileName || "") || ""
765
765
  });
766
- await fs$1.writeFile(tmpPath, bufferResult.buffer);
766
+ await fs.writeFile(tmpPath, bufferResult.buffer);
767
767
  entry.tempPath = tmpPath;
768
768
  entry.tempCleanup = async () => {
769
- await fs$1.unlink(tmpPath).catch(() => {});
769
+ await fs.unlink(tmpPath).catch(() => {});
770
770
  };
771
771
  return {
772
772
  path: tmpPath,
@@ -813,12 +813,12 @@ var MediaAttachmentCache = class {
813
813
  if (entry.statSize !== void 0) return entry.statSize;
814
814
  try {
815
815
  const currentPath = entry.resolvedPath;
816
- const stat = await fs$1.stat(currentPath);
816
+ const stat = await fs.stat(currentPath);
817
817
  if (!stat.isFile()) {
818
818
  entry.resolvedPath = void 0;
819
819
  return;
820
820
  }
821
- const canonicalPath = await fs$1.realpath(currentPath).catch(() => currentPath);
821
+ const canonicalPath = await fs.realpath(currentPath).catch(() => currentPath);
822
822
  if (!isInboundPathAllowed({
823
823
  filePath: canonicalPath,
824
824
  roots: await this.getCanonicalLocalPathRoots()
@@ -840,7 +840,7 @@ var MediaAttachmentCache = class {
840
840
  if (this.canonicalLocalPathRoots) return await this.canonicalLocalPathRoots;
841
841
  this.canonicalLocalPathRoots = (async () => mergeInboundPathRoots(this.localPathRoots, await Promise.all(this.localPathRoots.map(async (root) => {
842
842
  if (root.includes("*")) return root;
843
- return await fs$1.realpath(root).catch(() => root);
843
+ return await fs.realpath(root).catch(() => root);
844
844
  }))))();
845
845
  return await this.canonicalLocalPathRoots;
846
846
  }
@@ -883,7 +883,7 @@ async function loadModelCatalog(params) {
883
883
  try {
884
884
  const cfg = params?.config ?? loadConfig();
885
885
  await ensureSymiModelsJson(cfg);
886
- await (await import("./pi-auth-json-RXOlh8ar.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
886
+ await (await import("./pi-auth-json-Q3FwtPeJ.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
887
887
  const piSdk = await importPiSdk();
888
888
  const agentDir = resolveSymiAgentDir();
889
889
  const { join } = await import("node:path");
@@ -943,7 +943,7 @@ function findModelInCatalog(catalog, provider, modelId) {
943
943
  async function fileExists(filePath) {
944
944
  if (!filePath) return false;
945
945
  try {
946
- await fs$1.stat(filePath);
946
+ await fs.stat(filePath);
947
947
  return true;
948
948
  } catch {
949
949
  return false;
@@ -1043,7 +1043,7 @@ async function resolveCliOutput(params) {
1043
1043
  const commandId = commandBase(params.command);
1044
1044
  const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
1045
1045
  if (fileOutput && await fileExists(fileOutput)) try {
1046
- const content = await fs$1.readFile(fileOutput, "utf8");
1046
+ const content = await fs.readFile(fileOutput, "utf8");
1047
1047
  if (content.trim()) return content.trim();
1048
1048
  } catch {}
1049
1049
  if (commandId === "gemini") {
@@ -1334,7 +1334,7 @@ async function runCliEntry(params) {
1334
1334
  maxBytes,
1335
1335
  timeoutMs
1336
1336
  });
1337
- const outputDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
1337
+ const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
1338
1338
  const mediaPath = pathResult.path;
1339
1339
  const outputBase = path.join(outputDir, path.parse(mediaPath).name);
1340
1340
  const templCtx = {
@@ -1368,7 +1368,7 @@ async function runCliEntry(params) {
1368
1368
  model: command
1369
1369
  };
1370
1370
  } finally {
1371
- await fs$1.rm(outputDir, {
1371
+ await fs.rm(outputDir, {
1372
1372
  recursive: true,
1373
1373
  force: true
1374
1374
  }).catch(() => {});
@@ -1412,9 +1412,9 @@ function candidateBinaryNames(name) {
1412
1412
  }
1413
1413
  async function isExecutable(filePath) {
1414
1414
  try {
1415
- if (!(await fs$1.stat(filePath)).isFile()) return false;
1415
+ if (!(await fs.stat(filePath)).isFile()) return false;
1416
1416
  if (process.platform === "win32") return true;
1417
- await fs$1.access(filePath, constants.X_OK);
1417
+ await fs.access(filePath, constants.X_OK);
1418
1418
  return true;
1419
1419
  } catch {
1420
1420
  return false;
@@ -9,7 +9,7 @@ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-L2NTusph.js";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-Dp7VnmeK.js";
11
11
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-CpUKTvDW.js";
12
- import { t as describeImageWithModel } from "./image-CJ_QZqzR.js";
12
+ import { t as describeImageWithModel } from "./image-DXco5IYt.js";
13
13
  import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DKGSg6jF.js";
14
14
  import process$1 from "node:process";
15
15
  import os from "node:os";
@@ -3,7 +3,7 @@ import { n as runExec } from "./exec-CWkblSrI.js";
3
3
  import { E as normalizeGoogleModelId, K as requireApiKey, l as normalizeProviderId, q as resolveApiKeyForProvider } from "./model-selection-C-eIBa0H.js";
4
4
  import { _ as isInboundPathAllowed, g as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, v as mergeInboundPathRoots, y as resolveIMessageAttachmentRoots } from "./config-PXAJCHa5.js";
5
5
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
6
- import { t as describeImageWithModel } from "./image-C2IvljWU.js";
6
+ import { t as describeImageWithModel } from "./image-D_qN_IxA.js";
7
7
  import { r as formatUncaughtError, t as extractErrorCode } from "./errors-BF3TeRH2.js";
8
8
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-1OJMSAUX.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-Db3da8yR.js";
@@ -12,7 +12,7 @@ import { r as isLoopbackHost } from "./ws-C7EXRv8z.js";
12
12
  import { a as resolveProfile, m as resolveBrowserControlAuth, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-C2gfYdh8.js";
13
13
  import { d as resolveSandboxInputPath, f as resolveSandboxPath, g as sanitizeEnvVars, o as syncSkillsToWorkspace } from "./skills-BG8FpqDp.js";
14
14
  import { t as registerBrowserRoutes } from "./routes-2b4mQUhe.js";
15
- import { B as resolveAgentMainSessionKey, J as acquireSessionWriteLock, z as canonicalizeMainSessionAlias } from "./sessions-vYQs1OzE.js";
15
+ import { B as resolveAgentMainSessionKey, J as acquireSessionWriteLock, z as canonicalizeMainSessionAlias } from "./sessions-BeYHj0gr.js";
16
16
  import { existsSync, realpathSync } from "node:fs";
17
17
  import path, { posix } from "node:path";
18
18
  import fs$1 from "node:fs/promises";
@@ -6,7 +6,7 @@ import { d as resolveSandboxInputPath, f as resolveSandboxPath, g as sanitizeEnv
6
6
  import { i as loadConfig } from "./config-DXt3pc08.js";
7
7
  import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
8
8
  import { n as isLoopbackHost } from "./net-DZ5Ayk-W.js";
9
- import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, V as acquireSessionWriteLock } from "./sessions-Do060W3W.js";
9
+ import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, V as acquireSessionWriteLock } from "./sessions-BPD85pWA.js";
10
10
  import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, O as DEFAULT_SYMI_BROWSER_COLOR } from "./chrome-D2ohnA09.js";
11
11
  import { a as resolveProfile, m as resolveBrowserControlAuth, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-BBaojT7U.js";
12
12
  import { t as registerBrowserRoutes } from "./routes-C8PNEZ8b.js";