autohand-cli 0.9.1 → 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 (432) hide show
  1. package/README.md +103 -79
  2. package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
  3. package/dist/AgentRegistry-JBXZUPML.js +18 -0
  4. package/dist/{CommunitySkillsCache-ZACDPD4J.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
  5. package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
  6. package/dist/{HookManager-2S6AHOC3.js → HookManager-BELBPQQI.js} +1 -1
  7. package/dist/{HookManager-TVEQI5ZU.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
  8. package/dist/{ImportWizard-AF2XL6DS.cjs → ImportWizard-U6CIJREW.cjs} +12 -12
  9. package/dist/{ImportWizard-AEBMAKXE.js → ImportWizard-VJFSWSUQ.js} +3 -3
  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-SJPY3ONR.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
  15. package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
  16. package/dist/{PermissionManager-MT7KBNNR.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-RB4RVAF6.js → ProviderFactory-XUT6BSGB.js} +4 -3
  20. package/dist/SessionManager-LGPQIA57.cjs +10 -0
  21. package/dist/{SessionManager-554PHVPC.js → SessionManager-OR4KDDDS.js} +2 -2
  22. package/dist/{SkillsRegistry-NHHMIUYJ.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/{about-3USFSGOH.js → about-OYVGQMJJ.js} +3 -3
  27. package/dist/{about-QR52U5DD.cjs → about-U2BH7HDR.cjs} +4 -4
  28. package/dist/{acp-5Y2W6OZP.js → acp-JWHGXZL5.js} +169 -103
  29. package/dist/{acp-GSYE75OB.cjs → acp-S37JOBCS.cjs} +184 -118
  30. package/dist/{actionExecutor-KHUU3Z3Q.cjs → actionExecutor-2QEPMELQ.cjs} +13 -13
  31. package/dist/{actionExecutor-PLQJZLZV.js → actionExecutor-6NCCORRB.js} +12 -12
  32. package/dist/add-dir-KFUHSIR2.cjs +11 -0
  33. package/dist/{add-dir-HCERJDBR.js → add-dir-MM2BM2Z2.js} +2 -2
  34. package/dist/agent-DUIYLIVN.js +132 -0
  35. package/dist/agent-YYEHGDAK.cjs +132 -0
  36. package/dist/agents-GBGG4CW7.cjs +19 -0
  37. package/dist/agents-ZH34C72F.js +19 -0
  38. package/dist/agents-new-ERXLS7SB.cjs +17 -0
  39. package/dist/{agents-new-7GAQ25EK.js → agents-new-EVTGPTA4.js} +6 -6
  40. package/dist/{autoSkill-66PKCYTW.js → autoSkill-HEWKJ5JV.js} +2 -2
  41. package/dist/autoSkill-YL6PN6AV.cjs +20 -0
  42. package/dist/automode-4BJ7FNPL.cjs +10 -0
  43. package/dist/{automode-BUF3VGXU.js → automode-S4U7A7Q2.js} +2 -2
  44. package/dist/chrome-45ZXHL5N.cjs +22 -0
  45. package/dist/{chrome-Y3T7EIHG.js → chrome-BBSRVG6S.js} +2 -2
  46. package/dist/chrome-IFVZRHAT.cjs +50 -0
  47. package/dist/chrome-MYE6DNA2.js +22 -0
  48. package/dist/{chunk-45CHNQM6.cjs → chunk-24CEJYEG.cjs} +93 -31
  49. package/dist/{chunk-6JWCGQJU.cjs → chunk-255GIVM2.cjs} +6 -6
  50. package/dist/{chunk-D546G7DA.cjs → chunk-2BDSR2OW.cjs} +98 -75
  51. package/dist/{chunk-PGFLPURU.js → chunk-2BPIR7LA.js} +121 -4
  52. package/dist/{chunk-AOKXYGBQ.cjs → chunk-2NY7OHBF.cjs} +41 -26
  53. package/dist/chunk-2WUNHTXL.js +303 -0
  54. package/dist/{chunk-PQBYFEBL.cjs → chunk-34B6ZO6W.cjs} +124 -7
  55. package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
  56. package/dist/{chunk-3UC6DMFI.cjs → chunk-3CAXECWJ.cjs} +15 -15
  57. package/dist/{chunk-YWH55BWK.cjs → chunk-3CBYUBZC.cjs} +6 -9
  58. package/dist/chunk-3DF3GZQ7.js +277 -0
  59. package/dist/{chunk-KASXKDF2.cjs → chunk-3JURXAL6.cjs} +58 -7
  60. package/dist/{chunk-JV5HVCHU.cjs → chunk-3KWAP2Y3.cjs} +88 -9
  61. package/dist/{chunk-WPE2XHVX.js → chunk-3MCK6UBL.js} +1 -1
  62. package/dist/{chunk-U2QUMKCB.js → chunk-3TH7IK4M.js} +62 -9
  63. package/dist/{chunk-YXM6SA7P.js → chunk-3V77OB3W.js} +3 -3
  64. package/dist/{chunk-MZN6JBRZ.cjs → chunk-3Y5UEK7K.cjs} +4 -4
  65. package/dist/{chunk-BP37FVBM.js → chunk-4GPPSBEZ.js} +3 -3
  66. package/dist/{chunk-4XVLNOFA.js → chunk-5CMBAJ6K.js} +20 -3
  67. package/dist/{chunk-PNIAIOMZ.cjs → chunk-5YRXFBYZ.cjs} +35 -6
  68. package/dist/chunk-6AC2TT26.js +156 -0
  69. package/dist/{chunk-PSAH4ZQB.cjs → chunk-6EIQ6A6U.cjs} +2 -2
  70. package/dist/{chunk-YQDI753V.js → chunk-6HSEDXVF.js} +4 -4
  71. package/dist/{chunk-O5GI6SR3.js → chunk-6NUXK62F.js} +1 -1
  72. package/dist/{chunk-HVCIB4SW.cjs → chunk-6TGCAPYH.cjs} +62 -9
  73. package/dist/{chunk-HZWU6IO3.js → chunk-6W3SZCSP.js} +2 -5
  74. package/dist/{chunk-Q3BS6FPM.js → chunk-73LV3DDZ.js} +4 -4
  75. package/dist/{chunk-ZNGRLCFQ.js → chunk-7BGGLIQF.js} +83 -1
  76. package/dist/{chunk-ZNYZB7XY.cjs → chunk-7EEK7CRR.cjs} +83 -1
  77. package/dist/{chunk-HK5A54AV.cjs → chunk-7TO3PDMV.cjs} +48 -4
  78. package/dist/chunk-7UU22RSH.cjs +277 -0
  79. package/dist/{chunk-XNIMSVS6.cjs → chunk-A3GAM6FM.cjs} +11 -11
  80. package/dist/{chunk-W5QLA6WP.cjs → chunk-A7DJU75T.cjs} +8 -8
  81. package/dist/{chunk-7XTUL7ZD.cjs → chunk-AAAO4ERQ.cjs} +9 -9
  82. package/dist/{chunk-M5DK524Z.js → chunk-AAJLMP57.js} +2 -2
  83. package/dist/chunk-ABR756QN.js +529 -0
  84. package/dist/{chunk-OIGYWOL6.js → chunk-APFGDIPD.js} +3 -1
  85. package/dist/{chunk-PTTZI4QZ.js → chunk-APQYRMYL.js} +4 -4
  86. package/dist/{chunk-CO2AADYU.cjs → chunk-AZKOIF2G.cjs} +55 -17
  87. package/dist/{chunk-P6SLT2F4.cjs → chunk-AZLHUPNC.cjs} +2 -2
  88. package/dist/chunk-B55VCYSQ.cjs +30 -0
  89. package/dist/{chunk-JMJRFSNJ.js → chunk-BLQUMSM3.js} +1 -1
  90. package/dist/{chunk-MGNXABSU.cjs → chunk-BXKPX6K4.cjs} +9 -9
  91. package/dist/{chunk-MQQH4XQH.cjs → chunk-C66FN2LP.cjs} +4 -4
  92. package/dist/{chunk-CECH6QQP.js → chunk-CH7KUFAS.js} +10 -10
  93. package/dist/{chunk-PIXQ2AVM.cjs → chunk-CILSXOPI.cjs} +17 -17
  94. package/dist/{chunk-IEPLQ47J.js → chunk-CM24K6ZT.js} +89 -12
  95. package/dist/chunk-CMEZ42F2.cjs +303 -0
  96. package/dist/{chunk-X5P6QQOB.cjs → chunk-CNQKIWIS.cjs} +100 -23
  97. package/dist/{chunk-AQ5PVHOC.cjs → chunk-CSUGNNJY.cjs} +4 -3
  98. package/dist/{chunk-QRQF3556.js → chunk-D6HB3H3L.js} +25 -10
  99. package/dist/{chunk-XZVDYC5U.js → chunk-D7AYKVKW.js} +2 -2
  100. package/dist/{chunk-3UHRCHKB.cjs → chunk-DLCXWOWT.cjs} +23 -23
  101. package/dist/{chunk-CK4HAHVY.cjs → chunk-DMM2BKSV.cjs} +118 -25
  102. package/dist/{chunk-SPQ7QIQ6.js → chunk-DW3DPV77.js} +1 -1
  103. package/dist/chunk-ECQD2QC3.cjs +33 -0
  104. package/dist/{chunk-SNDDZG5H.js → chunk-EEYOS3UC.js} +90 -70
  105. package/dist/{chunk-DGBPWODD.js → chunk-EF2EN5CR.js} +2 -2
  106. package/dist/{chunk-M7B7RRBK.cjs → chunk-EFXFURDY.cjs} +138 -51
  107. package/dist/chunk-EK34UZPB.cjs +40 -0
  108. package/dist/{chunk-CRTCZ4WL.cjs → chunk-FJR6EZLO.cjs} +3834 -2337
  109. package/dist/{chunk-TYBPTKFT.js → chunk-FPO7YNPQ.js} +1 -1
  110. package/dist/{chunk-X3TI5TJJ.js → chunk-FS4I6BNR.js} +1 -1
  111. package/dist/{chunk-WNJXIACY.js → chunk-FSJ2MNOC.js} +3 -3
  112. package/dist/{chunk-44ZWOBTI.js → chunk-GEHZMC4G.js} +12 -9
  113. package/dist/{chunk-Y5BDE24P.cjs → chunk-GO6C2RAR.cjs} +3 -0
  114. package/dist/{chunk-XW3XCK4E.cjs → chunk-GSMR6V36.cjs} +4 -4
  115. package/dist/{chunk-H426KOGY.js → chunk-GSZWATME.js} +1 -1
  116. package/dist/{chunk-S5JNQIGL.cjs → chunk-GYLGCR6F.cjs} +5 -5
  117. package/dist/{chunk-ONVYXTUT.cjs → chunk-H3OOWNYQ.cjs} +3 -3
  118. package/dist/{chunk-V5ELP2XE.js → chunk-H65446XW.js} +110 -15
  119. package/dist/{chunk-LANGD5CO.js → chunk-H7HXRRHK.js} +45 -1
  120. package/dist/{chunk-RBXBH6EB.cjs → chunk-HN2JTDN5.cjs} +17 -17
  121. package/dist/{chunk-SOVR7S3T.cjs → chunk-HNXUZ5OY.cjs} +2 -2
  122. package/dist/{chunk-AZ47LKD5.cjs → chunk-HOYT3E65.cjs} +3 -3
  123. package/dist/{chunk-P4FUTSVK.js → chunk-HTPY5ESD.js} +3 -3
  124. package/dist/{chunk-5SFV2NCY.cjs → chunk-HVLWH2AF.cjs} +10 -10
  125. package/dist/{chunk-VQHSYAPZ.cjs → chunk-HZTEU4W5.cjs} +62 -93
  126. package/dist/{chunk-4XFHP2SN.cjs → chunk-I5T7LPFP.cjs} +7 -7
  127. package/dist/{chunk-ZPLCAXJW.js → chunk-IB5CJXE7.js} +7 -7
  128. package/dist/{chunk-KM7R5YPS.cjs → chunk-INNXFLDR.cjs} +9 -6
  129. package/dist/{chunk-2ESQR35E.cjs → chunk-JFLEP3T7.cjs} +10 -10
  130. package/dist/chunk-JJGDOBFL.js +40 -0
  131. package/dist/{chunk-5A7ZL64N.js → chunk-JSU46T6K.js} +1 -1
  132. package/dist/{chunk-NB6M6ESM.js → chunk-K6WN6BT4.js} +1 -1
  133. package/dist/{chunk-QQ64HEHP.cjs → chunk-KIQH3SMT.cjs} +34 -31
  134. package/dist/{chunk-MANJ67D3.js → chunk-KPRXHIE2.js} +52 -83
  135. package/dist/{chunk-6HF6XSCC.js → chunk-LIO3RX2Z.js} +2 -2
  136. package/dist/{chunk-NZ3ZWLUW.js → chunk-LOSXLH7P.js} +109 -16
  137. package/dist/{chunk-NZ7GCK7Y.cjs → chunk-LSOR72PB.cjs} +23 -23
  138. package/dist/{chunk-6AYJCDTA.js → chunk-MA3AVDCC.js} +47 -9
  139. package/dist/{chunk-PZZMIYII.js → chunk-ME3S2WIR.js} +3 -3
  140. package/dist/{chunk-2IW5YFJ4.js → chunk-NC2I2M4P.js} +4 -4
  141. package/dist/{chunk-AE2ILW25.cjs → chunk-NC4A4LVC.cjs} +13 -13
  142. package/dist/{chunk-EEHWALXA.js → chunk-NGEK5FCJ.js} +85 -3
  143. package/dist/{chunk-MMKZSJUN.js → chunk-NKW6CHXQ.js} +1 -1
  144. package/dist/{chunk-JB3JCYBJ.js → chunk-NOWCRKP2.js} +4 -3
  145. package/dist/{chunk-3ZOOH44N.js → chunk-NUB2LMB6.js} +2 -2
  146. package/dist/chunk-O246MKIW.cjs +267 -0
  147. package/dist/{chunk-SRMGWMQO.js → chunk-OGFWL2PS.js} +1 -1
  148. package/dist/{chunk-YISPVAXO.cjs → chunk-ONNGAR6W.cjs} +340 -597
  149. package/dist/{chunk-7WAUCLLQ.js → chunk-OOFR6A62.js} +33 -4
  150. package/dist/{chunk-4E7SHPNQ.js → chunk-OZ7FHO7J.js} +2 -2
  151. package/dist/{chunk-NV6LCD2I.cjs → chunk-P5EWGUI2.cjs} +109 -27
  152. package/dist/{chunk-YC5OBZQU.js → chunk-P6BQJPAI.js} +41 -18
  153. package/dist/{chunk-SHRLFX6F.js → chunk-PG2JIU5M.js} +57 -6
  154. package/dist/{chunk-6OECOAK5.cjs → chunk-PI27G2ED.cjs} +25 -8
  155. package/dist/{chunk-TR6NECEZ.js → chunk-PI7LRPL6.js} +1 -1
  156. package/dist/{chunk-GAOPJ5S3.cjs → chunk-PMPEC5HN.cjs} +18 -15
  157. package/dist/{chunk-5GCQ5UMV.cjs → chunk-PYUP7AKY.cjs} +14 -14
  158. package/dist/{chunk-S5QKRA2V.js → chunk-QC5Z3ZT5.js} +2 -2
  159. package/dist/chunk-QDO4L2A7.cjs +156 -0
  160. package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
  161. package/dist/{chunk-26G7YGOW.js → chunk-QVXMSQOG.js} +84 -21
  162. package/dist/{chunk-SVVP4UUZ.cjs → chunk-R4UKBKDY.cjs} +11 -11
  163. package/dist/{chunk-HG3ZASBH.cjs → chunk-R75AWII3.cjs} +112 -17
  164. package/dist/{chunk-TE4SYTWR.cjs → chunk-RD5PLUIX.cjs} +8 -8
  165. package/dist/{chunk-FFHSCM5M.js → chunk-RGB34CV5.js} +3 -3
  166. package/dist/{chunk-SY2P3Z5W.cjs → chunk-RJCZLFHE.cjs} +96 -32
  167. package/dist/{chunk-22SCR3EV.cjs → chunk-RKWNM2BJ.cjs} +2 -2
  168. package/dist/{chunk-FBQJZKFX.js → chunk-RMVONICR.js} +3 -3
  169. package/dist/{chunk-PY73W5MQ.cjs → chunk-RPSYRJL7.cjs} +10 -4
  170. package/dist/{chunk-HXHE2KAO.js → chunk-RWKU2X7O.js} +7 -4
  171. package/dist/{chunk-NQZH5CR2.cjs → chunk-RZLEGVMH.cjs} +102 -5
  172. package/dist/{chunk-KMP6Y3LJ.js → chunk-S2L3Y677.js} +1 -1
  173. package/dist/{chunk-GSDV75A5.js → chunk-S7KVUIOS.js} +1 -1
  174. package/dist/{chunk-7PT646AL.cjs → chunk-SACJJ6NO.cjs} +5 -3
  175. package/dist/{chunk-LEZEWKPA.js → chunk-SJQU2ZFR.js} +96 -32
  176. package/dist/{chunk-65LRPW5W.js → chunk-SKAQKQFF.js} +12 -2
  177. package/dist/chunk-T4DXP5OP.js +30 -0
  178. package/dist/{chunk-EYHKL4QC.js → chunk-T6FTB6K2.js} +1 -1
  179. package/dist/{chunk-DNSD7DVJ.js → chunk-T6N6GRFT.js} +13 -10
  180. package/dist/{chunk-575PXZX7.js → chunk-TJFKA6A7.js} +82 -3
  181. package/dist/{chunk-HSWWM6AM.js → chunk-TJZUPS4Z.js} +34 -291
  182. package/dist/{chunk-DHUQZ53B.cjs → chunk-TLKHZ425.cjs} +2 -2
  183. package/dist/{chunk-VLGGMQUN.cjs → chunk-TQ24NLXO.cjs} +6 -6
  184. package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
  185. package/dist/{chunk-EA2MS25U.cjs → chunk-TZB5XADL.cjs} +4 -4
  186. package/dist/{chunk-U6PLSPMD.cjs → chunk-UAYXZXWU.cjs} +4 -4
  187. package/dist/{chunk-OV3T5MUH.cjs → chunk-UKBFNBDO.cjs} +11 -11
  188. package/dist/{chunk-SZD45IDG.js → chunk-UMJYX5KD.js} +101 -4
  189. package/dist/{chunk-B76FJKEJ.cjs → chunk-USKYTHDL.cjs} +69 -18
  190. package/dist/{chunk-NZQFKXM3.cjs → chunk-VAJUSZMC.cjs} +15 -15
  191. package/dist/{chunk-SDLY4X3G.js → chunk-VGQG4NBJ.js} +2 -2
  192. package/dist/{chunk-KWXGDSYT.js → chunk-VLUIVJ3J.js} +58 -7
  193. package/dist/{chunk-KJ26T7GM.cjs → chunk-VOBINVMV.cjs} +105 -42
  194. package/dist/{chunk-C5QIQQ37.js → chunk-VSHKKCSH.js} +16 -5
  195. package/dist/{chunk-L46OUKW5.cjs → chunk-VSZU3MGA.cjs} +28 -17
  196. package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
  197. package/dist/{chunk-UWZ4G3SQ.js → chunk-VXGYFX45.js} +4 -4
  198. package/dist/{chunk-C46B72VK.js → chunk-WH6YUQDB.js} +141 -54
  199. package/dist/{chunk-SFFEKZGC.js → chunk-WQ6TD55V.js} +2 -2
  200. package/dist/{chunk-7PJKTSRN.js → chunk-WQWECXTY.js} +3 -3
  201. package/dist/{chunk-DSSCERHI.cjs → chunk-WVDJUJH6.cjs} +2 -2
  202. package/dist/{chunk-JPFRI4L4.js → chunk-X24VIVDZ.js} +210 -26
  203. package/dist/{chunk-7IRQ7JEH.js → chunk-X4NRTLXD.js} +7 -1
  204. package/dist/{chunk-7MY4JHER.js → chunk-X53SHYCG.js} +2 -2
  205. package/dist/{chunk-RFUKZIJF.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
  206. package/dist/{chunk-WJYFLQ7G.cjs → chunk-Y47OJGLB.cjs} +3 -3
  207. package/dist/{chunk-HC2Q6A3E.cjs → chunk-Y4MN27V3.cjs} +361 -177
  208. package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
  209. package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
  210. package/dist/{chunk-63ANVAOJ.cjs → chunk-YMXYC777.cjs} +3 -3
  211. package/dist/{chunk-X7XMITIL.cjs → chunk-Z3GRWK6O.cjs} +8 -8
  212. package/dist/{chunk-3ICORF7M.cjs → chunk-Z5GG2KSL.cjs} +4 -4
  213. package/dist/{chunk-I2ZK3AOD.js → chunk-ZER7DYQK.js} +2 -2
  214. package/dist/{chunk-V3SZLWEQ.cjs → chunk-ZFDXZEZJ.cjs} +11 -11
  215. package/dist/{chunk-QBYGMMDD.js → chunk-ZFV4HJA6.js} +66 -4
  216. package/dist/chunk-ZHMYTI5D.cjs +529 -0
  217. package/dist/{chunk-4567QNRB.js → chunk-ZLR2TFBC.js} +3 -0
  218. package/dist/{chunk-OCATAKXV.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
  219. package/dist/{chunk-CCIDL4SA.js → chunk-ZVLVLDYN.js} +2915 -1418
  220. package/dist/clear-AJGXD2BB.cjs +12 -0
  221. package/dist/{clear-Y5TO3RZA.js → clear-HAHDSWKW.js} +3 -3
  222. package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
  223. package/dist/{communityInstaller-RVL4STPS.js → communityInstaller-OLKEUGMX.js} +5 -5
  224. package/dist/completion-G7Z436TF.cjs +17 -0
  225. package/dist/{completion-SE3XYG74.js → completion-ZS3AXJ6A.js} +4 -4
  226. package/dist/{config-7KPHKFTP.js → config-OWYAQPCX.js} +5 -4
  227. package/dist/config-W2BHT2QE.cjs +22 -0
  228. package/dist/{constants-EJFAWJQI.js → constants-AS6K67AA.js} +5 -3
  229. package/dist/constants-B4W5BT7F.cjs +23 -0
  230. package/dist/{export-BJVIDZC4.js → export-5HIU3KMD.js} +4 -4
  231. package/dist/export-GFD32UY2.cjs +15 -0
  232. package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
  233. package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
  234. package/dist/feature-KP74CZ3F.cjs +14 -0
  235. package/dist/{feature-V4JF5TNJ.js → feature-OPNVMB2E.js} +2 -2
  236. package/dist/features-LT55MURX.cjs +24 -0
  237. package/dist/features-ZDIU26WX.js +24 -0
  238. package/dist/feedback-7WTJFQ6S.js +18 -0
  239. package/dist/feedback-CEOJ3453.cjs +18 -0
  240. package/dist/go-2CY5SZNR.js +16 -0
  241. package/dist/go-O2CSQON4.cjs +16 -0
  242. package/dist/goal-DL2N2AWT.cjs +16 -0
  243. package/dist/goal-IJS7VZSG.js +16 -0
  244. package/dist/help-RNOGDEBA.cjs +12 -0
  245. package/dist/{help-MLIROWKM.js → help-TCWD2IRH.js} +2 -2
  246. package/dist/{history-GQJ6RZD6.js → history-ATOR5OQV.js} +2 -2
  247. package/dist/history-UUSGX2AL.cjs +14 -0
  248. package/dist/{hooks-PPFHCF7T.js → hooks-R3Z5QKUP.js} +5 -5
  249. package/dist/hooks-RWM5UY67.cjs +18 -0
  250. package/dist/{i18n-Q7UZJRPL.js → i18n-4QI4TD4I.js} +1 -1
  251. package/dist/i18n-MFAEU5RV.cjs +33 -0
  252. package/dist/{ide-BUSVE54P.js → ide-6PBTCCUQ.js} +4 -4
  253. package/dist/ide-UE3G7NMQ.cjs +15 -0
  254. package/dist/{import-C7S6UJMW.cjs → import-2IG76KAN.cjs} +6 -4
  255. package/dist/{import-U47DXCA7.js → import-E47QL4DW.js} +2 -2
  256. package/dist/import-NQDNBFUL.cjs +10 -0
  257. package/dist/{import-3VBKI6BN.js → import-VQIHGJWS.js} +6 -4
  258. package/dist/index.cjs +444 -334
  259. package/dist/index.d.cts +38 -0
  260. package/dist/index.d.ts +38 -0
  261. package/dist/index.js +324 -214
  262. package/dist/init-DX3RDGDT.cjs +10 -0
  263. package/dist/{init-Q2O4R42R.js → init-Q54OAAFZ.js} +2 -2
  264. package/dist/{inputPrompt-3CFZDUBH.js → inputPrompt-V2VBDRM7.js} +2 -2
  265. package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
  266. package/dist/language-I6KXAOXD.js +23 -0
  267. package/dist/language-XMIVOH5E.cjs +23 -0
  268. package/dist/learn-JPVVGTKU.js +23 -0
  269. package/dist/learn-NLSHI2MZ.cjs +23 -0
  270. package/dist/login-NABQYLYC.cjs +28 -0
  271. package/dist/login-XPOVFSWN.js +28 -0
  272. package/dist/logout-HNHCGB4Q.js +25 -0
  273. package/dist/logout-SKGDXJSW.cjs +25 -0
  274. package/dist/{mcp-AH3MMUBU.js → mcp-EN73YFGZ.js} +8 -7
  275. package/dist/mcp-TADZCPJQ.cjs +22 -0
  276. package/dist/{mcp-install-IA4ZS2SV.cjs → mcp-install-2GKWWBAS.cjs} +14 -13
  277. package/dist/{mcp-install-222PCKSW.js → mcp-install-3TBTVSHW.js} +9 -8
  278. package/dist/memory-GRXFTDIN.cjs +10 -0
  279. package/dist/{memory-VB46T5H3.js → memory-K2P3CDCH.js} +2 -2
  280. package/dist/{model-SJJG64AM.js → model-DEG22OWA.js} +2 -2
  281. package/dist/model-OSD74T7Z.cjs +10 -0
  282. package/dist/new-4NWBOATU.cjs +12 -0
  283. package/dist/{new-ERZ5C6CN.js → new-KJAP2MB6.js} +3 -3
  284. package/dist/{onboarding-ZQXMPSMJ.js → onboarding-2U5WE2OA.js} +17 -14
  285. package/dist/onboarding-5DZFCO5Q.cjs +39 -0
  286. package/dist/permissions-KY5I6YQ3.cjs +10 -0
  287. package/dist/{permissions-7ACNFK7A.js → permissions-TKYON7PP.js} +2 -2
  288. package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
  289. package/dist/plan-PYKP652W.cjs +13 -0
  290. package/dist/quit-GSKJL42O.js +14 -0
  291. package/dist/quit-TQSRTBUT.cjs +14 -0
  292. package/dist/{registry-4DXUDKJN.js → registry-EZ4V4TUQ.js} +1339 -1
  293. package/dist/{registry-UEO3ETZ7.cjs → registry-LCWYI4IB.cjs} +1378 -40
  294. package/dist/resume-4VWJXARX.cjs +17 -0
  295. package/dist/{resume-XSXZMDMD.js → resume-TLHWWWFN.js} +5 -5
  296. package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
  297. package/dist/review-XLJEUH5K.cjs +9 -0
  298. package/dist/{rpc-XH7QLN4H.js → rpc-3DLQBDWU.js} +151 -124
  299. package/dist/{rpc-YF54T7JU.cjs → rpc-O36WUU3L.cjs} +169 -142
  300. package/dist/search-DSX2CY4A.cjs +22 -0
  301. package/dist/search-I3QUDUQL.js +22 -0
  302. package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
  303. package/dist/sessionBranching-FKV4CR36.js +19 -0
  304. package/dist/sessions-3JUOT3ED.cjs +10 -0
  305. package/dist/{sessions-NJYHJOEL.js → sessions-VWMDIPOS.js} +2 -2
  306. package/dist/{settings-ZXUQH3DO.js → settings-FT2LZZUV.js} +11 -8
  307. package/dist/settings-RL4KNWHB.cjs +45 -0
  308. package/dist/setup-HQEJVOYT.js +32 -0
  309. package/dist/setup-MN54LKOL.cjs +32 -0
  310. package/dist/share-BUAFZNBX.cjs +17 -0
  311. package/dist/{share-WFAGZ5PY.js → share-CGB6MAVJ.js} +6 -6
  312. package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
  313. package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
  314. package/dist/{skills-NBTNDVAY.js → skills-7DKR3HRZ.js} +7 -7
  315. package/dist/{skills-OB6RDW7D.js → skills-BBBENOEY.js} +9 -9
  316. package/dist/skills-OQM7IHAF.cjs +29 -0
  317. package/dist/{skills-ZROBG3RZ.cjs → skills-RA2PKL63.cjs} +9 -9
  318. package/dist/{skills-install-ILX6QVEF.cjs → skills-install-D7K476SL.cjs} +15 -15
  319. package/dist/{skills-install-BHTIEMKH.js → skills-install-T4SOKJSL.js} +8 -8
  320. package/dist/{skills-new-YMRP2HNO.js → skills-new-S33NGEU3.js} +6 -6
  321. package/dist/skills-new-UVYH53MD.cjs +18 -0
  322. package/dist/slashCommands-MWOUDSQP.js +111 -0
  323. package/dist/slashCommands-XASURUTV.cjs +111 -0
  324. package/dist/squad-PIIYDFVH.cjs +15 -0
  325. package/dist/squad-VHYOVEJP.js +15 -0
  326. package/dist/status-GHFTXQBL.js +25 -0
  327. package/dist/status-WXMIJIU3.cjs +25 -0
  328. package/dist/statusline-2K7AC6ZQ.js +21 -0
  329. package/dist/statusline-GROI4HOC.cjs +21 -0
  330. package/dist/sync-254WF6JI.cjs +42 -0
  331. package/dist/sync-2DIZN4EH.cjs +24 -0
  332. package/dist/{sync-OCJN4ZSO.js → sync-J6I2ZUKQ.js} +5 -3
  333. package/dist/{sync-7C25MOT2.js → sync-Z3LVSEEV.js} +8 -6
  334. package/dist/{teammate-D77B6QRT.cjs → teammate-EXR76PEQ.cjs} +5 -5
  335. package/dist/{teammate-EZCMHOIL.js → teammate-K4DAOFEQ.js} +5 -5
  336. package/dist/theme-MVQDSU47.js +23 -0
  337. package/dist/theme-QAKEYWJG.cjs +23 -0
  338. package/dist/ui/questionModal.cjs +5 -5
  339. package/dist/ui/questionModal.js +4 -4
  340. package/dist/{undo-GNUTFXCW.js → undo-5AU47JHF.js} +2 -2
  341. package/dist/undo-ME6WKUXZ.cjs +10 -0
  342. package/dist/{usage-QSTNSDAO.js → usage-QTKO2YMD.js} +6 -5
  343. package/dist/usage-TYNJKVER.cjs +25 -0
  344. package/package.json +4 -3
  345. package/dist/AgentRegistry-GOV7FN2O.js +0 -10
  346. package/dist/AgentRegistry-J2C6JBZ3.cjs +0 -10
  347. package/dist/CommunitySkillsCache-22BB3J6H.cjs +0 -8
  348. package/dist/LearnAdvisor-KKEQ5QCV.js +0 -9
  349. package/dist/LearnAdvisor-Q7RAYLPF.cjs +0 -9
  350. package/dist/MemoryManager-PMNAEZMB.cjs +0 -8
  351. package/dist/MemoryManager-QZRLTUB5.js +0 -8
  352. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +0 -14
  353. package/dist/PermissionManager-URCNP5EC.cjs +0 -11
  354. package/dist/ProviderFactory-56N3ECE4.cjs +0 -12
  355. package/dist/SessionManager-2IZGWASQ.cjs +0 -10
  356. package/dist/SkillsRegistry-GMRVONOQ.cjs +0 -9
  357. package/dist/SubAgent-4GOR2FIJ.js +0 -13
  358. package/dist/SubAgent-ZJMDH4FI.cjs +0 -13
  359. package/dist/add-dir-BTAD5OZS.cjs +0 -11
  360. package/dist/agent-B3EVT7NN.cjs +0 -126
  361. package/dist/agent-SATQ3WZ3.js +0 -126
  362. package/dist/agents-44CRJGM7.cjs +0 -18
  363. package/dist/agents-NN4ZAJ7R.js +0 -18
  364. package/dist/agents-new-6D6G4QS6.cjs +0 -17
  365. package/dist/autoSkill-VQLGBELN.cjs +0 -20
  366. package/dist/automode-45DWV4TN.cjs +0 -10
  367. package/dist/chrome-Q2U73HZB.cjs +0 -50
  368. package/dist/chrome-Q54OALOK.cjs +0 -21
  369. package/dist/chrome-ZNJ46OYW.js +0 -21
  370. package/dist/chunk-JCUHCH37.cjs +0 -247
  371. package/dist/chunk-VKOXFT4L.cjs +0 -23
  372. package/dist/clear-QJXU25IF.cjs +0 -12
  373. package/dist/communityInstaller-LXMVKVAV.cjs +0 -22
  374. package/dist/completion-JX4T2ONW.cjs +0 -17
  375. package/dist/config-3224PRW4.cjs +0 -21
  376. package/dist/constants-MCCGUU5F.cjs +0 -21
  377. package/dist/export-KU4557HK.cjs +0 -15
  378. package/dist/feature-K3LG5IJP.cjs +0 -14
  379. package/dist/features-5OJTLKS7.js +0 -23
  380. package/dist/features-VCBJQXCX.cjs +0 -23
  381. package/dist/feedback-D4437VE4.js +0 -18
  382. package/dist/feedback-VZPEHGFY.cjs +0 -18
  383. package/dist/go-X4E6BCD6.js +0 -12
  384. package/dist/go-XREVFS5I.cjs +0 -12
  385. package/dist/goal-4M3J6JS2.cjs +0 -16
  386. package/dist/goal-EI66BV7W.js +0 -16
  387. package/dist/help-GGFS7WHY.cjs +0 -12
  388. package/dist/history-J4LUIOSI.cjs +0 -14
  389. package/dist/hooks-FSRIUS6A.cjs +0 -18
  390. package/dist/i18n-CI6VFXL5.cjs +0 -33
  391. package/dist/ide-YR27BPGM.cjs +0 -15
  392. package/dist/import-DBK4OCDF.cjs +0 -10
  393. package/dist/init-OXTYS72D.cjs +0 -10
  394. package/dist/inputPrompt-JMACL4EB.cjs +0 -90
  395. package/dist/language-EK3M6UBV.cjs +0 -22
  396. package/dist/language-Q3RUGGOW.js +0 -22
  397. package/dist/learn-3DSX7DYG.cjs +0 -23
  398. package/dist/learn-OPOH5L43.js +0 -23
  399. package/dist/login-GST7MWXJ.cjs +0 -27
  400. package/dist/login-Q7DZKAX4.js +0 -27
  401. package/dist/logout-2G7OUK7I.cjs +0 -24
  402. package/dist/logout-FNBBL2UI.js +0 -24
  403. package/dist/mcp-DW7R63IB.cjs +0 -21
  404. package/dist/memory-6NX3DAIY.cjs +0 -10
  405. package/dist/model-64NAELFS.cjs +0 -10
  406. package/dist/new-DU5SOOOY.cjs +0 -12
  407. package/dist/onboarding-2U2BV2KE.cjs +0 -36
  408. package/dist/permissions-GSNNV7RJ.cjs +0 -10
  409. package/dist/plan-XEJMOT55.cjs +0 -13
  410. package/dist/quit-WY6T267G.js +0 -10
  411. package/dist/quit-XIRE2KRE.cjs +0 -10
  412. package/dist/resume-RQZ3WXBP.cjs +0 -17
  413. package/dist/review-UWHWQHCB.cjs +0 -9
  414. package/dist/search-VXXFGZWU.cjs +0 -21
  415. package/dist/search-YAWGX7P7.js +0 -21
  416. package/dist/sessions-OSG3UJEZ.cjs +0 -10
  417. package/dist/settings-SO2UIGWV.cjs +0 -42
  418. package/dist/setup-KG7EGKF5.js +0 -30
  419. package/dist/setup-RSOPCQ57.cjs +0 -30
  420. package/dist/share-ZU3SGACF.cjs +0 -17
  421. package/dist/skills-KBVAQAD2.cjs +0 -29
  422. package/dist/skills-new-B45VQ2PP.cjs +0 -18
  423. package/dist/slashCommands-53VYIBJU.js +0 -105
  424. package/dist/slashCommands-BG2RGGZ6.cjs +0 -105
  425. package/dist/status-CQ2IUOVK.cjs +0 -24
  426. package/dist/status-E7IGNVPC.js +0 -24
  427. package/dist/sync-XRP46IVG.cjs +0 -40
  428. package/dist/sync-ZMFVE7T4.cjs +0 -22
  429. package/dist/theme-KKRDE6P7.cjs +0 -22
  430. package/dist/theme-XF7XIWBQ.js +0 -22
  431. package/dist/undo-U4KN7QQM.cjs +0 -10
  432. package/dist/usage-YDEMQBNQ.cjs +0 -24
@@ -3,10 +3,10 @@
3
3
  var _chunk5ZNYX4VHcjs = require('./chunk-5ZNYX4VH.cjs');
4
4
 
5
5
 
6
- var _chunkAQ5PVHOCcjs = require('./chunk-AQ5PVHOC.cjs');
6
+ var _chunkCSUGNNJYcjs = require('./chunk-CSUGNNJY.cjs');
7
7
 
8
8
 
9
- var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
9
+ var _chunk3JURXAL6cjs = require('./chunk-3JURXAL6.cjs');
10
10
 
11
11
  // src/commands/go.ts
12
12
  var _os = require('os'); var _os2 = _interopRequireDefault(_os);
@@ -32,13 +32,13 @@ var MobileHandoffClient = class {
32
32
  }
33
33
  async getDeviceId() {
34
34
  try {
35
- await _fsextra2.default.ensureDir(_path2.default.dirname(_chunkKASXKDF2cjs.AUTOHAND_FILES.deviceId));
36
- if (await _fsextra2.default.pathExists(_chunkKASXKDF2cjs.AUTOHAND_FILES.deviceId)) {
37
- const existing = (await _fsextra2.default.readFile(_chunkKASXKDF2cjs.AUTOHAND_FILES.deviceId, "utf8")).trim();
35
+ await _fsextra2.default.ensureDir(_path2.default.dirname(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId));
36
+ if (await _fsextra2.default.pathExists(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId)) {
37
+ const existing = (await _fsextra2.default.readFile(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId, "utf8")).trim();
38
38
  if (existing) return existing;
39
39
  }
40
40
  const next = _crypto2.default.randomUUID();
41
- await _fsextra2.default.writeFile(_chunkKASXKDF2cjs.AUTOHAND_FILES.deviceId, next);
41
+ await _fsextra2.default.writeFile(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId, next);
42
42
  return next;
43
43
  } catch (e) {
44
44
  return _crypto2.default.randomUUID();
@@ -66,7 +66,7 @@ var MobileHandoffClient = class {
66
66
  method: "POST",
67
67
  body: JSON.stringify(payload),
68
68
  headers: {
69
- "X-CLI-Version": _chunkAQ5PVHOCcjs.package_default.version,
69
+ "X-CLI-Version": _chunkCSUGNNJYcjs.package_default.version,
70
70
  "X-Device-ID": payload.deviceId
71
71
  }
72
72
  }
@@ -198,7 +198,13 @@ var metadata = {
198
198
  description: "pair this session with the Autohand Code iOS app",
199
199
  implemented: true
200
200
  };
201
+ var handoffSessionMetadata = {
202
+ command: "/handoff session",
203
+ description: "handoff this session to the Autohand Code iOS app",
204
+ implemented: true
205
+ };
201
206
  var MAX_MOBILE_SNAPSHOT_MESSAGES = 24;
207
+ var HANDOFF_FLAG = "experimental_handoff";
202
208
  function formatUrl(url) {
203
209
  return _terminallink2.default.isSupported ? _terminallink2.default.call(void 0, url, url) : _chalk2.default.cyan.underline(url);
204
210
  }
@@ -348,11 +354,22 @@ async function go(ctx, args = []) {
348
354
  ].join("\n");
349
355
  }
350
356
  }
357
+ async function handoffSession(ctx, args = []) {
358
+ const localDefault = _optionalChain([ctx, 'access', _18 => _18.config, 'optionalAccess', _19 => _19.features, 'optionalAccess', _20 => _20.experimentalHandoff]) === true;
359
+ const enabled = _nullishCoalesce(_optionalChain([ctx, 'access', _21 => _21.isFeatureEnabled, 'optionalCall', _22 => _22(HANDOFF_FLAG, localDefault)]), () => ( localDefault));
360
+ if (!enabled) {
361
+ return `The /handoff session command is behind ${HANDOFF_FLAG}. Run /features enable ${HANDOFF_FLAG}, then /handoff session again. No restart required.`;
362
+ }
363
+ await _optionalChain([ctx, 'access', _23 => _23.trackFeatureActivation, 'optionalCall', _24 => _24(HANDOFF_FLAG, { surface: "slash_command" })]);
364
+ return go(ctx, args);
365
+ }
366
+
367
+
351
368
 
352
369
 
353
370
 
354
371
 
355
- exports.metadata = metadata; exports.go = go;
372
+ exports.metadata = metadata; exports.handoffSessionMetadata = handoffSessionMetadata; exports.go = go; exports.handoffSession = handoffSession;
356
373
  /**
357
374
  * @license
358
375
  * Copyright 2026 Autohand AI LLC
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-LEZEWKPA.js";
3
+ } from "./chunk-SJQU2ZFR.js";
4
4
 
5
5
  // src/commands/memory.ts
6
6
  import chalk from "chalk";
@@ -1,30 +1,33 @@
1
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
2
 
3
+
4
+ var _chunkB55VCYSQcjs = require('./chunk-B55VCYSQ.cjs');
5
+
6
+
3
7
  var _chunkLJD7KR3Lcjs = require('./chunk-LJD7KR3L.cjs');
4
8
 
5
9
 
6
10
 
7
- var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
11
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
8
12
 
9
13
 
10
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
14
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
11
15
 
12
16
  // src/commands/sync.ts
13
17
  var _readline = require('readline'); var _readline2 = _interopRequireDefault(_readline);
14
18
  var metadata = {
15
19
  command: "/sync",
16
- description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.sync.description"),
20
+ description: _chunkRJCZLFHEcjs.t.call(void 0, "commands.sync.description"),
17
21
  implemented: true
18
22
  };
19
- var globalSyncService = null;
20
- function setSyncService(service) {
21
- globalSyncService = service;
23
+ function setSyncService2(service) {
24
+ _chunkB55VCYSQcjs.setSyncService.call(void 0, service);
22
25
  }
23
- function getSyncService() {
24
- return globalSyncService;
26
+ function getSyncService2() {
27
+ return _chunkB55VCYSQcjs.getSyncService.call(void 0, );
25
28
  }
26
29
  async function sync(ctx) {
27
- const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, );
30
+ const config = await _chunkCNQKIWIScjs.loadConfig.call(void 0, );
28
31
  const isLoggedIn = Boolean(_optionalChain([config, 'access', _ => _.auth, 'optionalAccess', _2 => _2.token]) && _optionalChain([config, 'access', _3 => _3.auth, 'optionalAccess', _4 => _4.user]));
29
32
  if (!isLoggedIn) {
30
33
  const theme = _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, );
@@ -37,7 +40,7 @@ async function sync(ctx) {
37
40
  return null;
38
41
  }
39
42
  async function gatherSyncData(ctx, config) {
40
- const syncService = globalSyncService;
43
+ const syncService = _chunkB55VCYSQcjs.getSyncService.call(void 0, );
41
44
  let status = {
42
45
  enabled: false,
43
46
  syncing: false,
@@ -127,7 +130,7 @@ function renderSyncUI(data, ctx) {
127
130
  } else {
128
131
  console.log(theme.error(`Sync failed: ${result.error}`));
129
132
  }
130
- const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, );
133
+ const config = await _chunkCNQKIWIScjs.loadConfig.call(void 0, );
131
134
  Object.assign(data, await gatherSyncData(ctx, config));
132
135
  } catch (err) {
133
136
  console.log(theme.error(`Sync error: ${err}`));
@@ -139,13 +142,13 @@ function renderSyncUI(data, ctx) {
139
142
  }
140
143
  if (char === "e") {
141
144
  try {
142
- const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, );
145
+ const config = await _chunkCNQKIWIScjs.loadConfig.call(void 0, );
143
146
  const newEnabled = _optionalChain([config, 'access', _16 => _16.sync, 'optionalAccess', _17 => _17.enabled]) === false;
144
147
  config.sync = { ...config.sync, enabled: newEnabled };
145
- await _chunkX5P6QQOBcjs.saveConfig.call(void 0, config);
148
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, config);
146
149
  data.enabled = newEnabled;
147
150
  console.log(_chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).accent(`
148
- ${newEnabled ? _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.sync.enabled") : _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.sync.disabled")}`));
151
+ ${newEnabled ? _chunkRJCZLFHEcjs.t.call(void 0, "commands.sync.enabled") : _chunkRJCZLFHEcjs.t.call(void 0, "commands.sync.disabled")}`));
149
152
  await sleep(1e3);
150
153
  render();
151
154
  } catch (err) {
@@ -281,7 +284,7 @@ function sleep(ms) {
281
284
 
282
285
 
283
286
 
284
- exports.metadata = metadata; exports.setSyncService = setSyncService; exports.getSyncService = getSyncService; exports.sync = sync;
287
+ exports.metadata = metadata; exports.setSyncService = setSyncService2; exports.getSyncService = getSyncService2; exports.sync = sync;
285
288
  /**
286
289
  * @license
287
290
  * Copyright 2025 Autohand AI LLC
@@ -1,33 +1,33 @@
1
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
2
 
3
- var _chunkYISPVAXOcjs = require('./chunk-YISPVAXO.cjs');
3
+ var _chunkONNGAR6Wcjs = require('./chunk-ONNGAR6W.cjs');
4
4
 
5
5
 
6
6
 
7
7
 
8
- var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
8
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
13
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
14
14
 
15
15
  // src/commands/setup.ts
16
16
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
17
  var metadata = {
18
18
  command: "/setup",
19
- description: _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
19
+ description: _nullishCoalesce(_chunkRJCZLFHEcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
20
20
  implemented: true
21
21
  };
22
22
  async function setup(ctx) {
23
23
  if (ctx.isNonInteractive) {
24
- return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
24
+ return _nullishCoalesce(_chunkRJCZLFHEcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
25
25
  }
26
- const { locale: detectedLocale } = _chunkSY2P3Z5Wcjs.detectLocale.call(void 0, );
26
+ const { locale: detectedLocale } = _chunkRJCZLFHEcjs.detectLocale.call(void 0, );
27
27
  const locale = _nullishCoalesce(detectedLocale, () => ( "en"));
28
- await _chunkSY2P3Z5Wcjs.initI18n.call(void 0, locale);
29
- const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
30
- const workspaceRoot = _chunkX5P6QQOBcjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
28
+ await _chunkRJCZLFHEcjs.initI18n.call(void 0, locale);
29
+ const config = await _chunkCNQKIWIScjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
30
+ const workspaceRoot = _chunkCNQKIWIScjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
31
31
  if (ctx.eventEmitter) {
32
32
  ctx.eventEmitter.emit("setup:started", {
33
33
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -35,7 +35,7 @@ async function setup(ctx) {
35
35
  workspaceRoot
36
36
  });
37
37
  }
38
- const wizard = new (0, _chunkYISPVAXOcjs.SetupWizard)(workspaceRoot, config);
38
+ const wizard = new (0, _chunkONNGAR6Wcjs.SetupWizard)(workspaceRoot, config);
39
39
  const result = await wizard.run({ force: true, skipWelcome: false });
40
40
  if (result.cancelled) {
41
41
  if (ctx.eventEmitter) {
@@ -44,7 +44,7 @@ async function setup(ctx) {
44
44
  step: "user_cancelled"
45
45
  });
46
46
  }
47
- return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
47
+ return _nullishCoalesce(_chunkRJCZLFHEcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
48
48
  }
49
49
  if (!result.success) {
50
50
  if (ctx.eventEmitter) {
@@ -53,10 +53,10 @@ async function setup(ctx) {
53
53
  error: "setup_failed"
54
54
  });
55
55
  }
56
- return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
56
+ return _nullishCoalesce(_chunkRJCZLFHEcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
57
57
  }
58
58
  const newConfig = { ...config, ...result.config };
59
- await _chunkX5P6QQOBcjs.saveConfig.call(void 0, newConfig);
59
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, newConfig);
60
60
  if (ctx.eventEmitter) {
61
61
  const provider = result.config.provider;
62
62
  const providerConfig = provider && result.config[provider];
@@ -70,7 +70,7 @@ async function setup(ctx) {
70
70
  agentsFileCreated: result.agentsFileCreated
71
71
  });
72
72
  }
73
- console.log(_chalk2.default.green(_nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
73
+ console.log(_chalk2.default.green(_nullishCoalesce(_chunkRJCZLFHEcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
74
74
  return null;
75
75
  }
76
76
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-LEZEWKPA.js";
3
+ } from "./chunk-SJQU2ZFR.js";
4
4
 
5
5
  // src/commands/help.ts
6
6
  import chalk from "chalk";
7
7
  import terminalLink from "terminal-link";
8
8
  async function help() {
9
- const { SLASH_COMMANDS } = await import("./slashCommands-53VYIBJU.js");
9
+ const { SLASH_COMMANDS } = await import("./slashCommands-MWOUDSQP.js");
10
10
  console.log(chalk.cyan(`
11
11
  ${t("commands.help.title")}
12
12
  `));
@@ -0,0 +1,156 @@
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; }// src/commands/sessionBranching.ts
2
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
3
+ var FORK_FLAG = "experimental_fork";
4
+ var CLONE_FLAG = "experimental_clone";
5
+ var forkMetadata = {
6
+ command: "/fork",
7
+ description: "branch a new session from the active session or an earlier user message",
8
+ implemented: true
9
+ };
10
+ var cloneMetadata = {
11
+ command: "/clone",
12
+ description: "duplicate the active session branch into a new session",
13
+ implemented: true
14
+ };
15
+ var treeMetadata = {
16
+ command: "/tree",
17
+ description: "show the fork and clone tree for this project",
18
+ implemented: true
19
+ };
20
+ async function forkSession(ctx, args = []) {
21
+ if (!isEnabled(ctx, FORK_FLAG)) {
22
+ return `The /fork command is behind ${FORK_FLAG}. Run /features enable ${FORK_FLAG}, then /fork again. No restart required.`;
23
+ }
24
+ await _optionalChain([ctx, 'access', _ => _.trackFeatureActivation, 'optionalCall', _2 => _2(FORK_FLAG, { surface: "slash_command" })]);
25
+ const target = parseForkArgs(args);
26
+ const sourceSessionId = target.sourceReference ? await ctx.sessionManager.resolveSessionReference(target.sourceReference) : requireCurrentSessionId(ctx, "/fork");
27
+ const forked = await ctx.sessionManager.branchSession(sourceSessionId, {
28
+ type: "fork",
29
+ userMessageOrdinal: target.userMessageOrdinal
30
+ });
31
+ await _optionalChain([ctx, 'access', _3 => _3.restoreSession, 'optionalCall', _4 => _4(forked.metadata.sessionId)]);
32
+ const point = target.userMessageOrdinal ? ` at user message ${target.userMessageOrdinal}` : "";
33
+ return _chalk2.default.green(`Forked session ${forked.metadata.sessionId}${point}. Continue typing to explore this branch.`);
34
+ }
35
+ async function cloneSession(ctx, args = []) {
36
+ if (!isEnabled(ctx, CLONE_FLAG)) {
37
+ return `The /clone command is behind ${CLONE_FLAG}. Run /features enable ${CLONE_FLAG}, then /clone again. No restart required.`;
38
+ }
39
+ await _optionalChain([ctx, 'access', _5 => _5.trackFeatureActivation, 'optionalCall', _6 => _6(CLONE_FLAG, { surface: "slash_command" })]);
40
+ const sourceReference = args[0] ? await ctx.sessionManager.resolveSessionReference(args[0]) : requireCurrentSessionId(ctx, "/clone");
41
+ const cloned = await ctx.sessionManager.branchSession(sourceReference, { type: "clone" });
42
+ await _optionalChain([ctx, 'access', _7 => _7.restoreSession, 'optionalCall', _8 => _8(cloned.metadata.sessionId)]);
43
+ return _chalk2.default.green(`Cloned session ${cloned.metadata.sessionId}. Continue typing in the duplicate branch.`);
44
+ }
45
+ async function sessionTree(ctx) {
46
+ if (!isEnabled(ctx, FORK_FLAG) && !isEnabled(ctx, CLONE_FLAG)) {
47
+ return `The /tree command is behind ${FORK_FLAG} or ${CLONE_FLAG}. Enable one of those features first.`;
48
+ }
49
+ const sessions = await ctx.sessionManager.listSessions(
50
+ ctx.workspaceRoot ? { project: ctx.workspaceRoot } : void 0
51
+ );
52
+ if (sessions.length === 0) {
53
+ return "No sessions found for this project.";
54
+ }
55
+ return formatSessionTree(sessions, _optionalChain([ctx, 'access', _9 => _9.currentSession, 'optionalAccess', _10 => _10.metadata, 'access', _11 => _11.sessionId]));
56
+ }
57
+ async function forkSessionReference(ctx, sourceReference) {
58
+ if (!isEnabled(ctx, FORK_FLAG)) {
59
+ return `The --fork flag is behind ${FORK_FLAG}. Run /features enable ${FORK_FLAG}, then try again.`;
60
+ }
61
+ await _optionalChain([ctx, 'access', _12 => _12.trackFeatureActivation, 'optionalCall', _13 => _13(FORK_FLAG, { surface: "cli_flag" })]);
62
+ const sourceSessionId = await ctx.sessionManager.resolveSessionReference(sourceReference);
63
+ const forked = await ctx.sessionManager.branchSession(sourceSessionId, { type: "fork" });
64
+ await _optionalChain([ctx, 'access', _14 => _14.restoreSession, 'optionalCall', _15 => _15(forked.metadata.sessionId)]);
65
+ return forked.metadata.sessionId;
66
+ }
67
+ function isEnabled(ctx, flag) {
68
+ const localDefault = flag === FORK_FLAG ? _optionalChain([ctx, 'access', _16 => _16.config, 'optionalAccess', _17 => _17.features, 'optionalAccess', _18 => _18.experimentalFork]) === true : _optionalChain([ctx, 'access', _19 => _19.config, 'optionalAccess', _20 => _20.features, 'optionalAccess', _21 => _21.experimentalClone]) === true;
69
+ return _nullishCoalesce(_optionalChain([ctx, 'access', _22 => _22.isFeatureEnabled, 'optionalCall', _23 => _23(flag, localDefault)]), () => ( localDefault));
70
+ }
71
+ function requireCurrentSessionId(ctx, command) {
72
+ const sessionId = _nullishCoalesce(_optionalChain([ctx, 'access', _24 => _24.currentSession, 'optionalAccess', _25 => _25.metadata, 'access', _26 => _26.sessionId]), () => ( _optionalChain([ctx, 'access', _27 => _27.sessionManager, 'access', _28 => _28.getCurrentSession, 'call', _29 => _29(), 'optionalAccess', _30 => _30.metadata, 'access', _31 => _31.sessionId])));
73
+ if (!sessionId) {
74
+ throw new Error(`${command} requires an active session.`);
75
+ }
76
+ return sessionId;
77
+ }
78
+ function parseForkArgs(args) {
79
+ const rest = [...args];
80
+ let userMessageOrdinal;
81
+ const messageFlagIndex = rest.findIndex((arg) => arg === "--message" || arg === "-m");
82
+ if (messageFlagIndex >= 0) {
83
+ const rawValue = rest[messageFlagIndex + 1];
84
+ if (!rawValue) {
85
+ throw new Error("Missing message number after --message.");
86
+ }
87
+ userMessageOrdinal = parseUserMessageOrdinal(rawValue);
88
+ rest.splice(messageFlagIndex, 2);
89
+ }
90
+ if (rest.length === 1 && /^\d+$/.test(rest[0])) {
91
+ userMessageOrdinal = parseUserMessageOrdinal(rest[0]);
92
+ rest.length = 0;
93
+ }
94
+ return {
95
+ sourceReference: rest[0],
96
+ userMessageOrdinal
97
+ };
98
+ }
99
+ function parseUserMessageOrdinal(rawValue) {
100
+ const parsed = Number.parseInt(rawValue, 10);
101
+ if (!Number.isInteger(parsed) || parsed < 1) {
102
+ throw new Error("Fork message must be a positive user-message number.");
103
+ }
104
+ return parsed;
105
+ }
106
+ function formatSessionTree(sessions, currentSessionId) {
107
+ const byParent = /* @__PURE__ */ new Map();
108
+ const roots = [];
109
+ const ids = new Set(sessions.map((session) => session.sessionId));
110
+ for (const session of sessions) {
111
+ const parentId = _optionalChain([session, 'access', _32 => _32.branch, 'optionalAccess', _33 => _33.sourceSessionId]);
112
+ if (parentId && ids.has(parentId)) {
113
+ const siblings = _nullishCoalesce(byParent.get(parentId), () => ( []));
114
+ siblings.push(session);
115
+ byParent.set(parentId, siblings);
116
+ } else {
117
+ roots.push(session);
118
+ }
119
+ }
120
+ const sortByCreated = (items) => [...items].sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
121
+ const lines = ["Session tree:"];
122
+ const visit = (session, depth) => {
123
+ const marker = session.sessionId === currentSessionId ? " *" : "";
124
+ const branch = formatBranchLabel(session);
125
+ lines.push(`${" ".repeat(depth)}- ${session.sessionId}${marker}${branch}`);
126
+ for (const child of sortByCreated(_nullishCoalesce(byParent.get(session.sessionId), () => ( [])))) {
127
+ visit(child, depth + 1);
128
+ }
129
+ };
130
+ for (const root of sortByCreated(roots)) {
131
+ visit(root, 0);
132
+ }
133
+ return lines.join("\n");
134
+ }
135
+ function formatBranchLabel(session) {
136
+ if (!session.branch) return "";
137
+ if (session.branch.type === "fork" && session.branch.sourceUserMessageOrdinal) {
138
+ return ` (${session.branch.type} at user message ${session.branch.sourceUserMessageOrdinal})`;
139
+ }
140
+ return ` (${session.branch.type})`;
141
+ }
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ exports.forkMetadata = forkMetadata; exports.cloneMetadata = cloneMetadata; exports.treeMetadata = treeMetadata; exports.forkSession = forkSession; exports.cloneSession = cloneSession; exports.sessionTree = sessionTree; exports.forkSessionReference = forkSessionReference;
152
+ /**
153
+ * @license
154
+ * Copyright 2026 Autohand AI LLC
155
+ * SPDX-License-Identifier: Apache-2.0
156
+ */
@@ -219,7 +219,7 @@ var PlanModeManager = class extends _events.EventEmitter {
219
219
  // src/commands/plan.ts
220
220
  var metadata = {
221
221
  command: "/plan",
222
- description: "toggle plan mode for safe code exploration",
222
+ description: "plan and break down a complex task",
223
223
  implemented: true
224
224
  };
225
225
  var planModeManager = null;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-JB3JCYBJ.js";
3
+ } from "./chunk-NOWCRKP2.js";
4
4
  import {
5
5
  showModal
6
- } from "./chunk-NZ3ZWLUW.js";
6
+ } from "./chunk-LOSXLH7P.js";
7
7
  import {
8
8
  saveConfig
9
- } from "./chunk-IEPLQ47J.js";
9
+ } from "./chunk-CM24K6ZT.js";
10
10
  import {
11
11
  formatFeatureList,
12
12
  formatFeatureStatus,
@@ -14,10 +14,10 @@ import {
14
14
  isLocalFeatureId,
15
15
  listFeatureStates,
16
16
  setFeatureState
17
- } from "./chunk-LANGD5CO.js";
17
+ } from "./chunk-H7HXRRHK.js";
18
18
  import {
19
19
  AUTOHAND_FILES
20
- } from "./chunk-SHRLFX6F.js";
20
+ } from "./chunk-PG2JIU5M.js";
21
21
 
22
22
  // src/features/RemoteFeatureFlagManager.ts
23
23
  import crypto from "crypto";
@@ -25,6 +25,7 @@ import os from "os";
25
25
  import path from "path";
26
26
  import fs from "fs-extra";
27
27
  var FEATURE_FLAG_REQUEST_TIMEOUT_MS = 1500;
28
+ var CLI_CLIENT_TYPE = "cli";
28
29
  function getApiBaseUrl(config) {
29
30
  return (config.api?.baseUrl || config.telemetry?.apiBaseUrl || "https://api.autohand.ai").replace(/\/+$/, "");
30
31
  }
@@ -49,11 +50,14 @@ function parseSnapshot(value) {
49
50
  if (!flag || typeof flag !== "object") continue;
50
51
  const candidate = flag;
51
52
  if (typeof candidate.key !== "string" || typeof candidate.enabled !== "boolean") continue;
53
+ const clientTypes = parseClientTypes(candidate);
54
+ if (!isCliFeatureFlag(candidate, clientTypes)) continue;
52
55
  flags.push({
53
56
  key: candidate.key,
54
57
  enabled: candidate.enabled,
55
58
  reason: typeof candidate.reason === "string" ? candidate.reason : "unknown",
56
- userOverridable: candidate.userOverridable !== false
59
+ userOverridable: candidate.userOverridable !== false,
60
+ ...clientTypes.length > 0 ? { clientTypes } : {}
57
61
  });
58
62
  }
59
63
  return {
@@ -64,6 +68,65 @@ function parseSnapshot(value) {
64
68
  ttlSeconds: typeof value.ttlSeconds === "number" ? value.ttlSeconds : 300
65
69
  };
66
70
  }
71
+ function parseClientTypes(candidate) {
72
+ const values = [
73
+ candidate.clientType,
74
+ candidate.clientTypes,
75
+ candidate.client_type,
76
+ candidate.client_types,
77
+ candidate.clients,
78
+ candidate.targetClients,
79
+ candidate.target_clients
80
+ ];
81
+ const clientTypes = /* @__PURE__ */ new Set();
82
+ for (const value of values) {
83
+ if (typeof value === "string") {
84
+ for (const item of value.split(",")) {
85
+ const clientType = item.trim();
86
+ if (clientType) clientTypes.add(clientType);
87
+ }
88
+ continue;
89
+ }
90
+ if (Array.isArray(value)) {
91
+ for (const item of value) {
92
+ if (typeof item === "string") {
93
+ clientTypes.add(item);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return [...clientTypes].map((clientType) => clientType.toLowerCase());
99
+ }
100
+ function isCliFeatureFlag(candidate, clientTypes) {
101
+ if (isArchivedFeatureFlag(candidate)) {
102
+ return false;
103
+ }
104
+ const reason = typeof candidate.reason === "string" ? candidate.reason.toLowerCase() : "";
105
+ if (reason.includes("client_type mismatch") || reason.includes("client type mismatch")) {
106
+ return false;
107
+ }
108
+ if (clientTypes.length > 0) {
109
+ return clientTypes.includes(CLI_CLIENT_TYPE);
110
+ }
111
+ const platforms = candidate.platforms ?? candidate.targetPlatforms;
112
+ if (Array.isArray(platforms)) {
113
+ const platformValues = platforms.filter((platform) => typeof platform === "string");
114
+ return platformValues.length === 0 || platformValues.includes(process.platform);
115
+ }
116
+ return true;
117
+ }
118
+ function isArchivedFeatureFlag(candidate) {
119
+ if (candidate.archived === true || candidate.deleted === true) {
120
+ return true;
121
+ }
122
+ const archivalFields = [
123
+ candidate.status,
124
+ candidate.state,
125
+ candidate.lifecycle,
126
+ candidate.reason
127
+ ];
128
+ return archivalFields.some((value) => typeof value === "string" && value.toLowerCase().includes("archived"));
129
+ }
67
130
  function isSnapshotFresh(snapshot) {
68
131
  const evaluatedAt = Date.parse(snapshot.evaluatedAt);
69
132
  if (Number.isNaN(evaluatedAt)) return false;
@@ -74,7 +137,7 @@ function createEvaluationUrl(config, deviceId, clientVersion) {
74
137
  const environment = config.features?.environment || "production";
75
138
  const url = new URL(`${getApiBaseUrl(config)}/v1/feature-flags/evaluate`);
76
139
  url.searchParams.set("environment", environment);
77
- url.searchParams.set("clientType", "cli");
140
+ url.searchParams.set("clientType", CLI_CLIENT_TYPE);
78
141
  url.searchParams.set("deviceId", deviceId);
79
142
  url.searchParams.set("cliVersion", clientVersion);
80
143
  url.searchParams.set("platform", process.platform);
@@ -195,15 +258,15 @@ var RemoteFeatureFlagManager = class {
195
258
  // src/commands/features.ts
196
259
  function renderUsage() {
197
260
  return [
198
- "Usage: /features [list|status|enable|disable|refresh]",
261
+ "Usage: /experiments [list|status|enable|disable|refresh]",
199
262
  "",
200
263
  "Commands:",
201
- " /features",
202
- " /features list",
203
- " /features status <feature>",
204
- " /features enable <feature>",
205
- " /features disable <feature>",
206
- " /features refresh"
264
+ " /experiments",
265
+ " /experiments list",
266
+ " /experiments status <feature>",
267
+ " /experiments enable <feature>",
268
+ " /experiments disable <feature>",
269
+ " /experiments refresh"
207
270
  ].join("\n");
208
271
  }
209
272
  function requireConfig(config) {
@@ -243,7 +306,7 @@ async function showInteractiveFeatures(config, remoteSnapshot) {
243
306
  description: feature.description
244
307
  }));
245
308
  await showModal({
246
- title: "Features - space toggles, enter closes",
309
+ title: "Experiments - space toggles, enter closes",
247
310
  options,
248
311
  multiSelect: true,
249
312
  maxVisible: 12,
@@ -342,14 +405,14 @@ async function features(ctx, args = []) {
342
405
  }
343
406
  }
344
407
  var metadata = {
345
- command: "/features",
346
- description: "list and toggle Autohand feature switches",
408
+ command: "/experiments",
409
+ description: "list and toggle Autohand experiments",
347
410
  implemented: true,
348
411
  subcommands: [
349
- { name: "list", description: "List feature switches and current state" },
350
- { name: "status", description: "Show one feature switch" },
351
- { name: "enable", description: "Enable a feature switch" },
352
- { name: "disable", description: "Disable a feature switch" },
412
+ { name: "list", description: "List experiments and current state" },
413
+ { name: "status", description: "Show one experiment" },
414
+ { name: "enable", description: "Enable an experiment" },
415
+ { name: "disable", description: "Disable an experiment" },
353
416
  { name: "refresh", description: "Download remote feature flags from the Autohand API" }
354
417
  ]
355
418
  };