@visorcraft/idlehands 4.0.21 → 4.1.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 (284) hide show
  1. package/dist/{accounts-DLTODa_Z.js → accounts-D-hQsUw-.js} +1 -1
  2. package/dist/{accounts-DgbTKQoW.js → accounts-D87a1Y_K.js} +1 -1
  3. package/dist/{accounts-3HS_UAhJ.js → accounts-DsVN0UNw.js} +1 -1
  4. package/dist/{acp-cli-BEpWQbqb.js → acp-cli-BEHYc8ty.js} +7 -7
  5. package/dist/{agent-scope-RA0zXRpu.js → agent-scope-Bn39ugK4.js} +18 -18
  6. package/dist/{agent-via-gateway-DHn8V6v4.js → agent-via-gateway-CM7X6sKJ.js} +7 -7
  7. package/dist/{agent-via-gateway-CUQG6kii.js → agent-via-gateway-bS6seBwg.js} +4 -4
  8. package/dist/{agent-via-gateway-Cn3iNSod.js → agent-via-gateway-igDg7ko6.js} +7 -7
  9. package/dist/{agents.config-CHtoYxr6.js → agents.config-CPUPtcKt.js} +2 -2
  10. package/dist/{anton-Dyz3neEN.js → anton-C7-Qxyij.js} +1 -1
  11. package/dist/{anton-x7f6kIFP.js → anton-D9tZAGaj.js} +20 -20
  12. package/dist/{anton-hH1PyE2C.js → anton-ONYQUE8F.js} +1 -1
  13. package/dist/{api-key-rotation-B-FTJm5p.js → api-key-rotation-nXQVJErE.js} +1 -1
  14. package/dist/{audio-preflight-vD3mDc6w.js → audio-preflight-CSSlgO89.js} +4 -4
  15. package/dist/{audio-preflight-Dl1TO10w.js → audio-preflight-DzjXupNO.js} +31 -31
  16. package/dist/{audio-preflight-B8qbJcB1.js → audio-preflight-qkU2lsDn.js} +4 -4
  17. package/dist/{audit-CKeZnjft.js → audit-C5VPFgbJ.js} +22 -22
  18. package/dist/{auth-choice-D12Wsf7w.js → auth-choice-BDndThZZ.js} +12 -12
  19. package/dist/{auth-choice-DRR52LJT.js → auth-choice-CQqV1VIf.js} +10 -10
  20. package/dist/{auth-choice.apply-helpers-CGcniL1T.js → auth-choice.apply-helpers-pTqMTYmi.js} +1 -1
  21. package/dist/{auth-store-DDzIMy8_.js → auth-store-CMyrmmSF.js} +7 -7
  22. package/dist/{auth-token-BJq87X3o.js → auth-token-fKt_cHOj.js} +1 -1
  23. package/dist/{bindings-B59Q7nsk.js → bindings-DZjkLUU_.js} +1 -1
  24. package/dist/{browser-cli-Ci6DpTnS.js → browser-cli-qU0I-Gla.js} +11 -11
  25. package/dist/build-info.json +3 -3
  26. package/dist/bundled/boot-md/handler.js +7 -7
  27. package/dist/bundled/session-memory/handler.js +7 -7
  28. package/dist/{call-BpWhjuOg.js → call-Du-oBD99.js} +9 -9
  29. package/dist/{channel-account-context-CDbY5AIr.js → channel-account-context-B4nJPU2N.js} +5 -5
  30. package/dist/{channel-options-B4oF7_V2.js → channel-options-B1cfZ5uQ.js} +3 -3
  31. package/dist/{channel-selection-ZxRkxpuF.js → channel-selection-3jUl-PyW.js} +1 -1
  32. package/dist/{channel-web-0icuasR6.js → channel-web-CzrJ-6X4.js} +22 -22
  33. package/dist/{channels-cli-B2w32z11.js → channels-cli-B4o-qohk.js} +88 -88
  34. package/dist/{channels-status-issues-CDpWjdI3.js → channels-status-issues-hgASw9UA.js} +1 -1
  35. package/dist/{chrome-xahUzIaT.js → chrome-CT_a9OgI.js} +9 -9
  36. package/dist/{chrome-DEnkfZ9p.js → chrome-Do5potHV.js} +9 -9
  37. package/dist/{chrome-VBsQfIrt.js → chrome-YguTEaLx.js} +2 -2
  38. package/dist/{clawbot-cli-uFgYrysW.js → clawbot-cli-C5cDal-5.js} +5 -5
  39. package/dist/{cli-BVw2ja-q.js → cli-DXyOlvH2.js} +70 -70
  40. package/dist/{client-DtnD-ee9.js → client-Dl5EAvfO.js} +1 -1
  41. package/dist/{command-registry-CWDCVzZv.js → command-registry-esizscE2.js} +5 -5
  42. package/dist/{commands-Dj5LalLo.js → commands-D3BU_t7G.js} +1 -1
  43. package/dist/{commands-registry-CURlRZQJ.js → commands-registry-Cj4D_1tw.js} +3 -3
  44. package/dist/{completion-cli-f5M3WVf8.js → completion-cli-CXDILt8-.js} +12 -12
  45. package/dist/{completion-cli-CjERsZ27.js → completion-cli-c4blaZPQ.js} +2 -2
  46. package/dist/{config-cli-Bt7n6ZJS.js → config-cli-98ASrAou.js} +1 -1
  47. package/dist/{config-cli-B2gc8CV1.js → config-cli-D_mH5-FH.js} +6 -6
  48. package/dist/{config-guard-BdsOumqh.js → config-guard-DnAyuF6T.js} +17 -17
  49. package/dist/{config-validation-BvKX6fPw.js → config-validation-DIomLMwH.js} +2 -2
  50. package/dist/{configure-BXsptBk3.js → configure-PKG58EzI.js} +16 -16
  51. package/dist/{control-ui-assets-C7ZpN9hN.js → control-ui-assets-CiaCDBvZ.js} +1 -1
  52. package/dist/{cron-cli-DQsnGQKs.js → cron-cli-BIfVPc5K.js} +12 -12
  53. package/dist/{daemon-cli-DUg-s4LG.js → daemon-cli-DpyQu0Dp.js} +11 -11
  54. package/dist/{daemon-install-CYPo4M1M.js → daemon-install-DeqQiAad.js} +4 -4
  55. package/dist/{daemon-install-helpers-BZY9-jNW.js → daemon-install-helpers-Bug_GYuy.js} +9 -9
  56. package/dist/{deliver-CIFO6sel.js → deliver-Db2xqgLg.js} +1 -1
  57. package/dist/{deliver-5FLCa6tB.js → deliver-whAbSPLk.js} +1 -1
  58. package/dist/{deliver--kttnrER.js → deliver-yTpXc5sv.js} +7 -7
  59. package/dist/{deps-CwPrf7RC.js → deps-BotXja4Z.js} +6 -6
  60. package/dist/{deps-DwTILPLD.js → deps-CC5E5LXB.js} +1 -1
  61. package/dist/{deps-BbipxGPW.js → deps-DR1eh_L_.js} +1 -1
  62. package/dist/{devices-cli-DKK65S9Z.js → devices-cli-B7fkQKei.js} +7 -7
  63. package/dist/{diagnostics-DmZbQ8Nc.js → diagnostics-CdUgLS0N.js} +5 -5
  64. package/dist/{directory-cli-Dz9iXeut.js → directory-cli-BAMS8f9U.js} +9 -9
  65. package/dist/{dns-cli-DD6hWsdc.js → dns-cli-BdxBk-k_.js} +4 -4
  66. package/dist/{dock-Y96MzKuM.js → dock-CzF5XYGd.js} +4 -4
  67. package/dist/{docs-cli-cHkrTB2e.js → docs-cli-SF7es4Zs.js} +4 -4
  68. package/dist/{doctor-completion-C2-SDBd6.js → doctor-completion-Co_xszXC.js} +2 -2
  69. package/dist/{doctor-completion-DB151YdP.js → doctor-completion-DFr8_h-z.js} +1 -1
  70. package/dist/{doctor-config-flow-Ck4oCjfl.js → doctor-config-flow-8qXzBx09.js} +14 -14
  71. package/dist/{emergency-stop-Lj33jqJJ.js → emergency-stop-ChBe32HN.js} +7 -7
  72. package/dist/{emergency-stop-DpNGtfb4.js → emergency-stop-DtVFxCO1.js} +70 -70
  73. package/dist/{emergency-stop-C2sJ4lsk.js → emergency-stop-DyQna_P0.js} +7 -7
  74. package/dist/{enable-o_s6PBsC.js → enable-DaA_orGN.js} +1 -1
  75. package/dist/entry.js +1 -1
  76. package/dist/{exec-approvals-allowlist-Co2tJSEo.js → exec-approvals-allowlist-8AkOwwIr.js} +1 -1
  77. package/dist/{exec-approvals-cli-D6XUzs4j.js → exec-approvals-cli-CbcJzCt0.js} +15 -15
  78. package/dist/{exec-safe-bin-runtime-policy-DaoU9-ni.js → exec-safe-bin-runtime-policy-DYXuBKqH.js} +2 -2
  79. package/dist/extensionAPI.js +7 -7
  80. package/dist/{fs-safe-_JQUGpZf.js → fs-safe-DNFrxDS-.js} +15 -15
  81. package/dist/{gateway-cli-Ccd1ukWq.js → gateway-cli-DjCBMnUT.js} +2 -2
  82. package/dist/{gateway-cli-lNUOd2_i.js → gateway-cli-poVGdgAz.js} +148 -148
  83. package/dist/{gateway-rpc-BBFG1T-M.js → gateway-rpc-IpZymG6F.js} +1 -1
  84. package/dist/{health--GQAFTBr.js → health-lZsCLX6p.js} +13 -13
  85. package/dist/{hooks-cli-Di8qrzIB.js → hooks-cli-EbzkZ1Xh.js} +84 -84
  86. package/dist/{hooks-status-DNGo2G8Q.js → hooks-status-CPIWc_bx.js} +1 -1
  87. package/dist/{idlehands-root-B8cUs-5M.js → idlehands-root-DFL2GrNW.js} +8 -8
  88. package/dist/{image-C_aN5P6-.js → image-BAsQlUqT.js} +1 -1
  89. package/dist/{image-DSDEbSiO.js → image-C2JZiK-6.js} +5 -5
  90. package/dist/{image-D9D-lzCw.js → image-Dlu13Ebx.js} +1 -1
  91. package/dist/{image-ops-BU-VdLZu.js → image-ops-BkoEFRYH.js} +10 -10
  92. package/dist/index.js +80 -80
  93. package/dist/{inspect-ISQZuNM5.js → inspect-Dg16DMLn.js} +4 -4
  94. package/dist/{install-safe-path-ChNR9pl6.js → install-safe-path-CNNMzJl9.js} +19 -19
  95. package/dist/{installs-CNubze2L.js → installs-ST3UaUVJ.js} +9 -9
  96. package/dist/{ir-VncGpwA1.js → ir-DV0Hszc8.js} +6 -6
  97. package/dist/{lifecycle-core-B6UoqYTJ.js → lifecycle-core-DOScNyOv.js} +5 -5
  98. package/dist/llm-slug-generator.js +7 -7
  99. package/dist/{local-roots-q0xbefkf.js → local-roots-Cco87A2_.js} +2 -2
  100. package/dist/{login-CfUhrgWT.js → login-Dl_lsEHS.js} +4 -4
  101. package/dist/{login-qr-DBMsUxgL.js → login-qr-B68cBRH0.js} +7 -7
  102. package/dist/{logs-cli-4VQ9Iwiw.js → logs-cli-DHCG25JA.js} +8 -8
  103. package/dist/{manager-BMAFgXyU.js → manager-BBeTPO2h.js} +13 -13
  104. package/dist/{manifest-registry-Bak1x76G.js → manifest-registry-RfRn8HJx.js} +1 -1
  105. package/dist/{markdown-tables-DZClqsNo.js → markdown-tables-C5hTDqNm.js} +1 -1
  106. package/dist/{memory-cli-CUGwnVIY.js → memory-cli-4wfelGdK.js} +12 -12
  107. package/dist/{model-C-icShH2.js → model-Bd-05WpB.js} +2 -2
  108. package/dist/{model-catalog-D9no0CH2.js → model-catalog-BCsDrrvq.js} +3 -3
  109. package/dist/{model-picker-BkXoTOiA.js → model-picker-D3U0wJCO.js} +4 -4
  110. package/dist/{model-selection-0dGxYGp8.js → model-selection-CSn9tUuH.js} +16 -16
  111. package/dist/{models-cli-CMwszgSD.js → models-cli-umEUn4Xu.js} +79 -79
  112. package/dist/{models-config-C5A1wDWh.js → models-config-lQpqp472.js} +6 -6
  113. package/dist/{node-cli-BYzjxmUY.js → node-cli-7gQ7xfOh.js} +32 -32
  114. package/dist/{node-service-C3vyxHLA.js → node-service-GpI0jzKr.js} +1 -1
  115. package/dist/{nodes-cli-kNOtp0U0.js → nodes-cli-CDXLGCox.js} +14 -14
  116. package/dist/{nodes-screen-CcpPaFxa.js → nodes-screen-CIAn0wXq.js} +4 -4
  117. package/dist/{npm-registry-spec-BCbbfIhX.js → npm-registry-spec-BfeHLbIQ.js} +16 -16
  118. package/dist/{npm-resolution-DLSA4PTO.js → npm-resolution-By6en78P.js} +3 -3
  119. package/dist/{onboard-CbXlbAx2.js → onboard-BmDmDXYf.js} +6 -6
  120. package/dist/{onboard-B6eOxpDM.js → onboard-Dw-URWpt.js} +1 -1
  121. package/dist/{onboard-channels-BISq46-i.js → onboard-channels-DCDhpz9s.js} +20 -20
  122. package/dist/{onboard-custom-DUbzMMu7.js → onboard-custom-D2sCP3_S.js} +4 -4
  123. package/dist/{onboard-helpers-mzy38DiC.js → onboard-helpers-CdzbIhrm.js} +8 -8
  124. package/dist/{onboard-hooks-D9teGxfH.js → onboard-hooks-_1Jgimeu.js} +4 -4
  125. package/dist/{onboard-remote-LCBHijVE.js → onboard-remote-pCRaL_Ey.js} +1 -1
  126. package/dist/{onboard-skills-jFY9gaOu.js → onboard-skills-DvwRvBvj.js} +4 -4
  127. package/dist/{onboarding-Da3n7Rvs.js → onboarding-Cf3JxJxY.js} +13 -13
  128. package/dist/{onboarding-DikyMlYG.js → onboarding-DIorhVOJ.js} +1 -1
  129. package/dist/{onboarding.finalize-CwYx5n3Z.js → onboarding.finalize-BCmAqhLV.js} +4 -4
  130. package/dist/{onboarding.finalize-Bp2ufMd0.js → onboarding.finalize-BH4WHo75.js} +82 -82
  131. package/dist/{onboarding.gateway-config-Btu2gzgr.js → onboarding.gateway-config-Sj7zQKsE.js} +16 -16
  132. package/dist/{openai-model-default-7J6cw1rA.js → openai-model-default-OPCCNNS0.js} +2 -2
  133. package/dist/{outbound-DPTxwchq.js → outbound-CG19kl0w.js} +4 -4
  134. package/dist/{outbound-attachment-Bot3bRnK.js → outbound-attachment-jYdMgCml.js} +2 -2
  135. package/dist/{pairing-cli-jwx6hMsM.js → pairing-cli-QJYYDcIK.js} +10 -10
  136. package/dist/{pairing-labels-ChQJzbS9.js → pairing-labels-DuZ7ih-T.js} +1 -1
  137. package/dist/{pairing-store-CPpEEQJO.js → pairing-store-qvpPoWL_.js} +2 -2
  138. package/dist/{pairing-token-lKXTMQ_M.js → pairing-token-3hoCgQqp.js} +7 -7
  139. package/dist/{path-alias-guards-FXBVVTLw.js → path-alias-guards-BCskHdfJ.js} +3 -3
  140. package/dist/{path-safety-DwibX65n.js → path-safety-C1Y004P_.js} +1 -1
  141. package/dist/{paths-B-CLQ5RT.js → paths-Bt0fZexW.js} +9 -9
  142. package/dist/{pi-embedded-Bc4KWuTe.js → pi-embedded-DMx6rHVL.js} +26 -26
  143. package/dist/{pi-embedded-helpers-CUoUoEEN.js → pi-embedded-helpers-B3ceCcxm.js} +4 -4
  144. package/dist/{pi-embedded-helpers-BCsfqpDt.js → pi-embedded-helpers-BkzrQ5bZ.js} +6 -6
  145. package/dist/{pi-embedded-helpers-C2j0LfJC.js → pi-embedded-helpers-Ct2rwp-P.js} +4 -4
  146. package/dist/{pi-embedded-k2mZJOsr.js → pi-embedded-mKozULng.js} +26 -26
  147. package/dist/{pi-model-discovery-BIP3RjXl.js → pi-model-discovery-Bt79ifyi.js} +1 -1
  148. package/dist/{pi-tools.policy-DfITIKZj.js → pi-tools.policy-B_ME3yF6.js} +5 -5
  149. package/dist/{plugin-auto-enable-7DUxMy6A.js → plugin-auto-enable-BMuSi4aV.js} +3 -3
  150. package/dist/{plugin-registry-DROWinG6.js → plugin-registry-BIoGoN5y.js} +3 -3
  151. package/dist/{plugins-D46VZh7u.js → plugins-B4hASNc2.js} +2 -2
  152. package/dist/{plugins-cli-b_o3IL7x.js → plugins-cli-Dlb8QO-K.js} +80 -80
  153. package/dist/{ports-B2o0FSFD.js → ports-B07M55Gr.js} +1 -1
  154. package/dist/{ports-SQy1d-RL.js → ports-DWJO5S52.js} +2 -2
  155. package/dist/{program-vH6RTUOw.js → program-Do2-I4y3.js} +2 -2
  156. package/dist/{program-context-D6irLwPo.js → program-context-B_byBfwR.js} +43 -43
  157. package/dist/{prompt-select-styled-CDoDFWo7.js → prompt-select-styled-CBF_I30O.js} +37 -37
  158. package/dist/{prompt-select-styled-DFVvU0TH.js → prompt-select-styled-VWGHu3e1.js} +1 -1
  159. package/dist/{provider-auth-helpers-CNRz0SFC.js → provider-auth-helpers-BGGSUXOH.js} +5 -5
  160. package/dist/{push-apns-e2xmxGGE.js → push-apns-CuwLAoXk.js} +5 -5
  161. package/dist/{pw-ai-7i9eGnLh.js → pw-ai-BGALvhDi.js} +11 -11
  162. package/dist/{pw-ai-CnvVtt_s.js → pw-ai-DIV4PcIo.js} +1 -1
  163. package/dist/{pw-ai-DjmrIQle.js → pw-ai-yrIWfcWX.js} +1 -1
  164. package/dist/{qmd-manager-B-qeywfQ.js → qmd-manager-CVcPfkhL.js} +19 -19
  165. package/dist/{qr-cli-CSt5ihwG.js → qr-cli-D2Oh8f0U.js} +1 -1
  166. package/dist/{query-expansion-Clts_AGz.js → query-expansion-i5I3yavb.js} +12 -12
  167. package/dist/{redact-snapshot-Cc8Brktr.js → redact-snapshot-K5EFkIbD.js} +14 -0
  168. package/dist/{redact-snapshot-BBNDQZIe.js → redact-snapshot-KMo22a85.js} +15 -1
  169. package/dist/{register.agent-HWcFMr6h.js → register.agent-CDcuj79y.js} +95 -95
  170. package/dist/register.configure-CxwdWRSG.js +168 -0
  171. package/dist/{register.maintenance-BYiX9iOa.js → register.maintenance-BcFR1fGQ.js} +5 -5
  172. package/dist/{register.maintenance-C6o2WuQx.js → register.maintenance-wv8PzmVy.js} +90 -90
  173. package/dist/{register.message-BewFLd-k.js → register.message-DUAiI9J7.js} +71 -71
  174. package/dist/{register.onboard-BVm-2XAx.js → register.onboard-BMNBXD29.js} +2 -2
  175. package/dist/{register.onboard-a0kqiCTa.js → register.onboard-F09brfSb.js} +18 -18
  176. package/dist/{register.orchestrator-anton-BYyjV8R-.js → register.orchestrator-anton-CGhKIDjJ.js} +14 -14
  177. package/dist/{register.setup-BJ0WBUpt.js → register.setup-DqbGSLoJ.js} +2 -2
  178. package/dist/{register.setup-BwPJaqpH.js → register.setup-jzek547p.js} +21 -21
  179. package/dist/{register.status-health-sessions-Clzt8hbv.js → register.status-health-sessions-ByfydR_f.js} +82 -82
  180. package/dist/{register.subclis-CrcOefJY.js → register.subclis-CuNL7Zgu.js} +3 -3
  181. package/dist/{replies-hSFVxL4h.js → replies-Czp4hvpS.js} +1 -1
  182. package/dist/{reply-D5gCiiGr.js → reply-CdFdL9nL.js} +153 -153
  183. package/dist/{reply-prefix-C3y4zpTl.js → reply-prefix-BMEdvSpA.js} +1 -1
  184. package/dist/{resolve-route-D_AbcmD6.js → resolve-route-Ef_Yt2Dw.js} +2 -2
  185. package/dist/{rpc-Cf9OK5Yk.js → rpc-CNqnw2FL.js} +1 -1
  186. package/dist/{run-main-BCX3UZMR.js → run-main-9A7FdIR1.js} +5 -5
  187. package/dist/{runner-DzszLzI4.js → runner-BFG54hnb.js} +20 -20
  188. package/dist/{runner-DjDddZhb.js → runner-BkCU-kqs.js} +1 -1
  189. package/dist/{runner-CZW_eyf2.js → runner-Bv_BA3vd.js} +1 -1
  190. package/dist/{runtime-XmXLaHNk.js → runtime-DEmy759r.js} +2 -2
  191. package/dist/{sandbox-DcUw5h3p.js → sandbox-CfPbhDY_.js} +20 -20
  192. package/dist/{sandbox-cli-DGvJ7Eeq.js → sandbox-cli-B4wLJr21.js} +22 -22
  193. package/dist/{secrets-cli-CR3h2TBy.js → secrets-cli-DP718vNZ.js} +9 -9
  194. package/dist/{security-cli-B9_LV2po.js → security-cli-CG2_SV7b.js} +39 -39
  195. package/dist/{send-C4v0Leny.js → send-BCPkAE2k.js} +6 -6
  196. package/dist/{send-DuwdEkLw.js → send-BPwTl4-K.js} +4 -4
  197. package/dist/{send-DQiw_nGD.js → send-CEavqqEz.js} +6 -6
  198. package/dist/{send-DwdHiC7_.js → send-CVIXqubC.js} +13 -13
  199. package/dist/{send--lzpNy4f.js → send-DDMaLJAQ.js} +7 -7
  200. package/dist/{server-D6MltJIF.js → server-BpSbZAwg.js} +14 -14
  201. package/dist/{server-context-DI0W_H7R.js → server-context-BxNSTpH6.js} +10 -10
  202. package/dist/{server-lifecycle-B5PlrlbG.js → server-lifecycle-CGKrGrhM.js} +2 -2
  203. package/dist/{server-node-events-DvStFPGi.js → server-node-events-BSPxvn7O.js} +71 -71
  204. package/dist/{service-C8NMS3m_.js → service-Bj2oSfpw.js} +15 -15
  205. package/dist/{session-CdnrRhb4.js → session-BKVySI8q.js} +1 -1
  206. package/dist/{sessions-BtPXimXQ.js → sessions-BqWocozB.js} +14 -14
  207. package/dist/{shared-CpDPo3hJ.js → shared-DnQ4iyXk.js} +2 -2
  208. package/dist/{shared-DpLSpJIl.js → shared-Jzrx8DfN.js} +1 -1
  209. package/dist/{skill-commands-BFzmZAfo.js → skill-commands-BwIRWSCI.js} +5 -5
  210. package/dist/{skill-scanner-D7mzXRXd.js → skill-scanner-B4Ftsbd2.js} +5 -5
  211. package/dist/{skills-DlvDyK8L.js → skills-TIyQDZx7.js} +3 -3
  212. package/dist/{skills-cli-BhKGhjbO.js → skills-cli-5lbXi4Lh.js} +5 -5
  213. package/dist/{skills-install-tr6wRWZj.js → skills-install-D0JHP5uM.js} +4 -4
  214. package/dist/{skills-status-qjQ8XP0h.js → skills-status-Q9skQExW.js} +1 -1
  215. package/dist/{status-CWnPokQF.js → status-YWasgjym.js} +24 -24
  216. package/dist/{status.update-CTi6vuWj.js → status.update-C3uRz7W6.js} +2 -2
  217. package/dist/{store-kH9wHHbO.js → store-CLNuI8-G.js} +5 -5
  218. package/dist/{system-cli-DyVZ5udc.js → system-cli-BfjZ6QvH.js} +8 -8
  219. package/dist/{system-run-approval-context-CISBXlNw.js → system-run-approval-context-xZVoE4nS.js} +1 -1
  220. package/dist/{system-run-command-qJdgzxLp.js → system-run-command-BIhrK3OI.js} +1 -1
  221. package/dist/{systemd-CaCR5CyM.js → systemd-DyrVLTI0.js} +9 -9
  222. package/dist/{systemd-hints-DHu-HVFx.js → systemd-hints-BoKKzRI_.js} +6 -6
  223. package/dist/{systemd-linger-B7XlUHk_.js → systemd-linger-DrhGd61G.js} +1 -1
  224. package/dist/{tables-g9xkflht.js → tables-CZSD889r.js} +1 -1
  225. package/dist/{target-errors-bLIVFsbF.js → target-errors-BYuWhuLU.js} +4 -4
  226. package/dist/{tool-images-CHqepyF_.js → tool-images-DZHrc4pq.js} +1 -1
  227. package/dist/{tui-Bne3YNiw.js → tui-B2bAseIB.js} +6 -6
  228. package/dist/{tui-cli-D0Z-rcUe.js → tui-cli-cewAjqAk.js} +30 -30
  229. package/dist/{update-cli-CxZD0ekr.js → update-cli-Cxp_mYOH.js} +5 -5
  230. package/dist/{update-cli-BTNcddEX.js → update-cli-D7gDHoEE.js} +99 -99
  231. package/dist/{update-D79ppbMQ.js → update-la2AdLf3.js} +3 -3
  232. package/dist/{update-runner-CN7Dm9tg.js → update-runner-DRglQgXe.js} +15 -15
  233. package/dist/{upgrade-command-909a7QUc.js → upgrade-command-28wRHZZ2.js} +3 -3
  234. package/dist/{web-t3fXJTeB.js → web-BuIXrrsp.js} +8 -8
  235. package/dist/{web-DiqHxfw7.js → web-BxegDO-S.js} +8 -8
  236. package/dist/web-DESq0zCM.js +123 -0
  237. package/dist/{webhooks-cli-2N03q0iY.js → webhooks-cli-BnmVPYkU.js} +6 -6
  238. package/dist/{whatsapp-actions-Cms8wQM1.js → whatsapp-actions-D2mBFzmK.js} +18 -18
  239. package/dist/{with-timeout-DEdycYxq.js → with-timeout-BodPmGCY.js} +3 -3
  240. package/dist/{workspace-D3pARwoB.js → workspace-CDw87aZG.js} +1 -1
  241. package/dist/{workspace-dirs-SsExQ3Bz.js → workspace-dirs-D3bousoX.js} +1 -1
  242. package/dist/{wsl-BJW8nTyL.js → wsl-CgXDjE09.js} +2 -2
  243. package/extensions/acpx/package.json +1 -1
  244. package/extensions/bluebubbles/package.json +1 -1
  245. package/extensions/copilot-proxy/package.json +1 -1
  246. package/extensions/diagnostics-otel/package.json +1 -1
  247. package/extensions/discord/package.json +1 -1
  248. package/extensions/feishu/package.json +1 -1
  249. package/extensions/google-gemini-cli-auth/package.json +1 -1
  250. package/extensions/googlechat/package.json +1 -1
  251. package/extensions/hand/package.json +1 -1
  252. package/extensions/imessage/package.json +1 -1
  253. package/extensions/irc/package.json +1 -1
  254. package/extensions/line/package.json +1 -1
  255. package/extensions/llm-task/package.json +1 -1
  256. package/extensions/matrix/CHANGELOG.md +6 -0
  257. package/extensions/matrix/package.json +1 -1
  258. package/extensions/mattermost/package.json +1 -1
  259. package/extensions/memory-core/package.json +1 -1
  260. package/extensions/memory-lancedb/package.json +1 -1
  261. package/extensions/minimax-portal-auth/package.json +1 -1
  262. package/extensions/msteams/CHANGELOG.md +6 -0
  263. package/extensions/msteams/package.json +1 -1
  264. package/extensions/nextcloud-talk/package.json +1 -1
  265. package/extensions/nostr/CHANGELOG.md +6 -0
  266. package/extensions/nostr/package.json +1 -1
  267. package/extensions/open-prose/package.json +1 -1
  268. package/extensions/signal/package.json +1 -1
  269. package/extensions/slack/package.json +1 -1
  270. package/extensions/synology-chat/package.json +1 -1
  271. package/extensions/telegram/package.json +1 -1
  272. package/extensions/tlon/package.json +1 -1
  273. package/extensions/twitch/CHANGELOG.md +6 -0
  274. package/extensions/twitch/package.json +1 -1
  275. package/extensions/voice-call/CHANGELOG.md +6 -0
  276. package/extensions/voice-call/package.json +1 -1
  277. package/extensions/whatsapp/package.json +1 -1
  278. package/extensions/zalo/CHANGELOG.md +6 -0
  279. package/extensions/zalo/package.json +1 -1
  280. package/extensions/zalouser/CHANGELOG.md +6 -0
  281. package/extensions/zalouser/package.json +1 -1
  282. package/package.json +1 -1
  283. package/dist/register.configure-k8gocsJw.js +0 -168
  284. package/dist/web-BV-BEZj6.js +0 -123
