autohand-cli 0.8.2 → 0.9.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 (551) hide show
  1. package/README.md +173 -74
  2. package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
  3. package/dist/{AgentRegistry-7LDL5HJH.js → AgentRegistry-XPWSVO3Q.js} +3 -3
  4. package/dist/{AutomodeManager-MWLKGPZK.js → AutomodeManager-APLLPEYJ.js} +32 -18
  5. package/dist/{AutomodeManager-NYIZNODK.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
  7. package/dist/CommunitySkillsCache-ZEQWP6YM.js +8 -0
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-6JQ5JEDZ.js → GitHubRegistryFetcher-J2BWPXJF.js} +2 -2
  10. package/dist/HookManager-CWLTFKWO.js +7 -0
  11. package/dist/HookManager-TMAJQU4S.cjs +7 -0
  12. package/dist/{ImportWizard-35YBJ4AM.cjs → ImportWizard-MQXEED2U.cjs} +41 -17
  13. package/dist/{ImportWizard-XH7CINCH.js → ImportWizard-QBKQEXDW.js} +35 -11
  14. package/dist/LearnAdvisor-46FG2XIP.js +9 -0
  15. package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
  16. package/dist/McpClientManager-BNSKLHIN.cjs +8 -0
  17. package/dist/{McpClientManager-7RM6YT35.js → McpClientManager-SL35BR24.js} +2 -2
  18. package/dist/MemoryManager-34L4YOKA.cjs +8 -0
  19. package/dist/MemoryManager-WJMLPWGU.js +8 -0
  20. package/dist/NVIDIAProvider-2HR737UE.js +14 -0
  21. package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
  22. package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
  23. package/dist/{PermissionManager-ATUV34LQ.js → PermissionManager-KMYILJ4Z.js} +4 -4
  24. package/dist/{ProjectProfiler-ZDWR2ODG.cjs → ProjectProfiler-CDAE7ECW.cjs} +2 -1
  25. package/dist/{ProjectProfiler-UMJJSOCE.js → ProjectProfiler-NZTJDRHD.js} +2 -1
  26. package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
  27. package/dist/ProviderFactory-HFPRVQ25.js +11 -0
  28. package/dist/SessionManager-PNBTJJTQ.js +10 -0
  29. package/dist/SessionManager-WAPTFMDO.cjs +10 -0
  30. package/dist/SkillsRegistry-4RRD5GMX.js +9 -0
  31. package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
  32. package/dist/SubAgent-FDIH3DXB.js +11 -0
  33. package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
  34. package/dist/{SyncApiClient-LVIO4C2S.js → SyncApiClient-LRPFNCKJ.js} +2 -2
  35. package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
  36. package/dist/about-BW3PDZUU.js +14 -0
  37. package/dist/about-FCAX37YC.cjs +14 -0
  38. package/dist/acp-EOETGAHC.cjs +1517 -0
  39. package/dist/acp-VHEL7BOW.js +1517 -0
  40. package/dist/actionExecutor-33I47NZS.js +24 -0
  41. package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
  42. package/dist/add-dir-7SS6KSH5.cjs +11 -0
  43. package/dist/add-dir-VFX7QT4E.js +11 -0
  44. package/dist/agent-DMRUFU4M.cjs +116 -0
  45. package/dist/agent-WCJEYQJT.js +116 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-CHROO3VU.cjs +17 -0
  53. package/dist/agents-UVDUL65K.js +17 -0
  54. package/dist/agents-new-AUBWSOXP.js +17 -0
  55. package/dist/agents-new-Y562WC47.cjs +17 -0
  56. package/dist/{autoSkill-6TGBTEQD.js → autoSkill-EFMK6WU6.js} +3 -3
  57. package/dist/autoSkill-YOLLFTP2.cjs +20 -0
  58. package/dist/automode-BMYSRM34.js +10 -0
  59. package/dist/automode-DBLKTTKD.cjs +10 -0
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/{cc-7LEIJ3KF.js → cc-AYEP2CA3.js} +1 -1
  63. package/dist/{cc-Q5MM4AWC.cjs → cc-S2QLQFBR.cjs} +1 -1
  64. package/dist/chrome-ATC4OO5I.cjs +20 -0
  65. package/dist/chrome-NHJ44WUN.js +50 -0
  66. package/dist/chrome-O62WXV7F.js +20 -0
  67. package/dist/chrome-XHJLCO4M.cjs +50 -0
  68. package/dist/chromeSkill-53TH55PM.js +105 -0
  69. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  70. package/dist/{chunk-HOAHWIQ5.cjs → chunk-2CGE7ZV3.cjs} +26 -26
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/chunk-2HOLOHVK.js +2219 -0
  73. package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
  74. package/dist/{chunk-PGRH5Q77.cjs → chunk-2VHB43IX.cjs} +35 -6
  75. package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
  76. package/dist/{chunk-6HYLHBQG.cjs → chunk-3DDL2E55.cjs} +20 -16
  77. package/dist/chunk-3EDDDZS2.cjs +5 -0
  78. package/dist/{chunk-6OYHF6MF.js → chunk-3GUEUCZK.js} +28 -4
  79. package/dist/{chunk-N254NRHT.cjs → chunk-3HT76LNN.cjs} +9 -2
  80. package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
  81. package/dist/chunk-3LJJG5YY.cjs +387 -0
  82. package/dist/chunk-3OF56EMA.cjs +197 -0
  83. package/dist/chunk-3PXKRVCW.js +108 -0
  84. package/dist/{chunk-IKGWDOGU.cjs → chunk-3S563FNF.cjs} +160 -79
  85. package/dist/chunk-3UT7R3XV.js +663 -0
  86. package/dist/chunk-4256YRCO.cjs +80 -0
  87. package/dist/chunk-46C73ZKK.cjs +663 -0
  88. package/dist/chunk-46MTALKD.js +44 -0
  89. package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
  90. package/dist/chunk-4LMUDS2K.js +124 -0
  91. package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
  92. package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
  93. package/dist/chunk-5JFTY3VU.js +74 -0
  94. package/dist/chunk-5JTTM5SC.js +59 -0
  95. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  96. package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
  97. package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
  98. package/dist/{chunk-MSED7RH2.cjs → chunk-6GUODJKM.cjs} +112 -41
  99. package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
  100. package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/{chunk-3PCTTUNW.cjs → chunk-6XVVIY54.cjs} +55 -25
  103. package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
  104. package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
  105. package/dist/chunk-7JLT2VNW.cjs +18963 -0
  106. package/dist/chunk-7LWQCE4Y.cjs +987 -0
  107. package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
  108. package/dist/{chunk-HLQV64Y5.js → chunk-7RFJB75Y.js} +140 -59
  109. package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
  110. package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
  111. package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
  112. package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
  113. package/dist/chunk-ARBEHFCG.js +715 -0
  114. package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
  115. package/dist/chunk-AU6JAGZJ.cjs +231 -0
  116. package/dist/chunk-AUFNACED.js +18963 -0
  117. package/dist/{chunk-CDBPBM2K.cjs → chunk-AUYSIEVV.cjs} +3 -3
  118. package/dist/chunk-B4HSNOIH.cjs +354 -0
  119. package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
  120. package/dist/{chunk-34M3HWLR.js → chunk-BFQDQRDE.js} +2 -2
  121. package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
  122. package/dist/{chunk-LNMYK2F5.cjs → chunk-BQ22N3TX.cjs} +56 -41
  123. package/dist/chunk-BQU3HAE7.js +21 -0
  124. package/dist/chunk-BWF4VDYE.js +3897 -0
  125. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  126. package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
  127. package/dist/chunk-CCVMREXI.js +420 -0
  128. package/dist/chunk-CFAWTLSC.js +13 -0
  129. package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
  130. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
  131. package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
  132. package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
  133. package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
  134. package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
  135. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  136. package/dist/chunk-DEQVRSV5.cjs +866 -0
  137. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  138. package/dist/{chunk-WM5PAOTQ.cjs → chunk-DIZTWFVR.cjs} +1649 -484
  139. package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
  140. package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
  141. package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
  142. package/dist/{chunk-DN573ME7.cjs → chunk-DRWDEHE5.cjs} +4 -4
  143. package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
  144. package/dist/{chunk-J4Q7XR3G.js → chunk-E46DJH5S.js} +3 -3
  145. package/dist/{chunk-Q7XSCYND.cjs → chunk-E6GFD7VR.cjs} +49 -26
  146. package/dist/chunk-ES2HJQ4N.js +37 -0
  147. package/dist/chunk-EZJHLOWP.js +80 -0
  148. package/dist/chunk-FFBDRUO5.cjs +59 -0
  149. package/dist/{chunk-AYSFIUFW.js → chunk-FGT6KK6T.js} +38 -15
  150. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  151. package/dist/{chunk-DSPQEHDT.js → chunk-FQAVGSPW.js} +2 -2
  152. package/dist/chunk-FQVG6ZHF.js +197 -0
  153. package/dist/chunk-GBMDFWJX.cjs +152 -0
  154. package/dist/{chunk-DRE2RXBZ.js → chunk-GGLKUENP.js} +1605 -440
  155. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  156. package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
  157. package/dist/chunk-GWY26SUD.cjs +63 -0
  158. package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
  159. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  160. package/dist/chunk-HDK2EHVH.cjs +570 -0
  161. package/dist/chunk-HJIXWGQZ.js +139 -0
  162. package/dist/{chunk-6RF7UKUS.js → chunk-HKYZSUQ5.js} +48 -47
  163. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  164. package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
  165. package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
  166. package/dist/chunk-HSCUPEA4.cjs +3897 -0
  167. package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
  168. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  169. package/dist/{chunk-SCXX4LW5.js → chunk-I24CWKKK.js} +15 -8
  170. package/dist/chunk-IAGCRVJ3.js +355 -0
  171. package/dist/chunk-IEXKKKOF.cjs +92 -0
  172. package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
  173. package/dist/chunk-IKUMVBCW.cjs +33 -0
  174. package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
  175. package/dist/{chunk-O4IF4NJT.cjs → chunk-J5ADZN6V.cjs} +57 -56
  176. package/dist/chunk-J5HE6CUM.cjs +124 -0
  177. package/dist/{chunk-JS7IPR7P.js → chunk-JAQO6XDB.js} +31 -2
  178. package/dist/chunk-JIMSII7R.js +987 -0
  179. package/dist/chunk-JJ4KA7HK.cjs +2219 -0
  180. package/dist/chunk-JMN3GZU6.js +570 -0
  181. package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
  182. package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
  183. package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
  184. package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
  185. package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
  186. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  187. package/dist/chunk-LJD7KR3L.cjs +44 -0
  188. package/dist/chunk-LN7D3EJZ.js +387 -0
  189. package/dist/{chunk-643VRA5S.cjs → chunk-LQBONA55.cjs} +32 -8
  190. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  191. package/dist/chunk-M4KNC5BQ.js +78 -0
  192. package/dist/chunk-MO4KP6XS.cjs +229 -0
  193. package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
  194. package/dist/chunk-MPULXVC4.cjs +715 -0
  195. package/dist/{chunk-X5YJ34FZ.cjs → chunk-MQESBFBZ.cjs} +46 -23
  196. package/dist/chunk-MUNUUFU7.cjs +21 -0
  197. package/dist/{chunk-X3WS5LDG.js → chunk-MX75JYIY.js} +7 -5
  198. package/dist/chunk-MXVIDIC6.cjs +139 -0
  199. package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
  200. package/dist/{chunk-IVM5F2AE.js → chunk-NBGOIFKP.js} +265 -18
  201. package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
  202. package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
  203. package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
  204. package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
  205. package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
  206. package/dist/{chunk-MAKMSQMQ.cjs → chunk-OPNI6O7F.cjs} +8 -6
  207. package/dist/chunk-OR67YXQK.cjs +13 -0
  208. package/dist/{chunk-QOXPOR5D.js → chunk-OV3PVUYN.js} +115 -44
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
  212. package/dist/{chunk-LA7H35XM.cjs → chunk-PHJO5YAL.cjs} +9 -9
  213. package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
  214. package/dist/chunk-PUD76XQT.cjs +78 -0
  215. package/dist/chunk-Q2IL4DDI.cjs +355 -0
  216. package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
  217. package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
  218. package/dist/{chunk-IQ5RXU6O.js → chunk-QEGOB6QV.js} +1 -1
  219. package/dist/{chunk-JSBRDJBE.js → chunk-QGM4M3NI.js} +8 -1
  220. package/dist/chunk-QKP772OZ.js +4291 -0
  221. package/dist/chunk-QQ7PANOP.js +59 -0
  222. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  223. package/dist/chunk-RAKO7UN7.js +114 -0
  224. package/dist/chunk-RBHANOYY.js +33 -0
  225. package/dist/chunk-RBZ7AFX7.cjs +29 -0
  226. package/dist/{chunk-TXSDBGKX.cjs → chunk-REMGR23V.cjs} +46 -49
  227. package/dist/chunk-ROLA6EFO.cjs +85 -0
  228. package/dist/{chunk-TBEGGJNC.cjs → chunk-SOLBYSLY.cjs} +33 -16
  229. package/dist/{chunk-FKSDEWDH.js → chunk-SWCQM52V.js} +68 -25
  230. package/dist/{chunk-H5SWOLG6.js → chunk-TBOLJDUG.js} +39 -24
  231. package/dist/chunk-TH26BQJG.js +101 -0
  232. package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
  233. package/dist/chunk-TKKN34TV.js +229 -0
  234. package/dist/chunk-TQ33WBY5.cjs +74 -0
  235. package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
  236. package/dist/{chunk-OGV4WJ5L.cjs → chunk-TXPSTCG7.cjs} +74 -59
  237. package/dist/{chunk-CAMZTXV6.js → chunk-U4C3HW6P.js} +67 -52
  238. package/dist/{chunk-5P2NXKP3.js → chunk-UEIXJG45.js} +104 -76
  239. package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
  240. package/dist/chunk-UOQECODR.js +34 -0
  241. package/dist/chunk-UR27UDTB.js +354 -0
  242. package/dist/chunk-UWFG2R2I.cjs +420 -0
  243. package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
  244. package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
  245. package/dist/{chunk-JX3DFKBI.js → chunk-VDWJMWDF.js} +54 -24
  246. package/dist/{chunk-LENHP55G.cjs → chunk-VGEV44V2.cjs} +1076 -158
  247. package/dist/{chunk-33RSHBDH.js → chunk-VKBIE6I6.js} +38 -7
  248. package/dist/{chunk-CWMZKFTT.js → chunk-VRMZO6TB.js} +31 -8
  249. package/dist/chunk-VUGOOGHB.js +400 -0
  250. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  251. package/dist/chunk-WGLBC5AY.cjs +59 -0
  252. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  253. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  254. package/dist/chunk-WRTXCQ3V.cjs +4291 -0
  255. package/dist/chunk-WTB7AFL6.cjs +101 -0
  256. package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
  257. package/dist/chunk-XF2WIKHR.cjs +34 -0
  258. package/dist/{chunk-L3WAH3EM.cjs → chunk-XGMI6IYB.cjs} +46 -15
  259. package/dist/{chunk-FW774QXH.js → chunk-XIVFAD2L.js} +1048 -130
  260. package/dist/chunk-XV2HXRHX.js +85 -0
  261. package/dist/{chunk-72FKPBT5.js → chunk-Y3M2DABP.js} +16 -12
  262. package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
  263. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  264. package/dist/{chunk-RD5XAJR2.cjs → chunk-YWTIXHU6.cjs} +266 -19
  265. package/dist/chunk-YZWE7XSM.js +5 -0
  266. package/dist/{chunk-I5IW3T2Y.js → chunk-Z3XSSF7B.js} +32 -15
  267. package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
  268. package/dist/chunk-ZASDSY7P.cjs +114 -0
  269. package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
  270. package/dist/chunk-ZPD2AO3U.js +866 -0
  271. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  272. package/dist/chunk-ZR46OJNZ.js +152 -0
  273. package/dist/{chunk-G3V4SFET.cjs → chunk-ZZ63NW7A.cjs} +78 -35
  274. package/dist/clear-33TWQ2ES.cjs +12 -0
  275. package/dist/clear-OFLFQ3MR.js +12 -0
  276. package/dist/{communityInstaller-6KCFN7YZ.js → communityInstaller-COB2KTOW.js} +9 -6
  277. package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
  278. package/dist/completion-IIZMHXYP.cjs +17 -0
  279. package/dist/completion-PT4VM2H2.js +17 -0
  280. package/dist/config-KL6WU7R2.cjs +20 -0
  281. package/dist/{config-ZN66VXPS.js → config-R4O7GBTY.js} +7 -5
  282. package/dist/{constants-UFM5B232.js → constants-HVCHVQAF.js} +2 -2
  283. package/dist/constants-RLMJ5D5P.cjs +21 -0
  284. package/dist/{defaultHooks-RCXPHF4M.cjs → defaultHooks-2V2CQL63.cjs} +26 -11
  285. package/dist/{defaultHooks-RDRMER3Z.js → defaultHooks-TMHDU3FS.js} +26 -11
  286. package/dist/export-3PK3VFCE.js +15 -0
  287. package/dist/export-WLGNWEMJ.cjs +15 -0
  288. package/dist/{extractSessionMemories-V7K42ZHW.js → extractSessionMemories-A2JX5WJ2.js} +1 -1
  289. package/dist/{extractSessionMemories-SDW2MVBQ.cjs → extractSessionMemories-XL3MS37F.cjs} +1 -1
  290. package/dist/feedback-G635NCLJ.js +18 -0
  291. package/dist/feedback-LLMK3TZH.cjs +18 -0
  292. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  293. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  294. package/dist/filesystem-L6DQKGWK.js +11 -0
  295. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  296. package/dist/{formatters-6K7QVWQL.cjs → formatters-53XTCNGQ.cjs} +1 -1
  297. package/dist/{formatters-DQHO5I36.js → formatters-T6KV4BPP.js} +1 -1
  298. package/dist/help-BAXLP2M2.cjs +12 -0
  299. package/dist/{help-2BLR7L43.js → help-X3OAZ3CY.js} +3 -3
  300. package/dist/history-6HOJSEMT.cjs +14 -0
  301. package/dist/{history-5FZ3M2AK.js → history-YKFPHBJN.js} +3 -3
  302. package/dist/hooks-7TA4PIIB.js +18 -0
  303. package/dist/hooks-XVFU67T2.cjs +18 -0
  304. package/dist/{i18n-K7QOWIBH.js → i18n-2KBUU7XL.js} +2 -2
  305. package/dist/i18n-MUJMKTFM.cjs +33 -0
  306. package/dist/ide-CCQ33PGC.cjs +15 -0
  307. package/dist/ide-VLVFBZ5F.js +15 -0
  308. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  309. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  310. package/dist/{import-UXM3VK7B.js → import-4CHYLS4K.js} +4 -4
  311. package/dist/{import-QEME3E4T.cjs → import-I7T4ZHYL.cjs} +4 -4
  312. package/dist/import-J46F54JY.cjs +10 -0
  313. package/dist/import-JWPYKXCZ.js +10 -0
  314. package/dist/index.cjs +747 -22356
  315. package/dist/index.d.cts +93 -0
  316. package/dist/index.d.ts +93 -0
  317. package/dist/index.js +786 -22395
  318. package/dist/init-262MWZV4.js +10 -0
  319. package/dist/init-EE5Y7RBL.cjs +10 -0
  320. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  321. package/dist/inkMode-WBNFOSAT.js +7 -0
  322. package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
  323. package/dist/inputPrompt-YGBHDUEP.js +90 -0
  324. package/dist/language-CVLPB7OV.js +21 -0
  325. package/dist/language-ZTWFHUSV.cjs +21 -0
  326. package/dist/learn-PON7I5QS.js +23 -0
  327. package/dist/learn-XLRSVNA3.cjs +23 -0
  328. package/dist/{lint-D5UOJWIK.cjs → lint-4NDGCSCL.cjs} +1 -1
  329. package/dist/{lint-NJPZWVN2.js → lint-FZ7ZJUB3.js} +1 -1
  330. package/dist/login-223QTGBG.cjs +26 -0
  331. package/dist/login-6IKTBUBY.js +26 -0
  332. package/dist/logout-RN2AG6SI.js +23 -0
  333. package/dist/logout-U3M4FFX7.cjs +23 -0
  334. package/dist/mcp-5O6PUL4G.js +20 -0
  335. package/dist/mcp-NUQ76QQB.cjs +20 -0
  336. package/dist/{mcp-install-VESN42PI.js → mcp-install-6XWXLFVY.js} +18 -11
  337. package/dist/{mcp-install-G27HSS3Z.cjs → mcp-install-P6DHES7V.cjs} +22 -15
  338. package/dist/memory-CYMDQ2YC.cjs +10 -0
  339. package/dist/memory-Q54CESNM.js +10 -0
  340. package/dist/{message-ZJ5AYAMT.cjs → message-4OKO775J.cjs} +1 -1
  341. package/dist/{message-JUBOK2VU.js → message-X3LOAAM7.js} +1 -1
  342. package/dist/model-6AJ77PJG.js +10 -0
  343. package/dist/model-IDRCKDML.cjs +10 -0
  344. package/dist/new-7LEWOUF2.cjs +12 -0
  345. package/dist/new-ZXHEWC2S.js +12 -0
  346. package/dist/onboarding-FXX7YHSJ.cjs +35 -0
  347. package/dist/onboarding-JYNMK6NI.js +35 -0
  348. package/dist/{patch-MOD7QC3D.cjs → patch-DJ2GPFST.cjs} +1 -1
  349. package/dist/{patch-5F6VBIT3.js → patch-NIJWIRHS.js} +1 -1
  350. package/dist/permissions-YBNSANIA.cjs +10 -0
  351. package/dist/permissions-YHJMVA6L.js +10 -0
  352. package/dist/plan-XEJMOT55.cjs +13 -0
  353. package/dist/plan-YYUAXPTL.js +13 -0
  354. package/dist/pr-review-CW6J7P62.cjs +9 -0
  355. package/dist/pr-review-YZSBQVT2.js +9 -0
  356. package/dist/quit-B43SJ6E4.cjs +10 -0
  357. package/dist/quit-GWTNHQSP.js +10 -0
  358. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  359. package/dist/rawMode-GFNLXQPU.js +7 -0
  360. package/dist/{registry-KWZGYJC2.js → registry-34GL6BNJ.js} +30 -45
  361. package/dist/{registry-YN4FQPOO.cjs → registry-V24W7YK6.cjs} +66 -81
  362. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  363. package/dist/repeat-RALE6AUO.js +17 -0
  364. package/dist/resume-DYVOQN5L.cjs +16 -0
  365. package/dist/resume-M25UQKOX.js +16 -0
  366. package/dist/review-QHP2KP4Q.js +9 -0
  367. package/dist/review-UWHWQHCB.cjs +9 -0
  368. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  369. package/dist/ripgrep-VHJQQ55W.js +9 -0
  370. package/dist/rpc-NPS3PU4O.cjs +3730 -0
  371. package/dist/rpc-S3DGW6KV.js +3730 -0
  372. package/dist/search-CPX4PWHP.js +20 -0
  373. package/dist/search-VUF3M4N3.cjs +20 -0
  374. package/dist/{session-BSU2L5UI.cjs → session-LXKC4X5Q.cjs} +1 -1
  375. package/dist/{session-SZMRN5KG.js → session-NMMO4QOL.js} +1 -1
  376. package/dist/sessions-IYAXMK23.js +10 -0
  377. package/dist/sessions-JODKER5D.cjs +10 -0
  378. package/dist/settings-55BNW6BF.js +33 -0
  379. package/dist/settings-BKTS7OMC.cjs +33 -0
  380. package/dist/setup-IRC5HQG2.js +29 -0
  381. package/dist/setup-MMQ7TWOP.cjs +29 -0
  382. package/dist/share-6JRQECAH.cjs +17 -0
  383. package/dist/share-YM5MJKMO.js +17 -0
  384. package/dist/{skills-FYY6F2WV.cjs → skills-GGMZOVIE.cjs} +14 -11
  385. package/dist/skills-LWSOKOSH.cjs +29 -0
  386. package/dist/{skills-6OL4OSGA.js → skills-MVIZNHT4.js} +13 -10
  387. package/dist/skills-VWOMV3CR.js +29 -0
  388. package/dist/{skills-install-6CSWC24P.js → skills-install-QBA5RCV6.js} +22 -71
  389. package/dist/{skills-install-O3LZ2ETC.cjs → skills-install-VTAMCNNY.cjs} +35 -84
  390. package/dist/skills-new-GPL46YV2.js +18 -0
  391. package/dist/skills-new-L5BEZN5V.cjs +18 -0
  392. package/dist/slashCommands-FBPCIWM5.cjs +95 -0
  393. package/dist/slashCommands-FCWY5DXW.js +95 -0
  394. package/dist/status-3B5SDZPL.js +17 -0
  395. package/dist/status-TTGRF6NC.cjs +17 -0
  396. package/dist/summarizer-DGPHE5IQ.js +17 -0
  397. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  398. package/dist/sync-77CXVVTK.cjs +21 -0
  399. package/dist/{sync-KWX67OUN.js → sync-7BILIQHP.js} +4 -4
  400. package/dist/sync-7OKF6636.js +21 -0
  401. package/dist/sync-EH4K5U3N.cjs +40 -0
  402. package/dist/{tasks-5FPBIFLC.js → tasks-R5MBGAQ6.js} +1 -1
  403. package/dist/{tasks-TXGKGNH6.cjs → tasks-V4WB3MFR.cjs} +1 -1
  404. package/dist/{team-5YXP3JGR.js → team-JESCHGWB.js} +1 -1
  405. package/dist/{team-IIWEZKNR.cjs → team-VQQKWGZB.cjs} +1 -1
  406. package/dist/{teammate-L6EZQ3I2.js → teammate-GZQSCIMS.js} +29 -8
  407. package/dist/{teammate-2KMKJXAM.cjs → teammate-J6PHGL23.cjs} +30 -9
  408. package/dist/theme-64BYGJ57.cjs +21 -0
  409. package/dist/theme-YJE6HEON.js +21 -0
  410. package/dist/tools-3PPTTKFV.js +9 -0
  411. package/dist/tools-THIQA7WC.cjs +9 -0
  412. package/dist/ui/questionModal.cjs +9 -6
  413. package/dist/ui/questionModal.js +8 -5
  414. package/dist/undo-PRTEGL2J.cjs +10 -0
  415. package/dist/undo-SZEHLX7X.js +10 -0
  416. package/dist/{update-TVAJMMBC.js → update-53WMKYVS.js} +1 -1
  417. package/dist/{update-Z6BIIQDC.cjs → update-NV6QRYY7.cjs} +1 -1
  418. package/dist/web-3BA2WV37.cjs +37 -0
  419. package/dist/web-6FYGBX5K.js +37 -0
  420. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  421. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  422. package/dist/yolo-GF2YD7ZI.js +9 -0
  423. package/dist/yolo-OGDA7HNC.cjs +9 -0
  424. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  425. package/dist/yoloMode-4JOOSU26.js +17 -0
  426. package/package.json +46 -49
  427. package/dist/AgentRegistry-NQCLWABO.cjs +0 -10
  428. package/dist/CommunitySkillsCache-6QPRMTJO.js +0 -8
  429. package/dist/CommunitySkillsCache-GTQMOCCO.cjs +0 -8
  430. package/dist/GitHubRegistryFetcher-S7QFUEKV.cjs +0 -7
  431. package/dist/HookManager-Q2KYMCP4.cjs +0 -7
  432. package/dist/HookManager-TTP4Y6DC.js +0 -7
  433. package/dist/LearnAdvisor-A4Q5PPBI.js +0 -9
  434. package/dist/LearnAdvisor-GASQD7HT.cjs +0 -9
  435. package/dist/McpClientManager-RKD7C6OY.cjs +0 -8
  436. package/dist/MemoryManager-GUNLRP5S.js +0 -8
  437. package/dist/MemoryManager-TNSGKDKX.cjs +0 -8
  438. package/dist/PermissionManager-KMN53FJP.cjs +0 -11
  439. package/dist/ProviderFactory-MR5B23QJ.js +0 -9
  440. package/dist/ProviderFactory-VFGCJJX6.cjs +0 -9
  441. package/dist/SessionManager-FEUAU3ZJ.cjs +0 -10
  442. package/dist/SessionManager-IKWAK2PI.js +0 -10
  443. package/dist/SkillsRegistry-KPQFTRIT.cjs +0 -9
  444. package/dist/SkillsRegistry-XJSKPDF2.js +0 -9
  445. package/dist/SubAgent-NYH6GWQ3.js +0 -11
  446. package/dist/SubAgent-PZKBDUBA.cjs +0 -11
  447. package/dist/SyncApiClient-ZNYMT36M.cjs +0 -11
  448. package/dist/about-HHTF2YFL.js +0 -12
  449. package/dist/about-JGRVNNQC.cjs +0 -12
  450. package/dist/actionExecutor-U6IBN2TU.cjs +0 -19
  451. package/dist/actionExecutor-XT5FW3W6.js +0 -19
  452. package/dist/add-dir-247K3XRY.js +0 -10
  453. package/dist/add-dir-GS4DXKKH.cjs +0 -10
  454. package/dist/agents-R6ZEFTVR.cjs +0 -12
  455. package/dist/agents-WJPQWQF2.js +0 -12
  456. package/dist/agents-new-HKVEIBDJ.js +0 -14
  457. package/dist/agents-new-X6GTHIO6.cjs +0 -14
  458. package/dist/autoSkill-H4T6VVDA.cjs +0 -20
  459. package/dist/automode-BC6NVECO.js +0 -10
  460. package/dist/automode-WN2RSOGW.cjs +0 -10
  461. package/dist/chunk-33A755XB.cjs +0 -168
  462. package/dist/chunk-3OTU3RS3.cjs +0 -1607
  463. package/dist/chunk-4PKF7WPD.js +0 -100
  464. package/dist/chunk-ALYU6VTM.js +0 -105
  465. package/dist/chunk-AS6RTLN7.cjs +0 -203
  466. package/dist/chunk-BWN2CLLM.cjs +0 -298
  467. package/dist/chunk-HQ7YZKXE.js +0 -168
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-J6QET7EF.cjs +0 -454
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-P47WPOXN.js +0 -298
  472. package/dist/chunk-PRRCJFU3.cjs +0 -85
  473. package/dist/chunk-RO6WYEWH.js +0 -454
  474. package/dist/chunk-SYVYLZZF.cjs +0 -24
  475. package/dist/chunk-T73IDKDF.js +0 -111
  476. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  477. package/dist/chunk-ZQE72E6W.cjs +0 -100
  478. package/dist/chunk-ZVY2XD6T.js +0 -1607
  479. package/dist/clear-UO4MNWZW.cjs +0 -12
  480. package/dist/clear-ZJ5NYP6E.js +0 -12
  481. package/dist/communityInstaller-PVSOFDZD.cjs +0 -19
  482. package/dist/completion-MMF2PN2H.js +0 -14
  483. package/dist/completion-UI5WKHXI.cjs +0 -14
  484. package/dist/config-E7RINK4R.cjs +0 -18
  485. package/dist/constants-6CPCJ3DY.cjs +0 -21
  486. package/dist/export-N4XIVDSL.cjs +0 -12
  487. package/dist/export-W22L4D5C.js +0 -12
  488. package/dist/feedback-DR6ADSNE.cjs +0 -15
  489. package/dist/feedback-FEEAP4QW.js +0 -15
  490. package/dist/filesystem-3SGCW2BF.js +0 -10
  491. package/dist/filesystem-MCFXJQ6R.cjs +0 -10
  492. package/dist/help-AQHGTS7P.cjs +0 -12
  493. package/dist/history-NIUDRMKA.cjs +0 -14
  494. package/dist/hooks-2EY4IPKV.js +0 -13
  495. package/dist/hooks-LJVORRIG.cjs +0 -13
  496. package/dist/i18n-ARDG2SMC.cjs +0 -33
  497. package/dist/ide-GFW6IJHD.js +0 -12
  498. package/dist/ide-N2ZNSSB3.cjs +0 -12
  499. package/dist/import-DFVN3KNZ.js +0 -10
  500. package/dist/import-ZS6DPGU5.cjs +0 -10
  501. package/dist/init-PY75HA3S.cjs +0 -10
  502. package/dist/init-QNMWLAVY.js +0 -10
  503. package/dist/language-5UE4G2BT.cjs +0 -18
  504. package/dist/language-UXMHEZUJ.js +0 -18
  505. package/dist/learn-HJ3FLNZC.cjs +0 -20
  506. package/dist/learn-MVYS3RU5.js +0 -20
  507. package/dist/localProjectPermissions-N77HA3XK.js +0 -18
  508. package/dist/localProjectPermissions-UFSMNTBJ.cjs +0 -18
  509. package/dist/login-DSE7H63A.js +0 -20
  510. package/dist/login-V3MEWPKN.cjs +0 -20
  511. package/dist/logout-BMVCLKKW.js +0 -18
  512. package/dist/logout-XEG7FHOZ.cjs +0 -18
  513. package/dist/mcp-PYUR4PHO.js +0 -18
  514. package/dist/mcp-SG6JFLGC.cjs +0 -18
  515. package/dist/memory-4ZMMEZ2Z.js +0 -10
  516. package/dist/memory-QSGMVVGH.cjs +0 -10
  517. package/dist/model-NANLBZ4Z.cjs +0 -10
  518. package/dist/model-ZXNV4AF7.js +0 -10
  519. package/dist/new-5QJY5JP2.js +0 -12
  520. package/dist/new-PMMG55UX.cjs +0 -12
  521. package/dist/permissions-LECTCJ4H.cjs +0 -13
  522. package/dist/permissions-VP5VGIBL.js +0 -13
  523. package/dist/plan-G5CEKJI4.js +0 -11
  524. package/dist/plan-QKOHE3LH.cjs +0 -11
  525. package/dist/quit-BKOOPHU5.cjs +0 -10
  526. package/dist/quit-FVFNYACP.js +0 -10
  527. package/dist/resume-EXFQSQPH.js +0 -13
  528. package/dist/resume-PP2IQM5S.cjs +0 -13
  529. package/dist/search-C56FBN67.cjs +0 -17
  530. package/dist/search-XGZDYBF4.js +0 -17
  531. package/dist/sessions-54KI3F2Q.js +0 -10
  532. package/dist/sessions-DDTSPNVW.cjs +0 -10
  533. package/dist/settings-BDO37TTO.cjs +0 -30
  534. package/dist/settings-FHRDFPLK.js +0 -30
  535. package/dist/share-IERCTBGN.cjs +0 -14
  536. package/dist/share-TGROUE6R.js +0 -14
  537. package/dist/skills-OM4IGBAA.cjs +0 -26
  538. package/dist/skills-S3GRN323.js +0 -26
  539. package/dist/skills-new-ALD2PTHN.js +0 -15
  540. package/dist/skills-new-PWLKK7GW.cjs +0 -15
  541. package/dist/slashCommands-L4ZD33LJ.js +0 -75
  542. package/dist/slashCommands-YY2VUUDF.cjs +0 -75
  543. package/dist/status-3PC5XWSS.cjs +0 -11
  544. package/dist/status-KCLVOYPD.js +0 -11
  545. package/dist/sync-6SDWG5RK.js +0 -18
  546. package/dist/sync-7JMZVEQD.cjs +0 -40
  547. package/dist/sync-WHURZL3U.cjs +0 -18
  548. package/dist/theme-BE5A4FPN.cjs +0 -18
  549. package/dist/theme-YMFCQP7J.js +0 -18
  550. package/dist/undo-KZHUUZTD.cjs +0 -10
  551. package/dist/undo-NEIEHQVX.js +0 -10
