@visorcraft/idlehands 4.0.21 → 4.2.0

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 (239) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{accounts-B8cGzkjD.js → accounts-BDVs8LTu.js} +1 -1
  3. package/dist/{accounts-D5tB_lO0.js → accounts-CIvVRRHb.js} +1 -1
  4. package/dist/{accounts-BQC_GRUB.js → accounts-Dk8mJIrQ.js} +6 -6
  5. package/dist/{agent-scope-Bxq1eWbA.js → agent-scope-DyP_tr7s.js} +4 -4
  6. package/dist/{agent-via-gateway-Cn3iNSod.js → agent-via-gateway-C42kkKZI.js} +7 -7
  7. package/dist/{agent-via-gateway-DHn8V6v4.js → agent-via-gateway-CUtzJXBE.js} +60 -60
  8. package/dist/{agent-via-gateway-B03q92bw.js → agent-via-gateway-CldlRczJ.js} +1 -1
  9. package/dist/{agent-via-gateway-CUQG6kii.js → agent-via-gateway-oMn0WfUq.js} +1 -1
  10. package/dist/{agents-DdTECKDf.js → agents-BfnnMO1i.js} +4 -4
  11. package/dist/{agents.config-D2EbQiOx.js → agents.config-BFfVBZMA.js} +1 -1
  12. package/dist/{agents.config-CHtoYxr6.js → agents.config-bWtpv0jP.js} +1 -1
  13. package/dist/{anton-hH1PyE2C.js → anton-CgpWkf5P.js} +32 -17
  14. package/dist/{anton-Dyz3neEN.js → anton-CoGaJdTU.js} +36 -21
  15. package/dist/{anton-D4vpCj_q.js → anton-DSS3RNo7.js} +32 -17
  16. package/dist/{anton-x7f6kIFP.js → anton-DXL8jrY_.js} +32 -17
  17. package/dist/{audio-preflight-vD3mDc6w.js → audio-preflight-CSSlgO89.js} +4 -4
  18. package/dist/{audio-preflight-B8qbJcB1.js → audio-preflight-CW8IH1lU.js} +35 -35
  19. package/dist/{auth-choice-DVoPuwEs.js → auth-choice-BNofPyTK.js} +1 -1
  20. package/dist/{auth-choice-DRR52LJT.js → auth-choice-Z7nPFxhP.js} +1 -1
  21. package/dist/{auth-store-Bb4aajHu.js → auth-store-DXT-l7fO.js} +12 -12
  22. package/dist/{banner-CFKoGAzN.js → banner-B1-kj-GW.js} +1 -1
  23. package/dist/{bindings-CLZIJ0Eo.js → bindings-D3b5Fmc9.js} +2 -2
  24. package/dist/build-info.json +3 -3
  25. package/dist/bundled/boot-md/handler.js +60 -60
  26. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  27. package/dist/bundled/command-logger/handler.js +3 -3
  28. package/dist/bundled/session-memory/handler.js +60 -60
  29. package/dist/{channel-activity-DdL3RAv_.js → channel-activity-D_TMOGQ0.js} +3 -3
  30. package/dist/{channel-options-BU0E7BdU.js → channel-options-C5Iz9bes.js} +1 -1
  31. package/dist/{channel-options-B4oF7_V2.js → channel-options-CUP3A4VX.js} +1 -1
  32. package/dist/{channel-web-BDytDCrG.js → channel-web-CGXl1PnB.js} +2 -2
  33. package/dist/{channel-web-0icuasR6.js → channel-web-CsUiKxQo.js} +2 -2
  34. package/dist/{channels-cli-DWaQsKP8.js → channels-cli-DK7TRLqX.js} +7 -7
  35. package/dist/{channels-cli-B2w32z11.js → channels-cli-DmHSajZy.js} +7 -7
  36. package/dist/{chrome-xahUzIaT.js → chrome-BcJB6PcM.js} +26 -26
  37. package/dist/{chrome-DEnkfZ9p.js → chrome-Do5potHV.js} +9 -9
  38. package/dist/{chunk-Djk-9JeT.js → chunk-CMpX7Jaz.js} +1 -1
  39. package/dist/{cli-Hplv9sD1.js → cli-6eMKeewY.js} +2 -2
  40. package/dist/{cli-BVw2ja-q.js → cli-DEE_ketW.js} +2 -2
  41. package/dist/{command-registry-CWDCVzZv.js → command-registry-BFTlzx6d.js} +10 -10
  42. package/dist/{commands-registry-_TBHHpvt.js → commands-registry-j4vAzcF2.js} +5 -5
  43. package/dist/{completion-cli-CjERsZ27.js → completion-cli-BbXgtvGY.js} +2 -2
  44. package/dist/{completion-cli-f5M3WVf8.js → completion-cli-PBfCNWhv.js} +1 -1
  45. package/dist/{config-cli-B2gc8CV1.js → config-cli-BVJRkNhX.js} +2 -2
  46. package/dist/{config-cli-Bt7n6ZJS.js → config-cli-Q934shK6.js} +2 -2
  47. package/dist/{configure-BXsptBk3.js → configure-85ttW_lD.js} +3 -3
  48. package/dist/{configure-CKspMrI1.js → configure-BGAvA5a4.js} +3 -3
  49. package/dist/{deliver-CIFO6sel.js → deliver-BUiQ-9fE.js} +20 -20
  50. package/dist/{deliver-5FLCa6tB.js → deliver-whAbSPLk.js} +1 -1
  51. package/dist/{deps-CjWcQwlX.js → deps-AEDT3iDX.js} +1 -1
  52. package/dist/{deps-DwTILPLD.js → deps-B4J8H6nI.js} +6 -6
  53. package/dist/{deps-CwPrf7RC.js → deps-Bq7jJLyN.js} +1 -1
  54. package/dist/{deps-BbipxGPW.js → deps-Ch6bZ8PI.js} +1 -1
  55. package/dist/{diagnostic-BvlZ0Sot.js → diagnostic-4owMk4vH.js} +1 -1
  56. package/dist/{dock-ejUetwTC.js → dock-BgOmHcbh.js} +6 -6
  57. package/dist/{doctor-completion-C2-SDBd6.js → doctor-completion-CN5Zujsa.js} +1 -1
  58. package/dist/{doctor-completion-DB151YdP.js → doctor-completion-Clh5CNUd.js} +1 -1
  59. package/dist/{emergency-stop-Lj33jqJJ.js → emergency-stop-2v4bhRCE.js} +7 -7
  60. package/dist/{emergency-stop-DpNGtfb4.js → emergency-stop-BtasjDnU.js} +2 -2
  61. package/dist/emergency-stop-CVO75pTD.js +113 -0
  62. package/dist/{emergency-stop-CDozqde9.js → emergency-stop-D_bTOufu.js} +2 -2
  63. package/dist/entry.js +1 -1
  64. package/dist/{env-q-PhWbb_.js → env-B5G1qwGc.js} +1 -1
  65. package/dist/{errors-C4SHjIZK.js → errors-C_0nm4TJ.js} +1 -1
  66. package/dist/extensionAPI.js +7 -7
  67. package/dist/{fetch-guard-CcfDZXe9.js → fetch-guard-iuQsIjqN.js} +1 -1
  68. package/dist/{frontmatter-pTUG4Sx_.js → frontmatter-BOudmHMS.js} +2 -2
  69. package/dist/{fs-safe-2l05hI1Y.js → fs-safe-CYUaAFO9.js} +2 -2
  70. package/dist/{gateway-cli-Ccd1ukWq.js → gateway-cli-Cl7cEsHE.js} +10 -10
  71. package/dist/{gateway-cli-lNUOd2_i.js → gateway-cli-DJm73Wou.js} +10 -10
  72. package/dist/{gemini-auth-DLSGffQK.js → gemini-auth-CIyaa44H.js} +2 -2
  73. package/dist/{github-copilot-token-BjmEQcmi.js → github-copilot-token-Dgt6cnsM.js} +7 -7
  74. package/dist/{health--GQAFTBr.js → health-C6_Sa_ef.js} +1 -1
  75. package/dist/{health-HEN6Wk9G.js → health-D-b3jdnU.js} +1 -1
  76. package/dist/{hooks-cli-DFrttZGb.js → hooks-cli-BB25FyuN.js} +3 -3
  77. package/dist/{hooks-cli-Di8qrzIB.js → hooks-cli-BC3n8UYQ.js} +3 -3
  78. package/dist/{image-C_aN5P6-.js → image-BAsQlUqT.js} +1 -1
  79. package/dist/{image-D9D-lzCw.js → image-D8b_rlQC.js} +6 -6
  80. package/dist/{image-ops-J8P5zOFm.js → image-ops-D1KtygWz.js} +1 -1
  81. package/dist/index.js +7 -7
  82. package/dist/{ir-BT5aAdU9.js → ir-B7IBoKLy.js} +5 -5
  83. package/dist/llm-slug-generator.js +60 -60
  84. package/dist/{local-roots-d4y0lvs2.js → local-roots-KN4Hp1yZ.js} +5 -5
  85. package/dist/{login-C2X0In6m.js → login-CFr5vJmR.js} +6 -6
  86. package/dist/{login-qr-C17PY0rr.js → login-qr-CFFFOjOl.js} +11 -11
  87. package/dist/{manager-CgzA1hKo.js → manager-BE_76jWB.js} +15 -15
  88. package/dist/{markdown-tables-R8VTpfE9.js → markdown-tables-CzsockiZ.js} +1 -1
  89. package/dist/{message-channel-ZdI1-uUh.js → message-channel-C8QtrwEU.js} +1 -1
  90. package/dist/{model-selection-C5hI1dum.js → model-selection-1MMYqY6M.js} +41 -41
  91. package/dist/{models-tZYpgts_.js → models-C1_Tdc1Q.js} +2 -2
  92. package/dist/{models-cli-CMwszgSD.js → models-cli-B9yw60gV.js} +3 -3
  93. package/dist/{models-cli-DVAyIZ63.js → models-cli-Bs5ZNSbk.js} +4 -4
  94. package/dist/{npm-resolution-DLSA4PTO.js → npm-resolution-BMDipaRX.js} +1 -1
  95. package/dist/{npm-resolution-By6bZkA-.js → npm-resolution-yXJbqHHn.js} +1 -1
  96. package/dist/{onboard-B6eOxpDM.js → onboard-CYRoDnOI.js} +2 -2
  97. package/dist/{onboard-CbXlbAx2.js → onboard-DjbHK18p.js} +2 -2
  98. package/dist/{onboard-channels-BISq46-i.js → onboard-channels-CNQt2jFU.js} +1 -1
  99. package/dist/{onboard-channels-JPltbNGL.js → onboard-channels-CkxvodmR.js} +1 -1
  100. package/dist/{onboarding-DikyMlYG.js → onboarding-BEDOWI9h.js} +3 -3
  101. package/dist/{onboarding-Da3n7Rvs.js → onboarding-D9AZJlDK.js} +3 -3
  102. package/dist/{onboarding.finalize-CwYx5n3Z.js → onboarding.finalize-D4hW1yTd.js} +7 -7
  103. package/dist/{onboarding.finalize-Bp2ufMd0.js → onboarding.finalize-DJxMkD2g.js} +6 -6
  104. package/dist/{outbound-CdY_AskB.js → outbound-BNh6PpQb.js} +6 -6
  105. package/dist/{outbound-attachment-IfeZJAKk.js → outbound-attachment-3I6GzwDe.js} +2 -2
  106. package/dist/{path-alias-guards-BZmt6hFb.js → path-alias-guards-Cu1nXNMM.js} +1 -1
  107. package/dist/{paths-DQpv9a3Q.js → paths-BYNVLNi_.js} +5 -5
  108. package/dist/{paths-D3p7ZvM6.js → paths-D_qUel1T.js} +3 -3
  109. package/dist/{pi-embedded-k2mZJOsr.js → pi-embedded-C6RDRgJM.js} +184 -184
  110. package/dist/{pi-embedded-helpers-CUoUoEEN.js → pi-embedded-helpers-CghCLoPo.js} +24 -24
  111. package/dist/{pi-embedded-helpers-C2j0LfJC.js → pi-embedded-helpers-Ct2rwp-P.js} +4 -4
  112. package/dist/{pi-embedded-Bc4KWuTe.js → pi-embedded-o6Xj8V4C.js} +26 -26
  113. package/dist/{pi-model-discovery-Dlx4RLWo.js → pi-model-discovery-Bb__OY-j.js} +7 -7
  114. package/dist/{plugin-registry-BY85d-vE.js → plugin-registry-6C1sgAm1.js} +1 -1
  115. package/dist/{plugin-registry-DROWinG6.js → plugin-registry-DIK-5KI9.js} +1 -1
  116. package/dist/plugin-sdk/{agent-via-gateway-CXtWg-qx.js → agent-via-gateway-DmQMFWNE.js} +2 -2
  117. package/dist/plugin-sdk/{anton-CGYTy9vy.js → anton-CrjFisFZ.js} +32 -17
  118. package/dist/plugin-sdk/{channel-web-EFRSObCG.js → channel-web-vQgHbtCG.js} +2 -2
  119. package/dist/plugin-sdk/{deps-qZxPlSgp.js → deps-DfyALwFG.js} +1 -1
  120. package/dist/plugin-sdk/{emergency-stop-CxcBz-aQ.js → emergency-stop-0ZrbH3D4.js} +2 -2
  121. package/dist/plugin-sdk/index.js +3 -3
  122. package/dist/plugin-sdk/{reply-nUO1aM3T.js → reply-BfdVf3fw.js} +11 -11
  123. package/dist/plugin-sdk/{web-CEtAvhaI.js → web-DwDLI7GP.js} +3 -3
  124. package/dist/{plugins-DYr-HHj0.js → plugins-CRB60mCJ.js} +10 -10
  125. package/dist/{plugins-cli-b_o3IL7x.js → plugins-cli-B1kN2Xze.js} +3 -3
  126. package/dist/{plugins-cli-RFXGkaxP.js → plugins-cli-DFUxLQbB.js} +3 -3
  127. package/dist/{program-context-D6irLwPo.js → program-context-CjyGlgVG.js} +18 -18
  128. package/dist/{program-vH6RTUOw.js → program-mmjp27H4.js} +8 -8
  129. package/dist/{prompt-select-styled-DFVvU0TH.js → prompt-select-styled-04TKk_r3.js} +4 -4
  130. package/dist/{prompt-select-styled-CDoDFWo7.js → prompt-select-styled-FskTiqWw.js} +4 -4
  131. package/dist/{provider-auth-helpers-BCc5UtUa.js → provider-auth-helpers-9IcvdTst.js} +1 -1
  132. package/dist/{provider-auth-helpers-CNRz0SFC.js → provider-auth-helpers-BI7MVWjD.js} +1 -1
  133. package/dist/{push-apns-CHmvuoMu.js → push-apns-Bh0u21Bh.js} +1 -1
  134. package/dist/{push-apns-e2xmxGGE.js → push-apns-DvSYSWvk.js} +1 -1
  135. package/dist/{pw-ai-CnvVtt_s.js → pw-ai-CfYaR1K2.js} +13 -13
  136. package/dist/{pw-ai-DjmrIQle.js → pw-ai-yrIWfcWX.js} +1 -1
  137. package/dist/{qmd-manager-BRvg3Rx2.js → qmd-manager-B_GgyQQ0.js} +8 -8
  138. package/dist/{query-expansion-DHuNyU-_.js → query-expansion-DEq020GG.js} +5 -5
  139. package/dist/{redact-1Y0KPNtr.js → redact-Bvpf-ATQ.js} +1 -1
  140. package/dist/{redact-snapshot-BBNDQZIe.js → redact-snapshot-BbEVKv0k.js} +14 -0
  141. package/dist/{redact-snapshot-Cc8Brktr.js → redact-snapshot-K5EFkIbD.js} +14 -0
  142. package/dist/{register.agent-Dx7ULz49.js → register.agent-B3zUfhl9.js} +9 -9
  143. package/dist/{register.agent-HWcFMr6h.js → register.agent-BSe92Zxh.js} +8 -8
  144. package/dist/{register.configure-k8gocsJw.js → register.configure-DZ9OCp0V.js} +8 -8
  145. package/dist/{register.configure-BctHAiWh.js → register.configure-N4JG5hVe.js} +8 -8
  146. package/dist/{register.maintenance-BYiX9iOa.js → register.maintenance-BjhkxF3o.js} +9 -9
  147. package/dist/{register.maintenance-C6o2WuQx.js → register.maintenance-DxauQqK_.js} +8 -8
  148. package/dist/{register.message-BewFLd-k.js → register.message-BsMpRFVr.js} +3 -3
  149. package/dist/{register.message-BLScF2fV.js → register.message-DoZ5i1Pn.js} +3 -3
  150. package/dist/{register.onboard-BVm-2XAx.js → register.onboard-Cw3wNQRm.js} +2 -2
  151. package/dist/{register.onboard-a0kqiCTa.js → register.onboard-Hxi3l9IA.js} +2 -2
  152. package/dist/{register.orchestrator-anton-BYyjV8R-.js → register.orchestrator-anton-BqQfw2JX.js} +2 -2
  153. package/dist/{register.orchestrator-anton-Tn_RaMLq.js → register.orchestrator-anton-DOByOKzU.js} +2 -2
  154. package/dist/{register.setup-BwPJaqpH.js → register.setup-dazD7bl3.js} +2 -2
  155. package/dist/{register.setup-BJ0WBUpt.js → register.setup-r5Xy4nv4.js} +2 -2
  156. package/dist/{register.status-health-sessions-Clzt8hbv.js → register.status-health-sessions-3zjBM0m6.js} +4 -4
  157. package/dist/{register.status-health-sessions-wbopjGL-.js → register.status-health-sessions-DobZ2G2u.js} +4 -4
  158. package/dist/{register.subclis-CrcOefJY.js → register.subclis-CGJxYP3h.js} +9 -9
  159. package/dist/{replies-2C16fnBP.js → replies-6_GxvQYe.js} +3 -3
  160. package/dist/{reply-D5gCiiGr.js → reply-BDr-UY9O.js} +11 -11
  161. package/dist/{reply-prefix-DCljZiIB.js → reply-prefix-BUgeSN2R.js} +1 -1
  162. package/dist/{resolve-route-ClcifpKn.js → resolve-route-DuttYY7A.js} +4 -4
  163. package/dist/{retry-CG6cMRDQ.js → retry-BeB9WenR.js} +1 -1
  164. package/dist/{run-main-BCX3UZMR.js → run-main-BDEztzfx.js} +15 -15
  165. package/dist/{runner-CZW_eyf2.js → runner-Bv_BA3vd.js} +1 -1
  166. package/dist/{runner-DjDddZhb.js → runner-PgRFPYUj.js} +11 -11
  167. package/dist/{send-DZa8fWSm.js → send-BeIZJuy4.js} +7 -7
  168. package/dist/{send-Y1hD4tQ1.js → send-C1hvd3bt.js} +6 -6
  169. package/dist/{send-BOxJ4QXF.js → send-D4bMycQu.js} +7 -7
  170. package/dist/{send-FLdrx-oF.js → send-Dfa3sn6r.js} +24 -24
  171. package/dist/{send-IlPMLAH-.js → send-DmLC7aEF.js} +10 -10
  172. package/dist/{server-node-events-CbVkqOtV.js → server-node-events-BL1dTBEr.js} +3 -3
  173. package/dist/{server-node-events-DvStFPGi.js → server-node-events-C69TPlKW.js} +3 -3
  174. package/dist/{session-nUPBXeEa.js → session-F_YDS_1V.js} +7 -7
  175. package/dist/{sessions-DRA4oaxz.js → sessions-3ioSeOA1.js} +41 -41
  176. package/dist/{skill-commands-BHTBXXVn.js → skill-commands-Ck3flWX7.js} +9 -9
  177. package/dist/{skills-umlGvChF.js → skills-CnAPWfca.js} +22 -22
  178. package/dist/{status-ClMOrHdT.js → status-AEwcpHsu.js} +2 -2
  179. package/dist/{status-CWnPokQF.js → status-B8z0RCPf.js} +2 -2
  180. package/dist/{store-D-ZicQeo.js → store-CvMgrKWx.js} +2 -2
  181. package/dist/{subagent-registry-BH5O1rxK.js → subagent-registry-Dclk-Ews.js} +11 -11
  182. package/dist/{subsystem-D7ZepYT1.js → subsystem-tzu-rIAJ.js} +1 -1
  183. package/dist/{tables-Co_R_WKs.js → tables-5k-zOZ-s.js} +1 -1
  184. package/dist/{target-errors-B1mcM4WR.js → target-errors-BPfQrPim.js} +2 -2
  185. package/dist/{tokens-DGajj8M9.js → tokens-BRLyURxW.js} +1 -1
  186. package/dist/{tool-images-Duuqr4bN.js → tool-images-CcGZpzmq.js} +2 -2
  187. package/dist/{tool-loop-detection-CjWRg_4q.js → tool-loop-detection-BNGetx3Z.js} +3 -3
  188. package/dist/{update-cli-BTNcddEX.js → update-cli-8Tk6PCmD.js} +8 -8
  189. package/dist/{update-cli-CxZD0ekr.js → update-cli-Bobm67f-.js} +9 -9
  190. package/dist/{update-runner-CN7Dm9tg.js → update-runner-B4xzPa4-.js} +1 -1
  191. package/dist/{update-runner-tu2Aiphu.js → update-runner-C4NjVy9-.js} +1 -1
  192. package/dist/{utils-D9wGoiU9.js → utils-CTFLl_ji.js} +18 -18
  193. package/dist/{web-aRaB-CvF.js → web-9J12F46d.js} +3 -3
  194. package/dist/{web-DiqHxfw7.js → web-DPSpgc_K.js} +8 -8
  195. package/dist/{web-BV-BEZj6.js → web-Dqy4kqC9.js} +3 -3
  196. package/dist/{web-t3fXJTeB.js → web-NzOJcvWO.js} +66 -66
  197. package/dist/{whatsapp-actions-BJ6kVDXi.js → whatsapp-actions-DbPcN6JQ.js} +25 -25
  198. package/dist/{workspace-tAtkoD_r.js → workspace-DBFSzT6O.js} +18 -18
  199. package/extensions/acpx/package.json +1 -1
  200. package/extensions/bluebubbles/package.json +1 -1
  201. package/extensions/copilot-proxy/package.json +1 -1
  202. package/extensions/diagnostics-otel/package.json +1 -1
  203. package/extensions/discord/package.json +1 -1
  204. package/extensions/feishu/package.json +1 -1
  205. package/extensions/google-gemini-cli-auth/package.json +1 -1
  206. package/extensions/googlechat/package.json +1 -1
  207. package/extensions/hand/package.json +1 -1
  208. package/extensions/imessage/package.json +1 -1
  209. package/extensions/irc/package.json +1 -1
  210. package/extensions/line/package.json +1 -1
  211. package/extensions/llm-task/package.json +1 -1
  212. package/extensions/matrix/CHANGELOG.md +12 -0
  213. package/extensions/matrix/package.json +1 -1
  214. package/extensions/mattermost/package.json +1 -1
  215. package/extensions/memory-core/package.json +1 -1
  216. package/extensions/memory-lancedb/package.json +1 -1
  217. package/extensions/minimax-portal-auth/package.json +1 -1
  218. package/extensions/msteams/CHANGELOG.md +12 -0
  219. package/extensions/msteams/package.json +1 -1
  220. package/extensions/nextcloud-talk/package.json +1 -1
  221. package/extensions/nostr/CHANGELOG.md +12 -0
  222. package/extensions/nostr/package.json +1 -1
  223. package/extensions/open-prose/package.json +1 -1
  224. package/extensions/signal/package.json +1 -1
  225. package/extensions/slack/package.json +1 -1
  226. package/extensions/synology-chat/package.json +1 -1
  227. package/extensions/telegram/package.json +1 -1
  228. package/extensions/tlon/package.json +1 -1
  229. package/extensions/twitch/CHANGELOG.md +12 -0
  230. package/extensions/twitch/package.json +1 -1
  231. package/extensions/voice-call/CHANGELOG.md +12 -0
  232. package/extensions/voice-call/package.json +1 -1
  233. package/extensions/whatsapp/package.json +1 -1
  234. package/extensions/zalo/CHANGELOG.md +12 -0
  235. package/extensions/zalo/package.json +1 -1
  236. package/extensions/zalouser/CHANGELOG.md +12 -0
  237. package/extensions/zalouser/package.json +1 -1
  238. package/package.json +1 -1
  239. package/dist/emergency-stop-C2sJ4lsk.js +0 -113
