@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
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
14
14
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
15
15
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-D-hWrHoH.js";
16
16
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C1IYd3g7.js";
17
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-BH0l3UKW.js";
17
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-C-37cZUe.js";
18
18
  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-D0xmLpej.js";
19
19
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
22
22
  import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.js";
23
23
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
24
24
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BQINJQIT.js";
25
- import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-lgx_U5KS.js";
25
+ import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B8kqLWns.js";
26
26
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BmV60pPT.js";
27
27
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-D-mTF1cj.js";
28
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CDJYxX5a.js";
28
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D2SKJnR7.js";
29
29
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BNpGMnp-.js";
30
30
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
31
31
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
36
36
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
37
37
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
38
38
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
39
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CHzdaNJ4.js";
39
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-DcpMiprB.js";
40
40
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-jpn5vRTY.js";
41
41
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
42
42
  import { n as retryAsync } from "./retry-QGp0jvVi.js";
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.js";
49
49
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C_aYUwpl.js";
50
50
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DklY7Cj7.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DUBExAb5.js";
52
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-BcQ0sF9T.js";
53
53
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
54
54
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
55
55
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
79
79
  import AjvPkg from "ajv";
80
80
  import { createServer } from "node:http";
81
81
  import { ProxyAgent, fetch as fetch$1 } from "undici";
82
- import WebSocket$1, { WebSocket } from "ws";
82
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
83
83
  import { Buffer as Buffer$1 } from "node:buffer";
84
84
  import { createJiti } from "jiti";
85
85
  import { Type } from "@sinclair/typebox";
@@ -5714,7 +5714,7 @@ var GatewayClient = class {
5714
5714
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5715
5715
  });
5716
5716
  }
