autohand-cli 0.8.3 → 0.9.0
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 +173 -74
- package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
- package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-XPWSVO3Q.js} +2 -2
- package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
- package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
- package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
- package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZEQWP6YM.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-CWLTFKWO.js} +1 -1
- package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TMAJQU4S.cjs} +2 -2
- package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-MQXEED2U.cjs} +37 -13
- package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-QBKQEXDW.js} +33 -9
- package/dist/LearnAdvisor-46FG2XIP.js +9 -0
- package/dist/LearnAdvisor-XBRDNAGH.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-34L4YOKA.cjs +8 -0
- package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-WJMLPWGU.js} +2 -2
- package/dist/NVIDIAProvider-2HR737UE.js +14 -0
- package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
- package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
- package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-KMYILJ4Z.js} +3 -3
- package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
- package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
- package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
- package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-HFPRVQ25.js} +3 -1
- package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-PNBTJJTQ.js} +2 -2
- package/dist/SessionManager-WAPTFMDO.cjs +10 -0
- package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-4RRD5GMX.js} +2 -2
- package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
- package/dist/SubAgent-FDIH3DXB.js +11 -0
- package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
- package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-LRPFNCKJ.js} +1 -1
- package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
- package/dist/about-BW3PDZUU.js +14 -0
- package/dist/about-FCAX37YC.cjs +14 -0
- package/dist/acp-EOETGAHC.cjs +1517 -0
- package/dist/acp-VHEL7BOW.js +1517 -0
- package/dist/actionExecutor-33I47NZS.js +24 -0
- package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
- package/dist/add-dir-7SS6KSH5.cjs +11 -0
- package/dist/{add-dir-TUJM3PG5.js → add-dir-VFX7QT4E.js} +3 -2
- package/dist/agent-DMRUFU4M.cjs +116 -0
- package/dist/agent-WCJEYQJT.js +116 -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-CHROO3VU.cjs +17 -0
- package/dist/agents-UVDUL65K.js +17 -0
- package/dist/agents-new-AUBWSOXP.js +17 -0
- package/dist/agents-new-Y562WC47.cjs +17 -0
- package/dist/{autoSkill-LQEVQFIH.js → autoSkill-EFMK6WU6.js} +2 -2
- package/dist/autoSkill-YOLLFTP2.cjs +20 -0
- package/dist/{automode-R6P3VHLS.js → automode-BMYSRM34.js} +2 -2
- package/dist/automode-DBLKTTKD.cjs +10 -0
- package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
- package/dist/browserToolBridge-F5N66PE7.js +58 -0
- package/dist/chrome-ATC4OO5I.cjs +20 -0
- package/dist/chrome-NHJ44WUN.js +50 -0
- package/dist/chrome-O62WXV7F.js +20 -0
- package/dist/chrome-XHJLCO4M.cjs +50 -0
- package/dist/chromeSkill-53TH55PM.js +105 -0
- package/dist/chromeSkill-THW7N4IY.cjs +105 -0
- package/dist/{chunk-EGPXJERY.cjs → chunk-2CGE7ZV3.cjs} +26 -26
- package/dist/chunk-2H5O745H.js +63 -0
- package/dist/chunk-2HOLOHVK.js +2219 -0
- package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
- package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
- package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
- package/dist/{chunk-KLWJIPU2.cjs → chunk-3DDL2E55.cjs} +20 -16
- package/dist/chunk-3EDDDZS2.cjs +5 -0
- package/dist/{chunk-2UC22DJU.js → chunk-3GUEUCZK.js} +28 -4
- package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
- package/dist/chunk-3LJJG5YY.cjs +387 -0
- package/dist/chunk-3OF56EMA.cjs +197 -0
- package/dist/chunk-3PXKRVCW.js +108 -0
- package/dist/{chunk-ADUFCS4Q.cjs → chunk-3S563FNF.cjs} +160 -79
- package/dist/chunk-3UT7R3XV.js +663 -0
- package/dist/chunk-4256YRCO.cjs +80 -0
- package/dist/chunk-46C73ZKK.cjs +663 -0
- package/dist/chunk-46MTALKD.js +44 -0
- package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
- package/dist/chunk-4LMUDS2K.js +124 -0
- package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
- package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
- package/dist/chunk-5JFTY3VU.js +74 -0
- package/dist/chunk-5JTTM5SC.js +59 -0
- package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
- package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
- package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
- package/dist/{chunk-64H4FRM3.cjs → chunk-6GUODJKM.cjs} +32 -34
- package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
- package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
- package/dist/chunk-6R25D2H5.js +121 -0
- package/dist/{chunk-OUZQXMHL.cjs → chunk-6XVVIY54.cjs} +55 -25
- package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
- package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
- package/dist/chunk-7JLT2VNW.cjs +18963 -0
- package/dist/chunk-7LWQCE4Y.cjs +987 -0
- package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
- package/dist/{chunk-TUD3Z3BD.js → chunk-7RFJB75Y.js} +140 -59
- package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
- package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
- package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
- package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
- package/dist/chunk-ARBEHFCG.js +715 -0
- package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
- package/dist/chunk-AU6JAGZJ.cjs +231 -0
- package/dist/chunk-AUFNACED.js +18963 -0
- package/dist/{chunk-N2BLVUPM.cjs → chunk-AUYSIEVV.cjs} +3 -3
- package/dist/chunk-B4HSNOIH.cjs +354 -0
- package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
- package/dist/{chunk-FTYY5JJD.js → chunk-BFQDQRDE.js} +2 -2
- package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
- package/dist/{chunk-T2M64VHA.cjs → chunk-BQ22N3TX.cjs} +56 -41
- package/dist/chunk-BQU3HAE7.js +21 -0
- package/dist/chunk-BWF4VDYE.js +3897 -0
- package/dist/chunk-BYE7RQFZ.cjs +121 -0
- package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
- package/dist/chunk-CCVMREXI.js +420 -0
- package/dist/chunk-CFAWTLSC.js +13 -0
- package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
- package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
- package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
- package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
- package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
- package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
- package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
- package/dist/chunk-DEQVRSV5.cjs +866 -0
- package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
- package/dist/{chunk-K2C56QGS.cjs → chunk-DIZTWFVR.cjs} +1499 -482
- package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
- package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
- package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
- package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
- package/dist/{chunk-SJAVBCOA.js → chunk-E46DJH5S.js} +3 -3
- package/dist/{chunk-DV2ZHK7B.cjs → chunk-E6GFD7VR.cjs} +49 -26
- package/dist/chunk-ES2HJQ4N.js +37 -0
- package/dist/chunk-EZJHLOWP.js +80 -0
- package/dist/chunk-FFBDRUO5.cjs +59 -0
- package/dist/{chunk-SV2WA57F.js → chunk-FGT6KK6T.js} +38 -15
- package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
- package/dist/{chunk-QXH5RCFI.js → chunk-FQAVGSPW.js} +2 -2
- package/dist/chunk-FQVG6ZHF.js +197 -0
- package/dist/chunk-GBMDFWJX.cjs +152 -0
- package/dist/{chunk-NAGQ2PDC.js → chunk-GGLKUENP.js} +1453 -436
- package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
- package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
- package/dist/chunk-GWY26SUD.cjs +63 -0
- package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
- package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
- package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
- package/dist/chunk-HJIXWGQZ.js +139 -0
- package/dist/{chunk-ULDM2SNB.js → chunk-HKYZSUQ5.js} +48 -47
- package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
- package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
- package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
- package/dist/chunk-HSCUPEA4.cjs +3897 -0
- package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
- package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
- package/dist/{chunk-N7LI55V4.js → chunk-I24CWKKK.js} +15 -8
- package/dist/chunk-IAGCRVJ3.js +355 -0
- package/dist/chunk-IEXKKKOF.cjs +92 -0
- package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
- package/dist/chunk-IKUMVBCW.cjs +33 -0
- package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
- package/dist/{chunk-56SWIDEL.cjs → chunk-J5ADZN6V.cjs} +57 -56
- package/dist/chunk-J5HE6CUM.cjs +124 -0
- package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
- package/dist/chunk-JIMSII7R.js +987 -0
- package/dist/chunk-JJ4KA7HK.cjs +2219 -0
- package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
- package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
- package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
- package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
- package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
- package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
- package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
- package/dist/chunk-LJD7KR3L.cjs +44 -0
- package/dist/chunk-LN7D3EJZ.js +387 -0
- package/dist/{chunk-KANW6OYC.cjs → chunk-LQBONA55.cjs} +32 -8
- package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
- package/dist/chunk-M4KNC5BQ.js +78 -0
- package/dist/chunk-MO4KP6XS.cjs +229 -0
- package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
- package/dist/chunk-MPULXVC4.cjs +715 -0
- package/dist/{chunk-VEKDGU2Q.cjs → chunk-MQESBFBZ.cjs} +46 -23
- package/dist/chunk-MUNUUFU7.cjs +21 -0
- package/dist/{chunk-ZSPXQYG2.js → chunk-MX75JYIY.js} +7 -5
- package/dist/chunk-MXVIDIC6.cjs +139 -0
- package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
- package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
- package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
- package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
- package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
- package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
- package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
- package/dist/{chunk-NAJ4IZKD.cjs → chunk-OPNI6O7F.cjs} +8 -6
- package/dist/chunk-OR67YXQK.cjs +13 -0
- package/dist/{chunk-XVUHNWMX.js → chunk-OV3PVUYN.js} +17 -19
- package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
- package/dist/chunk-PCM3N3CL.cjs +37 -0
- package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
- package/dist/{chunk-HPHJ73GU.cjs → chunk-PHJO5YAL.cjs} +9 -9
- package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
- package/dist/chunk-PUD76XQT.cjs +78 -0
- package/dist/chunk-Q2IL4DDI.cjs +355 -0
- package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
- package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
- package/dist/chunk-QKP772OZ.js +4291 -0
- package/dist/chunk-QQ7PANOP.js +59 -0
- package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
- package/dist/chunk-RAKO7UN7.js +114 -0
- package/dist/chunk-RBHANOYY.js +33 -0
- package/dist/chunk-RBZ7AFX7.cjs +29 -0
- package/dist/{chunk-GCXYXLRA.cjs → chunk-REMGR23V.cjs} +46 -49
- package/dist/chunk-ROLA6EFO.cjs +85 -0
- package/dist/{chunk-RDF37HKB.cjs → chunk-SOLBYSLY.cjs} +3 -2
- package/dist/{chunk-KQGPTCQJ.js → chunk-SWCQM52V.js} +68 -25
- package/dist/{chunk-L3TWPROA.js → chunk-TBOLJDUG.js} +39 -24
- package/dist/chunk-TH26BQJG.js +101 -0
- package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
- package/dist/chunk-TKKN34TV.js +229 -0
- package/dist/chunk-TQ33WBY5.cjs +74 -0
- package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
- package/dist/{chunk-J2GSFVUV.cjs → chunk-TXPSTCG7.cjs} +74 -59
- package/dist/{chunk-5K6NGAVM.js → chunk-U4C3HW6P.js} +67 -52
- package/dist/{chunk-3WICOC33.js → chunk-UEIXJG45.js} +105 -81
- package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
- package/dist/chunk-UOQECODR.js +34 -0
- package/dist/chunk-UR27UDTB.js +354 -0
- package/dist/chunk-UWFG2R2I.cjs +420 -0
- package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
- package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
- package/dist/{chunk-NTSDP2WB.js → chunk-VDWJMWDF.js} +54 -24
- package/dist/{chunk-3O3MOK5C.cjs → chunk-VGEV44V2.cjs} +944 -133
- package/dist/{chunk-IDFF5J2E.js → chunk-VKBIE6I6.js} +38 -7
- package/dist/{chunk-HBZU3RBZ.js → chunk-VRMZO6TB.js} +31 -8
- package/dist/chunk-VUGOOGHB.js +400 -0
- package/dist/chunk-WBU4Q4GS.cjs +400 -0
- package/dist/chunk-WGLBC5AY.cjs +59 -0
- package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
- package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
- package/dist/chunk-WRTXCQ3V.cjs +4291 -0
- package/dist/chunk-WTB7AFL6.cjs +101 -0
- package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
- package/dist/chunk-XF2WIKHR.cjs +34 -0
- package/dist/{chunk-W7RYQJLO.cjs → chunk-XGMI6IYB.cjs} +46 -15
- package/dist/{chunk-NA6WQDYW.js → chunk-XIVFAD2L.js} +918 -107
- package/dist/chunk-XV2HXRHX.js +85 -0
- package/dist/{chunk-3VTAFAL2.js → chunk-Y3M2DABP.js} +16 -12
- package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
- package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
- package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
- package/dist/chunk-YZWE7XSM.js +5 -0
- package/dist/{chunk-TUAITHWL.js → chunk-Z3XSSF7B.js} +2 -1
- package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
- package/dist/chunk-ZASDSY7P.cjs +114 -0
- package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
- package/dist/chunk-ZPD2AO3U.js +866 -0
- package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
- package/dist/chunk-ZR46OJNZ.js +152 -0
- package/dist/{chunk-7TQH3CL4.cjs → chunk-ZZ63NW7A.cjs} +78 -35
- package/dist/clear-33TWQ2ES.cjs +12 -0
- package/dist/{clear-A3N4GK2S.js → clear-OFLFQ3MR.js} +3 -3
- package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-COB2KTOW.js} +8 -5
- package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
- package/dist/completion-IIZMHXYP.cjs +17 -0
- package/dist/completion-PT4VM2H2.js +17 -0
- package/dist/config-KL6WU7R2.cjs +20 -0
- package/dist/{config-HPJPKTO6.js → config-R4O7GBTY.js} +6 -4
- package/dist/{constants-LISJW3DD.js → constants-HVCHVQAF.js} +1 -1
- package/dist/constants-RLMJ5D5P.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-3PK3VFCE.js +15 -0
- package/dist/export-WLGNWEMJ.cjs +15 -0
- package/dist/feedback-G635NCLJ.js +18 -0
- package/dist/feedback-LLMK3TZH.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/help-BAXLP2M2.cjs +12 -0
- package/dist/{help-GFQXNZOK.js → help-X3OAZ3CY.js} +2 -2
- package/dist/history-6HOJSEMT.cjs +14 -0
- package/dist/{history-E3N6BJP7.js → history-YKFPHBJN.js} +2 -2
- package/dist/hooks-7TA4PIIB.js +18 -0
- package/dist/hooks-XVFU67T2.cjs +18 -0
- package/dist/{i18n-SY7QRM22.js → i18n-2KBUU7XL.js} +1 -1
- package/dist/i18n-MUJMKTFM.cjs +33 -0
- package/dist/ide-CCQ33PGC.cjs +15 -0
- package/dist/ide-VLVFBZ5F.js +15 -0
- package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
- package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
- package/dist/{import-W7SVLSTC.js → import-4CHYLS4K.js} +3 -3
- package/dist/{import-ADI37ZUR.cjs → import-I7T4ZHYL.cjs} +3 -3
- package/dist/import-J46F54JY.cjs +10 -0
- package/dist/{import-KGKKZ3B7.js → import-JWPYKXCZ.js} +2 -2
- package/dist/index.cjs +744 -23015
- package/dist/index.d.cts +93 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +780 -23051
- package/dist/{init-7MFK626E.js → init-262MWZV4.js} +2 -2
- package/dist/init-EE5Y7RBL.cjs +10 -0
- package/dist/inkMode-VUE6ZDLD.cjs +7 -0
- package/dist/inkMode-WBNFOSAT.js +7 -0
- package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
- package/dist/inputPrompt-YGBHDUEP.js +90 -0
- package/dist/language-CVLPB7OV.js +21 -0
- package/dist/language-ZTWFHUSV.cjs +21 -0
- package/dist/learn-PON7I5QS.js +23 -0
- package/dist/learn-XLRSVNA3.cjs +23 -0
- package/dist/login-223QTGBG.cjs +26 -0
- package/dist/login-6IKTBUBY.js +26 -0
- package/dist/logout-RN2AG6SI.js +23 -0
- package/dist/logout-U3M4FFX7.cjs +23 -0
- package/dist/mcp-5O6PUL4G.js +20 -0
- package/dist/mcp-NUQ76QQB.cjs +20 -0
- package/dist/{mcp-install-2FEROZTL.js → mcp-install-6XWXLFVY.js} +17 -10
- package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-P6DHES7V.cjs} +21 -14
- package/dist/memory-CYMDQ2YC.cjs +10 -0
- package/dist/{memory-J73WZH2I.js → memory-Q54CESNM.js} +2 -2
- package/dist/{model-AES267IN.js → model-6AJ77PJG.js} +2 -2
- package/dist/model-IDRCKDML.cjs +10 -0
- package/dist/new-7LEWOUF2.cjs +12 -0
- package/dist/{new-5CLF3MKH.js → new-ZXHEWC2S.js} +3 -3
- package/dist/onboarding-FXX7YHSJ.cjs +35 -0
- package/dist/onboarding-JYNMK6NI.js +35 -0
- package/dist/permissions-YBNSANIA.cjs +10 -0
- package/dist/permissions-YHJMVA6L.js +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-B43SJ6E4.cjs +10 -0
- package/dist/{quit-XDZYRSPU.js → quit-GWTNHQSP.js} +2 -2
- package/dist/rawMode-6W5AXAKI.cjs +7 -0
- package/dist/rawMode-GFNLXQPU.js +7 -0
- package/dist/{registry-PTHWERKC.js → registry-34GL6BNJ.js} +29 -44
- package/dist/{registry-IVT4G2RT.cjs → registry-V24W7YK6.cjs} +65 -80
- package/dist/repeat-P4FAPE3Y.cjs +17 -0
- package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
- package/dist/resume-DYVOQN5L.cjs +16 -0
- package/dist/resume-M25UQKOX.js +16 -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-NPS3PU4O.cjs +3730 -0
- package/dist/rpc-S3DGW6KV.js +3730 -0
- package/dist/search-CPX4PWHP.js +20 -0
- package/dist/search-VUF3M4N3.cjs +20 -0
- package/dist/{sessions-6GWEBMKS.js → sessions-IYAXMK23.js} +2 -2
- package/dist/sessions-JODKER5D.cjs +10 -0
- package/dist/{settings-BXR6SBJP.js → settings-55BNW6BF.js} +11 -8
- package/dist/settings-BKTS7OMC.cjs +33 -0
- package/dist/setup-IRC5HQG2.js +29 -0
- package/dist/setup-MMQ7TWOP.cjs +29 -0
- package/dist/share-6JRQECAH.cjs +17 -0
- package/dist/share-YM5MJKMO.js +17 -0
- package/dist/{skills-PG542VEB.cjs → skills-GGMZOVIE.cjs} +13 -10
- package/dist/skills-LWSOKOSH.cjs +29 -0
- package/dist/{skills-ZZCIAS7C.js → skills-MVIZNHT4.js} +12 -9
- package/dist/skills-VWOMV3CR.js +29 -0
- package/dist/{skills-install-SRC3Z2MS.js → skills-install-QBA5RCV6.js} +21 -70
- package/dist/{skills-install-67DOBPJC.cjs → skills-install-VTAMCNNY.cjs} +34 -83
- package/dist/skills-new-GPL46YV2.js +18 -0
- package/dist/skills-new-L5BEZN5V.cjs +18 -0
- package/dist/slashCommands-FBPCIWM5.cjs +95 -0
- package/dist/slashCommands-FCWY5DXW.js +95 -0
- package/dist/status-3B5SDZPL.js +17 -0
- package/dist/status-TTGRF6NC.cjs +17 -0
- package/dist/summarizer-DGPHE5IQ.js +17 -0
- package/dist/summarizer-JNXLUAQG.cjs +17 -0
- package/dist/sync-77CXVVTK.cjs +21 -0
- package/dist/{sync-VU2NSJ4O.js → sync-7BILIQHP.js} +3 -3
- package/dist/sync-7OKF6636.js +21 -0
- package/dist/sync-EH4K5U3N.cjs +40 -0
- package/dist/{teammate-SD26GR37.js → teammate-GZQSCIMS.js} +28 -7
- package/dist/{teammate-SXRVXNQV.cjs → teammate-J6PHGL23.cjs} +29 -8
- package/dist/theme-64BYGJ57.cjs +21 -0
- package/dist/theme-YJE6HEON.js +21 -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-PRTEGL2J.cjs +10 -0
- package/dist/{undo-OL2EDBRY.js → undo-SZEHLX7X.js} +2 -2
- 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 +46 -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-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-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/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
|
@@ -55,16 +55,16 @@ var McpStdioConnection = class _McpStdioConnection extends EventEmitter {
|
|
|
55
55
|
super();
|
|
56
56
|
this.config = config;
|
|
57
57
|
this.framing = framing;
|
|
58
|
-
this.process = null;
|
|
59
|
-
this.lineBuffer = "";
|
|
60
|
-
this.frameBuffer = Buffer.alloc(0);
|
|
61
|
-
this.nextId = 1;
|
|
62
|
-
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
63
|
-
}
|
|
64
|
-
static {
|
|
65
|
-
/** Default timeout for RPC requests in milliseconds */
|
|
66
|
-
this.REQUEST_TIMEOUT_MS = 3e4;
|
|
67
58
|
}
|
|
59
|
+
config;
|
|
60
|
+
framing;
|
|
61
|
+
process = null;
|
|
62
|
+
lineBuffer = "";
|
|
63
|
+
frameBuffer = Buffer.alloc(0);
|
|
64
|
+
nextId = 1;
|
|
65
|
+
pendingRequests = /* @__PURE__ */ new Map();
|
|
66
|
+
/** Default timeout for RPC requests in milliseconds */
|
|
67
|
+
static REQUEST_TIMEOUT_MS = 3e4;
|
|
68
68
|
/**
|
|
69
69
|
* Spawns the server process and sets up communication channels.
|
|
70
70
|
*/
|
|
@@ -319,13 +319,12 @@ var McpHttpConnection = class _McpHttpConnection extends EventEmitter {
|
|
|
319
319
|
constructor(config) {
|
|
320
320
|
super();
|
|
321
321
|
this.config = config;
|
|
322
|
-
this.nextId = 1;
|
|
323
|
-
this.sessionId = null;
|
|
324
|
-
}
|
|
325
|
-
static {
|
|
326
|
-
/** Default timeout for HTTP requests in milliseconds */
|
|
327
|
-
this.REQUEST_TIMEOUT_MS = 3e4;
|
|
328
322
|
}
|
|
323
|
+
config;
|
|
324
|
+
nextId = 1;
|
|
325
|
+
sessionId = null;
|
|
326
|
+
/** Default timeout for HTTP requests in milliseconds */
|
|
327
|
+
static REQUEST_TIMEOUT_MS = 3e4;
|
|
329
328
|
/**
|
|
330
329
|
* No-op for HTTP transport (no persistent process to start).
|
|
331
330
|
*/
|
|
@@ -452,10 +451,8 @@ var McpHttpConnection = class _McpHttpConnection extends EventEmitter {
|
|
|
452
451
|
}
|
|
453
452
|
};
|
|
454
453
|
var McpClientManager = class {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
this.connections = /* @__PURE__ */ new Map();
|
|
458
|
-
}
|
|
454
|
+
servers = /* @__PURE__ */ new Map();
|
|
455
|
+
connections = /* @__PURE__ */ new Map();
|
|
459
456
|
// ============================================================================
|
|
460
457
|
// Static Helper Methods
|
|
461
458
|
// ============================================================================
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/commands/pr-review.ts
|
|
2
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
|
+
var metadata = {
|
|
4
|
+
command: "/pr-review",
|
|
5
|
+
description: "review a pull request using gh metadata and diff context",
|
|
6
|
+
implemented: true
|
|
7
|
+
};
|
|
8
|
+
function buildPrompt(workspaceRoot, prSelector, additionalFocus) {
|
|
9
|
+
const ghViewCommand = prSelector ? `gh pr view ${prSelector}` : "gh pr view <number>";
|
|
10
|
+
const ghDiffCommand = prSelector ? `gh pr diff ${prSelector}` : "gh pr diff <number>";
|
|
11
|
+
const parts = [
|
|
12
|
+
"You are a staff-level pull request reviewer.",
|
|
13
|
+
"",
|
|
14
|
+
"## Pull Request Review Target",
|
|
15
|
+
`Workspace: ${workspaceRoot}`,
|
|
16
|
+
prSelector ? `PR selector: ${prSelector}` : "PR selector: not provided",
|
|
17
|
+
"",
|
|
18
|
+
"## Review Workflow",
|
|
19
|
+
"1. Confirm this is a GitHub repository and that the GitHub CLI is available.",
|
|
20
|
+
"2. If no PR selector is provided, run `gh pr list` and choose the most relevant open pull request before continuing.",
|
|
21
|
+
`3. Run \`${ghViewCommand}\` to gather PR metadata, changed files, title, base branch, and status.`,
|
|
22
|
+
`4. Run \`${ghDiffCommand}\` to inspect the actual patch before reviewing.`,
|
|
23
|
+
"5. Use repository tools such as `read_file`, `fff_grep`, `fff_find`, `git_diff`, and `git_status` to inspect the touched code paths in detail.",
|
|
24
|
+
"",
|
|
25
|
+
"## Review Output",
|
|
26
|
+
"Deliver findings first, ordered by severity, with concrete file references when possible.",
|
|
27
|
+
"Focus on correctness, regressions, missing tests, performance, security, and maintainability.",
|
|
28
|
+
"Keep the summary brief and only include it after the findings."
|
|
29
|
+
];
|
|
30
|
+
if (additionalFocus) {
|
|
31
|
+
parts.push("", "## Additional Focus", additionalFocus);
|
|
32
|
+
}
|
|
33
|
+
return parts.join("\n");
|
|
34
|
+
}
|
|
35
|
+
async function prReview(ctx, args = []) {
|
|
36
|
+
const [firstArg, ...restArgs] = args;
|
|
37
|
+
const prSelector = _nullishCoalesce(_optionalChain([firstArg, 'optionalAccess', _ => _.trim, 'call', _2 => _2()]), () => ( ""));
|
|
38
|
+
const additionalFocus = restArgs.join(" ").trim();
|
|
39
|
+
const prompt = buildPrompt(ctx.workspaceRoot, prSelector, additionalFocus);
|
|
40
|
+
if (ctx.isNonInteractive || !ctx.queueInstruction) {
|
|
41
|
+
return prompt;
|
|
42
|
+
}
|
|
43
|
+
ctx.queueInstruction(prompt);
|
|
44
|
+
console.log(_chalk2.default.cyan("\n Starting pull request review..."));
|
|
45
|
+
if (prSelector) {
|
|
46
|
+
console.log(_chalk2.default.gray(` PR selector: ${prSelector}`));
|
|
47
|
+
}
|
|
48
|
+
if (additionalFocus) {
|
|
49
|
+
console.log(_chalk2.default.gray(` Focus: ${additionalFocus}`));
|
|
50
|
+
}
|
|
51
|
+
console.log(_chalk2.default.gray(" Gathering GitHub metadata and diff context before reviewing.\n"));
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
exports.metadata = metadata; exports.prReview = prReview;
|
|
59
|
+
/**
|
|
60
|
+
* @license
|
|
61
|
+
* Copyright 2026 Autohand AI LLC
|
|
62
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
63
|
+
*/
|
|
@@ -5,13 +5,16 @@ import ignore from "ignore";
|
|
|
5
5
|
var GitIgnoreParser = class {
|
|
6
6
|
constructor(projectRoot, extraPatterns) {
|
|
7
7
|
this.extraPatterns = extraPatterns;
|
|
8
|
-
this.cache = /* @__PURE__ */ new Map();
|
|
9
|
-
this.processedExtraPatterns = [];
|
|
10
8
|
this.projectRoot = path.resolve(projectRoot);
|
|
11
9
|
if (this.extraPatterns?.length) {
|
|
12
10
|
this.processedExtraPatterns = this.processPatterns(this.extraPatterns, ".");
|
|
13
11
|
}
|
|
14
12
|
}
|
|
13
|
+
extraPatterns;
|
|
14
|
+
projectRoot;
|
|
15
|
+
cache = /* @__PURE__ */ new Map();
|
|
16
|
+
globalPatterns;
|
|
17
|
+
processedExtraPatterns = [];
|
|
15
18
|
isIgnored(filePath) {
|
|
16
19
|
if (!filePath) {
|
|
17
20
|
return false;
|
|
@@ -553,7 +553,9 @@ ${_chalk2.default.yellow("Examples:")}
|
|
|
553
553
|
|
|
554
554
|
|
|
555
555
|
|
|
556
|
-
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
exports.metadata = metadata; exports.parseInput = parseInput; exports.intervalToCron = intervalToCron; exports.shorthandToMs = shorthandToMs; exports.shorthandToHuman = shorthandToHuman; exports.repeat = repeat;
|
|
557
559
|
/**
|
|
558
560
|
* @license
|
|
559
561
|
* Copyright 2025 Autohand AI LLC
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PROJECT_DIR_NAME
|
|
3
|
+
} from "./chunk-TWQDAUZU.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
|
+
*/
|
|
@@ -2,21 +2,27 @@ import {
|
|
|
2
2
|
normalizeMcpCommandForConfig
|
|
3
3
|
} from "./chunk-WQ3VJXZB.js";
|
|
4
4
|
import {
|
|
5
|
-
I18nProvider
|
|
6
|
-
|
|
5
|
+
I18nProvider,
|
|
6
|
+
inkRenderOptions
|
|
7
|
+
} from "./chunk-NMQ47RCG.js";
|
|
7
8
|
import {
|
|
8
9
|
loadConfig,
|
|
9
10
|
saveConfig
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3UT7R3XV.js";
|
|
12
|
+
import {
|
|
13
|
+
ThemeProvider,
|
|
14
|
+
useTheme
|
|
15
|
+
} from "./chunk-NBGOIFKP.js";
|
|
11
16
|
import {
|
|
12
17
|
PROJECT_DIR_NAME
|
|
13
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-TWQDAUZU.js";
|
|
14
19
|
import {
|
|
15
20
|
t
|
|
16
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-CBFH2J3O.js";
|
|
17
22
|
|
|
18
23
|
// src/commands/mcp.ts
|
|
19
24
|
import chalk from "chalk";
|
|
25
|
+
import fs from "fs-extra";
|
|
20
26
|
import path from "path";
|
|
21
27
|
|
|
22
28
|
// src/ui/ink/components/McpServerList.tsx
|
|
@@ -24,6 +30,7 @@ import { useState, useCallback } from "react";
|
|
|
24
30
|
import { Box, Text, useInput, render } from "ink";
|
|
25
31
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
26
32
|
function McpServerList({ servers, onToggle, onDone }) {
|
|
33
|
+
const { theme } = useTheme();
|
|
27
34
|
const [cursor, setCursor] = useState(0);
|
|
28
35
|
const [toggling, setToggling] = useState(null);
|
|
29
36
|
const handleToggle = useCallback(async () => {
|
|
@@ -53,60 +60,41 @@ function McpServerList({ servers, onToggle, onDone }) {
|
|
|
53
60
|
});
|
|
54
61
|
if (servers.length === 0) {
|
|
55
62
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
|
|
56
|
-
/* @__PURE__ */ jsx(Text, {
|
|
63
|
+
/* @__PURE__ */ jsx(Text, { bold: true, children: theme.fg("accent", "MCP Servers") }),
|
|
57
64
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
58
|
-
/* @__PURE__ */ jsx(Text, {
|
|
65
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "No MCP servers configured.") }),
|
|
59
66
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
60
|
-
/* @__PURE__ */
|
|
61
|
-
|
|
62
|
-
"<name>",
|
|
63
|
-
" ",
|
|
64
|
-
"<command>",
|
|
65
|
-
" [args...]"
|
|
66
|
-
] }),
|
|
67
|
-
/* @__PURE__ */ jsx(Text, { color: "gray", children: "Browse: /mcp install" }),
|
|
67
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Add a server: /mcp add <name> <command> [args...]") }),
|
|
68
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Browse: /mcp install") }),
|
|
68
69
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
69
|
-
/* @__PURE__ */ jsx(Text, {
|
|
70
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Press ESC or q to close") })
|
|
70
71
|
] });
|
|
71
72
|
}
|
|
72
73
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
|
|
73
|
-
/* @__PURE__ */ jsx(Text, {
|
|
74
|
-
/* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Text, {
|
|
74
|
+
/* @__PURE__ */ jsx(Text, { bold: true, children: theme.fg("accent", "MCP Servers") }),
|
|
75
|
+
/* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2500".repeat(56)) }) }),
|
|
75
76
|
servers.map((server, i) => {
|
|
76
77
|
const isSelected = i === cursor;
|
|
77
78
|
const isToggling = toggling === server.name;
|
|
78
79
|
const statusIcon = server.status === "connected" ? "\u25CF" : server.status === "error" ? "\u25CF" : "\u25CB";
|
|
79
|
-
const
|
|
80
|
+
const statusToken = server.status === "connected" ? "success" : server.status === "error" ? "error" : "muted";
|
|
80
81
|
const statusLabel = server.status === "connected" ? "enabled" : server.status === "error" ? "error" : "disabled";
|
|
81
82
|
const toolsInfo = server.status === "connected" && server.toolCount > 0 ? ` (${server.toolCount} tools)` : "";
|
|
82
83
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
83
84
|
/* @__PURE__ */ jsxs(Box, { children: [
|
|
84
|
-
/* @__PURE__ */ jsx(Text, {
|
|
85
|
-
/* @__PURE__ */
|
|
86
|
-
statusIcon,
|
|
87
|
-
" "
|
|
88
|
-
] }),
|
|
85
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg(isSelected ? "warning" : "muted", isSelected ? "\u25B8 " : " ") }),
|
|
86
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg(statusToken, `${statusIcon} `) }),
|
|
89
87
|
/* @__PURE__ */ jsx(Text, { bold: isSelected, children: server.name.padEnd(24) }),
|
|
90
|
-
/* @__PURE__ */ jsx(Text, {
|
|
91
|
-
/* @__PURE__ */ jsx(Text, {
|
|
88
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg(statusToken, isToggling ? "toggling..." : statusLabel) }),
|
|
89
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", toolsInfo) })
|
|
92
90
|
] }),
|
|
93
|
-
isSelected && server.status === "error" && server.error && /* @__PURE__ */ jsx(Box, { marginLeft: 4, children: /* @__PURE__ */
|
|
94
|
-
" ",
|
|
95
|
-
server.error
|
|
96
|
-
] }) })
|
|
91
|
+
isSelected && server.status === "error" && server.error && /* @__PURE__ */ jsx(Box, { marginLeft: 4, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("error", ` ${server.error}`) }) })
|
|
97
92
|
] }, server.name);
|
|
98
93
|
}),
|
|
99
94
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
100
95
|
/* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
101
|
-
/* @__PURE__ */
|
|
102
|
-
|
|
103
|
-
" navigate ",
|
|
104
|
-
"\u23CE/space",
|
|
105
|
-
" toggle ",
|
|
106
|
-
"q/esc",
|
|
107
|
-
" close"
|
|
108
|
-
] }),
|
|
109
|
-
/* @__PURE__ */ jsx(Text, { color: "gray", children: "Connected servers provide tools to the agent" })
|
|
96
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2191\u2193 navigate \u23CE/space toggle q/esc close") }),
|
|
97
|
+
/* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Connected servers provide tools to the agent") })
|
|
110
98
|
] })
|
|
111
99
|
] });
|
|
112
100
|
}
|
|
@@ -119,14 +107,14 @@ async function showMcpServerList(options) {
|
|
|
119
107
|
let completed = false;
|
|
120
108
|
let instance;
|
|
121
109
|
const renderList = () => {
|
|
122
|
-
const element = /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
|
|
110
|
+
const element = /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
|
|
123
111
|
McpServerList,
|
|
124
112
|
{
|
|
125
113
|
servers: currentServers,
|
|
126
114
|
onToggle: async (name, status) => {
|
|
127
115
|
currentServers = await options.onToggle(name, status);
|
|
128
116
|
instance.rerender(
|
|
129
|
-
/* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
|
|
117
|
+
/* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
|
|
130
118
|
McpServerList,
|
|
131
119
|
{
|
|
132
120
|
servers: currentServers,
|
|
@@ -141,7 +129,7 @@ async function showMcpServerList(options) {
|
|
|
141
129
|
resolve();
|
|
142
130
|
}
|
|
143
131
|
}
|
|
144
|
-
) })
|
|
132
|
+
) }) })
|
|
145
133
|
);
|
|
146
134
|
},
|
|
147
135
|
onDone: () => {
|
|
@@ -151,11 +139,16 @@ async function showMcpServerList(options) {
|
|
|
151
139
|
resolve();
|
|
152
140
|
}
|
|
153
141
|
}
|
|
154
|
-
) });
|
|
142
|
+
) }) });
|
|
155
143
|
if (instance) {
|
|
156
144
|
instance.rerender(element);
|
|
157
145
|
} else {
|
|
158
|
-
instance = render(element, {
|
|
146
|
+
instance = render(element, inkRenderOptions({
|
|
147
|
+
stdin: process.stdin,
|
|
148
|
+
stdout: process.stdout,
|
|
149
|
+
stderr: process.stderr,
|
|
150
|
+
exitOnCtrlC: false
|
|
151
|
+
}));
|
|
159
152
|
}
|
|
160
153
|
};
|
|
161
154
|
renderList();
|
|
@@ -181,8 +174,15 @@ async function loadConfigForScope(scopeInput, workspaceRoot) {
|
|
|
181
174
|
if (!workspaceRoot) {
|
|
182
175
|
throw new Error("Workspace root is required for project scope.");
|
|
183
176
|
}
|
|
184
|
-
const
|
|
185
|
-
|
|
177
|
+
const projectConfigDir = path.join(workspaceRoot, PROJECT_DIR_NAME);
|
|
178
|
+
const candidates = ["config.toml", "config.yaml", "config.yml", "config.json"].map(
|
|
179
|
+
(file) => path.join(projectConfigDir, file)
|
|
180
|
+
);
|
|
181
|
+
const existing = await Promise.all(candidates.map(
|
|
182
|
+
async (candidate) => await fs.pathExists(candidate) ? candidate : null
|
|
183
|
+
));
|
|
184
|
+
const projectConfigPath = existing.find((candidate) => Boolean(candidate)) ?? path.join(projectConfigDir, "config.json");
|
|
185
|
+
return { config: await loadConfig(projectConfigPath, workspaceRoot), scope };
|
|
186
186
|
}
|
|
187
187
|
function syncRuntimeConfig(runtimeConfig, updatedConfig) {
|
|
188
188
|
if (!runtimeConfig) return;
|
|
@@ -556,7 +556,8 @@ var metadata = {
|
|
|
556
556
|
{ name: "disconnect", description: "Disconnect from a server" },
|
|
557
557
|
{ name: "list", description: "List available tools from servers" },
|
|
558
558
|
{ name: "add", description: "Add a server to config" },
|
|
559
|
-
{ name: "remove", description: "Remove a server from config" }
|
|
559
|
+
{ name: "remove", description: "Remove a server from config" },
|
|
560
|
+
{ name: "install", description: t("commands.mcp.installDescription") }
|
|
560
561
|
]
|
|
561
562
|
};
|
|
562
563
|
var installMetadata = {
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// src/core/conversationManager.ts
|
|
2
2
|
var ConversationManager = class _ConversationManager {
|
|
3
|
+
static instance = null;
|
|
4
|
+
messages = [];
|
|
5
|
+
initialized = false;
|
|
3
6
|
constructor() {
|
|
4
|
-
this.messages = [];
|
|
5
|
-
this.initialized = false;
|
|
6
|
-
}
|
|
7
|
-
static {
|
|
8
|
-
this.instance = null;
|
|
9
7
|
}
|
|
10
8
|
static getInstance() {
|
|
11
9
|
if (!_ConversationManager.instance) {
|
|
@@ -34,6 +32,24 @@ var ConversationManager = class _ConversationManager {
|
|
|
34
32
|
history() {
|
|
35
33
|
return [...this.messages];
|
|
36
34
|
}
|
|
35
|
+
removeIndices(indices) {
|
|
36
|
+
if (!this.initialized || indices.length === 0 || this.messages.length <= 1) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const uniqueValidIndices = [...new Set(indices)].filter((index) => index > 0 && index < this.messages.length).sort((a, b) => a - b);
|
|
40
|
+
if (uniqueValidIndices.length === 0) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const removed = [];
|
|
44
|
+
for (let i = uniqueValidIndices.length - 1; i >= 0; i -= 1) {
|
|
45
|
+
const index = uniqueValidIndices[i];
|
|
46
|
+
const [message] = this.messages.splice(index, 1);
|
|
47
|
+
if (message) {
|
|
48
|
+
removed.unshift(message);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return removed;
|
|
52
|
+
}
|
|
37
53
|
cropHistory(direction, amount) {
|
|
38
54
|
if (!this.initialized || amount <= 0 || this.messages.length <= 1) {
|
|
39
55
|
return [];
|
|
@@ -60,19 +76,35 @@ var ConversationManager = class _ConversationManager {
|
|
|
60
76
|
if (!toRemove.length) {
|
|
61
77
|
return [];
|
|
62
78
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
return this.removeIndices(toRemove);
|
|
80
|
+
}
|
|
81
|
+
replaceMessage(index, message) {
|
|
82
|
+
if (!this.initialized) {
|
|
83
|
+
throw new Error("ConversationManager must be initialized before replacing messages.");
|
|
84
|
+
}
|
|
85
|
+
if (index >= 0 && index < this.messages.length) {
|
|
86
|
+
this.messages[index] = message;
|
|
69
87
|
}
|
|
70
|
-
return removed;
|
|
71
88
|
}
|
|
72
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Add a system note to the conversation.
|
|
91
|
+
* If `replaceKey` is provided, replaces an existing system note containing
|
|
92
|
+
* that key instead of appending. This prevents accumulation of old context
|
|
93
|
+
* summary notes that never get cleaned up.
|
|
94
|
+
*/
|
|
95
|
+
addSystemNote(content, replaceKey) {
|
|
73
96
|
if (!this.initialized) {
|
|
74
97
|
throw new Error("ConversationManager must be initialized before adding summaries.");
|
|
75
98
|
}
|
|
99
|
+
if (replaceKey) {
|
|
100
|
+
const idx = this.messages.findIndex(
|
|
101
|
+
(m) => m.role === "system" && m.content?.includes(replaceKey)
|
|
102
|
+
);
|
|
103
|
+
if (idx >= 0) {
|
|
104
|
+
this.messages[idx] = { role: "system", content };
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
76
108
|
this.messages.push({ role: "system", content });
|
|
77
109
|
}
|
|
78
110
|
/**
|
|
@@ -1,16 +1,17 @@
|
|
|
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; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkE26KKI46cjs = require('./chunk-E26KKI46.cjs');
|
|
4
4
|
|
|
5
5
|
// src/session/SessionManager.ts
|
|
6
6
|
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
7
7
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
8
8
|
var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
|
|
9
|
-
var SessionManager = class {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
var SessionManager = (_class = class {
|
|
10
|
+
|
|
11
|
+
__init() {this.currentSession = null}
|
|
12
|
+
__init2() {this.index = null}
|
|
13
|
+
constructor(baseDir) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
|
|
14
|
+
this.sessionsDir = _nullishCoalesce(baseDir, () => ( _chunkE26KKI46cjs.AUTOHAND_PATHS.sessions));
|
|
14
15
|
}
|
|
15
16
|
async initialize() {
|
|
16
17
|
await _fsextra2.default.ensureDir(this.sessionsDir);
|
|
@@ -136,11 +137,13 @@ var SessionManager = class {
|
|
|
136
137
|
}
|
|
137
138
|
await this.saveIndex();
|
|
138
139
|
}
|
|
139
|
-
};
|
|
140
|
-
var Session = class {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
}, _class);
|
|
141
|
+
var Session = (_class2 = class {
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
__init3() {this.messages = []}
|
|
145
|
+
__init4() {this.state = null}
|
|
146
|
+
constructor(sessionDir, metadata) {;_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);
|
|
144
147
|
this.sessionDir = sessionDir;
|
|
145
148
|
this.metadata = metadata;
|
|
146
149
|
}
|
|
@@ -190,7 +193,7 @@ var Session = class {
|
|
|
190
193
|
}
|
|
191
194
|
await this.save();
|
|
192
195
|
}
|
|
193
|
-
};
|
|
196
|
+
}, _class2);
|
|
194
197
|
|
|
195
198
|
|
|
196
199
|
|