@@ -0,0 +1,387 @@
1
+ import {
2
+ resolveRipgrepCommand
3
+ } from "./chunk-UOQECODR.js";
4
+
5
+ // src/startup/checks.ts
6
+ import { spawn } from "child_process";
7
+ import { constants as fsConstants } from "fs";
8
+ import os from "os";
9
+ import chalk from "chalk";
10
+ import fs from "fs-extra";
11
+ var GIT_COMMAND_TIMEOUT_MS = 5e3;
12
+ var toolCheckResultsPromise;
13
+ function getCurrentBunVersion() {
14
+ return process.versions.bun;
15
+ }
16
+ var REQUIRED_TOOLS = [
17
+ {
18
+ name: "git",
19
+ command: "git",
20
+ versionFlag: "--version",
21
+ required: true,
22
+ description: "Version control (required for file tracking, undo, and git operations)",
23
+ installHints: {
24
+ darwin: "brew install git",
25
+ linux: "sudo apt install git # or: sudo dnf install git",
26
+ win32: "winget install Git.Git # or download from https://git-scm.com"
27
+ }
28
+ },
29
+ {
30
+ name: "ripgrep",
31
+ command: "rg",
32
+ versionFlag: "--version",
33
+ required: false,
34
+ description: "Fast code search (recommended for better search performance)",
35
+ installHints: {
36
+ darwin: "brew install ripgrep",
37
+ linux: "sudo apt install ripgrep # or: cargo install ripgrep",
38
+ win32: "winget install BurntSushi.ripgrep # or: scoop install ripgrep"
39
+ }
40
+ }
41
+ ];
42
+ var OPTIONAL_TOOLS = [
43
+ {
44
+ name: "node",
45
+ command: "node",
46
+ versionFlag: "--version",
47
+ required: false,
48
+ description: "Node.js runtime (for npm/yarn package management)",
49
+ installHints: {
50
+ darwin: "brew install node # or: nvm install node",
51
+ linux: "sudo apt install nodejs # or: nvm install node",
52
+ win32: "winget install OpenJS.NodeJS # or download from https://nodejs.org"
53
+ },
54
+ minVersion: "18.0.0"
55
+ },
56
+ {
57
+ name: "bun",
58
+ command: "bun",
59
+ versionFlag: "--version",
60
+ required: false,
61
+ description: "Bun runtime (fast JavaScript/TypeScript runtime)",
62
+ installHints: {
63
+ darwin: "curl -fsSL https://bun.sh/install | bash",
64
+ linux: "curl -fsSL https://bun.sh/install | bash",
65
+ win32: 'powershell -c "irm bun.sh/install.ps1 | iex"'
66
+ }
67
+ }
68
+ ];
69
+ function checkTool(tool) {
70
+ const platform = os.platform();
71
+ const installHint = tool.installHints[platform] || tool.installHints.linux;
72
+ const command = tool.command === "rg" ? resolveRipgrepCommand() : tool.command;
73
+ const currentBunVersion = tool.command === "bun" ? getCurrentBunVersion() : void 0;
74
+ if (tool.command === "bun") {
75
+ return Promise.resolve({
76
+ name: tool.name,
77
+ installed: currentBunVersion !== void 0,
78
+ version: currentBunVersion,
79
+ required: tool.required,
80
+ description: tool.description,
81
+ installHint: currentBunVersion === void 0 ? installHint : void 0
82
+ });
83
+ }
84
+ return new Promise((resolve) => {
85
+ try {
86
+ const proc = spawn(command, [tool.versionFlag], {
87
+ stdio: ["pipe", "pipe", "pipe"]
88
+ });
89
+ let stdout = "";
90
+ let stderr = "";
91
+ const timeout = setTimeout(() => {
92
+ proc.kill();
93
+ resolve({
94
+ name: tool.name,
95
+ installed: false,
96
+ required: tool.required,
97
+ description: tool.description,
98
+ installHint
99
+ });
100
+ }, 5e3);
101
+ proc.stdout?.on("data", (chunk) => {
102
+ stdout += chunk.toString();
103
+ });
104
+ proc.stderr?.on("data", (chunk) => {
105
+ stderr += chunk.toString();
106
+ });
107
+ proc.on("close", (code) => {
108
+ clearTimeout(timeout);
109
+ if (code === 0) {
110
+ const output = (stdout || stderr).trim();
111
+ const versionMatch = output.match(/(\d+\.\d+(\.\d+)?)/);
112
+ const version = versionMatch ? versionMatch[1] : "unknown";
113
+ resolve({
114
+ name: tool.name,
115
+ installed: true,
116
+ version,
117
+ required: tool.required,
118
+ description: tool.description
119
+ });
120
+ } else {
121
+ resolve({
122
+ name: tool.name,
123
+ installed: false,
124
+ required: tool.required,
125
+ description: tool.description,
126
+ installHint
127
+ });
128
+ }
129
+ });
130
+ proc.on("error", () => {
131
+ clearTimeout(timeout);
132
+ resolve({
133
+ name: tool.name,
134
+ installed: false,
135
+ required: tool.required,
136
+ description: tool.description,
137
+ installHint
138
+ });
139
+ });
140
+ } catch {
141
+ resolve({
142
+ name: tool.name,
143
+ installed: false,
144
+ required: tool.required,
145
+ description: tool.description,
146
+ installHint
147
+ });
148
+ }
149
+ });
150
+ }
151
+ function checkStartupTools() {
152
+ toolCheckResultsPromise ??= Promise.all(
153
+ [...REQUIRED_TOOLS, ...OPTIONAL_TOOLS].map((tool) => checkTool(tool))
154
+ );
155
+ return toolCheckResultsPromise;
156
+ }
157
+ async function checkWorkspaceWritable(workspaceRoot) {
158
+ try {
159
+ const testFile = `${workspaceRoot}/.autohand-write-test-${Date.now()}`;
160
+ await fs.writeFile(testFile, "test");
161
+ await fs.remove(testFile);
162
+ return { writable: true };
163
+ } catch (error) {
164
+ return {
165
+ writable: false,
166
+ error: `Cannot write to workspace: ${error.message}`
167
+ };
168
+ }
169
+ }
170
+ async function validateWorkspacePath(workspaceRoot) {
171
+ try {
172
+ if (!await fs.pathExists(workspaceRoot)) {
173
+ return {
174
+ valid: false,
175
+ error: `Workspace path does not exist: ${workspaceRoot}`
176
+ };
177
+ }
178
+ const stats = await fs.stat(workspaceRoot);
179
+ if (!stats.isDirectory()) {
180
+ return {
181
+ valid: false,
182
+ error: `Workspace path is not a directory: ${workspaceRoot}`
183
+ };
184
+ }
185
+ await fs.access(workspaceRoot, fsConstants.R_OK | fsConstants.W_OK);
186
+ return { valid: true };
187
+ } catch (error) {
188
+ return {
189
+ valid: false,
190
+ error: `Cannot access workspace: ${error.message}`
191
+ };
192
+ }
193
+ }
194
+ function isEmptyDirectory(dir) {
195
+ try {
196
+ const entries = fs.readdirSync(dir);
197
+ const significantEntries = entries.filter((e) => !e.startsWith(".") || e === ".git");
198
+ return significantEntries.length === 0;
199
+ } catch {
200
+ return false;
201
+ }
202
+ }
203
+ function runGitCommand(args, cwd) {
204
+ return new Promise((resolve) => {
205
+ try {
206
+ const proc = spawn("git", args, { cwd, stdio: ["pipe", "pipe", "pipe"] });
207
+ let stdout = "";
208
+ const timeout = setTimeout(() => {
209
+ proc.kill();
210
+ resolve(void 0);
211
+ }, GIT_COMMAND_TIMEOUT_MS);
212
+ proc.stdout?.on("data", (chunk) => {
213
+ stdout += chunk.toString();
214
+ });
215
+ proc.on("close", (code) => {
216
+ clearTimeout(timeout);
217
+ resolve(code === 0 ? stdout.trim() : void 0);
218
+ });
219
+ proc.on("error", () => {
220
+ clearTimeout(timeout);
221
+ resolve(void 0);
222
+ });
223
+ } catch {
224
+ resolve(void 0);
225
+ }
226
+ });
227
+ }
228
+ async function getGitBranch(workspaceRoot) {
229
+ const headBranch = readGitHeadBranch(workspaceRoot);
230
+ if (headBranch) return headBranch;
231
+ const branch = await runGitCommand(["rev-parse", "--abbrev-ref", "HEAD"], workspaceRoot);
232
+ if (branch) return branch;
233
+ return runGitCommand(["symbolic-ref", "--short", "HEAD"], workspaceRoot);
234
+ }
235
+ function readGitHeadBranch(workspaceRoot) {
236
+ try {
237
+ const head = fs.readFileSync(`${workspaceRoot}/.git/HEAD`, "utf8").trim();
238
+ const refPrefix = "ref: refs/heads/";
239
+ if (head.startsWith(refPrefix)) {
240
+ const branch = head.slice(refPrefix.length).trim();
241
+ return branch || void 0;
242
+ }
243
+ } catch {
244
+ return void 0;
245
+ }
246
+ return void 0;
247
+ }
248
+ async function checkGitRepo(workspaceRoot) {
249
+ const gitDirExists = fs.existsSync(`${workspaceRoot}/.git`);
250
+ if (gitDirExists) {
251
+ if (!fs.existsSync(`${workspaceRoot}/.git/HEAD`)) {
252
+ return { isGitRepo: true };
253
+ }
254
+ const branch = await getGitBranch(workspaceRoot);
255
+ return {
256
+ isGitRepo: true,
257
+ branch
258
+ };
259
+ }
260
+ if (isEmptyDirectory(workspaceRoot)) {
261
+ const initResult = await runGitCommand(["init"], workspaceRoot);
262
+ if (initResult !== void 0 || fs.existsSync(`${workspaceRoot}/.git/HEAD`)) {
263
+ if (os.platform() === "darwin") {
264
+ try {
265
+ const gitignorePath = `${workspaceRoot}/.gitignore`;
266
+ if (!fs.existsSync(gitignorePath)) {
267
+ fs.writeFileSync(gitignorePath, ".DS_Store\n");
268
+ }
269
+ } catch {
270
+ }
271
+ }
272
+ const branch = await getGitBranch(workspaceRoot) || "main";
273
+ return {
274
+ isGitRepo: true,
275
+ branch,
276
+ initialized: true
277
+ };
278
+ }
279
+ }
280
+ return { isGitRepo: false };
281
+ }
282
+ function getPackageManagerHint() {
283
+ const platform = os.platform();
284
+ switch (platform) {
285
+ case "darwin":
286
+ return "Homebrew (brew)";
287
+ case "linux":
288
+ return "apt, dnf, or your distro package manager";
289
+ case "win32":
290
+ return "winget, scoop, or chocolatey";
291
+ default:
292
+ return "your system package manager";
293
+ }
294
+ }
295
+ async function runStartupChecks(workspaceRoot) {
296
+ const warnings = [];
297
+ const [toolResults, workspaceCheck, gitCheck] = await Promise.all([
298
+ checkStartupTools(),
299
+ checkWorkspaceWritable(workspaceRoot),
300
+ checkGitRepo(workspaceRoot)
301
+ ]);
302
+ for (const result of toolResults) {
303
+ if (!result.installed && result.required) {
304
+ warnings.push(`Required tool '${result.name}' is not installed`);
305
+ }
306
+ }
307
+ if (!workspaceCheck.writable) {
308
+ warnings.push(workspaceCheck.error || "Workspace is not writable");
309
+ }
310
+ const allRequiredMet = toolResults.filter((r) => r.required).every((r) => r.installed);
311
+ return {
312
+ tools: toolResults,
313
+ workspace: {
314
+ path: workspaceRoot,
315
+ writable: workspaceCheck.writable,
316
+ isGitRepo: gitCheck.isGitRepo,
317
+ branch: gitCheck.branch,
318
+ initialized: gitCheck.initialized,
319
+ error: workspaceCheck.error
320
+ },
321
+ allRequiredMet,
322
+ warnings
323
+ };
324
+ }
325
+ function printStartupCheckResults(results, verbose = false) {
326
+ const missingRequired = results.tools.filter((t) => t.required && !t.installed);
327
+ const missingOptional = results.tools.filter((t) => !t.required && !t.installed);
328
+ if (results.workspace.initialized) {
329
+ console.log(chalk.green("\u2713 Initialized git repository"));
330
+ console.log();
331
+ }
332
+ if (missingRequired.length === 0 && !verbose) {
333
+ return;
334
+ }
335
+ console.log();
336
+ if (missingRequired.length > 0) {
337
+ console.log(chalk.red.bold("\u26A0 Missing required tools:"));
338
+ console.log();
339
+ for (const tool of missingRequired) {
340
+ console.log(chalk.red(` \u2717 ${tool.name}`));
341
+ console.log(chalk.gray(` ${tool.description}`));
342
+ console.log(chalk.cyan(` Install: ${tool.installHint}`));
343
+ console.log();
344
+ }
345
+ }
346
+ if (missingOptional.length > 0 && verbose) {
347
+ console.log(chalk.yellow("Optional tools not installed:"));
348
+ for (const tool of missingOptional) {
349
+ console.log(chalk.yellow(` \u25CB ${tool.name}`) + chalk.gray(` - ${tool.description}`));
350
+ console.log(chalk.gray(` Install: ${tool.installHint}`));
351
+ }
352
+ console.log();
353
+ }
354
+ if (!results.workspace.writable) {
355
+ console.log(chalk.red(`\u26A0 Workspace issue: ${results.workspace.error}`));
356
+ console.log();
357
+ }
358
+ if (verbose) {
359
+ const installed = results.tools.filter((t) => t.installed);
360
+ if (installed.length > 0) {
361
+ console.log(chalk.green("Installed tools:"));
362
+ for (const tool of installed) {
363
+ const version = tool.version ? chalk.gray(` (${tool.version})`) : "";
364
+ console.log(chalk.green(` \u2713 ${tool.name}${version}`));
365
+ }
366
+ console.log();
367
+ }
368
+ }
369
+ if (!results.allRequiredMet) {
370
+ console.log(chalk.red.bold("Some required tools are missing. Autohand may not work correctly."));
371
+ console.log(chalk.gray(`Use ${getPackageManagerHint()} to install them.`));
372
+ console.log();
373
+ }
374
+ }
375
+
376
+ export {
377
+ validateWorkspacePath,
378
+ runStartupChecks,
379
+ printStartupCheckResults
380
+ };
381
+ /**
382
+ * @license
383
+ * Copyright 2025 Autohand AI LLC
384
+ * SPDX-License-Identifier: Apache-2.0
385
+ *
386
+ * Startup checks - validates required tools and environment
387
+ */
@@ -1,15 +1,22 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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; }// src/core/HookManager.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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; } var _class;// src/core/HookManager.ts
2
2
  var _child_process = require('child_process');
