autohand-cli 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/README.md +118 -76
  2. package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
  3. package/dist/AgentRegistry-JBXZUPML.js +18 -0
  4. package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
  5. package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
  6. package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
  7. package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
  8. package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
  9. package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
  10. package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
  11. package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
  12. package/dist/MemoryManager-3A2VRPF2.js +9 -0
  13. package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
  14. package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
  15. package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
  16. package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
  17. package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
  18. package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
  19. package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
  20. package/dist/SessionManager-LGPQIA57.cjs +10 -0
  21. package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
  22. package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
  23. package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
  24. package/dist/SubAgent-2WG4QQB5.cjs +13 -0
  25. package/dist/SubAgent-ICGN23TQ.js +13 -0
  26. package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
  27. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  28. package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
  29. package/dist/about-U2BH7HDR.cjs +15 -0
  30. package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
  31. package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
  32. package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
  33. package/dist/actionExecutor-6NCCORRB.js +28 -0
  34. package/dist/add-dir-KFUHSIR2.cjs +11 -0
  35. package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
  36. package/dist/agent-DUIYLIVN.js +132 -0
  37. package/dist/agent-YYEHGDAK.cjs +132 -0
  38. package/dist/agents-GBGG4CW7.cjs +19 -0
  39. package/dist/agents-ZH34C72F.js +19 -0
  40. package/dist/agents-new-ERXLS7SB.cjs +17 -0
  41. package/dist/agents-new-EVTGPTA4.js +17 -0
  42. package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
  43. package/dist/autoSkill-YL6PN6AV.cjs +20 -0
  44. package/dist/automode-4BJ7FNPL.cjs +10 -0
  45. package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
  46. package/dist/chrome-45ZXHL5N.cjs +22 -0
  47. package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
  48. package/dist/chrome-IFVZRHAT.cjs +50 -0
  49. package/dist/chrome-MYE6DNA2.js +22 -0
  50. package/dist/chunk-24CEJYEG.cjs +579 -0
  51. package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
  52. package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
  53. package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
  54. package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
  55. package/dist/chunk-2WUNHTXL.js +303 -0
  56. package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
  57. package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
  58. package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
  59. package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
  60. package/dist/chunk-3DF3GZQ7.js +277 -0
  61. package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
  62. package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
  63. package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
  64. package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
  65. package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
  66. package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
  67. package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
  68. package/dist/chunk-5CMBAJ6K.js +377 -0
  69. package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
  70. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  71. package/dist/chunk-6AC2TT26.js +156 -0
  72. package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
  73. package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
  74. package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
  75. package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
  76. package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
  77. package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
  78. package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
  79. package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
  80. package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
  81. package/dist/chunk-7TO3PDMV.cjs +324 -0
  82. package/dist/chunk-7UU22RSH.cjs +277 -0
  83. package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
  84. package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
  85. package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
  86. package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
  87. package/dist/chunk-ABR756QN.js +529 -0
  88. package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
  89. package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
  90. package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
  91. package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
  92. package/dist/chunk-B55VCYSQ.cjs +30 -0
  93. package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
  94. package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
  95. package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
  96. package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
  97. package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
  98. package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
  99. package/dist/chunk-CMEZ42F2.cjs +303 -0
  100. package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
  101. package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
  102. package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
  103. package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
  104. package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
  105. package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
  106. package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
  107. package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
  108. package/dist/chunk-ECQD2QC3.cjs +33 -0
  109. package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
  110. package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
  111. package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
  112. package/dist/chunk-EK34UZPB.cjs +40 -0
  113. package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
  114. package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
  115. package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
  116. package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
  117. package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
  118. package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
  119. package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
  120. package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
  121. package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
  122. package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
  123. package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
  124. package/dist/chunk-H7HXRRHK.js +324 -0
  125. package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
  126. package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
  127. package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
  128. package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
  129. package/dist/chunk-HTU4W3GB.js +183 -0
  130. package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
  131. package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
  132. package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
  133. package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
  134. package/dist/chunk-INNXFLDR.cjs +388 -0
  135. package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
  136. package/dist/chunk-JJGDOBFL.js +40 -0
  137. package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
  138. package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
  139. package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
  140. package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
  141. package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
  142. package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
  143. package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
  144. package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
  145. package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
  146. package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
  147. package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
  148. package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
  149. package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
  150. package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
  151. package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
  152. package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
  153. package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
  154. package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
  155. package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
  156. package/dist/chunk-NVATU4V6.cjs +44 -0
  157. package/dist/chunk-O246MKIW.cjs +267 -0
  158. package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
  159. package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
  160. package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
  161. package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
  162. package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
  163. package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
  164. package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
  165. package/dist/chunk-PI27G2ED.cjs +377 -0
  166. package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
  167. package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
  168. package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
  169. package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
  170. package/dist/chunk-QDO4L2A7.cjs +156 -0
  171. package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
  172. package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
  173. package/dist/chunk-QVXMSQOG.js +430 -0
  174. package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
  175. package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
  176. package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
  177. package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
  178. package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
  179. package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
  180. package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
  181. package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
  182. package/dist/chunk-RS2E32YB.js +71 -0
  183. package/dist/chunk-RWKU2X7O.js +388 -0
  184. package/dist/chunk-RZLEGVMH.cjs +565 -0
  185. package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
  186. package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
  187. package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
  188. package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
  189. package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
  190. package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
  191. package/dist/chunk-T4DXP5OP.js +30 -0
  192. package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
  193. package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
  194. package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
  195. package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
  196. package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
  197. package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
  198. package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
  199. package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
  200. package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
  201. package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
  202. package/dist/chunk-UMJYX5KD.js +565 -0
  203. package/dist/chunk-USKYTHDL.cjs +235 -0
  204. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  205. package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
  206. package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
  207. package/dist/chunk-VLUIVJ3J.js +235 -0
  208. package/dist/chunk-VOBINVMV.cjs +430 -0
  209. package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
  210. package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
  211. package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
  212. package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
  213. package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
  214. package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
  215. package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
  216. package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
  217. package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
  218. package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
  219. package/dist/chunk-X53SHYCG.js +27 -0
  220. package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
  221. package/dist/chunk-Y47OJGLB.cjs +27 -0
  222. package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
  223. package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
  224. package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
  225. package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
  226. package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
  227. package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
  228. package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
  229. package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
  230. package/dist/chunk-ZFV4HJA6.js +579 -0
  231. package/dist/chunk-ZHMYTI5D.cjs +529 -0
  232. package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
  233. package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
  234. package/dist/chunk-ZUYYHKQA.js +44 -0
  235. package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
  236. package/dist/clear-AJGXD2BB.cjs +12 -0
  237. package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
  238. package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
  239. package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
  240. package/dist/completion-G7Z436TF.cjs +17 -0
  241. package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
  242. package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
  243. package/dist/config-W2BHT2QE.cjs +22 -0
  244. package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
  245. package/dist/constants-B4W5BT7F.cjs +23 -0
  246. package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
  247. package/dist/export-GFD32UY2.cjs +15 -0
  248. package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
  249. package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
  250. package/dist/feature-KP74CZ3F.cjs +14 -0
  251. package/dist/feature-OPNVMB2E.js +14 -0
  252. package/dist/features-LT55MURX.cjs +24 -0
  253. package/dist/features-ZDIU26WX.js +24 -0
  254. package/dist/feedback-7WTJFQ6S.js +18 -0
  255. package/dist/feedback-CEOJ3453.cjs +18 -0
  256. package/dist/go-2CY5SZNR.js +16 -0
  257. package/dist/go-O2CSQON4.cjs +16 -0
  258. package/dist/goal-DL2N2AWT.cjs +16 -0
  259. package/dist/goal-IJS7VZSG.js +16 -0
  260. package/dist/help-RNOGDEBA.cjs +12 -0
  261. package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
  262. package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
  263. package/dist/history-UUSGX2AL.cjs +14 -0
  264. package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
  265. package/dist/hooks-RWM5UY67.cjs +18 -0
  266. package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
  267. package/dist/i18n-MFAEU5RV.cjs +33 -0
  268. package/dist/ide-6PBTCCUQ.js +15 -0
  269. package/dist/ide-UE3G7NMQ.cjs +15 -0
  270. package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
  271. package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
  272. package/dist/import-NQDNBFUL.cjs +10 -0
  273. package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
  274. package/dist/index.cjs +512 -305
  275. package/dist/index.d.cts +40 -0
  276. package/dist/index.d.ts +40 -0
  277. package/dist/index.js +402 -195
  278. package/dist/init-DX3RDGDT.cjs +10 -0
  279. package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
  280. package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
  281. package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
  282. package/dist/language-I6KXAOXD.js +23 -0
  283. package/dist/language-XMIVOH5E.cjs +23 -0
  284. package/dist/learn-JPVVGTKU.js +23 -0
  285. package/dist/learn-NLSHI2MZ.cjs +23 -0
  286. package/dist/login-NABQYLYC.cjs +28 -0
  287. package/dist/login-XPOVFSWN.js +28 -0
  288. package/dist/logout-HNHCGB4Q.js +25 -0
  289. package/dist/logout-SKGDXJSW.cjs +25 -0
  290. package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
  291. package/dist/mcp-TADZCPJQ.cjs +22 -0
  292. package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
  293. package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
  294. package/dist/memory-GRXFTDIN.cjs +10 -0
  295. package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
  296. package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
  297. package/dist/model-OSD74T7Z.cjs +10 -0
  298. package/dist/new-4NWBOATU.cjs +12 -0
  299. package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
  300. package/dist/onboarding-2U5WE2OA.js +39 -0
  301. package/dist/onboarding-5DZFCO5Q.cjs +39 -0
  302. package/dist/permissions-KY5I6YQ3.cjs +10 -0
  303. package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
  304. package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
  305. package/dist/plan-PYKP652W.cjs +13 -0
  306. package/dist/quit-GSKJL42O.js +14 -0
  307. package/dist/quit-TQSRTBUT.cjs +14 -0
  308. package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
  309. package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
  310. package/dist/resume-4VWJXARX.cjs +17 -0
  311. package/dist/resume-TLHWWWFN.js +17 -0
  312. package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
  313. package/dist/review-XLJEUH5K.cjs +9 -0
  314. package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
  315. package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
  316. package/dist/search-DSX2CY4A.cjs +22 -0
  317. package/dist/search-I3QUDUQL.js +22 -0
  318. package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
  319. package/dist/sessionBranching-FKV4CR36.js +19 -0
  320. package/dist/sessions-3JUOT3ED.cjs +10 -0
  321. package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
  322. package/dist/settings-FT2LZZUV.js +45 -0
  323. package/dist/settings-RL4KNWHB.cjs +45 -0
  324. package/dist/setup-HQEJVOYT.js +32 -0
  325. package/dist/setup-MN54LKOL.cjs +32 -0
  326. package/dist/share-BUAFZNBX.cjs +17 -0
  327. package/dist/share-CGB6MAVJ.js +17 -0
  328. package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
  329. package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
  330. package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
  331. package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
  332. package/dist/skills-OQM7IHAF.cjs +29 -0
  333. package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
  334. package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
  335. package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
  336. package/dist/skills-new-S33NGEU3.js +18 -0
  337. package/dist/skills-new-UVYH53MD.cjs +18 -0
  338. package/dist/slashCommands-MWOUDSQP.js +111 -0
  339. package/dist/slashCommands-XASURUTV.cjs +111 -0
  340. package/dist/squad-PIIYDFVH.cjs +15 -0
  341. package/dist/squad-VHYOVEJP.js +15 -0
  342. package/dist/status-GHFTXQBL.js +25 -0
  343. package/dist/status-WXMIJIU3.cjs +25 -0
  344. package/dist/statusline-2K7AC6ZQ.js +21 -0
  345. package/dist/statusline-GROI4HOC.cjs +21 -0
  346. package/dist/sync-254WF6JI.cjs +42 -0
  347. package/dist/sync-2DIZN4EH.cjs +24 -0
  348. package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
  349. package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
  350. package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
  351. package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
  352. package/dist/templates-ARG2VRWW.cjs +11 -0
  353. package/dist/templates-UGVZV3KJ.js +11 -0
  354. package/dist/theme-MVQDSU47.js +23 -0
  355. package/dist/theme-QAKEYWJG.cjs +23 -0
  356. package/dist/ui/questionModal.cjs +6 -6
  357. package/dist/ui/questionModal.js +5 -5
  358. package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
  359. package/dist/undo-ME6WKUXZ.cjs +10 -0
  360. package/dist/usage-QTKO2YMD.js +25 -0
  361. package/dist/usage-TYNJKVER.cjs +25 -0
  362. package/package.json +10 -4
  363. package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
  364. package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
  365. package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
  366. package/dist/LearnAdvisor-46FG2XIP.js +0 -9
  367. package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
  368. package/dist/MemoryManager-34L4YOKA.cjs +0 -8
  369. package/dist/MemoryManager-WJMLPWGU.js +0 -8
  370. package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
  371. package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
  372. package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
  373. package/dist/SessionManager-WAPTFMDO.cjs +0 -10
  374. package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
  375. package/dist/SubAgent-FDIH3DXB.js +0 -11
  376. package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
  377. package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
  378. package/dist/about-FCAX37YC.cjs +0 -14
  379. package/dist/actionExecutor-33I47NZS.js +0 -24
  380. package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
  381. package/dist/add-dir-7SS6KSH5.cjs +0 -11
  382. package/dist/agent-DMRUFU4M.cjs +0 -116
  383. package/dist/agent-WCJEYQJT.js +0 -116
  384. package/dist/agents-CHROO3VU.cjs +0 -17
  385. package/dist/agents-UVDUL65K.js +0 -17
  386. package/dist/agents-new-AUBWSOXP.js +0 -17
  387. package/dist/agents-new-Y562WC47.cjs +0 -17
  388. package/dist/autoSkill-YOLLFTP2.cjs +0 -20
  389. package/dist/automode-DBLKTTKD.cjs +0 -10
  390. package/dist/chrome-ATC4OO5I.cjs +0 -20
  391. package/dist/chrome-O62WXV7F.js +0 -20
  392. package/dist/chrome-XHJLCO4M.cjs +0 -50
  393. package/dist/chunk-6XVVIY54.cjs +0 -256
  394. package/dist/chunk-AU6JAGZJ.cjs +0 -231
  395. package/dist/chunk-N6O3XUZ2.cjs +0 -23
  396. package/dist/chunk-VDWJMWDF.js +0 -256
  397. package/dist/clear-33TWQ2ES.cjs +0 -12
  398. package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
  399. package/dist/completion-IIZMHXYP.cjs +0 -17
  400. package/dist/config-KL6WU7R2.cjs +0 -20
  401. package/dist/constants-RLMJ5D5P.cjs +0 -21
  402. package/dist/export-WLGNWEMJ.cjs +0 -15
  403. package/dist/feedback-G635NCLJ.js +0 -18
  404. package/dist/feedback-LLMK3TZH.cjs +0 -18
  405. package/dist/help-BAXLP2M2.cjs +0 -12
  406. package/dist/history-6HOJSEMT.cjs +0 -14
  407. package/dist/hooks-XVFU67T2.cjs +0 -18
  408. package/dist/i18n-MUJMKTFM.cjs +0 -33
  409. package/dist/ide-CCQ33PGC.cjs +0 -15
  410. package/dist/ide-VLVFBZ5F.js +0 -15
  411. package/dist/import-J46F54JY.cjs +0 -10
  412. package/dist/init-EE5Y7RBL.cjs +0 -10
  413. package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
  414. package/dist/language-CVLPB7OV.js +0 -21
  415. package/dist/language-ZTWFHUSV.cjs +0 -21
  416. package/dist/learn-PON7I5QS.js +0 -23
  417. package/dist/learn-XLRSVNA3.cjs +0 -23
  418. package/dist/login-223QTGBG.cjs +0 -26
  419. package/dist/login-6IKTBUBY.js +0 -26
  420. package/dist/logout-RN2AG6SI.js +0 -23
  421. package/dist/logout-U3M4FFX7.cjs +0 -23
  422. package/dist/mcp-NUQ76QQB.cjs +0 -20
  423. package/dist/memory-CYMDQ2YC.cjs +0 -10
  424. package/dist/model-IDRCKDML.cjs +0 -10
  425. package/dist/new-7LEWOUF2.cjs +0 -12
  426. package/dist/onboarding-FXX7YHSJ.cjs +0 -35
  427. package/dist/onboarding-JYNMK6NI.js +0 -35
  428. package/dist/permissions-YBNSANIA.cjs +0 -10
  429. package/dist/plan-XEJMOT55.cjs +0 -13
  430. package/dist/quit-B43SJ6E4.cjs +0 -10
  431. package/dist/quit-GWTNHQSP.js +0 -10
  432. package/dist/resume-DYVOQN5L.cjs +0 -16
  433. package/dist/resume-M25UQKOX.js +0 -16
  434. package/dist/review-UWHWQHCB.cjs +0 -9
  435. package/dist/search-CPX4PWHP.js +0 -20
  436. package/dist/search-VUF3M4N3.cjs +0 -20
  437. package/dist/sessions-JODKER5D.cjs +0 -10
  438. package/dist/settings-55BNW6BF.js +0 -33
  439. package/dist/settings-BKTS7OMC.cjs +0 -33
  440. package/dist/setup-IRC5HQG2.js +0 -29
  441. package/dist/setup-MMQ7TWOP.cjs +0 -29
  442. package/dist/share-6JRQECAH.cjs +0 -17
  443. package/dist/share-YM5MJKMO.js +0 -17
  444. package/dist/skills-LWSOKOSH.cjs +0 -29
  445. package/dist/skills-new-GPL46YV2.js +0 -18
  446. package/dist/skills-new-L5BEZN5V.cjs +0 -18
  447. package/dist/slashCommands-FBPCIWM5.cjs +0 -95
  448. package/dist/slashCommands-FCWY5DXW.js +0 -95
  449. package/dist/status-3B5SDZPL.js +0 -17
  450. package/dist/status-TTGRF6NC.cjs +0 -17
  451. package/dist/sync-77CXVVTK.cjs +0 -21
  452. package/dist/sync-EH4K5U3N.cjs +0 -40
  453. package/dist/theme-64BYGJ57.cjs +0 -21
  454. package/dist/theme-YJE6HEON.js +0 -21
  455. package/dist/undo-PRTEGL2J.cjs +0 -10
