@visorcraft/idlehands 4.4.0 → 4.4.2

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 (256) hide show
  1. package/dist/{accounts-BDVs8LTu.js → accounts-B8cGzkjD.js} +1 -1
  2. package/dist/{accounts-Dk8mJIrQ.js → accounts-BQC_GRUB.js} +6 -6
  3. package/dist/{accounts-CIvVRRHb.js → accounts-D5tB_lO0.js} +1 -1
  4. package/dist/{agent-scope-DyP_tr7s.js → agent-scope-Bxq1eWbA.js} +4 -4
  5. package/dist/{agent-via-gateway-DvLTdMBj.js → agent-via-gateway-B82avysM.js} +1 -1
  6. package/dist/{agent-via-gateway-CPvgY5VA.js → agent-via-gateway-BLv_oSL5.js} +1 -1
  7. package/dist/{agent-via-gateway-OzQZlQpB.js → agent-via-gateway-BZBYIS74.js} +2 -2
  8. package/dist/{agent-via-gateway-CTti0dK7.js → agent-via-gateway-spHKNacF.js} +60 -60
  9. package/dist/{agents-BEuHL8Zr.js → agents-DFsifqti.js} +4 -4
  10. package/dist/{agents.config-BjMP6yqX.js → agents.config-B-HneNqt.js} +1 -1
  11. package/dist/{agents.config-BDQ4Bu0B.js → agents.config-LJG8mKGJ.js} +1 -1
  12. package/dist/{anton-Dwp3KlQs.js → anton-BHVfJEmp.js} +1 -1
  13. package/dist/{anton-C8SARtai.js → anton-CH-O1fKX.js} +5 -5
  14. package/dist/{anton-DCJl8crN.js → anton-DDY9C7_9.js} +1 -1
  15. package/dist/{anton-F-OwKPyb.js → anton-DYkdgFjS.js} +1 -1
  16. package/dist/{audio-preflight-DdYPJah_.js → audio-preflight-CwOVlM_o.js} +35 -35
  17. package/dist/{auth-choice-BHISFUGz.js → auth-choice-BwuBROMy.js} +1 -1
  18. package/dist/{auth-choice-Dam79K-y.js → auth-choice-tTRqUPHJ.js} +1 -1
  19. package/dist/{auth-store-DXT-l7fO.js → auth-store-Bb4aajHu.js} +12 -12
  20. package/dist/{banner-ascZEgmt.js → banner-DUYqUnZh.js} +1 -1
  21. package/dist/{bindings-D3b5Fmc9.js → bindings-CLZIJ0Eo.js} +2 -2
  22. package/dist/build-info.json +3 -3
  23. package/dist/bundled/boot-md/handler.js +60 -60
  24. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  25. package/dist/bundled/command-logger/handler.js +3 -3
  26. package/dist/bundled/session-memory/handler.js +60 -60
  27. package/dist/{plugin-sdk/channel-activity-loOg1DRw.js → channel-activity-DdL3RAv_.js} +3 -3
  28. package/dist/{channel-options-CAfv1NVr.js → channel-options-DgE4bKnZ.js} +1 -1
  29. package/dist/{channel-options-BdjtX9_O.js → channel-options-w859WR9f.js} +1 -1
  30. package/dist/{channel-web-BZe8v7Di.js → channel-web-6DakWPLw.js} +2 -2
  31. package/dist/{channel-web-B23k1s4A.js → channel-web-DRFHkK-t.js} +2 -2
  32. package/dist/{channels-cli-v8qMY1yM.js → channels-cli-3a9CzVGj.js} +7 -7
  33. package/dist/{channels-cli-Bfz9P0IR.js → channels-cli-DTM2c23f.js} +7 -7
  34. package/dist/{chrome-RZ6-DZcL.js → chrome-CrBtckYY.js} +17 -17
  35. package/dist/{chunk-CMpX7Jaz.js → chunk-Djk-9JeT.js} +1 -1
  36. package/dist/{cli-HkluaDt1.js → cli-BYiKVK4i.js} +2 -2
  37. package/dist/{cli-DyId4irC.js → cli-C7BI3Wn6.js} +2 -2
  38. package/dist/{command-registry-Bs5y1F2v.js → command-registry-BtbFeRGU.js} +10 -10
  39. package/dist/{commands-registry-C_zNi-Ou.js → commands-registry-Cy_UQS_3.js} +5 -5
  40. package/dist/{completion-cli-CGXtQf6t.js → completion-cli-BB2Y8nfx.js} +1 -1
  41. package/dist/{completion-cli-BmHAqqY4.js → completion-cli-BGz3hkuH.js} +2 -2
  42. package/dist/{config-cli-BdJDJv0a.js → config-cli-DOmnPiGC.js} +1 -1
  43. package/dist/{config-cli-CEehCZa0.js → config-cli-b1s6P-RG.js} +1 -1
  44. package/dist/{configure-C5087mSP.js → configure-BQsgmT59.js} +3 -3
  45. package/dist/{configure-C44gmCt3.js → configure-D4tLHdxZ.js} +3 -3
  46. package/dist/daemon-cli.js +6 -6
  47. package/dist/{deliver-BQeDhZSa.js → deliver-DReSDWa4.js} +20 -20
  48. package/dist/{deps-CchkM1ea.js → deps-1S6DoURA.js} +1 -1
  49. package/dist/{deps-SgroTRjf.js → deps-BZOU70bs.js} +1 -1
  50. package/dist/{deps-UTcCCmJ6.js → deps-D0XOoTym.js} +6 -6
  51. package/dist/{deps-CfQJK6WP.js → deps-D3ku734-.js} +1 -1
  52. package/dist/{diagnostic-4owMk4vH.js → diagnostic-BvlZ0Sot.js} +1 -1
  53. package/dist/{dock-BgOmHcbh.js → dock-ejUetwTC.js} +6 -6
  54. package/dist/{doctor-completion-DsaJMlSu.js → doctor-completion-BfAWZyFl.js} +1 -1
  55. package/dist/{doctor-completion-Cgl5S3K0.js → doctor-completion-DOFXmBLZ.js} +1 -1
  56. package/dist/{emergency-stop-B2KUQyt8.js → emergency-stop-3LJcS7w-.js} +2 -2
  57. package/dist/emergency-stop-BXmSbO38.js +113 -0
  58. package/dist/{emergency-stop-DjURYr3Z.js → emergency-stop-DXwma2EI.js} +2 -2
  59. package/dist/{emergency-stop-BCRW03p2.js → emergency-stop-Dpdosd7y.js} +2 -2
  60. package/dist/entry.js +1 -1
  61. package/dist/{env-B5G1qwGc.js → env-q-PhWbb_.js} +1 -1
  62. package/dist/{plugin-sdk/errors-CMcD8Lhh.js → errors-C4SHjIZK.js} +1 -1
  63. package/dist/extensionAPI.js +2 -2
  64. package/dist/{fetch-guard-iuQsIjqN.js → fetch-guard-CcfDZXe9.js} +1 -1
  65. package/dist/{frontmatter-BOudmHMS.js → frontmatter-pTUG4Sx_.js} +2 -2
  66. package/dist/{fs-safe-CYUaAFO9.js → fs-safe-2l05hI1Y.js} +2 -2
  67. package/dist/{gateway-cli-BmwR5tHy.js → gateway-cli-B2CLa9rg.js} +9 -9
  68. package/dist/{gateway-cli-Cx3sGYvO.js → gateway-cli-CzXEYocw.js} +9 -9
  69. package/dist/{gemini-auth-DwwgHLvI.js → gemini-auth-DnP8lfQK.js} +2 -2
  70. package/dist/{github-copilot-token-Dgt6cnsM.js → github-copilot-token-BjmEQcmi.js} +7 -7
  71. package/dist/{health-DXbufVL-.js → health-C2A5ilGU.js} +1 -1
  72. package/dist/{health-F0lUmHT3.js → health-Dn7CVhrN.js} +1 -1
  73. package/dist/{hooks-cli-6t3DpWin.js → hooks-cli-BxGuMBUi.js} +3 -3
  74. package/dist/{hooks-cli-CsWYWkar.js → hooks-cli-CT8pLj_8.js} +3 -3
  75. package/dist/{image-4HTajysw.js → image-DBhgEUm0.js} +6 -6
  76. package/dist/{image-ops-D1KtygWz.js → image-ops-J8P5zOFm.js} +1 -1
  77. package/dist/index.js +7 -7
  78. package/dist/{ir-B7IBoKLy.js → ir-BT5aAdU9.js} +5 -5
  79. package/dist/llm-slug-generator.js +60 -60
  80. package/dist/{local-roots-KN4Hp1yZ.js → local-roots-d4y0lvs2.js} +5 -5
  81. package/dist/{login-B8EuUm6R.js → login-CtL3gtbh.js} +6 -6
  82. package/dist/{login-qr-DS_9MrMo.js → login-qr-D090cMcd.js} +11 -11
  83. package/dist/{manager-CaFxh6F8.js → manager-1TS0xG0C.js} +15 -15
  84. package/dist/{markdown-tables-CzsockiZ.js → markdown-tables-R8VTpfE9.js} +1 -1
  85. package/dist/{message-channel-C8QtrwEU.js → message-channel-ZdI1-uUh.js} +1 -1
  86. package/dist/{model-selection-D5g8tXIY.js → model-selection-C5BhfuPa.js} +41 -41
  87. package/dist/{models-awPyoUpk.js → models-CGtrW3AC.js} +2 -2
  88. package/dist/{models-cli-D_PfTekq.js → models-cli-0TPj_c8R.js} +4 -4
  89. package/dist/{models-cli-CsA9GN5G.js → models-cli-BvUKtS_w.js} +3 -3
  90. package/dist/{npm-resolution-BKPKKKLt.js → npm-resolution-Anabxb6_.js} +1 -1
  91. package/dist/{npm-resolution-BpQ2o-Eh.js → npm-resolution-Ox7X74-Z.js} +1 -1
  92. package/dist/{onboard-C9KRYbrH.js → onboard-B3m0Seri.js} +2 -2
  93. package/dist/{onboard-BiT3YReS.js → onboard-DsqTjPex.js} +2 -2
  94. package/dist/{onboard-channels-C6b-o1TK.js → onboard-channels-14qYfbpr.js} +1 -1
  95. package/dist/{onboard-channels-_XLjSBKm.js → onboard-channels-DFXKCp3G.js} +1 -1
  96. package/dist/{onboarding-BfAhtIYl.js → onboarding-BJYyNWSX.js} +3 -3
  97. package/dist/{onboarding-By12Oyni.js → onboarding-nIZFJ6yX.js} +3 -3
  98. package/dist/{onboarding.finalize-yL217Gdr.js → onboarding.finalize-B1qxBzUX.js} +6 -6
  99. package/dist/{onboarding.finalize-CAgcobAs.js → onboarding.finalize-Bi1nDMyy.js} +7 -7
  100. package/dist/{outbound-Dq9yoBDJ.js → outbound-D3dHUVkO.js} +6 -6
  101. package/dist/{outbound-attachment-3I6GzwDe.js → outbound-attachment-IfeZJAKk.js} +2 -2
  102. package/dist/{path-alias-guards-Cu1nXNMM.js → path-alias-guards-BZmt6hFb.js} +1 -1
  103. package/dist/{paths-D_qUel1T.js → paths-D3p7ZvM6.js} +3 -3
  104. package/dist/{paths-BYNVLNi_.js → paths-DQpv9a3Q.js} +5 -5
  105. package/dist/{pi-embedded-BfPWx2YM.js → pi-embedded-D-vbVu50.js} +67 -37
  106. package/dist/{pi-embedded-helpers-DBkYJKhY.js → pi-embedded-helpers-BcRw0T_g.js} +24 -24
  107. package/dist/{pi-embedded-tWfE4dVB.js → pi-embedded-wUyn4Zjf.js} +235 -205
  108. package/dist/{pi-model-discovery-BMRRgVlz.js → pi-model-discovery-DMEzBdm5.js} +7 -7
  109. package/dist/{plugin-registry-ZgC7HA0z.js → plugin-registry-DHavGgu-.js} +1 -1
  110. package/dist/{plugin-registry-7DC8-ZZJ.js → plugin-registry-ReGTT2Qn.js} +1 -1
  111. package/dist/plugin-sdk/{accounts-CBVAw5_G.js → accounts-B9nfRzyn.js} +1 -1
  112. package/dist/plugin-sdk/{accounts-BLYMokxV.js → accounts-Kt6ygPsC.js} +2 -2
  113. package/dist/plugin-sdk/{accounts-C5tHm1UI.js → accounts-mjFAny5F.js} +1 -1
  114. package/dist/plugin-sdk/{agent-scope-jl80I5G9.js → agent-scope-CU41EMlR.js} +2 -2
  115. package/dist/plugin-sdk/{agent-via-gateway-C9v2r0O2.js → agent-via-gateway-BaZViUVq.js} +55 -55
  116. package/dist/plugin-sdk/agents/tool-stubs.d.ts +2 -1
  117. package/dist/plugin-sdk/{anton-7I_gkw4v.js → anton-y9DWQk_X.js} +4 -4
  118. package/dist/plugin-sdk/{api-key-rotation-BUIqfXnG.js → api-key-rotation-DPA6ftN7.js} +2 -2
  119. package/dist/plugin-sdk/{audio-preflight-URcQAxhH.js → audio-preflight-DL4zZ6SH.js} +30 -30
  120. package/dist/plugin-sdk/{auth-store-DaPWgQTx.js → auth-store-DycBvVqL.js} +1 -1
  121. package/dist/plugin-sdk/{bindings-xXgmJGxj.js → bindings-BDKKHGv-.js} +2 -2
  122. package/dist/{channel-activity-D_TMOGQ0.js → plugin-sdk/channel-activity-TcS_VfJk.js} +3 -3
  123. package/dist/plugin-sdk/{channel-web-B7qyJbrs.js → channel-web-CLQ55z3e.js} +24 -24
  124. package/dist/plugin-sdk/{chrome-CPVAOm0b.js → chrome-CaJve-Gp.js} +6 -6
  125. package/dist/plugin-sdk/{chunk-PW4MBmaN.js → chunk-DZr5xuqv.js} +1 -1
  126. package/dist/plugin-sdk/{commands-registry-DQCQbF8W.js → commands-registry-DWTMC5Bl.js} +5 -5
  127. package/dist/plugin-sdk/{config-04otsq-i.js → config-DXRuYZaI.js} +10 -10
  128. package/dist/plugin-sdk/{deliver-DfopPK17.js → deliver-DbtR2D87.js} +10 -10
  129. package/dist/plugin-sdk/{deps-Gj9jRY77.js → deps-DNbYvt5g.js} +6 -6
  130. package/dist/plugin-sdk/{diagnostic-ByA6zvzu.js → diagnostic-B8VzcqLf.js} +1 -1
  131. package/dist/plugin-sdk/{dock-DKQYtT6-.js → dock-CMURqoee.js} +6 -6
  132. package/dist/plugin-sdk/{emergency-stop-B7_VgSkO.js → emergency-stop-DQXrdDYX.js} +55 -55
  133. package/dist/plugin-sdk/{env-5XecRTLs.js → env-qurSiOO2.js} +1 -1
  134. package/dist/{errors-C_0nm4TJ.js → plugin-sdk/errors-UqLewZJL.js} +1 -1
  135. package/dist/plugin-sdk/{fetch-guard-DwdUEdmT.js → fetch-guard-C174s8ZV.js} +1 -1
  136. package/dist/plugin-sdk/{fs-safe-qsx2_8-o.js → fs-safe-CCXTOK7j.js} +2 -2
  137. package/dist/plugin-sdk/{image-B-gM6mxU.js → image-D-9PH0zg.js} +6 -6
  138. package/dist/plugin-sdk/{image-ops-CXSUo-AM.js → image-ops-BRYGGDwL.js} +1 -1
  139. package/dist/plugin-sdk/index.js +60 -60
  140. package/dist/plugin-sdk/{ir-kdDGpPMq.js → ir-Bv0Zbp2E.js} +5 -5
  141. package/dist/plugin-sdk/{local-roots-DjB6DYeI.js → local-roots-bHCsSVt_.js} +4 -4
  142. package/dist/plugin-sdk/{login-Bpe2s20d.js → login-B8HpBurd.js} +6 -6
  143. package/dist/plugin-sdk/{login-qr-C9ndp3tg.js → login-qr-DQnS-xlm.js} +8 -8
  144. package/dist/plugin-sdk/{manager-CBBlTnh3.js → manager-CKed0ZZE.js} +10 -10
  145. package/dist/plugin-sdk/{markdown-tables-Drtwd4J5.js → markdown-tables-DfUQHRZY.js} +1 -1
  146. package/dist/plugin-sdk/{message-channel-CQ0qkGHj.js → message-channel-DiMXmQeQ.js} +1 -1
  147. package/dist/plugin-sdk/{outbound-D6g6crrp.js → outbound-DNK06gip.js} +6 -6
  148. package/dist/plugin-sdk/{outbound-attachment-BisU5Vji.js → outbound-attachment-Bs7fNaqv.js} +2 -2
  149. package/dist/plugin-sdk/{path-alias-guards-C_uBEYb4.js → path-alias-guards-yyy61qHh.js} +1 -1
  150. package/dist/plugin-sdk/{pi-embedded-helpers-D48bhP-9.js → pi-embedded-helpers-BoeRlyoL.js} +16 -16
  151. package/dist/plugin-sdk/{pi-model-discovery-DCBTaRzI.js → pi-model-discovery-BLPN0Tzs.js} +1 -1
  152. package/dist/plugin-sdk/{plugins-NTjIvHYk.js → plugins-DRPlVBr_.js} +5 -5
  153. package/dist/plugin-sdk/{pw-ai-YGZXROMl.js → pw-ai-V3n0xLn-.js} +10 -10
  154. package/dist/plugin-sdk/{qmd-manager-juzrnopq.js → qmd-manager-BckPBwZX.js} +5 -5
  155. package/dist/plugin-sdk/{query-expansion-xBXvzdkL.js → query-expansion-CPqK-tTR.js} +2 -2
  156. package/dist/plugin-sdk/{redact-B6VQH3UQ.js → redact-Ub8sMBBC.js} +1 -1
  157. package/dist/plugin-sdk/{replies-DXdzWcMN.js → replies-CzsaFa8u.js} +3 -3
  158. package/dist/plugin-sdk/{reply-nvcQV3Q_.js → reply-DWcAkFIT.js} +151 -121
  159. package/dist/plugin-sdk/{reply-prefix--mxmTL7A.js → reply-prefix-BqV0o7_7.js} +1 -1
  160. package/dist/plugin-sdk/{resolve-outbound-target-CnUtsDch.js → resolve-outbound-target-DAdNGEqG.js} +2 -2
  161. package/dist/plugin-sdk/{resolve-route-BZABUE4J.js → resolve-route-C5mAwY-o.js} +3 -3
  162. package/dist/{retry-BeB9WenR.js → plugin-sdk/retry-2OVzZJMZ.js} +1 -1
  163. package/dist/plugin-sdk/{runner-C2xaoYAR.js → runner-C_iZbSwz.js} +10 -10
  164. package/dist/plugin-sdk/{send-CKQ89Lq9.js → send-BUYJmPie.js} +6 -6
  165. package/dist/plugin-sdk/{send-CFkuTXvq.js → send-BsxSmaWa.js} +7 -7
  166. package/dist/plugin-sdk/{send-BgTqMJLI.js → send-CBYbDScb.js} +10 -10
  167. package/dist/plugin-sdk/{send-dmYAtUT5.js → send-D-cZm1Y5.js} +7 -7
  168. package/dist/plugin-sdk/{send-CRhcec-_.js → send-Dt8bXHE8.js} +13 -13
  169. package/dist/plugin-sdk/{session-OpE6SSAs.js → session-C9uqVmuk.js} +3 -3
  170. package/dist/plugin-sdk/{sessions-CG-k8Acv.js → sessions-B4ApxPY1.js} +6 -6
  171. package/dist/plugin-sdk/{skill-commands-BHBpmuX9.js → skill-commands-B8suoqwn.js} +5 -5
  172. package/dist/plugin-sdk/{skills-33Wy6_4b.js → skills-Dl2nq6QI.js} +8 -8
  173. package/dist/plugin-sdk/{store-CCCXwngh.js → store-BI3rLJdW.js} +2 -2
  174. package/dist/plugin-sdk/{subsystem-DWPzKeZ0.js → subsystem-lJo9gqAK.js} +1 -1
  175. package/dist/plugin-sdk/{tables-CF9W23Rd.js → tables-C4X_nAUQ.js} +1 -1
  176. package/dist/plugin-sdk/{target-errors-DaH0qYtL.js → target-errors-CXh6e9ZE.js} +2 -2
  177. package/dist/plugin-sdk/{tokens-Y97UKh4C.js → tokens-CU9S3S7t.js} +1 -1
  178. package/dist/{tool-images-CcGZpzmq.js → plugin-sdk/tool-images-Cf9aWlVu.js} +2 -2
  179. package/dist/plugin-sdk/{tool-loop-detection-Cv8wyfAi.js → tool-loop-detection-DuwkSqZL.js} +2 -2
  180. package/dist/plugin-sdk/{utils-Dyj2wV4e.js → utils-dP-FpIgu.js} +2 -2
  181. package/dist/plugin-sdk/web-CNw6-P_B.js +71 -0
  182. package/dist/plugin-sdk/{whatsapp-actions-Cp6vXAA8.js → whatsapp-actions-CEAXpexT.js} +23 -23
  183. package/dist/{plugins-CRB60mCJ.js → plugins-DYr-HHj0.js} +10 -10
  184. package/dist/{plugins-cli-DACLE21S.js → plugins-cli-C13WMPnF.js} +3 -3
  185. package/dist/{plugins-cli-kePQvJ9L.js → plugins-cli-CO4FVaiO.js} +3 -3
  186. package/dist/{program-VV9u5uPU.js → program-B_vfCOU2.js} +8 -8
  187. package/dist/{program-context-j94K3IXR.js → program-context-BmSQ_Sf4.js} +18 -18
  188. package/dist/{prompt-select-styled-BSqCn36X.js → prompt-select-styled-B5ZwrfX0.js} +4 -4
  189. package/dist/{prompt-select-styled-BH51ROGD.js → prompt-select-styled-BC7OSZ1q.js} +4 -4
  190. package/dist/{provider-auth-helpers-BAB3PaaB.js → provider-auth-helpers-CDu8gosd.js} +1 -1
  191. package/dist/{provider-auth-helpers-DMSF8Mhq.js → provider-auth-helpers-D0A6E5jr.js} +1 -1
  192. package/dist/{push-apns-Cou7KeCj.js → push-apns-BofP21zS.js} +1 -1
  193. package/dist/{push-apns-CGUwMKT-.js → push-apns-Dc8RVDXC.js} +1 -1
  194. package/dist/{pw-ai-5GRjEp4v.js → pw-ai-D3GtQQoU.js} +13 -13
  195. package/dist/{qmd-manager-B_GgyQQ0.js → qmd-manager-BRvg3Rx2.js} +8 -8
  196. package/dist/{query-expansion-DEq020GG.js → query-expansion-DHuNyU-_.js} +5 -5
  197. package/dist/{redact-Bvpf-ATQ.js → redact-1Y0KPNtr.js} +1 -1
  198. package/dist/{register.agent-YCGBKv-d.js → register.agent-CMlS5uBQ.js} +9 -9
  199. package/dist/{register.agent-ColbJEk3.js → register.agent-CV7M3tu9.js} +8 -8
  200. package/dist/{register.configure-C5g7670Q.js → register.configure-BnNziB2G.js} +8 -8
  201. package/dist/{register.configure-CfUo6nvs.js → register.configure-CMB0aDJp.js} +8 -8
  202. package/dist/{register.maintenance-53FGiO0K.js → register.maintenance-BdWGNtkz.js} +8 -8
  203. package/dist/{register.maintenance-CBNoQia-.js → register.maintenance-X6asZwHw.js} +9 -9
  204. package/dist/{register.message-0nKlUSrH.js → register.message-BuggdGjG.js} +3 -3
  205. package/dist/{register.message-CaFp4DAP.js → register.message-DnOPNIGk.js} +3 -3
  206. package/dist/{register.onboard-B3NgvEwe.js → register.onboard-BDhpm8TD.js} +2 -2
  207. package/dist/{register.onboard-B9IJ3wUe.js → register.onboard-CHHu9Skd.js} +2 -2
  208. package/dist/{register.orchestrator-anton-Cxnh52UP.js → register.orchestrator-anton-B-tuZR0z.js} +2 -2
  209. package/dist/{register.orchestrator-anton-HIi6nBvo.js → register.orchestrator-anton-SlFmmH1n.js} +2 -2
  210. package/dist/{register.setup-y7C2w79N.js → register.setup-A8U_6S1I.js} +2 -2
  211. package/dist/{register.setup-DyxAeyO2.js → register.setup-D7mmwdPD.js} +2 -2
  212. package/dist/{register.status-health-sessions-5wREP3Tq.js → register.status-health-sessions-DVocz8ib.js} +4 -4
  213. package/dist/{register.status-health-sessions-DbzCxLhd.js → register.status-health-sessions-haba-O-6.js} +4 -4
  214. package/dist/{register.subclis-BEDdoF6M.js → register.subclis-B-zDlWeV.js} +9 -9
  215. package/dist/{replies-uBXwI7WM.js → replies-BxRl_2Nq.js} +3 -3
  216. package/dist/{reply-vDM22Gez.js → reply-7AXQ38dZ.js} +67 -37
  217. package/dist/{reply-prefix-BUgeSN2R.js → reply-prefix-DCljZiIB.js} +1 -1
  218. package/dist/{resolve-route-DuttYY7A.js → resolve-route-ClcifpKn.js} +4 -4
  219. package/dist/{plugin-sdk/retry-Bh7jveNm.js → retry-CG6cMRDQ.js} +1 -1
  220. package/dist/{run-main-BKjpcqq8.js → run-main-Cy6gYOh3.js} +15 -15
  221. package/dist/{runner-Cy6GWdoL.js → runner-BZBK277H.js} +11 -11
  222. package/dist/{send-Ce_lAnef.js → send-B7Fzlmlo.js} +7 -7
  223. package/dist/{send-BskvGZej.js → send-BGyVbnFP.js} +7 -7
  224. package/dist/{send-DvjrOg1z.js → send-DcN-QeVO.js} +6 -6
  225. package/dist/{send-rp8dzIy4.js → send-n1vT5TEb.js} +24 -24
  226. package/dist/{send-C4z2HAbE.js → send-qNmymshG.js} +10 -10
  227. package/dist/{server-node-events-B7IQ1nzZ.js → server-node-events-ChBhFPg3.js} +3 -3
  228. package/dist/{server-node-events-CraqSZJR.js → server-node-events-Dbr2WR-0.js} +3 -3
  229. package/dist/{session-BbwP0jac.js → session-BMqBZ_fq.js} +7 -7
  230. package/dist/{sessions-DA2oWrdb.js → sessions-BA3_G98W.js} +41 -41
  231. package/dist/{skill-commands-AySApC-2.js → skill-commands-DnTjl_m1.js} +9 -9
  232. package/dist/{skills-B3wf7ZnA.js → skills-DRGt1G_o.js} +22 -22
  233. package/dist/{status-ZUnD4Pgf.js → status-BompBfRg.js} +2 -2
  234. package/dist/{status-D9fTji6b.js → status-Cy7Zcfzv.js} +2 -2
  235. package/dist/{store-CvMgrKWx.js → store-D-ZicQeo.js} +2 -2
  236. package/dist/{subagent-registry-l7V3IoLe.js → subagent-registry-DDIoRVFV.js} +67 -37
  237. package/dist/{subsystem-tzu-rIAJ.js → subsystem-D7ZepYT1.js} +1 -1
  238. package/dist/{tables-5k-zOZ-s.js → tables-Co_R_WKs.js} +1 -1
  239. package/dist/{target-errors-BPfQrPim.js → target-errors-B1mcM4WR.js} +2 -2
  240. package/dist/{tokens-BRLyURxW.js → tokens-DGajj8M9.js} +1 -1
  241. package/dist/{plugin-sdk/tool-images-BMRkn_yk.js → tool-images-Duuqr4bN.js} +2 -2
  242. package/dist/{tool-loop-detection-BNGetx3Z.js → tool-loop-detection-CjWRg_4q.js} +3 -3
  243. package/dist/{update-cli-CMn89gww.js → update-cli-1s_O26hF.js} +8 -8
  244. package/dist/{update-cli-D02DhEE9.js → update-cli-DywvLvxF.js} +9 -9
  245. package/dist/{update-runner-C44em-38.js → update-runner-2yf_p333.js} +1 -1
  246. package/dist/{update-runner-BSsZSlwa.js → update-runner-DfTjwukX.js} +1 -1
  247. package/dist/{utils-CTFLl_ji.js → utils-D9wGoiU9.js} +18 -18
  248. package/dist/{web-CiVRDtta.js → web-59hB8x7z.js} +3 -3
  249. package/dist/{web-DLIXLq_L.js → web-C4vEw_Lp.js} +3 -3
  250. package/dist/{web-Dkl33QN0.js → web-DxQjSHSJ.js} +66 -66
  251. package/dist/{web-bCfwH31U.js → web-WBETd448.js} +3 -3
  252. package/dist/{whatsapp-actions-C_BWc4tJ.js → whatsapp-actions-DmI59VQd.js} +25 -25
  253. package/dist/{workspace-DBFSzT6O.js → workspace-tAtkoD_r.js} +18 -18
  254. package/package.json +1 -1
  255. package/dist/emergency-stop-CjVqAFw-.js +0 -113
  256. package/dist/plugin-sdk/web-BzOC1x6m.js +0 -71