3
3
  var _minimatch = require('minimatch');
4
4
  var DEFAULT_HOOK_TIMEOUT = 5e3;
5
- var HookManager = class {
6
- constructor(options) {
7
- this.initialized = false;
5
+ var HookManager = (_class = class {
6
+
7
+
8
+
9
+
10
+ __init() {this.initialized = false}
11
+ constructor(options) {;_class.prototype.__init.call(this);
8
12
  this.settings = _nullishCoalesce(options.settings, () => ( { enabled: true, hooks: [] }));
9
13
  this.workspaceRoot = options.workspaceRoot;
10
14
  this.onPersist = options.onPersist;
11
15
  this.onHookOutput = options.onHookOutput;
12
16
  }
17
+ setWorkspaceRoot(workspaceRoot) {
18
+ this.workspaceRoot = workspaceRoot;
19
+ }
13
20
  /**
14
21
  * Initialize hooks - set up default hooks if none exist
15
22
  */
@@ -28,7 +35,7 @@ var HookManager = class {
28
35
  */
29
36
  async installDefaultHooks() {
30
37
  try {
31
- const { DEFAULT_HOOKS, SMART_COMMIT_HOOK } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-RCXPHF4M.cjs")));
38
+ const { DEFAULT_HOOKS, SMART_COMMIT_HOOK } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-2V2CQL63.cjs")));
32
39
  this.settings.hooks = [...DEFAULT_HOOKS, SMART_COMMIT_HOOK];
33
40
  if (this.onPersist) {
34
41
  await this.onPersist();
@@ -56,7 +63,7 @@ var HookManager = class {
56
63
  */
57
64
  async mergeDefaultHooks() {
58
65
  try {
59
- const { DEFAULT_HOOKS, SMART_COMMIT_HOOK } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-RCXPHF4M.cjs")));
66
+ const { DEFAULT_HOOKS, SMART_COMMIT_HOOK } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-2V2CQL63.cjs")));
60
67
  const allDefaults = [...DEFAULT_HOOKS, SMART_COMMIT_HOOK];
61
68
  const existingHooks = _nullishCoalesce(this.settings.hooks, () => ( []));
62
69
  const existingIds = new Set(existingHooks.map((h) => this.getHookIdentifier(h)));
@@ -84,7 +91,7 @@ var HookManager = class {
84
91
  const hooksDir = path.join(os.homedir(), ".autohand", "hooks");
85
92
  const isWindows = os.platform() === "win32";
86
93
  await fs.ensureDir(hooksDir);
87
- const { HOOK_SCRIPTS, HOOK_SCRIPTS_WINDOWS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-RCXPHF4M.cjs")));
94
+ const { HOOK_SCRIPTS, HOOK_SCRIPTS_WINDOWS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./defaultHooks-2V2CQL63.cjs")));
88
95
  for (const [scriptName, scriptContent] of Object.entries(HOOK_SCRIPTS)) {
89
96
  const scriptPath = path.join(hooksDir, scriptName);
90
97
  if (!await fs.pathExists(scriptPath)) {
@@ -274,6 +281,12 @@ var HookManager = class {
274
281
  if (context.automodeCancelReason) env.HOOK_AUTOMODE_CANCEL_REASON = context.automodeCancelReason;
275
282
  if (context.automodeCheckpointCommit) env.HOOK_AUTOMODE_CHECKPOINT = context.automodeCheckpointCommit;
276
283
  if (context.automodeTotalCost !== void 0) env.HOOK_AUTOMODE_COST = String(context.automodeTotalCost);
284
+ if (context.event.startsWith("review:")) {
285
+ if (context.reviewPath) env.HOOK_REVIEW_PATH = context.reviewPath;
286
+ if (context.reviewScope) env.HOOK_REVIEW_SCOPE = context.reviewScope;
287
+ if (context.reviewError) env.HOOK_REVIEW_ERROR = context.reviewError;
288
+ if (context.reviewInstructions) env.HOOK_REVIEW_INSTRUCTIONS = context.reviewInstructions;
289
+ }
277
290
  if (context.additionalWorkspaces && context.additionalWorkspaces.length > 0) {
278
291
  env.HOOK_ADDITIONAL_WORKSPACES = JSON.stringify(context.additionalWorkspaces);
279
292
  }
@@ -334,6 +347,11 @@ var HookManager = class {
334
347
  automode_cancel_reason: context.automodeCancelReason,
335
348
  automode_checkpoint_commit: context.automodeCheckpointCommit,
336
349
  automode_total_cost: context.automodeTotalCost,
350
+ // Review context
351
+ review_path: context.reviewPath,
352
+ review_scope: context.reviewScope,
353
+ review_instructions: context.reviewInstructions,
354
+ review_error: context.reviewError,
337
355
  // Multi-directory support
338
356
  additional_workspaces: context.additionalWorkspaces
339
357
  });
@@ -524,6 +542,12 @@ var HookManager = class {
524
542
  "automode:cancel",
525
543
  "automode:complete",
526
544
  "automode:error",
545
+ // Review events
546
+ "review:start",
547
+ "review:end",
548
+ "review:paused",
549
+ "review:failed",
550
+ "review:completed",
527
551
  // Team events
528
552
  "team-created",
529
553
  "teammate-spawned",
@@ -542,7 +566,7 @@ var HookManager = class {
542
566
  }
543
567
  return summary;
544
568
  }
545
- };
569
+ }, _class);
546
570
 
547
571
 
548
572
 
@@ -6,6 +6,8 @@ import { EventEmitter } from "events";
6
6
  var READ_ONLY_TOOLS = [
7
7
  // File reading
8
8
  "read_file",
9
+ "fff_grep",
10
+ "fff_find",
9
11
  "search",
10
12
  "search_with_context",
11
13
  "semantic_search",
@@ -30,10 +32,13 @@ var READ_ONLY_TOOLS = [
30
32
  "recall_memory",
31
33
  // Meta
32
34
  "tools_registry",
35
+ "tool_search",
33
36
  "plan",
37
+ "exit_plan_mode",
34
38
  "ask_followup_question"
35
39
  ];
36
40
  var PlanModeManager = class extends EventEmitter {
41
+ state;
37
42
  constructor() {
38
43
  super();
39
44
  this.state = {
@@ -224,48 +229,50 @@ function getPlanModeManager() {
224
229
  }
225
230
  return planModeManager;
226
231
  }
227
- async function plan(_ctx, args) {
232
+ function formatPlanModeToggleMessage(enabled) {
233
+ if (enabled) {
234
+ return `${chalk.cyan("[PLAN]")} ${chalk.cyan("Plan mode active - tools are read-only")}`;
235
+ }
236
+ return `${chalk.gray("Plan mode")} ${chalk.red("OFF")}`;
237
+ }
238
+ async function plan(_ctx, args, opts) {
228
239
  const manager = getPlanModeManager();
229
240
  const subcommand = args?.trim().toLowerCase();
241
+ const out = opts?.output ?? console.log;
230
242
  switch (subcommand) {
231
243
  case "on":
232
244
  case "enable":
233
245
  if (manager.isEnabled()) {
234
- console.log(chalk.yellow("Plan mode is already enabled."));
246
+ out(chalk.yellow("Plan mode is already enabled."));
235
247
  return null;
236
248
  }
237
249
  manager.enable();
238
- console.log(chalk.green("Plan mode enabled."));
239
- console.log(chalk.gray("Tools are now read-only. Use /plan off to disable."));
240
- console.log(chalk.gray("Tip: Press Shift+Tab twice to quickly toggle plan mode."));
250
+ out(formatPlanModeToggleMessage(true));
241
251
  return null;
242
252
  case "off":
243
253
  case "disable":
244
254
  if (!manager.isEnabled()) {
245
- console.log(chalk.yellow("Plan mode is not enabled."));
255
+ out(chalk.yellow("Plan mode is not enabled."));
246
256
  return null;
247
257
  }
248
258
  manager.disable();
249
- console.log(chalk.green("Plan mode disabled."));
250
- console.log(chalk.gray("Full tool access restored."));
259
+ out(formatPlanModeToggleMessage(false));
251
260
  return null;
252
261
  case "status":
253
- return showPlanStatus(manager);
262
+ return showPlanStatus(manager, out);
254
263
  case "":
255
264
  case void 0:
256
265
  if (manager.isEnabled()) {
257
266
  manager.disable();
258
- console.log(chalk.green("Plan mode disabled."));
259
- console.log(chalk.gray("Full tool access restored."));
267
+ out(formatPlanModeToggleMessage(false));
260
268
  } else {
261
269
  manager.enable();
262
- console.log(chalk.green("Plan mode enabled."));
263
- console.log(chalk.gray("Tools are now read-only."));
270
+ out(formatPlanModeToggleMessage(true));
264
271
  }
265
272
  return null;
266
273
  default:
267
- console.log(chalk.yellow(`Unknown subcommand: ${subcommand}`));
268
- console.log(chalk.gray(`
274
+ out(chalk.yellow(`Unknown subcommand: ${subcommand}`));
275
+ out(chalk.gray(`
269
276
  Usage:
270
277
  /plan - Toggle plan mode
271
278
  /plan on - Enable plan mode
@@ -279,39 +286,39 @@ Keyboard shortcut:
279
286
  return null;
280
287
  }
281
288
  }
282
- function showPlanStatus(manager) {
289
+ function showPlanStatus(manager, out = console.log) {
283
290
  const enabled = manager.isEnabled();
284
291
  const phase = manager.getPhase();
285
292
  const plan2 = manager.getPlan();
286
293
  const indicator = manager.getPromptIndicator();
287
- console.log("");
288
- console.log(chalk.bold.cyan("Plan Mode Status"));
289
- console.log(chalk.gray("\u2500".repeat(40)));
290
- console.log(`Status: ${enabled ? chalk.green("ENABLED") : chalk.gray("DISABLED")}`);
291
- console.log(`Phase: ${chalk.cyan(phase)}`);
292
- console.log(`Indicator: ${indicator || chalk.gray("(none)")}`);
294
+ out("");
295
+ out(chalk.bold.cyan("Plan Mode Status"));
296
+ out(chalk.gray("\u2500".repeat(40)));
297
+ out(`Status: ${enabled ? chalk.green("ENABLED") : chalk.gray("DISABLED")}`);
298
+ out(`Phase: ${chalk.cyan(phase)}`);
299
+ out(`Indicator: ${indicator || chalk.gray("(none)")}`);
293
300
  if (plan2) {
294
301
  const completed = plan2.steps.filter((s) => s.status === "completed").length;
295
302
  const inProgress = plan2.steps.find((s) => s.status === "in_progress");
296
- console.log("");
297
- console.log(chalk.bold(`Plan: ${plan2.id}`));
298
- console.log(`Progress: ${completed}/${plan2.steps.length} steps`);
299
- console.log("");
303
+ out("");
304
+ out(chalk.bold(`Plan: ${plan2.id}`));
305
+ out(`Progress: ${completed}/${plan2.steps.length} steps`);
306
+ out("");
300
307
  for (const step of plan2.steps) {
301
308
  const icon = getStepIcon(step.status);
302
309
  const color = getStepColor(step.status);
303
- console.log(color(` ${icon} ${step.number}. ${step.description}`));
310
+ out(color(` ${icon} ${step.number}. ${step.description}`));
304
311
  }
305
312
  if (inProgress) {
306
- console.log("");
307
- console.log(chalk.yellow(`Currently working on: Step ${inProgress.number}`));
313
+ out("");
314
+ out(chalk.yellow(`Currently working on: Step ${inProgress.number}`));
308
315
  }
309
316
  } else {
310
- console.log("");
311
- console.log(chalk.gray("No plan created yet."));
312
- console.log(chalk.gray("Ask the agent to create a plan for your task."));
317
+ out("");
318
+ out(chalk.gray("No plan created yet."));
319
+ out(chalk.gray("Ask the agent to create a plan for your task."));
313
320
  }
314
- console.log("");
321
+ out("");
315
322
  return null;
316
323
  }
317
324
  function getStepIcon(status) {
@@ -342,6 +349,7 @@ function getStepColor(status) {
342
349
  export {
343
350
  metadata,
344
351
  getPlanModeManager,
352
+ formatPlanModeToggleMessage,
345
353
  plan
346
354
  };
347
355
  /**