autohand-cli 0.9.0 → 0.9.1

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 (414) hide show
  1. package/README.md +20 -2
  2. package/dist/{AgentRegistry-XPWSVO3Q.js → AgentRegistry-GOV7FN2O.js} +2 -2
  3. package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
  4. package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
  5. package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
  6. package/dist/{HookManager-CWLTFKWO.js → HookManager-2S6AHOC3.js} +1 -1
  7. package/dist/{HookManager-TMAJQU4S.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
  8. package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-AEBMAKXE.js} +4 -4
  9. package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-AF2XL6DS.cjs} +13 -13
  10. package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
  11. package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
  12. package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
  13. package/dist/{MemoryManager-WJMLPWGU.js → MemoryManager-QZRLTUB5.js} +2 -2
  14. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
  15. package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-SJPY3ONR.js} +1 -1
  16. package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-MT7KBNNR.js} +3 -3
  17. package/dist/PermissionManager-URCNP5EC.cjs +11 -0
  18. package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
  19. package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-RB4RVAF6.js} +3 -2
  20. package/dist/SessionManager-2IZGWASQ.cjs +10 -0
  21. package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-554PHVPC.js} +2 -2
  22. package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
  23. package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
  24. package/dist/SubAgent-4GOR2FIJ.js +13 -0
  25. package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
  26. package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
  27. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  28. package/dist/{about-BW3PDZUU.js → about-3USFSGOH.js} +5 -4
  29. package/dist/about-QR52U5DD.cjs +15 -0
  30. package/dist/{acp-VHEL7BOW.js → acp-5Y2W6OZP.js} +129 -90
  31. package/dist/{acp-EOETGAHC.cjs → acp-GSYE75OB.cjs} +135 -96
  32. package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
  33. package/dist/{actionExecutor-33I47NZS.js → actionExecutor-PLQJZLZV.js} +12 -8
  34. package/dist/add-dir-BTAD5OZS.cjs +11 -0
  35. package/dist/{add-dir-VFX7QT4E.js → add-dir-HCERJDBR.js} +2 -2
  36. package/dist/agent-B3EVT7NN.cjs +126 -0
  37. package/dist/agent-SATQ3WZ3.js +126 -0
  38. package/dist/agents-44CRJGM7.cjs +18 -0
  39. package/dist/agents-NN4ZAJ7R.js +18 -0
  40. package/dist/agents-new-6D6G4QS6.cjs +17 -0
  41. package/dist/agents-new-7GAQ25EK.js +17 -0
  42. package/dist/{autoSkill-EFMK6WU6.js → autoSkill-66PKCYTW.js} +2 -2
  43. package/dist/autoSkill-VQLGBELN.cjs +20 -0
  44. package/dist/automode-45DWV4TN.cjs +10 -0
  45. package/dist/{automode-BMYSRM34.js → automode-BUF3VGXU.js} +2 -2
  46. package/dist/chrome-Q2U73HZB.cjs +50 -0
  47. package/dist/chrome-Q54OALOK.cjs +21 -0
  48. package/dist/{chrome-NHJ44WUN.js → chrome-Y3T7EIHG.js} +2 -2
  49. package/dist/chrome-ZNJ46OYW.js +21 -0
  50. package/dist/{chunk-D2OSPLYC.cjs → chunk-22SCR3EV.cjs} +2 -2
  51. package/dist/chunk-26G7YGOW.js +367 -0
  52. package/dist/{chunk-75EDROHL.cjs → chunk-2ESQR35E.cjs} +10 -10
  53. package/dist/{chunk-HKYZSUQ5.js → chunk-2IW5YFJ4.js} +4 -4
  54. package/dist/{chunk-JP3YHTQ2.cjs → chunk-3ICORF7M.cjs} +4 -4
  55. package/dist/{chunk-4256YRCO.cjs → chunk-3UC6DMFI.cjs} +30 -17
  56. package/dist/{chunk-6GUODJKM.cjs → chunk-3UHRCHKB.cjs} +23 -23
  57. package/dist/{chunk-HXJEGMGB.js → chunk-3ZOOH44N.js} +2 -2
  58. package/dist/{chunk-7RFJB75Y.js → chunk-44ZWOBTI.js} +9 -9
  59. package/dist/{chunk-CCVMREXI.js → chunk-4567QNRB.js} +32 -8
  60. package/dist/chunk-45CHNQM6.cjs +517 -0
  61. package/dist/{chunk-6NVAK6CK.js → chunk-4E7SHPNQ.js} +2 -2
  62. package/dist/{chunk-XGMI6IYB.cjs → chunk-4XFHP2SN.cjs} +7 -7
  63. package/dist/chunk-4XVLNOFA.js +360 -0
  64. package/dist/{chunk-D6GZBSOX.js → chunk-575PXZX7.js} +1 -1
  65. package/dist/{chunk-HJIXWGQZ.js → chunk-5A7ZL64N.js} +1 -1
  66. package/dist/{chunk-ROLA6EFO.cjs → chunk-5GCQ5UMV.cjs} +14 -14
  67. package/dist/{chunk-3DDL2E55.cjs → chunk-5SFV2NCY.cjs} +10 -10
  68. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  69. package/dist/{chunk-PDHT7LQS.cjs → chunk-63ANVAOJ.cjs} +3 -3
  70. package/dist/{chunk-GWO66KBI.js → chunk-65LRPW5W.js} +1 -1
  71. package/dist/{chunk-IAGCRVJ3.js → chunk-6AYJCDTA.js} +14 -9
  72. package/dist/{chunk-A7HHCIDQ.js → chunk-6HF6XSCC.js} +2 -2
  73. package/dist/{chunk-47PHDKNW.cjs → chunk-6JWCGQJU.cjs} +6 -6
  74. package/dist/chunk-6OECOAK5.cjs +360 -0
  75. package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
  76. package/dist/{chunk-37M5UM6I.js → chunk-7IRQ7JEH.js} +1 -1
  77. package/dist/chunk-7MY4JHER.js +27 -0
  78. package/dist/{chunk-ZR46OJNZ.js → chunk-7PJKTSRN.js} +3 -3
  79. package/dist/{chunk-AC7DZ6SK.cjs → chunk-7PT646AL.cjs} +3 -3
  80. package/dist/{chunk-TKKN34TV.js → chunk-7WAUCLLQ.js} +3 -3
  81. package/dist/{chunk-DPSIGY6L.cjs → chunk-7XTUL7ZD.cjs} +9 -9
  82. package/dist/{chunk-GBMDFWJX.cjs → chunk-AE2ILW25.cjs} +13 -13
  83. package/dist/{chunk-BQ22N3TX.cjs → chunk-AOKXYGBQ.cjs} +27 -22
  84. package/dist/{chunk-REMGR23V.cjs → chunk-AQ5PVHOC.cjs} +7 -2
  85. package/dist/{chunk-AUYSIEVV.cjs → chunk-AZ47LKD5.cjs} +3 -3
  86. package/dist/chunk-B76FJKEJ.cjs +184 -0
  87. package/dist/{chunk-XV2HXRHX.js → chunk-BP37FVBM.js} +3 -3
  88. package/dist/{chunk-JIMSII7R.js → chunk-C46B72VK.js} +57 -10
  89. package/dist/{chunk-L4F7SUYL.js → chunk-C5QIQQ37.js} +3 -3
  90. package/dist/{chunk-AUFNACED.js → chunk-CCIDL4SA.js} +7094 -6126
  91. package/dist/{chunk-OV3PVUYN.js → chunk-CECH6QQP.js} +11 -11
  92. package/dist/{chunk-CH2J4PVE.cjs → chunk-CK4HAHVY.cjs} +13 -13
  93. package/dist/{chunk-Q2IL4DDI.cjs → chunk-CO2AADYU.cjs} +19 -14
  94. package/dist/{chunk-7JLT2VNW.cjs → chunk-CRTCZ4WL.cjs} +7533 -6565
  95. package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
  96. package/dist/{chunk-DIZTWFVR.cjs → chunk-D546G7DA.cjs} +209 -55
  97. package/dist/{chunk-7HPWMALN.js → chunk-DGBPWODD.js} +1 -1
  98. package/dist/{chunk-RBZ7AFX7.cjs → chunk-DHUQZ53B.cjs} +2 -2
  99. package/dist/{chunk-U4C3HW6P.js → chunk-DNSD7DVJ.js} +2 -2
  100. package/dist/{chunk-SOLBYSLY.cjs → chunk-DSSCERHI.cjs} +2 -2
  101. package/dist/{chunk-OPNI6O7F.cjs → chunk-EA2MS25U.cjs} +4 -4
  102. package/dist/{chunk-E46DJH5S.js → chunk-EEHWALXA.js} +94 -3
  103. package/dist/{chunk-CFFE4VA3.js → chunk-EYHKL4QC.js} +1 -1
  104. package/dist/{chunk-FGT6KK6T.js → chunk-FBQJZKFX.js} +3 -3
  105. package/dist/{chunk-I24CWKKK.js → chunk-FFHSCM5M.js} +3 -3
  106. package/dist/{chunk-TXPSTCG7.cjs → chunk-GAOPJ5S3.cjs} +8 -8
  107. package/dist/{chunk-ARBEHFCG.js → chunk-GSDV75A5.js} +1 -1
  108. package/dist/{chunk-Z3XSSF7B.js → chunk-H426KOGY.js} +1 -1
  109. package/dist/{chunk-WRTXCQ3V.cjs → chunk-HC2Q6A3E.cjs} +858 -182
  110. package/dist/{chunk-IGMPWJ2I.cjs → chunk-HG3ZASBH.cjs} +8 -8
  111. package/dist/chunk-HK5A54AV.cjs +280 -0
  112. package/dist/{chunk-2HOLOHVK.js → chunk-HSWWM6AM.js} +136 -15
  113. package/dist/chunk-HTU4W3GB.js +183 -0
  114. package/dist/{chunk-5CMYEM3R.cjs → chunk-HVCIB4SW.cjs} +3 -3
  115. package/dist/chunk-HXHE2KAO.js +385 -0
  116. package/dist/{chunk-NMQ47RCG.js → chunk-HZWU6IO3.js} +5 -2
  117. package/dist/{chunk-ZPD2AO3U.js → chunk-I2ZK3AOD.js} +2 -2
  118. package/dist/{chunk-3UT7R3XV.js → chunk-IEPLQ47J.js} +61 -5
  119. package/dist/{chunk-3PXKRVCW.js → chunk-JB3JCYBJ.js} +7 -2
  120. package/dist/chunk-JCUHCH37.cjs +247 -0
  121. package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
  122. package/dist/{chunk-WZV6UVPY.js → chunk-JMJRFSNJ.js} +1 -1
  123. package/dist/{chunk-QKP772OZ.js → chunk-JPFRI4L4.js} +756 -80
  124. package/dist/{chunk-MOJ7ADW4.cjs → chunk-JV5HVCHU.cjs} +2 -2
  125. package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
  126. package/dist/{chunk-E26KKI46.cjs → chunk-KASXKDF2.cjs} +3 -1
  127. package/dist/chunk-KJ26T7GM.cjs +367 -0
  128. package/dist/chunk-KM7R5YPS.cjs +385 -0
  129. package/dist/{chunk-5F6ZKSHO.js → chunk-KMP6Y3LJ.js} +1 -1
  130. package/dist/chunk-KWXGDSYT.js +184 -0
  131. package/dist/{chunk-LDJQ5QHG.cjs → chunk-L46OUKW5.cjs} +15 -15
  132. package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
  133. package/dist/chunk-LANGD5CO.js +280 -0
  134. package/dist/{chunk-CBFH2J3O.js → chunk-LEZEWKPA.js} +150 -7
  135. package/dist/{chunk-FQAVGSPW.js → chunk-M5DK524Z.js} +2 -2
  136. package/dist/{chunk-7LWQCE4Y.cjs → chunk-M7B7RRBK.cjs} +72 -25
  137. package/dist/{chunk-BWF4VDYE.js → chunk-MANJ67D3.js} +2 -2
  138. package/dist/{chunk-PHJO5YAL.cjs → chunk-MGNXABSU.cjs} +9 -9
  139. package/dist/{chunk-62RTC3XX.js → chunk-MMKZSJUN.js} +1 -1
  140. package/dist/{chunk-3KLSNNRW.cjs → chunk-MQQH4XQH.cjs} +4 -4
  141. package/dist/{chunk-HS4USDND.cjs → chunk-MZN6JBRZ.cjs} +2 -2
  142. package/dist/{chunk-AT7OWLY5.js → chunk-NB6M6ESM.js} +1 -1
  143. package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
  144. package/dist/chunk-NQZH5CR2.cjs +468 -0
  145. package/dist/{chunk-2CGE7ZV3.cjs → chunk-NV6LCD2I.cjs} +119 -28
  146. package/dist/chunk-NVATU4V6.cjs +44 -0
  147. package/dist/{chunk-DLP436GI.js → chunk-NZ3ZWLUW.js} +2 -2
  148. package/dist/{chunk-IEXKKKOF.cjs → chunk-NZ7GCK7Y.cjs} +23 -23
  149. package/dist/{chunk-MQESBFBZ.cjs → chunk-NZQFKXM3.cjs} +21 -20
  150. package/dist/{chunk-QQ7PANOP.js → chunk-O5GI6SR3.js} +1 -1
  151. package/dist/{chunk-J5ADZN6V.cjs → chunk-OCATAKXV.cjs} +20 -20
  152. package/dist/{chunk-JYKPWK5O.js → chunk-OIGYWOL6.js} +1 -1
  153. package/dist/{chunk-O6TQP7U7.cjs → chunk-ONVYXTUT.cjs} +3 -3
  154. package/dist/{chunk-MPULXVC4.cjs → chunk-OV3T5MUH.cjs} +11 -11
  155. package/dist/{chunk-DMRXF5DU.js → chunk-P4FUTSVK.js} +3 -3
  156. package/dist/{chunk-MXVIDIC6.cjs → chunk-P6SLT2F4.cjs} +2 -2
  157. package/dist/{chunk-BL2UC7HC.js → chunk-PGFLPURU.js} +1 -1
  158. package/dist/{chunk-CWINVFRI.cjs → chunk-PIXQ2AVM.cjs} +17 -17
  159. package/dist/{chunk-MO4KP6XS.cjs → chunk-PNIAIOMZ.cjs} +5 -5
  160. package/dist/{chunk-HQWQZML5.cjs → chunk-PQBYFEBL.cjs} +2 -2
  161. package/dist/{chunk-UGFVM77J.cjs → chunk-PSAH4ZQB.cjs} +2 -2
  162. package/dist/{chunk-Y3M2DABP.js → chunk-PTTZI4QZ.js} +4 -4
  163. package/dist/{chunk-Q6AC3PHY.cjs → chunk-PY73W5MQ.cjs} +4 -4
  164. package/dist/{chunk-B5CGDNMR.js → chunk-PZZMIYII.js} +3 -3
  165. package/dist/{chunk-VRMZO6TB.js → chunk-Q3BS6FPM.js} +7 -6
  166. package/dist/chunk-QBYGMMDD.js +517 -0
  167. package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
  168. package/dist/{chunk-3S563FNF.cjs → chunk-QQ64HEHP.cjs} +31 -31
  169. package/dist/{chunk-TBOLJDUG.js → chunk-QRQF3556.js} +12 -7
  170. package/dist/{chunk-ZZ63NW7A.cjs → chunk-RBXBH6EB.cjs} +17 -17
  171. package/dist/{chunk-PUD76XQT.cjs → chunk-RFUKZIJF.cjs} +5 -5
  172. package/dist/chunk-RS2E32YB.js +71 -0
  173. package/dist/{chunk-7MU7LWF3.cjs → chunk-S5JNQIGL.cjs} +5 -5
  174. package/dist/{chunk-BFQDQRDE.js → chunk-S5QKRA2V.js} +2 -2
  175. package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
  176. package/dist/{chunk-PQLKJCIE.js → chunk-SDLY4X3G.js} +2 -2
  177. package/dist/{chunk-VKBIE6I6.js → chunk-SFFEKZGC.js} +2 -2
  178. package/dist/{chunk-TWQDAUZU.js → chunk-SHRLFX6F.js} +3 -1
  179. package/dist/{chunk-UEIXJG45.js → chunk-SNDDZG5H.js} +88 -72
  180. package/dist/{chunk-AOKCI722.cjs → chunk-SOVR7S3T.cjs} +2 -2
  181. package/dist/{chunk-M4KNC5BQ.js → chunk-SPQ7QIQ6.js} +1 -1
  182. package/dist/{chunk-QCHIDZBA.js → chunk-SRMGWMQO.js} +1 -1
  183. package/dist/{chunk-ZHJ7JGME.cjs → chunk-SVVP4UUZ.cjs} +11 -11
  184. package/dist/{chunk-CHI52KFR.cjs → chunk-SY2P3Z5W.cjs} +150 -7
  185. package/dist/chunk-SZD45IDG.js +468 -0
  186. package/dist/{chunk-VGEV44V2.cjs → chunk-TE4SYTWR.cjs} +189 -28
  187. package/dist/{chunk-YV63VW4K.js → chunk-TR6NECEZ.js} +1 -1
  188. package/dist/{chunk-GZ6DV2UG.js → chunk-TYBPTKFT.js} +1 -1
  189. package/dist/{chunk-5VHP6HDQ.js → chunk-U2QUMKCB.js} +1 -1
  190. package/dist/{chunk-6HH236FV.cjs → chunk-U6PLSPMD.cjs} +2 -2
  191. package/dist/{chunk-EZJHLOWP.js → chunk-UWZ4G3SQ.js} +20 -7
  192. package/dist/{chunk-UXLW45ZE.cjs → chunk-V3SZLWEQ.cjs} +25 -90
  193. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  194. package/dist/{chunk-2QL6MNXG.js → chunk-V5ELP2XE.js} +6 -6
  195. package/dist/{chunk-N6O3XUZ2.cjs → chunk-VKOXFT4L.cjs} +2 -2
  196. package/dist/{chunk-J2K57QM7.cjs → chunk-VLGGMQUN.cjs} +6 -6
  197. package/dist/{chunk-HSCUPEA4.cjs → chunk-VQHSYAPZ.cjs} +11 -11
  198. package/dist/{chunk-DEQVRSV5.cjs → chunk-W5QLA6WP.cjs} +8 -8
  199. package/dist/chunk-WJYFLQ7G.cjs +27 -0
  200. package/dist/{chunk-MX75JYIY.js → chunk-WNJXIACY.js} +3 -3
  201. package/dist/{chunk-OHWMWKJQ.js → chunk-WPE2XHVX.js} +1 -1
  202. package/dist/{chunk-O64I2GYI.js → chunk-X3TI5TJJ.js} +1 -1
  203. package/dist/{chunk-46C73ZKK.cjs → chunk-X5P6QQOB.cjs} +66 -10
  204. package/dist/{chunk-TJNBASFD.cjs → chunk-X7XMITIL.cjs} +8 -8
  205. package/dist/{chunk-E6GFD7VR.cjs → chunk-XNIMSVS6.cjs} +11 -11
  206. package/dist/{chunk-WGLBC5AY.cjs → chunk-XW3XCK4E.cjs} +4 -4
  207. package/dist/{chunk-OM24WXEE.js → chunk-XZVDYC5U.js} +1 -1
  208. package/dist/{chunk-UWFG2R2I.cjs → chunk-Y5BDE24P.cjs} +33 -9
  209. package/dist/{chunk-GGLKUENP.js → chunk-YC5OBZQU.js} +161 -7
  210. package/dist/{chunk-JJ4KA7HK.cjs → chunk-YISPVAXO.cjs} +371 -250
  211. package/dist/{chunk-SWCQM52V.js → chunk-YQDI753V.js} +4 -4
  212. package/dist/{chunk-KNTUI4TZ.cjs → chunk-YWH55BWK.cjs} +9 -6
  213. package/dist/{chunk-ACDQGA4Z.js → chunk-YXM6SA7P.js} +7 -72
  214. package/dist/{chunk-3GUEUCZK.js → chunk-ZNGRLCFQ.js} +2 -0
  215. package/dist/{chunk-LQBONA55.cjs → chunk-ZNYZB7XY.cjs} +2 -0
  216. package/dist/{chunk-XIVFAD2L.js → chunk-ZPLCAXJW.js} +172 -11
  217. package/dist/chunk-ZUYYHKQA.js +44 -0
  218. package/dist/clear-QJXU25IF.cjs +12 -0
  219. package/dist/{clear-OFLFQ3MR.js → clear-Y5TO3RZA.js} +2 -2
  220. package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
  221. package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-RVL4STPS.js} +6 -6
  222. package/dist/completion-JX4T2ONW.cjs +17 -0
  223. package/dist/{completion-PT4VM2H2.js → completion-SE3XYG74.js} +5 -5
  224. package/dist/config-3224PRW4.cjs +21 -0
  225. package/dist/{config-R4O7GBTY.js → config-7KPHKFTP.js} +4 -3
  226. package/dist/{constants-HVCHVQAF.js → constants-EJFAWJQI.js} +1 -1
  227. package/dist/constants-MCCGUU5F.cjs +21 -0
  228. package/dist/{export-3PK3VFCE.js → export-BJVIDZC4.js} +5 -5
  229. package/dist/export-KU4557HK.cjs +15 -0
  230. package/dist/feature-K3LG5IJP.cjs +14 -0
  231. package/dist/feature-V4JF5TNJ.js +14 -0
  232. package/dist/features-5OJTLKS7.js +23 -0
  233. package/dist/features-VCBJQXCX.cjs +23 -0
  234. package/dist/feedback-D4437VE4.js +18 -0
  235. package/dist/feedback-VZPEHGFY.cjs +18 -0
  236. package/dist/go-X4E6BCD6.js +12 -0
  237. package/dist/go-XREVFS5I.cjs +12 -0
  238. package/dist/goal-4M3J6JS2.cjs +16 -0
  239. package/dist/goal-EI66BV7W.js +16 -0
  240. package/dist/help-GGFS7WHY.cjs +12 -0
  241. package/dist/{help-X3OAZ3CY.js → help-MLIROWKM.js} +2 -2
  242. package/dist/{history-YKFPHBJN.js → history-GQJ6RZD6.js} +2 -2
  243. package/dist/history-J4LUIOSI.cjs +14 -0
  244. package/dist/hooks-FSRIUS6A.cjs +18 -0
  245. package/dist/{hooks-7TA4PIIB.js → hooks-PPFHCF7T.js} +6 -6
  246. package/dist/i18n-CI6VFXL5.cjs +33 -0
  247. package/dist/{i18n-2KBUU7XL.js → i18n-Q7UZJRPL.js} +1 -1
  248. package/dist/ide-BUSVE54P.js +15 -0
  249. package/dist/ide-YR27BPGM.cjs +15 -0
  250. package/dist/{import-4CHYLS4K.js → import-3VBKI6BN.js} +3 -3
  251. package/dist/{import-I7T4ZHYL.cjs → import-C7S6UJMW.cjs} +3 -3
  252. package/dist/import-DBK4OCDF.cjs +10 -0
  253. package/dist/{import-JWPYKXCZ.js → import-U47DXCA7.js} +2 -2
  254. package/dist/index.cjs +267 -170
  255. package/dist/index.d.cts +2 -0
  256. package/dist/index.d.ts +2 -0
  257. package/dist/index.js +165 -68
  258. package/dist/init-OXTYS72D.cjs +10 -0
  259. package/dist/{init-262MWZV4.js → init-Q2O4R42R.js} +2 -2
  260. package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-3CFZDUBH.js} +2 -2
  261. package/dist/inputPrompt-JMACL4EB.cjs +90 -0
  262. package/dist/language-EK3M6UBV.cjs +22 -0
  263. package/dist/language-Q3RUGGOW.js +22 -0
  264. package/dist/learn-3DSX7DYG.cjs +23 -0
  265. package/dist/learn-OPOH5L43.js +23 -0
  266. package/dist/login-GST7MWXJ.cjs +27 -0
  267. package/dist/login-Q7DZKAX4.js +27 -0
  268. package/dist/logout-2G7OUK7I.cjs +24 -0
  269. package/dist/logout-FNBBL2UI.js +24 -0
  270. package/dist/{mcp-5O6PUL4G.js → mcp-AH3MMUBU.js} +7 -6
  271. package/dist/mcp-DW7R63IB.cjs +21 -0
  272. package/dist/{mcp-install-6XWXLFVY.js → mcp-install-222PCKSW.js} +9 -8
  273. package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-IA4ZS2SV.cjs} +14 -13
  274. package/dist/memory-6NX3DAIY.cjs +10 -0
  275. package/dist/{memory-Q54CESNM.js → memory-VB46T5H3.js} +2 -2
  276. package/dist/model-64NAELFS.cjs +10 -0
  277. package/dist/{model-6AJ77PJG.js → model-SJJG64AM.js} +2 -2
  278. package/dist/new-DU5SOOOY.cjs +12 -0
  279. package/dist/{new-ZXHEWC2S.js → new-ERZ5C6CN.js} +2 -2
  280. package/dist/onboarding-2U2BV2KE.cjs +36 -0
  281. package/dist/{onboarding-JYNMK6NI.js → onboarding-ZQXMPSMJ.js} +14 -13
  282. package/dist/{permissions-YHJMVA6L.js → permissions-7ACNFK7A.js} +2 -2
  283. package/dist/permissions-GSNNV7RJ.cjs +10 -0
  284. package/dist/{quit-GWTNHQSP.js → quit-WY6T267G.js} +2 -2
  285. package/dist/quit-XIRE2KRE.cjs +10 -0
  286. package/dist/{registry-34GL6BNJ.js → registry-4DXUDKJN.js} +1 -1
  287. package/dist/{registry-V24W7YK6.cjs → registry-UEO3ETZ7.cjs} +21 -21
  288. package/dist/resume-RQZ3WXBP.cjs +17 -0
  289. package/dist/resume-XSXZMDMD.js +17 -0
  290. package/dist/{rpc-S3DGW6KV.js → rpc-XH7QLN4H.js} +251 -107
  291. package/dist/{rpc-NPS3PU4O.cjs → rpc-YF54T7JU.cjs} +347 -203
  292. package/dist/search-VXXFGZWU.cjs +21 -0
  293. package/dist/search-YAWGX7P7.js +21 -0
  294. package/dist/{sessions-IYAXMK23.js → sessions-NJYHJOEL.js} +2 -2
  295. package/dist/sessions-OSG3UJEZ.cjs +10 -0
  296. package/dist/settings-SO2UIGWV.cjs +42 -0
  297. package/dist/{settings-55BNW6BF.js → settings-ZXUQH3DO.js} +17 -8
  298. package/dist/setup-KG7EGKF5.js +30 -0
  299. package/dist/setup-RSOPCQ57.cjs +30 -0
  300. package/dist/share-WFAGZ5PY.js +17 -0
  301. package/dist/share-ZU3SGACF.cjs +17 -0
  302. package/dist/skills-KBVAQAD2.cjs +29 -0
  303. package/dist/{skills-VWOMV3CR.js → skills-NBTNDVAY.js} +8 -8
  304. package/dist/{skills-MVIZNHT4.js → skills-OB6RDW7D.js} +9 -9
  305. package/dist/{skills-GGMZOVIE.cjs → skills-ZROBG3RZ.cjs} +10 -10
  306. package/dist/{skills-install-QBA5RCV6.js → skills-install-BHTIEMKH.js} +7 -7
  307. package/dist/{skills-install-VTAMCNNY.cjs → skills-install-ILX6QVEF.cjs} +15 -15
  308. package/dist/skills-new-B45VQ2PP.cjs +18 -0
  309. package/dist/skills-new-YMRP2HNO.js +18 -0
  310. package/dist/slashCommands-53VYIBJU.js +105 -0
  311. package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
  312. package/dist/status-CQ2IUOVK.cjs +24 -0
  313. package/dist/status-E7IGNVPC.js +24 -0
  314. package/dist/{sync-7OKF6636.js → sync-7C25MOT2.js} +6 -5
  315. package/dist/{sync-7BILIQHP.js → sync-OCJN4ZSO.js} +3 -3
  316. package/dist/sync-XRP46IVG.cjs +40 -0
  317. package/dist/sync-ZMFVE7T4.cjs +22 -0
  318. package/dist/{teammate-J6PHGL23.cjs → teammate-D77B6QRT.cjs} +9 -8
  319. package/dist/{teammate-GZQSCIMS.js → teammate-EZCMHOIL.js} +8 -7
  320. package/dist/templates-ARG2VRWW.cjs +11 -0
  321. package/dist/templates-UGVZV3KJ.js +11 -0
  322. package/dist/theme-KKRDE6P7.cjs +22 -0
  323. package/dist/theme-XF7XIWBQ.js +22 -0
  324. package/dist/ui/questionModal.cjs +6 -6
  325. package/dist/ui/questionModal.js +5 -5
  326. package/dist/{undo-SZEHLX7X.js → undo-GNUTFXCW.js} +2 -2
  327. package/dist/undo-U4KN7QQM.cjs +10 -0
  328. package/dist/usage-QSTNSDAO.js +24 -0
  329. package/dist/usage-YDEMQBNQ.cjs +24 -0
  330. package/package.json +7 -2
  331. package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
  332. package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
  333. package/dist/LearnAdvisor-46FG2XIP.js +0 -9
  334. package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
  335. package/dist/MemoryManager-34L4YOKA.cjs +0 -8
  336. package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
  337. package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
  338. package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
  339. package/dist/SessionManager-WAPTFMDO.cjs +0 -10
  340. package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
  341. package/dist/SubAgent-FDIH3DXB.js +0 -11
  342. package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
  343. package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
  344. package/dist/about-FCAX37YC.cjs +0 -14
  345. package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
  346. package/dist/add-dir-7SS6KSH5.cjs +0 -11
  347. package/dist/agent-DMRUFU4M.cjs +0 -116
  348. package/dist/agent-WCJEYQJT.js +0 -116
  349. package/dist/agents-CHROO3VU.cjs +0 -17
  350. package/dist/agents-UVDUL65K.js +0 -17
  351. package/dist/agents-new-AUBWSOXP.js +0 -17
  352. package/dist/agents-new-Y562WC47.cjs +0 -17
  353. package/dist/autoSkill-YOLLFTP2.cjs +0 -20
  354. package/dist/automode-DBLKTTKD.cjs +0 -10
  355. package/dist/chrome-ATC4OO5I.cjs +0 -20
  356. package/dist/chrome-O62WXV7F.js +0 -20
  357. package/dist/chrome-XHJLCO4M.cjs +0 -50
  358. package/dist/chunk-6XVVIY54.cjs +0 -256
  359. package/dist/chunk-AU6JAGZJ.cjs +0 -231
  360. package/dist/chunk-VDWJMWDF.js +0 -256
  361. package/dist/clear-33TWQ2ES.cjs +0 -12
  362. package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
  363. package/dist/completion-IIZMHXYP.cjs +0 -17
  364. package/dist/config-KL6WU7R2.cjs +0 -20
  365. package/dist/constants-RLMJ5D5P.cjs +0 -21
  366. package/dist/export-WLGNWEMJ.cjs +0 -15
  367. package/dist/feedback-G635NCLJ.js +0 -18
  368. package/dist/feedback-LLMK3TZH.cjs +0 -18
  369. package/dist/help-BAXLP2M2.cjs +0 -12
  370. package/dist/history-6HOJSEMT.cjs +0 -14
  371. package/dist/hooks-XVFU67T2.cjs +0 -18
  372. package/dist/i18n-MUJMKTFM.cjs +0 -33
  373. package/dist/ide-CCQ33PGC.cjs +0 -15
  374. package/dist/ide-VLVFBZ5F.js +0 -15
  375. package/dist/import-J46F54JY.cjs +0 -10
  376. package/dist/init-EE5Y7RBL.cjs +0 -10
  377. package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
  378. package/dist/language-CVLPB7OV.js +0 -21
  379. package/dist/language-ZTWFHUSV.cjs +0 -21
  380. package/dist/learn-PON7I5QS.js +0 -23
  381. package/dist/learn-XLRSVNA3.cjs +0 -23
  382. package/dist/login-223QTGBG.cjs +0 -26
  383. package/dist/login-6IKTBUBY.js +0 -26
  384. package/dist/logout-RN2AG6SI.js +0 -23
  385. package/dist/logout-U3M4FFX7.cjs +0 -23
  386. package/dist/mcp-NUQ76QQB.cjs +0 -20
  387. package/dist/memory-CYMDQ2YC.cjs +0 -10
  388. package/dist/model-IDRCKDML.cjs +0 -10
  389. package/dist/new-7LEWOUF2.cjs +0 -12
  390. package/dist/onboarding-FXX7YHSJ.cjs +0 -35
  391. package/dist/permissions-YBNSANIA.cjs +0 -10
  392. package/dist/quit-B43SJ6E4.cjs +0 -10
  393. package/dist/resume-DYVOQN5L.cjs +0 -16
  394. package/dist/resume-M25UQKOX.js +0 -16
  395. package/dist/search-CPX4PWHP.js +0 -20
  396. package/dist/search-VUF3M4N3.cjs +0 -20
  397. package/dist/sessions-JODKER5D.cjs +0 -10
  398. package/dist/settings-BKTS7OMC.cjs +0 -33
  399. package/dist/setup-IRC5HQG2.js +0 -29
  400. package/dist/setup-MMQ7TWOP.cjs +0 -29
  401. package/dist/share-6JRQECAH.cjs +0 -17
  402. package/dist/share-YM5MJKMO.js +0 -17
  403. package/dist/skills-LWSOKOSH.cjs +0 -29
  404. package/dist/skills-new-GPL46YV2.js +0 -18
  405. package/dist/skills-new-L5BEZN5V.cjs +0 -18
  406. package/dist/slashCommands-FBPCIWM5.cjs +0 -95
  407. package/dist/slashCommands-FCWY5DXW.js +0 -95
  408. package/dist/status-3B5SDZPL.js +0 -17
  409. package/dist/status-TTGRF6NC.cjs +0 -17
  410. package/dist/sync-77CXVVTK.cjs +0 -21
  411. package/dist/sync-EH4K5U3N.cjs +0 -40
  412. package/dist/theme-64BYGJ57.cjs +0 -21
  413. package/dist/theme-YJE6HEON.js +0 -21
  414. package/dist/undo-PRTEGL2J.cjs +0 -10