@@ -1,88 +1,88 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { c as resolveDefaultAgentId, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as toAgentModelListLike, h as resolveAgentModelPrimaryValue, i as resolveAgentDir, l as resolveEffectiveModelFallbacks, m as resolveAgentModelFallbackValues, n as listAgentIds, o as resolveAgentSkillsFilter, r as resolveAgentConfig, s as resolveAgentWorkspaceDir, t as hasConfiguredModelFallbacks, u as resolveRunModelFallbacksOverride } from "./agent-scope-DyP_tr7s.js";
3
- import { d as resolveStateDir, f as expandHomePrefix, i as resolveConfigPath, m as resolveRequiredHomeDir, n as STATE_DIR, s as resolveGatewayPort } from "./paths-BYNVLNi_.js";
4
- import { C as triggerInternalHook, _ as getPluginCommandSpecs, a as listChatChannels, b as createInternalHookEvent, c as normalizeChatChannelId, d as requireActivePluginRegistry, f as setActivePluginRegistry, g as executePluginCommand, h as clearPluginCommands, i as getChatChannelMeta, l as getActivePluginRegistry, m as normalizePluginHttpPath, o as normalizeAnyChannelId, p as createPluginRegistry, r as CHAT_CHANNEL_ORDER, s as normalizeChannelId$1, t as createSubsystemLogger, u as getActivePluginRegistryKey, v as listPluginCommands, y as matchPluginCommand } from "./subsystem-tzu-rIAJ.js";
5
- import { A as shouldLogVerbose, C as isPlainObject, D as logVerbose, F as theme, I as getChildLogger, K as resolvePreferredIdleHandsTmpDir, M as warn, N as colorize, P as isRich, S as truncateUtf16Safe, W as normalizeLogLevel, _ as shortenHomeInString, a as ensureDir$3, b as sliceUtf16Safe, c as isRecord$1, d as normalizeE164, h as resolveUserPath, k as setVerbose, o as escapeRegExp, r as clampInt, s as formatTerminalLink, t as CONFIG_DIR, v as shortenHomePath, w as danger, y as sleep$1 } from "./utils-CTFLl_ji.js";
2
+ import { c as resolveDefaultAgentId, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as toAgentModelListLike, h as resolveAgentModelPrimaryValue, i as resolveAgentDir, l as resolveEffectiveModelFallbacks, m as resolveAgentModelFallbackValues, n as listAgentIds, o as resolveAgentSkillsFilter, r as resolveAgentConfig, s as resolveAgentWorkspaceDir, t as hasConfiguredModelFallbacks, u as resolveRunModelFallbacksOverride } from "./agent-scope-Bxq1eWbA.js";
3
+ import { d as resolveStateDir, f as expandHomePrefix, i as resolveConfigPath, m as resolveRequiredHomeDir, n as STATE_DIR, s as resolveGatewayPort } from "./paths-DQpv9a3Q.js";
4
+ import { C as triggerInternalHook, _ as getPluginCommandSpecs, a as listChatChannels, b as createInternalHookEvent, c as normalizeChatChannelId, d as requireActivePluginRegistry, f as setActivePluginRegistry, g as executePluginCommand, h as clearPluginCommands, i as getChatChannelMeta, l as getActivePluginRegistry, m as normalizePluginHttpPath, o as normalizeAnyChannelId, p as createPluginRegistry, r as CHAT_CHANNEL_ORDER, s as normalizeChannelId$1, t as createSubsystemLogger, u as getActivePluginRegistryKey, v as listPluginCommands, y as matchPluginCommand } from "./subsystem-D7ZepYT1.js";
5
+ import { A as shouldLogVerbose, C as isPlainObject, D as logVerbose, F as theme, I as getChildLogger, K as resolvePreferredIdleHandsTmpDir, M as warn, N as colorize, P as isRich, S as truncateUtf16Safe, W as normalizeLogLevel, _ as shortenHomeInString, a as ensureDir$3, b as sliceUtf16Safe, c as isRecord$1, d as normalizeE164, h as resolveUserPath, k as setVerbose, o as escapeRegExp, r as clampInt, s as formatTerminalLink, t as CONFIG_DIR, v as shortenHomePath, w as danger, y as sleep$1 } from "./utils-D9wGoiU9.js";
6
6
  import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as defaultRuntime, o as unregisterActiveProgressLine, t as createNonExitingRuntime } from "./runtime-8mi3mpYB.js";