@@ -1,132 +1,132 @@
1
1
  import { t as CONFIG_PATH } from "./paths-Cn44w-EB.js";
2
2
  import { B as theme, R as colorize, S as shortenHomePath, z as isRich$1 } from "./utils-CXzXXV2o.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Jt as maskApiKey, St as resolveUsageProviderId, a as DEFAULT_OAUTH_WARN_MS, d as runEmbeddedPiAgent, o as buildAuthHealthSummary, qt as describeFailoverError, s as formatRemainingShort, xt as formatUsageWindowSummary, yt as loadProviderUsageSummary } from "./reply-D5gCiiGr.js";
5
- import { A as resolveDefaultAgentWorkspaceDir, M as resolveAgentModelFallbackValues, N as resolveAgentModelPrimaryValue, P as toAgentModelListLike, a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, s as resolveAgentExplicitModelPrimary, u as resolveAgentWorkspaceDir } from "./agent-scope-RA0zXRpu.js";
4
+ import { Jt as maskApiKey, St as resolveUsageProviderId, a as DEFAULT_OAUTH_WARN_MS, d as runEmbeddedPiAgent, o as buildAuthHealthSummary, qt as describeFailoverError, s as formatRemainingShort, xt as formatUsageWindowSummary, yt as loadProviderUsageSummary } from "./reply-CdFdL9nL.js";
5
+ import { A as resolveDefaultAgentWorkspaceDir, M as resolveAgentModelFallbackValues, N as resolveAgentModelPrimaryValue, P as toAgentModelListLike, a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, s as resolveAgentExplicitModelPrimary, u as resolveAgentWorkspaceDir } from "./agent-scope-Bn39ugK4.js";
6
6
  import "./subsystem-CGZX2PBV.js";
