@symerian/symi 2.6.10 → 2.6.11

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 (215) 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/{acp-cli-DT0rEuUE.js → acp-cli-Cu4icbJT.js} +2 -2
  5. package/dist/{active-listener-CfHHV2SU.js → active-listener-DFUTUjxt.js} +1 -1
  6. package/dist/{agent-scope-CpEJ0B88.js → agent-scope-D68_xfTL.js} +3 -3
  7. package/dist/{agents-DDqXWXbP.js → agents-DRRBdgqz.js} +4 -4
  8. package/dist/{agents.config-CEt-ES9z.js → agents.config-BO1N5Z_6.js} +1 -1
  9. package/dist/{agents.config-Bu_N-bn_.js → agents.config-GCucbcBy.js} +1 -1
  10. package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
  11. package/dist/{audio-preflight-BcSzL_0I.js → audio-preflight-CWnxkaac.js} +8 -8
  12. package/dist/{audio-preflight-BVaaZWkg.js → audio-preflight-CjV36MUe.js} +29 -29
  13. package/dist/{audit-BIE9JAxf.js → audit-CrITRV6w.js} +5 -5
  14. package/dist/{auth-choice-Bmd-rbuU.js → auth-choice-C1sul2-I.js} +1 -1
  15. package/dist/{auth-choice-Djy_YmfW.js → auth-choice-i7tTgbDd.js} +4 -4
  16. package/dist/{auth-profiles-DdK1Hxaa.js → auth-profiles-Bl9aU7fc.js} +17 -17
  17. package/dist/{banner-BNkhjU8E.js → banner-VbhMdl-b.js} +1 -1
  18. package/dist/{bindings-BsHoBLIE.js → bindings-Bat2RnAR.js} +2 -2
  19. package/dist/{browser-cli-nNQ60Koh.js → browser-cli-BG4qPxpM.js} +3 -3
  20. package/dist/build-info.json +3 -3
  21. package/dist/bundled/boot-md/handler.js +53 -53
  22. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  23. package/dist/bundled/command-logger/handler.js +1 -1
  24. package/dist/bundled/session-memory/handler.js +53 -53
  25. package/dist/{call-7djMRPgl.js → call-CJaS1iRF.js} +1 -1
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{channel-activity-B6G1jnQT.js → channel-activity-DK0AV-r9.js} +1 -1
  28. package/dist/{channel-options-NLrg-j_d.js → channel-options-CsXOvqAc.js} +1 -1
  29. package/dist/{channel-options-D8ByM6g0.js → channel-options-Esf0QB4M.js} +1 -1
  30. package/dist/{channel-web-BUQWBln9.js → channel-web-DDC84nZg.js} +2 -2
  31. package/dist/{channels-cli-qBgicVqp.js → channels-cli-C989dAD4.js} +19 -19
  32. package/dist/{channels-cli-C5DWcDDG.js → channels-cli-DomEe8uI.js} +4 -4
  33. package/dist/{chrome-CDJYxX5a.js → chrome-D2SKJnR7.js} +7 -7
  34. package/dist/{chrome-DkaXoP36.js → chrome-DRHvMBbb.js} +14 -14
  35. package/dist/{chrome-DBKZkx0x.js → chrome-DtPkPq9T.js} +7 -7
  36. package/dist/{chunk-09egQapi.js → chunk-DR8ukp6r.js} +1 -1
  37. package/dist/cli/daemon-cli.js +1 -1
  38. package/dist/{cli-Bx78WeyO.js → cli-CPRCkEdK.js} +1 -1
  39. package/dist/{cli-UHMMUbWL.js → cli-RXswESw1.js} +16 -16
  40. package/dist/{client-Z6SFrwob.js → client-CQSyCS4M.js} +3 -3
  41. package/dist/{command-registry-BSGsNY71.js → command-registry-DwBw5-nh.js} +9 -9
  42. package/dist/{commands-registry-Bfc7Uz0o.js → commands-registry-DIakZUZb.js} +4 -4
  43. package/dist/{completion-cli-B915TqN4.js → completion-cli-C43sjF75.js} +2 -2
  44. package/dist/{completion-cli-CajQzz5J.js → completion-cli-Cwx8MtF9.js} +1 -1
  45. package/dist/{config-5SdHIcHU.js → config-CvmE3Yx1.js} +12 -12
  46. package/dist/{config-cli-CeErUiHR.js → config-cli-CkkIU7AY.js} +1 -1
  47. package/dist/{config-cli-BM9FX48b.js → config-cli-DG0xBZhs.js} +1 -1
  48. package/dist/{configure-DggNPSKd.js → configure-DlVtomYJ.js} +3 -3
  49. package/dist/{configure-CbiNzEIk.js → configure-nxnXIUVI.js} +8 -8
  50. package/dist/{control-service-DdeFa44u.js → control-service-Bz7rxLWq.js} +3 -3
  51. package/dist/{cron-cli-C_1RndRW.js → cron-cli-DBIlCvp3.js} +3 -3
  52. package/dist/{daemon-cli-C2fkpr13.js → daemon-cli-DscwlsKW.js} +2 -2
  53. package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
  54. package/dist/{deliver-Bu624MY6.js → deliver-CWR_98sK.js} +1 -1
  55. package/dist/{deliver-C46-vyqg.js → deliver-UMgfGLxW.js} +20 -20
  56. package/dist/{devices-cli-ERMql8Dq.js → devices-cli-Dds-25Ve.js} +2 -2
  57. package/dist/{diagnostic-rPhsBoZz.js → diagnostic-spWOtH_g.js} +1 -1
  58. package/dist/{doctor-completion-BP_qD5Bt.js → doctor-completion-CWr51Q4O.js} +1 -1
  59. package/dist/{doctor-completion-BfLDfA98.js → doctor-completion-Dd5P0i9L.js} +1 -1
  60. package/dist/entry.js +1 -1
  61. package/dist/{env-BDXYbTKj.js → env-xmBFQPBP.js} +1 -1
  62. package/dist/{exec-approvals-cli-BEU-xJFu.js → exec-approvals-cli-BliRl8VB.js} +4 -4
  63. package/dist/extensionAPI.js +6 -6
  64. package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CV0YkjoY.js} +2 -2
  65. package/dist/{gateway-cli-LmMxDk7B.js → gateway-cli-B1h1FhD-.js} +28 -28
  66. package/dist/{gateway-cli-qMBjCmLH.js → gateway-cli-BBJjWKyu.js} +9 -9
  67. package/dist/{gateway-rpc-BWZzo3L9.js → gateway-rpc-BxkKeCZ0.js} +1 -1
  68. package/dist/{gemini-auth-Dy12ZAH3.js → gemini-auth-C6Z-2T42.js} +1 -1
  69. package/dist/{github-copilot-token-cCYzSU9h.js → github-copilot-token-B8B2pmph.js} +7 -7
  70. package/dist/{glass-ui-ws-CXpW0epd.js → glass-ui-ws-Bk01KSVI.js} +7 -7
  71. package/dist/{glass-ui-ws-DbV46Nrg.js → glass-ui-ws-UewDPjVh.js} +23 -23
  72. package/dist/{health-BctmvDJ0.js → health-BiipZUOd.js} +1 -1
  73. package/dist/{health-pukFTT09.js → health-Dzi6letr.js} +3 -3
  74. package/dist/{hooks-cli-DcQN6UeT.js → hooks-cli-BdelOAPH.js} +2 -2
  75. package/dist/{hooks-cli-BMQOn6QU.js → hooks-cli-DxRXaSHR.js} +17 -17
  76. package/dist/{image-CuzFLQWC.js → image-CK4oZUJJ.js} +4 -4
  77. package/dist/{image-CtCUVPCD.js → image-D9uvDTrc.js} +1 -1
  78. package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
  79. package/dist/{image-ops-C7CauEK8.js → image-ops-M5agStZn.js} +16 -16
  80. package/dist/index.js +21 -21
  81. package/dist/{ir-CTiz95Vb.js → ir-B-XXcYFe.js} +4 -4
  82. package/dist/llm-slug-generator.js +53 -53
  83. package/dist/{local-roots-DhZz0Ybs.js → local-roots-CdXg5-Cx.js} +5 -5
  84. package/dist/{login-ul8zaw_S.js → login-BHUrERYo.js} +7 -7
  85. package/dist/{login-qr-AP9agO-i.js → login-qr-BKIOHn1V.js} +12 -12
  86. package/dist/{logs-cli-V5qUbmVy.js → logs-cli-xOzIPrHm.js} +3 -3
  87. package/dist/{manager-PprhCvO_.js → manager-DW3JqFpY.js} +22 -22
  88. package/dist/{manifest-registry-yb7sAlu4.js → manifest-registry-0J48biqr.js} +19 -19
  89. package/dist/{markdown-tables-C-BmIap8.js → markdown-tables-tW9bGjLM.js} +1 -1
  90. package/dist/{message-channel-OlFBYAw8.js → message-channel-DwDSKGn4.js} +1 -1
  91. package/dist/{model-catalog-Da6fXK5K.js → model-catalog-DvBJ8pMD.js} +1 -1
  92. package/dist/{model-picker-B6QoK7pe.js → model-picker-Ddo3jHe-.js} +1 -1
  93. package/dist/{models-yF2XRbPQ.js → models-DUrbBEOU.js} +2 -2
  94. package/dist/{models-cli-DAKvip7R.js → models-cli-CF0KZtK4.js} +18 -18
  95. package/dist/{models-cli-DHOMkJmd.js → models-cli-D5KE-evn.js} +3 -3
  96. package/dist/{node-cli-r5-MNz9_.js → node-cli-C_G-Q3h-.js} +6 -6
  97. package/dist/{nodes-cli-DQed-Snk.js → nodes-cli-BcnuJajV.js} +3 -3
  98. package/dist/{onboard-BafMA6T9.js → onboard-Bizq_LAS.js} +5 -5
  99. package/dist/{onboard-BhqTlAS0.js → onboard-DK-oOqRl.js} +2 -2
  100. package/dist/{onboard-channels-CHe-XSLv.js → onboard-channels-B6yLPqH5.js} +1 -1
  101. package/dist/{onboard-channels-CZB5bhSJ.js → onboard-channels-DSZzjOo1.js} +1 -1
  102. package/dist/{onboard-custom-BduhuM_4.js → onboard-custom-C7O-zfQ1.js} +1 -1
  103. package/dist/{onboard-helpers-CiLCJJVQ.js → onboard-helpers-ZmZYzlq3.js} +1 -1
  104. package/dist/{onboard-remote-C1nRkyWo.js → onboard-remote-zUjD7UtM.js} +1 -1
  105. package/dist/{onboard-skills-9GLwG44a.js → onboard-skills-BB0YhUmF.js} +1 -1
  106. package/dist/{onboarding-BXVYtRYj.js → onboarding-CkWWIQA7.js} +3 -3
  107. package/dist/{onboarding-D5yCx7Yb.js → onboarding-DGSCNnGY.js} +9 -9
  108. package/dist/{onboarding.finalize-DF5Zx0Zc.js → onboarding.finalize-BMGwhjIR.js} +6 -6
  109. package/dist/{onboarding.finalize-BX4DUaoK.js → onboarding.finalize-Dj0noUgo.js} +21 -21
  110. package/dist/{onboarding.gateway-config-TSh7IejG.js → onboarding.gateway-config-CJUgDC6Y.js} +3 -3
  111. package/dist/{outbound-CtMCmwxR.js → outbound-CIVsLpJK.js} +7 -7
  112. package/dist/{outbound-attachment-DJldbweZ.js → outbound-attachment-CHcmlip8.js} +2 -2
  113. package/dist/paths-CYmyCDsE.js +212 -0
  114. package/dist/{paths-CbQV9WEg.js → paths-DEuVuViW.js} +1 -1
  115. package/dist/{pi-auth-json-Bk8ERadJ.js → pi-auth-json-BYuCWAs0.js} +8 -8
  116. package/dist/{pi-auth-json-Tqz9D47K.js → pi-auth-json-DayrlDg_.js} +1 -1
  117. package/dist/{pi-embedded-DV6dp0BP.js → pi-embedded-DLma-HLn.js} +57 -16
  118. package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
  119. package/dist/{pi-embedded-helpers-CfqDGQ9J.js → pi-embedded-helpers-BU8EZuwx.js} +73 -73
  120. package/dist/{pi-embedded-helpers-D-dUrQOR.js → pi-embedded-helpers-CNPyv_ax.js} +1 -1
  121. package/dist/{pi-tools.policy-CgGK6Jq8.js → pi-tools.policy-CIDBbw6x.js} +1 -1
  122. package/dist/{plugin-registry-BSmy8tIV.js → plugin-registry-BcgpVdtC.js} +1 -1
  123. package/dist/{plugin-registry-BwnzEvIz.js → plugin-registry-D8PAS3Sx.js} +1 -1
  124. package/dist/plugin-sdk/{channel-web-BdY2z7lg.js → channel-web-DgNOPxkV.js} +1 -1
  125. package/dist/plugin-sdk/index.js +2 -2
  126. package/dist/plugin-sdk/{reply-BvxntA3R.js → reply-DJN8Xcq2.js} +43 -2
  127. package/dist/plugin-sdk/{web-CorFnJCI.js → web-HkDBSFef.js} +2 -2
  128. package/dist/{plugins-BzmbgY7s.js → plugins-Bkr5ZdYs.js} +9 -9
  129. package/dist/{plugins-cli-BMmiYArH.js → plugins-cli-B_ln22KG.js} +17 -17
  130. package/dist/{plugins-cli-CrN718uZ.js → plugins-cli-Bcmq1fs1.js} +2 -2
  131. package/dist/{program-NGbjPxJh.js → program-C_rxRb1M.js} +7 -7
  132. package/dist/{program-context-BqxG0w61.js → program-context-BqH8IVSK.js} +30 -30
  133. package/dist/{prompt-select-styled-B7SzTPf7.js → prompt-select-styled-D8WAeDQY.js} +8 -8
  134. package/dist/{prompt-select-styled-B1LZVYl0.js → prompt-select-styled-DMRbQO0q.js} +4 -4
  135. package/dist/{provider-auth-helpers--A-4LKUl.js → provider-auth-helpers-DiuVmtmQ.js} +1 -1
  136. package/dist/{provider-auth-helpers-CNEhLjMl.js → provider-auth-helpers-DstpUAya.js} +1 -1
  137. package/dist/{push-apns-DgT_gz_P.js → push-apns-DKU4DgbI.js} +1 -1
  138. package/dist/{push-apns-Cem8OlK7.js → push-apns-be2xWY22.js} +1 -1
  139. package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
  140. package/dist/{pw-ai-m0mj2KWK.js → pw-ai-BTgmcNVp.js} +11 -11
  141. package/dist/{pw-ai-CC0xm0TY.js → pw-ai-DqL87js3.js} +1 -1
  142. package/dist/{qmd-manager-iDLSiI4Z.js → qmd-manager-BKu9rOuB.js} +7 -7
  143. package/dist/{register.agent-vP7gkHzk.js → register.agent-Dcd_oFsG.js} +6 -6
  144. package/dist/{register.agent-DT0doE92.js → register.agent-k7WxtPOd.js} +21 -21
  145. package/dist/{register.configure-BnkkCig3.js → register.configure-BOgCp-h4.js} +25 -25
  146. package/dist/{register.configure-B_W1y_ag.js → register.configure-DMHVPA-T.js} +6 -6
  147. package/dist/{register.maintenance-Br5q9f-j.js → register.maintenance-BdBlQQ6G.js} +8 -8
  148. package/dist/{register.maintenance-C0akYVa2.js → register.maintenance-Bsbgpe-Z.js} +22 -22
  149. package/dist/{register.message-mCGVBJsU.js → register.message-BE0gDUQZ.js} +17 -17
  150. package/dist/{register.message-CRaEakG_.js → register.message-DAyubW1M.js} +2 -2
  151. package/dist/{register.onboard-BvsYOovb.js → register.onboard-CTKa4O9W.js} +21 -21
  152. package/dist/{register.onboard-CV_3MiHm.js → register.onboard-CqavyaNa.js} +4 -4
  153. package/dist/{register.setup-BQqw49hm.js → register.setup-BO3CD8Pz.js} +21 -21
  154. package/dist/{register.setup-DFcMhPAd.js → register.setup-DpkI2F6r.js} +4 -4
  155. package/dist/{register.status-health-sessions-DlgKRa9S.js → register.status-health-sessions-C5Qa-DmU.js} +3 -3
  156. package/dist/{register.status-health-sessions-SAm9yGnr.js → register.status-health-sessions-ClDUpT3j.js} +19 -19
  157. package/dist/{register.subclis-CdANuuHY.js → register.subclis-Bvil7KuO.js} +9 -9
  158. package/dist/{registry-DYq1AYOv.js → registry-UkL38jvt.js} +17 -17
  159. package/dist/{replies-LSmuwOhA.js → replies-mfnbLu2p.js} +3 -3
  160. package/dist/{reply-CiPQDsZl.js → reply-4ilKYVzu.js} +64 -23
  161. package/dist/{reply-prefix-DpqZu44Z.js → reply-prefix-DkGsdyBm.js} +1 -1
  162. package/dist/{resolve-route-C4_I4GFI.js → resolve-route-q8AFnU5c.js} +4 -4
  163. package/dist/{retry-BBVXkKBV.js → retry-CqMeDhyp.js} +1 -1
  164. package/dist/{routes-BO8eMYxn.js → routes-Ba9CUQ8M.js} +2 -2
  165. package/dist/{rpc-BcyzUwtC.js → rpc-BfhojW8g.js} +1 -1
  166. package/dist/{run-main-z8u07ybv.js → run-main-D1n_tgGX.js} +14 -14
  167. package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
  168. package/dist/{runner-CU9l0uJh.js → runner-CKYly94z.js} +22 -22
  169. package/dist/{runner-DxdRmWfW.js → runner-CUglpiFP.js} +2 -2
  170. package/dist/{sandbox-B7qoYkRl.js → sandbox-C-T6hOMv.js} +3 -3
  171. package/dist/{sandbox-cli-C-hbJJWM.js → sandbox-cli-BllVdQzR.js} +4 -4
  172. package/dist/{security-cli-CNzBZn7V.js → security-cli-BFLtWWHy.js} +8 -8
  173. package/dist/{send-DYj_o4_F.js → send-B7z8CDbr.js} +18 -18
  174. package/dist/{send-CQAKg_12.js → send-Cd81AY_Z.js} +7 -7
  175. package/dist/{send-CvhXrdgS.js → send-D3zDmQim.js} +10 -10
  176. package/dist/{send-DAN9hA5h.js → send-XRUYukww.js} +6 -6
  177. package/dist/{send-CVMyYPQw.js → send-qItpAHcI.js} +6 -6
  178. package/dist/{server-context-B-ra1emS.js → server-context-CEpFjqSk.js} +4 -4
  179. package/dist/{server-methods-Dwsrsy7D.js → server-methods-BRdl4pcP.js} +7 -7
  180. package/dist/{server-methods-D9jBWl7O.js → server-methods-VC0ahxUh.js} +14 -14
  181. package/dist/{server-node-events-9T-Sm9Q4.js → server-node-events-Bq2fr8Z3.js} +17 -17
  182. package/dist/{server-node-events-CUKIb7Xq.js → server-node-events-Y5xFGvsj.js} +2 -2
  183. package/dist/{session-DSU1vxxi.js → session-Dh2wWQkD.js} +8 -8
  184. package/dist/{skill-commands-DcVwOafC.js → skill-commands-B_f8uGi7.js} +16 -16
  185. package/dist/{skills-Bs0AW1g3.js → skills-CGHRETGF.js} +24 -24
  186. package/dist/{sqlite-D_mz1_-y.js → sqlite-Bv87EXeg.js} +16 -16
  187. package/dist/{status-DPk2qV91.js → status-BxNHXm7T.js} +1 -1
  188. package/dist/{status-Dqm_DV3z.js → status-CRCD2RpZ.js} +2 -2
  189. package/dist/{status-CB6N6XaA.js → status-DNJBoKuu.js} +1 -1
  190. package/dist/{status-UWWMuety.js → status-DOCg6R55.js} +5 -5
  191. package/dist/{store-01F_JM7O.js → store-Ea3zM6xK.js} +6 -6
  192. package/dist/{subagent-registry-DTIudfq4.js → subagent-registry-7wPEZQKK.js} +43 -2
  193. package/dist/{subsystem-BjyjJF-d.js → subsystem-DN75fnEF.js} +1 -1
  194. package/dist/{system-cli-_0h_FSPB.js → system-cli-UMsMEurS.js} +3 -3
  195. package/dist/{tables-qMwbq29u.js → tables-BX7_aBvN.js} +1 -1
  196. package/dist/{target-errors-Bbr9rlzN.js → target-errors-7KhTCTdS.js} +2 -2
  197. package/dist/{thinking-BprCy23Z.js → thinking-C9-JAUzD.js} +5 -5
  198. package/dist/{tokens-Bux9Y_xD.js → tokens-BZGy4v--.js} +1 -1
  199. package/dist/{tool-images-SqqWIT22.js → tool-images-B1qVCntj.js} +2 -2
  200. package/dist/{tool-loop-detection-DR_rrIA1.js → tool-loop-detection-C8FBZVVx.js} +3 -3
  201. package/dist/{tui-D0s_9S8b.js → tui-CriznorL.js} +3 -3
  202. package/dist/{tui-cli-gm9fv3M8.js → tui-cli-CSIdfCTR.js} +8 -8
  203. package/dist/{unified-runner-DdeRGc1w.js → unified-runner-quomT1T-.js} +261 -220
  204. package/dist/{update-cli-C55vGnoj.js → update-cli-CcyCWvCB.js} +8 -8
  205. package/dist/{update-cli-D8jX4yKe.js → update-cli-FOE23Lo4.js} +23 -23
  206. package/dist/{update-runner-B0ORHPYT.js → update-runner-CJg-OANA.js} +1 -1
  207. package/dist/{update-runner-CGsqW9Gu.js → update-runner-Dcjlf0aY.js} +1 -1
  208. package/dist/{web-DsGfc1GN.js → web-BTmqdXgt.js} +17 -17
  209. package/dist/{web-CRFt1vNo.js → web-CuNZExQK.js} +1 -1
  210. package/dist/{web-BC4kDUZw.js → web-DPBfrIzo.js} +6 -6
  211. package/dist/{web-nKQzj7wJ.js → web-DcHxbz2H.js} +57 -57
  212. package/dist/{whatsapp-actions-BIeSWsCF.js → whatsapp-actions-SXenaJIn.js} +23 -23
  213. package/dist/{with-timeout-BFdGltxb.js → with-timeout-gmK6RciS.js} +1 -1
  214. package/dist/{workspace-DscDraUb.js → workspace-DqJ5h-ZB.js} +27 -27
  215. package/package.json +1 -1