@@ -0,0 +1,235 @@
1
+ import {
2
+ GoalManager
3
+ } from "./chunk-UMJYX5KD.js";
4
+ import {
5
+ GOAL_FEATURE_DISABLED_MESSAGE,
6
+ resolveGoalFeatureEnabled
7
+ } from "./chunk-X53SHYCG.js";
8
+
9
+ // src/commands/goal.ts
10
+ import chalk from "chalk";
11
+ var metadata = {
12
+ command: "/goal",
13
+ description: "Create, inspect, refine, pause, resume, complete, clear, and queue persistent goals",
14
+ implemented: true,
15
+ subcommands: [
16
+ { name: "writer", description: "Interview the user and draft a stronger goal before creating it" },
17
+ { name: "queue", description: "List queued goals or enqueue a goal" },
18
+ { name: "pause", description: "Pause the current goal" },
19
+ { name: "resume", description: "Resume a paused or queued goal" },
20
+ { name: "complete", description: "Mark the current goal complete" },
21
+ { name: "clear", description: "Clear the current goal" },
22
+ { name: "templates", description: "List reusable .pi-goals templates" }
23
+ ]
24
+ };
25
+ async function goal(ctx, args = []) {
26
+ if (!resolveGoalFeatureEnabled(ctx.config, ctx.isFeatureEnabled)) {
27
+ return GOAL_FEATURE_DISABLED_MESSAGE;
28
+ }
29
+ await ctx.trackFeatureActivation?.("slash_goal", { surface: "slash_command" });
30
+ const manager = new GoalManager(ctx.workspaceRoot);
31
+ const input = args.join(" ").trim();
32
+ if (!input) {
33
+ const snapshot = await manager.getSnapshot();
34
+ if (!snapshot.goal && snapshot.queue.length === 0) {
35
+ return startGoalWriter(ctx);
36
+ }
37
+ return formatSnapshot(snapshot);
38
+ }
39
+ const [subcommand, ...restArgs] = args;
40
+ const rest = restArgs.join(" ").trim();
41
+ switch (subcommand?.toLowerCase()) {
42
+ case "writer":
43
+ case "write":
44
+ case "refine":
45
+ return startGoalWriter(ctx, rest);
46
+ case "queue":
47
+ return handleQueue(manager, rest);
48
+ case "pause":
49
+ return formatMutation(await manager.updateGoal({ status: "paused" }));
50
+ case "resume": {
51
+ const snapshot = await manager.getSnapshot();
52
+ if (!snapshot.goal && snapshot.queue.length > 0) {
53
+ const started = await manager.startQueuedGoal();
54
+ if (started.ok && started.goal) {
55
+ queueGoalContinuation(ctx, started.goal.objective);
56
+ }
57
+ return formatMutation(started);
58
+ }
59
+ const resumed = await manager.updateGoal({ status: "active" });
60
+ if (resumed.ok && resumed.goal) {
61
+ queueGoalContinuation(ctx, resumed.goal.objective);
62
+ }
63
+ return formatMutation(resumed);
64
+ }
65
+ case "complete": {
66
+ const completed = await manager.updateGoal({ status: "complete" });
67
+ if (completed.ok && completed.started && completed.goal?.status === "active") {
68
+ queueGoalContinuation(ctx, completed.goal.objective);
69
+ }
70
+ return formatMutation(completed);
71
+ }
72
+ case "clear":
73
+ return formatMutation(await manager.clearGoal());
74
+ case "templates": {
75
+ const templates = await manager.listTemplates();
76
+ if (templates.length === 0) return "No goal templates found in .pi-goals/ or .ai/.pi-goals/.";
77
+ return [
78
+ `Goal templates (${templates.length}):`,
79
+ ...templates.map((template) => {
80
+ const aliases = template.aliases.length ? ` aliases: ${template.aliases.join(", ")}` : "";
81
+ return `- ${template.name}${aliases}${template.description ? ` - ${template.description}` : ""}`;
82
+ })
83
+ ].join("\n");
84
+ }
85
+ default: {
86
+ const resolved = await manager.resolveObjective(input);
87
+ if (!resolved.ok) return chalk.yellow(resolved.message);
88
+ const created = await manager.createGoal(resolved.input, { replace: false });
89
+ if (created.ok && created.goal) {
90
+ await emitGoalWrittenCompleted(ctx, created.goal, "slash");
91
+ queueGoalContinuation(ctx, created.goal.objective);
92
+ }
93
+ return formatMutation(created);
94
+ }
95
+ }
96
+ }
97
+ async function runGoalCli(workspaceRoot, rawInput, config) {
98
+ if (!resolveGoalFeatureEnabled(config)) {
99
+ return GOAL_FEATURE_DISABLED_MESSAGE;
100
+ }
101
+ const manager = new GoalManager(workspaceRoot);
102
+ const input = rawInput?.trim() ?? "";
103
+ if (!input) return formatSnapshot(await manager.getSnapshot());
104
+ const args = input.match(/"[^"]*"|'[^']*'|\S+/g)?.map(unquote) ?? [];
105
+ return goal({ workspaceRoot }, args);
106
+ }
107
+ function startGoalWriter(ctx, roughGoal) {
108
+ const activated = ctx.skillsRegistry?.activateSkill("goal-writer") ?? false;
109
+ const roughGoalText = roughGoal?.trim() || "No rough goal was provided yet.";
110
+ ctx.queueInstruction?.([
111
+ "Activate the built-in goal-writer skill and use it to help the user draft one or more stronger /goal objectives.",
112
+ "Interview the user with follow-up questions when the finish line, proof, boundaries, loop, or stop rule is unclear.",
113
+ "Show every full drafted objective and get explicit user approval before calling create_goal. If more than one goal is approved, call create_goal for each one in order so later goals are queued.",
114
+ `Rough goal request: ${roughGoalText}`
115
+ ].join("\n"));
116
+ return [
117
+ "Goal writer started.",
118
+ activated ? "The built-in $goal-writer skill is active for the next turn." : "The next turn will use the built-in $goal-writer skill instructions if available.",
119
+ "Answer the follow-up questions to create a completion contract with proof, boundaries, and a stop rule."
120
+ ].join("\n");
121
+ }
122
+ async function emitGoalWrittenCompleted(ctx, goalState, source) {
123
+ await ctx.hookManager?.executeHooks("goal-written:completed", {
124
+ goalId: goalState.goalId,
125
+ goalObjective: goalState.objective,
126
+ goalSource: source
127
+ });
128
+ }
129
+ async function handleQueue(manager, rest) {
130
+ if (!rest) {
131
+ const snapshot = await manager.getSnapshot();
132
+ if (snapshot.queue.length === 0) return "No queued goals.";
133
+ return formatQueue(snapshot);
134
+ }
135
+ return formatMutation(await manager.enqueueGoalBlock(rest, "command"));
136
+ }
137
+ function queueGoalContinuation(ctx, objective) {
138
+ ctx.queueInstruction?.([
139
+ `Active goal: ${objective}`,
140
+ "Continue working toward this persistent goal until it is complete, blocked, paused, cleared, or budget-limited.",
141
+ "Use get_goal or update_goal when you need to inspect or modify the goal state."
142
+ ].join("\n"));
143
+ }
144
+ function formatMutation(result) {
145
+ const lines = [result.ok ? chalk.green(result.message ?? "Goal updated.") : chalk.yellow(result.message ?? "Goal command failed.")];
146
+ if (result.goal) {
147
+ lines.push("");
148
+ lines.push(formatGoal(result.goal));
149
+ }
150
+ if (result.queued?.length) {
151
+ lines.push("");
152
+ lines.push(`Queued ${result.queued.length} goal${result.queued.length === 1 ? "" : "s"}:`);
153
+ for (const item of result.queued) {
154
+ lines.push(`- [${item.queueId}] ${item.objective}`);
155
+ }
156
+ }
157
+ if (result.started) {
158
+ lines.push(`Started queue item: ${result.started.queueId}`);
159
+ }
160
+ if (result.completedRun?.length && result.queue.length === 0) {
161
+ lines.push("");
162
+ lines.push(formatCompletedRun(result.completedRun));
163
+ }
164
+ if (result.queue.length > 0 && !result.queued?.length) {
165
+ lines.push("");
166
+ lines.push(formatQueue({ queue: result.queue }));
167
+ }
168
+ return lines.join("\n");
169
+ }
170
+ function formatSnapshot(snapshot) {
171
+ if (!snapshot.goal && snapshot.queue.length === 0 && snapshot.completed.length === 0) {
172
+ return [
173
+ "No goal is currently set.",
174
+ "Use /goal <objective> to create one, or /goal queue <objective> to queue later work."
175
+ ].join("\n");
176
+ }
177
+ const parts = [];
178
+ if (snapshot.goal) parts.push(formatGoal(snapshot.goal));
179
+ else parts.push("No active goal.");
180
+ if (snapshot.queue.length > 0) {
181
+ parts.push("");
182
+ parts.push(formatQueue(snapshot));
183
+ }
184
+ if (snapshot.completed.length > 0) {
185
+ parts.push("");
186
+ parts.push(formatCompletedRun(snapshot.completed));
187
+ }
188
+ return parts.join("\n");
189
+ }
190
+ function formatGoal(goalState) {
191
+ const lines = [
192
+ `Goal: ${goalState.objective}`,
193
+ `Status: ${goalState.status}`,
194
+ `ID: ${goalState.goalId}`,
195
+ `Elapsed: ${formatDuration(goalState.timeUsedSeconds)}`,
196
+ `Tokens: ${goalState.tokensUsed}${goalState.tokenBudget ? ` / ${goalState.tokenBudget}` : ""}`
197
+ ];
198
+ if (goalState.timeBudgetSeconds) lines.push(`Time budget: ${formatDuration(goalState.timeBudgetSeconds)}`);
199
+ if (goalState.minTokensBeforeWrapUp) lines.push(`Token floor: ${goalState.minTokensBeforeWrapUp}`);
200
+ if (goalState.minTimeSecondsBeforeWrapUp) lines.push(`Time floor: ${formatDuration(goalState.minTimeSecondsBeforeWrapUp)}`);
201
+ return lines.join("\n");
202
+ }
203
+ function formatQueue(snapshot) {
204
+ if (snapshot.queue.length === 0) return "No queued goals.";
205
+ return [
206
+ `Queued goals (${snapshot.queue.length}):`,
207
+ ...snapshot.queue.map((item, index) => `${index + 1}. [${item.queueId}] ${item.objective}`)
208
+ ].join("\n");
209
+ }
210
+ function formatCompletedRun(completed) {
211
+ return [
212
+ `Completed goals this session (${completed.length}):`,
213
+ ...completed.map((item, index) => `${index + 1}. ${item.objective}`)
214
+ ].join("\n");
215
+ }
216
+ function formatDuration(seconds) {
217
+ const whole = Math.max(0, Math.floor(seconds));
218
+ const minutes = Math.floor(whole / 60);
219
+ const secs = whole % 60;
220
+ return minutes > 0 ? `${minutes}m ${secs}s` : `${secs}s`;
221
+ }
222
+ function unquote(value) {
223
+ return value.replace(/^['"]|['"]$/g, "");
224
+ }
225
+
226
+ export {
227
+ metadata,
228
+ goal,
229
+ runGoalCli
230
+ };
231
+ /**
232
+ * @license
233
+ * Copyright 2025 Autohand AI LLC
234
+ * SPDX-License-Identifier: Apache-2.0
235
+ */
@@ -0,0 +1,430 @@
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; } var _class;
2
+
3
+ var _chunkCSUGNNJYcjs = require('./chunk-CSUGNNJY.cjs');
4
+
5
+
6
+ var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
7
+
8
+
9
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ var _chunk7TO3PDMVcjs = require('./chunk-7TO3PDMV.cjs');
18
+
19
+
20
+ var _chunk3JURXAL6cjs = require('./chunk-3JURXAL6.cjs');
21
+
22
+ // src/features/RemoteFeatureFlagManager.ts
23
+ var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
24
+ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
25
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
26
+ var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
27
+ var FEATURE_FLAG_REQUEST_TIMEOUT_MS = 1500;
28
+ var CLI_CLIENT_TYPE = "cli";
29
+ function getApiBaseUrl(config) {
30
+ return (_optionalChain([config, 'access', _ => _.api, 'optionalAccess', _2 => _2.baseUrl]) || _optionalChain([config, 'access', _3 => _3.telemetry, 'optionalAccess', _4 => _4.apiBaseUrl]) || "https://api.autohand.ai").replace(/\/+$/, "");
31
+ }
32
+ function readDeviceId() {
33
+ try {
34
+ _fsextra2.default.ensureDirSync(_path2.default.dirname(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId));
35
+ if (_fsextra2.default.existsSync(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId)) {
36
+ const existing = _fsextra2.default.readFileSync(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId, "utf8").trim();
37
+ if (existing) return existing;
38
+ }
39
+ const next = _crypto2.default.randomUUID();
40
+ _fsextra2.default.writeFileSync(_chunk3JURXAL6cjs.AUTOHAND_FILES.deviceId, next);
41
+ return next;
42
+ } catch (e) {
43
+ return _crypto2.default.randomUUID();
44
+ }
45
+ }
46
+ function parseSnapshot(value) {
47
+ if (value.success !== true || !Array.isArray(value.flags)) return null;
48
+ const flags = [];
49
+ for (const flag of value.flags) {
50
+ if (!flag || typeof flag !== "object") continue;
51
+ const candidate = flag;
52
+ if (typeof candidate.key !== "string" || typeof candidate.enabled !== "boolean") continue;
53
+ const clientTypes = parseClientTypes(candidate);
54
+ if (!isCliFeatureFlag(candidate, clientTypes)) continue;
55
+ flags.push({
56
+ key: candidate.key,
57
+ enabled: candidate.enabled,
58
+ reason: typeof candidate.reason === "string" ? candidate.reason : "unknown",
59
+ userOverridable: candidate.userOverridable !== false,
60
+ ...clientTypes.length > 0 ? { clientTypes } : {}
61
+ });
62
+ }
63
+ return {
64
+ success: true,
65
+ environment: typeof value.environment === "string" ? value.environment : "production",
66
+ flags,
67
+ evaluatedAt: typeof value.evaluatedAt === "string" ? value.evaluatedAt : (/* @__PURE__ */ new Date()).toISOString(),
68
+ ttlSeconds: typeof value.ttlSeconds === "number" ? value.ttlSeconds : 300
69
+ };
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 = _nullishCoalesce(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
+ }
130
+ function isSnapshotFresh(snapshot) {
131
+ const evaluatedAt = Date.parse(snapshot.evaluatedAt);
132
+ if (Number.isNaN(evaluatedAt)) return false;
133
+ const ttlMs = Math.max(0, snapshot.ttlSeconds) * 1e3;
134
+ return Date.now() - evaluatedAt < ttlMs;
135
+ }
136
+ function createEvaluationUrl(config, deviceId, clientVersion) {
137
+ const environment = _optionalChain([config, 'access', _5 => _5.features, 'optionalAccess', _6 => _6.environment]) || "production";
138
+ const url = new URL(`${getApiBaseUrl(config)}/v1/feature-flags/evaluate`);
139
+ url.searchParams.set("environment", environment);
140
+ url.searchParams.set("clientType", CLI_CLIENT_TYPE);
141
+ url.searchParams.set("deviceId", deviceId);
142
+ url.searchParams.set("cliVersion", clientVersion);
143
+ url.searchParams.set("platform", process.platform);
144
+ return url;
145
+ }
146
+ async function downloadRemoteFeatureFlags(config, deviceId, clientVersion) {
147
+ const controller = new AbortController();
148
+ const timeout = setTimeout(() => controller.abort(), FEATURE_FLAG_REQUEST_TIMEOUT_MS);
149
+ try {
150
+ const response = await fetch(createEvaluationUrl(config, deviceId, clientVersion), { signal: controller.signal });
151
+ if (!response.ok) return null;
152
+ return parseSnapshot(await response.json());
153
+ } catch (e2) {
154
+ return null;
155
+ } finally {
156
+ clearTimeout(timeout);
157
+ }
158
+ }
159
+ async function writeRemoteFeatureFlagCache(snapshot) {
160
+ await _fsextra2.default.ensureDir(_path2.default.dirname(_chunk3JURXAL6cjs.AUTOHAND_FILES.featureFlagsCache));
161
+ await _fsextra2.default.writeJson(_chunk3JURXAL6cjs.AUTOHAND_FILES.featureFlagsCache, snapshot, { spaces: 2 });
162
+ }
163
+ async function loadCachedRemoteFeatureFlags() {
164
+ try {
165
+ if (!await _fsextra2.default.pathExists(_chunk3JURXAL6cjs.AUTOHAND_FILES.featureFlagsCache)) {
166
+ return null;
167
+ }
168
+ const data = await _fsextra2.default.readJson(_chunk3JURXAL6cjs.AUTOHAND_FILES.featureFlagsCache);
169
+ return parseSnapshot(data);
170
+ } catch (e3) {
171
+ return null;
172
+ }
173
+ }
174
+ async function loadRemoteFeatureFlags(config, options = {}) {
175
+ const cached = await loadCachedRemoteFeatureFlags();
176
+ if (!options.forceRefresh && cached && isSnapshotFresh(cached)) {
177
+ return cached;
178
+ }
179
+ const downloaded = await downloadRemoteFeatureFlags(config, readDeviceId(), _chunkCSUGNNJYcjs.package_default.version);
180
+ if (downloaded) {
181
+ await writeRemoteFeatureFlagCache(downloaded);
182
+ return downloaded;
183
+ }
184
+ return options.allowCachedFallback === false ? null : cached;
185
+ }
186
+ var RemoteFeatureFlagManager = (_class = class {
187
+ constructor(config) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
188
+ this.config = config;
189
+ this.apiBaseUrl = getApiBaseUrl(config);
190
+ this.environment = _optionalChain([config, 'access', _7 => _7.features, 'optionalAccess', _8 => _8.environment]) || "production";
191
+ this.clientVersion = _chunkCSUGNNJYcjs.package_default.version;
192
+ }
193
+
194
+ __init() {this.snapshot = null}
195
+ __init2() {this.deviceId = readDeviceId()}
196
+
197
+
198
+
199
+ async refreshFeatureFlags() {
200
+ const downloaded = await downloadRemoteFeatureFlags(this.config, this.deviceId, this.clientVersion);
201
+ if (downloaded) {
202
+ this.snapshot = downloaded;
203
+ await writeRemoteFeatureFlagCache(downloaded);
204
+ return;
205
+ }
206
+ this.snapshot = await loadCachedRemoteFeatureFlags();
207
+ }
208
+ getSnapshot() {
209
+ return this.snapshot;
210
+ }
211
+ isFeatureEnabled(key, localDefault = false) {
212
+ if (_chunk7TO3PDMVcjs.isLocalFeatureId.call(void 0, key)) {
213
+ return localDefault;
214
+ }
215
+ const flag = _optionalChain([this, 'access', _9 => _9.snapshot, 'optionalAccess', _10 => _10.flags, 'access', _11 => _11.find, 'call', _12 => _12((item) => item.key === key)]);
216
+ if (!flag) return localDefault;
217
+ if (!flag.enabled) return false;
218
+ return _optionalChain([this, 'access', _13 => _13.config, 'access', _14 => _14.features, 'optionalAccess', _15 => _15.remoteOverrides, 'optionalAccess', _16 => _16[key]]) !== "off";
219
+ }
220
+ async trackFeatureActivation(key, metadata2) {
221
+ void metadata2;
222
+ const flag = _optionalChain([this, 'access', _17 => _17.snapshot, 'optionalAccess', _18 => _18.flags, 'access', _19 => _19.find, 'call', _20 => _20((item) => item.key === key)]);
223
+ if (!flag || !this.isFeatureEnabled(key)) return;
224
+ try {
225
+ await fetch(`${this.apiBaseUrl}/v1/feature-flags/events`, {
226
+ method: "POST",
227
+ headers: { "Content-Type": "application/json" },
228
+ body: JSON.stringify({
229
+ events: [{
230
+ key,
231
+ environment: this.environment,
232
+ eventType: "activation",
233
+ enabled: true,
234
+ reason: flag.reason,
235
+ deviceId: this.deviceId,
236
+ clientType: "cli",
237
+ cliVersion: this.clientVersion,
238
+ platform: process.platform,
239
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
240
+ }]
241
+ })
242
+ });
243
+ } catch (e4) {
244
+ }
245
+ }
246
+ getStatus() {
247
+ return {
248
+ apiBaseUrl: this.apiBaseUrl,
249
+ environment: this.environment,
250
+ deviceId: this.deviceId,
251
+ platform: process.platform,
252
+ osVersion: _os2.default.release(),
253
+ evaluatedAt: _optionalChain([this, 'access', _21 => _21.snapshot, 'optionalAccess', _22 => _22.evaluatedAt]) || null
254
+ };
255
+ }
256
+ }, _class);
257
+
258
+ // src/commands/features.ts
259
+ function renderUsage() {
260
+ return [
261
+ "Usage: /experiments [list|status|enable|disable|refresh]",
262
+ "",
263
+ "Commands:",
264
+ " /experiments",
265
+ " /experiments list",
266
+ " /experiments status <feature>",
267
+ " /experiments enable <feature>",
268
+ " /experiments disable <feature>",
269
+ " /experiments refresh"
270
+ ].join("\n");
271
+ }
272
+ function requireConfig(config) {
273
+ return _nullishCoalesce(config, () => ( "Config not available."));
274
+ }
275
+ async function setFeatureEnabled(config, featureId, enabled, remoteSnapshot) {
276
+ if (!featureId) {
277
+ return renderUsage();
278
+ }
279
+ const snapshot = remoteSnapshot === void 0 ? await loadRemoteFeatureFlags(config) : remoteSnapshot;
280
+ const result = _chunk7TO3PDMVcjs.setFeatureState.call(void 0, config, featureId, enabled, { remoteSnapshot: snapshot });
281
+ if (!result.ok || !result.feature) {
282
+ return _nullishCoalesce(result.error, () => ( `Unknown feature "${featureId}".`));
283
+ }
284
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, config);
285
+ if (result.feature.source === "remote") {
286
+ if (enabled) {
287
+ return `Following remote state for ${result.feature.id} (currently ${result.feature.enabled ? "on" : "off"}).`;
288
+ }
289
+ return `Disabled ${result.feature.id} locally. Remote state remains ${result.feature.remoteEnabled ? "on" : "off"}.`;
290
+ }
291
+ const action = enabled ? "Enabled" : "Disabled";
292
+ const restartNote = result.feature.requiresRestart ? " Restart Autohand for this to fully apply." : "";
293
+ return `${action} ${result.feature.id}.${restartNote}`;
294
+ }
295
+ async function showInteractiveFeatures(config, remoteSnapshot) {
296
+ let toggleCount = 0;
297
+ const pendingSaves = [];
298
+ const states = _chunk7TO3PDMVcjs.listFeatureStates.call(void 0, config, { remoteSnapshot });
299
+ const initialStates = new Map(states.map((feature) => [feature.id, feature.enabled]));
300
+ const finalStates = new Map(initialStates);
301
+ const restartRequired = new Set(states.filter((feature) => feature.requiresRestart).map((feature) => feature.id));
302
+ const options = states.map((feature) => ({
303
+ label: `${feature.id.padEnd(26)} ${feature.source.padEnd(8)} ${feature.stage.padEnd(12)} ${feature.enabled ? "on" : "off"}`,
304
+ value: feature.id,
305
+ checked: feature.enabled,
306
+ description: feature.description
307
+ }));
308
+ await _chunkDMM2BKSVcjs.showModal.call(void 0, {
309
+ title: "Experiments - space toggles, enter closes",
310
+ options,
311
+ multiSelect: true,
312
+ maxVisible: 12,
313
+ onToggle: (option, checked) => {
314
+ const result = _chunk7TO3PDMVcjs.setFeatureState.call(void 0, config, option.value, checked, { remoteSnapshot });
315
+ if (!result.ok) {
316
+ return;
317
+ }
318
+ toggleCount += 1;
319
+ finalStates.set(option.value, _nullishCoalesce(_optionalChain([result, 'access', _23 => _23.feature, 'optionalAccess', _24 => _24.enabled]), () => ( checked)));
320
+ pendingSaves.push(_chunkCNQKIWIScjs.saveConfig.call(void 0, config));
321
+ }
322
+ });
323
+ await Promise.all(pendingSaves);
324
+ if (toggleCount === 0) {
325
+ return null;
326
+ }
327
+ const enabled = [];
328
+ const disabled = [];
329
+ for (const [featureId, initiallyEnabled] of initialStates) {
330
+ const finallyEnabled = finalStates.get(featureId);
331
+ if (finallyEnabled === initiallyEnabled || typeof finallyEnabled !== "boolean") {
332
+ continue;
333
+ }
334
+ if (finallyEnabled) {
335
+ enabled.push(featureId);
336
+ } else {
337
+ disabled.push(featureId);
338
+ }
339
+ }
340
+ return formatInteractiveFeatureSummary({
341
+ enabled,
342
+ disabled,
343
+ restartRequired: [...new Set([...enabled, ...disabled].filter((featureId) => restartRequired.has(featureId)))]
344
+ });
345
+ }
346
+ function formatChangedFeatures(action, featureIds) {
347
+ if (featureIds.length === 0) {
348
+ return null;
349
+ }
350
+ if (featureIds.length === 1) {
351
+ return `${action} ${featureIds[0]}.`;
352
+ }
353
+ return `${action} ${featureIds.length} features: ${featureIds.join(", ")}.`;
354
+ }
355
+ function formatInteractiveFeatureSummary(changes) {
356
+ const parts = [
357
+ formatChangedFeatures("Enabled", changes.enabled),
358
+ formatChangedFeatures("Disabled", changes.disabled)
359
+ ].filter((part) => Boolean(part));
360
+ if (changes.restartRequired.length > 0) {
361
+ parts.push(`Restart required for: ${changes.restartRequired.join(", ")}.`);
362
+ }
363
+ return parts.length > 0 ? parts.join(" ") : null;
364
+ }
365
+ async function features(ctx, args = []) {
366
+ const required = requireConfig(ctx.config);
367
+ if (typeof required === "string") {
368
+ return required;
369
+ }
370
+ const subcommand = (_nullishCoalesce(args[0], () => ( ""))).toLowerCase();
371
+ const featureId = args[1];
372
+ const forceRefresh = subcommand === "refresh";
373
+ const remoteSnapshot = await loadRemoteFeatureFlags(required, {
374
+ forceRefresh,
375
+ allowCachedFallback: !forceRefresh
376
+ });
377
+ switch (subcommand) {
378
+ case "":
379
+ return showInteractiveFeatures(required, remoteSnapshot);
380
+ case "list":
381
+ case "ls":
382
+ if (ctx.interactive) {
383
+ return showInteractiveFeatures(required, remoteSnapshot);
384
+ }
385
+ return _chunk7TO3PDMVcjs.formatFeatureList.call(void 0, required, { remoteSnapshot });
386
+ case "status":
387
+ case "show":
388
+ return featureId ? _chunk7TO3PDMVcjs.formatFeatureStatus.call(void 0, required, featureId, { remoteSnapshot }) : renderUsage();
389
+ case "enable":
390
+ case "on":
391
+ return setFeatureEnabled(required, featureId, true, remoteSnapshot);
392
+ case "disable":
393
+ case "off":
394
+ return setFeatureEnabled(required, featureId, false, remoteSnapshot);
395
+ case "refresh":
396
+ if (!remoteSnapshot) {
397
+ return "No remote feature flags available. Using local feature switches only.";
398
+ }
399
+ return `Downloaded ${remoteSnapshot.flags.length} remote feature${remoteSnapshot.flags.length === 1 ? "" : "s"} from ${remoteSnapshot.environment}.`;
400
+ default:
401
+ if (_chunk7TO3PDMVcjs.getFeatureState.call(void 0, required, subcommand, { remoteSnapshot })) {
402
+ return _chunk7TO3PDMVcjs.formatFeatureStatus.call(void 0, required, subcommand, { remoteSnapshot });
403
+ }
404
+ return renderUsage();
405
+ }
406
+ }
407
+ var metadata = {
408
+ command: "/experiments",
409
+ description: "list and toggle Autohand experiments",
410
+ implemented: true,
411
+ subcommands: [
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" },
416
+ { name: "refresh", description: "Download remote feature flags from the Autohand API" }
417
+ ]
418
+ };
419
+
420
+
421
+
422
+
423
+
424
+
425
+ exports.RemoteFeatureFlagManager = RemoteFeatureFlagManager; exports.setFeatureEnabled = setFeatureEnabled; exports.features = features; exports.metadata = metadata;
426
+ /**
427
+ * @license
428
+ * Copyright 2026 Autohand AI LLC
429
+ * SPDX-License-Identifier: Apache-2.0
430
+ */