7
7
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
8
- import "./idlehands-root-B8cUs-5M.js";
8
+ import "./idlehands-root-DFL2GrNW.js";
9
9
  import "./exec-CKHMT0tZ.js";
10
- import { $r as DEFAULT_PROVIDER, Br as resolveAuthProfileDisplayLabel, Cr as listProfilesForProvider, Er as upsertAuthProfile, Fr as resolveAuthStorePathForDisplay, Ir as resolveIdleHandsAgentDir, It as loadConfig, Qr as DEFAULT_MODEL, Tr as setAuthProfileOrder, X as resolveEnvApiKey, Y as resolveApiKeyForProvider, _ as resolveModelRefFromString, c as modelKey, cn as parseDurationMs, d as parseModelRef, ft as resolveProfileUnusableUntilForDisplay, h as resolveDefaultModelForAgent, hr as getShellEnvAppliedKeys, i as findNormalizedProviderValue, kr as ensureAuthProfileStore, m as resolveConfiguredModelRef, q as getCustomProviderApiKey, r as buildModelAliasIndex, st as resolveAuthProfileOrder, u as normalizeProviderId, vr as shouldEnableShellEnvFallback } from "./model-selection-0dGxYGp8.js";
10
+ import { $r as DEFAULT_PROVIDER, Br as resolveAuthProfileDisplayLabel, Cr as listProfilesForProvider, Er as upsertAuthProfile, Fr as resolveAuthStorePathForDisplay, Ir as resolveIdleHandsAgentDir, It as loadConfig, Qr as DEFAULT_MODEL, Tr as setAuthProfileOrder, X as resolveEnvApiKey, Y as resolveApiKeyForProvider, _ as resolveModelRefFromString, c as modelKey, cn as parseDurationMs, d as parseModelRef, ft as resolveProfileUnusableUntilForDisplay, h as resolveDefaultModelForAgent, hr as getShellEnvAppliedKeys, i as findNormalizedProviderValue, kr as ensureAuthProfileStore, m as resolveConfiguredModelRef, q as getCustomProviderApiKey, r as buildModelAliasIndex, st as resolveAuthProfileOrder, u as normalizeProviderId, vr as shouldEnableShellEnvFallback } from "./model-selection-CSn9tUuH.js";
11
11
  import "./github-copilot-token-D7lpquOO.js";
