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