@@ -1,8 +1,8 @@
1
- import { I as getChildLogger, a as ensureDir, h as resolveUserPath, j as success, w as danger, z as toPinoLikeLogger } from "./utils-D9wGoiU9.js";
2
- import { tn as VERSION } from "./model-selection-C5hI1dum.js";
1
+ import { I as getChildLogger, a as ensureDir, h as resolveUserPath, j as success, w as danger, z as toPinoLikeLogger } from "./utils-CTFLl_ji.js";
2
+ import { tn as VERSION } from "./model-selection-1MMYqY6M.js";
3
3
  import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
4
- import { c as readCredsJsonRaw, d as resolveWebCredsBackupPath, f as resolveWebCredsPath, o as maybeRestoreCredsFromBackup, u as resolveDefaultWebAuthDir } from "./auth-store-Bb4aajHu.js";
5
- import fs from "node:fs";
4
+ import { c as readCredsJsonRaw, d as resolveWebCredsBackupPath, f as resolveWebCredsPath, o as maybeRestoreCredsFromBackup, u as resolveDefaultWebAuthDir } from "./auth-store-DXT-l7fO.js";
5
+ import syncFs from "node:fs";
6
6
  import { randomUUID } from "node:crypto";
7
7
  import { DisconnectReason, fetchLatestBaileysVersion, makeCacheableSignalKeyStore, makeWASocket, useMultiFileAuthState } from "@whiskeysockets/baileys";