@@ -0,0 +1,367 @@
1
+ import {
2
+ package_default
3
+ } from "./chunk-JB3JCYBJ.js";
4
+ import {
5
+ showModal
6
+ } from "./chunk-NZ3ZWLUW.js";
7
+ import {
8
+ saveConfig
9
+ } from "./chunk-IEPLQ47J.js";
10
+ import {
11
+ formatFeatureList,
12
+ formatFeatureStatus,
13
+ getFeatureState,
14
+ isLocalFeatureId,
15
+ listFeatureStates,
16
+ setFeatureState
17
+ } from "./chunk-LANGD5CO.js";
18
+ import {
19
+ AUTOHAND_FILES
20
+ } from "./chunk-SHRLFX6F.js";
21
+
22
+ // src/features/RemoteFeatureFlagManager.ts
23
+ import crypto from "crypto";
24
+ import os from "os";
25
+ import path from "path";
26
+ import fs from "fs-extra";
27
+ var FEATURE_FLAG_REQUEST_TIMEOUT_MS = 1500;
28
+ function getApiBaseUrl(config) {
29
+ return (config.api?.baseUrl || config.telemetry?.apiBaseUrl || "https://api.autohand.ai").replace(/\/+$/, "");
30
+ }
31
+ function readDeviceId() {
32
+ try {
33
+ fs.ensureDirSync(path.dirname(AUTOHAND_FILES.deviceId));
34
+ if (fs.existsSync(AUTOHAND_FILES.deviceId)) {
35
+ const existing = fs.readFileSync(AUTOHAND_FILES.deviceId, "utf8").trim();
36
+ if (existing) return existing;
37
+ }
38
+ const next = crypto.randomUUID();
39
+ fs.writeFileSync(AUTOHAND_FILES.deviceId, next);
40
+ return next;
41
+ } catch {
42
+ return crypto.randomUUID();
43
+ }
44
+ }
45
+ function parseSnapshot(value) {
46
+ if (value.success !== true || !Array.isArray(value.flags)) return null;
47
+ const flags = [];
48
+ for (const flag of value.flags) {
49
+ if (!flag || typeof flag !== "object") continue;
50
+ const candidate = flag;
51
+ if (typeof candidate.key !== "string" || typeof candidate.enabled !== "boolean") continue;
52
+ flags.push({
53
+ key: candidate.key,
54
+ enabled: candidate.enabled,
55
+ reason: typeof candidate.reason === "string" ? candidate.reason : "unknown",
56
+ userOverridable: candidate.userOverridable !== false
57
+ });
58
+ }
59
+ return {
60
+ success: true,
61
+ environment: typeof value.environment === "string" ? value.environment : "production",
62
+ flags,
63
+ evaluatedAt: typeof value.evaluatedAt === "string" ? value.evaluatedAt : (/* @__PURE__ */ new Date()).toISOString(),
64
+ ttlSeconds: typeof value.ttlSeconds === "number" ? value.ttlSeconds : 300
65
+ };
66
+ }
67
+ function isSnapshotFresh(snapshot) {
68
+ const evaluatedAt = Date.parse(snapshot.evaluatedAt);
69
+ if (Number.isNaN(evaluatedAt)) return false;
70
+ const ttlMs = Math.max(0, snapshot.ttlSeconds) * 1e3;
71
+ return Date.now() - evaluatedAt < ttlMs;
72
+ }
73
+ function createEvaluationUrl(config, deviceId, clientVersion) {
74
+ const environment = config.features?.environment || "production";
75
+ const url = new URL(`${getApiBaseUrl(config)}/v1/feature-flags/evaluate`);
76
+ url.searchParams.set("environment", environment);
77
+ url.searchParams.set("clientType", "cli");
78
+ url.searchParams.set("deviceId", deviceId);
79
+ url.searchParams.set("cliVersion", clientVersion);
80
+ url.searchParams.set("platform", process.platform);
81
+ return url;
82
+ }
83
+ async function downloadRemoteFeatureFlags(config, deviceId, clientVersion) {
84
+ const controller = new AbortController();
85
+ const timeout = setTimeout(() => controller.abort(), FEATURE_FLAG_REQUEST_TIMEOUT_MS);
86
+ try {
87
+ const response = await fetch(createEvaluationUrl(config, deviceId, clientVersion), { signal: controller.signal });
88
+ if (!response.ok) return null;
89
+ return parseSnapshot(await response.json());
90
+ } catch {
91
+ return null;
92
+ } finally {
93
+ clearTimeout(timeout);
94
+ }
95
+ }
96
+ async function writeRemoteFeatureFlagCache(snapshot) {
97
+ await fs.ensureDir(path.dirname(AUTOHAND_FILES.featureFlagsCache));
98
+ await fs.writeJson(AUTOHAND_FILES.featureFlagsCache, snapshot, { spaces: 2 });
99
+ }
100
+ async function loadCachedRemoteFeatureFlags() {
101
+ try {
102
+ if (!await fs.pathExists(AUTOHAND_FILES.featureFlagsCache)) {
103
+ return null;
104
+ }
105
+ const data = await fs.readJson(AUTOHAND_FILES.featureFlagsCache);
106
+ return parseSnapshot(data);
107
+ } catch {
108
+ return null;
109
+ }
110
+ }
111
+ async function loadRemoteFeatureFlags(config, options = {}) {
112
+ const cached = await loadCachedRemoteFeatureFlags();
113
+ if (!options.forceRefresh && cached && isSnapshotFresh(cached)) {
114
+ return cached;
115
+ }
116
+ const downloaded = await downloadRemoteFeatureFlags(config, readDeviceId(), package_default.version);
117
+ if (downloaded) {
118
+ await writeRemoteFeatureFlagCache(downloaded);
119
+ return downloaded;
120
+ }
121
+ return options.allowCachedFallback === false ? null : cached;
122
+ }
123
+ var RemoteFeatureFlagManager = class {
124
+ constructor(config) {
125
+ this.config = config;
126
+ this.apiBaseUrl = getApiBaseUrl(config);
127
+ this.environment = config.features?.environment || "production";
128
+ this.clientVersion = package_default.version;
129
+ }
130
+ config;
131
+ snapshot = null;
132
+ deviceId = readDeviceId();
133
+ apiBaseUrl;
134
+ environment;
135
+ clientVersion;
136
+ async refreshFeatureFlags() {
137
+ const downloaded = await downloadRemoteFeatureFlags(this.config, this.deviceId, this.clientVersion);
138
+ if (downloaded) {
139
+ this.snapshot = downloaded;
140
+ await writeRemoteFeatureFlagCache(downloaded);
141
+ return;
142
+ }
143
+ this.snapshot = await loadCachedRemoteFeatureFlags();
144
+ }
145
+ getSnapshot() {
146
+ return this.snapshot;
147
+ }
148
+ isFeatureEnabled(key, localDefault = false) {
149
+ if (isLocalFeatureId(key)) {
150
+ return localDefault;
151
+ }
152
+ const flag = this.snapshot?.flags.find((item) => item.key === key);
153
+ if (!flag) return localDefault;
154
+ if (!flag.enabled) return false;
155
+ return this.config.features?.remoteOverrides?.[key] !== "off";
156
+ }
157
+ async trackFeatureActivation(key, metadata2) {
158
+ void metadata2;
159
+ const flag = this.snapshot?.flags.find((item) => item.key === key);
160
+ if (!flag || !this.isFeatureEnabled(key)) return;
161
+ try {
162
+ await fetch(`${this.apiBaseUrl}/v1/feature-flags/events`, {
163
+ method: "POST",
164
+ headers: { "Content-Type": "application/json" },
165
+ body: JSON.stringify({
166
+ events: [{
167
+ key,
168
+ environment: this.environment,
169
+ eventType: "activation",
170
+ enabled: true,
171
+ reason: flag.reason,
172
+ deviceId: this.deviceId,
173
+ clientType: "cli",
174
+ cliVersion: this.clientVersion,
175
+ platform: process.platform,
176
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
177
+ }]
178
+ })
179
+ });
180
+ } catch {
181
+ }
182
+ }
183
+ getStatus() {
184
+ return {
185
+ apiBaseUrl: this.apiBaseUrl,
186
+ environment: this.environment,
187
+ deviceId: this.deviceId,
188
+ platform: process.platform,
189
+ osVersion: os.release(),
190
+ evaluatedAt: this.snapshot?.evaluatedAt || null
191
+ };
192
+ }
193
+ };
194
+
195
+ // src/commands/features.ts
196
+ function renderUsage() {
197
+ return [
198
+ "Usage: /features [list|status|enable|disable|refresh]",
199
+ "",
200
+ "Commands:",
201
+ " /features",
202
+ " /features list",
203
+ " /features status <feature>",
204
+ " /features enable <feature>",
205
+ " /features disable <feature>",
206
+ " /features refresh"
207
+ ].join("\n");
208
+ }
209
+ function requireConfig(config) {
210
+ return config ?? "Config not available.";
211
+ }
212
+ async function setFeatureEnabled(config, featureId, enabled, remoteSnapshot) {
213
+ if (!featureId) {
214
+ return renderUsage();
215
+ }
216
+ const snapshot = remoteSnapshot === void 0 ? await loadRemoteFeatureFlags(config) : remoteSnapshot;
217
+ const result = setFeatureState(config, featureId, enabled, { remoteSnapshot: snapshot });
218
+ if (!result.ok || !result.feature) {
219
+ return result.error ?? `Unknown feature "${featureId}".`;
220
+ }
221
+ await saveConfig(config);
222
+ if (result.feature.source === "remote") {
223
+ if (enabled) {
224
+ return `Following remote state for ${result.feature.id} (currently ${result.feature.enabled ? "on" : "off"}).`;
225
+ }
226
+ return `Disabled ${result.feature.id} locally. Remote state remains ${result.feature.remoteEnabled ? "on" : "off"}.`;
227
+ }
228
+ const action = enabled ? "Enabled" : "Disabled";
229
+ const restartNote = result.feature.requiresRestart ? " Restart Autohand for this to fully apply." : "";
230
+ return `${action} ${result.feature.id}.${restartNote}`;
231
+ }
232
+ async function showInteractiveFeatures(config, remoteSnapshot) {
233
+ let toggleCount = 0;
234
+ const pendingSaves = [];
235
+ const states = listFeatureStates(config, { remoteSnapshot });
236
+ const initialStates = new Map(states.map((feature) => [feature.id, feature.enabled]));
237
+ const finalStates = new Map(initialStates);
238
+ const restartRequired = new Set(states.filter((feature) => feature.requiresRestart).map((feature) => feature.id));
239
+ const options = states.map((feature) => ({
240
+ label: `${feature.id.padEnd(26)} ${feature.source.padEnd(8)} ${feature.stage.padEnd(12)} ${feature.enabled ? "on" : "off"}`,
241
+ value: feature.id,
242
+ checked: feature.enabled,
243
+ description: feature.description
244
+ }));
245
+ await showModal({
246
+ title: "Features - space toggles, enter closes",
247
+ options,
248
+ multiSelect: true,
249
+ maxVisible: 12,
250
+ onToggle: (option, checked) => {
251
+ const result = setFeatureState(config, option.value, checked, { remoteSnapshot });
252
+ if (!result.ok) {
253
+ return;
254
+ }
255
+ toggleCount += 1;
256
+ finalStates.set(option.value, result.feature?.enabled ?? checked);
257
+ pendingSaves.push(saveConfig(config));
258
+ }
259
+ });
260
+ await Promise.all(pendingSaves);
261
+ if (toggleCount === 0) {
262
+ return null;
263
+ }
264
+ const enabled = [];
265
+ const disabled = [];
266
+ for (const [featureId, initiallyEnabled] of initialStates) {
267
+ const finallyEnabled = finalStates.get(featureId);
268
+ if (finallyEnabled === initiallyEnabled || typeof finallyEnabled !== "boolean") {
269
+ continue;
270
+ }
271
+ if (finallyEnabled) {
272
+ enabled.push(featureId);
273
+ } else {
274
+ disabled.push(featureId);
275
+ }
276
+ }
277
+ return formatInteractiveFeatureSummary({
278
+ enabled,
279
+ disabled,
280
+ restartRequired: [...new Set([...enabled, ...disabled].filter((featureId) => restartRequired.has(featureId)))]
281
+ });
282
+ }
283
+ function formatChangedFeatures(action, featureIds) {
284
+ if (featureIds.length === 0) {
285
+ return null;
286
+ }
287
+ if (featureIds.length === 1) {
288
+ return `${action} ${featureIds[0]}.`;
289
+ }
290
+ return `${action} ${featureIds.length} features: ${featureIds.join(", ")}.`;
291
+ }
292
+ function formatInteractiveFeatureSummary(changes) {
293
+ const parts = [
294
+ formatChangedFeatures("Enabled", changes.enabled),
295
+ formatChangedFeatures("Disabled", changes.disabled)
296
+ ].filter((part) => Boolean(part));
297
+ if (changes.restartRequired.length > 0) {
298
+ parts.push(`Restart required for: ${changes.restartRequired.join(", ")}.`);
299
+ }
300
+ return parts.length > 0 ? parts.join(" ") : null;
301
+ }
302
+ async function features(ctx, args = []) {
303
+ const required = requireConfig(ctx.config);
304
+ if (typeof required === "string") {
305
+ return required;
306
+ }
307
+ const subcommand = (args[0] ?? "").toLowerCase();
308
+ const featureId = args[1];
309
+ const forceRefresh = subcommand === "refresh";
310
+ const remoteSnapshot = await loadRemoteFeatureFlags(required, {
311
+ forceRefresh,
312
+ allowCachedFallback: !forceRefresh
313
+ });
314
+ switch (subcommand) {
315
+ case "":
316
+ return showInteractiveFeatures(required, remoteSnapshot);
317
+ case "list":
318
+ case "ls":
319
+ if (ctx.interactive) {
320
+ return showInteractiveFeatures(required, remoteSnapshot);
321
+ }
322
+ return formatFeatureList(required, { remoteSnapshot });
323
+ case "status":
324
+ case "show":
325
+ return featureId ? formatFeatureStatus(required, featureId, { remoteSnapshot }) : renderUsage();
326
+ case "enable":
327
+ case "on":
328
+ return setFeatureEnabled(required, featureId, true, remoteSnapshot);
329
+ case "disable":
330
+ case "off":
331
+ return setFeatureEnabled(required, featureId, false, remoteSnapshot);
332
+ case "refresh":
333
+ if (!remoteSnapshot) {
334
+ return "No remote feature flags available. Using local feature switches only.";
335
+ }
336
+ return `Downloaded ${remoteSnapshot.flags.length} remote feature${remoteSnapshot.flags.length === 1 ? "" : "s"} from ${remoteSnapshot.environment}.`;
337
+ default:
338
+ if (getFeatureState(required, subcommand, { remoteSnapshot })) {
339
+ return formatFeatureStatus(required, subcommand, { remoteSnapshot });
340
+ }
341
+ return renderUsage();
342
+ }
343
+ }
344
+ var metadata = {
345
+ command: "/features",
346
+ description: "list and toggle Autohand feature switches",
347
+ implemented: true,
348
+ 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" },
353
+ { name: "refresh", description: "Download remote feature flags from the Autohand API" }
354
+ ]
355
+ };
356
+
357
+ export {
358
+ RemoteFeatureFlagManager,
359
+ setFeatureEnabled,
360
+ features,
361
+ metadata
362
+ };
363
+ /**
364
+ * @license
365
+ * Copyright 2026 Autohand AI LLC
366
+ * SPDX-License-Identifier: Apache-2.0
367
+ */
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCH2J4PVEcjs = require('./chunk-CH2J4PVE.cjs');
5
+ var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
6
6
 
