autohand-cli 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/README.md +118 -76
  2. package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
  3. package/dist/AgentRegistry-JBXZUPML.js +18 -0
  4. package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
  5. package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
  6. package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
  7. package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
  8. package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
  9. package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
  10. package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
  11. package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
  12. package/dist/MemoryManager-3A2VRPF2.js +9 -0
  13. package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
  14. package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
  15. package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
  16. package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
  17. package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
  18. package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
  19. package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
  20. package/dist/SessionManager-LGPQIA57.cjs +10 -0
  21. package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
  22. package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
  23. package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
  24. package/dist/SubAgent-2WG4QQB5.cjs +13 -0
  25. package/dist/SubAgent-ICGN23TQ.js +13 -0
  26. package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
  27. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  28. package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
  29. package/dist/about-U2BH7HDR.cjs +15 -0
  30. package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
  31. package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
  32. package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
  33. package/dist/actionExecutor-6NCCORRB.js +28 -0
  34. package/dist/add-dir-KFUHSIR2.cjs +11 -0
  35. package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
  36. package/dist/agent-DUIYLIVN.js +132 -0
  37. package/dist/agent-YYEHGDAK.cjs +132 -0
  38. package/dist/agents-GBGG4CW7.cjs +19 -0
  39. package/dist/agents-ZH34C72F.js +19 -0
  40. package/dist/agents-new-ERXLS7SB.cjs +17 -0
  41. package/dist/agents-new-EVTGPTA4.js +17 -0
  42. package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
  43. package/dist/autoSkill-YL6PN6AV.cjs +20 -0
  44. package/dist/automode-4BJ7FNPL.cjs +10 -0
  45. package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
  46. package/dist/chrome-45ZXHL5N.cjs +22 -0
  47. package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
  48. package/dist/chrome-IFVZRHAT.cjs +50 -0
  49. package/dist/chrome-MYE6DNA2.js +22 -0
  50. package/dist/chunk-24CEJYEG.cjs +579 -0
  51. package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
  52. package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
  53. package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
  54. package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
  55. package/dist/chunk-2WUNHTXL.js +303 -0
  56. package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
  57. package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
  58. package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
  59. package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
  60. package/dist/chunk-3DF3GZQ7.js +277 -0
  61. package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
  62. package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
  63. package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
  64. package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
  65. package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
  66. package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
  67. package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
  68. package/dist/chunk-5CMBAJ6K.js +377 -0
  69. package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
  70. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  71. package/dist/chunk-6AC2TT26.js +156 -0
  72. package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
  73. package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
  74. package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
  75. package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
  76. package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
  77. package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
  78. package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
  79. package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
  80. package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
  81. package/dist/chunk-7TO3PDMV.cjs +324 -0
  82. package/dist/chunk-7UU22RSH.cjs +277 -0
  83. package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
  84. package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
  85. package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
  86. package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
  87. package/dist/chunk-ABR756QN.js +529 -0
  88. package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
  89. package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
  90. package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
  91. package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
  92. package/dist/chunk-B55VCYSQ.cjs +30 -0
  93. package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
  94. package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
  95. package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
  96. package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
  97. package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
  98. package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
  99. package/dist/chunk-CMEZ42F2.cjs +303 -0
  100. package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
  101. package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
  102. package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
  103. package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
  104. package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
  105. package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
  106. package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
  107. package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
  108. package/dist/chunk-ECQD2QC3.cjs +33 -0
  109. package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
  110. package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
  111. package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
  112. package/dist/chunk-EK34UZPB.cjs +40 -0
  113. package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
  114. package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
  115. package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
  116. package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
  117. package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
  118. package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
  119. package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
  120. package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
  121. package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
  122. package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
  123. package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
  124. package/dist/chunk-H7HXRRHK.js +324 -0
  125. package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
  126. package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
  127. package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
  128. package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
  129. package/dist/chunk-HTU4W3GB.js +183 -0
  130. package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
  131. package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
  132. package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
  133. package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
  134. package/dist/chunk-INNXFLDR.cjs +388 -0
  135. package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
  136. package/dist/chunk-JJGDOBFL.js +40 -0
  137. package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
  138. package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
  139. package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
  140. package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
  141. package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
  142. package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
  143. package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
  144. package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
  145. package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
  146. package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
  147. package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
  148. package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
  149. package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
  150. package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
  151. package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
  152. package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
  153. package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
  154. package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
  155. package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
  156. package/dist/chunk-NVATU4V6.cjs +44 -0
  157. package/dist/chunk-O246MKIW.cjs +267 -0
  158. package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
  159. package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
  160. package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
  161. package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
  162. package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
  163. package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
  164. package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
  165. package/dist/chunk-PI27G2ED.cjs +377 -0
  166. package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
  167. package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
  168. package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
  169. package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
  170. package/dist/chunk-QDO4L2A7.cjs +156 -0
  171. package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
  172. package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
  173. package/dist/chunk-QVXMSQOG.js +430 -0
  174. package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
  175. package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
  176. package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
  177. package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
  178. package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
  179. package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
  180. package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
  181. package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
  182. package/dist/chunk-RS2E32YB.js +71 -0
  183. package/dist/chunk-RWKU2X7O.js +388 -0
  184. package/dist/chunk-RZLEGVMH.cjs +565 -0
  185. package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
  186. package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
  187. package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
  188. package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
  189. package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
  190. package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
  191. package/dist/chunk-T4DXP5OP.js +30 -0
  192. package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
  193. package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
  194. package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
  195. package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
  196. package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
  197. package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
  198. package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
  199. package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
  200. package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
  201. package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
  202. package/dist/chunk-UMJYX5KD.js +565 -0
  203. package/dist/chunk-USKYTHDL.cjs +235 -0
  204. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  205. package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
  206. package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
  207. package/dist/chunk-VLUIVJ3J.js +235 -0
  208. package/dist/chunk-VOBINVMV.cjs +430 -0
  209. package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
  210. package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
  211. package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
  212. package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
  213. package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
  214. package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
  215. package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
  216. package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
  217. package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
  218. package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
  219. package/dist/chunk-X53SHYCG.js +27 -0
  220. package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
  221. package/dist/chunk-Y47OJGLB.cjs +27 -0
  222. package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
  223. package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
  224. package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
  225. package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
  226. package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
  227. package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
  228. package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
  229. package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
  230. package/dist/chunk-ZFV4HJA6.js +579 -0
  231. package/dist/chunk-ZHMYTI5D.cjs +529 -0
  232. package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
  233. package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
  234. package/dist/chunk-ZUYYHKQA.js +44 -0
  235. package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
  236. package/dist/clear-AJGXD2BB.cjs +12 -0
  237. package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
  238. package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
  239. package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
  240. package/dist/completion-G7Z436TF.cjs +17 -0
  241. package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
  242. package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
  243. package/dist/config-W2BHT2QE.cjs +22 -0
  244. package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
  245. package/dist/constants-B4W5BT7F.cjs +23 -0
  246. package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
  247. package/dist/export-GFD32UY2.cjs +15 -0
  248. package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
  249. package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
  250. package/dist/feature-KP74CZ3F.cjs +14 -0
  251. package/dist/feature-OPNVMB2E.js +14 -0
  252. package/dist/features-LT55MURX.cjs +24 -0
  253. package/dist/features-ZDIU26WX.js +24 -0
  254. package/dist/feedback-7WTJFQ6S.js +18 -0
  255. package/dist/feedback-CEOJ3453.cjs +18 -0
  256. package/dist/go-2CY5SZNR.js +16 -0
  257. package/dist/go-O2CSQON4.cjs +16 -0
  258. package/dist/goal-DL2N2AWT.cjs +16 -0
  259. package/dist/goal-IJS7VZSG.js +16 -0
  260. package/dist/help-RNOGDEBA.cjs +12 -0
  261. package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
  262. package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
  263. package/dist/history-UUSGX2AL.cjs +14 -0
  264. package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
  265. package/dist/hooks-RWM5UY67.cjs +18 -0
  266. package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
  267. package/dist/i18n-MFAEU5RV.cjs +33 -0
  268. package/dist/ide-6PBTCCUQ.js +15 -0
  269. package/dist/ide-UE3G7NMQ.cjs +15 -0
  270. package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
  271. package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
  272. package/dist/import-NQDNBFUL.cjs +10 -0
  273. package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
  274. package/dist/index.cjs +512 -305
  275. package/dist/index.d.cts +40 -0
  276. package/dist/index.d.ts +40 -0
  277. package/dist/index.js +402 -195
  278. package/dist/init-DX3RDGDT.cjs +10 -0
  279. package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
  280. package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
  281. package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
  282. package/dist/language-I6KXAOXD.js +23 -0
  283. package/dist/language-XMIVOH5E.cjs +23 -0
  284. package/dist/learn-JPVVGTKU.js +23 -0
  285. package/dist/learn-NLSHI2MZ.cjs +23 -0
  286. package/dist/login-NABQYLYC.cjs +28 -0
  287. package/dist/login-XPOVFSWN.js +28 -0
  288. package/dist/logout-HNHCGB4Q.js +25 -0
  289. package/dist/logout-SKGDXJSW.cjs +25 -0
  290. package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
  291. package/dist/mcp-TADZCPJQ.cjs +22 -0
  292. package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
  293. package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
  294. package/dist/memory-GRXFTDIN.cjs +10 -0
  295. package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
  296. package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
  297. package/dist/model-OSD74T7Z.cjs +10 -0
  298. package/dist/new-4NWBOATU.cjs +12 -0
  299. package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
  300. package/dist/onboarding-2U5WE2OA.js +39 -0
  301. package/dist/onboarding-5DZFCO5Q.cjs +39 -0
  302. package/dist/permissions-KY5I6YQ3.cjs +10 -0
  303. package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
  304. package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
  305. package/dist/plan-PYKP652W.cjs +13 -0
  306. package/dist/quit-GSKJL42O.js +14 -0
  307. package/dist/quit-TQSRTBUT.cjs +14 -0
  308. package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
  309. package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
  310. package/dist/resume-4VWJXARX.cjs +17 -0
  311. package/dist/resume-TLHWWWFN.js +17 -0
  312. package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
  313. package/dist/review-XLJEUH5K.cjs +9 -0
  314. package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
  315. package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
  316. package/dist/search-DSX2CY4A.cjs +22 -0
  317. package/dist/search-I3QUDUQL.js +22 -0
  318. package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
  319. package/dist/sessionBranching-FKV4CR36.js +19 -0
  320. package/dist/sessions-3JUOT3ED.cjs +10 -0
  321. package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
  322. package/dist/settings-FT2LZZUV.js +45 -0
  323. package/dist/settings-RL4KNWHB.cjs +45 -0
  324. package/dist/setup-HQEJVOYT.js +32 -0
  325. package/dist/setup-MN54LKOL.cjs +32 -0
  326. package/dist/share-BUAFZNBX.cjs +17 -0
  327. package/dist/share-CGB6MAVJ.js +17 -0
  328. package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
  329. package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
  330. package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
  331. package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
  332. package/dist/skills-OQM7IHAF.cjs +29 -0
  333. package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
  334. package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
  335. package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
  336. package/dist/skills-new-S33NGEU3.js +18 -0
  337. package/dist/skills-new-UVYH53MD.cjs +18 -0
  338. package/dist/slashCommands-MWOUDSQP.js +111 -0
  339. package/dist/slashCommands-XASURUTV.cjs +111 -0
  340. package/dist/squad-PIIYDFVH.cjs +15 -0
  341. package/dist/squad-VHYOVEJP.js +15 -0
  342. package/dist/status-GHFTXQBL.js +25 -0
  343. package/dist/status-WXMIJIU3.cjs +25 -0
  344. package/dist/statusline-2K7AC6ZQ.js +21 -0
  345. package/dist/statusline-GROI4HOC.cjs +21 -0
  346. package/dist/sync-254WF6JI.cjs +42 -0
  347. package/dist/sync-2DIZN4EH.cjs +24 -0
  348. package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
  349. package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
  350. package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
  351. package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
  352. package/dist/templates-ARG2VRWW.cjs +11 -0
  353. package/dist/templates-UGVZV3KJ.js +11 -0
  354. package/dist/theme-MVQDSU47.js +23 -0
  355. package/dist/theme-QAKEYWJG.cjs +23 -0
  356. package/dist/ui/questionModal.cjs +6 -6
  357. package/dist/ui/questionModal.js +5 -5
  358. package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
  359. package/dist/undo-ME6WKUXZ.cjs +10 -0
  360. package/dist/usage-QTKO2YMD.js +25 -0
  361. package/dist/usage-TYNJKVER.cjs +25 -0
  362. package/package.json +10 -4
  363. package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
  364. package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
  365. package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
  366. package/dist/LearnAdvisor-46FG2XIP.js +0 -9
  367. package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
  368. package/dist/MemoryManager-34L4YOKA.cjs +0 -8
  369. package/dist/MemoryManager-WJMLPWGU.js +0 -8
  370. package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
  371. package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
  372. package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
  373. package/dist/SessionManager-WAPTFMDO.cjs +0 -10
  374. package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
  375. package/dist/SubAgent-FDIH3DXB.js +0 -11
  376. package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
  377. package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
  378. package/dist/about-FCAX37YC.cjs +0 -14
  379. package/dist/actionExecutor-33I47NZS.js +0 -24
  380. package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
  381. package/dist/add-dir-7SS6KSH5.cjs +0 -11
  382. package/dist/agent-DMRUFU4M.cjs +0 -116
  383. package/dist/agent-WCJEYQJT.js +0 -116
  384. package/dist/agents-CHROO3VU.cjs +0 -17
  385. package/dist/agents-UVDUL65K.js +0 -17
  386. package/dist/agents-new-AUBWSOXP.js +0 -17
  387. package/dist/agents-new-Y562WC47.cjs +0 -17
  388. package/dist/autoSkill-YOLLFTP2.cjs +0 -20
  389. package/dist/automode-DBLKTTKD.cjs +0 -10
  390. package/dist/chrome-ATC4OO5I.cjs +0 -20
  391. package/dist/chrome-O62WXV7F.js +0 -20
  392. package/dist/chrome-XHJLCO4M.cjs +0 -50
  393. package/dist/chunk-6XVVIY54.cjs +0 -256
  394. package/dist/chunk-AU6JAGZJ.cjs +0 -231
  395. package/dist/chunk-N6O3XUZ2.cjs +0 -23
  396. package/dist/chunk-VDWJMWDF.js +0 -256
  397. package/dist/clear-33TWQ2ES.cjs +0 -12
  398. package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
  399. package/dist/completion-IIZMHXYP.cjs +0 -17
  400. package/dist/config-KL6WU7R2.cjs +0 -20
  401. package/dist/constants-RLMJ5D5P.cjs +0 -21
  402. package/dist/export-WLGNWEMJ.cjs +0 -15
  403. package/dist/feedback-G635NCLJ.js +0 -18
  404. package/dist/feedback-LLMK3TZH.cjs +0 -18
  405. package/dist/help-BAXLP2M2.cjs +0 -12
  406. package/dist/history-6HOJSEMT.cjs +0 -14
  407. package/dist/hooks-XVFU67T2.cjs +0 -18
  408. package/dist/i18n-MUJMKTFM.cjs +0 -33
  409. package/dist/ide-CCQ33PGC.cjs +0 -15
  410. package/dist/ide-VLVFBZ5F.js +0 -15
  411. package/dist/import-J46F54JY.cjs +0 -10
  412. package/dist/init-EE5Y7RBL.cjs +0 -10
  413. package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
  414. package/dist/language-CVLPB7OV.js +0 -21
  415. package/dist/language-ZTWFHUSV.cjs +0 -21
  416. package/dist/learn-PON7I5QS.js +0 -23
  417. package/dist/learn-XLRSVNA3.cjs +0 -23
  418. package/dist/login-223QTGBG.cjs +0 -26
  419. package/dist/login-6IKTBUBY.js +0 -26
  420. package/dist/logout-RN2AG6SI.js +0 -23
  421. package/dist/logout-U3M4FFX7.cjs +0 -23
  422. package/dist/mcp-NUQ76QQB.cjs +0 -20
  423. package/dist/memory-CYMDQ2YC.cjs +0 -10
  424. package/dist/model-IDRCKDML.cjs +0 -10
  425. package/dist/new-7LEWOUF2.cjs +0 -12
  426. package/dist/onboarding-FXX7YHSJ.cjs +0 -35
  427. package/dist/onboarding-JYNMK6NI.js +0 -35
  428. package/dist/permissions-YBNSANIA.cjs +0 -10
  429. package/dist/plan-XEJMOT55.cjs +0 -13
  430. package/dist/quit-B43SJ6E4.cjs +0 -10
  431. package/dist/quit-GWTNHQSP.js +0 -10
  432. package/dist/resume-DYVOQN5L.cjs +0 -16
  433. package/dist/resume-M25UQKOX.js +0 -16
  434. package/dist/review-UWHWQHCB.cjs +0 -9
  435. package/dist/search-CPX4PWHP.js +0 -20
  436. package/dist/search-VUF3M4N3.cjs +0 -20
  437. package/dist/sessions-JODKER5D.cjs +0 -10
  438. package/dist/settings-55BNW6BF.js +0 -33
  439. package/dist/settings-BKTS7OMC.cjs +0 -33
  440. package/dist/setup-IRC5HQG2.js +0 -29
  441. package/dist/setup-MMQ7TWOP.cjs +0 -29
  442. package/dist/share-6JRQECAH.cjs +0 -17
  443. package/dist/share-YM5MJKMO.js +0 -17
  444. package/dist/skills-LWSOKOSH.cjs +0 -29
  445. package/dist/skills-new-GPL46YV2.js +0 -18
  446. package/dist/skills-new-L5BEZN5V.cjs +0 -18
  447. package/dist/slashCommands-FBPCIWM5.cjs +0 -95
  448. package/dist/slashCommands-FCWY5DXW.js +0 -95
  449. package/dist/status-3B5SDZPL.js +0 -17
  450. package/dist/status-TTGRF6NC.cjs +0 -17
  451. package/dist/sync-77CXVVTK.cjs +0 -21
  452. package/dist/sync-EH4K5U3N.cjs +0 -40
  453. package/dist/theme-64BYGJ57.cjs +0 -21
  454. package/dist/theme-YJE6HEON.js +0 -21
  455. package/dist/undo-PRTEGL2J.cjs +0 -10
