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