7
7
 
8
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
8
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
9
9
 
10
10
  // src/commands/export.ts
11
11
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -245,7 +245,7 @@ function getSuggestedFilename(metadata2, format) {
245
245
  // src/commands/export.ts
246
246
  var metadata = {
247
247
  command: "/export",
248
- description: _chunkCHI52KFRcjs.t.call(void 0, "commands.export.description"),
248
+ description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.export.description"),
249
249
  implemented: true
250
250
  };
251
251
  async function execute(args, context) {
@@ -265,7 +265,7 @@ async function execute(args, context) {
265
265
  label: `${s.projectName} - ${new Date(s.createdAt).toLocaleString()} (${s.messageCount} messages)`,
266
266
  value: s.sessionId
267
267
  }));
268
- const sessionResult = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
268
+ const sessionResult = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
269
269
  title: "Select a session to export:",
270
270
  options: sessionOptions
271
271
  });
@@ -286,7 +286,7 @@ async function execute(args, context) {
286
286
  { label: "JSON (.json)", value: "json" },
287
287
  { label: "HTML (.html)", value: "html" }
288
288
  ];
289
- const formatResult = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
289
+ const formatResult = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
290
290
  title: "Export format:",
291
291
  options: formatOptions
292
292
  });
@@ -297,17 +297,17 @@ async function execute(args, context) {
297
297
  const format = formatResult.value;
298
298
  const options = {};
299
299
  if (format === "md" || format === "html") {
300
- options.includeToolOutputs = await _chunkCH2J4PVEcjs.showConfirm.call(void 0, {
300
+ options.includeToolOutputs = await _chunkCK4HAHVYcjs.showConfirm.call(void 0, {
301
301
  title: "Include tool outputs?",
302
302
  defaultValue: true
303
303
  });
304
- options.includeToc = await _chunkCH2J4PVEcjs.showConfirm.call(void 0, {
304
+ options.includeToc = await _chunkCK4HAHVYcjs.showConfirm.call(void 0, {
305
305
  title: "Include table of contents?",
306
306
  defaultValue: false
307
307
  });
308
308
  }
309
309
  const suggestedFilename = getSuggestedFilename(metadata2, format);
310
- const filename = await _chunkCH2J4PVEcjs.showInput.call(void 0, {
310
+ const filename = await _chunkCK4HAHVYcjs.showInput.call(void 0, {
311
311
  title: "Save as:",
312
312
  defaultValue: suggestedFilename
313
313
  });
@@ -331,11 +331,11 @@ async function execute(args, context) {
331
331
  try {
332
332
  await saveExport(content, filePath);
333
333
  console.log();
334
- console.log(_chalk2.default.green(_chunkCHI52KFRcjs.t.call(void 0, "commands.export.success", { path: filePath })));
334
+ console.log(_chalk2.default.green(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.export.success", { path: filePath })));
335
335
  console.log(_chalk2.default.gray(` ${messages.length} messages, ${(Buffer.byteLength(content, "utf8") / 1024).toFixed(1)} KB`));
336
336
  console.log();
337
337
  } catch (error) {
338
- console.log(_chalk2.default.red(_chunkCHI52KFRcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
338
+ console.log(_chalk2.default.red(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
339
339
  }
340
340
  }
341
341
 
@@ -4,21 +4,21 @@ import {
4
4
  import {
5
5
  I18nProvider,
6
6
  inkRenderOptions
7
- } from "./chunk-NMQ47RCG.js";
7
+ } from "./chunk-HZWU6IO3.js";
8
8
  import {
9
9
  loadConfig,
10
10
  saveConfig
11
- } from "./chunk-3UT7R3XV.js";
11
+ } from "./chunk-IEPLQ47J.js";
12
12
  import {
13
13
  ThemeProvider,
14
14
  useTheme
15
15
  } from "./chunk-NBGOIFKP.js";
16
16
  import {
17
17
  PROJECT_DIR_NAME
18
- } from "./chunk-TWQDAUZU.js";
18
+ } from "./chunk-SHRLFX6F.js";
19
19
  import {
20
20
  t
21
- } from "./chunk-CBFH2J3O.js";
21
+ } from "./chunk-LEZEWKPA.js";
22
22
 
23
23
  // src/commands/mcp.ts
24
24
  import chalk from "chalk";
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunk7MU7LWF3cjs = require('./chunk-7MU7LWF3.cjs');
3
+ var _chunkS5JNQIGLcjs = require('./chunk-S5JNQIGL.cjs');
4
4
 
5
5
 
6
- var _chunkE26KKI46cjs = require('./chunk-E26KKI46.cjs');
6
+ var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
7
7
 
8
8
  // src/commands/agents-new.ts
9
9
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
@@ -16,7 +16,7 @@ var metadata = {
16
16
  prd: "prd/sub_agents_architecture.md"
17
17
  };
18
18
  async function createAgent(ctx) {
19
- const answers = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, [
19
+ const answers = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, [
20
20
  {
21
21
  type: "input",
22
22
  name: "name",
@@ -83,7 +83,7 @@ function buildPrompt(name, description) {
83
83
  ].filter(Boolean).join("\n");
84
84
  }
85
85
  function getAgentsDir() {
86
- return _chunkE26KKI46cjs.AUTOHAND_PATHS.agents;
86
+ return _chunkKASXKDF2cjs.AUTOHAND_PATHS.agents;
87
87
  }
88
88
  function slugify(input) {
89
89
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "agent";
@@ -1,15 +1,19 @@
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 _chunkNVATU4V6cjs = require('./chunk-NVATU4V6.cjs');
4
+
5
+
3
6
  var _chunkLJD7KR3Lcjs = require('./chunk-LJD7KR3L.cjs');
4
7
 
5
8
 
6
- var _chunkIKUMVBCWcjs = require('./chunk-IKUMVBCW.cjs');
7
9
 
10
+ var _chunkSD3NTC7Dcjs = require('./chunk-SD3NTC7D.cjs');
8
11
 
9
- var _chunkREMGR23Vcjs = require('./chunk-REMGR23V.cjs');
10
12
 
13
+ var _chunkAQ5PVHOCcjs = require('./chunk-AQ5PVHOC.cjs');
11
14
 
12
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
15
+
16
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
13
17
 
14
18
  // src/commands/about.ts
15
19
  var _child_process = require('child_process');
@@ -20,9 +24,9 @@ function getCommitFromAlphaVersion(version) {
20
24
  }
21
25
  function getGitCommit() {
22
26
  if (true) {
23
- return "8cc71ec";
27
+ return "da69f79";
24
28
  }
25
- const alphaCommit = getCommitFromAlphaVersion(_chunkREMGR23Vcjs.package_default.version);
29
+ const alphaCommit = getCommitFromAlphaVersion(_chunkAQ5PVHOCcjs.package_default.version);
26
30
  if (alphaCommit) {
27
31
  return alphaCommit;
28
32
  }
@@ -34,33 +38,42 @@ function getGitCommit() {
34
38
  }
35
39
  function getVersionString() {
36
40
  const commit = getGitCommit();
37
- return commit !== "unknown" ? `${_chunkREMGR23Vcjs.package_default.version} (${commit})` : _chunkREMGR23Vcjs.package_default.version;
41
+ return commit !== "unknown" ? `${_chunkAQ5PVHOCcjs.package_default.version} (${commit})` : _chunkAQ5PVHOCcjs.package_default.version;
38
42
  }
39
- async function about() {
43
+ async function about(ctx = {}) {
40
44
  const theme = _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, );
45
+ const greetingName = _chunkNVATU4V6cjs.getUserGreetingName.call(void 0, ctx.config);
46
+ const terminalColumns = _nullishCoalesce(ctx.terminalColumns, () => ( _chunkSD3NTC7Dcjs.getTerminalColumns.call(void 0, process.stdout)));
41
47
  const lines = [
42
- theme.muted(_chunkIKUMVBCWcjs.ASCII_FRIEND),
48
+ theme.muted(_chunkSD3NTC7Dcjs.renderAutohandLogo.call(void 0, { columns: terminalColumns })),
43
49
  "",
44
- theme.accent(`${_chunkCHI52KFRcjs.t.call(void 0, "commands.about.title")} v${getVersionString()}`),
45
- theme.muted(_chunkCHI52KFRcjs.t.call(void 0, "commands.about.subtitle")),
50
+ theme.accent(`${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.title")} v${getVersionString()}`),
51
+ theme.muted(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.subtitle")),
46
52
  ""
47
53
  ];
54
+ if (greetingName) {
55
+ lines.push(theme.text(`Hey ${greetingName}, here are a few suggestions for what you could do next:`));
56
+ lines.push(theme.text(` \u2022 Review model, context, and account usage: ${theme.accent("/usage")}`));
57
+ lines.push(theme.text(` \u2022 Check current session and runtime status: ${theme.accent("/status")}`));
58
+ lines.push(theme.text(` \u2022 Discover feature toggles available to you: ${theme.accent("/features")}`));
59
+ lines.push("");
60
+ }
48
61
  const websiteUrl = "https://autohand.ai";
49
62
  const githubUrl = "https://github.com/autohandai/";
50
63
  const docsUrl = "https://docs.autohand.ai";
51
64
  const websiteLink = _terminallink2.default.call(void 0, theme.link("autohand.ai"), websiteUrl);
52
65
  const githubLink = _terminallink2.default.call(void 0, theme.link("github.com/autohandai/"), githubUrl);
53
66
  const docsLink = _terminallink2.default.call(void 0, theme.link("docs.autohand.ai"), docsUrl);
54
- lines.push(`${theme.text("\u{1F310}")} ${theme.text(_chunkCHI52KFRcjs.t.call(void 0, "commands.about.website") + ":")} ${websiteLink}`);
55
- lines.push(`${theme.text("\u{1F4E6}")} ${theme.text(_chunkCHI52KFRcjs.t.call(void 0, "commands.about.github") + ":")} ${githubLink}`);
56
- lines.push(`${theme.text("\u{1F4DA}")} ${theme.text(_chunkCHI52KFRcjs.t.call(void 0, "commands.about.docs") + ":")} ${docsLink}`);
67
+ lines.push(`${theme.text("\u{1F310}")} ${theme.text(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.website") + ":")} ${websiteLink}`);
68
+ lines.push(`${theme.text("\u{1F4E6}")} ${theme.text(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.github") + ":")} ${githubLink}`);
69
+ lines.push(`${theme.text("\u{1F4DA}")} ${theme.text(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.docs") + ":")} ${docsLink}`);
57
70
  lines.push("");
58
- lines.push(theme.text(`\u{1F4A1} ${_chunkCHI52KFRcjs.t.call(void 0, "commands.about.contribute")}`));
59
- lines.push(theme.text(` \u2022 ${_chunkCHI52KFRcjs.t.call(void 0, "commands.about.feedback")}: ${theme.accent("/feedback")}`));
60
- lines.push(theme.text(` \u2022 ${_chunkCHI52KFRcjs.t.call(void 0, "commands.about.submitPR")}: ${theme.accent("gh pr create")}`));
71
+ lines.push(theme.text(`\u{1F4A1} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.contribute")}`));
72
+ lines.push(theme.text(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.feedback")}: ${theme.accent("/feedback")}`));
73
+ lines.push(theme.text(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.submitPR")}: ${theme.accent("gh pr create")}`));
61
74
  const issuesUrl = "https://github.com/autohandai/code-cli/issues";
62
75
  const issuesLink = _terminallink2.default.call(void 0, theme.link("github.com/autohandai/code-cli/issues"), issuesUrl);
63
- lines.push(theme.text(` \u2022 ${_chunkCHI52KFRcjs.t.call(void 0, "commands.about.reportIssues")}: ${issuesLink}`));
76
+ lines.push(theme.text(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.about.reportIssues")}: ${issuesLink}`));
64
77
  return lines.join("\n");
65
78
  }
66
79
  var metadata = {