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,354 @@
|
|
|
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/core/context/priority.ts
|
|
2
|
+
function extractMessageMetadata(message) {
|
|
3
|
+
const content = _nullishCoalesce(message.content, () => ( ""));
|
|
4
|
+
const metadata = {};
|
|
5
|
+
const filePatterns = [
|
|
6
|
+
/(?:^|\s)([\/\w.-]+\.[a-zA-Z]{1,5})(?:\s|$|:|\()/gm,
|
|
7
|
+
/`([^`]+\.[a-zA-Z]{1,5})`/g,
|
|
8
|
+
/["']([^"']+\.[a-zA-Z]{1,5})["']/g
|
|
9
|
+
];
|
|
10
|
+
const files = /* @__PURE__ */ new Set();
|
|
11
|
+
for (const pattern of filePatterns) {
|
|
12
|
+
let match;
|
|
13
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
14
|
+
const file = match[1];
|
|
15
|
+
if (file && !file.startsWith("http") && !file.includes("://")) {
|
|
16
|
+
files.add(file);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (files.size > 0) {
|
|
21
|
+
metadata.files = [...files];
|
|
22
|
+
}
|
|
23
|
+
if (message.name) {
|
|
24
|
+
metadata.tools = [message.name];
|
|
25
|
+
}
|
|
26
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
27
|
+
metadata.tools = message.tool_calls.map((tc) => tc.function.name);
|
|
28
|
+
}
|
|
29
|
+
const decisionPatterns = [
|
|
30
|
+
/I('ll| will|'m going to| chose| decided| picked| selected)/i,
|
|
31
|
+
/let's (use|go with|implement|create)/i,
|
|
32
|
+
/we should (use|implement|create|add)/i,
|
|
33
|
+
/the (best|better|recommended) (approach|option|choice)/i
|
|
34
|
+
];
|
|
35
|
+
metadata.isDecision = decisionPatterns.some((p) => p.test(content));
|
|
36
|
+
const errorPatterns = [
|
|
37
|
+
/error:|failed:|exception:|crash|bug|issue:|problem:/i,
|
|
38
|
+
/TypeError|SyntaxError|ReferenceError|Error:/,
|
|
39
|
+
/❌|✗|FAIL|FAILED/
|
|
40
|
+
];
|
|
41
|
+
metadata.isError = errorPatterns.some((p) => p.test(content));
|
|
42
|
+
return metadata;
|
|
43
|
+
}
|
|
44
|
+
function determineMessagePriority(message) {
|
|
45
|
+
const content = _nullishCoalesce(message.content, () => ( ""));
|
|
46
|
+
const metadata = _nullishCoalesce(message.metadata, () => ( extractMessageMetadata(message)));
|
|
47
|
+
if (message.role === "system") {
|
|
48
|
+
return "critical";
|
|
49
|
+
}
|
|
50
|
+
if (message.role === "user") {
|
|
51
|
+
if (metadata.isDecision) return "critical";
|
|
52
|
+
if (content.length < 100) return "high";
|
|
53
|
+
return "high";
|
|
54
|
+
}
|
|
55
|
+
if (metadata.isError) {
|
|
56
|
+
return "high";
|
|
57
|
+
}
|
|
58
|
+
if (message.role === "tool" && metadata.files && metadata.files.length > 0) {
|
|
59
|
+
return "medium";
|
|
60
|
+
}
|
|
61
|
+
if (message.role === "tool" && content.length > 2e3) {
|
|
62
|
+
return "low";
|
|
63
|
+
}
|
|
64
|
+
if (message.role === "assistant" && metadata.isDecision) {
|
|
65
|
+
return "high";
|
|
66
|
+
}
|
|
67
|
+
return "medium";
|
|
68
|
+
}
|
|
69
|
+
function sortMessagesByPriority(messages) {
|
|
70
|
+
const priorityOrder = {
|
|
71
|
+
"low": 0,
|
|
72
|
+
"medium": 1,
|
|
73
|
+
"high": 2,
|
|
74
|
+
"critical": 3
|
|
75
|
+
};
|
|
76
|
+
const indices = messages.map((msg, i) => ({
|
|
77
|
+
index: i,
|
|
78
|
+
priority: _nullishCoalesce(msg.priority, () => ( determineMessagePriority(msg))),
|
|
79
|
+
age: i
|
|
80
|
+
}));
|
|
81
|
+
indices.sort((a, b) => {
|
|
82
|
+
const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
83
|
+
if (priorityDiff !== 0) return priorityDiff;
|
|
84
|
+
return a.age - b.age;
|
|
85
|
+
});
|
|
86
|
+
return indices.map((i) => i.index);
|
|
87
|
+
}
|
|
88
|
+
function findCoherentRemovalIndices(messages, targetIndices) {
|
|
89
|
+
const toRemove = new Set(targetIndices);
|
|
90
|
+
for (const idx of [...toRemove]) {
|
|
91
|
+
const msg = messages[idx];
|
|
92
|
+
if (msg.role === "tool" && msg.tool_call_id) {
|
|
93
|
+
const assistantIdx = messages.findIndex(
|
|
94
|
+
(m) => m.role === "assistant" && _optionalChain([m, 'access', _ => _.tool_calls, 'optionalAccess', _2 => _2.some, 'call', _3 => _3((tc) => tc.id === msg.tool_call_id)])
|
|
95
|
+
);
|
|
96
|
+
if (assistantIdx >= 0) toRemove.add(assistantIdx);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const idx of [...toRemove]) {
|
|
100
|
+
const msg = messages[idx];
|
|
101
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
102
|
+
for (const tc of msg.tool_calls) {
|
|
103
|
+
const toolIdx = messages.findIndex(
|
|
104
|
+
(m) => m.role === "tool" && m.tool_call_id === tc.id
|
|
105
|
+
);
|
|
106
|
+
if (toolIdx >= 0) toRemove.add(toolIdx);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...toRemove].sort((a, b) => a - b);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// src/core/context/serializer.ts
|
|
114
|
+
var TOOL_RESULT_MAX_LENGTH = 2e3;
|
|
115
|
+
function serializeMessagesForSummary(messages) {
|
|
116
|
+
const lines = [];
|
|
117
|
+
for (const msg of messages) {
|
|
118
|
+
switch (msg.role) {
|
|
119
|
+
case "system":
|
|
120
|
+
break;
|
|
121
|
+
case "user":
|
|
122
|
+
lines.push(`[User]: ${_nullishCoalesce(msg.content, () => ( ""))}`);
|
|
123
|
+
break;
|
|
124
|
+
case "assistant": {
|
|
125
|
+
const content = _nullishCoalesce(msg.content, () => ( ""));
|
|
126
|
+
if (msg.tool_calls && msg.tool_calls.length > 0) {
|
|
127
|
+
const callDescriptions = msg.tool_calls.map((tc) => {
|
|
128
|
+
const args = _nullishCoalesce(tc.function.arguments, () => ( "{}"));
|
|
129
|
+
let shortArgs = args;
|
|
130
|
+
try {
|
|
131
|
+
const parsed = JSON.parse(args);
|
|
132
|
+
const keys = Object.keys(parsed);
|
|
133
|
+
const preview = keys.slice(0, 3).map((k) => `${k}="${String(parsed[k]).slice(0, 80)}"`).join(", ");
|
|
134
|
+
shortArgs = keys.length > 3 ? `${preview}, +${keys.length - 3} more` : preview;
|
|
135
|
+
} catch (e) {
|
|
136
|
+
shortArgs = args.slice(0, 100);
|
|
137
|
+
}
|
|
138
|
+
return `${tc.function.name}(${shortArgs})`;
|
|
139
|
+
}).join("; ");
|
|
140
|
+
if (content) {
|
|
141
|
+
lines.push(`[Assistant]: ${content.slice(0, 500)}`);
|
|
142
|
+
}
|
|
143
|
+
lines.push(`[Assistant tool calls]: ${callDescriptions}`);
|
|
144
|
+
} else {
|
|
145
|
+
lines.push(`[Assistant]: ${content.slice(0, 500)}`);
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
case "tool": {
|
|
150
|
+
const toolName = _nullishCoalesce(msg.name, () => ( "unknown"));
|
|
151
|
+
const rawContent = _nullishCoalesce(msg.content, () => ( ""));
|
|
152
|
+
const truncated = rawContent.length > TOOL_RESULT_MAX_LENGTH ? rawContent.slice(0, Math.floor(TOOL_RESULT_MAX_LENGTH * 0.6)) + `
|
|
153
|
+
... [${rawContent.length - TOOL_RESULT_MAX_LENGTH} chars truncated] ...
|
|
154
|
+
` + rawContent.slice(-Math.floor(TOOL_RESULT_MAX_LENGTH * 0.3)) : rawContent;
|
|
155
|
+
lines.push(`[Tool result (${toolName})]: ${truncated}`);
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return lines.join("\n");
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// src/core/context/summarizer.ts
|
|
164
|
+
function summarizeMessagesStatic(messages) {
|
|
165
|
+
const files = /* @__PURE__ */ new Set();
|
|
166
|
+
const tools = /* @__PURE__ */ new Set();
|
|
167
|
+
const decisions = [];
|
|
168
|
+
const errors = [];
|
|
169
|
+
const userRequests = [];
|
|
170
|
+
for (const msg of messages) {
|
|
171
|
+
const metadata = _nullishCoalesce(msg.metadata, () => ( extractMessageMetadata(msg)));
|
|
172
|
+
if (metadata.files) {
|
|
173
|
+
metadata.files.forEach((f) => files.add(f));
|
|
174
|
+
}
|
|
175
|
+
if (metadata.tools) {
|
|
176
|
+
metadata.tools.forEach((t) => tools.add(t));
|
|
177
|
+
}
|
|
178
|
+
if (msg.role === "user") {
|
|
179
|
+
const preview = (_nullishCoalesce(msg.content, () => ( ""))).slice(0, 100);
|
|
180
|
+
userRequests.push(preview + (preview.length < (_nullishCoalesce(_optionalChain([msg, 'access', _4 => _4.content, 'optionalAccess', _5 => _5.length]), () => ( 0))) ? "..." : ""));
|
|
181
|
+
}
|
|
182
|
+
if (metadata.isDecision && msg.role === "assistant") {
|
|
183
|
+
const preview = (_nullishCoalesce(msg.content, () => ( ""))).slice(0, 150);
|
|
184
|
+
decisions.push(preview);
|
|
185
|
+
}
|
|
186
|
+
if (metadata.isError) {
|
|
187
|
+
const preview = (_nullishCoalesce(msg.content, () => ( ""))).slice(0, 150);
|
|
188
|
+
errors.push(preview);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const parts = [
|
|
192
|
+
`[Context Summary - ${messages.length} messages condensed]`
|
|
193
|
+
];
|
|
194
|
+
if (userRequests.length > 0) {
|
|
195
|
+
parts.push(`User requests: ${userRequests.slice(0, 3).join(" | ")}`);
|
|
196
|
+
}
|
|
197
|
+
if (files.size > 0) {
|
|
198
|
+
parts.push(`Files touched: ${[...files].slice(0, 10).join(", ")}${files.size > 10 ? ` (+${files.size - 10} more)` : ""}`);
|
|
199
|
+
}
|
|
200
|
+
if (tools.size > 0) {
|
|
201
|
+
parts.push(`Tools used: ${[...tools].join(", ")}`);
|
|
202
|
+
}
|
|
203
|
+
if (decisions.length > 0) {
|
|
204
|
+
parts.push(`Key decisions: ${decisions.slice(0, 2).join(" | ")}`);
|
|
205
|
+
}
|
|
206
|
+
if (errors.length > 0) {
|
|
207
|
+
parts.push(`Errors encountered: ${errors.slice(0, 2).join(" | ")}`);
|
|
208
|
+
}
|
|
209
|
+
return parts.join("\n");
|
|
210
|
+
}
|
|
211
|
+
async function summarizeWithLLM(messages, llm, memoryManager) {
|
|
212
|
+
if (!llm || messages.length === 0) {
|
|
213
|
+
return summarizeMessagesStatic(messages);
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
const serializedLog = serializeMessagesForSummary(messages);
|
|
217
|
+
const summarizationPrompt = [
|
|
218
|
+
"Summarize the following conversation for context preservation. Include:",
|
|
219
|
+
"1. The user's original request and intent",
|
|
220
|
+
"2. What has been accomplished so far (files created/modified, commands run)",
|
|
221
|
+
"3. What remains to be done",
|
|
222
|
+
"4. Any key decisions or constraints discovered",
|
|
223
|
+
"5. Any user preferences or project-relevant points worth remembering",
|
|
224
|
+
"",
|
|
225
|
+
"Keep it concise (under 500 words). This summary replaces the removed messages.",
|
|
226
|
+
"",
|
|
227
|
+
"--- Conversation ---",
|
|
228
|
+
serializedLog
|
|
229
|
+
].join("\n");
|
|
230
|
+
const response = await llm.complete({
|
|
231
|
+
messages: [
|
|
232
|
+
{ role: "system", content: "You are a context summarization assistant. Produce concise, factual summaries that preserve task continuity." },
|
|
233
|
+
{ role: "user", content: summarizationPrompt }
|
|
234
|
+
],
|
|
235
|
+
temperature: 0.1,
|
|
236
|
+
maxTokens: 1e3
|
|
237
|
+
});
|
|
238
|
+
const summaryText = _optionalChain([response, 'access', _6 => _6.content, 'optionalAccess', _7 => _7.trim, 'call', _8 => _8()]);
|
|
239
|
+
if (!summaryText) {
|
|
240
|
+
return summarizeMessagesStatic(messages);
|
|
241
|
+
}
|
|
242
|
+
if (memoryManager) {
|
|
243
|
+
await persistKeyFacts(summaryText, memoryManager).catch(() => {
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return `[LLM Context Summary - ${messages.length} messages condensed]
|
|
247
|
+
${summaryText}`;
|
|
248
|
+
} catch (e2) {
|
|
249
|
+
return summarizeMessagesStatic(messages);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function buildStructuredSummary(summaryText, fileOps) {
|
|
253
|
+
const lines = summaryText.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
254
|
+
const goal = _nullishCoalesce(_nullishCoalesce(lines.find((l) => /goal|intent|request|objective/i.test(l)), () => ( lines[0])), () => ( ""));
|
|
255
|
+
const constraints = [];
|
|
256
|
+
const progress = [];
|
|
257
|
+
const keyDecisions = [];
|
|
258
|
+
const nextSteps = [];
|
|
259
|
+
const criticalContext = [];
|
|
260
|
+
for (const line of lines) {
|
|
261
|
+
if (/constraint|requirement|must|should/i.test(line)) constraints.push(line);
|
|
262
|
+
else if (/accomplished|done|completed|created|modified|implemented/i.test(line)) progress.push(line);
|
|
263
|
+
else if (/decided|chose|selected|preference/i.test(line)) keyDecisions.push(line);
|
|
264
|
+
else if (/remain|todo|next|pending|still/i.test(line)) nextSteps.push(line);
|
|
265
|
+
else if (/critical|important|essential|key/i.test(line)) criticalContext.push(line);
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
goal,
|
|
269
|
+
constraints,
|
|
270
|
+
progress,
|
|
271
|
+
keyDecisions,
|
|
272
|
+
nextSteps,
|
|
273
|
+
criticalContext,
|
|
274
|
+
readFiles: fileOps.readFiles,
|
|
275
|
+
modifiedFiles: fileOps.modifiedFiles
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function extractFileOperations(messages) {
|
|
279
|
+
const readFiles = /* @__PURE__ */ new Set();
|
|
280
|
+
const modifiedFiles = /* @__PURE__ */ new Set();
|
|
281
|
+
for (const msg of messages) {
|
|
282
|
+
const metadata = _nullishCoalesce(msg.metadata, () => ( extractMessageMetadata(msg)));
|
|
283
|
+
if (!metadata.tools || !metadata.files) continue;
|
|
284
|
+
for (const tool of metadata.tools) {
|
|
285
|
+
const isReadTool = tool.includes("read") || tool.includes("cat") || tool.includes("grep") || tool.includes("search");
|
|
286
|
+
const isWriteTool = tool.includes("write") || tool.includes("edit") || tool.includes("create") || tool.includes("delete") || tool.includes("move");
|
|
287
|
+
if (isReadTool) {
|
|
288
|
+
metadata.files.forEach((f) => readFiles.add(f));
|
|
289
|
+
}
|
|
290
|
+
if (isWriteTool) {
|
|
291
|
+
metadata.files.forEach((f) => modifiedFiles.add(f));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
readFiles: [...readFiles],
|
|
297
|
+
modifiedFiles: [...modifiedFiles]
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
async function persistKeyFacts(summary, memoryManager) {
|
|
301
|
+
const factPatterns = [
|
|
302
|
+
/(?:chose|decided|selected|using|preference|prefer)\s+.{10,100}/gi,
|
|
303
|
+
/(?:constraint|requirement|must|should)\s+.{10,100}/gi
|
|
304
|
+
];
|
|
305
|
+
const facts = /* @__PURE__ */ new Set();
|
|
306
|
+
for (const pattern of factPatterns) {
|
|
307
|
+
let match;
|
|
308
|
+
while ((match = pattern.exec(summary)) !== null) {
|
|
309
|
+
facts.add(match[0].trim());
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
for (const fact of [...facts].slice(0, 5)) {
|
|
313
|
+
await memoryManager.store(fact, "project", ["context-summary"], "context-summarization");
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
var summarizeMessages = summarizeMessagesStatic;
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
exports.extractMessageMetadata = extractMessageMetadata; exports.determineMessagePriority = determineMessagePriority; exports.sortMessagesByPriority = sortMessagesByPriority; exports.findCoherentRemovalIndices = findCoherentRemovalIndices; exports.summarizeMessagesStatic = summarizeMessagesStatic; exports.summarizeWithLLM = summarizeWithLLM; exports.buildStructuredSummary = buildStructuredSummary; exports.extractFileOperations = extractFileOperations; exports.persistKeyFacts = persistKeyFacts; exports.summarizeMessages = summarizeMessages;
|
|
330
|
+
/**
|
|
331
|
+
* @license
|
|
332
|
+
* Copyright 2025 Autohand AI LLC
|
|
333
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
334
|
+
*
|
|
335
|
+
* Metadata extraction, priority scoring, sorting, and tool-call coherence.
|
|
336
|
+
* Extracted from contextManager.ts for composability.
|
|
337
|
+
*/
|
|
338
|
+
/**
|
|
339
|
+
* @license
|
|
340
|
+
* Copyright 2025 Autohand AI LLC
|
|
341
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
342
|
+
*
|
|
343
|
+
* Message → text serialization for summarization prompts.
|
|
344
|
+
* Converts LLMMessage[] into a plain-text conversation log that
|
|
345
|
+
* prevents the LLM from treating it as a conversation to continue.
|
|
346
|
+
*/
|
|
347
|
+
/**
|
|
348
|
+
* @license
|
|
349
|
+
* Copyright 2025 Autohand AI LLC
|
|
350
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
351
|
+
*
|
|
352
|
+
* LLM-powered + static summarization with structured format.
|
|
353
|
+
* Extracted from contextManager.ts for composability.
|
|
354
|
+
*/
|
|
@@ -0,0 +1,184 @@
|
|
|
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 _chunkNQZH5CR2cjs = require('./chunk-NQZH5CR2.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkWJYFLQ7Gcjs = require('./chunk-WJYFLQ7G.cjs');
|
|
8
|
+
|
|
9
|
+
// src/commands/goal.ts
|
|
10
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
11
|
+
var metadata = {
|
|
12
|
+
command: "/goal",
|
|
13
|
+
description: "Create, inspect, pause, resume, complete, clear, and queue persistent goals",
|
|
14
|
+
implemented: true,
|
|
15
|
+
subcommands: [
|
|
16
|
+
{ name: "queue", description: "List queued goals or enqueue a goal" },
|
|
17
|
+
{ name: "pause", description: "Pause the current goal" },
|
|
18
|
+
{ name: "resume", description: "Resume a paused or queued goal" },
|
|
19
|
+
{ name: "complete", description: "Mark the current goal complete" },
|
|
20
|
+
{ name: "clear", description: "Clear the current goal" },
|
|
21
|
+
{ name: "templates", description: "List reusable .pi-goals templates" }
|
|
22
|
+
]
|
|
23
|
+
};
|
|
24
|
+
async function goal(ctx, args = []) {
|
|
25
|
+
if (!_chunkWJYFLQ7Gcjs.resolveGoalFeatureEnabled.call(void 0, ctx.config, ctx.isFeatureEnabled)) {
|
|
26
|
+
return _chunkWJYFLQ7Gcjs.GOAL_FEATURE_DISABLED_MESSAGE;
|
|
27
|
+
}
|
|
28
|
+
await _optionalChain([ctx, 'access', _ => _.trackFeatureActivation, 'optionalCall', _2 => _2("slash_goal", { surface: "slash_command" })]);
|
|
29
|
+
const manager = new (0, _chunkNQZH5CR2cjs.GoalManager)(ctx.workspaceRoot);
|
|
30
|
+
const input = args.join(" ").trim();
|
|
31
|
+
if (!input) {
|
|
32
|
+
return formatSnapshot(await manager.getSnapshot());
|
|
33
|
+
}
|
|
34
|
+
const [subcommand, ...restArgs] = args;
|
|
35
|
+
const rest = restArgs.join(" ").trim();
|
|
36
|
+
switch (_optionalChain([subcommand, 'optionalAccess', _3 => _3.toLowerCase, 'call', _4 => _4()])) {
|
|
37
|
+
case "queue":
|
|
38
|
+
return handleQueue(manager, rest);
|
|
39
|
+
case "pause":
|
|
40
|
+
return formatMutation(await manager.updateGoal({ status: "paused" }));
|
|
41
|
+
case "resume": {
|
|
42
|
+
const snapshot = await manager.getSnapshot();
|
|
43
|
+
if (!snapshot.goal && snapshot.queue.length > 0) {
|
|
44
|
+
const started = await manager.startQueuedGoal();
|
|
45
|
+
if (started.ok && started.goal) {
|
|
46
|
+
queueGoalContinuation(ctx, started.goal.objective);
|
|
47
|
+
}
|
|
48
|
+
return formatMutation(started);
|
|
49
|
+
}
|
|
50
|
+
const resumed = await manager.updateGoal({ status: "active" });
|
|
51
|
+
if (resumed.ok && resumed.goal) {
|
|
52
|
+
queueGoalContinuation(ctx, resumed.goal.objective);
|
|
53
|
+
}
|
|
54
|
+
return formatMutation(resumed);
|
|
55
|
+
}
|
|
56
|
+
case "complete":
|
|
57
|
+
return formatMutation(await manager.updateGoal({ status: "complete" }));
|
|
58
|
+
case "clear":
|
|
59
|
+
return formatMutation(await manager.clearGoal());
|
|
60
|
+
case "templates": {
|
|
61
|
+
const templates = await manager.listTemplates();
|
|
62
|
+
if (templates.length === 0) return "No goal templates found in .pi-goals/ or .ai/.pi-goals/.";
|
|
63
|
+
return [
|
|
64
|
+
`Goal templates (${templates.length}):`,
|
|
65
|
+
...templates.map((template) => {
|
|
66
|
+
const aliases = template.aliases.length ? ` aliases: ${template.aliases.join(", ")}` : "";
|
|
67
|
+
return `- ${template.name}${aliases}${template.description ? ` - ${template.description}` : ""}`;
|
|
68
|
+
})
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
71
|
+
default: {
|
|
72
|
+
const resolved = await manager.resolveObjective(input);
|
|
73
|
+
if (!resolved.ok) return _chalk2.default.yellow(resolved.message);
|
|
74
|
+
const created = await manager.createGoal(resolved.input, { replace: false });
|
|
75
|
+
if (created.ok && created.goal) {
|
|
76
|
+
queueGoalContinuation(ctx, created.goal.objective);
|
|
77
|
+
}
|
|
78
|
+
return formatMutation(created);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function runGoalCli(workspaceRoot, rawInput, config) {
|
|
83
|
+
if (!_chunkWJYFLQ7Gcjs.resolveGoalFeatureEnabled.call(void 0, config)) {
|
|
84
|
+
return _chunkWJYFLQ7Gcjs.GOAL_FEATURE_DISABLED_MESSAGE;
|
|
85
|
+
}
|
|
86
|
+
const manager = new (0, _chunkNQZH5CR2cjs.GoalManager)(workspaceRoot);
|
|
87
|
+
const input = _nullishCoalesce(_optionalChain([rawInput, 'optionalAccess', _5 => _5.trim, 'call', _6 => _6()]), () => ( ""));
|
|
88
|
+
if (!input) return formatSnapshot(await manager.getSnapshot());
|
|
89
|
+
const args = _nullishCoalesce(_optionalChain([input, 'access', _7 => _7.match, 'call', _8 => _8(/"[^"]*"|'[^']*'|\S+/g), 'optionalAccess', _9 => _9.map, 'call', _10 => _10(unquote)]), () => ( []));
|
|
90
|
+
return goal({ workspaceRoot }, args);
|
|
91
|
+
}
|
|
92
|
+
async function handleQueue(manager, rest) {
|
|
93
|
+
if (!rest) {
|
|
94
|
+
const snapshot = await manager.getSnapshot();
|
|
95
|
+
if (snapshot.queue.length === 0) return "No queued goals.";
|
|
96
|
+
return formatQueue(snapshot);
|
|
97
|
+
}
|
|
98
|
+
return formatMutation(await manager.enqueueGoalBlock(rest, "command"));
|
|
99
|
+
}
|
|
100
|
+
function queueGoalContinuation(ctx, objective) {
|
|
101
|
+
_optionalChain([ctx, 'access', _11 => _11.queueInstruction, 'optionalCall', _12 => _12([
|
|
102
|
+
`Active goal: ${objective}`,
|
|
103
|
+
"Continue working toward this persistent goal until it is complete, blocked, paused, cleared, or budget-limited.",
|
|
104
|
+
"Use get_goal or update_goal when you need to inspect or modify the goal state."
|
|
105
|
+
].join("\n"))]);
|
|
106
|
+
}
|
|
107
|
+
function formatMutation(result) {
|
|
108
|
+
const lines = [result.ok ? _chalk2.default.green(_nullishCoalesce(result.message, () => ( "Goal updated."))) : _chalk2.default.yellow(_nullishCoalesce(result.message, () => ( "Goal command failed.")))];
|
|
109
|
+
if (result.goal) {
|
|
110
|
+
lines.push("");
|
|
111
|
+
lines.push(formatGoal(result.goal));
|
|
112
|
+
}
|
|
113
|
+
if (_optionalChain([result, 'access', _13 => _13.queued, 'optionalAccess', _14 => _14.length])) {
|
|
114
|
+
lines.push("");
|
|
115
|
+
lines.push(`Queued ${result.queued.length} goal${result.queued.length === 1 ? "" : "s"}:`);
|
|
116
|
+
for (const item of result.queued) {
|
|
117
|
+
lines.push(`- [${item.queueId}] ${item.objective}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (result.started) {
|
|
121
|
+
lines.push(`Started queue item: ${result.started.queueId}`);
|
|
122
|
+
}
|
|
123
|
+
if (result.queue.length > 0 && !_optionalChain([result, 'access', _15 => _15.queued, 'optionalAccess', _16 => _16.length])) {
|
|
124
|
+
lines.push("");
|
|
125
|
+
lines.push(formatQueue({ queue: result.queue }));
|
|
126
|
+
}
|
|
127
|
+
return lines.join("\n");
|
|
128
|
+
}
|
|
129
|
+
function formatSnapshot(snapshot) {
|
|
130
|
+
if (!snapshot.goal && snapshot.queue.length === 0) {
|
|
131
|
+
return [
|
|
132
|
+
"No goal is currently set.",
|
|
133
|
+
"Use /goal <objective> to create one, or /goal queue <objective> to queue later work."
|
|
134
|
+
].join("\n");
|
|
135
|
+
}
|
|
136
|
+
const parts = [];
|
|
137
|
+
if (snapshot.goal) parts.push(formatGoal(snapshot.goal));
|
|
138
|
+
else parts.push("No active goal.");
|
|
139
|
+
if (snapshot.queue.length > 0) {
|
|
140
|
+
parts.push("");
|
|
141
|
+
parts.push(formatQueue(snapshot));
|
|
142
|
+
}
|
|
143
|
+
return parts.join("\n");
|
|
144
|
+
}
|
|
145
|
+
function formatGoal(goalState) {
|
|
146
|
+
const lines = [
|
|
147
|
+
`Goal: ${goalState.objective}`,
|
|
148
|
+
`Status: ${goalState.status}`,
|
|
149
|
+
`ID: ${goalState.goalId}`,
|
|
150
|
+
`Elapsed: ${formatDuration(goalState.timeUsedSeconds)}`,
|
|
151
|
+
`Tokens: ${goalState.tokensUsed}${goalState.tokenBudget ? ` / ${goalState.tokenBudget}` : ""}`
|
|
152
|
+
];
|
|
153
|
+
if (goalState.timeBudgetSeconds) lines.push(`Time budget: ${formatDuration(goalState.timeBudgetSeconds)}`);
|
|
154
|
+
if (goalState.minTokensBeforeWrapUp) lines.push(`Token floor: ${goalState.minTokensBeforeWrapUp}`);
|
|
155
|
+
if (goalState.minTimeSecondsBeforeWrapUp) lines.push(`Time floor: ${formatDuration(goalState.minTimeSecondsBeforeWrapUp)}`);
|
|
156
|
+
return lines.join("\n");
|
|
157
|
+
}
|
|
158
|
+
function formatQueue(snapshot) {
|
|
159
|
+
if (snapshot.queue.length === 0) return "No queued goals.";
|
|
160
|
+
return [
|
|
161
|
+
`Queued goals (${snapshot.queue.length}):`,
|
|
162
|
+
...snapshot.queue.map((item, index) => `${index + 1}. [${item.queueId}] ${item.objective}`)
|
|
163
|
+
].join("\n");
|
|
164
|
+
}
|
|
165
|
+
function formatDuration(seconds) {
|
|
166
|
+
const whole = Math.max(0, Math.floor(seconds));
|
|
167
|
+
const minutes = Math.floor(whole / 60);
|
|
168
|
+
const secs = whole % 60;
|
|
169
|
+
return minutes > 0 ? `${minutes}m ${secs}s` : `${secs}s`;
|
|
170
|
+
}
|
|
171
|
+
function unquote(value) {
|
|
172
|
+
return value.replace(/^['"]|['"]$/g, "");
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
exports.metadata = metadata; exports.goal = goal; exports.runGoalCli = runGoalCli;
|
|
180
|
+
/**
|
|
181
|
+
* @license
|
|
182
|
+
* Copyright 2025 Autohand AI LLC
|
|
183
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
184
|
+
*/
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SetupWizard
|
|
3
|
+
} from "./chunk-HSWWM6AM.js";
|
|
4
|
+
import {
|
|
5
|
+
loadConfig,
|
|
6
|
+
resolveWorkspaceRoot,
|
|
7
|
+
saveConfig
|
|
8
|
+
} from "./chunk-IEPLQ47J.js";
|
|
9
|
+
import {
|
|
10
|
+
detectLocale,
|
|
11
|
+
initI18n,
|
|
12
|
+
t
|
|
13
|
+
} from "./chunk-LEZEWKPA.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/setup.ts
|
|
16
|
+
import chalk from "chalk";
|
|
17
|
+
var metadata = {
|
|
18
|
+
command: "/setup",
|
|
19
|
+
description: t("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 t("commands.setup.interactiveOnly") ?? "Setup requires an interactive terminal. Use the --setup CLI flag instead.";
|
|
25
|
+
}
|
|
26
|
+
const { locale: detectedLocale } = detectLocale();
|
|
27
|
+
const locale = detectedLocale ?? "en";
|
|
28
|
+
await initI18n(locale);
|
|
29
|
+
const config = await loadConfig(ctx.config?.configPath, ctx.workspaceRoot);
|
|
30
|
+
const workspaceRoot = resolveWorkspaceRoot(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 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 t("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 t("commands.setup.failed") ?? "Setup failed. Please try again.";
|
|
57
|
+
}
|
|
58
|
+
const newConfig = { ...config, ...result.config };
|
|
59
|
+
await saveConfig(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(chalk.green(t("commands.setup.complete") ?? "\nSetup complete!"));
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
metadata,
|
|
79
|
+
setup
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* @license
|
|
83
|
+
* Copyright 2025 Autohand AI LLC
|
|
84
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
85
|
+
*/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/ui/rawMode.ts
|
|
2
|
+
function safeSetRawMode(input, mode) {
|
|
3
|
+
if (!input?.isTTY || typeof input.setRawMode !== "function") {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
input.setRawMode(mode);
|
|
8
|
+
return true;
|
|
9
|
+
} catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
safeSetRawMode
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2025 Autohand AI LLC
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*/
|