12
12
  import { t as formatCliCommand } from "./command-format-DInZLuZ8.js";
13
13
  import "./boolean-BsqeuxE6.js";
14
14
  import "./env-Bx-F45X5.js";
15
15
  import "./host-env-security-DkAVVuaw.js";
16
16
  import "./env-vars-sTMVGyld.js";
17
- import "./manifest-registry-Bak1x76G.js";
18
- import "./dock-Y96MzKuM.js";
17
+ import "./manifest-registry-RfRn8HJx.js";
18
+ import "./dock-CzF5XYGd.js";
19
19
  import "./message-channel-DVauVtrg.js";
20
- import "./send-DwdHiC7_.js";
21
- import "./runner-DzszLzI4.js";
22
- import "./image-DSDEbSiO.js";
23
- import { t as ensureIdleHandsModelsJson } from "./models-config-C5A1wDWh.js";
24
- import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BIP3RjXl.js";
25
- import "./pi-embedded-helpers-BCsfqpDt.js";
26
- import "./sandbox-DcUw5h3p.js";
20
+ import "./send-CVIXqubC.js";
21
+ import "./runner-BFG54hnb.js";
22
+ import "./image-C2JZiK-6.js";
23
+ import { t as ensureIdleHandsModelsJson } from "./models-config-lQpqp472.js";
24
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Bt79ifyi.js";
25
+ import "./pi-embedded-helpers-BkzrQ5bZ.js";
26
+ import "./sandbox-CfPbhDY_.js";
27
27
  import "./tool-catalog-4_Wxc542.js";
28
- import "./chrome-VBsQfIrt.js";
28
+ import "./chrome-YguTEaLx.js";
29
29
  import "./tailscale-B5Irc_Bi.js";
30
30
  import "./ip-DJ5wsTQn.js";
31
31
  import "./tailnet-C9lH_YnG.js";
32
32
  import "./ws-XBTtYpJc.js";
33
33
  import "./auth-heRVBxh2.js";
34
- import "./server-context-DI0W_H7R.js";
34
+ import "./server-context-BxNSTpH6.js";
35
35
  import "./frontmatter-D-sQ_Hqk.js";
