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,139 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PROJECT_DIR_NAME
|
|
3
|
+
} from "./chunk-SHRLFX6F.js";
|
|
4
|
+
|
|
5
|
+
// src/permissions/localProjectPermissions.ts
|
|
6
|
+
import fs from "fs-extra";
|
|
7
|
+
import path from "path";
|
|
8
|
+
var LOCAL_SETTINGS_FILE = "settings.local.json";
|
|
9
|
+
function normalizePermissionSettings(settings) {
|
|
10
|
+
if (!settings) {
|
|
11
|
+
return settings;
|
|
12
|
+
}
|
|
13
|
+
const allowList = settings.allowList ?? settings.whitelist ?? [];
|
|
14
|
+
const denyList = settings.denyList ?? settings.blacklist ?? [];
|
|
15
|
+
return {
|
|
16
|
+
...settings,
|
|
17
|
+
allowList,
|
|
18
|
+
denyList,
|
|
19
|
+
whitelist: void 0,
|
|
20
|
+
blacklist: void 0
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function getLocalSettingsPath(workspaceRoot) {
|
|
24
|
+
return path.join(workspaceRoot, PROJECT_DIR_NAME, LOCAL_SETTINGS_FILE);
|
|
25
|
+
}
|
|
26
|
+
async function loadLocalProjectSettings(workspaceRoot) {
|
|
27
|
+
const settingsPath = getLocalSettingsPath(workspaceRoot);
|
|
28
|
+
try {
|
|
29
|
+
if (await fs.pathExists(settingsPath)) {
|
|
30
|
+
const content = await fs.readFile(settingsPath, "utf8");
|
|
31
|
+
const parsed = JSON.parse(content);
|
|
32
|
+
return {
|
|
33
|
+
...parsed,
|
|
34
|
+
permissions: normalizePermissionSettings(parsed.permissions)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(`Warning: Failed to parse local settings at ${settingsPath}:`, error.message);
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
async function saveLocalProjectSettings(workspaceRoot, settings) {
|
|
43
|
+
const settingsPath = getLocalSettingsPath(workspaceRoot);
|
|
44
|
+
const dir = path.dirname(settingsPath);
|
|
45
|
+
await fs.ensureDir(dir);
|
|
46
|
+
const toSave = {
|
|
47
|
+
...settings,
|
|
48
|
+
version: 1
|
|
49
|
+
};
|
|
50
|
+
await fs.writeJson(settingsPath, toSave, { spaces: 2 });
|
|
51
|
+
}
|
|
52
|
+
async function addToLocalAllowList(workspaceRoot, pattern) {
|
|
53
|
+
const current = await loadLocalProjectSettings(workspaceRoot) || {};
|
|
54
|
+
const permissions = normalizePermissionSettings(current.permissions) || {};
|
|
55
|
+
const allowList = permissions.allowList || [];
|
|
56
|
+
if (!allowList.includes(pattern)) {
|
|
57
|
+
allowList.push(pattern);
|
|
58
|
+
await saveLocalProjectSettings(workspaceRoot, {
|
|
59
|
+
...current,
|
|
60
|
+
permissions: {
|
|
61
|
+
...permissions,
|
|
62
|
+
allowList
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function addToLocalDenyList(workspaceRoot, pattern) {
|
|
68
|
+
const current = await loadLocalProjectSettings(workspaceRoot) || {};
|
|
69
|
+
const permissions = normalizePermissionSettings(current.permissions) || {};
|
|
70
|
+
const denyList = permissions.denyList || [];
|
|
71
|
+
if (!denyList.includes(pattern)) {
|
|
72
|
+
denyList.push(pattern);
|
|
73
|
+
await saveLocalProjectSettings(workspaceRoot, {
|
|
74
|
+
...current,
|
|
75
|
+
permissions: {
|
|
76
|
+
...permissions,
|
|
77
|
+
denyList
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function mergePermissions(globalSettings, localSettings) {
|
|
83
|
+
const normalizedGlobal = normalizePermissionSettings(globalSettings) ?? {};
|
|
84
|
+
const normalizedLocal = normalizePermissionSettings(localSettings);
|
|
85
|
+
if (!normalizedLocal) {
|
|
86
|
+
return normalizedGlobal;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
// Global settings as base
|
|
90
|
+
...normalizedGlobal,
|
|
91
|
+
// Local mode overrides global if set
|
|
92
|
+
mode: normalizedLocal.mode || normalizedGlobal.mode,
|
|
93
|
+
allowList: [
|
|
94
|
+
...normalizedGlobal.allowList || [],
|
|
95
|
+
...normalizedLocal.allowList || []
|
|
96
|
+
].filter((v, i, a) => a.indexOf(v) === i),
|
|
97
|
+
denyList: [
|
|
98
|
+
...normalizedGlobal.denyList || [],
|
|
99
|
+
...normalizedLocal.denyList || []
|
|
100
|
+
].filter((v, i, a) => a.indexOf(v) === i),
|
|
101
|
+
// Merge rules (local rules checked first)
|
|
102
|
+
rules: [
|
|
103
|
+
...normalizedLocal.rules || [],
|
|
104
|
+
...normalizedGlobal.rules || []
|
|
105
|
+
],
|
|
106
|
+
// Use local rememberSession if set, otherwise global
|
|
107
|
+
rememberSession: normalizedLocal.rememberSession ?? normalizedGlobal.rememberSession,
|
|
108
|
+
allowPatterns: [
|
|
109
|
+
...normalizedGlobal.allowPatterns || [],
|
|
110
|
+
...normalizedLocal.allowPatterns || []
|
|
111
|
+
],
|
|
112
|
+
denyPatterns: [
|
|
113
|
+
...normalizedGlobal.denyPatterns || [],
|
|
114
|
+
...normalizedLocal.denyPatterns || []
|
|
115
|
+
],
|
|
116
|
+
availableTools: [
|
|
117
|
+
...normalizedGlobal.availableTools || [],
|
|
118
|
+
...normalizedLocal.availableTools || []
|
|
119
|
+
],
|
|
120
|
+
excludedTools: [
|
|
121
|
+
...normalizedGlobal.excludedTools || [],
|
|
122
|
+
...normalizedLocal.excludedTools || []
|
|
123
|
+
],
|
|
124
|
+
allPathsAllowed: normalizedLocal.allPathsAllowed ?? normalizedGlobal.allPathsAllowed,
|
|
125
|
+
allUrlsAllowed: normalizedLocal.allUrlsAllowed ?? normalizedGlobal.allUrlsAllowed
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
loadLocalProjectSettings,
|
|
131
|
+
addToLocalAllowList,
|
|
132
|
+
addToLocalDenyList,
|
|
133
|
+
mergePermissions
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Local Project Permissions
|
|
137
|
+
* Handles per-project permission settings stored in .autohand/settings.local.json
|
|
138
|
+
* @license Apache-2.0
|
|
139
|
+
*/
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
var _chunkYISPVAXOcjs = require('./chunk-YISPVAXO.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
|
|
14
|
+
|
|
15
|
+
// src/commands/setup.ts
|
|
16
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
17
|
+
var metadata = {
|
|
18
|
+
command: "/setup",
|
|
19
|
+
description: _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
|
|
20
|
+
implemented: true
|
|
21
|
+
};
|
|
22
|
+
async function setup(ctx) {
|
|
23
|
+
if (ctx.isNonInteractive) {
|
|
24
|
+
return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
|
|
25
|
+
}
|
|
26
|
+
const { locale: detectedLocale } = _chunkSY2P3Z5Wcjs.detectLocale.call(void 0, );
|
|
27
|
+
const locale = _nullishCoalesce(detectedLocale, () => ( "en"));
|
|
28
|
+
await _chunkSY2P3Z5Wcjs.initI18n.call(void 0, locale);
|
|
29
|
+
const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
|
|
30
|
+
const workspaceRoot = _chunkX5P6QQOBcjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
|
|
31
|
+
if (ctx.eventEmitter) {
|
|
32
|
+
ctx.eventEmitter.emit("setup:started", {
|
|
33
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
34
|
+
locale,
|
|
35
|
+
workspaceRoot
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const wizard = new (0, _chunkYISPVAXOcjs.SetupWizard)(workspaceRoot, config);
|
|
39
|
+
const result = await wizard.run({ force: true, skipWelcome: false });
|
|
40
|
+
if (result.cancelled) {
|
|
41
|
+
if (ctx.eventEmitter) {
|
|
42
|
+
ctx.eventEmitter.emit("setup:cancelled", {
|
|
43
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
44
|
+
step: "user_cancelled"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
|
|
48
|
+
}
|
|
49
|
+
if (!result.success) {
|
|
50
|
+
if (ctx.eventEmitter) {
|
|
51
|
+
ctx.eventEmitter.emit("setup:error", {
|
|
52
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
53
|
+
error: "setup_failed"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
|
|
57
|
+
}
|
|
58
|
+
const newConfig = { ...config, ...result.config };
|
|
59
|
+
await _chunkX5P6QQOBcjs.saveConfig.call(void 0, newConfig);
|
|
60
|
+
if (ctx.eventEmitter) {
|
|
61
|
+
const provider = result.config.provider;
|
|
62
|
+
const providerConfig = provider && result.config[provider];
|
|
63
|
+
const model = providerConfig && typeof providerConfig === "object" && "model" in providerConfig ? providerConfig.model : void 0;
|
|
64
|
+
ctx.eventEmitter.emit("setup:complete", {
|
|
65
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
66
|
+
success: true,
|
|
67
|
+
provider,
|
|
68
|
+
model,
|
|
69
|
+
skippedSteps: result.skippedSteps,
|
|
70
|
+
agentsFileCreated: result.agentsFileCreated
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
console.log(_chalk2.default.green(_nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
exports.metadata = metadata; exports.setup = setup;
|
|
81
|
+
/**
|
|
82
|
+
* @license
|
|
83
|
+
* Copyright 2025 Autohand AI LLC
|
|
84
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
85
|
+
*/
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// src/commands/review.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import fse from "fs-extra";
|
|
5
|
+
var metadata = {
|
|
6
|
+
command: "/review",
|
|
7
|
+
description: "staff-level code review with 10 actionable findings",
|
|
8
|
+
implemented: true
|
|
9
|
+
};
|
|
10
|
+
async function review(ctx, args = []) {
|
|
11
|
+
const userInstructions = args.join(" ").trim();
|
|
12
|
+
const skillPath = path.resolve(
|
|
13
|
+
path.dirname(new URL(import.meta.url).pathname),
|
|
14
|
+
"../skills/builtin/code-reviewer/SKILL.md"
|
|
15
|
+
);
|
|
16
|
+
let skillBody = "";
|
|
17
|
+
try {
|
|
18
|
+
const content = await fse.readFile(skillPath, "utf-8");
|
|
19
|
+
const bodyMatch = content.match(/^---[\s\S]*?---\s*([\s\S]*)$/);
|
|
20
|
+
skillBody = bodyMatch ? bodyMatch[1].trim() : content;
|
|
21
|
+
} catch {
|
|
22
|
+
skillBody = "Perform a thorough code review analyzing architecture, security, performance, error handling, and maintainability.";
|
|
23
|
+
}
|
|
24
|
+
const parts = [
|
|
25
|
+
skillBody,
|
|
26
|
+
"",
|
|
27
|
+
"## Review Target",
|
|
28
|
+
`Workspace: ${ctx.workspaceRoot}`
|
|
29
|
+
];
|
|
30
|
+
if (userInstructions) {
|
|
31
|
+
parts.push("", "## Additional Focus", userInstructions);
|
|
32
|
+
}
|
|
33
|
+
parts.push(
|
|
34
|
+
"",
|
|
35
|
+
"## Instructions",
|
|
36
|
+
"Start the review now. Use the available tools (read_file, fff_grep, fff_find, list_tree, git_status, git_diff) to gather context, then deliver your 10-dimension review."
|
|
37
|
+
);
|
|
38
|
+
const prompt = parts.join("\n");
|
|
39
|
+
if (ctx.isNonInteractive || !ctx.queueInstruction) {
|
|
40
|
+
return prompt;
|
|
41
|
+
}
|
|
42
|
+
ctx.queueInstruction(prompt);
|
|
43
|
+
console.log(chalk.cyan("\n Starting code review..."));
|
|
44
|
+
if (userInstructions) {
|
|
45
|
+
console.log(chalk.gray(` Focus: ${userInstructions}`));
|
|
46
|
+
}
|
|
47
|
+
console.log(chalk.gray(" Analyzing 10 dimensions: architecture, security, performance, and more.\n"));
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export {
|
|
52
|
+
metadata,
|
|
53
|
+
review
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* @license
|
|
57
|
+
* Copyright 2026 Autohand AI LLC
|
|
58
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
59
|
+
*/
|
|
@@ -1,12 +1,74 @@
|
|
|
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(); } }
|
|
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(); } } var _class;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkHXQREVTAcjs = require('./chunk-HXQREVTA.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkXF2WIKHRcjs = require('./chunk-XF2WIKHR.cjs');
|
|
4
7
|
|
|
5
8
|
// src/actions/filesystem.ts
|
|
6
9
|
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
7
10
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
8
11
|
var _child_process = require('child_process');
|
|
9
12
|
var _diff = require('diff');
|
|
13
|
+
|
|
14
|
+
// src/utils/patchValidator.ts
|
|
15
|
+
function validateAndFixPatch(patch) {
|
|
16
|
+
const lines = patch.split("\n");
|
|
17
|
+
const result = [];
|
|
18
|
+
let i = 0;
|
|
19
|
+
while (i < lines.length) {
|
|
20
|
+
const line = lines[i];
|
|
21
|
+
const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
|
|
22
|
+
if (hunkMatch) {
|
|
23
|
+
i++;
|
|
24
|
+
const hunkLines = [];
|
|
25
|
+
while (i < lines.length) {
|
|
26
|
+
const nextLine = lines[i];
|
|
27
|
+
if (nextLine.match(/^@@ /) || nextLine.match(/^(---|\+\+\+|Index:|diff\s)/) || nextLine === "===================================================================") {
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
hunkLines.push(nextLine);
|
|
31
|
+
i++;
|
|
32
|
+
}
|
|
33
|
+
let oldCount = 0;
|
|
34
|
+
let newCount = 0;
|
|
35
|
+
for (const hunkLine of hunkLines) {
|
|
36
|
+
if (hunkLine.length === 0) continue;
|
|
37
|
+
const firstChar = hunkLine[0];
|
|
38
|
+
if (firstChar === "-") {
|
|
39
|
+
oldCount++;
|
|
40
|
+
} else if (firstChar === "+") {
|
|
41
|
+
newCount++;
|
|
42
|
+
} else if (firstChar === " " || firstChar === " ") {
|
|
43
|
+
oldCount++;
|
|
44
|
+
newCount++;
|
|
45
|
+
} else if (firstChar === "\\") {
|
|
46
|
+
} else {
|
|
47
|
+
oldCount++;
|
|
48
|
+
newCount++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const oldStart = hunkMatch[1];
|
|
52
|
+
const newStart = hunkMatch[3];
|
|
53
|
+
let correctedHeader;
|
|
54
|
+
if (oldCount === 0) {
|
|
55
|
+
correctedHeader = `@@ -${parseInt(oldStart) + 1} +${newStart},${newCount} @@`;
|
|
56
|
+
} else if (newCount === 0) {
|
|
57
|
+
correctedHeader = `@@ -${oldStart},${oldCount} +${parseInt(newStart) + 1} @@`;
|
|
58
|
+
} else {
|
|
59
|
+
correctedHeader = `@@ -${oldStart},${oldCount} +${newStart},${newCount} @@`;
|
|
60
|
+
}
|
|
61
|
+
result.push(correctedHeader);
|
|
62
|
+
result.push(...hunkLines);
|
|
63
|
+
} else {
|
|
64
|
+
result.push(line);
|
|
65
|
+
i++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return result.join("\n");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/actions/filesystem.ts
|
|
10
72
|
var FILE_LIMITS = {
|
|
11
73
|
/** Maximum file size for read operations (10MB) */
|
|
12
74
|
MAX_READ_SIZE: 10 * 1024 * 1024,
|
|
@@ -19,17 +81,19 @@ var FILE_LIMITS = {
|
|
|
19
81
|
/** Maximum undo stack size */
|
|
20
82
|
MAX_UNDO_STACK: 100
|
|
21
83
|
};
|
|
22
|
-
var FileActionManager = class {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
84
|
+
var FileActionManager = (_class = class {
|
|
85
|
+
__init() {this.undoStack = []}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
// Preview mode state
|
|
89
|
+
__init2() {this.previewMode = false}
|
|
90
|
+
__init3() {this.pendingChanges = []}
|
|
91
|
+
__init4() {this.batchId = null}
|
|
92
|
+
__init5() {this.changeCounter = 0}
|
|
93
|
+
__init6() {this.onBatchChange = null}
|
|
94
|
+
__init7() {this.currentToolId = ""}
|
|
95
|
+
__init8() {this.currentToolName = ""}
|
|
96
|
+
constructor(workspaceRoot, additionalDirs = []) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this);
|
|
33
97
|
const resolvedRoot = _path2.default.resolve(workspaceRoot);
|
|
34
98
|
try {
|
|
35
99
|
this.workspaceRoot = _fsextra2.default.realpathSync(resolvedRoot);
|
|
@@ -186,6 +250,14 @@ var FileActionManager = class {
|
|
|
186
250
|
get root() {
|
|
187
251
|
return this.workspaceRoot;
|
|
188
252
|
}
|
|
253
|
+
setWorkspaceRoot(workspaceRoot) {
|
|
254
|
+
const resolvedRoot = _path2.default.resolve(workspaceRoot);
|
|
255
|
+
try {
|
|
256
|
+
this.workspaceRoot = _fsextra2.default.realpathSync(resolvedRoot);
|
|
257
|
+
} catch (e4) {
|
|
258
|
+
this.workspaceRoot = resolvedRoot;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
189
261
|
async readFile(target) {
|
|
190
262
|
const filePath = this.resolvePath(target);
|
|
191
263
|
const exists = await _fsextra2.default.pathExists(filePath);
|
|
@@ -235,7 +307,8 @@ var FileActionManager = class {
|
|
|
235
307
|
async applyPatch(target, patch, description) {
|
|
236
308
|
const filePath = this.resolvePath(target);
|
|
237
309
|
const current = await this.readFileSafe(target);
|
|
238
|
-
const
|
|
310
|
+
const fixedPatch = validateAndFixPatch(patch);
|
|
311
|
+
const updated = _diff.applyPatch.call(void 0, current, fixedPatch);
|
|
239
312
|
if (updated === false) {
|
|
240
313
|
throw new Error(`Failed to apply patch to ${target}`);
|
|
241
314
|
}
|
|
@@ -261,7 +334,7 @@ var FileActionManager = class {
|
|
|
261
334
|
}
|
|
262
335
|
search(query, relativePath) {
|
|
263
336
|
const searchDir = this.resolvePath(_nullishCoalesce(relativePath, () => ( ".")));
|
|
264
|
-
const rgResult = _child_process.spawnSync.call(void 0,
|
|
337
|
+
const rgResult = _child_process.spawnSync.call(void 0, _chunkXF2WIKHRcjs.resolveRipgrepCommand.call(void 0, ), [
|
|
265
338
|
"--line-number",
|
|
266
339
|
"--color",
|
|
267
340
|
"never",
|
|
@@ -321,7 +394,7 @@ var FileActionManager = class {
|
|
|
321
394
|
const limit = _nullishCoalesce(opts.limit, () => ( 5));
|
|
322
395
|
const window = _nullishCoalesce(opts.window, () => ( 400));
|
|
323
396
|
const baseDir = this.resolvePath(_nullishCoalesce(opts.relativePath, () => ( ".")));
|
|
324
|
-
const ignoreFilter = new (0,
|
|
397
|
+
const ignoreFilter = new (0, _chunkHXQREVTAcjs.GitIgnoreParser)(baseDir);
|
|
325
398
|
const results = [];
|
|
326
399
|
const stack = [baseDir];
|
|
327
400
|
const lowerQuery = query.toLowerCase();
|
|
@@ -421,7 +494,7 @@ var FileActionManager = class {
|
|
|
421
494
|
file: normalizedRel || _path2.default.basename(current),
|
|
422
495
|
snippet
|
|
423
496
|
});
|
|
424
|
-
} catch (
|
|
497
|
+
} catch (e5) {
|
|
425
498
|
continue;
|
|
426
499
|
}
|
|
427
500
|
}
|
|
@@ -443,24 +516,13 @@ var FileActionManager = class {
|
|
|
443
516
|
resolvePath(target) {
|
|
444
517
|
const normalized = _path2.default.isAbsolute(target) ? target : _path2.default.join(this.workspaceRoot, target);
|
|
445
518
|
const resolved = _path2.default.resolve(normalized);
|
|
446
|
-
|
|
447
|
-
try {
|
|
448
|
-
realPath = _fsextra2.default.realpathSync(resolved);
|
|
449
|
-
} catch (e5) {
|
|
450
|
-
const parentDir = _path2.default.dirname(resolved);
|
|
451
|
-
try {
|
|
452
|
-
const realParent = _fsextra2.default.realpathSync(parentDir);
|
|
453
|
-
realPath = _path2.default.join(realParent, _path2.default.basename(resolved));
|
|
454
|
-
} catch (e6) {
|
|
455
|
-
realPath = resolved;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
519
|
+
const realPath = this.resolveRealPathOrAncestor(resolved);
|
|
458
520
|
const allAllowedRoots = [this.workspaceRoot, ...this.additionalDirs];
|
|
459
521
|
for (const allowedRoot of allAllowedRoots) {
|
|
460
522
|
let realRoot;
|
|
461
523
|
try {
|
|
462
524
|
realRoot = _fsextra2.default.realpathSync(allowedRoot);
|
|
463
|
-
} catch (
|
|
525
|
+
} catch (e6) {
|
|
464
526
|
realRoot = allowedRoot;
|
|
465
527
|
}
|
|
466
528
|
const rootWithSep = realRoot.endsWith(_path2.default.sep) ? realRoot : `${realRoot}${_path2.default.sep}`;
|
|
@@ -471,6 +533,21 @@ var FileActionManager = class {
|
|
|
471
533
|
const allowedDirsList = allAllowedRoots.join(", ");
|
|
472
534
|
throw new Error(`Path ${target} escapes the allowed directories: ${allowedDirsList}`);
|
|
473
535
|
}
|
|
536
|
+
resolveRealPathOrAncestor(resolvedPath) {
|
|
537
|
+
let probe = resolvedPath;
|
|
538
|
+
while (true) {
|
|
539
|
+
try {
|
|
540
|
+
const realProbe = _fsextra2.default.realpathSync(probe);
|
|
541
|
+
return probe === resolvedPath ? realProbe : _path2.default.join(realProbe, _path2.default.relative(probe, resolvedPath));
|
|
542
|
+
} catch (e7) {
|
|
543
|
+
const parent = _path2.default.dirname(probe);
|
|
544
|
+
if (parent === probe) {
|
|
545
|
+
return resolvedPath;
|
|
546
|
+
}
|
|
547
|
+
probe = parent;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}
|
|
474
551
|
walkFallback(query, baseDir) {
|
|
475
552
|
const hits = [];
|
|
476
553
|
const stack = [baseDir];
|
|
@@ -590,7 +667,7 @@ var FileActionManager = class {
|
|
|
590
667
|
return `${hit.file}:${hit.line}
|
|
591
668
|
${snippet.join("\n")}`;
|
|
592
669
|
}
|
|
593
|
-
};
|
|
670
|
+
}, _class);
|
|
594
671
|
|
|
595
672
|
|
|
596
673
|
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkCO2AADYUcjs = require('./chunk-CO2AADYU.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
|
|
13
13
|
|
|
14
14
|
// src/commands/logout.ts
|
|
15
15
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
16
16
|
var metadata = {
|
|
17
17
|
command: "/logout",
|
|
18
|
-
description:
|
|
18
|
+
description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.description"),
|
|
19
19
|
implemented: true
|
|
20
20
|
};
|
|
21
21
|
async function logout(ctx) {
|
|
@@ -26,31 +26,35 @@ async function logout(ctx) {
|
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
28
|
const userName = _optionalChain([config, 'access', _3 => _3.auth, 'access', _4 => _4.user, 'optionalAccess', _5 => _5.name]) || _optionalChain([config, 'access', _6 => _6.auth, 'access', _7 => _7.user, 'optionalAccess', _8 => _8.email]) || "user";
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
const selected = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
|
|
30
|
+
title: `Log out from ${_chalk2.default.cyan(userName)}?`,
|
|
31
|
+
options: [
|
|
32
|
+
{ label: "Yes", value: "yes" },
|
|
33
|
+
{ label: "No", value: "no" }
|
|
34
|
+
]
|
|
34
35
|
});
|
|
35
|
-
if (!
|
|
36
|
-
console.log(_chalk2.default.gray(
|
|
36
|
+
if (!selected || selected.value === "no") {
|
|
37
|
+
console.log(_chalk2.default.gray(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.cancelled")));
|
|
37
38
|
return null;
|
|
38
39
|
}
|
|
39
|
-
const authClient =
|
|
40
|
+
const authClient = _chunkCO2AADYUcjs.getAuthClient.call(void 0, );
|
|
40
41
|
try {
|
|
41
42
|
await authClient.logout(config.auth.token);
|
|
42
43
|
} catch (e) {
|
|
43
44
|
}
|
|
45
|
+
if (ctx.currentSession) {
|
|
46
|
+
await ctx.currentSession.save();
|
|
47
|
+
}
|
|
44
48
|
const updatedConfig = {
|
|
45
49
|
...config,
|
|
46
50
|
auth: void 0
|
|
47
51
|
};
|
|
48
|
-
await
|
|
52
|
+
await _chunkX5P6QQOBcjs.saveConfig.call(void 0, updatedConfig);
|
|
49
53
|
console.log();
|
|
50
|
-
console.log(_chalk2.default.green(
|
|
54
|
+
console.log(_chalk2.default.green(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.success")));
|
|
51
55
|
console.log(_chalk2.default.gray("Your local session has been cleared."));
|
|
52
56
|
console.log();
|
|
53
|
-
|
|
57
|
+
process.exit(0);
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/session/chatLog.ts
|
|
2
|
+
function decodeJsonStringLiteral(value) {
|
|
3
|
+
try {
|
|
4
|
+
return JSON.parse(`"${value}"`);
|
|
5
|
+
} catch (e) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function extractJsonStringField(raw, field) {
|
|
10
|
+
const match = raw.match(new RegExp(`"${field}"\\s*:\\s*"((?:\\\\.|[^"\\\\])*)"`, "s"));
|
|
11
|
+
return _optionalChain([match, 'optionalAccess', _ => _[1]]) ? decodeJsonStringLiteral(match[1]) : null;
|
|
12
|
+
}
|
|
13
|
+
function getAssistantChatLogContent(content) {
|
|
14
|
+
const trimmed = content.trim();
|
|
15
|
+
if (!trimmed) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const parsed = JSON.parse(trimmed);
|
|
20
|
+
for (const field of ["finalResponse", "response", "content", "message"]) {
|
|
21
|
+
const value = parsed[field];
|
|
22
|
+
if (typeof value === "string" && value.trim()) {
|
|
23
|
+
return value.trim();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
} catch (e2) {
|
|
28
|
+
const finalResponse = _nullishCoalesce(extractJsonStringField(trimmed, "finalResponse"), () => ( extractJsonStringField(trimmed, "response")));
|
|
29
|
+
if (_optionalChain([finalResponse, 'optionalAccess', _2 => _2.trim, 'call', _3 => _3()])) {
|
|
30
|
+
return finalResponse.trim();
|
|
31
|
+
}
|
|
32
|
+
if (trimmed.startsWith("{") || trimmed.includes('"thought"')) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return trimmed;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function buildSessionChatLog(messages) {
|
|
39
|
+
const chatMessages = [];
|
|
40
|
+
for (const message of messages) {
|
|
41
|
+
if (message.role === "user") {
|
|
42
|
+
const content = message.content.trim();
|
|
43
|
+
if (content) {
|
|
44
|
+
chatMessages.push({ role: "user", content });
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (message.role === "assistant") {
|
|
49
|
+
const content = getAssistantChatLogContent(message.content);
|
|
50
|
+
if (content) {
|
|
51
|
+
chatMessages.push({ role: "assistant", content });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return chatMessages;
|
|
56
|
+
}
|
|
57
|
+
function formatChatLogPreview(content, maxLength = 100) {
|
|
58
|
+
const singleLine = content.replace(/\n/g, " ").replace(/\s+/g, " ").trim();
|
|
59
|
+
return singleLine.length > maxLength ? `${singleLine.slice(0, maxLength)}...` : singleLine;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
exports.getAssistantChatLogContent = getAssistantChatLogContent; exports.buildSessionChatLog = buildSessionChatLog; exports.formatChatLogPreview = formatChatLogPreview;
|
|
67
|
+
/**
|
|
68
|
+
* @license
|
|
69
|
+
* Copyright 2026 Autohand AI LLC
|
|
70
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
71
|
+
*/
|