5717
- this.ws = new WebSocket(url, wsOptions);
5717
+ this.ws = new WebSocket$1(url, wsOptions);
5718
5718
  this.ws.on("open", () => {
5719
5719
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5720
5720
  const tlsError = this.validateTlsFingerprint();
@@ -5933,7 +5933,7 @@ var GatewayClient = class {
5933
5933
  return null;
5934
5934
  }
5935
5935
  async request(method, params, opts) {
5936
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5936
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5937
5937
  const id = randomUUID();
5938
5938
  const frame = {
5939
5939
  type: "req",
@@ -7199,7 +7199,7 @@ async function routeReply(params) {
7199
7199
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7200
7200
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7201
7201
  try {
7202
- const { deliverOutboundPayloads } = await import("./deliver-BH0l3UKW.js").then((n) => n.n);
7202
+ const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
7203
7203
  return {
7204
7204
  ok: true,
7205
7205
  messageId: (await deliverOutboundPayloads({
@@ -42401,15 +42401,56 @@ function sanitizeParams(params) {
42401
42401
  };
42402
42402
  }
42403
42403
  /**
42404
+ * Build a usage example string from a tool's JSON schema for helpful error messages.
42405
+ * Returns something like: web_search({ query: "<search terms>" })
42406
+ */
42407
+ function buildToolUsageExample(toolName, schema) {
42408
+ const props = schema?.properties;
42409
+ if (!props || typeof props !== "object") return `${toolName}({ ... })`;
42410
+ return `${toolName}({ ${Object.entries(props).slice(0, 4).map(([key, def]) => {
42411
+ const typeDef = def;
42412
+ if (Array.isArray(typeDef?.enum)) return `${key}: "${typeDef.enum[0]}"`;
42413
+ if (typeDef?.type === "string") return `${key}: "<${typeof typeDef.description === "string" ? typeDef.description.slice(0, 30) : key}>"`;
42414
+ return `${key}: ...`;
42415
+ }).join(", ")} })`;
42416
+ }
42417
+ /**
42418
+ * Extract required fields from a tool's JSON schema.
42419
+ */
42420
+ function getRequiredFields(schema) {
42421
+ const required = schema?.required;
42422
+ return Array.isArray(required) ? required.filter((r) => typeof r === "string") : [];
42423
+ }
42424
+ /**
42425
+ * Create a relaxed copy of a tool schema with required fields removed.
42426
+ * This allows args with missing fields to pass pi-agent-core's schema
42427
+ * validation, reaching our execute() wrapper where we can return a
42428
+ * helpful error message with a usage example.
42429
+ */
42430
+ function relaxSchema(schema) {
42431
+ if (!schema || typeof schema !== "object") return schema;
42432
+ const copy = { ...schema };
42433
+ delete copy.required;
42434
+ return copy;
42435
+ }
42436
+ /**
42404
42437
  * Wrap a single tool with universal argument sanitization.
42405
42438
  */
42406
42439
  function wrapToolWithArgValidation(tool) {
42407
42440
  const toolName = (tool.name ?? "").toLowerCase().trim();
42408
42441
  const isExecTool = EXEC_TOOL_NAMES.has(toolName);
42442
+ const originalRequired = getRequiredFields(tool.parameters);
42443
+ const usageExample = buildToolUsageExample(toolName, tool.parameters);
42409
42444
  const originalExecute = tool.execute;
42410
42445
  return {
42411
42446
  ...tool,
42447
+ parameters: relaxSchema(tool.parameters),
42412
42448
  execute(toolCallId, params, ...rest) {
42449
+ const missingFields = originalRequired.filter((field) => params[field] === void 0 || params[field] === null);
42450
+ if (missingFields.length > 0) {
42451
+ log$1.warn(`[validate] ${toolName} missing required fields: ${missingFields.join(", ")}`);
42452
+ return Promise.resolve({ output: `Error: Missing required argument${missingFields.length > 1 ? "s" : ""}: ${missingFields.join(", ")}. Please try again with all required arguments.\nExample: ${usageExample}` });
42453
+ }
42413
42454
  const { cleaned, changed } = sanitizeParams(params);
42414
42455
  if (changed) log$1.debug(`[validate] sanitized args for ${toolName}: ${Object.keys(params).filter((k) => cleaned[k] !== params[k]).join(",")}`);
42415
42456
  const effectiveParams = changed ? cleaned : params;
@@ -50713,7 +50754,7 @@ async function deliverSessionMaintenanceWarning(params) {
50713
50754
  return;
50714
50755
  }
50715
50756
  try {
50716
- const { deliverOutboundPayloads } = await import("./deliver-BH0l3UKW.js").then((n) => n.n);
50757
+ const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
50717
50758
  await deliverOutboundPayloads({
50718
50759
  cfg: params.cfg,
50719
50760
  channel,
@@ -54159,7 +54200,7 @@ async function describeStickerImage(params) {
54159
54200
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
54160
54201
  try {
54161
54202
  const buffer = await fs$1.readFile(imagePath);
54162
- const { describeImageWithModel } = await import("./image-CHzdaNJ4.js").then((n) => n.n);
54203
+ const { describeImageWithModel } = await import("./image-DcpMiprB.js").then((n) => n.n);
54163
54204
  return (await describeImageWithModel({
54164
54205
  buffer,
54165
54206
  fileName: "sticker.webp",
@@ -56821,7 +56862,7 @@ async function preflightDiscordMessage(params) {
56821
56862
  let preflightTranscript;
56822
56863
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
56823
56864
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
56824
- const { transcribeFirstAudio } = await import("./audio-preflight-C40mKAp7.js");
56865
+ const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
56825
56866
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
56826
56867
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
56827
56868
  ctx: {
@@ -60604,7 +60645,7 @@ function isVoiceChannelType(type) {
60604
60645
  function createDefaultDeps() {
60605
60646
  return {
60606
60647
  sendMessageWhatsApp: async (...args) => {
60607
- const { sendMessageWhatsApp } = await import("./web-BC4kDUZw.js");
60648
+ const { sendMessageWhatsApp } = await import("./web-DPBfrIzo.js");
60608
60649
  return await sendMessageWhatsApp(...args);
60609
60650
  },
60610
60651
  sendMessageTelegram: async (...args) => {
@@ -63509,7 +63550,7 @@ function createDiscordGatewayPlugin(params) {
63509
63550
  super(options);
63510
63551
  }
63511
63552
  createWebSocket(url) {
63512
- return new WebSocket$1(url, { agent });
63553
+ return new WebSocket(url, { agent });
63513
63554
  }
63514
63555
  }
63515
63556
  return new ProxyGatewayPlugin();
@@ -73727,7 +73768,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
73727
73768
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
73728
73769
  let preflightTranscript;
73729
73770
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
73730
- const { transcribeFirstAudio } = await import("./audio-preflight-C40mKAp7.js");
73771
+ const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
73731
73772
  preflightTranscript = await transcribeFirstAudio({
73732
73773
  ctx: {
73733
73774
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -75884,7 +75925,7 @@ function loadWebLoginQr() {
75884
75925
  return webLoginQrPromise;
75885
75926
  }
75886
75927
  function loadWebChannel() {
75887
- webChannelPromise ??= import("./web-BC4kDUZw.js");
75928
+ webChannelPromise ??= import("./web-DPBfrIzo.js");
75888
75929
  return webChannelPromise;
75889
75930
  }
75890
75931
  function loadWhatsAppActions() {
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
10
10
  import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
11
11
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
12
12
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BmV60pPT.js";
13
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CDJYxX5a.js";
13
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-D2SKJnR7.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BNpGMnp-.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
16
16
  import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
931
931
  }
932
932
  async function loadPwAiModule(mode) {
933
933
  try {
934
- return await import("./pw-ai-De-KR9_s.js");
934
+ return await import("./pw-ai-1htA-NnS.js");
935
935
  } catch (err) {
936
936
  if (mode === "soft") return null;
937
937
  if (isModuleNotFoundError(err)) return null;
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
3471
3471
  const userDataDir = resolveSymiUserDataDir(profile.name);
3472
3472
  const profileState = getProfileState();
3473
3473
  if (await isHttpReachable(300) && !profileState.running) try {
3474
- await (await import("./pw-ai-De-KR9_s.js")).closePlaywrightBrowserConnection();
3474
+ await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
3475
3475
  } catch {}
3476
3476
  if (profileState.running) await stopRunningBrowser();
3477
3477
  try {
3478
- await (await import("./pw-ai-De-KR9_s.js")).closePlaywrightBrowserConnection();
3478
+ await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
3479
3479
  } catch {}
3480
3480
  if (!fs.existsSync(userDataDir)) return {
3481
3481
  moved: false,