36
- import "./skills-DlvDyK8L.js";
37
- import "./path-alias-guards-FXBVVTLw.js";
38
- import "./paths-B-CLQ5RT.js";
36
+ import "./skills-TIyQDZx7.js";
37
+ import "./path-alias-guards-BCskHdfJ.js";
38
+ import "./paths-Bt0fZexW.js";
39
39
  import "./redact-B_4KNlXs.js";
40
40
  import "./errors-DZDuPc3M.js";
41
- import "./fs-safe-_JQUGpZf.js";
41
+ import "./fs-safe-DNFrxDS-.js";
42
42
  import "./ssrf-Dw9zzKSM.js";
43
- import "./image-ops-BU-VdLZu.js";
44
- import "./store-kH9wHHbO.js";
45
- import "./ports-SQy1d-RL.js";
43
+ import "./image-ops-BkoEFRYH.js";
44
+ import "./store-CLNuI8-G.js";
45
+ import "./ports-DWJO5S52.js";
46
46
  import "./trash-CUFiyQN5.js";
47
47
  import "./server-middleware-BC21xYvr.js";
48
- import "./sessions-BtPXimXQ.js";
49
- import "./plugins-D46VZh7u.js";
50
- import "./accounts-DLTODa_Z.js";
51
- import "./accounts-3HS_UAhJ.js";
52
- import "./accounts-DgbTKQoW.js";
53
- import "./bindings-B59Q7nsk.js";
48
+ import "./sessions-BqWocozB.js";
49
+ import "./plugins-B4hASNc2.js";
50
+ import "./accounts-D-hQsUw-.js";
51
+ import "./accounts-DsVN0UNw.js";
52
+ import "./accounts-D87a1Y_K.js";
53
+ import "./bindings-DZjkLUU_.js";
54
54
  import "./logging-q4KyMmY-.js";
55
- import "./auth-store-DDzIMy8_.js";
56
- import "./send-DuwdEkLw.js";
55
+ import "./auth-store-CMyrmmSF.js";
56
+ import "./send-BPwTl4-K.js";
57
57
  import { l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath } from "./paths-DRz46q00.js";
58
58
  import "./chat-envelope-Bebo3vwl.js";
59
- import "./tool-images-CHqepyF_.js";
59
+ import "./tool-images-DZHrc4pq.js";
60
60
  import "./tool-display-Dac7lHGW.js";
61
61
  import "./fetch-guard-yUZu1Vzc.js";
62
- import "./api-key-rotation-B-FTJm5p.js";
63
- import "./local-roots-q0xbefkf.js";
64
- import { n as loadModelCatalog } from "./model-catalog-D9no0CH2.js";
62
+ import "./api-key-rotation-nXQVJErE.js";
63
+ import "./local-roots-Cco87A2_.js";
64
+ import { n as loadModelCatalog } from "./model-catalog-BCsDrrvq.js";
65
65
  import "./tokens-Dg-QZ_pN.js";
66
- import "./deliver--kttnrER.js";
67
- import "./commands-Dj5LalLo.js";
68
- import "./commands-registry-CURlRZQJ.js";
69
- import "./client-DtnD-ee9.js";
70
- import "./call-BpWhjuOg.js";
71
- import "./pairing-token-lKXTMQ_M.js";
66
+ import "./deliver-yTpXc5sv.js";
67
+ import "./commands-D3BU_t7G.js";
68
+ import "./commands-registry-Cj4D_1tw.js";
69
+ import "./client-Dl5EAvfO.js";
70
+ import "./call-Du-oBD99.js";
71
+ import "./pairing-token-3hoCgQqp.js";
72
72
  import "./fetch-CYe1ekSh.js";
73
73
  import "./retry-Db05aSB8.js";
74
- import "./pairing-store-CPpEEQJO.js";
74
+ import "./pairing-store-qvpPoWL_.js";
75
75
  import "./exec-approvals-C2s2dPha.js";
76
- import "./exec-approvals-allowlist-Co2tJSEo.js";
77
- import "./exec-safe-bin-runtime-policy-DaoU9-ni.js";
78
- import "./nodes-screen-CcpPaFxa.js";
79
- import "./target-errors-bLIVFsbF.js";
76
+ import "./exec-approvals-allowlist-8AkOwwIr.js";
77
+ import "./exec-safe-bin-runtime-policy-DYXuBKqH.js";
78
+ import "./nodes-screen-CIAn0wXq.js";
79
+ import "./target-errors-BYuWhuLU.js";
80
80
  import "./diagnostic-session-state-CJHdRyOy.js";
81
- import "./with-timeout-DEdycYxq.js";
81
+ import "./with-timeout-BodPmGCY.js";
82
82
  import "./diagnostic-ByHpt6q8.js";
83
- import "./send--lzpNy4f.js";
84
- import { r as resolveForwardCompatModel } from "./model-C-icShH2.js";
85
- import "./reply-prefix-C3y4zpTl.js";
86
- import "./memory-cli-CUGwnVIY.js";
87
- import "./manager-BMAFgXyU.js";
88
- import "./query-expansion-Clts_AGz.js";
83
+ import "./send-DDMaLJAQ.js";
84
+ import { r as resolveForwardCompatModel } from "./model-Bd-05WpB.js";
85
+ import "./reply-prefix-BMEdvSpA.js";
86
+ import "./memory-cli-4wfelGdK.js";
87
+ import "./manager-BBeTPO2h.js";
88
+ import "./query-expansion-i5I3yavb.js";
89
89
  import "./chunk-ClMFHJu-.js";
90
- import "./markdown-tables-DZClqsNo.js";
91
- import "./ir-VncGpwA1.js";
90
+ import "./markdown-tables-C5hTDqNm.js";
91
+ import "./ir-DV0Hszc8.js";
92
92
  import "./render-DC4qnRqG.js";
93
- import "./pi-tools.policy-DfITIKZj.js";
93
+ import "./pi-tools.policy-B_ME3yF6.js";
94
94
  import "./channel-activity-DaCsrdWK.js";
95
- import "./tables-g9xkflht.js";
96
- import "./send-C4v0Leny.js";
95
+ import "./tables-CZSD889r.js";
96
+ import "./send-BCPkAE2k.js";
97
97
  import "./proxy-yk1Oqe9p.js";
98
98
  import { t as formatDocsLink } from "./links-15764jZB.js";
99
99
  import { n as runCommandWithRuntime, t as resolveOptionFromCommand } from "./cli-utils-CH2y4E2f.js";
100
100
  import "./help-format-CMAqOikG.js";
101
101
  import { r as withProgressTotals } from "./progress-BQLz1r3L.js";
102
- import "./resolve-route-D_AbcmD6.js";
103
- import "./replies-hSFVxL4h.js";
104
- import "./skill-commands-BFzmZAfo.js";
105
- import "./workspace-dirs-SsExQ3Bz.js";
106
- import "./deps-CwPrf7RC.js";
107
- import "./plugin-auto-enable-7DUxMy6A.js";
108
- import "./channel-selection-ZxRkxpuF.js";
109
- import "./outbound-attachment-Bot3bRnK.js";
102
+ import "./resolve-route-Ef_Yt2Dw.js";
103
+ import "./replies-Czp4hvpS.js";
104
+ import "./skill-commands-BwIRWSCI.js";
105
+ import "./workspace-dirs-D3bousoX.js";
106
+ import "./deps-BotXja4Z.js";
107
+ import "./plugin-auto-enable-BMuSi4aV.js";
108
+ import "./channel-selection-3jUl-PyW.js";
109
+ import "./outbound-attachment-jYdMgCml.js";
110
110
  import "./delivery-queue-BvDRo8CK.js";
111
111
  import "./session-cost-usage-DS1rjzML.js";
112
- import "./send-DQiw_nGD.js";
113
- import { f as openUrl } from "./onboard-helpers-mzy38DiC.js";
112
+ import "./send-CEavqqEz.js";
113
+ import { f as openUrl } from "./onboard-helpers-CdzbIhrm.js";
114
114
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-kmKiCZnm.js";
115
- import "./pairing-labels-ChQJzbS9.js";
116
- import "./server-lifecycle-B5PlrlbG.js";
115
+ import "./pairing-labels-DuZ7ih-T.js";
116
+ import "./server-lifecycle-CGKrGrhM.js";
117
117
  import "./stagger-rQoQSWkz.js";
118
- import "./system-run-command-qJdgzxLp.js";
118
+ import "./system-run-command-BIhrK3OI.js";
119
119
  import "./note-69EfBEU-.js";
120
120
  import { t as createClackPrompter } from "./clack-prompter-CvbZsmjW.js";
121
121
  import { t as renderTable } from "./table-B9AmL3M1.js";
122
122
  import { t as inferParamBFromIdOrName } from "./model-param-b-DnD62yWY.js";
123
123
  import { n as redactSecrets } from "./format-BK5XIv_A.js";
124
- import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-CpDPo3hJ.js";
125
- import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-BJq87X3o.js";
124
+ import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-DnQ4iyXk.js";
125
+ import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-fKt_cHOj.js";
126
126
  import { n as logConfigUpdated } from "./logging-B0-9lotb.js";
127
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-CNRz0SFC.js";
127
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-BGGSUXOH.js";
128
128
  import path from "node:path";
129
- import fs from "node:fs/promises";
129
+ import fsPromises from "node:fs/promises";
130
130
  import crypto from "node:crypto";
