autohand-cli 0.8.3 → 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 +191 -74
- package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-GOV7FN2O.js} +2 -2
- package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
- package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
- package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
- package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
- package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
- package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
- package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
- package/dist/{HookManager-B2F35M27.js → HookManager-2S6AHOC3.js} +1 -1
- package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
- package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-AEBMAKXE.js} +33 -9
- package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-AF2XL6DS.cjs} +37 -13
- package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
- package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
- package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
- package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
- package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
- package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-QZRLTUB5.js} +2 -2
- package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
- package/dist/NVIDIAProvider-SJPY3ONR.js +14 -0
- package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-MT7KBNNR.js} +3 -3
- package/dist/PermissionManager-URCNP5EC.cjs +11 -0
- package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
- package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
- package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
- package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-RB4RVAF6.js} +4 -1
- package/dist/SessionManager-2IZGWASQ.cjs +10 -0
- package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-554PHVPC.js} +2 -2
- package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
- package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
- package/dist/SubAgent-4GOR2FIJ.js +13 -0
- package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
- package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-G3FM65IV.js} +1 -1
- package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
- package/dist/about-3USFSGOH.js +15 -0
- package/dist/about-QR52U5DD.cjs +15 -0
- package/dist/acp-5Y2W6OZP.js +1556 -0
- package/dist/acp-GSYE75OB.cjs +1556 -0
- package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
- package/dist/actionExecutor-PLQJZLZV.js +28 -0
- package/dist/add-dir-BTAD5OZS.cjs +11 -0
- package/dist/{add-dir-TUJM3PG5.js → add-dir-HCERJDBR.js} +3 -2
- package/dist/agent-B3EVT7NN.cjs +126 -0
- package/dist/agent-SATQ3WZ3.js +126 -0
- package/dist/agents/builtin/code-cleaner.md +1 -1
- package/dist/agents/builtin/docs-writer.md +1 -1
- package/dist/agents/builtin/researcher.md +2 -2
- package/dist/agents/builtin/reviewer.md +1 -1
- package/dist/agents/builtin/tester.md +1 -1
- package/dist/agents/builtin/todo-resolver.md +1 -1
- 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-LQEVQFIH.js → autoSkill-66PKCYTW.js} +2 -2
- package/dist/autoSkill-VQLGBELN.cjs +20 -0
- package/dist/automode-45DWV4TN.cjs +10 -0
- package/dist/{automode-R6P3VHLS.js → automode-BUF3VGXU.js} +2 -2
- package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
- package/dist/browserToolBridge-F5N66PE7.js +58 -0
- package/dist/chrome-Q2U73HZB.cjs +50 -0
- package/dist/chrome-Q54OALOK.cjs +21 -0
- package/dist/chrome-Y3T7EIHG.js +50 -0
- package/dist/chrome-ZNJ46OYW.js +21 -0
- package/dist/chromeSkill-53TH55PM.js +105 -0
- package/dist/chromeSkill-THW7N4IY.cjs +105 -0
- package/dist/{chunk-HXGBSJL5.cjs → chunk-22SCR3EV.cjs} +2 -2
- package/dist/chunk-26G7YGOW.js +367 -0
- package/dist/{chunk-3L53OA4E.cjs → chunk-2ESQR35E.cjs} +10 -10
- package/dist/chunk-2H5O745H.js +63 -0
- package/dist/{chunk-ULDM2SNB.js → chunk-2IW5YFJ4.js} +48 -47
- package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
- package/dist/chunk-3EDDDZS2.cjs +5 -0
- package/dist/{chunk-X5VSP65C.cjs → chunk-3ICORF7M.cjs} +4 -4
- package/dist/chunk-3OF56EMA.cjs +197 -0
- package/dist/chunk-3UC6DMFI.cjs +93 -0
- package/dist/{chunk-64H4FRM3.cjs → chunk-3UHRCHKB.cjs} +32 -34
- package/dist/{chunk-JCLYQ2JC.js → chunk-3ZOOH44N.js} +12 -6
- package/dist/{chunk-TUD3Z3BD.js → chunk-44ZWOBTI.js} +136 -55
- package/dist/chunk-4567QNRB.js +444 -0
- package/dist/chunk-45CHNQM6.cjs +517 -0
- package/dist/chunk-46MTALKD.js +44 -0
- package/dist/{chunk-WHE2SWHU.js → chunk-4E7SHPNQ.js} +2 -2
- package/dist/chunk-4LMUDS2K.js +124 -0
- package/dist/{chunk-W7RYQJLO.cjs → chunk-4XFHP2SN.cjs} +46 -15
- package/dist/chunk-4XVLNOFA.js +360 -0
- package/dist/{chunk-GBHDROGL.js → chunk-575PXZX7.js} +16 -4
- package/dist/chunk-5A7ZL64N.js +139 -0
- package/dist/chunk-5GCQ5UMV.cjs +85 -0
- package/dist/chunk-5JTTM5SC.js +59 -0
- package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
- package/dist/{chunk-KLWJIPU2.cjs → chunk-5SFV2NCY.cjs} +20 -16
- package/dist/chunk-5ZNYX4VH.cjs +71 -0
- package/dist/{chunk-A4IJHHV7.cjs → chunk-63ANVAOJ.cjs} +52 -11
- package/dist/{chunk-MYISNQH4.js → chunk-65LRPW5W.js} +1 -1
- package/dist/chunk-6AYJCDTA.js +360 -0
- package/dist/{chunk-X2MSVKDV.js → chunk-6HF6XSCC.js} +2 -2
- package/dist/{chunk-AEJH23FO.cjs → chunk-6JWCGQJU.cjs} +6 -6
- package/dist/chunk-6OECOAK5.cjs +360 -0
- package/dist/chunk-6R25D2H5.js +121 -0
- package/dist/chunk-7DJJGKM6.js +77 -0
- package/dist/{chunk-VG34MG2U.js → chunk-7IRQ7JEH.js} +9 -6
- package/dist/chunk-7MY4JHER.js +27 -0
- package/dist/chunk-7PJKTSRN.js +152 -0
- package/dist/{chunk-SKYG33B2.cjs → chunk-7PT646AL.cjs} +3 -3
- package/dist/chunk-7WAUCLLQ.js +229 -0
- package/dist/{chunk-U46VYPLR.cjs → chunk-7XTUL7ZD.cjs} +9 -9
- package/dist/chunk-AE2ILW25.cjs +152 -0
- package/dist/{chunk-T2M64VHA.cjs → chunk-AOKXYGBQ.cjs} +61 -41
- package/dist/chunk-AQ5PVHOC.cjs +113 -0
- package/dist/{chunk-N2BLVUPM.cjs → chunk-AZ47LKD5.cjs} +3 -3
- package/dist/chunk-B4HSNOIH.cjs +354 -0
- package/dist/chunk-B76FJKEJ.cjs +184 -0
- package/dist/chunk-BP37FVBM.js +85 -0
- package/dist/chunk-BQU3HAE7.js +21 -0
- package/dist/chunk-BYE7RQFZ.cjs +121 -0
- package/dist/chunk-C46B72VK.js +1034 -0
- package/dist/{chunk-HIVRCQS2.js → chunk-C5QIQQ37.js} +56 -25
- package/dist/chunk-CCIDL4SA.js +19931 -0
- package/dist/{chunk-XVUHNWMX.js → chunk-CECH6QQP.js} +17 -19
- package/dist/chunk-CFAWTLSC.js +13 -0
- package/dist/{chunk-ZYQMLKOK.cjs → chunk-CK4HAHVY.cjs} +212 -70
- package/dist/chunk-CO2AADYU.cjs +360 -0
- package/dist/chunk-CRTCZ4WL.cjs +19931 -0
- package/dist/chunk-CSTUTDTH.js +75 -0
- package/dist/{chunk-K2C56QGS.cjs → chunk-D546G7DA.cjs} +1650 -479
- package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
- package/dist/{chunk-G4CAKI3V.js → chunk-DGBPWODD.js} +7 -2
- package/dist/chunk-DHUQZ53B.cjs +29 -0
- package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
- package/dist/{chunk-5K6NGAVM.js → chunk-DNSD7DVJ.js} +67 -52
- package/dist/{chunk-RDF37HKB.cjs → chunk-DSSCERHI.cjs} +3 -2
- package/dist/{chunk-NAJ4IZKD.cjs → chunk-EA2MS25U.cjs} +8 -6
- package/dist/{chunk-SJAVBCOA.js → chunk-EEHWALXA.js} +94 -3
- package/dist/chunk-ES2HJQ4N.js +37 -0
- package/dist/{chunk-G27PQQFD.js → chunk-EYHKL4QC.js} +1 -1
- package/dist/{chunk-SV2WA57F.js → chunk-FBQJZKFX.js} +38 -15
- package/dist/chunk-FFBDRUO5.cjs +59 -0
- package/dist/{chunk-N7LI55V4.js → chunk-FFHSCM5M.js} +15 -8
- package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
- package/dist/chunk-FQVG6ZHF.js +197 -0
- package/dist/{chunk-J2GSFVUV.cjs → chunk-GAOPJ5S3.cjs} +74 -59
- package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
- package/dist/chunk-GSDV75A5.js +715 -0
- package/dist/chunk-GWY26SUD.cjs +63 -0
- package/dist/{chunk-TUAITHWL.js → chunk-H426KOGY.js} +2 -1
- package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
- package/dist/chunk-HC2Q6A3E.cjs +4967 -0
- package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
- package/dist/{chunk-5IXII4HX.cjs → chunk-HG3ZASBH.cjs} +23 -16
- package/dist/chunk-HK5A54AV.cjs +280 -0
- package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
- package/dist/chunk-HSWWM6AM.js +2340 -0
- package/dist/chunk-HTU4W3GB.js +183 -0
- package/dist/{chunk-HLHTG5ZU.cjs → chunk-HVCIB4SW.cjs} +14 -12
- package/dist/chunk-HXHE2KAO.js +385 -0
- package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
- package/dist/{chunk-SLQAYV3W.js → chunk-HZWU6IO3.js} +11 -2
- package/dist/chunk-I2ZK3AOD.js +866 -0
- package/dist/chunk-IEPLQ47J.js +719 -0
- package/dist/chunk-J5HE6CUM.cjs +124 -0
- package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
- package/dist/chunk-JB3JCYBJ.js +113 -0
- package/dist/chunk-JCUHCH37.cjs +247 -0
- package/dist/{chunk-FPHU2ES6.cjs → chunk-JM3ZTQUK.cjs} +19 -9
- package/dist/{chunk-NDMIPTV4.js → chunk-JMJRFSNJ.js} +8 -3
- package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
- package/dist/chunk-JPFRI4L4.js +4967 -0
- package/dist/{chunk-BVKXEQVG.cjs → chunk-JV5HVCHU.cjs} +22 -10
- package/dist/chunk-KA2U6MY2.js +388 -0
- package/dist/{chunk-SEKD5FH3.cjs → chunk-KASXKDF2.cjs} +8 -3
- package/dist/chunk-KJ26T7GM.cjs +367 -0
- package/dist/chunk-KM7R5YPS.cjs +385 -0
- package/dist/{chunk-MBBY4ZIK.js → chunk-KMP6Y3LJ.js} +4 -1
- package/dist/chunk-KWXGDSYT.js +184 -0
- package/dist/{chunk-C5IJIM2V.cjs → chunk-L46OUKW5.cjs} +68 -37
- package/dist/{chunk-6UJMCWRY.js → chunk-L6OH44HL.js} +19 -9
- package/dist/chunk-LANGD5CO.js +280 -0
- package/dist/{chunk-APIXPPMT.js → chunk-LEZEWKPA.js} +1004 -39
- package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
- package/dist/chunk-LJD7KR3L.cjs +44 -0
- package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
- package/dist/{chunk-QXH5RCFI.js → chunk-M5DK524Z.js} +2 -2
- package/dist/chunk-M7B7RRBK.cjs +1034 -0
- package/dist/chunk-MANJ67D3.js +3897 -0
- package/dist/{chunk-HPHJ73GU.cjs → chunk-MGNXABSU.cjs} +9 -9
- package/dist/{chunk-6ZCULLCA.js → chunk-MMKZSJUN.js} +1 -1
- package/dist/{chunk-DVUHHH3B.cjs → chunk-MQQH4XQH.cjs} +4 -4
- package/dist/chunk-MUNUUFU7.cjs +21 -0
- package/dist/{chunk-DVZOENQ7.cjs → chunk-MZN6JBRZ.cjs} +9 -4
- package/dist/{chunk-OOKY3HPZ.js → chunk-NB6M6ESM.js} +50 -9
- package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
- package/dist/chunk-NHWHEW7M.cjs +75 -0
- package/dist/chunk-NQZH5CR2.cjs +468 -0
- package/dist/{chunk-EGPXJERY.cjs → chunk-NV6LCD2I.cjs} +119 -28
- package/dist/chunk-NVATU4V6.cjs +44 -0
- package/dist/{chunk-YZXUDM5X.js → chunk-NZ3ZWLUW.js} +204 -62
- package/dist/chunk-NZ7GCK7Y.cjs +92 -0
- package/dist/{chunk-VEKDGU2Q.cjs → chunk-NZQFKXM3.cjs} +49 -25
- package/dist/chunk-O5GI6SR3.js +59 -0
- package/dist/{chunk-56SWIDEL.cjs → chunk-OCATAKXV.cjs} +57 -56
- package/dist/{chunk-SKV2F3NM.js → chunk-OIGYWOL6.js} +1 -1
- package/dist/{chunk-IFFXSTOM.cjs → chunk-ONVYXTUT.cjs} +3 -3
- package/dist/chunk-OR67YXQK.cjs +13 -0
- package/dist/chunk-OV3T5MUH.cjs +715 -0
- package/dist/{chunk-OHUZKDGX.js → chunk-P4FUTSVK.js} +3 -3
- package/dist/chunk-P6SLT2F4.cjs +139 -0
- package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
- package/dist/chunk-PCM3N3CL.cjs +37 -0
- package/dist/{chunk-2AA5MFES.js → chunk-PGFLPURU.js} +8 -5
- package/dist/{chunk-DJDE4DTT.cjs → chunk-PIXQ2AVM.cjs} +25 -19
- package/dist/chunk-PNIAIOMZ.cjs +229 -0
- package/dist/{chunk-HTLINWX6.cjs → chunk-PQBYFEBL.cjs} +16 -13
- package/dist/{chunk-22D2CNTP.cjs → chunk-PSAH4ZQB.cjs} +5 -2
- package/dist/{chunk-3VTAFAL2.js → chunk-PTTZI4QZ.js} +16 -12
- package/dist/{chunk-WPVWQSL7.cjs → chunk-PY73W5MQ.cjs} +16 -13
- package/dist/{chunk-EGMZDTSL.js → chunk-PZZMIYII.js} +10 -2
- package/dist/{chunk-HBZU3RBZ.js → chunk-Q3BS6FPM.js} +34 -10
- package/dist/chunk-QBYGMMDD.js +517 -0
- package/dist/chunk-QLZOMZO5.cjs +388 -0
- package/dist/{chunk-ADUFCS4Q.cjs → chunk-QQ64HEHP.cjs} +160 -79
- package/dist/{chunk-L3TWPROA.js → chunk-QRQF3556.js} +44 -24
- package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
- package/dist/chunk-RAKO7UN7.js +114 -0
- package/dist/{chunk-7TQH3CL4.cjs → chunk-RBXBH6EB.cjs} +78 -35
- package/dist/chunk-RFUKZIJF.cjs +78 -0
- package/dist/chunk-RS2E32YB.js +71 -0
- package/dist/{chunk-OLSBBZW6.cjs → chunk-S5JNQIGL.cjs} +5 -5
- package/dist/{chunk-FTYY5JJD.js → chunk-S5QKRA2V.js} +2 -2
- package/dist/chunk-SD3NTC7D.cjs +77 -0
- package/dist/{chunk-KPELYZ6L.js → chunk-SDLY4X3G.js} +2 -2
- package/dist/{chunk-IDFF5J2E.js → chunk-SFFEKZGC.js} +38 -7
- package/dist/{chunk-EGFT4PGW.js → chunk-SHRLFX6F.js} +8 -3
- package/dist/{chunk-3WICOC33.js → chunk-SNDDZG5H.js} +124 -84
- package/dist/{chunk-CZXGCVTR.cjs → chunk-SOVR7S3T.cjs} +2 -2
- package/dist/chunk-SPQ7QIQ6.js +78 -0
- package/dist/{chunk-XRZEUWKF.js → chunk-SRMGWMQO.js} +1 -1
- package/dist/{chunk-R33VKSH5.cjs → chunk-SVVP4UUZ.cjs} +11 -11
- package/dist/{chunk-7BTSG4ME.cjs → chunk-SY2P3Z5W.cjs} +1004 -39
- package/dist/chunk-SZD45IDG.js +468 -0
- package/dist/{chunk-3O3MOK5C.cjs → chunk-TE4SYTWR.cjs} +1114 -142
- package/dist/chunk-TH26BQJG.js +101 -0
- package/dist/{chunk-QNGEW5TC.js → chunk-TR6NECEZ.js} +1 -1
- package/dist/{chunk-YGN4CQIP.js → chunk-TYBPTKFT.js} +1 -1
- package/dist/{chunk-GJH7XMSK.js → chunk-U2QUMKCB.js} +8 -6
- package/dist/{chunk-47CKWKEX.cjs → chunk-U6PLSPMD.cjs} +9 -4
- package/dist/chunk-UOQECODR.js +34 -0
- package/dist/chunk-UR27UDTB.js +354 -0
- package/dist/chunk-UWZ4G3SQ.js +93 -0
- package/dist/{chunk-Y72HH2TF.cjs → chunk-V3SZLWEQ.cjs} +33 -24
- package/dist/chunk-V4HGZSKQ.cjs +183 -0
- package/dist/{chunk-3PDTTAKJ.js → chunk-V5ELP2XE.js} +19 -12
- package/dist/{chunk-3K2ESU53.cjs → chunk-VKOXFT4L.cjs} +2 -2
- package/dist/{chunk-XTB6VJVQ.cjs → chunk-VLGGMQUN.cjs} +6 -6
- package/dist/chunk-VQHSYAPZ.cjs +3897 -0
- package/dist/chunk-VUGOOGHB.js +400 -0
- package/dist/chunk-W5QLA6WP.cjs +866 -0
- package/dist/chunk-WBU4Q4GS.cjs +400 -0
- package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
- package/dist/chunk-WJYFLQ7G.cjs +27 -0
- package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
- package/dist/{chunk-ZSPXQYG2.js → chunk-WNJXIACY.js} +7 -5
- package/dist/{chunk-AYS2ASM7.js → chunk-WPE2XHVX.js} +1 -1
- package/dist/chunk-WTB7AFL6.cjs +101 -0
- package/dist/{chunk-JYTDYJVW.js → chunk-X3TI5TJJ.js} +1 -1
- package/dist/chunk-X5P6QQOB.cjs +719 -0
- package/dist/{chunk-245KJE5Y.cjs → chunk-X7XMITIL.cjs} +14 -6
- package/dist/chunk-XF2WIKHR.cjs +34 -0
- package/dist/{chunk-DV2ZHK7B.cjs → chunk-XNIMSVS6.cjs} +49 -26
- package/dist/chunk-XW3XCK4E.cjs +59 -0
- package/dist/{chunk-N23UAW4I.js → chunk-XZVDYC5U.js} +7 -2
- package/dist/chunk-Y5BDE24P.cjs +444 -0
- package/dist/{chunk-NAGQ2PDC.js → chunk-YC5OBZQU.js} +1604 -433
- package/dist/chunk-YISPVAXO.cjs +2340 -0
- package/dist/{chunk-KQGPTCQJ.js → chunk-YQDI753V.js} +68 -25
- package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
- package/dist/{chunk-NNPAM4HC.cjs → chunk-YWH55BWK.cjs} +15 -6
- package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
- package/dist/{chunk-XX2ZO7DS.js → chunk-YXM6SA7P.js} +25 -16
- package/dist/chunk-YZWE7XSM.js +5 -0
- package/dist/chunk-ZASDSY7P.cjs +114 -0
- package/dist/{chunk-2UC22DJU.js → chunk-ZNGRLCFQ.js} +30 -4
- package/dist/{chunk-KANW6OYC.cjs → chunk-ZNYZB7XY.cjs} +34 -8
- package/dist/{chunk-NA6WQDYW.js → chunk-ZPLCAXJW.js} +1088 -116
- package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
- package/dist/chunk-ZUYYHKQA.js +44 -0
- package/dist/clear-QJXU25IF.cjs +12 -0
- package/dist/{clear-A3N4GK2S.js → clear-Y5TO3RZA.js} +3 -3
- package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
- package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-RVL4STPS.js} +8 -5
- package/dist/completion-JX4T2ONW.cjs +17 -0
- package/dist/completion-SE3XYG74.js +17 -0
- package/dist/config-3224PRW4.cjs +21 -0
- package/dist/{config-HPJPKTO6.js → config-7KPHKFTP.js} +7 -4
- package/dist/{constants-LISJW3DD.js → constants-EJFAWJQI.js} +1 -1
- package/dist/constants-MCCGUU5F.cjs +21 -0
- package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
- package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
- package/dist/export-BJVIDZC4.js +15 -0
- 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/fffSearchProvider-2YCNKOYD.js +412 -0
- package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
- package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
- package/dist/filesystem-PGUPCMVK.cjs +11 -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-GFQXNZOK.js → help-MLIROWKM.js} +2 -2
- package/dist/{history-E3N6BJP7.js → history-GQJ6RZD6.js} +2 -2
- package/dist/history-J4LUIOSI.cjs +14 -0
- package/dist/hooks-FSRIUS6A.cjs +18 -0
- package/dist/hooks-PPFHCF7T.js +18 -0
- package/dist/i18n-CI6VFXL5.cjs +33 -0
- package/dist/{i18n-SY7QRM22.js → i18n-Q7UZJRPL.js} +1 -1
- package/dist/ide-BUSVE54P.js +15 -0
- package/dist/ide-YR27BPGM.cjs +15 -0
- package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
- package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
- package/dist/{import-W7SVLSTC.js → import-3VBKI6BN.js} +3 -3
- package/dist/{import-ADI37ZUR.cjs → import-C7S6UJMW.cjs} +3 -3
- package/dist/import-DBK4OCDF.cjs +10 -0
- package/dist/{import-KGKKZ3B7.js → import-U47DXCA7.js} +2 -2
- package/dist/index.cjs +837 -23011
- package/dist/index.d.cts +95 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.js +864 -23038
- package/dist/init-OXTYS72D.cjs +10 -0
- package/dist/{init-7MFK626E.js → init-Q2O4R42R.js} +2 -2
- package/dist/inkMode-VUE6ZDLD.cjs +7 -0
- package/dist/inkMode-WBNFOSAT.js +7 -0
- package/dist/inputPrompt-3CFZDUBH.js +90 -0
- 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-AH3MMUBU.js +21 -0
- package/dist/mcp-DW7R63IB.cjs +21 -0
- package/dist/{mcp-install-2FEROZTL.js → mcp-install-222PCKSW.js} +18 -10
- package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-IA4ZS2SV.cjs} +22 -14
- package/dist/memory-6NX3DAIY.cjs +10 -0
- package/dist/{memory-J73WZH2I.js → memory-VB46T5H3.js} +2 -2
- package/dist/model-64NAELFS.cjs +10 -0
- package/dist/{model-AES267IN.js → model-SJJG64AM.js} +2 -2
- package/dist/new-DU5SOOOY.cjs +12 -0
- package/dist/{new-5CLF3MKH.js → new-ERZ5C6CN.js} +3 -3
- package/dist/onboarding-2U2BV2KE.cjs +36 -0
- package/dist/onboarding-ZQXMPSMJ.js +36 -0
- package/dist/permissions-7ACNFK7A.js +10 -0
- package/dist/permissions-GSNNV7RJ.cjs +10 -0
- package/dist/plan-XEJMOT55.cjs +13 -0
- package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
- package/dist/pr-review-CW6J7P62.cjs +9 -0
- package/dist/pr-review-YZSBQVT2.js +9 -0
- package/dist/{quit-XDZYRSPU.js → quit-WY6T267G.js} +2 -2
- package/dist/quit-XIRE2KRE.cjs +10 -0
- package/dist/rawMode-6W5AXAKI.cjs +7 -0
- package/dist/rawMode-GFNLXQPU.js +7 -0
- package/dist/{registry-PTHWERKC.js → registry-4DXUDKJN.js} +29 -44
- package/dist/{registry-IVT4G2RT.cjs → registry-UEO3ETZ7.cjs} +65 -80
- package/dist/repeat-P4FAPE3Y.cjs +17 -0
- package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
- package/dist/resume-RQZ3WXBP.cjs +17 -0
- package/dist/resume-XSXZMDMD.js +17 -0
- package/dist/review-QHP2KP4Q.js +9 -0
- package/dist/review-UWHWQHCB.cjs +9 -0
- package/dist/ripgrep-67SCU2BA.cjs +9 -0
- package/dist/ripgrep-VHJQQ55W.js +9 -0
- package/dist/rpc-XH7QLN4H.js +3874 -0
- package/dist/rpc-YF54T7JU.cjs +3874 -0
- package/dist/search-VXXFGZWU.cjs +21 -0
- package/dist/search-YAWGX7P7.js +21 -0
- package/dist/{sessions-6GWEBMKS.js → sessions-NJYHJOEL.js} +2 -2
- package/dist/sessions-OSG3UJEZ.cjs +10 -0
- package/dist/settings-SO2UIGWV.cjs +42 -0
- package/dist/settings-ZXUQH3DO.js +42 -0
- 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-NBTNDVAY.js +29 -0
- package/dist/{skills-ZZCIAS7C.js → skills-OB6RDW7D.js} +10 -7
- package/dist/{skills-PG542VEB.cjs → skills-ZROBG3RZ.cjs} +13 -10
- package/dist/{skills-install-SRC3Z2MS.js → skills-install-BHTIEMKH.js} +21 -70
- package/dist/{skills-install-67DOBPJC.cjs → skills-install-ILX6QVEF.cjs} +34 -83
- 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/summarizer-DGPHE5IQ.js +17 -0
- package/dist/summarizer-JNXLUAQG.cjs +17 -0
- package/dist/sync-7C25MOT2.js +22 -0
- package/dist/{sync-VU2NSJ4O.js → sync-OCJN4ZSO.js} +3 -3
- package/dist/sync-XRP46IVG.cjs +40 -0
- package/dist/sync-ZMFVE7T4.cjs +22 -0
- package/dist/{teammate-SXRVXNQV.cjs → teammate-D77B6QRT.cjs} +31 -9
- package/dist/{teammate-SD26GR37.js → teammate-EZCMHOIL.js} +30 -8
- 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/tools-3PPTTKFV.js +9 -0
- package/dist/tools-THIQA7WC.cjs +9 -0
- package/dist/ui/questionModal.cjs +8 -5
- package/dist/ui/questionModal.js +7 -4
- package/dist/{undo-OL2EDBRY.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/dist/web-3BA2WV37.cjs +37 -0
- package/dist/web-6FYGBX5K.js +37 -0
- package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
- package/dist/workspaceSafety-XOUMUBVB.js +9 -0
- package/dist/yolo-GF2YD7ZI.js +9 -0
- package/dist/yolo-OGDA7HNC.cjs +9 -0
- package/dist/yoloMode-3DJDA75U.cjs +17 -0
- package/dist/yoloMode-4JOOSU26.js +17 -0
- package/package.json +51 -49
- package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
- package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
- package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
- package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
- package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
- package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
- package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
- package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
- package/dist/SessionManager-YBJAZXNO.cjs +0 -10
- package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
- package/dist/SubAgent-JT4HZHN7.js +0 -11
- package/dist/SubAgent-VPNYDWAU.cjs +0 -11
- package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
- package/dist/about-4DB5KTHW.js +0 -12
- package/dist/about-LXAOXZFT.cjs +0 -12
- package/dist/actionExecutor-23JB2WUC.js +0 -19
- package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
- package/dist/add-dir-YC37DMSF.cjs +0 -10
- package/dist/agents-YF3BSUU5.js +0 -12
- package/dist/agents-ZOUHPMYR.cjs +0 -12
- package/dist/agents-new-HSH4GQPG.js +0 -14
- package/dist/agents-new-VYUDOCE7.cjs +0 -14
- package/dist/autoSkill-X5W52WOE.cjs +0 -20
- package/dist/automode-SJGM7VEI.cjs +0 -10
- package/dist/chunk-ALYU6VTM.js +0 -105
- package/dist/chunk-B53A2NM2.js +0 -2030
- package/dist/chunk-BJXSNT46.js +0 -100
- package/dist/chunk-CB4E2T5N.cjs +0 -312
- package/dist/chunk-DNUOXBHL.js +0 -539
- package/dist/chunk-EFX2QSZX.cjs +0 -33
- package/dist/chunk-GCXYXLRA.cjs +0 -111
- package/dist/chunk-H2ZRHQQV.js +0 -33
- package/dist/chunk-HNRPK5MY.cjs +0 -85
- package/dist/chunk-HVKOZ2VP.cjs +0 -115
- package/dist/chunk-JJLYWH5Y.cjs +0 -100
- package/dist/chunk-LWUJFGOZ.js +0 -115
- package/dist/chunk-MERYP6AM.cjs +0 -539
- package/dist/chunk-MZAPWNAC.cjs +0 -207
- package/dist/chunk-NTSDP2WB.js +0 -226
- package/dist/chunk-OUZQXMHL.cjs +0 -226
- package/dist/chunk-PGESAU2W.cjs +0 -2030
- package/dist/chunk-SYVYLZZF.cjs +0 -24
- package/dist/chunk-SZOLA6FR.js +0 -111
- package/dist/chunk-VWDHR4HV.js +0 -168
- package/dist/chunk-Y45G6ZO5.cjs +0 -168
- package/dist/chunk-YRLYSQEQ.cjs +0 -105
- package/dist/chunk-ZYVS43MU.js +0 -312
- package/dist/clear-GK4IEUUS.cjs +0 -12
- package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
- package/dist/completion-HWABSAEL.js +0 -14
- package/dist/completion-IUUVQG4D.cjs +0 -14
- package/dist/config-HF7WOLZF.cjs +0 -18
- package/dist/constants-PEO3P2SJ.cjs +0 -21
- package/dist/export-QJAV2FCZ.js +0 -12
- package/dist/export-XSRFXGWU.cjs +0 -12
- package/dist/feedback-4TCIL3ML.cjs +0 -15
- package/dist/feedback-SJ6VVEY3.js +0 -15
- package/dist/filesystem-W56QZUJF.cjs +0 -10
- package/dist/help-ISBVQL3S.cjs +0 -12
- package/dist/history-XQ4GTSFU.cjs +0 -14
- package/dist/hooks-CJNKJ5PF.js +0 -13
- package/dist/hooks-UTMBTAXT.cjs +0 -13
- package/dist/i18n-N7QQ7A5M.cjs +0 -33
- package/dist/ide-RTA4UJV4.js +0 -12
- package/dist/ide-VWVOLIFF.cjs +0 -12
- package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
- package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
- package/dist/import-ZLJVONXH.cjs +0 -10
- package/dist/init-TBKAB4LZ.cjs +0 -10
- package/dist/language-MDSHEXHB.cjs +0 -18
- package/dist/language-PXTQSHIG.js +0 -18
- package/dist/learn-623TW5EK.cjs +0 -20
- package/dist/learn-BCPV7GM2.js +0 -20
- package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
- package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
- package/dist/login-QMVEETWJ.js +0 -20
- package/dist/login-QYMXAL3K.cjs +0 -20
- package/dist/logout-2CMTDAOJ.js +0 -18
- package/dist/logout-ZOHVZAUK.cjs +0 -18
- package/dist/mcp-IUVKK65S.js +0 -18
- package/dist/mcp-TXC7PYG3.cjs +0 -18
- package/dist/memory-WRIHDEPK.cjs +0 -10
- package/dist/model-RLP75SF5.cjs +0 -10
- package/dist/new-HLSFL6A4.cjs +0 -12
- package/dist/permissions-GP6FTGZ2.js +0 -13
- package/dist/permissions-O6EKKPOG.cjs +0 -13
- package/dist/plan-MCAXDIM2.cjs +0 -11
- package/dist/quit-TQX6GXA5.cjs +0 -10
- package/dist/repeat-BSPS5TWD.cjs +0 -13
- package/dist/resume-2GOPDLL4.cjs +0 -13
- package/dist/resume-37IUVDA6.js +0 -13
- package/dist/search-7KUSHIBL.cjs +0 -17
- package/dist/search-OJGDRIMA.js +0 -17
- package/dist/sessions-CYYCHSQG.cjs +0 -10
- package/dist/settings-2D7CAO66.cjs +0 -30
- package/dist/settings-BXR6SBJP.js +0 -30
- package/dist/share-BXQY5IQU.js +0 -14
- package/dist/share-OSFXZBGS.cjs +0 -14
- package/dist/skills-FL6O6AOM.cjs +0 -26
- package/dist/skills-PNKQZRNK.js +0 -26
- package/dist/skills-new-XFMEHHIF.cjs +0 -15
- package/dist/skills-new-ZNZPHUKS.js +0 -15
- package/dist/slashCommands-LLCNPK3X.js +0 -76
- package/dist/slashCommands-RXZZS6RE.cjs +0 -76
- package/dist/status-BCECUJXT.cjs +0 -11
- package/dist/status-EFO7MQU3.js +0 -11
- package/dist/sync-IJYJ6KKM.js +0 -18
- package/dist/sync-LFT6SBPF.cjs +0 -18
- package/dist/sync-U7SDPBNZ.cjs +0 -40
- package/dist/theme-AWBHSG7J.cjs +0 -18
- package/dist/theme-TQLBPJ2E.js +0 -18
- package/dist/undo-IBBGP7A2.cjs +0 -10
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildChromeOpenUrl,
|
|
3
|
+
createBrowserHandoff,
|
|
4
|
+
detectExtensionProfile,
|
|
5
|
+
ensureNativeHostInstalled,
|
|
6
|
+
getManifestTarget,
|
|
7
|
+
hasActiveHandoff,
|
|
8
|
+
openChromeContinuation
|
|
9
|
+
} from "./chunk-GSDV75A5.js";
|
|
10
|
+
import {
|
|
11
|
+
showModal
|
|
12
|
+
} from "./chunk-NZ3ZWLUW.js";
|
|
13
|
+
import {
|
|
14
|
+
saveConfig
|
|
15
|
+
} from "./chunk-IEPLQ47J.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/chrome.ts
|
|
18
|
+
import chalk from "chalk";
|
|
19
|
+
import fs from "fs-extra";
|
|
20
|
+
var metadata = {
|
|
21
|
+
command: "/chrome",
|
|
22
|
+
description: "continue the current session in the Autohand Chrome extension",
|
|
23
|
+
implemented: true
|
|
24
|
+
};
|
|
25
|
+
async function withModalPause(ctx, fn) {
|
|
26
|
+
await ctx.onBeforeModal?.();
|
|
27
|
+
try {
|
|
28
|
+
return await fn();
|
|
29
|
+
} finally {
|
|
30
|
+
await ctx.onAfterModal?.();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function chrome(ctx, args = []) {
|
|
34
|
+
const subcommand = args[0]?.toLowerCase();
|
|
35
|
+
if (subcommand === "disconnect") {
|
|
36
|
+
if (!ctx.config) return "Config not available.";
|
|
37
|
+
const chromeConfig = ctx.config.chrome ?? {};
|
|
38
|
+
chromeConfig.enabledByDefault = false;
|
|
39
|
+
ctx.config.chrome = chromeConfig;
|
|
40
|
+
await saveConfig(ctx.config);
|
|
41
|
+
return `${chalk.green("\u2713")} Browser bridge disconnected and disabled.`;
|
|
42
|
+
}
|
|
43
|
+
const currentSession = ctx.sessionManager.getCurrentSession();
|
|
44
|
+
const sessionId = currentSession?.metadata.sessionId;
|
|
45
|
+
if (!sessionId) {
|
|
46
|
+
return "No active session. Start a task first, then run /chrome.";
|
|
47
|
+
}
|
|
48
|
+
const extensionId = ctx.config?.chrome?.extensionId;
|
|
49
|
+
const nativeHostInstalled = await fs.pathExists(getManifestTarget("chrome").manifestPath);
|
|
50
|
+
let extensionDetected = false;
|
|
51
|
+
if (extensionId) {
|
|
52
|
+
extensionDetected = await detectExtensionProfile(extensionId) !== null;
|
|
53
|
+
}
|
|
54
|
+
const nativeHostReady = ensureNativeHostInstalled({ extensionId }).catch(() => {
|
|
55
|
+
});
|
|
56
|
+
const activeHandoff = await hasActiveHandoff();
|
|
57
|
+
let connectionLabel;
|
|
58
|
+
if (activeHandoff) {
|
|
59
|
+
connectionLabel = chalk.green("Handoff pending");
|
|
60
|
+
} else if (nativeHostInstalled && extensionDetected) {
|
|
61
|
+
connectionLabel = chalk.green("Extension ready");
|
|
62
|
+
} else if (nativeHostInstalled) {
|
|
63
|
+
connectionLabel = chalk.yellow("Native host installed");
|
|
64
|
+
} else {
|
|
65
|
+
connectionLabel = chalk.red("Not installed");
|
|
66
|
+
}
|
|
67
|
+
const statusLabel = nativeHostInstalled ? "Ready" : "Disabled";
|
|
68
|
+
const extLabel = nativeHostInstalled ? extensionDetected ? chalk.green("Installed") : chalk.yellow("Native host only") : chalk.red("Not installed");
|
|
69
|
+
let selected = null;
|
|
70
|
+
let isReshow = false;
|
|
71
|
+
while (true) {
|
|
72
|
+
const enabledByDefault = ctx.config?.chrome?.enabledByDefault ? "Yes" : "No";
|
|
73
|
+
const options = [
|
|
74
|
+
{ label: "Open in Chrome", value: "open", description: "Hand off session and open browser" },
|
|
75
|
+
{ label: "Manage permissions", value: "permissions", description: "Open extension settings page" },
|
|
76
|
+
{ label: "Reconnect extension", value: "reconnect", description: "Reinstall native messaging host" },
|
|
77
|
+
{ label: `Enabled by default: ${enabledByDefault}`, value: "toggle", description: "Start browser bridge with the CLI" }
|
|
78
|
+
];
|
|
79
|
+
const title = [
|
|
80
|
+
chalk.yellow.bold("Autohand in Chrome (Beta)"),
|
|
81
|
+
"",
|
|
82
|
+
"Autohand in Chrome works with the extension to control your browser",
|
|
83
|
+
"from the CLI. Navigate, fill forms, capture screenshots, and debug.",
|
|
84
|
+
"",
|
|
85
|
+
`Connection: ${connectionLabel}`,
|
|
86
|
+
`Status: ${statusLabel}`,
|
|
87
|
+
`Extension: ${extLabel}`,
|
|
88
|
+
"",
|
|
89
|
+
`Usage: ${chalk.yellow("autohand --chrome")} or ${chalk.yellow("autohand --no-chrome")}`,
|
|
90
|
+
"",
|
|
91
|
+
"Site-level permissions are inherited from the Chrome extension.",
|
|
92
|
+
`Learn more: ${chalk.gray("https://autohand.ai/docs/chrome")}`
|
|
93
|
+
].join("\n");
|
|
94
|
+
if (isReshow) {
|
|
95
|
+
const titleLines = title.split("\n").length;
|
|
96
|
+
const optionLines = options.length * 2;
|
|
97
|
+
const chrome2 = 1;
|
|
98
|
+
const totalLines = titleLines + optionLines + chrome2 + 3;
|
|
99
|
+
process.stdout.write(`\x1B[${totalLines}A\x1B[0J`);
|
|
100
|
+
}
|
|
101
|
+
selected = await withModalPause(
|
|
102
|
+
ctx,
|
|
103
|
+
() => showModal({ title, options, initialIndex: isReshow ? 3 : void 0 })
|
|
104
|
+
);
|
|
105
|
+
if (!selected) return null;
|
|
106
|
+
if (selected.value === "toggle" && ctx.config) {
|
|
107
|
+
const chromeConfig = ctx.config.chrome ?? {};
|
|
108
|
+
chromeConfig.enabledByDefault = !chromeConfig.enabledByDefault;
|
|
109
|
+
ctx.config.chrome = chromeConfig;
|
|
110
|
+
await saveConfig(ctx.config);
|
|
111
|
+
isReshow = true;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
switch (selected.value) {
|
|
117
|
+
case "open": {
|
|
118
|
+
await nativeHostReady;
|
|
119
|
+
await createBrowserHandoff({
|
|
120
|
+
sessionId,
|
|
121
|
+
workspaceRoot: ctx.workspaceRoot,
|
|
122
|
+
extensionId,
|
|
123
|
+
installUrl: ctx.config?.chrome?.installUrl
|
|
124
|
+
});
|
|
125
|
+
await openChromeContinuation(
|
|
126
|
+
buildChromeOpenUrl({ installUrl: ctx.config?.chrome?.installUrl }),
|
|
127
|
+
ctx.config?.chrome?.browser ?? "auto",
|
|
128
|
+
{ userDataDir: ctx.config?.chrome?.userDataDir, profileDirectory: ctx.config?.chrome?.profileDirectory }
|
|
129
|
+
);
|
|
130
|
+
return `${chalk.green("\u2713")} Opened Chrome. Side panel ${chalk.gray("(Cmd+E)")} to continue.
|
|
131
|
+
Session: ${chalk.gray(sessionId)}`;
|
|
132
|
+
}
|
|
133
|
+
case "permissions": {
|
|
134
|
+
return "Open the Chrome extension options page to manage permissions.";
|
|
135
|
+
}
|
|
136
|
+
case "reconnect": {
|
|
137
|
+
await nativeHostReady;
|
|
138
|
+
return `${chalk.green("\u2713")} Native messaging host reinstalled. Open the Chrome side panel manually if needed.`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export {
|
|
145
|
+
metadata,
|
|
146
|
+
chrome
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* @license
|
|
150
|
+
* Copyright 2026 Autohand AI LLC
|
|
151
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
152
|
+
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
|
|
4
4
|
|
|
5
5
|
// src/commands/completion.ts
|
|
6
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -311,7 +311,7 @@ async function execute(args) {
|
|
|
311
311
|
{ label: "Zsh", value: "zsh" },
|
|
312
312
|
{ label: "Fish", value: "fish" }
|
|
313
313
|
];
|
|
314
|
-
const shellResult = await
|
|
314
|
+
const shellResult = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
|
|
315
315
|
title: "Select your shell:",
|
|
316
316
|
options: shellOptions,
|
|
317
317
|
initialIndex: shellOptions.findIndex((o) => o.value === (detected || "bash"))
|
|
@@ -327,7 +327,7 @@ async function execute(args) {
|
|
|
327
327
|
{ label: "Install completion to default location", value: "install" },
|
|
328
328
|
{ label: "Show installation instructions", value: "instructions" }
|
|
329
329
|
];
|
|
330
|
-
const actionResult = await
|
|
330
|
+
const actionResult = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
|
|
331
331
|
title: "What would you like to do?",
|
|
332
332
|
options: actionOptions
|
|
333
333
|
});
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutoReportManager
|
|
3
|
+
} from "./chunk-C46B72VK.js";
|
|
4
|
+
import {
|
|
5
|
+
package_default
|
|
6
|
+
} from "./chunk-JB3JCYBJ.js";
|
|
7
|
+
import {
|
|
8
|
+
loadConfig
|
|
9
|
+
} from "./chunk-IEPLQ47J.js";
|
|
10
|
+
|
|
11
|
+
// src/reporting/processErrorReporting.ts
|
|
12
|
+
var DEFAULT_API_BASE_URL = "https://api.autohand.ai";
|
|
13
|
+
var DEFAULT_REPORT_TIMEOUT_MS = 6500;
|
|
14
|
+
var installedProcesses = /* @__PURE__ */ new WeakSet();
|
|
15
|
+
var managerCache = /* @__PURE__ */ new Map();
|
|
16
|
+
function getArgValue(argv, flag) {
|
|
17
|
+
if (!argv) {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
for (let i = 0; i < argv.length; i++) {
|
|
21
|
+
const token = argv[i];
|
|
22
|
+
if (token === flag) {
|
|
23
|
+
return argv[i + 1];
|
|
24
|
+
}
|
|
25
|
+
if (token.startsWith(`${flag}=`)) {
|
|
26
|
+
return token.slice(flag.length + 1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return void 0;
|
|
30
|
+
}
|
|
31
|
+
function resolveConfigPath(processRef, explicitPath) {
|
|
32
|
+
return explicitPath ?? getArgValue(processRef.argv, "--config") ?? processRef.env.AUTOHAND_CONFIG;
|
|
33
|
+
}
|
|
34
|
+
function detectClientName(processRef) {
|
|
35
|
+
const envClientName = processRef.env.AUTOHAND_CLIENT_NAME;
|
|
36
|
+
if (envClientName) {
|
|
37
|
+
return envClientName;
|
|
38
|
+
}
|
|
39
|
+
const mode = getArgValue(processRef.argv, "--mode");
|
|
40
|
+
if (mode === "acp" || mode === "rpc") {
|
|
41
|
+
return mode;
|
|
42
|
+
}
|
|
43
|
+
return "cli";
|
|
44
|
+
}
|
|
45
|
+
function getLogPrefix(processRef) {
|
|
46
|
+
return detectClientName(processRef) === "acp" ? "[ACP]" : "[DEBUG]";
|
|
47
|
+
}
|
|
48
|
+
function captureLastError(reason) {
|
|
49
|
+
globalThis.__autohandLastError = reason;
|
|
50
|
+
}
|
|
51
|
+
function sleep(ms) {
|
|
52
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
53
|
+
}
|
|
54
|
+
function buildFallbackConfig(configPath, processRef) {
|
|
55
|
+
return {
|
|
56
|
+
provider: "openrouter",
|
|
57
|
+
api: {
|
|
58
|
+
baseUrl: processRef.env.AUTOHAND_API_URL || DEFAULT_API_BASE_URL,
|
|
59
|
+
companySecret: processRef.env.AUTOHAND_SECRET || ""
|
|
60
|
+
},
|
|
61
|
+
autoReport: {
|
|
62
|
+
enabled: true
|
|
63
|
+
},
|
|
64
|
+
telemetry: {
|
|
65
|
+
enabled: false
|
|
66
|
+
},
|
|
67
|
+
configPath: configPath ?? "process-error-fallback",
|
|
68
|
+
isNewConfig: false
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async function getAutoReportManager(processRef, explicitConfigPath) {
|
|
72
|
+
const configPath = resolveConfigPath(processRef, explicitConfigPath);
|
|
73
|
+
const cacheKey = configPath ?? "__default__";
|
|
74
|
+
const cached = managerCache.get(cacheKey);
|
|
75
|
+
if (cached) {
|
|
76
|
+
return cached;
|
|
77
|
+
}
|
|
78
|
+
const managerPromise = (async () => {
|
|
79
|
+
let config;
|
|
80
|
+
try {
|
|
81
|
+
config = await loadConfig(configPath);
|
|
82
|
+
} catch {
|
|
83
|
+
config = buildFallbackConfig(configPath, processRef);
|
|
84
|
+
}
|
|
85
|
+
return new AutoReportManager(config, package_default.version);
|
|
86
|
+
})();
|
|
87
|
+
managerCache.set(cacheKey, managerPromise);
|
|
88
|
+
return managerPromise;
|
|
89
|
+
}
|
|
90
|
+
function isIgnorableStdinReadError(err, _processRef) {
|
|
91
|
+
if (!err || typeof err !== "object") {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const maybeError = err;
|
|
95
|
+
return maybeError.code === "EIO" && maybeError.syscall === "read";
|
|
96
|
+
}
|
|
97
|
+
function isIgnorableFilesystemError(err) {
|
|
98
|
+
if (!err || typeof err !== "object") return false;
|
|
99
|
+
const maybeError = err;
|
|
100
|
+
if (maybeError.syscall !== "mkdir") return false;
|
|
101
|
+
return maybeError.code === "EACCES" || maybeError.code === "EEXIST";
|
|
102
|
+
}
|
|
103
|
+
function isIgnorableTerminalOrRuntimeError(err) {
|
|
104
|
+
if (!err || typeof err !== "object") return false;
|
|
105
|
+
const message = err.message ?? "";
|
|
106
|
+
if (/setRawMode.*errno/i.test(message)) return true;
|
|
107
|
+
if (message === "Generator is executing") return true;
|
|
108
|
+
if (message.includes("node:sqlite")) return true;
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
function isIgnorableUnhandledRejection(reason, processRef) {
|
|
112
|
+
if (reason && typeof reason === "object" && reason.code === "ERR_USE_AFTER_CLOSE") {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
if (isIgnorableStdinReadError(reason, processRef)) return true;
|
|
116
|
+
if (isIgnorableFilesystemError(reason)) return true;
|
|
117
|
+
if (isIgnorableTerminalOrRuntimeError(reason)) return true;
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
function toReportableError(reason) {
|
|
121
|
+
if (reason instanceof Error) {
|
|
122
|
+
return reason;
|
|
123
|
+
}
|
|
124
|
+
const fallbackName = "NonErrorProcessFault";
|
|
125
|
+
if (reason && typeof reason === "object") {
|
|
126
|
+
const maybeErrorLike = reason;
|
|
127
|
+
const message = typeof maybeErrorLike.message === "string" ? maybeErrorLike.message : safeSerialize(reason);
|
|
128
|
+
const error2 = new Error(message);
|
|
129
|
+
error2.name = typeof maybeErrorLike.name === "string" ? maybeErrorLike.name : fallbackName;
|
|
130
|
+
return error2;
|
|
131
|
+
}
|
|
132
|
+
const error = new Error(typeof reason === "string" ? reason : String(reason));
|
|
133
|
+
error.name = fallbackName;
|
|
134
|
+
return error;
|
|
135
|
+
}
|
|
136
|
+
function safeSerialize(value) {
|
|
137
|
+
try {
|
|
138
|
+
return JSON.stringify(value);
|
|
139
|
+
} catch {
|
|
140
|
+
return String(value);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function describeReasonType(reason) {
|
|
144
|
+
if (reason === null) {
|
|
145
|
+
return "null";
|
|
146
|
+
}
|
|
147
|
+
if (Array.isArray(reason)) {
|
|
148
|
+
return "array";
|
|
149
|
+
}
|
|
150
|
+
return typeof reason;
|
|
151
|
+
}
|
|
152
|
+
async function reportProcessError(reason, options) {
|
|
153
|
+
const processRef = options.processRef ?? process;
|
|
154
|
+
if (options.handler === "unhandledRejection" && isIgnorableUnhandledRejection(reason, processRef)) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (options.handler === "uncaughtException" && (isIgnorableStdinReadError(reason, processRef) || isIgnorableTerminalOrRuntimeError(reason))) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
captureLastError(reason);
|
|
161
|
+
const error = toReportableError(reason);
|
|
162
|
+
const manager = await getAutoReportManager(processRef, options.configPath);
|
|
163
|
+
const reportPromise = manager.reportError(error, {
|
|
164
|
+
context: {
|
|
165
|
+
source: "process",
|
|
166
|
+
handler: options.handler,
|
|
167
|
+
clientName: detectClientName(processRef),
|
|
168
|
+
fatal: options.handler === "uncaughtException",
|
|
169
|
+
rawType: describeReasonType(reason),
|
|
170
|
+
...options.extraContext ?? {}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
await Promise.race([
|
|
174
|
+
reportPromise,
|
|
175
|
+
sleep(options.reportTimeoutMs ?? DEFAULT_REPORT_TIMEOUT_MS)
|
|
176
|
+
]);
|
|
177
|
+
}
|
|
178
|
+
function installProcessErrorHandlers(options = {}) {
|
|
179
|
+
const processRef = options.processRef ?? process;
|
|
180
|
+
if (installedProcesses.has(processRef)) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
installedProcesses.add(processRef);
|
|
184
|
+
const logError = options.logError ?? console.error.bind(console);
|
|
185
|
+
const exit = options.exit ?? ((code) => {
|
|
186
|
+
processRef.exit(code);
|
|
187
|
+
});
|
|
188
|
+
processRef.on("uncaughtException", (error) => {
|
|
189
|
+
if (isIgnorableStdinReadError(error, processRef)) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (isIgnorableTerminalOrRuntimeError(error)) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
captureLastError(error);
|
|
196
|
+
logError(`${getLogPrefix(processRef)} Uncaught Exception:`, error);
|
|
197
|
+
void (async () => {
|
|
198
|
+
await reportProcessError(error, {
|
|
199
|
+
handler: "uncaughtException",
|
|
200
|
+
processRef,
|
|
201
|
+
configPath: options.configPath,
|
|
202
|
+
reportTimeoutMs: options.reportTimeoutMs
|
|
203
|
+
});
|
|
204
|
+
exit(1);
|
|
205
|
+
})();
|
|
206
|
+
});
|
|
207
|
+
processRef.on("unhandledRejection", (reason, promise) => {
|
|
208
|
+
if (isIgnorableUnhandledRejection(reason, processRef)) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
captureLastError(reason);
|
|
212
|
+
logError(`${getLogPrefix(processRef)} Unhandled Rejection at:`, promise, "reason:", reason);
|
|
213
|
+
void reportProcessError(reason, {
|
|
214
|
+
handler: "unhandledRejection",
|
|
215
|
+
processRef,
|
|
216
|
+
configPath: options.configPath,
|
|
217
|
+
reportTimeoutMs: options.reportTimeoutMs
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export {
|
|
223
|
+
installProcessErrorHandlers
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* @license
|
|
227
|
+
* Copyright 2025 Autohand AI LLC
|
|
228
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
229
|
+
*/
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _chunkJHGIWNHLcjs = require('./chunk-JHGIWNHL.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkS5JNQIGLcjs = require('./chunk-S5JNQIGL.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
|
|
10
10
|
|
|
11
11
|
// src/commands/skills-new.ts
|
|
12
12
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
@@ -25,7 +25,7 @@ async function createSkill(ctx) {
|
|
|
25
25
|
console.log(_chalk2.default.red("Skills registry not available."));
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
-
const answers = await
|
|
28
|
+
const answers = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, [
|
|
29
29
|
{
|
|
30
30
|
type: "input",
|
|
31
31
|
name: "name",
|
|
@@ -65,7 +65,7 @@ async function createSkill(ctx) {
|
|
|
65
65
|
console.log(_chalk2.default.gray("Canceled: no name provided."));
|
|
66
66
|
return null;
|
|
67
67
|
}
|
|
68
|
-
const storageResult = await
|
|
68
|
+
const storageResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
69
69
|
type: "select",
|
|
70
70
|
name: "level",
|
|
71
71
|
message: "Where should this skill be saved?",
|
|
@@ -81,7 +81,7 @@ async function createSkill(ctx) {
|
|
|
81
81
|
const storageLevel = storageResult.level;
|
|
82
82
|
if (skillsRegistry.hasSkill(name)) {
|
|
83
83
|
console.log(_chalk2.default.yellow(`A skill named "${name}" already exists.`));
|
|
84
|
-
const result = await
|
|
84
|
+
const result = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
85
85
|
type: "confirm",
|
|
86
86
|
name: "overwrite",
|
|
87
87
|
message: "Do you want to overwrite it?",
|
|
@@ -100,7 +100,7 @@ async function createSkill(ctx) {
|
|
|
100
100
|
console.log(_chalk2.default.gray(` Similarity: ${(match.score * 100).toFixed(0)}%`));
|
|
101
101
|
}
|
|
102
102
|
console.log();
|
|
103
|
-
const result = await
|
|
103
|
+
const result = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
104
104
|
type: "select",
|
|
105
105
|
name: "proceed",
|
|
106
106
|
message: "How would you like to proceed?",
|
|
@@ -150,7 +150,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
150
150
|
console.log(content.length > 800 ? content.slice(0, 800) + "\n...(truncated)" : content);
|
|
151
151
|
console.log(_chalk2.default.gray("\u2500".repeat(50)));
|
|
152
152
|
console.log();
|
|
153
|
-
const confirmResult = await
|
|
153
|
+
const confirmResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
154
154
|
type: "confirm",
|
|
155
155
|
name: "confirm",
|
|
156
156
|
message: "Save this skill?",
|
|
@@ -160,7 +160,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
160
160
|
console.log(_chalk2.default.gray("Canceled."));
|
|
161
161
|
return null;
|
|
162
162
|
}
|
|
163
|
-
const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") :
|
|
163
|
+
const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkKASXKDF2cjs.AUTOHAND_PATHS.skills;
|
|
164
164
|
const skillDir = _path2.default.join(baseDir, name);
|
|
165
165
|
const skillPath = _path2.default.join(skillDir, "SKILL.md");
|
|
166
166
|
try {
|
|
@@ -169,7 +169,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
169
169
|
console.log(_chalk2.default.green(`\u2713 Saved new skill to ${skillPath}`));
|
|
170
170
|
const success = await skillsRegistry.saveSkill(name, content);
|
|
171
171
|
if (success) {
|
|
172
|
-
const activateResult = await
|
|
172
|
+
const activateResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
173
173
|
type: "confirm",
|
|
174
174
|
name: "activate",
|
|
175
175
|
message: "Activate this skill now?",
|
|
@@ -0,0 +1,152 @@
|
|
|
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
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkOV3T5MUHcjs = require('./chunk-OV3T5MUH.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
|
|
16
|
+
|
|
17
|
+
// src/commands/chrome.ts
|
|
18
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
19
|
+
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
20
|
+
var metadata = {
|
|
21
|
+
command: "/chrome",
|
|
22
|
+
description: "continue the current session in the Autohand Chrome extension",
|
|
23
|
+
implemented: true
|
|
24
|
+
};
|
|
25
|
+
async function withModalPause(ctx, fn) {
|
|
26
|
+
await _optionalChain([ctx, 'access', _ => _.onBeforeModal, 'optionalCall', _2 => _2()]);
|
|
27
|
+
try {
|
|
28
|
+
return await fn();
|
|
29
|
+
} finally {
|
|
30
|
+
await _optionalChain([ctx, 'access', _3 => _3.onAfterModal, 'optionalCall', _4 => _4()]);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function chrome(ctx, args = []) {
|
|
34
|
+
const subcommand = _optionalChain([args, 'access', _5 => _5[0], 'optionalAccess', _6 => _6.toLowerCase, 'call', _7 => _7()]);
|
|
35
|
+
if (subcommand === "disconnect") {
|
|
36
|
+
if (!ctx.config) return "Config not available.";
|
|
37
|
+
const chromeConfig = _nullishCoalesce(ctx.config.chrome, () => ( {}));
|
|
38
|
+
chromeConfig.enabledByDefault = false;
|
|
39
|
+
ctx.config.chrome = chromeConfig;
|
|
40
|
+
await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
|
|
41
|
+
return `${_chalk2.default.green("\u2713")} Browser bridge disconnected and disabled.`;
|
|
42
|
+
}
|
|
43
|
+
const currentSession = ctx.sessionManager.getCurrentSession();
|
|
44
|
+
const sessionId = _optionalChain([currentSession, 'optionalAccess', _8 => _8.metadata, 'access', _9 => _9.sessionId]);
|
|
45
|
+
if (!sessionId) {
|
|
46
|
+
return "No active session. Start a task first, then run /chrome.";
|
|
47
|
+
}
|
|
48
|
+
const extensionId = _optionalChain([ctx, 'access', _10 => _10.config, 'optionalAccess', _11 => _11.chrome, 'optionalAccess', _12 => _12.extensionId]);
|
|
49
|
+
const nativeHostInstalled = await _fsextra2.default.pathExists(_chunkOV3T5MUHcjs.getManifestTarget.call(void 0, "chrome").manifestPath);
|
|
50
|
+
let extensionDetected = false;
|
|
51
|
+
if (extensionId) {
|
|
52
|
+
extensionDetected = await _chunkOV3T5MUHcjs.detectExtensionProfile.call(void 0, extensionId) !== null;
|
|
53
|
+
}
|
|
54
|
+
const nativeHostReady = _chunkOV3T5MUHcjs.ensureNativeHostInstalled.call(void 0, { extensionId }).catch(() => {
|
|
55
|
+
});
|
|
56
|
+
const activeHandoff = await _chunkOV3T5MUHcjs.hasActiveHandoff.call(void 0, );
|
|
57
|
+
let connectionLabel;
|
|
58
|
+
if (activeHandoff) {
|
|
59
|
+
connectionLabel = _chalk2.default.green("Handoff pending");
|
|
60
|
+
} else if (nativeHostInstalled && extensionDetected) {
|
|
61
|
+
connectionLabel = _chalk2.default.green("Extension ready");
|
|
62
|
+
} else if (nativeHostInstalled) {
|
|
63
|
+
connectionLabel = _chalk2.default.yellow("Native host installed");
|
|
64
|
+
} else {
|
|
65
|
+
connectionLabel = _chalk2.default.red("Not installed");
|
|
66
|
+
}
|
|
67
|
+
const statusLabel = nativeHostInstalled ? "Ready" : "Disabled";
|
|
68
|
+
const extLabel = nativeHostInstalled ? extensionDetected ? _chalk2.default.green("Installed") : _chalk2.default.yellow("Native host only") : _chalk2.default.red("Not installed");
|
|
69
|
+
let selected = null;
|
|
70
|
+
let isReshow = false;
|
|
71
|
+
while (true) {
|
|
72
|
+
const enabledByDefault = _optionalChain([ctx, 'access', _13 => _13.config, 'optionalAccess', _14 => _14.chrome, 'optionalAccess', _15 => _15.enabledByDefault]) ? "Yes" : "No";
|
|
73
|
+
const options = [
|
|
74
|
+
{ label: "Open in Chrome", value: "open", description: "Hand off session and open browser" },
|
|
75
|
+
{ label: "Manage permissions", value: "permissions", description: "Open extension settings page" },
|
|
76
|
+
{ label: "Reconnect extension", value: "reconnect", description: "Reinstall native messaging host" },
|
|
77
|
+
{ label: `Enabled by default: ${enabledByDefault}`, value: "toggle", description: "Start browser bridge with the CLI" }
|
|
78
|
+
];
|
|
79
|
+
const title = [
|
|
80
|
+
_chalk2.default.yellow.bold("Autohand in Chrome (Beta)"),
|
|
81
|
+
"",
|
|
82
|
+
"Autohand in Chrome works with the extension to control your browser",
|
|
83
|
+
"from the CLI. Navigate, fill forms, capture screenshots, and debug.",
|
|
84
|
+
"",
|
|
85
|
+
`Connection: ${connectionLabel}`,
|
|
86
|
+
`Status: ${statusLabel}`,
|
|
87
|
+
`Extension: ${extLabel}`,
|
|
88
|
+
"",
|
|
89
|
+
`Usage: ${_chalk2.default.yellow("autohand --chrome")} or ${_chalk2.default.yellow("autohand --no-chrome")}`,
|
|
90
|
+
"",
|
|
91
|
+
"Site-level permissions are inherited from the Chrome extension.",
|
|
92
|
+
`Learn more: ${_chalk2.default.gray("https://autohand.ai/docs/chrome")}`
|
|
93
|
+
].join("\n");
|
|
94
|
+
if (isReshow) {
|
|
95
|
+
const titleLines = title.split("\n").length;
|
|
96
|
+
const optionLines = options.length * 2;
|
|
97
|
+
const chrome2 = 1;
|
|
98
|
+
const totalLines = titleLines + optionLines + chrome2 + 3;
|
|
99
|
+
process.stdout.write(`\x1B[${totalLines}A\x1B[0J`);
|
|
100
|
+
}
|
|
101
|
+
selected = await withModalPause(
|
|
102
|
+
ctx,
|
|
103
|
+
() => _chunkCK4HAHVYcjs.showModal.call(void 0, { title, options, initialIndex: isReshow ? 3 : void 0 })
|
|
104
|
+
);
|
|
105
|
+
if (!selected) return null;
|
|
106
|
+
if (selected.value === "toggle" && ctx.config) {
|
|
107
|
+
const chromeConfig = _nullishCoalesce(ctx.config.chrome, () => ( {}));
|
|
108
|
+
chromeConfig.enabledByDefault = !chromeConfig.enabledByDefault;
|
|
109
|
+
ctx.config.chrome = chromeConfig;
|
|
110
|
+
await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
|
|
111
|
+
isReshow = true;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
switch (selected.value) {
|
|
117
|
+
case "open": {
|
|
118
|
+
await nativeHostReady;
|
|
119
|
+
await _chunkOV3T5MUHcjs.createBrowserHandoff.call(void 0, {
|
|
120
|
+
sessionId,
|
|
121
|
+
workspaceRoot: ctx.workspaceRoot,
|
|
122
|
+
extensionId,
|
|
123
|
+
installUrl: _optionalChain([ctx, 'access', _16 => _16.config, 'optionalAccess', _17 => _17.chrome, 'optionalAccess', _18 => _18.installUrl])
|
|
124
|
+
});
|
|
125
|
+
await _chunkOV3T5MUHcjs.openChromeContinuation.call(void 0,
|
|
126
|
+
_chunkOV3T5MUHcjs.buildChromeOpenUrl.call(void 0, { installUrl: _optionalChain([ctx, 'access', _19 => _19.config, 'optionalAccess', _20 => _20.chrome, 'optionalAccess', _21 => _21.installUrl]) }),
|
|
127
|
+
_nullishCoalesce(_optionalChain([ctx, 'access', _22 => _22.config, 'optionalAccess', _23 => _23.chrome, 'optionalAccess', _24 => _24.browser]), () => ( "auto")),
|
|
128
|
+
{ userDataDir: _optionalChain([ctx, 'access', _25 => _25.config, 'optionalAccess', _26 => _26.chrome, 'optionalAccess', _27 => _27.userDataDir]), profileDirectory: _optionalChain([ctx, 'access', _28 => _28.config, 'optionalAccess', _29 => _29.chrome, 'optionalAccess', _30 => _30.profileDirectory]) }
|
|
129
|
+
);
|
|
130
|
+
return `${_chalk2.default.green("\u2713")} Opened Chrome. Side panel ${_chalk2.default.gray("(Cmd+E)")} to continue.
|
|
131
|
+
Session: ${_chalk2.default.gray(sessionId)}`;
|
|
132
|
+
}
|
|
133
|
+
case "permissions": {
|
|
134
|
+
return "Open the Chrome extension options page to manage permissions.";
|
|
135
|
+
}
|
|
136
|
+
case "reconnect": {
|
|
137
|
+
await nativeHostReady;
|
|
138
|
+
return `${_chalk2.default.green("\u2713")} Native messaging host reinstalled. Open the Chrome side panel manually if needed.`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
exports.metadata = metadata; exports.chrome = chrome;
|
|
148
|
+
/**
|
|
149
|
+
* @license
|
|
150
|
+
* Copyright 2026 Autohand AI LLC
|
|
151
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
152
|
+
*/
|