7
7
  import { S as resolveThreadParentSessionKey, _ as getSubagentDepth, b as isSubagentSessionKey, c as normalizeMainKey, d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, g as deriveSessionChatType, h as isBlockedObjectKey, l as resolveAgentIdFromSessionKey, m as normalizeOptionalAccountId, o as classifySessionKeyShape, p as normalizeAccountId$2, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as parseAgentSessionKey, y as isCronSessionKey } from "./session-key-CuLPSMu_.js";
8
- import { S as logWarn, T as openBoundaryFileSync, _ as runExec, a as DEFAULT_IDENTITY_FILENAME, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, l as ensureAgentWorkspace, m as resolveIdleHandsPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, w as openBoundaryFile, x as logInfo, y as logDebug } from "./workspace-DBFSzT6O.js";
9
- import { $t as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, A as getSoonestCooldownExpiry, At as buildEnforcedShellCommand, Bt as unwrapKnownDispatchWrapperInvocation, C as getCustomProviderApiKey, Ct as unsetConfigValueAtPath, D as resolveModelAuthMode, Dt as normalizeTrustedSafeBinDirs, E as resolveEnvApiKey, Et as listWritableExplicitTrustedSafeBinDirs, F as resolveApiKeyForProfile, Ft as resolveAllowlistCandidatePath, G as normalizeTelegramCommandName, Gt as resolveSafeBinProfiles, H as writeConfigFile, Ht as splitShellArgs, It as resolveCommandResolutionFromArgv, J as isInboundPathAllowed, Jt as mapStreamingModeToSlackLegacyDraftStreamMode, K as resolveTelegramCustomCommands, Kt as applyMergePatch, Lt as extractShellWrapperInlineCommand, M as markAuthProfileFailure, Mt as splitCommandChain, N as markAuthProfileUsed, Nt as DEFAULT_SAFE_BINS, Ot as validateSafeBinArgv, P as resolveProfilesUnavailableReason, Pt as matchAllowlist, Q as normalizeScpRemoteHost, R as loadConfig, Rt as isDispatchWrapperExecutable, S as getApiKeyForModel, St as setConfigValueAtPath, T as resolveApiKeyForProvider, Tt as isTrustedSafeBinPath, U as validateConfigObjectWithPlugins, Ut as SAFE_BIN_PROFILES, V as resolveConfigSnapshotHash, Vt as unwrapKnownShellMultiplexerInvocation, W as TELEGRAM_COMMAND_NAME_PATTERN, Wt as normalizeSafeBinProfileFixtures, X as resolveIMessageAttachmentRoots, Xt as resolveSlackNativeStreaming, Yt as resolveDiscordPreviewStreamMode, Z as resolveIMessageRemoteAttachmentRoots, Zt as resolveSlackStreamingMode, _n as splitTrailingAuthProfile, _t as resetConfigOverrides, a as isCliProvider, an as resolveOwnerDisplaySetting, at as isPathWithinRoot, b as OLLAMA_NATIVE_BASE_URL, bn as DEFAULT_PROVIDER, bt as getConfigValueAtPath, c as normalizeProviderId, cn as markAuthProfileGood, ct as loadPluginManifestRegistry, d as resolveDefaultModelForAgent, dn as resolveIdleHandsAgentDir, dt as safeStatSync, en as resolveAgentMaxConcurrent, et as parseDurationMs, f as resolveModelRefFromString, fn as withFileLock, ft as applyTestPluginDefaults, gn as normalizeSecretInput, gt as getConfigOverrides, h as resolveThinkingDefault, hn as resolveAuthProfileDisplayLabel, ht as resolveMemorySlotDecision, i as findNormalizedProviderValue, in as isDangerousHostEnvVarName, it as isAvatarHttpUrl, j as isProfileInCooldown, jt as isWindowsPlatform, k as resolveAuthProfileOrder, kt as analyzeShellCommand, ln as ensureAuthProfileStore, lt as discoverIdleHandsPlugins, m as resolveSubagentSpawnModelSelection, mt as resolveEffectiveEnableState, n as buildConfiguredAllowlistKeys, nn as getShellPathFromLoginShell, nt as AVATAR_MAX_BYTES, o as modelKey, on as dedupeProfileIds, ot as isSupportedLocalAvatarExtension, p as resolveReasoningDefault, pt as normalizePluginsConfig, qt as isSafeExecutableValue, r as buildModelAliasIndex, rn as resolveShellEnvFallbackTimeoutMs, rt as isAvatarDataUrl, s as normalizeModelRef$2, sn as listProfilesForProvider, st as validateJsonSchemaValue, t as buildAllowedModelSet, tn as VERSION, u as resolveConfiguredModelRef, un as resolveAuthStorePathForDisplay, ut as isPathInside, vn as DEFAULT_CONTEXT_TOKENS, vt as setConfigOverride, w as requireApiKey, wt as getTrustedSafeBinDirs, x as createOllamaStreamFn, xt as parseConfigPath, yn as DEFAULT_MODEL, yt as unsetConfigOverride, z as readConfigFileSnapshot, zt as isShellWrapperExecutable } from "./model-selection-D5g8tXIY.js";
10
- import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Dgt6cnsM.js";
8
+ import { S as logWarn, T as openBoundaryFileSync, _ as runExec, a as DEFAULT_IDENTITY_FILENAME, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, l as ensureAgentWorkspace, m as resolveIdleHandsPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, w as openBoundaryFile, x as logInfo, y as logDebug } from "./workspace-tAtkoD_r.js";
9
+ import { $t as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, A as getSoonestCooldownExpiry, At as buildEnforcedShellCommand, Bt as unwrapKnownDispatchWrapperInvocation, C as getCustomProviderApiKey, Ct as unsetConfigValueAtPath, D as resolveModelAuthMode, Dt as normalizeTrustedSafeBinDirs, E as resolveEnvApiKey, Et as listWritableExplicitTrustedSafeBinDirs, F as resolveApiKeyForProfile, Ft as resolveAllowlistCandidatePath, G as normalizeTelegramCommandName, Gt as resolveSafeBinProfiles, H as writeConfigFile, Ht as splitShellArgs, It as resolveCommandResolutionFromArgv, J as isInboundPathAllowed, Jt as mapStreamingModeToSlackLegacyDraftStreamMode, K as resolveTelegramCustomCommands, Kt as applyMergePatch, Lt as extractShellWrapperInlineCommand, M as markAuthProfileFailure, Mt as splitCommandChain, N as markAuthProfileUsed, Nt as DEFAULT_SAFE_BINS, Ot as validateSafeBinArgv, P as resolveProfilesUnavailableReason, Pt as matchAllowlist, Q as normalizeScpRemoteHost, R as loadConfig, Rt as isDispatchWrapperExecutable, S as getApiKeyForModel, St as setConfigValueAtPath, T as resolveApiKeyForProvider, Tt as isTrustedSafeBinPath, U as validateConfigObjectWithPlugins, Ut as SAFE_BIN_PROFILES, V as resolveConfigSnapshotHash, Vt as unwrapKnownShellMultiplexerInvocation, W as TELEGRAM_COMMAND_NAME_PATTERN, Wt as normalizeSafeBinProfileFixtures, X as resolveIMessageAttachmentRoots, Xt as resolveSlackNativeStreaming, Yt as resolveDiscordPreviewStreamMode, Z as resolveIMessageRemoteAttachmentRoots, Zt as resolveSlackStreamingMode, _n as splitTrailingAuthProfile, _t as resetConfigOverrides, a as isCliProvider, an as resolveOwnerDisplaySetting, at as isPathWithinRoot, b as OLLAMA_NATIVE_BASE_URL, bn as DEFAULT_PROVIDER, bt as getConfigValueAtPath, c as normalizeProviderId, cn as markAuthProfileGood, ct as loadPluginManifestRegistry, d as resolveDefaultModelForAgent, dn as resolveIdleHandsAgentDir, dt as safeStatSync, en as resolveAgentMaxConcurrent, et as parseDurationMs, f as resolveModelRefFromString, fn as withFileLock, ft as applyTestPluginDefaults, gn as normalizeSecretInput, gt as getConfigOverrides, h as resolveThinkingDefault, hn as resolveAuthProfileDisplayLabel, ht as resolveMemorySlotDecision, i as findNormalizedProviderValue, in as isDangerousHostEnvVarName, it as isAvatarHttpUrl, j as isProfileInCooldown, jt as isWindowsPlatform, k as resolveAuthProfileOrder, kt as analyzeShellCommand, ln as ensureAuthProfileStore, lt as discoverIdleHandsPlugins, m as resolveSubagentSpawnModelSelection, mt as resolveEffectiveEnableState, n as buildConfiguredAllowlistKeys, nn as getShellPathFromLoginShell, nt as AVATAR_MAX_BYTES, o as modelKey, on as dedupeProfileIds, ot as isSupportedLocalAvatarExtension, p as resolveReasoningDefault, pt as normalizePluginsConfig, qt as isSafeExecutableValue, r as buildModelAliasIndex, rn as resolveShellEnvFallbackTimeoutMs, rt as isAvatarDataUrl, s as normalizeModelRef$2, sn as listProfilesForProvider, st as validateJsonSchemaValue, t as buildAllowedModelSet, tn as VERSION, u as resolveConfiguredModelRef, un as resolveAuthStorePathForDisplay, ut as isPathInside, vn as DEFAULT_CONTEXT_TOKENS, vt as setConfigOverride, w as requireApiKey, wt as getTrustedSafeBinDirs, x as createOllamaStreamFn, xt as parseConfigPath, yn as DEFAULT_MODEL, yt as unsetConfigOverride, z as readConfigFileSnapshot, zt as isShellWrapperExecutable } from "./model-selection-C5BhfuPa.js";
10
+ import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BjmEQcmi.js";
11
11
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-BAxx4PW5.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { t as isTruthyEnvValue } from "./env-B5G1qwGc.js";
13
+ import { t as isTruthyEnvValue } from "./env-q-PhWbb_.js";
14
14
  import { n as MANIFEST_KEY } from "./legacy-names-B4ZvHEmO.js";