@@ -21,14 +21,14 @@ 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-DxdRmWfW.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-CtCUVPCD.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-CUglpiFP.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-D9uvDTrc.js";
26
26
  import { t as ensureSymiModelsJson } from "./models-config-qyOXrOli.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-D-dUrQOR.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-B7qoYkRl.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DBKZkx0x.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-B-ra1emS.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-CNPyv_ax.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-C-T6hOMv.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DtPkPq9T.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CEpFjqSk.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-6jdJQ5ZL.js";
33
33
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
34
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
@@ -51,10 +51,10 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
52
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
53
  import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-Da6fXK5K.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DvBJ8pMD.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
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-BFdGltxb.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-Bu624MY6.js";
56
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-gmK6RciS.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-CWR_98sK.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-DjBRPfu9.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-Cutb0ZDY.js";
@@ -69,8 +69,8 @@ import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
69
69
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
70
70
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
71
71
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BT0-zzs3.js";
72
- import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-Z6SFrwob.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-7djMRPgl.js";
72
+ import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-CQSyCS4M.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-CJaS1iRF.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
75
75
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
@@ -85,7 +85,7 @@ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliv
85
85
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
86
86
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-UxUgrslM.js";
87
87
  import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-DWYkPSUs.js";
88
- import { r as detectBinary } from "./onboard-helpers-CiLCJJVQ.js";
88
+ import { r as detectBinary } from "./onboard-helpers-ZmZYzlq3.js";
89
89
  import { t as resolvePairingIdLabel } from "./pairing-labels-2S6x2UoV.js";