@@ -0,0 +1,388 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkNVATU4V6cjs = require('./chunk-NVATU4V6.cjs');
4
+
5
+
6
+ var _chunkLJD7KR3Lcjs = require('./chunk-LJD7KR3L.cjs');
7
+
8
+
9
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
10
+
11
+
12
+ var _chunk7TO3PDMVcjs = require('./chunk-7TO3PDMV.cjs');
13
+
14
+ // src/commands/usage.ts
15
+ var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
16
+ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
17
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
18
+
19
+ // src/core/context/types.ts
20
+ var CONTEXT_ENV_VARS = {
21
+ /** Enable/disable context compaction ('true' | 'false'). */
22
+ CONTEXT_COMPACT: "AUTOHAND_CONTEXT_COMPACT",
23
+ /** Override context window size (number). */
24
+ CONTEXT_WINDOW: "AUTOHAND_CONTEXT_WINDOW",
25
+ /** Tokens to reserve for model output (number). */
26
+ RESERVE_TOKENS: "AUTOHAND_RESERVE_TOKENS"
27
+ };
28
+
29
+ // src/core/context/tokenizer.ts
30
+ var MODEL_CONTEXT = {
31
+ "anthropic/claude-4-sonnet": 2e5,
32
+ "anthropic/claude-3-opus": 2e5,
33
+ "anthropic/claude-3-haiku": 2e5,
34
+ "anthropic/claude-opus-4": 2e5,
35
+ "anthropic/claude-opus-4-7": 1e6,
36
+ "openai/gpt-4o-mini": 128e3,
37
+ "openai/gpt-4o": 128e3,
38
+ "openai/gpt-4.1": 2e5,
39
+ "openai/o1": 2e5,
40
+ "openai/o1-mini": 128e3,
41
+ "tencent/hy3-preview:free": 262144,
42
+ "tencent/hy3-preview-20260421:free": 262144,
43
+ "deepseek/deepseek-r1": 64e3,
44
+ "deepseek/deepseek-r1-0528-qwen3-8b:free": 8e3,
45
+ "deepseek/deepseek-coder": 16e3
46
+ };
47
+ var SAFETY_MARGIN = 0.9;
48
+ var CONTEXT_WARNING_THRESHOLD = 0.8;
49
+ var CONTEXT_CRITICAL_THRESHOLD = 0.9;
50
+ function parseContextWindowOverride(value) {
51
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
52
+ return void 0;
53
+ }
54
+ return Math.floor(value);
55
+ }
56
+ function normalizeModelId(model) {
57
+ return model.trim().toLowerCase().replace(/^openai\//, "").replace(/^google\//, "").replace(/^deepseek\//, "").replace(/^zai\//, "").replace(/^sakana\//, "");
58
+ }
59
+ function inferContextWindow(model) {
60
+ const normalized = normalizeModelId(model);
61
+ if (normalized.startsWith("gpt-5.5")) return 105e4;
62
+ if (normalized.startsWith("gpt-5.4") && !normalized.includes("mini") && !normalized.includes("nano")) return 105e4;
63
+ if (normalized.startsWith("gpt-5.4-mini") || normalized.startsWith("gpt-5.4-nano") || normalized.startsWith("gpt-5.3-codex") || normalized === "gpt-5" || normalized.startsWith("gpt-5-mini") || normalized.startsWith("gpt-5-nano")) {
64
+ return 4e5;
65
+ }
66
+ if (normalized.startsWith("gpt-5.3-chat")) return 128e3;
67
+ if (normalized.startsWith("gemini-3.1-flash-image")) return 128e3;
68
+ if (normalized.startsWith("gemini-3-pro-image")) return 65e3;
69
+ if (normalized.startsWith("gemini-3.1-pro") || normalized.startsWith("gemini-3.1-flash-lite") || normalized.startsWith("gemini-3-flash")) {
70
+ return 1e6;
71
+ }
72
+ if (normalized.startsWith("deepseek-v4")) return 1e6;
73
+ if (normalized.startsWith("glm-5.2")) return 1e6;
74
+ if (normalized.startsWith("glm-5.1")) return 2e5;
75
+ if (normalized === "fugu" || normalized === "fugu-ultra") return 1e6;
76
+ return void 0;
77
+ }
78
+ function getContextWindow(model, configuredContextWindow) {
79
+ const envOverride = process.env[CONTEXT_ENV_VARS.CONTEXT_WINDOW];
80
+ if (envOverride) {
81
+ const parsed = parseInt(envOverride, 10);
82
+ if (!isNaN(parsed) && parsed > 0) return parsed;
83
+ }
84
+ const configured = parseContextWindowOverride(configuredContextWindow);
85
+ if (configured) return configured;
86
+ const normalized = model.toLowerCase();
87
+ if (MODEL_CONTEXT[normalized]) {
88
+ return MODEL_CONTEXT[normalized];
89
+ }
90
+ const inferred = inferContextWindow(model);
91
+ if (inferred) return inferred;
92
+ const fuzzy = Object.entries(MODEL_CONTEXT).find(
93
+ ([name]) => normalized.includes(name) || name.includes(_nullishCoalesce(normalized.split("/").pop(), () => ( "")))
94
+ );
95
+ return fuzzy ? fuzzy[1] : 128e3;
96
+ }
97
+ function getModelFamily(model) {
98
+ const normalized = model.toLowerCase();
99
+ if (normalized.includes("claude")) return "claude";
100
+ if (normalized.includes("gpt-4") || normalized.includes("gpt-5") || normalized.includes("o1") || normalized.includes("o3")) return "openai";
101
+ if (normalized.includes("gemini")) return "gemini";
102
+ if (normalized.includes("deepseek")) return "deepseek";
103
+ return "default";
104
+ }
105
+ function estimateTokens(text, modelFamily) {
106
+ if (!text) return 0;
107
+ const codeLikeChars = _nullishCoalesce(_optionalChain([text, 'access', _ => _.match, 'call', _2 => _2(/[{}[\]":\\]/g), 'optionalAccess', _3 => _3.length]), () => ( 0));
108
+ const codeLikeRatio = text.length > 200 && codeLikeChars >= 4 ? 0.65 : 1;
109
+ const baseRatio = {
110
+ openai: 4,
111
+ claude: 3.5,
112
+ gemini: 4,
113
+ deepseek: 3,
114
+ default: 3.5
115
+ };
116
+ const ratio = (_nullishCoalesce(baseRatio[_nullishCoalesce(modelFamily, () => ( "default"))], () => ( 3.5))) * codeLikeRatio;
117
+ return Math.ceil(text.length / ratio);
118
+ }
119
+ function estimateMessageTokens(message, modelFamily) {
120
+ const structureOverhead = 10;
121
+ let tokens = structureOverhead;
122
+ tokens += estimateTokens(_nullishCoalesce(message.content, () => ( "")), modelFamily);
123
+ if (message.tool_calls) {
124
+ for (const call of message.tool_calls) {
125
+ tokens += 5;
126
+ tokens += estimateTokens(call.function.name, modelFamily);
127
+ tokens += estimateTokens(call.function.arguments, modelFamily);
128
+ }
129
+ }
130
+ return tokens;
131
+ }
132
+ function estimateMessagesTokens(messages, modelFamily) {
133
+ return messages.reduce(
134
+ (acc, message) => acc + estimateMessageTokens(message, modelFamily),
135
+ 0
136
+ );
137
+ }
138
+ function estimateToolsTokens(tools, modelFamily) {
139
+ if (!tools || tools.length === 0) return 0;
140
+ let tokens = 0;
141
+ for (const tool of tools) {
142
+ tokens += estimateTokens(tool.name, modelFamily);
143
+ tokens += estimateTokens(tool.description, modelFamily);
144
+ if (tool.parameters) {
145
+ const paramJson = JSON.stringify(tool.parameters);
146
+ tokens += estimateTokens(paramJson, modelFamily);
147
+ }
148
+ tokens += 35;
149
+ }
150
+ return tokens;
151
+ }
152
+ function calculateContextUsage(messages, tools, model, outputBudget = 16e3, configuredContextWindow) {
153
+ const envReserve = process.env[CONTEXT_ENV_VARS.RESERVE_TOKENS];
154
+ if (envReserve) {
155
+ const parsed = parseInt(envReserve, 10);
156
+ if (!isNaN(parsed) && parsed > 0) outputBudget = parsed;
157
+ }
158
+ const modelFamily = getModelFamily(model);
159
+ const messagesTokens = estimateMessagesTokens(messages, modelFamily);
160
+ const toolsTokens = estimateToolsTokens(tools, modelFamily);
161
+ const totalTokens = messagesTokens + toolsTokens;
162
+ const contextWindow = getContextWindow(model, configuredContextWindow);
163
+ const cappedOutputBudget = Math.min(outputBudget, Math.floor(contextWindow * 0.25));
164
+ const effectiveWindow = contextWindow - cappedOutputBudget;
165
+ const safeWindow = Math.floor(effectiveWindow * SAFETY_MARGIN);
166
+ const usagePercent = totalTokens / effectiveWindow;
167
+ return {
168
+ totalTokens,
169
+ messagesTokens,
170
+ toolsTokens,
171
+ contextWindow,
172
+ safeWindow,
173
+ usagePercent,
174
+ isWarning: usagePercent >= CONTEXT_WARNING_THRESHOLD,
175
+ isCritical: usagePercent >= CONTEXT_CRITICAL_THRESHOLD,
176
+ isExceeded: totalTokens >= safeWindow,
177
+ remainingTokens: Math.max(0, safeWindow - totalTokens)
178
+ };
179
+ }
180
+
181
+ // src/commands/usage.ts
182
+ var USAGE_V2_FLAG = "usage_v2";
183
+ var metadata = {
184
+ command: "/usage",
185
+ description: "Show model, provider, context, and usage limits",
186
+ implemented: true
187
+ };
188
+ function clampPercent(value) {
189
+ if (!Number.isFinite(value)) return 100;
190
+ return Math.max(0, Math.min(100, Math.round(value)));
191
+ }
192
+ function formatPath(value) {
193
+ const home = _os2.default.homedir();
194
+ if (value === home) {
195
+ return "~";
196
+ }
197
+ if (value.startsWith(`${home}${_path2.default.sep}`)) {
198
+ return `~${value.slice(home.length)}`;
199
+ }
200
+ return value;
201
+ }
202
+ function formatCompactNumber(value) {
203
+ if (!Number.isFinite(value) || value < 0) {
204
+ return "0";
205
+ }
206
+ if (value >= 1e6) {
207
+ const millions = value / 1e6;
208
+ return `${Number.isInteger(millions) ? millions.toFixed(0) : millions.toFixed(1)}M`;
209
+ }
210
+ if (value >= 1e3) {
211
+ const thousands = value / 1e3;
212
+ return `${Number.isInteger(thousands) ? thousands.toFixed(0) : thousands.toFixed(1)}K`;
213
+ }
214
+ return String(Math.round(value));
215
+ }
216
+ function formatPermissionMode(mode) {
217
+ switch (_nullishCoalesce(mode, () => ( "interactive"))) {
218
+ case "interactive":
219
+ return "Workspace (on-request)";
220
+ case "unrestricted":
221
+ return "Workspace (full access)";
222
+ case "restricted":
223
+ return "Read-only (restricted)";
224
+ case "external":
225
+ return "External approval";
226
+ }
227
+ }
228
+ function resolveProviderSettings(config, provider) {
229
+ if (!config || !provider) {
230
+ return void 0;
231
+ }
232
+ return _nullishCoalesce(_chunkCNQKIWIScjs.getProviderConfig.call(void 0, config, provider), () => ( void 0));
233
+ }
234
+ function resolveActiveProvider(ctx) {
235
+ return _nullishCoalesce(_nullishCoalesce(_optionalChain([ctx, 'access', _4 => _4.config, 'optionalAccess', _5 => _5.provider]), () => ( ctx.provider)), () => ( "openrouter"));
236
+ }
237
+ function resolveActiveModel(ctx, provider) {
238
+ const settings = resolveProviderSettings(ctx.config, provider);
239
+ return _nullishCoalesce(_optionalChain([settings, 'optionalAccess', _6 => _6.model]), () => ( ctx.model));
240
+ }
241
+ function resolveReasoningEffort(config, provider) {
242
+ return _optionalChain([resolveProviderSettings, 'call', _7 => _7(config, provider), 'optionalAccess', _8 => _8.reasoningEffort]);
243
+ }
244
+ function resolveContextWindow(ctx, provider, model) {
245
+ const settings = resolveProviderSettings(ctx.config, provider);
246
+ return _nullishCoalesce(_nullishCoalesce(_optionalChain([ctx, 'access', _9 => _9.getContextWindow, 'optionalCall', _10 => _10()]), () => ( _optionalChain([settings, 'optionalAccess', _11 => _11.contextWindow]))), () => ( getContextWindow(model, _optionalChain([settings, 'optionalAccess', _12 => _12.contextWindow]))));
247
+ }
248
+ function resolveContextTokensUsed(ctx, contextWindow, percentLeft) {
249
+ const reported = _optionalChain([ctx, 'access', _13 => _13.getTotalTokensUsed, 'optionalCall', _14 => _14()]);
250
+ if (typeof reported === "number" && Number.isFinite(reported) && reported > 0) {
251
+ return Math.round(reported);
252
+ }
253
+ return Math.round(contextWindow * ((100 - percentLeft) / 100));
254
+ }
255
+ function resolveAgentsFile(workspaceRoot) {
256
+ return _fs2.default.existsSync(_path2.default.join(workspaceRoot, "AGENTS.md")) ? "AGENTS.md" : "none";
257
+ }
258
+ function resolveAccount(config) {
259
+ const account = _chunkNVATU4V6cjs.formatAccount.call(void 0, config, "");
260
+ if (account) {
261
+ return account;
262
+ }
263
+ if (_optionalChain([config, 'optionalAccess', _15 => _15.openai, 'optionalAccess', _16 => _16.authMode]) === "chatgpt" && _optionalChain([config, 'access', _17 => _17.openai, 'access', _18 => _18.chatgptAuth, 'optionalAccess', _19 => _19.accountId])) {
264
+ return `ChatGPT account ${config.openai.chatgptAuth.accountId}`;
265
+ }
266
+ return "not signed in";
267
+ }
268
+ function isUsageV2Enabled(ctx) {
269
+ const localDefault = ctx.config ? _nullishCoalesce(_optionalChain([_chunk7TO3PDMVcjs.getFeatureState.call(void 0, ctx.config, USAGE_V2_FLAG), 'optionalAccess', _20 => _20.enabled]), () => ( false)) : false;
270
+ return _nullishCoalesce(_optionalChain([ctx, 'access', _21 => _21.isFeatureEnabled, 'optionalCall', _22 => _22(USAGE_V2_FLAG, localDefault)]), () => ( localDefault));
271
+ }
272
+ function gatherUsageDashboardData(ctx) {
273
+ const provider = resolveActiveProvider(ctx);
274
+ const model = resolveActiveModel(ctx, provider);
275
+ const contextPercentLeft = clampPercent(_nullishCoalesce(_optionalChain([ctx, 'access', _23 => _23.getContextPercentLeft, 'optionalCall', _24 => _24()]), () => ( 100)));
276
+ const contextWindow = resolveContextWindow(ctx, provider, model);
277
+ const currentSession = ctx.sessionManager.getCurrentSession();
278
+ const usageLimits = _nullishCoalesce(_optionalChain([ctx, 'access', _25 => _25.getUsageLimits, 'optionalCall', _26 => _26()]), () => ( []));
279
+ return {
280
+ model,
281
+ provider,
282
+ directory: formatPath(ctx.workspaceRoot),
283
+ permissions: formatPermissionMode(_optionalChain([ctx, 'access', _27 => _27.config, 'optionalAccess', _28 => _28.permissions, 'optionalAccess', _29 => _29.mode])),
284
+ agentsFile: resolveAgentsFile(ctx.workspaceRoot),
285
+ account: resolveAccount(ctx.config),
286
+ sessionId: _nullishCoalesce(_optionalChain([currentSession, 'optionalAccess', _30 => _30.metadata, 'access', _31 => _31.sessionId]), () => ( "none")),
287
+ contextPercentLeft,
288
+ contextWindow,
289
+ contextTokensUsed: resolveContextTokensUsed(ctx, contextWindow, contextPercentLeft),
290
+ tokenUsageStatus: _nullishCoalesce(_optionalChain([ctx, 'access', _32 => _32.getTokenUsageStatus, 'optionalCall', _33 => _33()]), () => ( "actual")),
291
+ reasoningEffort: resolveReasoningEffort(ctx.config, provider),
292
+ usageLimits
293
+ };
294
+ }
295
+ function formatProgressBar(percentLeft, width = 24) {
296
+ const emptySlots = Math.round(percentLeft / 100 * width);
297
+ const usedSlots = width - emptySlots;
298
+ return `[${"\u2588".repeat(emptySlots)}${"\u2591".repeat(usedSlots)}]`;
299
+ }
300
+ function formatInfoRow(label, value, labelWidth) {
301
+ const theme = _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, );
302
+ return `${theme.muted(label.padEnd(labelWidth))} ${value}`;
303
+ }
304
+ function formatModel(data) {
305
+ if (!data.reasoningEffort) {
306
+ return data.model;
307
+ }
308
+ return `${data.model} ${_chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(`(reasoning ${data.reasoningEffort})`)}`;
309
+ }
310
+ function formatContextSummary(data) {
311
+ const used = formatCompactNumber(data.contextTokensUsed);
312
+ const window = formatCompactNumber(data.contextWindow);
313
+ const suffix = data.tokenUsageStatus === "unavailable" ? " estimated" : "";
314
+ return `${data.contextPercentLeft}% left ${_chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(`(${used} used / ${window}${suffix})`)}`;
315
+ }
316
+ function formatUsageLimitRow(row, labelWidth) {
317
+ if (row.unavailableReason) {
318
+ return formatInfoRow(`${row.label}:`, row.unavailableReason, labelWidth);
319
+ }
320
+ const percent = clampPercent(_nullishCoalesce(row.percentLeft, () => ( 100)));
321
+ const reset = row.resetLabel ? _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(` (${row.resetLabel})`) : "";
322
+ const usage2 = typeof row.used === "number" && typeof row.limit === "number" ? _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(` (${formatCompactNumber(row.used)} used / ${formatCompactNumber(row.limit)})`) : "";
323
+ return formatInfoRow(`${row.label}:`, `${formatProgressBar(percent)} ${percent}% left${reset}${usage2}`, labelWidth);
324
+ }
325
+ function formatUsageDashboard(data) {
326
+ const labelWidth = 24;
327
+ const providerLimitRows = data.usageLimits.length > 0 ? data.usageLimits : [{ label: String(data.provider), unavailableReason: "not reported by provider" }];
328
+ const lines = [
329
+ formatInfoRow("Model:", formatModel(data), labelWidth),
330
+ formatInfoRow("Provider:", String(data.provider), labelWidth),
331
+ formatInfoRow("Directory:", data.directory, labelWidth),
332
+ formatInfoRow("Permissions:", data.permissions, labelWidth),
333
+ formatInfoRow("Agents.md:", data.agentsFile, labelWidth),
334
+ formatInfoRow("Account:", data.account, labelWidth),
335
+ formatInfoRow("Session:", data.sessionId, labelWidth),
336
+ "",
337
+ formatInfoRow("Context window:", formatContextSummary(data), labelWidth),
338
+ formatInfoRow("", formatProgressBar(data.contextPercentLeft), labelWidth),
339
+ "",
340
+ formatInfoRow("Provider limits:", "", labelWidth).trimEnd(),
341
+ ...providerLimitRows.map((row) => formatUsageLimitRow(row, labelWidth))
342
+ ];
343
+ return lines.join("\n");
344
+ }
345
+ async function usage(ctx) {
346
+ if (!isUsageV2Enabled(ctx)) {
347
+ return "The /usage dashboard is behind usage_v2. Run /experiments enable usage_v2, then /usage again. No restart required.";
348
+ }
349
+ await _optionalChain([ctx, 'access', _34 => _34.trackFeatureActivation, 'optionalCall', _35 => _35(USAGE_V2_FLAG, {
350
+ provider: ctx.provider,
351
+ model: ctx.model
352
+ })]);
353
+ return formatUsageDashboard(gatherUsageDashboardData(ctx));
354
+ }
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+ exports.CONTEXT_ENV_VARS = CONTEXT_ENV_VARS; exports.getContextWindow = getContextWindow; exports.estimateMessageTokens = estimateMessageTokens; exports.estimateMessagesTokens = estimateMessagesTokens; exports.calculateContextUsage = calculateContextUsage; exports.USAGE_V2_FLAG = USAGE_V2_FLAG; exports.metadata = metadata; exports.gatherUsageDashboardData = gatherUsageDashboardData; exports.formatUsageDashboard = formatUsageDashboard; exports.usage = usage;
368
+ /**
369
+ * @license
370
+ * Copyright 2025 Autohand AI LLC
371
+ * SPDX-License-Identifier: Apache-2.0
372
+ *
373
+ * Domain types for the context-compaction module.
374
+ */
375
+ /**
376
+ * @license
377
+ * Copyright 2025 Autohand AI LLC
378
+ * SPDX-License-Identifier: Apache-2.0
379
+ *
380
+ * Token estimation, context window lookup, and usage calculation.
381
+ * Moved from src/utils/context.ts — this is the canonical location.
382
+ * The old barrel re-exports for backward compatibility.
383
+ */
384
+ /**
385
+ * @license
386
+ * Copyright 2026 Autohand AI LLC
387
+ * SPDX-License-Identifier: Apache-2.0
388
+ */
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCH2J4PVEcjs = require('./chunk-CH2J4PVE.cjs');
5
+ var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
6
6
 
7
7
 
8
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
8
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
9
9
 
10
10
  // src/commands/export.ts
11
11
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -245,7 +245,7 @@ function getSuggestedFilename(metadata2, format) {
245
245
  // src/commands/export.ts
246
246
  var metadata = {
247
247
  command: "/export",
248
- description: _chunkCHI52KFRcjs.t.call(void 0, "commands.export.description"),
248
+ description: _chunkRJCZLFHEcjs.t.call(void 0, "commands.export.description"),
249
249
  implemented: true
250
250
  };
251
251
  async function execute(args, context) {
@@ -265,7 +265,7 @@ async function execute(args, context) {
265
265
  label: `${s.projectName} - ${new Date(s.createdAt).toLocaleString()} (${s.messageCount} messages)`,
266
266
  value: s.sessionId
267
267
  }));
268
- const sessionResult = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
268
+ const sessionResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
269
269
  title: "Select a session to export:",
270
270
  options: sessionOptions
271
271
  });
@@ -286,7 +286,7 @@ async function execute(args, context) {
286
286
  { label: "JSON (.json)", value: "json" },
287
287
  { label: "HTML (.html)", value: "html" }
288
288
  ];
289
- const formatResult = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
289
+ const formatResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
290
290
  title: "Export format:",
291
291
  options: formatOptions
292
292
  });
@@ -297,17 +297,17 @@ async function execute(args, context) {
297
297
  const format = formatResult.value;
298
298
  const options = {};
299
299
  if (format === "md" || format === "html") {
300
- options.includeToolOutputs = await _chunkCH2J4PVEcjs.showConfirm.call(void 0, {
300
+ options.includeToolOutputs = await _chunkDMM2BKSVcjs.showConfirm.call(void 0, {
301
301
  title: "Include tool outputs?",
302
302
  defaultValue: true
303
303
  });
304
- options.includeToc = await _chunkCH2J4PVEcjs.showConfirm.call(void 0, {
304
+ options.includeToc = await _chunkDMM2BKSVcjs.showConfirm.call(void 0, {
305
305
  title: "Include table of contents?",
306
306
  defaultValue: false
307
307
  });
308
308
  }
309
309
  const suggestedFilename = getSuggestedFilename(metadata2, format);
310
- const filename = await _chunkCH2J4PVEcjs.showInput.call(void 0, {
310
+ const filename = await _chunkDMM2BKSVcjs.showInput.call(void 0, {
311
311
  title: "Save as:",
312
312
  defaultValue: suggestedFilename
313
313
  });
@@ -331,11 +331,11 @@ async function execute(args, context) {
331
331
  try {
332
332
  await saveExport(content, filePath);
333
333
  console.log();
334
- console.log(_chalk2.default.green(_chunkCHI52KFRcjs.t.call(void 0, "commands.export.success", { path: filePath })));
334
+ console.log(_chalk2.default.green(_chunkRJCZLFHEcjs.t.call(void 0, "commands.export.success", { path: filePath })));
335
335
  console.log(_chalk2.default.gray(` ${messages.length} messages, ${(Buffer.byteLength(content, "utf8") / 1024).toFixed(1)} KB`));
336
336
  console.log();
337
337
  } catch (error) {
338
- console.log(_chalk2.default.red(_chunkCHI52KFRcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
338
+ console.log(_chalk2.default.red(_chunkRJCZLFHEcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
339
339
  }
340
340
  }
341
341
 
@@ -0,0 +1,40 @@
1
+ // src/providers/customProviders.ts
2
+ var CUSTOM_PROVIDER_PREFIX = "custom:";
3
+ function normalizeCustomProviderId(input) {
4
+ return input.trim().toLowerCase().replace(/^custom:/i, "").replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
5
+ }
6
+ function toCustomProviderName(id) {
7
+ return `${CUSTOM_PROVIDER_PREFIX}${normalizeCustomProviderId(id)}`;
8
+ }
9
+ function parseCustomProviderName(provider) {
10
+ if (typeof provider !== "string" || !provider.toLowerCase().startsWith(CUSTOM_PROVIDER_PREFIX)) {
11
+ return null;
12
+ }
13
+ const id = normalizeCustomProviderId(provider.slice(CUSTOM_PROVIDER_PREFIX.length));
14
+ return id.length > 0 ? id : null;
15
+ }
16
+ function isCustomProviderName(provider) {
17
+ return parseCustomProviderName(provider) !== null;
18
+ }
19
+ function getCustomProviderConfig(config, provider) {
20
+ const id = parseCustomProviderName(provider);
21
+ if (!id) return void 0;
22
+ const entry = config?.customProviders?.[id];
23
+ if (!entry || entry.disabled === true) return void 0;
24
+ return {
25
+ ...entry,
26
+ id
27
+ };
28
+ }
29
+
30
+ export {
31
+ normalizeCustomProviderId,
32
+ toCustomProviderName,
33
+ isCustomProviderName,
34
+ getCustomProviderConfig
35
+ };
36
+ /**
37
+ * @license
38
+ * Copyright 2025 Autohand AI LLC
39
+ * SPDX-License-Identifier: Apache-2.0
40
+ */
@@ -115,8 +115,7 @@ var SyncApiClient = class {
115
115
  "Content-Type": "application/json"
116
116
  },
117
117
  body: JSON.stringify({
118
- // Only include manifest on first batch
119
- ...batchIndex === 0 ? { manifest } : {},
118
+ manifest,
120
119
  files: batch
121
120
  })
122
121
  }
@@ -136,18 +135,22 @@ var SyncApiClient = class {
136
135
  /**
137
136
  * Upload a file to a pre-signed URL
138
137
  */
139
- async uploadFile(uploadUrl, content) {
138
+ async uploadFile(uploadUrl, content, token) {
140
139
  if (content.length > this.maxFileSize) {
141
140
  throw new Error(`File exceeds max size of ${this.maxFileSize} bytes`);
142
141
  }
142
+ const headers = {
143
+ "Content-Type": "application/octet-stream",
144
+ "Content-Length": content.length.toString()
145
+ };
146
+ if (token) {
147
+ headers.Authorization = `Bearer ${token}`;
148
+ }
143
149
  const response = await this.fetchWithRetry(
144
150
  uploadUrl,
145
151
  {
146
152
  method: "PUT",
147
- headers: {
148
- "Content-Type": "application/octet-stream",
149
- "Content-Length": content.length.toString()
150
- },
153
+ headers,
151
154
  body: new Uint8Array(content)
152
155
  }
153
156
  );
@@ -234,10 +237,11 @@ var SyncApiClient = class {
234
237
  /**
235
238
  * Download a file from a pre-signed URL
236
239
  */
237
- async downloadFile(downloadUrl) {
240
+ async downloadFile(downloadUrl, token) {
241
+ const headers = token ? { Authorization: `Bearer ${token}` } : void 0;
238
242
  const response = await this.fetchWithRetry(
239
243
  downloadUrl,
240
- { method: "GET" }
244
+ { method: "GET", ...headers ? { headers } : {} }
241
245
  );
242
246
  if (!response.ok) {
243
247
  throw new Error(`Download failed: ${response.status}`);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PROJECT_DIR_NAME
3
- } from "./chunk-TWQDAUZU.js";
3
+ } from "./chunk-PG2JIU5M.js";
4
4
 
5
5
  // src/permissions/localProjectPermissions.ts
6
6
  import fs from "fs-extra";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-CBFH2J3O.js";
3
+ } from "./chunk-SJQU2ZFR.js";
4
4
 
5
5
  // src/commands/automode.ts
6
6
  import chalk from "chalk";
@@ -9,6 +9,7 @@ import os from "os";
9
9
  import chalk from "chalk";
10
10
  import fs from "fs-extra";
11
11
  var GIT_COMMAND_TIMEOUT_MS = 5e3;
12
+ var GIT_INIT_TIMEOUT_MS = 15e3;
12
13
  var toolCheckResultsPromise;
13
14
  function getCurrentBunVersion() {
14
15
  return process.versions.bun;
@@ -200,7 +201,7 @@ function isEmptyDirectory(dir) {
200
201
  return false;
201
202
  }
202
203
  }
203
- function runGitCommand(args, cwd) {
204
+ function runGitCommand(args, cwd, timeoutMs = GIT_COMMAND_TIMEOUT_MS) {
204
205
  return new Promise((resolve) => {
205
206
  try {
206
207
  const proc = spawn("git", args, { cwd, stdio: ["pipe", "pipe", "pipe"] });
@@ -208,7 +209,7 @@ function runGitCommand(args, cwd) {
208
209
  const timeout = setTimeout(() => {
209
210
  proc.kill();
210
211
  resolve(void 0);
211
- }, GIT_COMMAND_TIMEOUT_MS);
212
+ }, timeoutMs);
212
213
  proc.stdout?.on("data", (chunk) => {
213
214
  stdout += chunk.toString();
214
215
  });
@@ -258,7 +259,7 @@ async function checkGitRepo(workspaceRoot) {
258
259
  };
259
260
  }
260
261
  if (isEmptyDirectory(workspaceRoot)) {
261
- const initResult = await runGitCommand(["init"], workspaceRoot);
262
+ const initResult = await runGitCommand(["init"], workspaceRoot, GIT_INIT_TIMEOUT_MS);
262
263
  if (initResult !== void 0 || fs.existsSync(`${workspaceRoot}/.git/HEAD`)) {
263
264
  if (os.platform() === "darwin") {
264
265
  try {