15
- import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, o as resolveChannelGroupToolsPolicy, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BgOmHcbh.js";
15
+ import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, o as resolveChannelGroupToolsPolicy, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-ejUetwTC.js";
16
16
  import { t as runTasksWithConcurrency } from "./run-with-concurrency-CEV6qf-x.js";
17
- import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as isSilentReplyPrefixText, t as HEARTBEAT_TOKEN } from "./tokens-BRLyURxW.js";
18
- import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$2, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-CRB60mCJ.js";
19
- import { n as resolveWhatsAppAccount, t as hasAnyWhatsAppAuth } from "./accounts-Dk8mJIrQ.js";
17
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as isSilentReplyPrefixText, t as HEARTBEAT_TOKEN } from "./tokens-DGajj8M9.js";
18
+ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$2, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-DYr-HHj0.js";
19
+ import { n as resolveWhatsAppAccount, t as hasAnyWhatsAppAuth } from "./accounts-BQC_GRUB.js";
20
20
  import { t as resolveAccountEntry } from "./account-lookup-DlMshWZ_.js";
21
21
  import { t as normalizeChatType } from "./chat-type-BPBtOjer.js";
22
- import { t as buildChannelAccountBindings } from "./bindings-D3b5Fmc9.js";
23
- import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, n as getWebAuthAgeMs, p as webAuthExists } from "./auth-store-DXT-l7fO.js";
24
- 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-BskvGZej.js";
25
- 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-C4z2HAbE.js";
22
+ import { t as buildChannelAccountBindings } from "./bindings-CLZIJ0Eo.js";
23
+ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, n as getWebAuthAgeMs, p as webAuthExists } from "./auth-store-Bb4aajHu.js";
24
+ 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-BGyVbnFP.js";
25
+ 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-qNmymshG.js";
26
26
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-B1N_MXT_.js";
27
- import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-BQeDhZSa.js";
28
- 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-4owMk4vH.js";
27
+ import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-DReSDWa4.js";
28
+ 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-BvlZ0Sot.js";
29
29
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-BGF2r-kt.js";
30
- import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BDVs8LTu.js";
31
- import { $ as readJsonFileWithFallback, A as extractTelegramLocation, B as normalizeAllowFrom$2, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as mergeDmAllowFromSources, H as resolveSenderAllowMatch, I as resolveTelegramReplyId, J as toLocationContext, K as resolveGroupAllowFromSources, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as upsertChannelPairingRequest, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as firstDefined$1, V as normalizeDmAllowFromWithStore$1, W as isSenderIdAllowed, X as readChannelAllowFromStore, Y as addChannelAllowFromStoreEntry, Z as removeChannelAllowFromStoreEntry, _ as resolveTelegramFetch, a as reactMessageTelegram, at as resolveTelegramTargetChatType, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as writeJsonFileAtomically, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, it as parseTelegramTarget, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as listPairingChannels, o as sendMessageTelegram, p as markdownToTelegramChunks, q as formatLocationText, r as deleteMessageTelegram, rt as isVoiceCompatibleAudio, s as sendPollTelegram, t as buildInlineKeyboard, tt as getPairingAdapter, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-rp8dzIy4.js";
32
- import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-D1KtygWz.js";
33
- import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BMRRgVlz.js";
34
- 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-C8QtrwEU.js";
35
- import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-DBkYJKhY.js";
36
- import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-RZ6-DZcL.js";
30
+ import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-B8cGzkjD.js";
31
+ import { $ as readJsonFileWithFallback, A as extractTelegramLocation, B as normalizeAllowFrom$2, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as mergeDmAllowFromSources, H as resolveSenderAllowMatch, I as resolveTelegramReplyId, J as toLocationContext, K as resolveGroupAllowFromSources, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as upsertChannelPairingRequest, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as firstDefined$1, V as normalizeDmAllowFromWithStore$1, W as isSenderIdAllowed, X as readChannelAllowFromStore, Y as addChannelAllowFromStoreEntry, Z as removeChannelAllowFromStoreEntry, _ as resolveTelegramFetch, a as reactMessageTelegram, at as resolveTelegramTargetChatType, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as writeJsonFileAtomically, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, it as parseTelegramTarget, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as listPairingChannels, o as sendMessageTelegram, p as markdownToTelegramChunks, q as formatLocationText, r as deleteMessageTelegram, rt as isVoiceCompatibleAudio, s as sendPollTelegram, t as buildInlineKeyboard, tt as getPairingAdapter, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-n1vT5TEb.js";
32
+ import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-J8P5zOFm.js";
33
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DMEzBdm5.js";
34
+ 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-ZdI1-uUh.js";
35
+ import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-BcRw0T_g.js";
36
+ import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-CrBtckYY.js";
37
37
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CZeHDwVZ.js";
38
- 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-B3wf7ZnA.js";
39
- import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-Cu1nXNMM.js";
40
- import { r as compileSafeRegex, t as redactSensitiveText } from "./redact-Bvpf-ATQ.js";
41
- import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-C_0nm4TJ.js";
42
- import { i as writeFileWithinRoot, n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CYUaAFO9.js";
43
- import { n as getMediaDir, r as saveMediaBuffer } from "./store-CvMgrKWx.js";
44
- import { A as normalizeInputProvenance, B as setSessionRuntimeModel, C as capArrayByJsonBytes, D as INPUT_PROVENANCE_KIND_VALUES, E as parseInlineDirectives$1, F as resolveSessionResetType, G as deriveSessionMetaPatch, I as resolveThreadFlag, J as resolveSessionLockMaxHoldFromTimeout, K as resolveGroupSessionKey, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, O as applyInputProvenanceToUserMessage, P as resolveSessionResetPolicy, R as mergeSessionEntry, S as archiveSessionTranscripts, T as extractToolCallNames, U as resolveExplicitAgentSessionKey, V as canonicalizeMainSessionAlias, W as resolveMainSessionKey, _ as deliveryContextKey, b as normalizeSessionDeliveryFields, c as readSessionUpdatedAt, d as updateLastRoute, f as updateSessionStore, g as deliveryContextFromSession, h as resolveCacheTtlMs$1, i as appendAssistantMessageToSessionTranscript, j as resolveSessionKey, k as hasInterSessionUserProvenance, l as recordSessionMetaFromInbound, m as isCacheEnabled, n as extractDeliveryInfo, o as resolveAndPersistSessionFile, p as updateSessionStoreEntry, q as acquireSessionWriteLock, r as parseSessionThreadInfo, s as loadSessionStore, v as mergeDeliveryContext, w as countToolResults, x as normalizeAccountId$3, y as normalizeDeliveryContext, z as resolveFreshSessionTotalTokens } from "./sessions-DA2oWrdb.js";
38
+ 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-DRGt1G_o.js";
39
+ import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-BZmt6hFb.js";
40
+ import { r as compileSafeRegex, t as redactSensitiveText } from "./redact-1Y0KPNtr.js";
41
+ import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-C4SHjIZK.js";
42
+ import { i as writeFileWithinRoot, n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-2l05hI1Y.js";
43
+ import { n as getMediaDir, r as saveMediaBuffer } from "./store-D-ZicQeo.js";
44
+ import { A as normalizeInputProvenance, B as setSessionRuntimeModel, C as capArrayByJsonBytes, D as INPUT_PROVENANCE_KIND_VALUES, E as parseInlineDirectives$1, F as resolveSessionResetType, G as deriveSessionMetaPatch, I as resolveThreadFlag, J as resolveSessionLockMaxHoldFromTimeout, K as resolveGroupSessionKey, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, O as applyInputProvenanceToUserMessage, P as resolveSessionResetPolicy, R as mergeSessionEntry, S as archiveSessionTranscripts, T as extractToolCallNames, U as resolveExplicitAgentSessionKey, V as canonicalizeMainSessionAlias, W as resolveMainSessionKey, _ as deliveryContextKey, b as normalizeSessionDeliveryFields, c as readSessionUpdatedAt, d as updateLastRoute, f as updateSessionStore, g as deliveryContextFromSession, h as resolveCacheTtlMs$1, i as appendAssistantMessageToSessionTranscript, j as resolveSessionKey, k as hasInterSessionUserProvenance, l as recordSessionMetaFromInbound, m as isCacheEnabled, n as extractDeliveryInfo, o as resolveAndPersistSessionFile, p as updateSessionStoreEntry, q as acquireSessionWriteLock, r as parseSessionThreadInfo, s as loadSessionStore, v as mergeDeliveryContext, w as countToolResults, x as normalizeAccountId$3, y as normalizeDeliveryContext, z as resolveFreshSessionTotalTokens } from "./sessions-BA3_G98W.js";
45
45
  import { n as resolveConversationLabel } from "./conversation-label-1Wad2kXc.js";
46
- import { t as resolveIMessageAccount } from "./accounts-CIvVRRHb.js";
47
- import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath, r as resolveDefaultSessionStorePath, u as resolveStorePath } from "./paths-D_qUel1T.js";
46
+ import { t as resolveIMessageAccount } from "./accounts-D5tB_lO0.js";
47
+ import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath, r as resolveDefaultSessionStorePath, u as resolveStorePath } from "./paths-D3p7ZvM6.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-_OimdA_2.js";
49
- import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-CcGZpzmq.js";
49
+ import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-Duuqr4bN.js";
50
50
  import { a as normalizeReasoningLevel, c as normalizeVerboseLevel, i as normalizeElevatedLevel, l as resolveResponseUsageMode, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-z4_linel.js";
51
- import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-4HTajysw.js";
52
- import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUgeSN2R.js";
53
- import { n as resolveMemorySearchConfig } from "./manager-CaFxh6F8.js";
51
+ import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-DBhgEUm0.js";
52
+ import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-DCljZiIB.js";
53
+ import { n as resolveMemorySearchConfig } from "./manager-1TS0xG0C.js";
54
54
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-3YYM8QuM.js";
55
- import { t as fetchWithSsrFGuard } from "./fetch-guard-iuQsIjqN.js";
56
- import { f as listMemoryFiles, p as normalizeExtraMemoryPaths } from "./query-expansion-DEq020GG.js";
57
- import { n as retryAsync } from "./retry-BeB9WenR.js";
58
- import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-BPfQrPim.js";
59
- import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-CMpX7Jaz.js";
60
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CzsockiZ.js";
61
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError, t as getAgentScopedMediaLocalRoots } from "./local-roots-KN4Hp1yZ.js";
62
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-B7IBoKLy.js";
63
- import { _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, y as resolveNativeCommandsEnabled } from "./commands-registry-C_zNi-Ou.js";
64
- 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-AySApC-2.js";
55
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-CcfDZXe9.js";
56
+ import { f as listMemoryFiles, p as normalizeExtraMemoryPaths } from "./query-expansion-DHuNyU-_.js";
57
+ import { n as retryAsync } from "./retry-CG6cMRDQ.js";
58
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B1mcM4WR.js";
59
+ import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-Djk-9JeT.js";
60
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-R8VTpfE9.js";
61
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError, t as getAgentScopedMediaLocalRoots } from "./local-roots-d4y0lvs2.js";
62
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-BT5aAdU9.js";
63
+ import { _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, y as resolveNativeCommandsEnabled } from "./commands-registry-Cy_UQS_3.js";
64
+ 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-DnTjl_m1.js";
65
65
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BYczzTII.js";
66
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, 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-Cy6GWdoL.js";
66
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, 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-BZBK277H.js";
67
67
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CsfR_943.js";
68
68
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-D9g0X0i7.js";
69
- import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D_TMOGQ0.js";
69
+ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-DdL3RAv_.js";
70
70
  import { n as normalizePollInput } from "./polls-DhMjjIGW.js";
71
- import { t as convertMarkdownTables } from "./tables-5k-zOZ-s.js";
72
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-DvjrOg1z.js";
73
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-Ce_lAnef.js";
74
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-DuttYY7A.js";
71
+ import { t as convertMarkdownTables } from "./tables-Co_R_WKs.js";
72
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-DcN-QeVO.js";
73
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-B7Fzlmlo.js";
74
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-ClcifpKn.js";
75
75
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-jilCMH1M.js";
76
76
  import { t as makeProxyFetch } from "./proxy-CRB9oCP5.js";
77
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-uBXwI7WM.js";
78
- import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-UTcCCmJ6.js";
77
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BxRl_2Nq.js";
78
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-D0XOoTym.js";
79
79
  import { createRequire } from "node:module";
80
- import * as fs$1 from "node:fs/promises";
80
+ import * as fs$2 from "node:fs/promises";
81
81
  import fs from "node:fs/promises";
82
82
  import os, { homedir } from "node:os";
83
83
  import * as path$1 from "node:path";
84
84
  import path, { isAbsolute } from "node:path";
85
- import syncFs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
85
+ import fs$1, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
86
86
  import JSON5 from "json5";
87
87
  import { inspect, promisify } from "node:util";
88
88
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
@@ -3246,7 +3246,7 @@ async function resolveIdleHandsDocsPath(params) {
3246
3246
  const workspaceDir = params.workspaceDir?.trim();
3247
3247
  if (workspaceDir) {
3248
3248
  const workspaceDocs = path.join(workspaceDir, "docs");
3249
- if (syncFs.existsSync(workspaceDocs)) return workspaceDocs;
3249
+ if (fs$1.existsSync(workspaceDocs)) return workspaceDocs;
3250
3250
  }
3251
3251
  const packageRoot = await resolveIdleHandsPackageRoot({
3252
3252
  cwd: params.cwd,
@@ -3255,7 +3255,7 @@ async function resolveIdleHandsDocsPath(params) {
3255
3255
  });
3256
3256
  if (!packageRoot) return null;
3257
3257
  const packageDocs = path.join(packageRoot, "docs");
3258
- return syncFs.existsSync(packageDocs) ? packageDocs : null;
3258
+ return fs$1.existsSync(packageDocs) ? packageDocs : null;
3259
3259
  }
3260
3260
 
3261
3261
  //#endregion
@@ -3965,7 +3965,7 @@ async function getMemorySearchManager(params) {
3965
3965
  if (cached) return { manager: cached };
3966
3966
  }
3967
3967
  try {
3968
- const { QmdMemoryManager } = await import("./qmd-manager-B_GgyQQ0.js");
3968
+ const { QmdMemoryManager } = await import("./qmd-manager-BRvg3Rx2.js");
3969
3969
  const primary = await QmdMemoryManager.create({
3970
3970
  cfg: params.cfg,
3971
3971
  agentId: params.agentId,
@@ -3977,7 +3977,7 @@ async function getMemorySearchManager(params) {
3977
3977
  const wrapper = new FallbackMemoryManager({
3978
3978
  primary,
3979
3979
  fallbackFactory: async () => {
3980
- const { MemoryIndexManager } = await import("./manager-CaFxh6F8.js").then((n) => n.t);
3980
+ const { MemoryIndexManager } = await import("./manager-1TS0xG0C.js").then((n) => n.t);
3981
3981
  return await MemoryIndexManager.get(params);
3982
3982
  }
3983
3983
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3990,7 +3990,7 @@ async function getMemorySearchManager(params) {
3990
3990
  }
3991
3991
  }
3992
3992
  try {
3993
- const { MemoryIndexManager } = await import("./manager-CaFxh6F8.js").then((n) => n.t);
3993
+ const { MemoryIndexManager } = await import("./manager-1TS0xG0C.js").then((n) => n.t);
3994
3994
  return { manager: await MemoryIndexManager.get(params) };
3995
3995
  } catch (err) {
3996
3996
  return {
@@ -4678,7 +4678,7 @@ function resolveDefaultIdentityPath() {
4678
4678
  return path.join(resolveStateDir(), "identity", "device.json");
4679
4679
  }
4680
4680
  function ensureDir$2(filePath) {
4681
- syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
4681
+ fs$1.mkdirSync(path.dirname(filePath), { recursive: true });
4682
4682
  }
4683
4683
  const ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
4684
4684
  function base64UrlEncode(buf) {
@@ -4714,8 +4714,8 @@ function generateIdentity() {
4714
4714
  }
4715
4715
  function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
4716
4716
  try {
4717
- if (syncFs.existsSync(filePath)) {
4718
- const raw = syncFs.readFileSync(filePath, "utf8");
4717
+ if (fs$1.existsSync(filePath)) {
4718
+ const raw = fs$1.readFileSync(filePath, "utf8");
4719
4719
  const parsed = JSON.parse(raw);
4720
4720
  if (parsed?.version === 1 && typeof parsed.deviceId === "string" && typeof parsed.publicKeyPem === "string" && typeof parsed.privateKeyPem === "string") {
4721
4721
  const derivedId = fingerprintPublicKey(parsed.publicKeyPem);
@@ -4724,9 +4724,9 @@ function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
4724
4724
  ...parsed,
4725
4725
  deviceId: derivedId
4726
4726
  };
4727
- syncFs.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
4727
+ fs$1.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
4728
4728
  try {
4729
- syncFs.chmodSync(filePath, 384);
4729
+ fs$1.chmodSync(filePath, 384);
4730
4730
  } catch {}
4731
4731
  return {
4732
4732
  deviceId: derivedId,
@@ -4751,9 +4751,9 @@ function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
4751
4751
  privateKeyPem: identity.privateKeyPem,
4752
4752
  createdAtMs: Date.now()
4753
4753
  };
4754
- syncFs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
4754
+ fs$1.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
4755
4755
  try {
4756
- syncFs.chmodSync(filePath, 384);
4756
+ fs$1.chmodSync(filePath, 384);
4757
4757
  } catch {}
4758
4758
  return identity;
4759
4759
  }
@@ -4903,8 +4903,8 @@ function resolveDeviceAuthPath(env = process.env) {
4903
4903
  }
4904
4904
  function readStore(filePath) {
4905
4905
  try {
4906
- if (!syncFs.existsSync(filePath)) return null;
4907
- const raw = syncFs.readFileSync(filePath, "utf8");
4906
+ if (!fs$1.existsSync(filePath)) return null;
4907
+ const raw = fs$1.readFileSync(filePath, "utf8");
4908
4908
  const parsed = JSON.parse(raw);
4909
4909
  if (parsed?.version !== 1 || typeof parsed.deviceId !== "string") return null;
4910
4910
  if (!parsed.tokens || typeof parsed.tokens !== "object") return null;
@@ -4914,10 +4914,10 @@ function readStore(filePath) {
4914
4914
  }
4915
4915
  }
4916
4916
  function writeStore(filePath, store) {
4917
- syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
4918
- syncFs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
4917
+ fs$1.mkdirSync(path.dirname(filePath), { recursive: true });
4918
+ fs$1.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
4919
4919
  try {
4920
- syncFs.chmodSync(filePath, 384);
4920
+ fs$1.chmodSync(filePath, 384);
4921
4921
  } catch {}
4922
4922
  }
4923
4923
  function loadDeviceAuthToken(params) {
@@ -7937,7 +7937,7 @@ async function routeReply(params) {
7937
7937
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7938
7938
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7939
7939
  try {
7940
- const { deliverOutboundPayloads } = await import("./deliver-BQeDhZSa.js").then((n) => n.n);
7940
+ const { deliverOutboundPayloads } = await import("./deliver-DReSDWa4.js").then((n) => n.n);
7941
7941
  const outboundSession = buildOutboundSessionContext({
7942
7942
  cfg,
7943
7943
  agentId: resolvedAgentId,
@@ -8457,7 +8457,7 @@ function normalizeSessionKey$1(value) {
8457
8457
  }
8458
8458
  function readSessionStore(storePath) {
8459
8459
  try {
8460
- const raw = syncFs.readFileSync(storePath, "utf-8");
8460
+ const raw = fs$1.readFileSync(storePath, "utf-8");
8461
8461
  const parsed = JSON5.parse(raw);
8462
8462
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
8463
8463
  } catch {}
@@ -17452,7 +17452,7 @@ function mergeLegacyAgent(current, legacy) {
17452
17452
  }
17453
17453
  function ensureDir$1(filePath) {
17454
17454
  const dir = path.dirname(filePath);
17455
- syncFs.mkdirSync(dir, { recursive: true });
17455
+ fs$1.mkdirSync(dir, { recursive: true });
17456
17456
  }
17457
17457
  function coerceAllowlistEntries(allowlist) {
17458
17458
  if (!Array.isArray(allowlist) || allowlist.length === 0) return Array.isArray(allowlist) ? allowlist : void 0;
@@ -17522,11 +17522,11 @@ function generateToken() {
17522
17522
  function loadExecApprovals() {
17523
17523
  const filePath = resolveExecApprovalsPath();
17524
17524
  try {
17525
- if (!syncFs.existsSync(filePath)) return normalizeExecApprovals({
17525
+ if (!fs$1.existsSync(filePath)) return normalizeExecApprovals({
17526
17526
  version: 1,
17527
17527
  agents: {}
17528
17528
  });
17529
- const raw = syncFs.readFileSync(filePath, "utf8");
17529
+ const raw = fs$1.readFileSync(filePath, "utf8");
17530
17530
  const parsed = JSON.parse(raw);
17531
17531
  if (parsed?.version !== 1) return normalizeExecApprovals({
17532
17532
  version: 1,
@@ -17543,9 +17543,9 @@ function loadExecApprovals() {
17543
17543
  function saveExecApprovals(file) {
17544
17544
  const filePath = resolveExecApprovalsPath();
17545
17545
  ensureDir$1(filePath);
17546
- syncFs.writeFileSync(filePath, `${JSON.stringify(file, null, 2)}\n`, { mode: 384 });
17546
+ fs$1.writeFileSync(filePath, `${JSON.stringify(file, null, 2)}\n`, { mode: 384 });
17547
17547
  try {
17548
- syncFs.chmodSync(filePath, 384);
17548
+ fs$1.chmodSync(filePath, 384);
17549
17549
  } catch {}
17550
17550
  }
17551
17551
  function ensureExecApprovals() {
@@ -18030,18 +18030,18 @@ function drainSystemEventEntries(sessionKey) {
18030
18030
  function resolvePowerShellPath() {
18031
18031
  const programFiles = process.env.ProgramFiles || process.env.PROGRAMFILES || "C:\\Program Files";
18032
18032
  const pwsh7 = path.join(programFiles, "PowerShell", "7", "pwsh.exe");
18033
- if (syncFs.existsSync(pwsh7)) return pwsh7;
18033
+ if (fs$1.existsSync(pwsh7)) return pwsh7;
18034
18034
  const programW6432 = process.env.ProgramW6432;
18035
18035
  if (programW6432 && programW6432 !== programFiles) {
18036
18036
  const pwsh7Alt = path.join(programW6432, "PowerShell", "7", "pwsh.exe");
18037
- if (syncFs.existsSync(pwsh7Alt)) return pwsh7Alt;
18037
+ if (fs$1.existsSync(pwsh7Alt)) return pwsh7Alt;
18038
18038
  }
18039
18039
  const pwshInPath = resolveShellFromPath("pwsh");
18040
18040
  if (pwshInPath) return pwshInPath;
18041
18041
  const systemRoot = process.env.SystemRoot || process.env.WINDIR;
18042
18042
  if (systemRoot) {
18043
18043
  const candidate = path.join(systemRoot, "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
18044
- if (syncFs.existsSync(candidate)) return candidate;
18044
+ if (fs$1.existsSync(candidate)) return candidate;
18045
18045
  }
18046
18046
  return "powershell.exe";
18047
18047
  }
@@ -18079,7 +18079,7 @@ function resolveShellFromPath(name) {
18079
18079
  for (const entry of entries) {
18080
18080
  const candidate = path.join(entry, name);
18081
18081
  try {
18082
- syncFs.accessSync(candidate, syncFs.constants.X_OK);
18082
+ fs$1.accessSync(candidate, fs$1.constants.X_OK);
18083
18083
  return candidate;
18084
18084
  } catch {}
18085
18085
  }
@@ -21330,7 +21330,7 @@ const MODEL_CACHE = /* @__PURE__ */ new Map();
21330
21330
  await ensureIdleHandsModelsJson(cfg);
21331
21331
  } catch {}
21332
21332
  try {
21333
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-BMRRgVlz.js").then((n) => n.r);
21333
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-DMEzBdm5.js").then((n) => n.r);
21334
21334
  const agentDir = resolveIdleHandsAgentDir();
21335
21335
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
21336
21336
  applyDiscoveredContextWindows({
@@ -21482,7 +21482,7 @@ function walkUpFrom(startDir, opts, resolveAtDir) {
21482
21482
  function hasGitMarker(repoRoot) {
21483
21483
  const gitPath = path.join(repoRoot, ".git");
21484
21484
  try {
21485
- const stat = syncFs.statSync(gitPath);
21485
+ const stat = fs$1.statSync(gitPath);
21486
21486
  return stat.isDirectory() || stat.isFile();
21487
21487
  } catch {
21488
21488
  return false;
@@ -21494,10 +21494,10 @@ function findGitRoot(startDir, opts = {}) {
21494
21494
  function resolveGitDirFromMarker(repoRoot) {
21495
21495
  const gitPath = path.join(repoRoot, ".git");
21496
21496
  try {
21497
- const stat = syncFs.statSync(gitPath);
21497
+ const stat = fs$1.statSync(gitPath);
21498
21498
  if (stat.isDirectory()) return gitPath;
21499
21499
  if (!stat.isFile()) return null;
21500
- const match = syncFs.readFileSync(gitPath, "utf-8").match(/gitdir:\s*(.+)/i);
21500
+ const match = fs$1.readFileSync(gitPath, "utf-8").match(/gitdir:\s*(.+)/i);
21501
21501
  if (!match?.[1]) return null;
21502
21502
  return path.resolve(repoRoot, match[1].trim());
21503
21503
  } catch {
@@ -21564,7 +21564,7 @@ const resolveCommitHash = (options = {}) => {
21564
21564
  cachedCommit = null;
21565
21565
  return cachedCommit;
21566
21566
  }
21567
- const head = syncFs.readFileSync(headPath, "utf-8").trim();
21567
+ const head = fs$1.readFileSync(headPath, "utf-8").trim();
21568
21568
  if (!head) {
21569
21569
  cachedCommit = null;
21570
21570
  return cachedCommit;
@@ -21572,7 +21572,7 @@ const resolveCommitHash = (options = {}) => {
21572
21572
  if (head.startsWith("ref:")) {
21573
21573
  const ref = head.replace(/^ref:\s*/i, "").trim();
21574
21574
  const refPath = path.resolve(path.dirname(headPath), ref);
21575
- cachedCommit = formatCommit(syncFs.readFileSync(refPath, "utf-8").trim());
21575
+ cachedCommit = formatCommit(fs$1.readFileSync(refPath, "utf-8").trim());
21576
21576
  return cachedCommit;
21577
21577
  }
21578
21578
  cachedCommit = formatCommit(head);
@@ -21832,17 +21832,17 @@ const readUsageFromSessionLog = (sessionId, sessionEntry, agentId, sessionKey, s
21832
21832
  } catch {
21833
21833
  return;
21834
21834
  }
21835
- if (!syncFs.existsSync(logPath)) return;
21835
+ if (!fs$1.existsSync(logPath)) return;
21836
21836
  try {
21837
21837
  const TAIL_BYTES = 8192;
21838
- const stat = syncFs.statSync(logPath);
21838
+ const stat = fs$1.statSync(logPath);
21839
21839
  const offset = Math.max(0, stat.size - TAIL_BYTES);
21840
21840
  const buf = Buffer.alloc(Math.min(TAIL_BYTES, stat.size));
21841
- const fd = syncFs.openSync(logPath, "r");
21841
+ const fd = fs$1.openSync(logPath, "r");
21842
21842
  try {
21843
- syncFs.readSync(fd, buf, 0, buf.length, offset);
21843
+ fs$1.readSync(fd, buf, 0, buf.length, offset);
21844
21844
  } finally {
21845
- syncFs.closeSync(fd);
21845
+ fs$1.closeSync(fd);
21846
21846
  }
21847
21847
  const tail = buf.toString("utf-8");
21848
21848
  const lines = (offset > 0 ? tail.slice(tail.indexOf("\n") + 1) : tail).split(/\n+/);
@@ -23062,7 +23062,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23062
23062
  };
23063
23063
  const arg = body.slice(6).trim();
23064
23064
  if (arg === "status" || arg === "") {
23065
- const { antonStatus } = await import("./anton-C8SARtai.js");
23065
+ const { antonStatus } = await import("./anton-CH-O1fKX.js");
23066
23066
  const lines = [];
23067
23067
  await antonStatus({
23068
23068
  log: (msg) => lines.push(msg),
@@ -23078,7 +23078,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23078
23078
  return { shouldContinue: false };
23079
23079
  }
23080
23080
  if (arg === "stop") {
23081
- const { antonStop } = await import("./anton-C8SARtai.js");
23081
+ const { antonStop } = await import("./anton-CH-O1fKX.js");
23082
23082
  const lines = [];
23083
23083
  await antonStop({
23084
23084
  log: (msg) => lines.push(msg),
@@ -23116,8 +23116,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23116
23116
  await sendProgress(replyCtx, text);
23117
23117
  return { shouldContinue: false };
23118
23118
  }
23119
- const { runAnton, formatProgressMessage } = await import("./anton-C8SARtai.js");
23120
- const { createDefaultDeps } = await import("./deps-UTcCCmJ6.js").then((n) => n.n);
23119
+ const { runAnton, formatProgressMessage } = await import("./anton-CH-O1fKX.js");
23120
+ const { createDefaultDeps } = await import("./deps-D0XOoTym.js").then((n) => n.n);
23121
23121
  const { createNonExitingRuntime } = await import("./runtime-8mi3mpYB.js").then((n) => n.r);
23122
23122
  const runtime = createNonExitingRuntime();
23123
23123
  const deps = createDefaultDeps();
@@ -23214,8 +23214,8 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23214
23214
  }
23215
23215
  try {
23216
23216
  if (params.sessionKey) {
23217
- const { updateSessionStoreEntry } = await import("./sessions-DA2oWrdb.js").then((n) => n.u);
23218
- const { resolveDefaultSessionStorePath } = await import("./paths-D_qUel1T.js").then((n) => n.n);
23217
+ const { updateSessionStoreEntry } = await import("./sessions-BA3_G98W.js").then((n) => n.u);
23218
+ const { resolveDefaultSessionStorePath } = await import("./paths-D3p7ZvM6.js").then((n) => n.n);
23219
23219
  await updateSessionStoreEntry({
23220
23220
  storePath: params.storePath ?? resolveDefaultSessionStorePath(),
23221
23221
  sessionKey: params.sessionKey,
@@ -23404,7 +23404,7 @@ function resolveRepoRoot(params) {
23404
23404
  const configured = params.config?.agents?.defaults?.repoRoot?.trim();
23405
23405
  if (configured) try {
23406
23406
  const resolved = path.resolve(configured);
23407
- if (syncFs.statSync(resolved).isDirectory()) return resolved;
23407
+ if (fs$1.statSync(resolved).isDirectory()) return resolved;
23408
23408
  } catch {}
23409
23409
  const candidates = [params.workspaceDir, params.cwd].map((value) => value?.trim()).filter(Boolean);
23410
23410
  const seen = /* @__PURE__ */ new Set();
@@ -24176,7 +24176,7 @@ async function buildContextReply(params) {
24176
24176
  //#region src/auto-reply/reply/commands-export-session.ts
24177
24177
  const EXPORT_HTML_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "export-html");
24178
24178
  function loadTemplate(fileName) {
24179
- return syncFs.readFileSync(path.join(EXPORT_HTML_DIR, fileName), "utf-8");
24179
+ return fs$1.readFileSync(path.join(EXPORT_HTML_DIR, fileName), "utf-8");
24180
24180
  }
24181
24181
  function generateHtml(sessionData) {
24182
24182
  const template = loadTemplate("template.html");
@@ -24250,7 +24250,7 @@ async function buildExportSessionReply(params) {
24250
24250
  } catch (err) {
24251
24251
  return { text: `❌ Failed to resolve session file: ${err instanceof Error ? err.message : String(err)}` };
24252
24252
  }
24253
- if (!syncFs.existsSync(sessionFile)) return { text: `❌ Session file not found: ${sessionFile}` };
24253
+ if (!fs$1.existsSync(sessionFile)) return { text: `❌ Session file not found: ${sessionFile}` };
24254
24254
  const sessionManager = SessionManager.open(sessionFile);
24255
24255
  const entries = sessionManager.getEntries();
24256
24256
  const header = sessionManager.getHeader();
@@ -24271,8 +24271,8 @@ async function buildExportSessionReply(params) {
24271
24271
  const defaultFileName = `idlehands-session-${entry.sessionId.slice(0, 8)}-${timestamp}.html`;
24272
24272
  const outputPath = args.outputPath ? path.resolve(args.outputPath.startsWith("~") ? args.outputPath.replace("~", process.env.HOME ?? "") : args.outputPath) : path.join(params.workspaceDir, defaultFileName);
24273
24273
  const outputDir = path.dirname(outputPath);
24274
- if (!syncFs.existsSync(outputDir)) syncFs.mkdirSync(outputDir, { recursive: true });
24275
- syncFs.writeFileSync(outputPath, html, "utf-8");
24274
+ if (!fs$1.existsSync(outputDir)) fs$1.mkdirSync(outputDir, { recursive: true });
24275
+ fs$1.writeFileSync(outputPath, html, "utf-8");
24276
24276
  const relativePath = path.relative(params.workspaceDir, outputPath);
24277
24277
  return { text: [
24278
24278
  "✅ Session exported!",
@@ -24447,8 +24447,8 @@ function resolveZaiApiKey() {
24447
24447
  }
24448
24448
  try {
24449
24449
  const authPath = path.join(resolveRequiredHomeDir(process.env, os.homedir), ".pi", "agent", "auth.json");
24450
- if (!syncFs.existsSync(authPath)) return;
24451
- const data = JSON.parse(syncFs.readFileSync(authPath, "utf-8"));
24450
+ if (!fs$1.existsSync(authPath)) return;
24451
+ const data = JSON.parse(fs$1.readFileSync(authPath, "utf-8"));
24452
24452
  return data["z-ai"]?.access || data.zai?.access;
24453
24453
  } catch {
24454
24454
  return;
@@ -26211,7 +26211,7 @@ function shouldPersistAnyBindingState() {
26211
26211
  }
26212
26212
  function shouldPersistBindingMutations() {
26213
26213
  if (shouldPersistAnyBindingState()) return true;
26214
- return syncFs.existsSync(resolveThreadBindingsPath());
26214
+ return fs$1.existsSync(resolveThreadBindingsPath());
26215
26215
  }
26216
26216
  function saveBindingsToDisk(params = {}) {
26217
26217
  if (!params.force && !shouldPersistAnyBindingState()) return;
@@ -27475,7 +27475,7 @@ const applyCostTotal = (totals, costTotal) => {
27475
27475
  totals.totalCost += costTotal;
27476
27476
  };
27477
27477
  async function* readJsonlRecords(filePath) {
27478
- const fileStream = syncFs.createReadStream(filePath, { encoding: "utf-8" });
27478
+ const fileStream = fs$1.createReadStream(filePath, { encoding: "utf-8" });
27479
27479
  const rl = readline.createInterface({
27480
27480
  input: fileStream,
27481
27481
  crlfDelay: Infinity
@@ -27547,10 +27547,10 @@ async function loadCostUsageSummary(params) {
27547
27547
  const dailyMap = /* @__PURE__ */ new Map();
27548
27548
  const totals = emptyTotals();
27549
27549
  const sessionsDir = resolveSessionTranscriptsDirForAgent(params?.agentId);
27550
- const entries = await syncFs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
27550
+ const entries = await fs$1.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
27551
27551
  const files = (await Promise.all(entries.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map(async (entry) => {
27552
27552
  const filePath = path.join(sessionsDir, entry.name);
27553
- const stats = await syncFs.promises.stat(filePath).catch(() => null);
27553
+ const stats = await fs$1.promises.stat(filePath).catch(() => null);
27554
27554
  if (!stats) return null;
27555
27555
  if (stats.mtimeMs < sinceTime) return null;
27556
27556
  return filePath;
@@ -27583,7 +27583,7 @@ async function loadCostUsageSummary(params) {
27583
27583
  }
27584
27584
  async function loadSessionCostSummary(params) {
27585
27585
  const sessionFile = params.sessionFile ?? (params.sessionId ? resolveSessionFilePath(params.sessionId, params.sessionEntry, { agentId: params.agentId }) : void 0);
27586
- if (!sessionFile || !syncFs.existsSync(sessionFile)) return null;
27586
+ if (!sessionFile || !fs$1.existsSync(sessionFile)) return null;
27587
27587
  const totals = emptyTotals();
27588
27588
  let firstActivity;
27589
27589
  let lastActivity;
@@ -29900,7 +29900,7 @@ async function createModelSelectionState(params) {
29900
29900
  }
29901
29901
  }
29902
29902
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
29903
- const { ensureAuthProfileStore } = await import("./model-selection-D5g8tXIY.js").then((n) => n.O);
29903
+ const { ensureAuthProfileStore } = await import("./model-selection-C5BhfuPa.js").then((n) => n.O);
29904
29904
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
29905
29905
  const providerKey = normalizeProviderId(provider);
29906
29906
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -33422,7 +33422,7 @@ function asBoolean(value) {
33422
33422
  }
33423
33423
  function resolveTempPathParts(opts) {
33424
33424
  const tmpDir = opts.tmpDir ?? resolvePreferredIdleHandsTmpDir();
33425
- if (!opts.tmpDir) syncFs.mkdirSync(tmpDir, {
33425
+ if (!opts.tmpDir) fs$1.mkdirSync(tmpDir, {
33426
33426
  recursive: true,
33427
33427
  mode: 448
33428
33428
  });
@@ -33488,7 +33488,7 @@ async function writeUrlToFile(filePath, url) {
33488
33488
  if (typeof contentLength === "number" && Number.isFinite(contentLength) && contentLength > MAX_CAMERA_URL_DOWNLOAD_BYTES) throw new Error(`writeUrlToFile: content-length ${contentLength} exceeds max ${MAX_CAMERA_URL_DOWNLOAD_BYTES}`);
33489
33489
  const body = res.body;
33490
33490
  if (!body) throw new Error(`failed to download ${url}: empty response body`);
33491
- const fileHandle = await fs$1.open(filePath, "w");
33491
+ const fileHandle = await fs$2.open(filePath, "w");
33492
33492
  let bytes = 0;
33493
33493
  let thrown;
33494
33494
  try {
@@ -33507,7 +33507,7 @@ async function writeUrlToFile(filePath, url) {
33507
33507
  await fileHandle.close();
33508
33508
  }
33509
33509
  if (thrown) {
33510
- await fs$1.unlink(filePath).catch(() => {});
33510
+ await fs$2.unlink(filePath).catch(() => {});
33511
33511
  throw thrown;
33512
33512
  }
33513
33513
  return {
@@ -33517,7 +33517,7 @@ async function writeUrlToFile(filePath, url) {
33517
33517
  }
33518
33518
  async function writeBase64ToFile(filePath, base64) {
33519
33519
  const buf = Buffer.from(base64, "base64");
33520
- await fs$1.writeFile(filePath, buf);
33520
+ await fs$2.writeFile(filePath, buf);
33521
33521
  return {
33522
33522
  path: filePath,
33523
33523
  bytes: buf.length
@@ -36362,9 +36362,9 @@ function loadExternalCatalogEntries(options) {
36362
36362
  const entries = [];
36363
36363
  for (const rawPath of paths) {
36364
36364
  const resolved = resolveUserPath(rawPath);
36365
- if (!syncFs.existsSync(resolved)) continue;
36365
+ if (!fs$1.existsSync(resolved)) continue;
36366
36366
  try {
36367
- const payload = JSON.parse(syncFs.readFileSync(resolved, "utf-8"));
36367
+ const payload = JSON.parse(fs$1.readFileSync(resolved, "utf-8"));
36368
36368
  entries.push(...parseCatalogEntries(payload));
36369
36369
  } catch {}
36370
36370
  }
@@ -39580,7 +39580,7 @@ function listExistingAgentIdsFromDisk() {
39580
39580
  const root = resolveStateDir();
39581
39581
  const agentsDir = path.join(root, "agents");
39582
39582
  try {
39583
- return syncFs.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
39583
+ return fs$1.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
39584
39584
  } catch {
39585
39585
  return [];
39586
39586
  }
@@ -45425,7 +45425,7 @@ async function runAgentTurnWithFallback(params) {
45425
45425
  if (corruptedSessionId) {
45426
45426
  const transcriptPath = resolveSessionTranscriptPath(corruptedSessionId);
45427
45427
  try {
45428
- syncFs.unlinkSync(transcriptPath);
45428
+ fs$1.unlinkSync(transcriptPath);
45429
45429
  } catch {}
45430
45430
  }
45431
45431
  delete params.activeSessionStore[sessionKey];
@@ -46160,9 +46160,9 @@ function auditPostCompactionReads(readFilePaths, workspaceDir, requiredReads = D
46160
46160
  * Returns messages from the last N lines (default 100).
46161
46161
  */
46162
46162
  function readSessionMessages(sessionFile, maxLines = 100) {
46163
- if (!syncFs.existsSync(sessionFile)) return [];
46163
+ if (!fs$1.existsSync(sessionFile)) return [];
46164
46164
  try {
46165
- const recentLines = syncFs.readFileSync(sessionFile, "utf-8").trim().split("\n").slice(-maxLines);
46165
+ const recentLines = fs$1.readFileSync(sessionFile, "utf-8").trim().split("\n").slice(-maxLines);
46166
46166
  const messages = [];
46167
46167
  for (const line of recentLines) try {
46168
46168
  const entry = JSON.parse(line);
@@ -46203,8 +46203,8 @@ const MAX_CONTEXT_CHARS = 3e3;
46203
46203
  async function readPostCompactionContext(workspaceDir) {
46204
46204
  const agentsPath = path.join(workspaceDir, "AGENTS.md");
46205
46205
  try {
46206
- if (!syncFs.existsSync(agentsPath)) return null;
46207
- const sections = extractSections(await syncFs.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
46206
+ if (!fs$1.existsSync(agentsPath)) return null;
46207
+ const sections = extractSections(await fs$1.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
46208
46208
  if (sections.length === 0) return null;
46209
46209
  const combined = sections.join("\n\n");
46210
46210
  return "[Post-compaction context refresh]\n\nSession was just compacted. The conversation summary above is a hint, NOT a substitute for your startup sequence. Execute your Session Startup sequence now — read the required files before responding to the user.\n\nCritical rules from AGENTS.md:\n\n" + (combined.length > MAX_CONTEXT_CHARS ? combined.slice(0, MAX_CONTEXT_CHARS) + "\n...[truncated]..." : combined);
@@ -46438,7 +46438,7 @@ async function runReplyAgent(params) {
46438
46438
  if (resolved) transcriptCandidates.add(resolved);
46439
46439
  transcriptCandidates.add(resolveSessionTranscriptPath(prevSessionId, agentId));
46440
46440
  for (const candidate of transcriptCandidates) try {
46441
- syncFs.unlinkSync(candidate);
46441
+ fs$1.unlinkSync(candidate);
46442
46442
  } catch {}
46443
46443
  }
46444
46444
  return true;
@@ -47429,7 +47429,7 @@ async function deliverSessionMaintenanceWarning(params) {
47429
47429
  return;
47430
47430
  }
47431
47431
  try {
47432
- const { deliverOutboundPayloads } = await import("./deliver-BQeDhZSa.js").then((n) => n.n);
47432
+ const { deliverOutboundPayloads } = await import("./deliver-DReSDWa4.js").then((n) => n.n);
47433
47433
  const outboundSession = buildOutboundSessionContext({
47434
47434
  cfg: params.cfg,
47435
47435
  sessionKey: params.sessionKey
@@ -47486,7 +47486,7 @@ function forkSessionFromParent(params) {
47486
47486
  agentId: params.agentId,
47487
47487
  sessionsDir: params.sessionsDir
47488
47488
  });
47489
- if (!parentSessionFile || !syncFs.existsSync(parentSessionFile)) return null;
47489
+ if (!parentSessionFile || !fs$1.existsSync(parentSessionFile)) return null;
47490
47490
  try {
47491
47491
  const manager = SessionManager.open(parentSessionFile);
47492
47492
  const leafId = manager.getLeafId();
@@ -47510,7 +47510,7 @@ function forkSessionFromParent(params) {
47510
47510
  cwd: manager.getCwd(),
47511
47511
  parentSession: parentSessionFile
47512
47512
  };
47513
- syncFs.writeFileSync(sessionFile, `${JSON.stringify(header)}\n`, "utf-8");
47513
+ fs$1.writeFileSync(sessionFile, `${JSON.stringify(header)}\n`, "utf-8");
47514
47514
  return {
47515
47515
  sessionId,
47516
47516
  sessionFile
@@ -51865,7 +51865,7 @@ async function describeStickerImage(params) {
51865
51865
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
51866
51866
  try {
51867
51867
  const buffer = await fs.readFile(imagePath);
51868
- const { describeImageWithModel } = await import("./image-4HTajysw.js").then((n) => n.n);
51868
+ const { describeImageWithModel } = await import("./image-DBhgEUm0.js").then((n) => n.n);
51869
51869
  return (await describeImageWithModel({
51870
51870
  buffer,
51871
51871
  fileName: "sticker.webp",
@@ -52319,7 +52319,7 @@ function createWhatsAppLoginTool() {
52319
52319
  force: Type.Optional(Type.Boolean())
52320
52320
  }),
52321
52321
  execute: async (_toolCallId, args) => {
52322
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DS_9MrMo.js");
52322
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-D090cMcd.js");
52323
52323
  if ((args?.action ?? "start") === "wait") {
52324
52324
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
52325
52325
  return {
@@ -52606,7 +52606,7 @@ async function withMemoryManagerForAgent(params) {
52606
52606
  }
52607
52607
  async function checkReadableFile(pathname) {
52608
52608
  try {
52609
- await fs.access(pathname, syncFs.constants.R_OK);
52609
+ await fs.access(pathname, fs$1.constants.R_OK);
52610
52610
  return { exists: true };
52611
52611
  } catch (err) {
52612
52612
  const code = err.code;
@@ -52665,7 +52665,7 @@ async function scanMemoryFiles(workspaceDir, extraPaths = []) {
52665
52665
  }
52666
52666
  let dirReadable = null;
52667
52667
  try {
52668
- await fs.access(memoryDir, syncFs.constants.R_OK);
52668
+ await fs.access(memoryDir, fs$1.constants.R_OK);
52669
52669
  dirReadable = true;
52670
52670
  } catch (err) {
52671
52671
  const code = err.code;
@@ -54793,7 +54793,7 @@ async function preflightDiscordMessage(params) {
54793
54793
  let preflightTranscript;
54794
54794
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
54795
54795
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
54796
- const { transcribeFirstAudio } = await import("./audio-preflight-DdYPJah_.js");
54796
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwOVlM_o.js");
54797
54797
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
54798
54798
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
54799
54799
  ctx: {
@@ -56379,7 +56379,7 @@ function identityHasValues(identity) {
56379
56379
  }
56380
56380
  function loadIdentityFromFile(identityPath) {
56381
56381
  try {
56382
- const parsed = parseIdentityMarkdown(syncFs.readFileSync(identityPath, "utf-8"));
56382
+ const parsed = parseIdentityMarkdown(fs$1.readFileSync(identityPath, "utf-8"));
56383
56383
  if (!identityHasValues(parsed)) return null;
56384
56384
  return parsed;
56385
56385
  } catch {
@@ -56403,7 +56403,7 @@ function resolveAvatarSource(cfg, agentId) {
56403
56403
  }
56404
56404
  function resolveExistingPath(value) {
56405
56405
  try {
56406
- return syncFs.realpathSync(value);
56406
+ return fs$1.realpathSync(value);
56407
56407
  } catch {
56408
56408
  return path.resolve(value);
56409
56409
  }
@@ -56421,7 +56421,7 @@ function resolveLocalAvatarPath(params) {
56421
56421
  reason: "unsupported_extension"
56422
56422
  };
56423
56423
  try {
56424
- const stat = syncFs.statSync(realPath);
56424
+ const stat = fs$1.statSync(realPath);
56425
56425
  if (!stat.isFile()) return {
56426
56426
  ok: false,
56427
56427
  reason: "missing"
@@ -57274,9 +57274,9 @@ function createDiscordMessageHandler(params) {
57274
57274
  try {
57275
57275
  const messageText = resolveDiscordMessageText(data.message)?.trim();
57276
57276
  if (messageText) {
57277
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CjVqAFw-.js");
57277
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BXmSbO38.js");
57278
57278
  if (isAbortRequestText(messageText)) {
57279
- const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
57279
+ const { resolveAgentRoute } = await import("./resolve-route-ClcifpKn.js").then((n) => n.r);
57280
57280
  const channelId = resolveDiscordMessageChannelId({
57281
57281
  message: data.message,
57282
57282
  eventChannelId: data.channel_id
@@ -64772,9 +64772,9 @@ async function monitorIMessageProvider(opts = {}) {
64772
64772
  }
64773
64773
  const msgText = (message.text ?? "").trim();
64774
64774
  if (msgText) {
64775
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CjVqAFw-.js");
64775
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BXmSbO38.js");
64776
64776
  if (isAbortRequestText(msgText)) {
64777
- const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
64777
+ const { resolveAgentRoute } = await import("./resolve-route-ClcifpKn.js").then((n) => n.r);
64778
64778
  const route = resolveAgentRoute({
64779
64779
  cfg,
64780
64780
  channel: "imessage",
@@ -64855,7 +64855,7 @@ async function monitorIMessageProvider(opts = {}) {
64855
64855
  function readFileIfExists(filePath) {
64856
64856
  if (!filePath) return;
64857
64857
  try {
64858
- return syncFs.readFileSync(filePath, "utf-8").trim();
64858
+ return fs$1.readFileSync(filePath, "utf-8").trim();
64859
64859
  } catch {
64860
64860
  return;
64861
64861
  }
@@ -65431,7 +65431,7 @@ async function downloadLineMedia(messageId, channelAccessToken, maxBytes = 10 *
65431
65431
  prefix: "line-media",
65432
65432
  extension: getExtensionForContentType(contentType)
65433
65433
  });
65434
- await syncFs.promises.writeFile(filePath, buffer);
65434
+ await fs$1.promises.writeFile(filePath, buffer);
65435
65435
  logVerbose(`line: downloaded media ${messageId} to ${filePath} (${buffer.length} bytes)`);
65436
65436
  return {
65437
65437
  path: filePath,
@@ -67383,9 +67383,9 @@ function createSignalEventHandler(deps) {
67383
67383
  const senderName = envelope.sourceName ?? senderDisplay;
67384
67384
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
67385
67385
  if (bodyText) {
67386
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CjVqAFw-.js");
67386
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BXmSbO38.js");
67387
67387
  if (isAbortRequestText(bodyText)) {
67388
- const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
67388
+ const { resolveAgentRoute } = await import("./resolve-route-ClcifpKn.js").then((n) => n.r);
67389
67389
  const route = resolveAgentRoute({
67390
67390
  cfg: deps.cfg,
67391
67391
  channel: "signal",
@@ -70765,9 +70765,9 @@ function createSlackMessageHandler(params) {
70765
70765
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
70766
70766
  const rawText = (message.text ?? "").trim();
70767
70767
  if (rawText) {
70768
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CjVqAFw-.js");
70768
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BXmSbO38.js");
70769
70769
  if (isAbortRequestText(rawText)) {
70770
- const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
70770
+ const { resolveAgentRoute } = await import("./resolve-route-ClcifpKn.js").then((n) => n.r);
70771
70771
  const route = resolveAgentRoute({
70772
70772
  cfg: ctx.cfg,
70773
70773
  channel: "slack",
@@ -70887,7 +70887,7 @@ function readSlackExternalArgMenuToken(raw) {
70887
70887
  }
70888
70888
  let commandsRegistry;
70889
70889
  async function getCommandsRegistry() {
70890
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-C_zNi-Ou.js").then((n) => n.n);
70890
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-Cy_UQS_3.js").then((n) => n.n);
70891
70891
  return commandsRegistry;
70892
70892
  }
70893
70893
  function encodeSlackCommandArgValue(parts) {
@@ -71211,14 +71211,14 @@ async function registerSlackMonitorSlashCommands(params) {
71211
71211
  const channelName = channelInfo?.name;
71212
71212
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
71213
71213
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
71214
- import("./resolve-route-DuttYY7A.js").then((n) => n.r),
71214
+ import("./resolve-route-ClcifpKn.js").then((n) => n.r),
71215
71215
  import("./inbound-context-BYczzTII.js").then((n) => n.n),
71216
71216
  Promise.resolve().then(() => provider_dispatcher_exports)
71217
71217
  ]);
71218
71218
  const [{ resolveConversationLabel }, { createReplyPrefixOptions }, { recordSessionMetaFromInbound, resolveStorePath }] = await Promise.all([
71219
71219
  import("./conversation-label-1Wad2kXc.js").then((n) => n.t),
71220
- import("./reply-prefix-BUgeSN2R.js").then((n) => n.n),
71221
- import("./sessions-DA2oWrdb.js").then((n) => n.t)
71220
+ import("./reply-prefix-DCljZiIB.js").then((n) => n.n),
71221
+ import("./sessions-BA3_G98W.js").then((n) => n.t)
71222
71222
  ]);
71223
71223
  const route = resolveAgentRoute({
71224
71224
  cfg,
@@ -71286,9 +71286,9 @@ async function registerSlackMonitorSlashCommands(params) {
71286
71286
  });
71287
71287
  const deliverSlashPayloads = async (replies) => {
71288
71288
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
71289
- import("./replies-uBXwI7WM.js").then((n) => n.r),
71290
- import("./chunk-CMpX7Jaz.js").then((n) => n.s),
71291
- import("./markdown-tables-CzsockiZ.js").then((n) => n.t)
71289
+ import("./replies-BxRl_2Nq.js").then((n) => n.r),
71290
+ import("./chunk-Djk-9JeT.js").then((n) => n.s),
71291
+ import("./markdown-tables-R8VTpfE9.js").then((n) => n.t)
71292
71292
  ]);
71293
71293
  await deliverSlackSlashReplies({
71294
71294
  replies,
@@ -71341,7 +71341,7 @@ async function registerSlackMonitorSlashCommands(params) {
71341
71341
  let nativeCommands = [];
71342
71342
  if (nativeEnabled) {
71343
71343
  reg = await getCommandsRegistry();
71344
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-AySApC-2.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
71344
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DnTjl_m1.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
71345
71345
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
71346
71346
  skillCommands,
71347
71347
  provider: "slack"
@@ -72959,7 +72959,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
72959
72959
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
72960
72960
  const text = typeof msg.text === "string" ? msg.text : void 0;
72961
72961
  if (text) {
72962
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CjVqAFw-.js");
72962
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BXmSbO38.js");
72963
72963
  if (isAbortRequestText(text)) {
72964
72964
  const senderId = msg.from?.id ? String(msg.from.id) : "";
72965
72965
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -73846,7 +73846,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
73846
73846
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
73847
73847
  let preflightTranscript;
73848
73848
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
73849
- const { transcribeFirstAudio } = await import("./audio-preflight-DdYPJah_.js");
73849
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwOVlM_o.js");
73850
73850
  preflightTranscript = await transcribeFirstAudio({
73851
73851
  ctx: {
73852
73852
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -76432,23 +76432,23 @@ let webLoginQrPromise = null;
76432
76432
  let webChannelPromise = null;
76433
76433
  let whatsappActionsPromise = null;
76434
76434
  function loadWebOutbound() {
76435
- webOutboundPromise ??= import("./outbound-Dq9yoBDJ.js").then((n) => n.t);
76435
+ webOutboundPromise ??= import("./outbound-D3dHUVkO.js").then((n) => n.t);
76436
76436
  return webOutboundPromise;
76437
76437
  }
76438
76438
  function loadWebLogin() {
76439
- webLoginPromise ??= import("./login-B8EuUm6R.js").then((n) => n.n);
76439
+ webLoginPromise ??= import("./login-CtL3gtbh.js").then((n) => n.n);
76440
76440
  return webLoginPromise;
76441
76441
  }
76442
76442
  function loadWebLoginQr() {
76443
- webLoginQrPromise ??= import("./login-qr-DS_9MrMo.js");
76443
+ webLoginQrPromise ??= import("./login-qr-D090cMcd.js");
76444
76444
  return webLoginQrPromise;
76445
76445
  }
76446
76446
  function loadWebChannel() {
76447
- webChannelPromise ??= import("./web-Dkl33QN0.js");
76447
+ webChannelPromise ??= import("./web-DxQjSHSJ.js");
76448
76448
  return webChannelPromise;
76449
76449
  }
76450
76450
  function loadWhatsAppActions() {
76451
- whatsappActionsPromise ??= import("./whatsapp-actions-C_BWc4tJ.js");
76451
+ whatsappActionsPromise ??= import("./whatsapp-actions-DmI59VQd.js");
76452
76452
  return whatsappActionsPromise;
76453
76453
  }
76454
76454
  function createPluginRuntime() {
@@ -76678,7 +76678,7 @@ const resolvePluginSdkAliasFile = (params) => {
76678
76678
  const srcCandidate = path.join(cursor, "src", "plugin-sdk", params.srcFile);
76679
76679
  const distCandidate = path.join(cursor, "dist", "plugin-sdk", params.distFile);
76680
76680
  const orderedCandidates = isDistRuntime ? [distCandidate, srcCandidate] : isTest ? [distCandidate, srcCandidate] : [distCandidate];
76681
- for (const candidate of orderedCandidates) if (syncFs.existsSync(candidate)) return candidate;
76681
+ for (const candidate of orderedCandidates) if (fs$1.existsSync(candidate)) return candidate;
76682
76682
  const parent = path.dirname(cursor);
76683
76683
  if (parent === cursor) break;
76684
76684
  cursor = parent;
@@ -77016,7 +77016,7 @@ function loadIdleHandsPlugins(options = {}) {
77016
77016
  continue;
77017
77017
  }
77018
77018
  const safeSource = opened.path;
77019
- syncFs.closeSync(opened.fd);
77019
+ fs$1.closeSync(opened.fd);
77020
77020
  let mod = null;
77021
77021
  try {
77022
77022
  mod = getJiti()(safeSource);
@@ -77153,7 +77153,7 @@ function loadIdleHandsPlugins(options = {}) {
77153
77153
  }
77154
77154
  function safeRealpathOrResolve(value) {
77155
77155
  try {
77156
- return syncFs.realpathSync(value);
77156
+ return fs$1.realpathSync(value);
77157
77157
  } catch {
77158
77158
  return path.resolve(value);
77159
77159
  }
@@ -77517,9 +77517,9 @@ function resolvePatchFileOps(options) {
77517
77517
  });
77518
77518
  assertBoundaryRead(opened, filePath);
77519
77519
  try {
77520
- return syncFs.readFileSync(opened.fd, "utf8");
77520
+ return fs$1.readFileSync(opened.fd, "utf8");
77521
77521
  } finally {
77522
- syncFs.closeSync(opened.fd);
77522
+ fs$1.closeSync(opened.fd);
77523
77523
  }
77524
77524
  },
77525
77525
  writeFile: async (filePath, content) => {
@@ -77821,7 +77821,7 @@ async function recordLoopOutcome(args) {
77821
77821
  if (!args.ctx?.sessionKey) return;
77822
77822
  try {
77823
77823
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BGF2r-kt.js").then((n) => n.n);
77824
- const { recordToolCallOutcome } = await import("./tool-loop-detection-BNGetx3Z.js");
77824
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-CjWRg_4q.js");
77825
77825
  recordToolCallOutcome(getDiagnosticSessionState({
77826
77826
  sessionKey: args.ctx.sessionKey,
77827
77827
  sessionId: args.ctx?.agentId
@@ -77842,8 +77842,8 @@ async function runBeforeToolCallHook(args) {
77842
77842
  const params = args.params;
77843
77843
  if (args.ctx?.sessionKey) {
77844
77844
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BGF2r-kt.js").then((n) => n.n);
77845
- const { logToolLoopAction } = await import("./diagnostic-4owMk4vH.js").then((n) => n.n);
77846
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-BNGetx3Z.js");
77845
+ const { logToolLoopAction } = await import("./diagnostic-BvlZ0Sot.js").then((n) => n.n);
77846
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-CjWRg_4q.js");
77847
77847
  const sessionState = getDiagnosticSessionState({
77848
77848
  sessionKey: args.ctx.sessionKey,
77849
77849
  sessionId: args.ctx?.agentId
@@ -80609,8 +80609,8 @@ async function readWorkspaceContextForSummary() {
80609
80609
  const workspaceDir = process.cwd();
80610
80610
  const agentsPath = path.join(workspaceDir, "AGENTS.md");
80611
80611
  try {
80612
- if (!syncFs.existsSync(agentsPath)) return "";
80613
- const sections = extractSections(await syncFs.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
80612
+ if (!fs$1.existsSync(agentsPath)) return "";
80613
+ const sections = extractSections(await fs$1.promises.readFile(agentsPath, "utf-8"), ["Session Startup", "Red Lines"]);
80614
80614
  if (sections.length === 0) return "";
80615
80615
  const combined = sections.join("\n\n");
80616
80616
  return `\n\n<workspace-critical-rules>\n${combined.length > MAX_SUMMARY_CONTEXT_CHARS ? combined.slice(0, MAX_SUMMARY_CONTEXT_CHARS) + "\n...[truncated]..." : combined}\n</workspace-critical-rules>`;
@@ -81978,7 +81978,7 @@ async function compactEmbeddedPiSessionDirect(params) {
81978
81978
  if (!apiKeyInfo.apiKey) {
81979
81979
  if (apiKeyInfo.mode !== "aws-sdk") throw new Error(`No API key resolved for provider "${model.provider}" (auth mode: ${apiKeyInfo.mode}).`);
81980
81980
  } else if (model.provider === "github-copilot") {
81981
- const { resolveCopilotApiToken } = await import("./github-copilot-token-Dgt6cnsM.js").then((n) => n.n);
81981
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-BjmEQcmi.js").then((n) => n.n);
81982
81982
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
81983
81983
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
81984
81984
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -83398,11 +83398,11 @@ function appendRawStream(payload) {
83398
83398
  if (!rawStreamReady) {
83399
83399
  rawStreamReady = true;
83400
83400
  try {
83401
- syncFs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
83401
+ fs$1.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
83402
83402
  } catch {}
83403
83403
  }
83404
83404
  try {
83405
- syncFs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
83405
+ fs$1.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
83406
83406
  } catch {}
83407
83407
  }
83408
83408
 
@@ -83428,6 +83428,20 @@ function resolveSilentReplyFallbackText(params) {
83428
83428
  if (!fallback) return params.text;
83429
83429
  return fallback;
83430
83430
  }
83431
+ function hasAssistantToolCallBlock(message) {
83432
+ const content = message.content;
83433
+ if (!Array.isArray(content)) return false;
83434
+ return content.some((block) => {
83435
+ if (!block || typeof block !== "object") return false;
83436
+ const type = block.type;
83437
+ return type === "toolCall" || type === "tool_call";
83438
+ });
83439
+ }
83440
+ function isAssistantToolPlanningMessage(message) {
83441
+ const stopReason = message.stopReason;
83442
+ if (stopReason === "toolUse" || stopReason === "tool_use") return true;
83443
+ return hasAssistantToolCallBlock(message);
83444
+ }
83431
83445
  function handleMessageStart(ctx, evt) {
83432
83446
  if (evt.message?.role !== "assistant") return;
83433
83447
  ctx.resetAssistantMessageState(ctx.state.assistantTexts.length);
@@ -83581,6 +83595,7 @@ function handleMessageEnd(ctx, evt) {
83581
83595
  }),
83582
83596
  messagingToolSentTexts: ctx.state.messagingToolSentTexts
83583
83597
  });
83598
+ const suppressToolPlanningOutput = isAssistantToolPlanningMessage(assistantMessage);
83584
83599
  const rawThinking = ctx.state.includeReasoning || ctx.state.streamReasoning ? extractAssistantThinking(assistantMessage) || extractThinkingFromTaggedText(rawText) : "";
83585
83600
  const formattedReasoning = rawThinking ? formatReasoningMessage(rawThinking) : "";
83586
83601
  const trimmedText = text.trim();
@@ -83598,7 +83613,7 @@ function handleMessageEnd(ctx, evt) {
83598
83613
  hasMedia = Boolean(mediaUrls && mediaUrls.length > 0);
83599
83614
  }
83600
83615
  }
83601
- if (!ctx.state.emittedAssistantUpdate && (cleanedText || hasMedia)) {
83616
+ if (!ctx.state.emittedAssistantUpdate && !suppressToolPlanningOutput && (cleanedText || hasMedia)) {
83602
83617
  emitAgentEvent({
83603
83618
  runId: ctx.params.runId,
83604
83619
  stream: "assistant",
@@ -83621,12 +83636,12 @@ function handleMessageEnd(ctx, evt) {
83621
83636
  const addedDuringMessage = ctx.state.assistantTexts.length > ctx.state.assistantTextBaseline;
83622
83637
  const chunkerHasBuffered = ctx.blockChunker?.hasBuffered() ?? false;
83623
83638
  ctx.finalizeAssistantTexts({
83624
- text,
83639
+ text: suppressToolPlanningOutput ? "" : text,
83625
83640
  addedDuringMessage,
83626
83641
  chunkerHasBuffered
83627
83642
  });
83628
83643
  const onBlockReply = ctx.params.onBlockReply;
83629
- const shouldEmitReasoning = Boolean(ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
83644
+ const shouldEmitReasoning = Boolean(!suppressToolPlanningOutput && ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
83630
83645
  const shouldEmitReasoningBeforeAnswer = shouldEmitReasoning && ctx.state.blockReplyBreak === "message_end" && !addedDuringMessage;
83631
83646
  const maybeEmitReasoning = () => {
83632
83647
  if (!shouldEmitReasoning || !formattedReasoning) return;
@@ -83637,7 +83652,7 @@ function handleMessageEnd(ctx, evt) {
83637
83652
  });
83638
83653
  };
83639
83654
  if (shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
83640
- if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && text && onBlockReply) {
83655
+ if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && !suppressToolPlanningOutput && text && onBlockReply) {
83641
83656
  if (ctx.blockChunker?.hasBuffered()) {
83642
83657
  ctx.blockChunker.drain({
83643
83658
  force: true,
@@ -83662,8 +83677,8 @@ function handleMessageEnd(ctx, evt) {
83662
83677
  }
83663
83678
  }
83664
83679
  if (!shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
83665
- if (ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
83666
- if (ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
83680
+ if (!suppressToolPlanningOutput && ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
83681
+ if (!suppressToolPlanningOutput && ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
83667
83682
  const tailResult = ctx.consumeReplyDirectives("", { final: true });
83668
83683
  if (tailResult) {
83669
83684
  const { text: cleanedText, mediaUrls, audioAsVoice, replyToId, replyToTag, replyToCurrent } = tailResult;
@@ -85071,36 +85086,51 @@ function extractParameterSummary(tool) {
85071
85086
  /**
85072
85087
  * Build compact tool guidance for common coding tools.
85073
85088
  * This is optimized for local models with limited context.
85089
+ * @param excludeTools - Tool names to exclude (e.g., tools with full schemas)
85074
85090
  */
85075
- function buildCompactToolGuidance() {
85076
- return `## Tools
85077
-
85078
- Call tools with JSON: {"tool": "name", "params": {...}}
85079
-
85080
- **exec** - Run shell commands
85091
+ function buildCompactToolGuidance(excludeTools) {
85092
+ const excludeSet = new Set((excludeTools ?? []).map((name) => name.toLowerCase()));
85093
+ const includedTools = [
85094
+ {
85095
+ name: "exec",
85096
+ def: `**exec** - Run shell commands
85081
85097
  command (required): Shell command to execute
85082
85098
  workdir: Working directory
85083
85099
  timeout: Timeout in seconds
85084
- background: Run in background (true/false)
85085
-
85086
- **read** - Read file contents
85100
+ background: Run in background (true/false)`
85101
+ },
85102
+ {
85103
+ name: "read",
85104
+ def: `**read** - Read file contents
85087
85105
  path (required): File path to read
85088
85106
  offset: Start line (1-indexed)
85089
- limit: Max lines to read
85090
-
85091
- **write** - Create/overwrite files
85107
+ limit: Max lines to read`
85108
+ },
85109
+ {
85110
+ name: "write",
85111
+ def: `**write** - Create/overwrite files
85092
85112
  path (required): File path to write
85093
- content (required): Content to write
85094
-
85095
- **edit** - Precise text replacement
85113
+ content (required): Content to write`
85114
+ },
85115
+ {
85116
+ name: "edit",
85117
+ def: `**edit** - Precise text replacement
85096
85118
  path (required): File path to edit
85097
85119
  old_string (required): Exact text to find
85098
- new_string (required): Replacement text
85099
-
85100
- **process** - Manage background processes
85120
+ new_string (required): Replacement text`
85121
+ },
85122
+ {
85123
+ name: "process",
85124
+ def: `**process** - Manage background processes
85101
85125
  action (required): list|poll|kill|log
85102
85126
  sessionId: Session ID for poll/kill/log
85103
- timeout: Poll timeout in ms`;
85127
+ timeout: Poll timeout in ms`
85128
+ }
85129
+ ].filter(({ name }) => !excludeSet.has(name)).map(({ def }) => def);
85130
+ if (includedTools.length === 0) return "";
85131
+ return `## Tools
85132
+
85133
+ ${includedTools.join("\n\n")}`;
85104
85134
  }
85105
85135
 
85106
85136
  //#endregion
@@ -85940,7 +85970,7 @@ async function runEmbeddedAttempt(params) {
85940
85970
  });
85941
85971
  const stubModeConfig = params.config?.tools?.stubMode;
85942
85972
  const tools = applyStubMode(toolsSanitized, stubModeConfig);
85943
- const toolStubGuidance = stubModeConfig?.enabled ? stubModeConfig.guidance ?? (stubModeConfig.compactGuidance ? buildCompactToolGuidance() : generateToolStubGuidance(toolsRaw)) : void 0;
85973
+ const toolStubGuidance = stubModeConfig?.enabled ? stubModeConfig.guidance ?? (stubModeConfig.compactGuidance ? buildCompactToolGuidance(stubModeConfig.fullSchemaTools) : generateToolStubGuidance(toolsRaw)) : void 0;
85944
85974
  const allowedToolNames = collectAllowedToolNames({
85945
85975
  tools,
85946
85976
  clientTools: params.clientTools
@@ -87005,7 +87035,7 @@ async function runEmbeddedPiAgent(params) {
87005
87035
  return;
87006
87036
  }
87007
87037
  if (model.provider === "github-copilot") {
87008
- const { resolveCopilotApiToken } = await import("./github-copilot-token-Dgt6cnsM.js").then((n) => n.n);
87038
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-BjmEQcmi.js").then((n) => n.n);
87009
87039
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
87010
87040
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
87011
87041
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);