90
90
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BzKEDn0q.js";
91
91
  import { t as getActiveWebListener } from "./active-listener-kvXhlgwu.js";
@@ -93,8 +93,8 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
93
93
  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-VBGXKdLk.js";
94
94
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CN8o4Vi3.js";
95
95
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BiwOFDEK.js";
96
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-CgGK6Jq8.js";
97
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DdeFa44u.js";
96
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-CIDBbw6x.js";
97
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Bz7rxLWq.js";
98
98
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BUClb97_.js";
99
99
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-C8_BLnaW.js";
100
100
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DuWs0Aak.js";
@@ -113,7 +113,7 @@ import { complete, completeSimple, createAssistantMessageEventStream, streamSimp
113
113
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
114
114
  import { createServer } from "node:http";
115
115
  import { ProxyAgent, fetch as fetch$1 } from "undici";
116
- import WebSocket$1 from "ws";
116
+ import WebSocket from "ws";
117
117
  import { Buffer as Buffer$1 } from "node:buffer";
118
118
  import { EdgeTTS } from "node-edge-tts";
119
119
  import { createJiti } from "jiti";
@@ -10415,7 +10415,7 @@ async function routeReply(params) {
10415
10415
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10416
10416
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10417
10417
  try {
10418
- const { deliverOutboundPayloads } = await import("./deliver-Bu624MY6.js").then((n) => n.n);
10418
+ const { deliverOutboundPayloads } = await import("./deliver-CWR_98sK.js").then((n) => n.n);
10419
10419
  return {
10420
10420
  ok: true,
10421
10421
  messageId: (await deliverOutboundPayloads({
@@ -12965,7 +12965,7 @@ async function describeStickerImage(params) {
12965
12965
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12966
12966
  try {
12967
12967
  const buffer = await fs$1.readFile(imagePath);
12968
- const { describeImageWithModel } = await import("./image-CtCUVPCD.js").then((n) => n.n);
12968
+ const { describeImageWithModel } = await import("./image-D9uvDTrc.js").then((n) => n.n);
12969
12969
  return (await describeImageWithModel({
12970
12970
  buffer,
12971
12971
  fileName: "sticker.webp",
@@ -15604,7 +15604,7 @@ async function preflightDiscordMessage(params) {
15604
15604
  let preflightTranscript;
15605
15605
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15606
15606
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15607
- const { transcribeFirstAudio } = await import("./audio-preflight-BcSzL_0I.js");
15607
+ const { transcribeFirstAudio } = await import("./audio-preflight-CWnxkaac.js");
15608
15608
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15609
15609
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15610
15610
  ctx: {
@@ -25536,15 +25536,56 @@ function sanitizeParams(params) {
25536
25536
  };
25537
25537
  }
25538
25538
  /**
25539
+ * Build a usage example string from a tool's JSON schema for helpful error messages.
25540
+ * Returns something like: web_search({ query: "<search terms>" })
25541
+ */
25542
+ function buildToolUsageExample(toolName, schema) {
25543
+ const props = schema?.properties;
25544
+ if (!props || typeof props !== "object") return `${toolName}({ ... })`;
25545
+ return `${toolName}({ ${Object.entries(props).slice(0, 4).map(([key, def]) => {
25546
+ const typeDef = def;
25547
+ if (Array.isArray(typeDef?.enum)) return `${key}: "${typeDef.enum[0]}"`;
25548
+ if (typeDef?.type === "string") return `${key}: "<${typeof typeDef.description === "string" ? typeDef.description.slice(0, 30) : key}>"`;
25549
+ return `${key}: ...`;
25550
+ }).join(", ")} })`;
25551
+ }
25552
+ /**
25553
+ * Extract required fields from a tool's JSON schema.
25554
+ */
25555
+ function getRequiredFields(schema) {
25556
+ const required = schema?.required;
25557
+ return Array.isArray(required) ? required.filter((r) => typeof r === "string") : [];
25558
+ }
25559
+ /**
25560
+ * Create a relaxed copy of a tool schema with required fields removed.
25561
+ * This allows args with missing fields to pass pi-agent-core's schema
25562
+ * validation, reaching our execute() wrapper where we can return a
25563
+ * helpful error message with a usage example.
25564
+ */
25565
+ function relaxSchema(schema) {
25566
+ if (!schema || typeof schema !== "object") return schema;
25567
+ const copy = { ...schema };
25568
+ delete copy.required;
25569
+ return copy;
25570
+ }
25571
+ /**
25539
25572
  * Wrap a single tool with universal argument sanitization.
25540
25573
  */
25541
25574
  function wrapToolWithArgValidation(tool) {
25542
25575
  const toolName = (tool.name ?? "").toLowerCase().trim();
25543
25576
  const isExecTool = EXEC_TOOL_NAMES.has(toolName);
25577
+ const originalRequired = getRequiredFields(tool.parameters);
25578
+ const usageExample = buildToolUsageExample(toolName, tool.parameters);
25544
25579
  const originalExecute = tool.execute;
25545
25580
  return {
25546
25581
  ...tool,
25582
+ parameters: relaxSchema(tool.parameters),
25547
25583
  execute(toolCallId, params, ...rest) {
25584
+ const missingFields = originalRequired.filter((field) => params[field] === void 0 || params[field] === null);
25585
+ if (missingFields.length > 0) {
25586
+ log$3.warn(`[validate] ${toolName} missing required fields: ${missingFields.join(", ")}`);
25587
+ return Promise.resolve({ output: `Error: Missing required argument${missingFields.length > 1 ? "s" : ""}: ${missingFields.join(", ")}. Please try again with all required arguments.\nExample: ${usageExample}` });
25588
+ }
25548
25589
  const { cleaned, changed } = sanitizeParams(params);
25549
25590
  if (changed) log$3.debug(`[validate] sanitized args for ${toolName}: ${Object.keys(params).filter((k) => cleaned[k] !== params[k]).join(",")}`);
25550
25591
  const effectiveParams = changed ? cleaned : params;
@@ -31403,7 +31444,7 @@ async function runAgentTurn(params) {
31403
31444
  function createDefaultDeps() {
31404
31445
  return {
31405
31446
  sendMessageWhatsApp: async (...args) => {
31406
- const { sendMessageWhatsApp } = await import("./web-DsGfc1GN.js");
31447
+ const { sendMessageWhatsApp } = await import("./web-BTmqdXgt.js");
31407
31448
  return await sendMessageWhatsApp(...args);
31408
31449
  },
31409
31450
  sendMessageTelegram: async (...args) => {
@@ -34610,7 +34651,7 @@ function createDiscordGatewayPlugin(params) {
34610
34651
  super(options);
34611
34652
  }
34612
34653
  createWebSocket(url) {
34613
- return new WebSocket$1(url, { agent });
34654
+ return new WebSocket(url, { agent });
34614
34655
  }
34615
34656
  }
34616
34657
  return new ProxyGatewayPlugin();
@@ -47668,7 +47709,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
47668
47709
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
47669
47710
  let preflightTranscript;
47670
47711
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
47671
- const { transcribeFirstAudio } = await import("./audio-preflight-BcSzL_0I.js");
47712
+ const { transcribeFirstAudio } = await import("./audio-preflight-CWnxkaac.js");
47672
47713
  preflightTranscript = await transcribeFirstAudio({
47673
47714
  ctx: {
47674
47715
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -49834,7 +49875,7 @@ function loadWebLoginQr() {
49834
49875
  return webLoginQrPromise;
49835
49876
  }
49836
49877
  function loadWebChannel() {
49837
- webChannelPromise ??= import("./web-DsGfc1GN.js");
49878
+ webChannelPromise ??= import("./web-BTmqdXgt.js");
49838
49879
  return webChannelPromise;
49839
49880
  }
49840
49881
  function loadWhatsAppActions() {
@@ -72535,7 +72576,7 @@ async function deliverSessionMaintenanceWarning(params) {
72535
72576
  return;
72536
72577
  }
72537
72578
  try {
72538
- const { deliverOutboundPayloads } = await import("./deliver-Bu624MY6.js").then((n) => n.n);
72579
+ const { deliverOutboundPayloads } = await import("./deliver-CWR_98sK.js").then((n) => n.n);
72539
72580
  await deliverOutboundPayloads({
72540
72581
  cfg: params.cfg,
72541
72582
  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 = {
@@ -1,7 +1,7 @@
1
1
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
2
2
  import { i as loadConfig, l as writeConfigFile } from "./config-CHwyw6l5.js";
3
- import { C as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, a as resolveSymiUserDataDir, c as captureScreenshot, f as snapshotAria, h as withBrowserNavigationPolicy, s as resolveBrowserExecutableForPlatform, w as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS } from "./chrome-DBKZkx0x.js";
4
- import { a as resolveProfile, c as getUsedColors, d as deriveDefaultBrowserCdpPortRange, f as getPwAiModule$1, l as getUsedPorts, o as allocateCdpPort, r as parseHttpUrl, s as allocateColor, u as isValidProfileName } from "./server-context-B-ra1emS.js";
3
+ import { C as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, a as resolveSymiUserDataDir, c as captureScreenshot, f as snapshotAria, h as withBrowserNavigationPolicy, s as resolveBrowserExecutableForPlatform, w as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS } from "./chrome-DtPkPq9T.js";
4
+ import { a as resolveProfile, c as getUsedColors, d as deriveDefaultBrowserCdpPortRange, f as getPwAiModule$1, l as getUsedPorts, o as allocateCdpPort, r as parseHttpUrl, s as allocateColor, u as isValidProfileName } from "./server-context-CEpFjqSk.js";
5
5
  import { a as resolvePathWithinRoot, i as resolveExistingPathsWithinRoot, n as DEFAULT_TRACE_DIR, r as DEFAULT_UPLOAD_DIR, t as DEFAULT_DOWNLOAD_DIR } from "./paths-BBm9fwuG.js";
6
6
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-1OJMSAUX.js";
7
7
  import { r as saveMediaBuffer, t as ensureMediaDir } from "./store-r1DJSDq-.js";
@@ -1,5 +1,5 @@
1
1
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-aT-I_DTX.js";
2
- import { a as randomIdempotencyKey, n as callGateway } from "./call-7djMRPgl.js";
2
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-CJaS1iRF.js";
3
3
  import { n as withProgress } from "./progress-jIePzvGA.js";
4
4
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CN8o4Vi3.js";
5
5
 
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-DTIudfq4.js";
16
+ import "./subagent-registry-7wPEZQKK.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -101,9 +101,9 @@ import { t as ensureSymiCliOnPath } from "./path-env-Bic_wXs9.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
102
  import "./note-DDecZomM.js";
103
103
  import "./plugin-auto-enable-D6ENR3Xg.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BwnzEvIz.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-D8PAS3Sx.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-BNkhjU8E.js";
106
+ import { t as emitCliBanner } from "./banner-VbhMdl-b.js";
107
107
  import "./doctor-config-flow-CA3eiKhd.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-CPHvOzsC.js";
109
109
  import process$1 from "node:process";
@@ -118,7 +118,7 @@ const routeHealth = {
118
118
  const verbose = getVerboseFlag(argv, { includeDebug: true });
119
119
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
120
120
  if (timeoutMs === null) return false;
121
- const { healthCommand } = await import("./health-BctmvDJ0.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-BiipZUOd.js").then((n) => n.i);
122
122
  await healthCommand({
123
123
  json,
124
124
  timeoutMs,
@@ -138,7 +138,7 @@ const routeStatus = {
138
138
  const verbose = getVerboseFlag(argv, { includeDebug: true });
139
139
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
140
140
  if (timeoutMs === null) return false;
141
- const { statusCommand } = await import("./status-Dqm_DV3z.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-CRCD2RpZ.js").then((n) => n.t);
142
142
  await statusCommand({
143
143
  json,
144
144
  deep,
@@ -172,7 +172,7 @@ const routeAgentsList = {
172
172
  run: async (argv) => {
173
173
  const json = hasFlag(argv, "--json");
174
174
  const bindings = hasFlag(argv, "--bindings");
175
- const { agentsListCommand } = await import("./agents-DDqXWXbP.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-DRRBdgqz.js").then((n) => n.t);
176
176
  await agentsListCommand({
177
177
  json,
178
178
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-BM9FX48b.js");
246
+ const { runConfigGet } = await import("./config-cli-DG0xBZhs.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-BM9FX48b.js");
259
+ const { runConfigUnset } = await import("./config-cli-DG0xBZhs.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-yF2XRbPQ.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-DUrbBEOU.js").then((n) => n.t);
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-yF2XRbPQ.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-DUrbBEOU.js").then((n) => n.t);
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -379,7 +379,7 @@ async function runCli(argv = process$1.argv) {
379
379
  assertSupportedRuntime();
380
380
  if (await tryRouteCli(normalizedArgv)) return;
381
381
  enableConsoleCapture();
382
- const { buildProgram } = await import("./program-NGbjPxJh.js");
382
+ const { buildProgram } = await import("./program-C_rxRb1M.js");
383
383
  const program = buildProgram();
384
384
  installUnhandledRejectionHandler();
385
385
  process$1.on("uncaughtException", (error) => {
@@ -411,10 +411,10 @@ async function runCli(argv = process$1.argv) {
411
411
  const { getProgramContext } = await import("./program-context-CqzR_m-7.js").then((n) => n.n);
412
412
  const ctx = getProgramContext(program);
413
413
  if (ctx) {
414
- const { registerCoreCliByName } = await import("./command-registry-BSGsNY71.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-DwBw5-nh.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-CdANuuHY.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-Bvil7KuO.js").then((n) => n.a);
418
418
  await registerSubCliByName(program, primary);
419
419
  }
420
420
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -423,7 +423,7 @@ async function runCli(argv = process$1.argv) {
423
423
  primary,
424
424
  hasBuiltinPrimary
425
425
  })) {
426
- const { registerPluginCliCommands } = await import("./cli-Bx78WeyO.js");
426
+ const { registerPluginCliCommands } = await import("./cli-CPRCkEdK.js");
427
427
  const { loadConfig } = await import("./config-DHBLS1Hl.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -4,7 +4,7 @@ import { G as resolveSymiAgentDir, T as resolveApiKeyForProvider, c as normalize
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-ByaQt43P.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-BmV60pPT.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CHzdaNJ4.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DcpMiprB.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CSlZZ1Pw.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-CC8jiKDk.js";
@@ -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 { $ as resolveSymiAgentDir, A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, z as requireApiKey } from "./auth-profiles-DdK1Hxaa.js";
4
- import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-5SdHIcHU.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 { $ as resolveSymiAgentDir, A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, z as requireApiKey } from "./auth-profiles-Bl9aU7fc.js";
4
+ import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-CvmE3Yx1.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-CuzFLQWC.js";
8
- import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-Dy12ZAH3.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CK4oZUJJ.js";
8
+ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-C6Z-2T42.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DhZz0Ybs.js";
10
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-CdXg5-Cx.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
  }
@@ -882,7 +882,7 @@ async function loadModelCatalog(params) {
882
882
  });
883
883
  try {
884
884
  await ensureSymiModelsJson(params?.config ?? loadConfig());
885
- await (await import("./pi-auth-json-Bk8ERadJ.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
885
+ await (await import("./pi-auth-json-BYuCWAs0.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
886
886
  const piSdk = await importPiSdk();
887
887
  const agentDir = resolveSymiAgentDir();
888
888
  const { join } = await import("node:path");
@@ -942,7 +942,7 @@ function findModelInCatalog(catalog, provider, modelId) {
942
942
  async function fileExists(filePath) {
943
943
  if (!filePath) return false;
944
944
  try {
945
- await fs$1.stat(filePath);
945
+ await fs.stat(filePath);
946
946
  return true;
947
947
  } catch {
948
948
  return false;
@@ -1042,7 +1042,7 @@ async function resolveCliOutput(params) {
1042
1042
  const commandId = commandBase(params.command);
1043
1043
  const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
1044
1044
  if (fileOutput && await fileExists(fileOutput)) try {
1045
- const content = await fs$1.readFile(fileOutput, "utf8");
1045
+ const content = await fs.readFile(fileOutput, "utf8");
1046
1046
  if (content.trim()) return content.trim();
1047
1047
  } catch {}
1048
1048
  if (commandId === "gemini") {
@@ -1333,7 +1333,7 @@ async function runCliEntry(params) {
1333
1333
  maxBytes,
1334
1334
  timeoutMs
1335
1335
  });
1336
- const outputDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
1336
+ const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
1337
1337
  const mediaPath = pathResult.path;
1338
1338
  const outputBase = path.join(outputDir, path.parse(mediaPath).name);
1339
1339
  const templCtx = {
@@ -1367,7 +1367,7 @@ async function runCliEntry(params) {
1367
1367
  model: command
1368
1368
  };
1369
1369
  } finally {
1370
- await fs$1.rm(outputDir, {
1370
+ await fs.rm(outputDir, {
1371
1371
  recursive: true,
1372
1372
  force: true
1373
1373
  }).catch(() => {});
@@ -1411,9 +1411,9 @@ function candidateBinaryNames(name) {
1411
1411
  }
1412
1412
  async function isExecutable(filePath) {
1413
1413
  try {
1414
- if (!(await fs$1.stat(filePath)).isFile()) return false;
1414
+ if (!(await fs.stat(filePath)).isFile()) return false;
1415
1415
  if (process.platform === "win32") return true;
1416
- await fs$1.access(filePath, constants.X_OK);
1416
+ await fs.access(filePath, constants.X_OK);
1417
1417
  return true;
1418
1418
  } catch {
1419
1419
  return false;
@@ -3,14 +3,14 @@ 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-CyFvYcRt.js";
4
4
  import { _ as isInboundPathAllowed, g as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, v as mergeInboundPathRoots, y as resolveIMessageAttachmentRoots } from "./config-CHwyw6l5.js";
5
5
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
6
- import { t as describeImageWithModel } from "./image-CtCUVPCD.js";
6
+ import { t as describeImageWithModel } from "./image-D9uvDTrc.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";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
11
11
  import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-CzuPlV2t.js";
12
12
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-aAFLQGkY.js";
13
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-Da6fXK5K.js";
13
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DvBJ8pMD.js";
14
14
  import process$1 from "node:process";
15
15
  import { fileURLToPath } from "node:url";
16
16
  import { constants } from "node:fs";
@@ -6,12 +6,12 @@ import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
6
6
  import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, m as DEFAULT_AGENT_WORKSPACE_DIR, p as DEFAULT_AGENTS_FILENAME, r as resolveAgentConfig, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-CgUHAtCo.js";
7
7
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
8
8
  import { i as loadConfig } from "./config-CHwyw6l5.js";
9
- import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, O as DEFAULT_SYMI_BROWSER_COLOR } from "./chrome-DBKZkx0x.js";
9
+ import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, O as DEFAULT_SYMI_BROWSER_COLOR } from "./chrome-DtPkPq9T.js";
10
10
  import { t as safeEqualSecret } from "./secret-equal-D7A3Bol7.js";
11
11
  import { r as isLoopbackHost } from "./ws-C7EXRv8z.js";
12
- import { a as resolveProfile, m as resolveBrowserControlAuth, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-B-ra1emS.js";
12
+ import { a as resolveProfile, m as resolveBrowserControlAuth, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-CEpFjqSk.js";
13
13
  import { d as resolveSandboxInputPath, f as resolveSandboxPath, g as sanitizeEnvVars, o as syncSkillsToWorkspace } from "./skills-6jdJQ5ZL.js";
14
- import { t as registerBrowserRoutes } from "./routes-BO8eMYxn.js";
14
+ import { t as registerBrowserRoutes } from "./routes-Ba9CUQ8M.js";
15
15
  import { B as resolveAgentMainSessionKey, J as acquireSessionWriteLock, z as canonicalizeMainSessionAlias } from "./sessions-DgYpBvse.js";
16
16
  import { existsSync, realpathSync } from "node:fs";
17
17
  import path, { posix } from "node:path";
@@ -13,14 +13,14 @@ import "./env-DPCHYPeH.js";
13
13
  import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-aT-I_DTX.js";
14
14
  import { i as loadConfig } from "./config-CHwyw6l5.js";
15
15
  import "./manifest-registry-C4BxOMWX.js";
16
- import { f as resolveSandboxConfigForAgent, i as removeSandboxContainer, m as resolveSandboxToolPolicyForAgent, n as listSandboxContainers, r as removeSandboxBrowserContainer, t as listSandboxBrowsers } from "./sandbox-B7qoYkRl.js";
17
- import "./chrome-DBKZkx0x.js";
16
+ import { f as resolveSandboxConfigForAgent, i as removeSandboxContainer, m as resolveSandboxToolPolicyForAgent, n as listSandboxContainers, r as removeSandboxBrowserContainer, t as listSandboxBrowsers } from "./sandbox-C-T6hOMv.js";
17
+ import "./chrome-DtPkPq9T.js";
18
18
  import "./tailscale-D5dKabOc.js";
19
19
  import "./auth-B741uFtk.js";
20
- import "./server-context-B-ra1emS.js";
20
+ import "./server-context-CEpFjqSk.js";
21
21
  import "./frontmatter-DWQhtOo7.js";
22
22
  import "./skills-6jdJQ5ZL.js";
23
- import "./routes-BO8eMYxn.js";
23
+ import "./routes-Ba9CUQ8M.js";
24
24
  import "./redact-f-Q-hFt_.js";
25
25
  import "./errors-BF3TeRH2.js";
26
26
  import "./fs-safe-CUjO1ca2.js";
@@ -13,14 +13,14 @@ import "./env-DPCHYPeH.js";
13
13
  import "./message-channel-aT-I_DTX.js";
14
14
  import { i as loadConfig, r as createConfigIO } from "./config-CHwyw6l5.js";
15
15
  import "./manifest-registry-C4BxOMWX.js";
16
- import "./sandbox-B7qoYkRl.js";
17
- import "./chrome-DBKZkx0x.js";
16
+ import "./sandbox-C-T6hOMv.js";
17
+ import "./chrome-DtPkPq9T.js";
18
18
  import "./tailscale-D5dKabOc.js";
19
19
  import "./auth-B741uFtk.js";
20
- import "./server-context-B-ra1emS.js";
20
+ import "./server-context-CEpFjqSk.js";
21
21
  import "./frontmatter-DWQhtOo7.js";
22
22
  import "./skills-6jdJQ5ZL.js";
23
- import "./routes-BO8eMYxn.js";
23
+ import "./routes-Ba9CUQ8M.js";
24
24
  import "./redact-f-Q-hFt_.js";
25
25
  import "./errors-BF3TeRH2.js";
26
26
  import "./fs-safe-CUjO1ca2.js";
@@ -40,17 +40,17 @@ import "./bindings-DFaVVCsf.js";
40
40
  import "./logging-w5jq5901.js";
41
41
  import "./paths-CyhzMxFA.js";
42
42
  import "./commands-BNLCWX6e.js";
43
- import "./client-Z6SFrwob.js";
44
- import "./call-7djMRPgl.js";
43
+ import "./client-CQSyCS4M.js";
44
+ import "./call-CJaS1iRF.js";
45
45
  import "./pairing-token-CX3NN_qj.js";
46
46
  import { i as readChannelAllowFromStore } from "./pairing-store-CK726Dzq.js";
47
47
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
48
48
  import { t as formatHelpExamples } from "./help-format-B_-M23wP.js";
49
49
  import "./workspace-dirs-GpkFi6Kw.js";
50
- import "./pi-tools.policy-CgGK6Jq8.js";
50
+ import "./pi-tools.policy-CIDBbw6x.js";
51
51
  import "./dangerous-tools-BL-M3lPt.js";
52
52
  import "./skill-scanner-CLs8u6vQ.js";
53
- import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-BIE9JAxf.js";
53
+ import { i as collectIncludePathsRecursive, n as createIcaclsResetCommand, r as formatIcaclsResetCommand, t as runSecurityAudit } from "./audit-CrITRV6w.js";
54
54
  import "./dm-policy-shared-Bh3TbexU.js";
55
55
  import path from "node:path";
56
56
  import fs from "node:fs/promises";