131
131
  import { complete, getEnvApiKey, getModel } from "@mariozechner/pi-ai";
132
132
  import { Type } from "@sinclair/typebox";
@@ -930,8 +930,8 @@ function printModelTable(rows, runtime, opts = {}) {
930
930
  //#region src/commands/models/list.list-command.ts
931
931
  async function modelsListCommand(opts, runtime) {
932
932
  ensureFlagCompatibility(opts);
933
- const { loadConfig } = await import("./model-selection-0dGxYGp8.js").then((n) => n.Mt);
934
- const { ensureAuthProfileStore } = await import("./model-selection-0dGxYGp8.js").then((n) => n.ot);
933
+ const { loadConfig } = await import("./model-selection-CSn9tUuH.js").then((n) => n.Mt);
934
+ const { ensureAuthProfileStore } = await import("./model-selection-CSn9tUuH.js").then((n) => n.ot);
935
935
  const cfg = loadConfig();
936
936
  const authStore = ensureAuthProfileStore();
937
937
  const providerFilter = (() => {
@@ -991,7 +991,7 @@ async function modelsListCommand(opts, runtime) {
991
991
  }
992
992
  }
993
993
  if (!model) {
994
- const { resolveModel } = await import("./model-C-icShH2.js").then((n) => n.t);
994
+ const { resolveModel } = await import("./model-Bd-05WpB.js").then((n) => n.t);
995
995
  model = resolveModel(entry.ref.provider, entry.ref.model, void 0, cfg).model;
996
996
  }
997
997
  if (opts.local && model && !isLocalBaseUrl(model.baseUrl)) continue;
@@ -1266,7 +1266,7 @@ async function probeTarget(params) {
1266
1266
  };
1267
1267
  const sessionId = `probe-${target.provider}-${crypto.randomUUID()}`;
1268
1268
  const sessionFile = resolveSessionTranscriptPath(sessionId, agentId);
1269
- await fs.mkdir(sessionDir, { recursive: true });
1269
+ await fsPromises.mkdir(sessionDir, { recursive: true });
1270
1270
  const start = Date.now();
1271
1271
  try {
1272
1272
  await runEmbeddedPiAgent({
@@ -1321,7 +1321,7 @@ async function runTargetsWithConcurrency(params) {
1321
1321
  const agentDir = resolveIdleHandsAgentDir();
1322
1322
  const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId) ?? resolveDefaultAgentWorkspaceDir();
1323
1323
  const sessionDir = resolveSessionTranscriptsDirForAgent(agentId);
1324
- await fs.mkdir(workspaceDir, { recursive: true });
1324
+ await fsPromises.mkdir(workspaceDir, { recursive: true });
1325
1325
  let completed = 0;
1326
1326
  const results = Array.from({ length: targets.length });
1327
1327
  let cursor = 0;
@@ -1,7 +1,7 @@
1
1
  import { d as isRecord } from "./utils-CXzXXV2o.js";
2
- import { A as normalizeProviders, Ir as resolveIdleHandsAgentDir, It as loadConfig, M as resolveImplicitProviders, j as resolveImplicitCopilotProvider } from "./model-selection-0dGxYGp8.js";
2
+ import { A as normalizeProviders, Ir as resolveIdleHandsAgentDir, It as loadConfig, M as resolveImplicitProviders, j as resolveImplicitCopilotProvider } from "./model-selection-CSn9tUuH.js";
3
3
  import path from "node:path";
4
- import fs from "node:fs/promises";
4
+ import fsPromises from "node:fs/promises";
5
5
 
6
6
  //#region src/agents/models-config.ts
7
7
  const DEFAULT_MODE = "merge";
@@ -57,7 +57,7 @@ function mergeProviders(params) {
57
57
  }
58
58
  async function readJson(pathname) {
59
59
  try {
60
- const raw = await fs.readFile(pathname, "utf8");
60
+ const raw = await fsPromises.readFile(pathname, "utf8");
61
61
  return JSON.parse(raw);
62
62
  } catch {
63
63
  return null;
@@ -110,7 +110,7 @@ async function ensureIdleHandsModelsJson(config, agentDirOverride) {
110
110
  });
111
111
  const next = `${JSON.stringify({ providers: normalizedProviders }, null, 2)}\n`;
112
112
  try {
113
- existingRaw = await fs.readFile(targetPath, "utf8");
113
+ existingRaw = await fsPromises.readFile(targetPath, "utf8");
114
114
  } catch {
115
115
  existingRaw = "";
116
116
  }
@@ -118,11 +118,11 @@ async function ensureIdleHandsModelsJson(config, agentDirOverride) {
118
118
  agentDir,
119
119
  wrote: false
120
120
  };
121
- await fs.mkdir(agentDir, {
121
+ await fsPromises.mkdir(agentDir, {
122
122
  recursive: true,
123
123
  mode: 448
124
124
  });
125
- await fs.writeFile(targetPath, next, { mode: 384 });
125
+ await fsPromises.writeFile(targetPath, next, { mode: 384 });
126
126
  return {
127
127
  agentDir,
128
128
  wrote: true
@@ -1,62 +1,62 @@
1
1
  import { d as resolveIsNixMode, g as resolveStateDir } from "./paths-Cn44w-EB.js";
2
2
  import { B as theme, R as colorize } from "./utils-CXzXXV2o.js";
3
- import { i as resolveAgentConfig } from "./agent-scope-RA0zXRpu.js";
3
+ import { i as resolveAgentConfig } from "./agent-scope-Bn39ugK4.js";
4
4
  import "./subsystem-CGZX2PBV.js";
5
5
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
6
- import { s as sameFileIdentity } from "./idlehands-root-B8cUs-5M.js";
6
+ import { s as sameFileIdentity } from "./idlehands-root-DFL2GrNW.js";
7
7
  import "./exec-CKHMT0tZ.js";
8
- import { It as loadConfig, Nn as analyzeArgvCommand } from "./model-selection-0dGxYGp8.js";
8
+ import { It as loadConfig, Nn as analyzeArgvCommand } from "./model-selection-CSn9tUuH.js";
9
9
  import "./github-copilot-token-D7lpquOO.js";
10
10
  import { t as formatCliCommand } from "./command-format-DInZLuZ8.js";
11
11
  import "./boolean-BsqeuxE6.js";
12
12
  import "./env-Bx-F45X5.js";
13
13
  import { a as sanitizeSystemRunEnvOverrides, i as sanitizeHostExecEnv } from "./host-env-security-DkAVVuaw.js";
14
14
  import { r as VERSION } from "./env-vars-sTMVGyld.js";
15
- import "./manifest-registry-Bak1x76G.js";
15
+ import "./manifest-registry-RfRn8HJx.js";
16
16
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DVauVtrg.js";
17
- import "./chrome-VBsQfIrt.js";
17
+ import "./chrome-YguTEaLx.js";
18
18
  import "./tailscale-B5Irc_Bi.js";
19
19
  import "./ip-DJ5wsTQn.js";
20
20
  import "./tailnet-C9lH_YnG.js";
21
21
  import "./ws-XBTtYpJc.js";
22
22
  import "./auth-heRVBxh2.js";
23
- import { i as resolveBrowserConfig } from "./server-context-DI0W_H7R.js";
24
- import "./path-alias-guards-FXBVVTLw.js";
25
- import "./paths-B-CLQ5RT.js";
23
+ import { i as resolveBrowserConfig } from "./server-context-BxNSTpH6.js";
24
+ import "./path-alias-guards-BCskHdfJ.js";
25
+ import "./paths-Bt0fZexW.js";
26
26
  import "./redact-B_4KNlXs.js";
27
27
  import "./errors-DZDuPc3M.js";
28
- import "./fs-safe-_JQUGpZf.js";
28
+ import "./fs-safe-DNFrxDS-.js";
29
29
  import "./ssrf-Dw9zzKSM.js";
30
- import { c as detectMime } from "./image-ops-BU-VdLZu.js";
31
- import "./store-kH9wHHbO.js";
32
- import "./ports-SQy1d-RL.js";
30
+ import { c as detectMime } from "./image-ops-BkoEFRYH.js";
31
+ import "./store-CLNuI8-G.js";
32
+ import "./ports-DWJO5S52.js";
33
33
  import "./trash-CUFiyQN5.js";
34
34
  import "./logging-q4KyMmY-.js";
35
- import { $t as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-DtnD-ee9.js";
36
- import "./pairing-token-lKXTMQ_M.js";
35
+ import { $t as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-Dl5EAvfO.js";
36
+ import "./pairing-token-3hoCgQqp.js";
37
37
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, d as resolveExecApprovals, l as recordAllowlistUse, m as requestJsonlSocket, n as addAllowlistEntry, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals, u as requiresExecApproval } from "./exec-approvals-C2s2dPha.js";
38
- import { n as evaluateShellAllowlist, r as resolveAllowAlwaysPatterns, t as evaluateExecAllowlist } from "./exec-approvals-allowlist-Co2tJSEo.js";
39
- import { n as resolveExecSafeBinRuntimePolicy } from "./exec-safe-bin-runtime-policy-DaoU9-ni.js";
40
- import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext, t as withTimeout } from "./with-timeout-DEdycYxq.js";
38
+ import { n as evaluateShellAllowlist, r as resolveAllowAlwaysPatterns, t as evaluateExecAllowlist } from "./exec-approvals-allowlist-8AkOwwIr.js";
39
+ import { n as resolveExecSafeBinRuntimePolicy } from "./exec-safe-bin-runtime-policy-DYXuBKqH.js";
40
+ import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext, t as withTimeout } from "./with-timeout-BodPmGCY.js";
41
41
  import { t as formatDocsLink } from "./links-15764jZB.js";
42
42
  import { t as formatHelpExamples } from "./help-format-CMAqOikG.js";
43
- import "./server-lifecycle-B5PlrlbG.js";
43
+ import "./server-lifecycle-CGKrGrhM.js";
44
44
  import { _ as resolveNodeWindowsTaskName, c as formatNodeServiceDescription, g as resolveNodeSystemdServiceName, h as resolveNodeLaunchAgentLabel } from "./constants-Z_TnY4pX.js";
45
- import { n as resolveSystemRunCommand } from "./system-run-command-qJdgzxLp.js";
45
+ import { n as resolveSystemRunCommand } from "./system-run-command-BIhrK3OI.js";
46
46
  import { t as ensureIdleHandsCliOnPath } from "./path-env-CKSLQUS1.js";
47
47
  import "./runtime-guard-X6f4YmTM.js";
48
- import { a as buildNodeServiceEnvironment, i as emitNodeRuntimeWarning, p as resolveNodeProgramArguments, r as resolveGatewayDevMode, u as resolvePreferredNodePath } from "./daemon-install-helpers-BZY9-jNW.js";
48
+ import { a as buildNodeServiceEnvironment, i as emitNodeRuntimeWarning, p as resolveNodeProgramArguments, r as resolveGatewayDevMode, u as resolvePreferredNodePath } from "./daemon-install-helpers-Bug_GYuy.js";
49
49
  import { r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BGXzfrm4.js";
50
- import "./systemd-CaCR5CyM.js";
51
- import { s as resolveGatewayLogPaths } from "./service-C8NMS3m_.js";
52
- import { a as createCliStatusTextStyles, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, m as buildDaemonServiceSnapshot, r as runServiceStop, t as runServiceRestart } from "./lifecycle-core-B6UoqYTJ.js";
53
- import { s as formatRuntimeStatus } from "./systemd-hints-DHu-HVFx.js";
50
+ import "./systemd-DyrVLTI0.js";
51
+ import { s as resolveGatewayLogPaths } from "./service-Bj2oSfpw.js";
52
+ import { a as createCliStatusTextStyles, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, m as buildDaemonServiceSnapshot, r as runServiceStop, t as runServiceRestart } from "./lifecycle-core-DOScNyOv.js";
53
+ import { s as formatRuntimeStatus } from "./systemd-hints-BoKKzRI_.js";
54
54
  import { t as parsePort } from "./parse-port-l2c0Yyf3.js";
55
55
  import { i as NODE_SYSTEM_RUN_COMMANDS, n as NODE_EXEC_APPROVALS_COMMANDS, t as NODE_BROWSER_PROXY_COMMAND } from "./node-commands-DAlC0lvG.js";
56
- import { t as resolveNodeService } from "./node-service-C3vyxHLA.js";
56
+ import { t as resolveNodeService } from "./node-service-GpI0jzKr.js";
57
57
  import fs from "node:fs";
58
58
  import path from "node:path";
59
- import fs$1 from "node:fs/promises";
59
+ import fsPromises from "node:fs/promises";
60
60
  import { spawn } from "node:child_process";
61
61
  import crypto from "node:crypto";
62
62
 
@@ -80,7 +80,7 @@ function normalizeConfig(config) {
80
80
  async function loadNodeHostConfig() {
81
81
  const filePath = resolveNodeHostConfigPath();
82
82
  try {
83
- const raw = await fs$1.readFile(filePath, "utf8");
83
+ const raw = await fsPromises.readFile(filePath, "utf8");
84
84
  return normalizeConfig(JSON.parse(raw));
85
85
  } catch {
86
86
  return null;
@@ -88,11 +88,11 @@ async function loadNodeHostConfig() {
88
88
  }
89
89
  async function saveNodeHostConfig(config) {
90
90
  const filePath = resolveNodeHostConfigPath();
91
- await fs$1.mkdir(path.dirname(filePath), { recursive: true });
91
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
92
92
  const payload = JSON.stringify(config, null, 2);
93
- await fs$1.writeFile(filePath, `${payload}\n`, { mode: 384 });
93
+ await fsPromises.writeFile(filePath, `${payload}\n`, { mode: 384 });
94
94
  try {
95
- await fs$1.chmod(filePath, 384);
95
+ await fsPromises.chmod(filePath, 384);
96
96
  } catch {}
97
97
  }
98
98
  async function ensureNodeHostConfig() {
@@ -182,10 +182,10 @@ function collectBrowserProxyPaths(payload) {
182
182
  return [...paths];
183
183
  }
184
184
  async function readBrowserProxyFile(filePath) {
185
- const stat = await fs$1.stat(filePath).catch(() => null);
185
+ const stat = await fsPromises.stat(filePath).catch(() => null);
186
186
  if (!stat || !stat.isFile()) return null;
187
187
  if (stat.size > BROWSER_PROXY_MAX_FILE_BYTES) throw new Error(`browser proxy file exceeds ${Math.round(BROWSER_PROXY_MAX_FILE_BYTES / (1024 * 1024))}MB`);
188
- const buffer = await fs$1.readFile(filePath);
188
+ const buffer = await fsPromises.readFile(filePath);
189
189
  const mimeType = await detectMime({
190
190
  buffer,
191
191
  filePath
@@ -1,5 +1,5 @@
1
1
  import { _ as resolveNodeWindowsTaskName, a as NODE_SERVICE_KIND, g as resolveNodeSystemdServiceName, h as resolveNodeLaunchAgentLabel, o as NODE_SERVICE_MARKER, s as NODE_WINDOWS_TASK_SCRIPT_NAME } from "./constants-Z_TnY4pX.js";
2
- import { t as resolveGatewayService } from "./service-C8NMS3m_.js";
2
+ import { t as resolveGatewayService } from "./service-Bj2oSfpw.js";
3
3
 
4
4
  //#region src/daemon/node-service.ts
5
5
  function withNodeServiceEnv(env) {
@@ -1,41 +1,41 @@
1
1
  import "./paths-Cn44w-EB.js";
2
2
  import { B as theme, S as shortenHomePath, x as shortenHomeInString, z as isRich } from "./utils-CXzXXV2o.js";
3
- import { d as resolveDefaultAgentId, i as resolveAgentConfig } from "./agent-scope-RA0zXRpu.js";
3
+ import { d as resolveDefaultAgentId, i as resolveAgentConfig } from "./agent-scope-Bn39ugK4.js";
4
4
  import "./subsystem-CGZX2PBV.js";
5
5
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
6
- import "./idlehands-root-B8cUs-5M.js";
6
+ import "./idlehands-root-DFL2GrNW.js";
7
7
  import "./exec-CKHMT0tZ.js";
8
- import { It as loadConfig, cn as parseDurationMs } from "./model-selection-0dGxYGp8.js";
8
+ import { It as loadConfig, cn as parseDurationMs } from "./model-selection-CSn9tUuH.js";
9
9
  import "./github-copilot-token-D7lpquOO.js";
10
10
  import "./boolean-BsqeuxE6.js";
11
11
  import "./env-Bx-F45X5.js";
12
12
  import "./host-env-security-DkAVVuaw.js";
13
13
  import "./env-vars-sTMVGyld.js";
14
- import "./manifest-registry-Bak1x76G.js";
14
+ import "./manifest-registry-RfRn8HJx.js";
15
15
  import "./message-channel-DVauVtrg.js";
16
16
  import "./ip-DJ5wsTQn.js";
17
17
  import "./tailnet-C9lH_YnG.js";
18
18
  import "./ws-XBTtYpJc.js";
19
19
  import "./redact-B_4KNlXs.js";
20
20
  import "./errors-DZDuPc3M.js";
21
- import "./client-DtnD-ee9.js";
22
- import { a as randomIdempotencyKey } from "./call-BpWhjuOg.js";
23
- import "./pairing-token-lKXTMQ_M.js";
21
+ import "./client-Dl5EAvfO.js";
22
+ import { a as randomIdempotencyKey } from "./call-Du-oBD99.js";
23
+ import "./pairing-token-3hoCgQqp.js";
24
24
  import { n as formatTimeAgo } from "./format-relative-DcQZUAYl.js";
25
25
  import { f as resolveExecApprovalsFromFile, i as maxAsk, o as minSecurity, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-C2s2dPha.js";
26
- import "./exec-approvals-allowlist-Co2tJSEo.js";
27
- import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-CcpPaFxa.js";
26
+ import "./exec-approvals-allowlist-8AkOwwIr.js";
27
+ import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-CIAn0wXq.js";
28
28
  import { n as parseNodeList, r as parsePairingList } from "./node-match-CZ8lT9jK.js";
29
29
  import { t as formatDocsLink } from "./links-15764jZB.js";
30
30
  import { n as runCommandWithRuntime } from "./cli-utils-CH2y4E2f.js";
31
31
  import { t as formatHelpExamples } from "./help-format-CMAqOikG.js";
32
32
  import "./progress-BQLz1r3L.js";
33
33
  import { t as parseTimeoutMs } from "./parse-timeout-iAZMQ2yo.js";
34
- import "./system-run-command-qJdgzxLp.js";
34
+ import "./system-run-command-BIhrK3OI.js";
35
35
  import { t as renderTable } from "./table-B9AmL3M1.js";
36
- import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-Cf9OK5Yk.js";
37
- import { t as parsePreparedSystemRunPayload } from "./system-run-approval-context-CISBXlNw.js";
38
- import fs from "node:fs/promises";
36
+ import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-CNqnw2FL.js";
37
+ import { t as parsePreparedSystemRunPayload } from "./system-run-approval-context-xZVoE4nS.js";
38
+ import fsPromises from "node:fs/promises";
39
39
 
40
40
  //#region src/cli/nodes-cli/cli-utils.ts
41
41
  function getNodesTheme() {
@@ -378,7 +378,7 @@ function registerNodesCanvasCommands(nodes) {
378
378
  const hasJsonl = Boolean(opts.jsonl);
379
379
  const hasText = typeof opts.text === "string";
380
380
  if (hasJsonl === hasText) throw new Error("provide exactly one of --jsonl or --text");
381
- const jsonl = hasText ? buildA2UITextJsonl(String(opts.text ?? "")) : await fs.readFile(String(opts.jsonl), "utf8");
381
+ const jsonl = hasText ? buildA2UITextJsonl(String(opts.text ?? "")) : await fsPromises.readFile(String(opts.jsonl), "utf8");
382
382
  const { version, messageCount } = validateA2UIJsonl(jsonl);
383
383
  if (version === "v0.9") throw new Error("Detected A2UI v0.9 JSONL (createSurface). IdleHands currently supports v0.8 only.");
384
384
  await invokeCanvas(opts, "canvas.a2ui.pushJSONL", { jsonl });
@@ -3,7 +3,7 @@ import { r as resolveCliName } from "./command-format-DInZLuZ8.js";
3
3
  import fs from "node:fs";
4
4
  import * as path$1 from "node:path";
5
5
  import path from "node:path";
6
- import * as fs$2 from "node:fs/promises";
6
+ import * as fs$1 from "node:fs/promises";
7
7
  import { randomUUID } from "node:crypto";
8
8
 
9
9
  //#region src/infra/path-prepend.ts
@@ -138,7 +138,7 @@ async function writeUrlToFile(filePath, url) {
138
138
  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}`);
139
139
  const body = res.body;
140
140
  if (!body) throw new Error(`failed to download ${url}: empty response body`);
141
- const fileHandle = await fs$2.open(filePath, "w");
141
+ const fileHandle = await fs$1.open(filePath, "w");
142
142
  let bytes = 0;
143
143
  let thrown;
144
144
  try {
@@ -157,7 +157,7 @@ async function writeUrlToFile(filePath, url) {
157
157
  await fileHandle.close();
158
158
  }
159
159
  if (thrown) {
160
- await fs$2.unlink(filePath).catch(() => {});
160
+ await fs$1.unlink(filePath).catch(() => {});
161
161
  throw thrown;
162
162
  }
163
163
  return {
@@ -167,7 +167,7 @@ async function writeUrlToFile(filePath, url) {
167
167
  }
168
168
  async function writeBase64ToFile(filePath, base64) {
169
169
  const buf = Buffer.from(base64, "base64");
170
- await fs$2.writeFile(filePath, buf);
170
+ await fs$1.writeFile(filePath, buf);
171
171
  return {
172
172
  path: filePath,
173
173
  bytes: buf.length
@@ -1,17 +1,17 @@
1
1
  import { y as resolveUserPath } from "./utils-CXzXXV2o.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CKHMT0tZ.js";
3
- import { a as extractArchive, c as resolveArchiveKind, l as resolvePackedRootDir, o as fileExists } from "./install-safe-path-ChNR9pl6.js";
3
+ import { a as extractArchive, c as resolveArchiveKind, l as resolvePackedRootDir, o as fileExists } from "./install-safe-path-CNNMzJl9.js";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
- import fs from "node:fs/promises";
6
+ import fsPromises from "node:fs/promises";
7
7
 
8
8
  //#region src/infra/install-source-utils.ts
9
9
  async function withTempDir(prefix, fn) {
10
- const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), prefix));
10
+ const tmpDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), prefix));
11
11
  try {
12
12
  return await fn(tmpDir);
13
13
  } finally {
14
- await fs.rm(tmpDir, {
14
+ await fsPromises.rm(tmpDir, {
15
15
  recursive: true,
16
16
  force: true
17
17
  }).catch(() => void 0);
@@ -96,12 +96,12 @@ function parsePackedArchiveFromStdout(stdout) {
96
96
  }
97
97
  }
98
98
  async function findPackedArchiveInDir(cwd) {
99
- const archives = (await fs.readdir(cwd, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".tgz"));
99
+ const archives = (await fsPromises.readdir(cwd, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".tgz"));
100
100
  if (archives.length === 0) return;
101
101
  if (archives.length === 1) return archives[0]?.name;
102
102
  const sortedByMtime = await Promise.all(archives.map(async (entry) => ({
103
103
  name: entry.name,
104
- mtimeMs: (await fs.stat(path.join(cwd, entry.name))).mtimeMs
104
+ mtimeMs: (await fsPromises.stat(path.join(cwd, entry.name))).mtimeMs
105
105
  })));
106
106
  sortedByMtime.sort((a, b) => b.mtimeMs - a.mtimeMs);
107
107
  return sortedByMtime[0]?.name;
@@ -166,13 +166,13 @@ async function resolveExistingInstallPath(inputPath) {
166
166
  return {
167
167
  ok: true,
168
168
  resolvedPath,
169
- stat: await fs.stat(resolvedPath)
169
+ stat: await fsPromises.stat(resolvedPath)
170
170
  };
171
171
  }
172
172
  async function withExtractedArchiveRoot(params) {
173
173
  return await withTempDir(params.tempDirPrefix, async (tmpDir) => {
174
174
  const extractDir = path.join(tmpDir, "extract");
175
- await fs.mkdir(extractDir, { recursive: true });
175
+ await fsPromises.mkdir(extractDir, { recursive: true });
176
176
  params.logger?.info?.(`Extracting ${params.archivePath}…`);
177
177
  try {
178
178
  await extractArchive({
@@ -225,7 +225,7 @@ async function sanitizeManifestForNpmInstall(targetDir) {
225
225
  const manifestPath = path.join(targetDir, "package.json");
226
226
  let manifestRaw = "";
227
227
  try {
228
- manifestRaw = await fs.readFile(manifestPath, "utf-8");
228
+ manifestRaw = await fsPromises.readFile(manifestPath, "utf-8");
229
229
  } catch {
230
230
  return;
231
231
  }
@@ -245,7 +245,7 @@ async function sanitizeManifestForNpmInstall(targetDir) {
245
245
  if (filteredEntries.length === Object.keys(devDependencies).length) return;
246
246
  if (filteredEntries.length === 0) delete manifest.devDependencies;
247
247
  else manifest.devDependencies = Object.fromEntries(filteredEntries);
248
- await fs.writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf-8");
248
+ await fsPromises.writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf-8");
249
249
  }
250
250
  async function installPackageDir(params) {
251
251
  params.logger?.info?.(`Installing to ${params.targetDir}…`);
@@ -253,19 +253,19 @@ async function installPackageDir(params) {
253
253
  if (params.mode === "update" && await fileExists(params.targetDir)) {
254
254
  const backupRoot = path.join(path.dirname(params.targetDir), ".idlehands-install-backups");
255
255
  backupDir = path.join(backupRoot, `${path.basename(params.targetDir)}-${Date.now()}`);
256
- await fs.mkdir(backupRoot, { recursive: true });
257
- await fs.rename(params.targetDir, backupDir);
256
+ await fsPromises.mkdir(backupRoot, { recursive: true });
257
+ await fsPromises.rename(params.targetDir, backupDir);
258
258
  }
259
259
  const rollback = async () => {
260
260
  if (!backupDir) return;
261
- await fs.rm(params.targetDir, {
261
+ await fsPromises.rm(params.targetDir, {
262
262
  recursive: true,
263
263
  force: true
264
264
  }).catch(() => void 0);
265
- await fs.rename(backupDir, params.targetDir).catch(() => void 0);
265
+ await fsPromises.rename(backupDir, params.targetDir).catch(() => void 0);
266
266
  };
267
267
  try {
268
- await fs.cp(params.sourceDir, params.targetDir, { recursive: true });
268
+ await fsPromises.cp(params.sourceDir, params.targetDir, { recursive: true });
269
269
  } catch (err) {
270
270
  await rollback();
271
271
  return {
@@ -303,7 +303,7 @@ async function installPackageDir(params) {
303
303
  };
304
304
  }
305
305
  }
306
- if (backupDir) await fs.rm(backupDir, {
306
+ if (backupDir) await fsPromises.rm(backupDir, {
307
307
  recursive: true,
308
308
  force: true
309
309
  }).catch(() => void 0);