8
8
  import qrcode from "qrcode-terminal";
@@ -21,16 +21,16 @@ async function safeSaveCreds(authDir, saveCreds, logger) {
21
21
  const raw = readCredsJsonRaw(credsPath);
22
22
  if (raw) try {
23
23
  JSON.parse(raw);
24
- fs.copyFileSync(credsPath, backupPath);
24
+ syncFs.copyFileSync(credsPath, backupPath);
25
25
  try {
26
- fs.chmodSync(backupPath, 384);
26
+ syncFs.chmodSync(backupPath, 384);
27
27
  } catch {}
28
28
  } catch {}
29
29
  } catch {}
30
30
  try {
31
31
  await Promise.resolve(saveCreds());
32
32
  try {
33
- fs.chmodSync(resolveWebCredsPath(authDir), 384);
33
+ syncFs.chmodSync(resolveWebCredsPath(authDir), 384);
34
34
  } catch {}
35
35
  } catch (err) {
36
36
  logger.warn({ error: String(err) }, "failed saving WhatsApp creds");
@@ -1,20 +1,20 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { m as resolveRequiredHomeDir } from "./paths-DQpv9a3Q.js";
3
- import { t as createSubsystemLogger } from "./subsystem-D7ZepYT1.js";
4
- import { d as normalizeE164 } from "./utils-D9wGoiU9.js";
2
+ import { m as resolveRequiredHomeDir } from "./paths-BYNVLNi_.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-tzu-rIAJ.js";
4
+ import { d as normalizeE164 } from "./utils-CTFLl_ji.js";
5
5
  import { c as normalizeMainKey, l as resolveAgentIdFromSessionKey, m as normalizeOptionalAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-CuLPSMu_.js";
6
- import { R as loadConfig, et as parseDurationMs, mn as isPidAlive, pn as resolveProcessScopedMap, tt as parseByteSize } from "./model-selection-C5hI1dum.js";
7
- import { c as normalizeHyphenSlug, t as getChannelDock } from "./dock-ejUetwTC.js";
8
- import { r as normalizeChannelId } from "./plugins-DYr-HHj0.js";
6
+ import { R as loadConfig, et as parseDurationMs, mn as isPidAlive, pn as resolveProcessScopedMap, tt as parseByteSize } from "./model-selection-1MMYqY6M.js";
7
+ import { c as normalizeHyphenSlug, t as getChannelDock } from "./dock-BgOmHcbh.js";
8
+ import { r as normalizeChannelId } from "./plugins-CRB60mCJ.js";
9
9
  import { t as normalizeChatType } from "./chat-type-BPBtOjer.js";
10
- import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-ZdI1-uUh.js";
10
+ import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-C8QtrwEU.js";
11
11
  import { n as resolveConversationLabel } from "./conversation-label-1Wad2kXc.js";
12
- import { a as resolveSessionFilePathOptions, c as resolveSessionTranscriptsDir, d as validateSessionId, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath, r as resolveDefaultSessionStorePath, s as resolveSessionTranscriptPathInDir, t as SAFE_SESSION_ID_RE, u as resolveStorePath } from "./paths-D3p7ZvM6.js";
12
+ import { a as resolveSessionFilePathOptions, c as resolveSessionTranscriptsDir, d as validateSessionId, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath, r as resolveDefaultSessionStorePath, s as resolveSessionTranscriptPathInDir, t as SAFE_SESSION_ID_RE, u as resolveStorePath } from "./paths-D_qUel1T.js";
13
13
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-_OimdA_2.js";
14
14
  import fs from "node:fs/promises";
15
15
  import os from "node:os";
16
16
  import path from "node:path";
17
- import fs$1 from "node:fs";
17
+ import syncFs from "node:fs";
18
18
  import crypto from "node:crypto";
19
19
  import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
20
20
 
@@ -100,7 +100,7 @@ function releaseAllLocksSync() {
100
100
  if (typeof held.handle.close === "function") held.handle.close().catch(() => {});
101
101
  } catch {}
102
102
  try {
103
- fs$1.rmSync(held.lockPath, { force: true });
103
+ syncFs.rmSync(held.lockPath, { force: true });
104
104
  } catch {}
105
105
  HELD_LOCKS.delete(sessionFile);
106
106
  }
@@ -876,14 +876,14 @@ function resolveSessionTranscriptCandidates(sessionId, storePath, sessionFile, a
876
876
  function canonicalizePathForComparison$1(filePath) {
877
877
  const resolved = path.resolve(filePath);
878
878
  try {
879
- return fs$1.realpathSync(resolved);
879
+ return syncFs.realpathSync(resolved);
880
880
  } catch {
881
881
  return resolved;
882
882
  }
883
883
  }
884
884
  function archiveFileOnDisk(filePath, reason) {
885
885
  const archived = `${filePath}.${reason}.${formatSessionArchiveTimestamp()}`;
886
- fs$1.renameSync(filePath, archived);
886
+ syncFs.renameSync(filePath, archived);
887
887
  return archived;
888
888
  }
889
889
  /**
@@ -899,7 +899,7 @@ function archiveSessionTranscripts(opts) {
899
899
  const relative = path.relative(storeDir, candidatePath);
900
900
  if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) continue;
901
901
  }
902
- if (!fs$1.existsSync(candidatePath)) continue;
902
+ if (!syncFs.existsSync(candidatePath)) continue;
903
903
  try {
904
904
  archived.push(archiveFileOnDisk(candidatePath, opts.reason));
905
905
  } catch {}
@@ -917,15 +917,15 @@ async function cleanupArchivedSessionTranscripts(opts) {
917
917
  let removed = 0;
918
918
  let scanned = 0;
919
919
  for (const dir of directories) {
920
- const entries = await fs$1.promises.readdir(dir).catch(() => []);
920
+ const entries = await syncFs.promises.readdir(dir).catch(() => []);
921
921
  for (const entry of entries) {
922
922
  const timestamp = parseSessionArchiveTimestamp(entry, reason);
923
923
  if (timestamp == null) continue;
924
924
  scanned += 1;
925
925
  if (now - timestamp <= opts.olderThanMs) continue;
926
926
  const fullPath = path.join(dir, entry);
927
- if (!(await fs$1.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
928
- await fs$1.promises.rm(fullPath).catch(() => void 0);
927
+ if (!(await syncFs.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
928
+ await syncFs.promises.rm(fullPath).catch(() => void 0);
929
929
  removed += 1;
930
930
  }
931
931
  }
@@ -1061,7 +1061,7 @@ function isCacheEnabled(ttlMs) {
1061
1061
  }
1062
1062
  function getFileMtimeMs(filePath) {
1063
1063
  try {
1064
- return fs$1.statSync(filePath).mtimeMs;
1064
+ return syncFs.statSync(filePath).mtimeMs;
1065
1065
  } catch {
1066
1066
  return;
1067
1067
  }
@@ -1076,7 +1076,7 @@ const NOOP_LOGGER = {
1076
1076
  function canonicalizePathForComparison(filePath) {
1077
1077
  const resolved = path.resolve(filePath);
1078
1078
  try {
1079
- return fs$1.realpathSync(resolved);
1079
+ return syncFs.realpathSync(resolved);
1080
1080
  } catch {
1081
1081
  return resolved;
1082
1082
  }
@@ -1134,12 +1134,12 @@ function resolveReferencedSessionTranscriptPaths(params) {
1134
1134
  return referenced;
1135
1135
  }
1136
1136
  async function readSessionsDirFiles(sessionsDir) {
1137
- const dirEntries = await fs$1.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
1137
+ const dirEntries = await syncFs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
1138
1138
  const files = [];
1139
1139
  for (const dirent of dirEntries) {
1140
1140
  if (!dirent.isFile()) continue;
1141
1141
  const filePath = path.join(sessionsDir, dirent.name);
1142
- const stat = await fs$1.promises.stat(filePath).catch(() => null);
1142
+ const stat = await syncFs.promises.stat(filePath).catch(() => null);
1143
1143
  if (!stat?.isFile()) continue;
1144
1144
  files.push({
1145
1145
  path: filePath,
@@ -1152,9 +1152,9 @@ async function readSessionsDirFiles(sessionsDir) {
1152
1152
  return files;
1153
1153
  }
1154
1154
  async function removeFileIfExists(filePath) {
1155
- const stat = await fs$1.promises.stat(filePath).catch(() => null);
1155
+ const stat = await syncFs.promises.stat(filePath).catch(() => null);
1156
1156
  if (!stat?.isFile()) return 0;
1157
- await fs$1.promises.rm(filePath, { force: true }).catch(() => void 0);
1157
+ await syncFs.promises.rm(filePath, { force: true }).catch(() => void 0);
1158
1158
  return stat.size;
1159
1159
  }
1160
1160
  async function removeFileForBudget(params) {
@@ -1438,7 +1438,7 @@ function loadSessionStore(storePath, opts = {}) {
1438
1438
  const maxReadAttempts = process.platform === "win32" ? 3 : 1;
1439
1439
  const retryBuf = maxReadAttempts > 1 ? new Int32Array(new SharedArrayBuffer(4)) : void 0;
1440
1440
  for (let attempt = 0; attempt < maxReadAttempts; attempt++) try {
1441
- const raw = fs$1.readFileSync(storePath, "utf-8");
1441
+ const raw = syncFs.readFileSync(storePath, "utf-8");
1442
1442
  if (raw.length === 0 && attempt < maxReadAttempts - 1) {
1443
1443
  Atomics.wait(retryBuf, 0, 0, 50);
1444
1444
  continue;
@@ -1641,7 +1641,7 @@ function capEntryCount(store, overrideMax, opts = {}) {
1641
1641
  }
1642
1642
  async function getSessionFileSize(storePath) {
1643
1643
  try {
1644
- return (await fs$1.promises.stat(storePath)).size;
1644
+ return (await syncFs.promises.stat(storePath)).size;
1645
1645
  } catch {
1646
1646
  return null;
1647
1647
  }
@@ -1658,7 +1658,7 @@ async function rotateSessionFile(storePath, overrideBytes) {
1658
1658
  if (fileSize <= maxBytes) return false;
1659
1659
  const backupPath = `${storePath}.bak.${Date.now()}`;
1660
1660
  try {
1661
- await fs$1.promises.rename(storePath, backupPath);
1661
+ await syncFs.promises.rename(storePath, backupPath);
1662
1662
  log.info("rotated session store file", {
1663
1663
  backupPath: path.basename(backupPath),
1664
1664
  sizeBytes: fileSize
@@ -1669,11 +1669,11 @@ async function rotateSessionFile(storePath, overrideBytes) {
1669
1669
  try {
1670
1670
  const dir = path.dirname(storePath);
1671
1671
  const baseName = path.basename(storePath);
1672
- const backups = (await fs$1.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
1672
+ const backups = (await syncFs.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
1673
1673
  const maxBackups = 3;
1674
1674
  if (backups.length > maxBackups) {
1675
1675
  const toDelete = backups.slice(maxBackups);
1676
- for (const old of toDelete) await fs$1.promises.unlink(path.join(dir, old)).catch(() => void 0);
1676
+ for (const old of toDelete) await syncFs.promises.unlink(path.join(dir, old)).catch(() => void 0);
1677
1677
  log.info("cleaned up old session store backups", { deleted: toDelete.length });
1678
1678
  }
1679
1679
  } catch {}
@@ -1778,14 +1778,14 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
1778
1778
  });
1779
1779
  }
1780
1780
  }
1781
- await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
1781
+ await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
1782
1782
  const json = JSON.stringify(store, null, 2);
1783
1783
  if (process.platform === "win32") {
1784
1784
  const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
1785
1785
  try {
1786
- await fs$1.promises.writeFile(tmp, json, "utf-8");
1786
+ await syncFs.promises.writeFile(tmp, json, "utf-8");
1787
1787
  for (let i = 0; i < 5; i++) try {
1788
- await fs$1.promises.rename(tmp, storePath);
1788
+ await syncFs.promises.rename(tmp, storePath);
1789
1789
  break;
1790
1790
  } catch {
1791
1791
  if (i < 4) await new Promise((r) => setTimeout(r, 50 * (i + 1)));
@@ -1795,27 +1795,27 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
1795
1795
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") return;
1796
1796
  throw err;
1797
1797
  } finally {
1798
- await fs$1.promises.rm(tmp, { force: true }).catch(() => void 0);
1798
+ await syncFs.promises.rm(tmp, { force: true }).catch(() => void 0);
1799
1799
  }
1800
1800
  return;
1801
1801
  }
1802
1802
  const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
1803
1803
  try {
1804
- await fs$1.promises.writeFile(tmp, json, {
1804
+ await syncFs.promises.writeFile(tmp, json, {
1805
1805
  mode: 384,
1806
1806
  encoding: "utf-8"
1807
1807
  });
1808
- await fs$1.promises.rename(tmp, storePath);
1809
- await fs$1.promises.chmod(storePath, 384);
1808
+ await syncFs.promises.rename(tmp, storePath);
1809
+ await syncFs.promises.chmod(storePath, 384);
1810
1810
  } catch (err) {
1811
1811
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") {
1812
1812
  try {
1813
- await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
1814
- await fs$1.promises.writeFile(storePath, json, {
1813
+ await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
1814
+ await syncFs.promises.writeFile(storePath, json, {
1815
1815
  mode: 384,
1816
1816
  encoding: "utf-8"
1817
1817
  });
1818
- await fs$1.promises.chmod(storePath, 384);
1818
+ await syncFs.promises.chmod(storePath, 384);
1819
1819
  } catch (err2) {
1820
1820
  if ((err2 && typeof err2 === "object" && "code" in err2 ? String(err2.code) : null) === "ENOENT") return;
1821
1821
  throw err2;
@@ -1824,7 +1824,7 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
1824
1824
  }
1825
1825
  throw err;
1826
1826
  } finally {
1827
- await fs$1.promises.rm(tmp, { force: true });
1827
+ await syncFs.promises.rm(tmp, { force: true });
1828
1828
  }
1829
1829
  }
1830
1830
  async function saveSessionStore(storePath, store, opts) {
@@ -2095,8 +2095,8 @@ function resolveMirroredTranscriptText(params) {
2095
2095
  return trimmed ? trimmed : null;
2096
2096
  }
2097
2097
  async function ensureSessionHeader(params) {
2098
- if (fs$1.existsSync(params.sessionFile)) return;
2099
- await fs$1.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
2098
+ if (syncFs.existsSync(params.sessionFile)) return;
2099
+ await syncFs.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
2100
2100
  const header = {
2101
2101
  type: "session",
2102
2102
  version: CURRENT_SESSION_VERSION,
@@ -2104,7 +2104,7 @@ async function ensureSessionHeader(params) {
2104
2104
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2105
2105
  cwd: process.cwd()
2106
2106
  };
2107
- await fs$1.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
2107
+ await syncFs.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
2108
2108
  encoding: "utf-8",
2109
2109
  mode: 384
2110
2110
  });
@@ -1,14 +1,14 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as listAgentIds, s as resolveAgentWorkspaceDir } from "./agent-scope-Bxq1eWbA.js";
3
- import { d as resolveStateDir } from "./paths-DQpv9a3Q.js";
4
- import { t as createSubsystemLogger } from "./subsystem-D7ZepYT1.js";
5
- import { h as resolveUserPath, t as CONFIG_DIR } from "./utils-D9wGoiU9.js";
6
- import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-umlGvChF.js";
7
- import { a as listChatCommands } from "./commands-registry-_TBHHpvt.js";
2
+ import { n as listAgentIds, s as resolveAgentWorkspaceDir } from "./agent-scope-DyP_tr7s.js";
3
+ import { d as resolveStateDir } from "./paths-BYNVLNi_.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-tzu-rIAJ.js";
5
+ import { h as resolveUserPath, t as CONFIG_DIR } from "./utils-CTFLl_ji.js";
6
+ import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-CnAPWfca.js";
7
+ import { a as listChatCommands } from "./commands-registry-j4vAzcF2.js";
8
8
  import fs from "node:fs/promises";
9
9
  import os from "node:os";
10
10
  import path from "node:path";
11
- import fs$1 from "node:fs";
11
+ import syncFs from "node:fs";
12
12
  import { randomUUID } from "node:crypto";
13
13
  import chokidar from "chokidar";
14
14
 
@@ -283,8 +283,8 @@ function listSkillCommandsForAgents(params) {
283
283
  const visitedDirs = /* @__PURE__ */ new Set();
284
284
  for (const agentId of agentIds) {
285
285
  const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId);
286
- if (!fs$1.existsSync(workspaceDir)) continue;
287
- const canonicalDir = fs$1.realpathSync(workspaceDir);
286
+ if (!syncFs.existsSync(workspaceDir)) continue;
287
+ const canonicalDir = syncFs.realpathSync(workspaceDir);
288
288
  if (visitedDirs.has(canonicalDir)) continue;
289
289
  visitedDirs.add(canonicalDir);
290
290
  const commands = buildWorkspaceSkillCommandSpecs(workspaceDir, {
@@ -1,13 +1,13 @@
1
- import { p as normalizeSkillFilter } from "./agent-scope-Bxq1eWbA.js";
2
- import { t as createSubsystemLogger } from "./subsystem-D7ZepYT1.js";
3
- import { K as resolvePreferredIdleHandsTmpDir, h as resolveUserPath, t as CONFIG_DIR } from "./utils-D9wGoiU9.js";
4
- import { h as resolveIdleHandsPackageRootSync, j as isPathInside } from "./workspace-tAtkoD_r.js";
5
- import { ct as loadPluginManifestRegistry, ht as resolveMemorySlotDecision, in as isDangerousHostEnvVarName, mt as resolveEffectiveEnableState, pt as normalizePluginsConfig } from "./model-selection-C5hI1dum.js";
6
- import { a as resolveIdleHandsManifestBlock, c as resolveIdleHandsManifestRequires, d as hasBinary, f as isConfigPathTruthyWithDefaults, i as parseIdleHandsManifestInstallBase, l as parseFrontmatterBlock, n as normalizeStringList, o as resolveIdleHandsManifestInstall, r as parseFrontmatterBool, s as resolveIdleHandsManifestOs, t as getFrontmatterString, u as evaluateRuntimeEligibility } from "./frontmatter-pTUG4Sx_.js";
7
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-BZmt6hFb.js";
1
+ import { p as normalizeSkillFilter } from "./agent-scope-DyP_tr7s.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-tzu-rIAJ.js";
3
+ import { K as resolvePreferredIdleHandsTmpDir, h as resolveUserPath, t as CONFIG_DIR } from "./utils-CTFLl_ji.js";
4
+ import { h as resolveIdleHandsPackageRootSync, j as isPathInside } from "./workspace-DBFSzT6O.js";
5
+ import { ct as loadPluginManifestRegistry, ht as resolveMemorySlotDecision, in as isDangerousHostEnvVarName, mt as resolveEffectiveEnableState, pt as normalizePluginsConfig } from "./model-selection-1MMYqY6M.js";
6
+ import { a as resolveIdleHandsManifestBlock, c as resolveIdleHandsManifestRequires, d as hasBinary, f as isConfigPathTruthyWithDefaults, i as parseIdleHandsManifestInstallBase, l as parseFrontmatterBlock, n as normalizeStringList, o as resolveIdleHandsManifestInstall, r as parseFrontmatterBool, s as resolveIdleHandsManifestOs, t as getFrontmatterString, u as evaluateRuntimeEligibility } from "./frontmatter-BOudmHMS.js";
7
+ import { n as assertNoPathAliasEscape } from "./path-alias-guards-Cu1nXNMM.js";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
- import fs from "node:fs";
10
+ import syncFs from "node:fs";
11
11
  import { URL, fileURLToPath } from "node:url";
12
12
  import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
13
13
 
@@ -463,13 +463,13 @@ function shortPath(value) {
463
463
  //#region src/agents/skills/bundled-dir.ts
464
464
  function looksLikeSkillsDir(dir) {
465
465
  try {
466
- const entries = fs.readdirSync(dir, { withFileTypes: true });
466
+ const entries = syncFs.readdirSync(dir, { withFileTypes: true });
467
467
  for (const entry of entries) {
468
468
  if (entry.name.startsWith(".")) continue;
469
469
  const fullPath = path.join(dir, entry.name);
470
470
  if (entry.isFile() && entry.name.endsWith(".md")) return true;
471
471
  if (entry.isDirectory()) {
472
- if (fs.existsSync(path.join(fullPath, "SKILL.md"))) return true;
472
+ if (syncFs.existsSync(path.join(fullPath, "SKILL.md"))) return true;
473
473
  }
474
474
  }
475
475
  } catch {
@@ -484,7 +484,7 @@ function resolveBundledSkillsDir(opts = {}) {
484
484
  const execPath = opts.execPath ?? process.execPath;
485
485
  const execDir = path.dirname(execPath);
486
486
  const sibling = path.join(execDir, "skills");
487
- if (fs.existsSync(sibling)) return sibling;
487
+ if (syncFs.existsSync(sibling)) return sibling;
488
488
  } catch {}
489
489
  try {
490
490
  const moduleUrl = opts.moduleUrl ?? import.meta.url;
@@ -547,7 +547,7 @@ function resolvePluginSkillDirs(params) {
547
547
  const trimmed = raw.trim();
548
548
  if (!trimmed) continue;
549
549
  const candidate = path.resolve(record.rootDir, trimmed);
550
- if (!fs.existsSync(candidate)) {
550
+ if (!syncFs.existsSync(candidate)) {
551
551
  log.warn(`plugin skill path not found (${record.id}): ${candidate}`);
552
552
  continue;
553
553
  }
@@ -574,7 +574,7 @@ async function serializeByKey(key, task) {
574
574
 
575
575
  //#endregion
576
576
  //#region src/agents/skills/workspace.ts
577
- const fsp = fs.promises;
577
+ const fsp = syncFs.promises;
578
578
  const skillsLogger = createSubsystemLogger("skills");
579
579
  const skillCommandDebugOnce = /* @__PURE__ */ new Set();
580
580
  /**
@@ -651,7 +651,7 @@ function resolveSkillsLimits(config) {
651
651
  }
652
652
  function listChildDirectories(dir) {
653
653
  try {
654
- const entries = fs.readdirSync(dir, { withFileTypes: true });
654
+ const entries = syncFs.readdirSync(dir, { withFileTypes: true });
655
655
  const dirs = [];
656
656
  for (const entry of entries) {
657
657
  if (entry.name.startsWith(".")) continue;
@@ -662,7 +662,7 @@ function listChildDirectories(dir) {
662
662
  continue;
663
663
  }
664
664
  if (entry.isSymbolicLink()) try {
665
- if (fs.statSync(fullPath).isDirectory()) dirs.push(entry.name);
665
+ if (syncFs.statSync(fullPath).isDirectory()) dirs.push(entry.name);
666
666
  } catch {}
667
667
  }
668
668
  return dirs;
@@ -673,7 +673,7 @@ function listChildDirectories(dir) {
673
673
  function resolveNestedSkillsRoot(dir, opts) {
674
674
  const nested = path.join(dir, "skills");
675
675
  try {
676
- if (!fs.existsSync(nested) || !fs.statSync(nested).isDirectory()) return { baseDir: dir };
676
+ if (!syncFs.existsSync(nested) || !syncFs.statSync(nested).isDirectory()) return { baseDir: dir };
677
677
  } catch {
678
678
  return { baseDir: dir };
679
679
  }
@@ -682,7 +682,7 @@ function resolveNestedSkillsRoot(dir, opts) {
682
682
  const toScan = scanLimit === 0 ? [] : nestedDirs.slice(0, Math.min(nestedDirs.length, scanLimit));
683
683
  for (const name of toScan) {
684
684
  const skillMd = path.join(nested, name, "SKILL.md");
685
- if (fs.existsSync(skillMd)) return {
685
+ if (syncFs.existsSync(skillMd)) return {
686
686
  baseDir: nested,
687
687
  note: `Detected nested skills root at ${nested}`
688
688
  };
@@ -702,9 +702,9 @@ function loadSkillEntries(workspaceDir, opts) {
702
702
  const loadSkills = (params) => {
703
703
  const baseDir = resolveNestedSkillsRoot(params.dir, { maxEntriesToScan: limits.maxCandidatesPerRoot }).baseDir;
704
704
  const rootSkillMd = path.join(baseDir, "SKILL.md");
705
- if (fs.existsSync(rootSkillMd)) {
705
+ if (syncFs.existsSync(rootSkillMd)) {
706
706
  try {
707
- const size = fs.statSync(rootSkillMd).size;
707
+ const size = syncFs.statSync(rootSkillMd).size;
708
708
  if (size > limits.maxSkillFileBytes) {
709
709
  skillsLogger.warn("Skipping skills root due to oversized SKILL.md.", {
710
710
  dir: baseDir,
@@ -743,9 +743,9 @@ function loadSkillEntries(workspaceDir, opts) {
743
743
  for (const name of limitedChildren) {
744
744
  const skillDir = path.join(baseDir, name);
745
745
  const skillMd = path.join(skillDir, "SKILL.md");
746
- if (!fs.existsSync(skillMd)) continue;
746
+ if (!syncFs.existsSync(skillMd)) continue;
747
747
  try {
748
- const size = fs.statSync(skillMd).size;
748
+ const size = syncFs.statSync(skillMd).size;
749
749
  if (size > limits.maxSkillFileBytes) {
750
750
  skillsLogger.warn("Skipping skill due to oversized SKILL.md.", {
751
751
  skill: name,
@@ -813,7 +813,7 @@ function loadSkillEntries(workspaceDir, opts) {
813
813
  return Array.from(merged.values()).map((skill) => {
814
814
  let frontmatter = {};
815
815
  try {
816
- frontmatter = parseFrontmatter(fs.readFileSync(skill.filePath, "utf-8"));
816
+ frontmatter = parseFrontmatter(syncFs.readFileSync(skill.filePath, "utf-8"));
817
817
  } catch {}
818
818
  return {
819
819
  skill,
@@ -10,7 +10,7 @@ import { r as VERSION } from "./env-vars-I4LX5XSX.js";
10
10
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DEWCCZdI.js";
11
11
  import { Z as resolveFreshSessionTotalTokens, c as loadSessionStore, nt as resolveMainSessionKey } from "./sessions-BoqJKVEs.js";
12
12
  import { n as listChannelPlugins } from "./plugins-CCrfZ49T.js";
13
- import { Cn as buildChannelAccountSnapshot, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Sn as buildChannelSummary, gn as formatUsageReportLines, hn as loadProviderUsageSummary, kn as peekSystemEvents, wn as formatChannelAllowFrom } from "./subagent-registry-BH5O1rxK.js";
13
+ import { Cn as buildChannelAccountSnapshot, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Sn as buildChannelSummary, gn as formatUsageReportLines, hn as loadProviderUsageSummary, kn as peekSystemEvents, wn as formatChannelAllowFrom } from "./subagent-registry-Dclk-Ews.js";
14
14
  import { u as resolveStorePath } from "./paths-CC17i2eK.js";
15
15
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-C82rD2Wn.js";
16
16
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CQwGqfET.js";
@@ -30,7 +30,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-Om381vyM.j
30
30
  import { t as readLastGatewayErrorLine } from "./diagnostics-BzCL1AMI.js";
31
31
  import { t as renderTable } from "./table-aJzHv5Oe.js";
32
32
  import { i as resolveGatewayProbeAuth$1, s as probeGateway, t as runSecurityAudit } from "./audit-C9PrbHng.js";
33
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-HEN6Wk9G.js";
33
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-D-b3jdnU.js";
34
34
  import { _ as resolveUpdateChannelDisplay, a as formatGitInstallLabel, h as normalizeUpdateChannel, n as checkUpdateStatus, t as resolveDefaultChannelAccountContext } from "./channel-account-context-ofowt_yq.js";
35
35
  import { t as resolveNodeService } from "./node-service-v7Nz7h4D.js";
36
36
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-oh9Nicqr.js";
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cn44w-EB.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-CXzXXV2o.js";
3
- import { D as resolveSessionModelRef, Er as peekSystemEvents, G as readRestartSentinel, K as summarizeRestartSentinel, Zt as resolveContextTokensForModel, b as classifySessionKey, bt as formatUsageReportLines, c as buildChannelSummary, l as buildChannelAccountSnapshot, u as formatChannelAllowFrom, x as listAgentsForGateway, yt as loadProviderUsageSummary } from "./reply-D5gCiiGr.js";
3
+ import { D as resolveSessionModelRef, Er as peekSystemEvents, G as readRestartSentinel, K as summarizeRestartSentinel, Zt as resolveContextTokensForModel, b as classifySessionKey, bt as formatUsageReportLines, c as buildChannelSummary, l as buildChannelAccountSnapshot, u as formatChannelAllowFrom, x as listAgentsForGateway, yt as loadProviderUsageSummary } from "./reply-BDr-UY9O.js";
4
4
  import { u as resolveAgentWorkspaceDir } from "./agent-scope-RA0zXRpu.js";
5
5
  import { w as parseAgentSessionKey } from "./session-key-Cuihcz_O.js";
6
6
  import { t as resolveIdleHandsPackageRoot } from "./idlehands-root-B8cUs-5M.js";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D7pLXkNs.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-DmZbQ8Nc.js";
30
30
  import { t as renderTable } from "./table-B9AmL3M1.js";
31
31
  import { i as resolveGatewayProbeAuth$1, s as probeGateway, t as runSecurityAudit } from "./audit-CKeZnjft.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health--GQAFTBr.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-C6_Sa_ef.js";
33
33
  import { _ as resolveUpdateChannelDisplay, a as formatGitInstallLabel, h as normalizeUpdateChannel, n as checkUpdateStatus, t as resolveDefaultChannelAccountContext } from "./channel-account-context-CDbY5AIr.js";
34
34
  import { t as resolveNodeService } from "./node-service-C3vyxHLA.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-BK5XIv_A.js";
@@ -1,5 +1,5 @@
1
- import { p as resolveConfigDir } from "./utils-D9wGoiU9.js";
2
- import { c as detectMime, l as extensionForMime } from "./image-ops-J8P5zOFm.js";
1
+ import { p as resolveConfigDir } from "./utils-CTFLl_ji.js";
2
+ import { c as detectMime, l as extensionForMime } from "./image-ops-D1KtygWz.js";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import crypto from "node:crypto";
@@ -109,7 +109,7 @@ import { a as resolveSubagentToolPolicy, c as readStoreAllowFromForDmPolicy, d a
109
109
  import { t as makeProxyFetch } from "./proxy-GJkoUC6V.js";
110
110
  import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-DhuP2lHs.js";
111
111
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DSfpze17.js";
112
- import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-CjWcQwlX.js";
112
+ import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-AEDT3iDX.js";
113
113
  import { r as detectBinary } from "./onboard-helpers-DWivfzcc.js";
114
114
  import { t as resolvePairingIdLabel } from "./pairing-labels-D7xcHkxi.js";
115
115
  import { createRequire } from "node:module";
@@ -16870,7 +16870,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16870
16870
  };
16871
16871
  const arg = body.slice(6).trim();
16872
16872
  if (arg === "status" || arg === "") {
16873
- const { antonStatus } = await import("./anton-D4vpCj_q.js").then((n) => n.r);
16873
+ const { antonStatus } = await import("./anton-DSS3RNo7.js").then((n) => n.r);
16874
16874
  const lines = [];
16875
16875
  await antonStatus({
16876
16876
  log: (msg) => lines.push(msg),
@@ -16886,7 +16886,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16886
16886
  return { shouldContinue: false };
16887
16887
  }
16888
16888
  if (arg === "stop") {
16889
- const { antonStop } = await import("./anton-D4vpCj_q.js").then((n) => n.r);
16889
+ const { antonStop } = await import("./anton-DSS3RNo7.js").then((n) => n.r);
16890
16890
  const lines = [];
16891
16891
  await antonStop({
16892
16892
  log: (msg) => lines.push(msg),
@@ -16924,8 +16924,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16924
16924
  await sendProgress(replyCtx, text);
16925
16925
  return { shouldContinue: false };
16926
16926
  }
16927
- const { runAnton, formatProgressMessage } = await import("./anton-D4vpCj_q.js").then((n) => n.r);
16928
- const { createDefaultDeps } = await import("./deps-CjWcQwlX.js").then((n) => n.r);
16927
+ const { runAnton, formatProgressMessage } = await import("./anton-DSS3RNo7.js").then((n) => n.r);
16928
+ const { createDefaultDeps } = await import("./deps-AEDT3iDX.js").then((n) => n.r);
16929
16929
  const { createNonExitingRuntime } = await import("./runtime-CgcH_FLo.js").then((n) => n.r);
16930
16930
  const runtime = createNonExitingRuntime();
16931
16931
  const deps = createDefaultDeps();
@@ -49591,7 +49591,7 @@ function createDiscordMessageHandler(params) {
49591
49591
  try {
49592
49592
  const messageText = resolveDiscordMessageText(data.message)?.trim();
49593
49593
  if (messageText) {
49594
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CDozqde9.js");
49594
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D_bTOufu.js");
49595
49595
  if (isAbortRequestText(messageText)) {
49596
49596
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
49597
49597
  const channelId = resolveDiscordMessageChannelId({
@@ -57064,7 +57064,7 @@ async function monitorIMessageProvider(opts = {}) {
57064
57064
  }
57065
57065
  const msgText = (message.text ?? "").trim();
57066
57066
  if (msgText) {
57067
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CDozqde9.js");
57067
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D_bTOufu.js");
57068
57068
  if (isAbortRequestText(msgText)) {
57069
57069
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
57070
57070
  const route = resolveAgentRoute({
@@ -59669,7 +59669,7 @@ function createSignalEventHandler(deps) {
59669
59669
  const senderName = envelope.sourceName ?? senderDisplay;
59670
59670
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
59671
59671
  if (bodyText) {
59672
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CDozqde9.js");
59672
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D_bTOufu.js");
59673
59673
  if (isAbortRequestText(bodyText)) {
59674
59674
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
59675
59675
  const route = resolveAgentRoute({
@@ -63058,7 +63058,7 @@ function createSlackMessageHandler(params) {
63058
63058
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
63059
63059
  const rawText = (message.text ?? "").trim();
63060
63060
  if (rawText) {
63061
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CDozqde9.js");
63061
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D_bTOufu.js");
63062
63062
  if (isAbortRequestText(rawText)) {
63063
63063
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
63064
63064
  const route = resolveAgentRoute({
@@ -65252,7 +65252,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
65252
65252
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
65253
65253
  const text = typeof msg.text === "string" ? msg.text : void 0;
65254
65254
  if (text) {
65255
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CDozqde9.js");
65255
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D_bTOufu.js");
65256
65256
  if (isAbortRequestText(text)) {
65257
65257
  const senderId = msg.from?.id ? String(msg.from.id) : "";
65258
65258
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -68746,7 +68746,7 @@ function loadWebLoginQr() {
68746
68746
  return webLoginQrPromise;
68747
68747
  }
68748
68748
  function loadWebChannel() {
68749
- webChannelPromise ??= import("./web-aRaB-CvF.js");
68749
+ webChannelPromise ??= import("./web-9J12F46d.js");
68750
68750
  return webChannelPromise;
68751
68751
  }
68752
68752
  function loadWhatsAppActions() {
@@ -1,4 +1,4 @@
1
- import { B as resolveNodeRequireFromMeta, D as logVerbose, E as isVerbose, G as readLoggingConfig, H as loggingState, I as getChildLogger, R as isFileLogLevelEnabled, U as levelToMinLevel, V as resolveEnvLogLevelOverride, W as normalizeLogLevel, h as resolveUserPath } from "./utils-D9wGoiU9.js";
1
+ import { B as resolveNodeRequireFromMeta, D as logVerbose, E as isVerbose, G as readLoggingConfig, H as loggingState, I as getChildLogger, R as isFileLogLevelEnabled, U as levelToMinLevel, V as resolveEnvLogLevelOverride, W as normalizeLogLevel, h as resolveUserPath } from "./utils-CTFLl_ji.js";
2
2
  import { i as clearActiveProgressLine } from "./runtime-8mi3mpYB.js";
3
3
  import path from "node:path";
4
4
  import { Chalk } from "chalk";
@@ -1,4 +1,4 @@
1
- import { r as markdownToIRWithMeta } from "./ir-BT5aAdU9.js";
1
+ import { r as markdownToIRWithMeta } from "./ir-B7IBoKLy.js";
2
2
  import { t as renderMarkdownWithMarkers } from "./render-MTSxc7LK.js";
3
3
 
4
4
  //#region src/markdown/tables.ts
@@ -1,5 +1,5 @@
1
- import { c as detectMime } from "./image-ops-J8P5zOFm.js";
2
- import { r as sanitizeToolResultImages } from "./tool-images-Duuqr4bN.js";
1
+ import { c as detectMime } from "./image-ops-D1KtygWz.js";
2
+ import { r as sanitizeToolResultImages } from "./tool-images-CcGZpzmq.js";
3
3
  import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/agents/tools/common.ts
@@ -1,4 +1,4 @@
1
- import { o as escapeRegExp } from "./utils-D9wGoiU9.js";
1
+ import { o as escapeRegExp } from "./utils-CTFLl_ji.js";
2
2
 
3
3
  //#region src/auto-reply/tokens.ts
4
4
  const HEARTBEAT_TOKEN = "HEARTBEAT_OK";
@@ -1,5 +1,5 @@
1
- import { t as createSubsystemLogger } from "./subsystem-D7ZepYT1.js";
2
- import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-J8P5zOFm.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-tzu-rIAJ.js";
2
+ import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-D1KtygWz.js";
3
3
 
4
4
  //#region src/media/base64.ts
5
5
  function estimateBase64DecodedBytes(base64) {
@@ -1,6 +1,6 @@
1
- import "./paths-DQpv9a3Q.js";
2
- import { t as createSubsystemLogger } from "./subsystem-D7ZepYT1.js";
3
- import { C as isPlainObject } from "./utils-D9wGoiU9.js";
1
+ import "./paths-BYNVLNi_.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-tzu-rIAJ.js";
3
+ import { C as isPlainObject } from "./utils-CTFLl_ji.js";
4
4
  import "./runtime-8mi3mpYB.js";
5
5
  import { createHash } from "node:crypto";
6
6