autohand-cli 0.9.0 → 0.9.2
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 +118 -76
- package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
- package/dist/AgentRegistry-JBXZUPML.js +18 -0
- package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
- package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
- package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
- package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
- package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
- package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
- package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
- package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
- package/dist/MemoryManager-3A2VRPF2.js +9 -0
- package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
- package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
- package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
- package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
- package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
- package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
- package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
- package/dist/SessionManager-LGPQIA57.cjs +10 -0
- package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
- package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
- package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
- package/dist/SubAgent-2WG4QQB5.cjs +13 -0
- package/dist/SubAgent-ICGN23TQ.js +13 -0
- package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
- package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
- package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
- package/dist/about-U2BH7HDR.cjs +15 -0
- package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
- package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
- package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
- package/dist/actionExecutor-6NCCORRB.js +28 -0
- package/dist/add-dir-KFUHSIR2.cjs +11 -0
- package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
- package/dist/agent-DUIYLIVN.js +132 -0
- package/dist/agent-YYEHGDAK.cjs +132 -0
- package/dist/agents-GBGG4CW7.cjs +19 -0
- package/dist/agents-ZH34C72F.js +19 -0
- package/dist/agents-new-ERXLS7SB.cjs +17 -0
- package/dist/agents-new-EVTGPTA4.js +17 -0
- package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
- package/dist/autoSkill-YL6PN6AV.cjs +20 -0
- package/dist/automode-4BJ7FNPL.cjs +10 -0
- package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
- package/dist/chrome-45ZXHL5N.cjs +22 -0
- package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
- package/dist/chrome-IFVZRHAT.cjs +50 -0
- package/dist/chrome-MYE6DNA2.js +22 -0
- package/dist/chunk-24CEJYEG.cjs +579 -0
- package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
- package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
- package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
- package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
- package/dist/chunk-2WUNHTXL.js +303 -0
- package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
- package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
- package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
- package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
- package/dist/chunk-3DF3GZQ7.js +277 -0
- package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
- package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
- package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
- package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
- package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
- package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
- package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
- package/dist/chunk-5CMBAJ6K.js +377 -0
- package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
- package/dist/chunk-5ZNYX4VH.cjs +71 -0
- package/dist/chunk-6AC2TT26.js +156 -0
- package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
- package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
- package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
- package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
- package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
- package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
- package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
- package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
- package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
- package/dist/chunk-7TO3PDMV.cjs +324 -0
- package/dist/chunk-7UU22RSH.cjs +277 -0
- package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
- package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
- package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
- package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
- package/dist/chunk-ABR756QN.js +529 -0
- package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
- package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
- package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
- package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
- package/dist/chunk-B55VCYSQ.cjs +30 -0
- package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
- package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
- package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
- package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
- package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
- package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
- package/dist/chunk-CMEZ42F2.cjs +303 -0
- package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
- package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
- package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
- package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
- package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
- package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
- package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
- package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
- package/dist/chunk-ECQD2QC3.cjs +33 -0
- package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
- package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
- package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
- package/dist/chunk-EK34UZPB.cjs +40 -0
- package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
- package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
- package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
- package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
- package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
- package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
- package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
- package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
- package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
- package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
- package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
- package/dist/chunk-H7HXRRHK.js +324 -0
- package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
- package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
- package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
- package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
- package/dist/chunk-HTU4W3GB.js +183 -0
- package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
- package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
- package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
- package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
- package/dist/chunk-INNXFLDR.cjs +388 -0
- package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
- package/dist/chunk-JJGDOBFL.js +40 -0
- package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
- package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
- package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
- package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
- package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
- package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
- package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
- package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
- package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
- package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
- package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
- package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
- package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
- package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
- package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
- package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
- package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
- package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
- package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
- package/dist/chunk-NVATU4V6.cjs +44 -0
- package/dist/chunk-O246MKIW.cjs +267 -0
- package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
- package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
- package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
- package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
- package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
- package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
- package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
- package/dist/chunk-PI27G2ED.cjs +377 -0
- package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
- package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
- package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
- package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
- package/dist/chunk-QDO4L2A7.cjs +156 -0
- package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
- package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
- package/dist/chunk-QVXMSQOG.js +430 -0
- package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
- package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
- package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
- package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
- package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
- package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
- package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
- package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
- package/dist/chunk-RS2E32YB.js +71 -0
- package/dist/chunk-RWKU2X7O.js +388 -0
- package/dist/chunk-RZLEGVMH.cjs +565 -0
- package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
- package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
- package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
- package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
- package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
- package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
- package/dist/chunk-T4DXP5OP.js +30 -0
- package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
- package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
- package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
- package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
- package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
- package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
- package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
- package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
- package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
- package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
- package/dist/chunk-UMJYX5KD.js +565 -0
- package/dist/chunk-USKYTHDL.cjs +235 -0
- package/dist/chunk-V4HGZSKQ.cjs +183 -0
- package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
- package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
- package/dist/chunk-VLUIVJ3J.js +235 -0
- package/dist/chunk-VOBINVMV.cjs +430 -0
- package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
- package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
- package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
- package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
- package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
- package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
- package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
- package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
- package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
- package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
- package/dist/chunk-X53SHYCG.js +27 -0
- package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
- package/dist/chunk-Y47OJGLB.cjs +27 -0
- package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
- package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
- package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
- package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
- package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
- package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
- package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
- package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
- package/dist/chunk-ZFV4HJA6.js +579 -0
- package/dist/chunk-ZHMYTI5D.cjs +529 -0
- package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
- package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
- package/dist/chunk-ZUYYHKQA.js +44 -0
- package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
- package/dist/clear-AJGXD2BB.cjs +12 -0
- package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
- package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
- package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
- package/dist/completion-G7Z436TF.cjs +17 -0
- package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
- package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
- package/dist/config-W2BHT2QE.cjs +22 -0
- package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
- package/dist/constants-B4W5BT7F.cjs +23 -0
- package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
- package/dist/export-GFD32UY2.cjs +15 -0
- package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
- package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
- package/dist/feature-KP74CZ3F.cjs +14 -0
- package/dist/feature-OPNVMB2E.js +14 -0
- package/dist/features-LT55MURX.cjs +24 -0
- package/dist/features-ZDIU26WX.js +24 -0
- package/dist/feedback-7WTJFQ6S.js +18 -0
- package/dist/feedback-CEOJ3453.cjs +18 -0
- package/dist/go-2CY5SZNR.js +16 -0
- package/dist/go-O2CSQON4.cjs +16 -0
- package/dist/goal-DL2N2AWT.cjs +16 -0
- package/dist/goal-IJS7VZSG.js +16 -0
- package/dist/help-RNOGDEBA.cjs +12 -0
- package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
- package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
- package/dist/history-UUSGX2AL.cjs +14 -0
- package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
- package/dist/hooks-RWM5UY67.cjs +18 -0
- package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
- package/dist/i18n-MFAEU5RV.cjs +33 -0
- package/dist/ide-6PBTCCUQ.js +15 -0
- package/dist/ide-UE3G7NMQ.cjs +15 -0
- package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
- package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
- package/dist/import-NQDNBFUL.cjs +10 -0
- package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
- package/dist/index.cjs +512 -305
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +402 -195
- package/dist/init-DX3RDGDT.cjs +10 -0
- package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
- package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
- package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
- package/dist/language-I6KXAOXD.js +23 -0
- package/dist/language-XMIVOH5E.cjs +23 -0
- package/dist/learn-JPVVGTKU.js +23 -0
- package/dist/learn-NLSHI2MZ.cjs +23 -0
- package/dist/login-NABQYLYC.cjs +28 -0
- package/dist/login-XPOVFSWN.js +28 -0
- package/dist/logout-HNHCGB4Q.js +25 -0
- package/dist/logout-SKGDXJSW.cjs +25 -0
- package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
- package/dist/mcp-TADZCPJQ.cjs +22 -0
- package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
- package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
- package/dist/memory-GRXFTDIN.cjs +10 -0
- package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
- package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
- package/dist/model-OSD74T7Z.cjs +10 -0
- package/dist/new-4NWBOATU.cjs +12 -0
- package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
- package/dist/onboarding-2U5WE2OA.js +39 -0
- package/dist/onboarding-5DZFCO5Q.cjs +39 -0
- package/dist/permissions-KY5I6YQ3.cjs +10 -0
- package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
- package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
- package/dist/plan-PYKP652W.cjs +13 -0
- package/dist/quit-GSKJL42O.js +14 -0
- package/dist/quit-TQSRTBUT.cjs +14 -0
- package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
- package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
- package/dist/resume-4VWJXARX.cjs +17 -0
- package/dist/resume-TLHWWWFN.js +17 -0
- package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
- package/dist/review-XLJEUH5K.cjs +9 -0
- package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
- package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
- package/dist/search-DSX2CY4A.cjs +22 -0
- package/dist/search-I3QUDUQL.js +22 -0
- package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
- package/dist/sessionBranching-FKV4CR36.js +19 -0
- package/dist/sessions-3JUOT3ED.cjs +10 -0
- package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
- package/dist/settings-FT2LZZUV.js +45 -0
- package/dist/settings-RL4KNWHB.cjs +45 -0
- package/dist/setup-HQEJVOYT.js +32 -0
- package/dist/setup-MN54LKOL.cjs +32 -0
- package/dist/share-BUAFZNBX.cjs +17 -0
- package/dist/share-CGB6MAVJ.js +17 -0
- package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
- package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
- package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
- package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
- package/dist/skills-OQM7IHAF.cjs +29 -0
- package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
- package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
- package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
- package/dist/skills-new-S33NGEU3.js +18 -0
- package/dist/skills-new-UVYH53MD.cjs +18 -0
- package/dist/slashCommands-MWOUDSQP.js +111 -0
- package/dist/slashCommands-XASURUTV.cjs +111 -0
- package/dist/squad-PIIYDFVH.cjs +15 -0
- package/dist/squad-VHYOVEJP.js +15 -0
- package/dist/status-GHFTXQBL.js +25 -0
- package/dist/status-WXMIJIU3.cjs +25 -0
- package/dist/statusline-2K7AC6ZQ.js +21 -0
- package/dist/statusline-GROI4HOC.cjs +21 -0
- package/dist/sync-254WF6JI.cjs +42 -0
- package/dist/sync-2DIZN4EH.cjs +24 -0
- package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
- package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
- package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
- package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
- package/dist/templates-ARG2VRWW.cjs +11 -0
- package/dist/templates-UGVZV3KJ.js +11 -0
- package/dist/theme-MVQDSU47.js +23 -0
- package/dist/theme-QAKEYWJG.cjs +23 -0
- package/dist/ui/questionModal.cjs +6 -6
- package/dist/ui/questionModal.js +5 -5
- package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
- package/dist/undo-ME6WKUXZ.cjs +10 -0
- package/dist/usage-QTKO2YMD.js +25 -0
- package/dist/usage-TYNJKVER.cjs +25 -0
- package/package.json +10 -4
- package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
- package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
- package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
- package/dist/LearnAdvisor-46FG2XIP.js +0 -9
- package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
- package/dist/MemoryManager-34L4YOKA.cjs +0 -8
- package/dist/MemoryManager-WJMLPWGU.js +0 -8
- package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
- package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
- package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
- package/dist/SessionManager-WAPTFMDO.cjs +0 -10
- package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
- package/dist/SubAgent-FDIH3DXB.js +0 -11
- package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
- package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
- package/dist/about-FCAX37YC.cjs +0 -14
- package/dist/actionExecutor-33I47NZS.js +0 -24
- package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
- package/dist/add-dir-7SS6KSH5.cjs +0 -11
- package/dist/agent-DMRUFU4M.cjs +0 -116
- package/dist/agent-WCJEYQJT.js +0 -116
- package/dist/agents-CHROO3VU.cjs +0 -17
- package/dist/agents-UVDUL65K.js +0 -17
- package/dist/agents-new-AUBWSOXP.js +0 -17
- package/dist/agents-new-Y562WC47.cjs +0 -17
- package/dist/autoSkill-YOLLFTP2.cjs +0 -20
- package/dist/automode-DBLKTTKD.cjs +0 -10
- package/dist/chrome-ATC4OO5I.cjs +0 -20
- package/dist/chrome-O62WXV7F.js +0 -20
- package/dist/chrome-XHJLCO4M.cjs +0 -50
- package/dist/chunk-6XVVIY54.cjs +0 -256
- package/dist/chunk-AU6JAGZJ.cjs +0 -231
- package/dist/chunk-N6O3XUZ2.cjs +0 -23
- package/dist/chunk-VDWJMWDF.js +0 -256
- package/dist/clear-33TWQ2ES.cjs +0 -12
- package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
- package/dist/completion-IIZMHXYP.cjs +0 -17
- package/dist/config-KL6WU7R2.cjs +0 -20
- package/dist/constants-RLMJ5D5P.cjs +0 -21
- package/dist/export-WLGNWEMJ.cjs +0 -15
- package/dist/feedback-G635NCLJ.js +0 -18
- package/dist/feedback-LLMK3TZH.cjs +0 -18
- package/dist/help-BAXLP2M2.cjs +0 -12
- package/dist/history-6HOJSEMT.cjs +0 -14
- package/dist/hooks-XVFU67T2.cjs +0 -18
- package/dist/i18n-MUJMKTFM.cjs +0 -33
- package/dist/ide-CCQ33PGC.cjs +0 -15
- package/dist/ide-VLVFBZ5F.js +0 -15
- package/dist/import-J46F54JY.cjs +0 -10
- package/dist/init-EE5Y7RBL.cjs +0 -10
- package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
- package/dist/language-CVLPB7OV.js +0 -21
- package/dist/language-ZTWFHUSV.cjs +0 -21
- package/dist/learn-PON7I5QS.js +0 -23
- package/dist/learn-XLRSVNA3.cjs +0 -23
- package/dist/login-223QTGBG.cjs +0 -26
- package/dist/login-6IKTBUBY.js +0 -26
- package/dist/logout-RN2AG6SI.js +0 -23
- package/dist/logout-U3M4FFX7.cjs +0 -23
- package/dist/mcp-NUQ76QQB.cjs +0 -20
- package/dist/memory-CYMDQ2YC.cjs +0 -10
- package/dist/model-IDRCKDML.cjs +0 -10
- package/dist/new-7LEWOUF2.cjs +0 -12
- package/dist/onboarding-FXX7YHSJ.cjs +0 -35
- package/dist/onboarding-JYNMK6NI.js +0 -35
- package/dist/permissions-YBNSANIA.cjs +0 -10
- package/dist/plan-XEJMOT55.cjs +0 -13
- package/dist/quit-B43SJ6E4.cjs +0 -10
- package/dist/quit-GWTNHQSP.js +0 -10
- package/dist/resume-DYVOQN5L.cjs +0 -16
- package/dist/resume-M25UQKOX.js +0 -16
- package/dist/review-UWHWQHCB.cjs +0 -9
- package/dist/search-CPX4PWHP.js +0 -20
- package/dist/search-VUF3M4N3.cjs +0 -20
- package/dist/sessions-JODKER5D.cjs +0 -10
- package/dist/settings-55BNW6BF.js +0 -33
- package/dist/settings-BKTS7OMC.cjs +0 -33
- package/dist/setup-IRC5HQG2.js +0 -29
- package/dist/setup-MMQ7TWOP.cjs +0 -29
- package/dist/share-6JRQECAH.cjs +0 -17
- package/dist/share-YM5MJKMO.js +0 -17
- package/dist/skills-LWSOKOSH.cjs +0 -29
- package/dist/skills-new-GPL46YV2.js +0 -18
- package/dist/skills-new-L5BEZN5V.cjs +0 -18
- package/dist/slashCommands-FBPCIWM5.cjs +0 -95
- package/dist/slashCommands-FCWY5DXW.js +0 -95
- package/dist/status-3B5SDZPL.js +0 -17
- package/dist/status-TTGRF6NC.cjs +0 -17
- package/dist/sync-77CXVVTK.cjs +0 -21
- package/dist/sync-EH4K5U3N.cjs +0 -40
- package/dist/theme-64BYGJ57.cjs +0 -21
- package/dist/theme-YJE6HEON.js +0 -21
- package/dist/undo-PRTEGL2J.cjs +0 -10
|
@@ -0,0 +1,388 @@
|
|
|
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 _chunkNVATU4V6cjs = require('./chunk-NVATU4V6.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkLJD7KR3Lcjs = require('./chunk-LJD7KR3L.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunk7TO3PDMVcjs = require('./chunk-7TO3PDMV.cjs');
|
|
13
|
+
|
|
14
|
+
// src/commands/usage.ts
|
|
15
|
+
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
|
|
16
|
+
var _os = require('os'); var _os2 = _interopRequireDefault(_os);
|
|
17
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
18
|
+
|
|
19
|
+
// src/core/context/types.ts
|
|
20
|
+
var CONTEXT_ENV_VARS = {
|
|
21
|
+
/** Enable/disable context compaction ('true' | 'false'). */
|
|
22
|
+
CONTEXT_COMPACT: "AUTOHAND_CONTEXT_COMPACT",
|
|
23
|
+
/** Override context window size (number). */
|
|
24
|
+
CONTEXT_WINDOW: "AUTOHAND_CONTEXT_WINDOW",
|
|
25
|
+
/** Tokens to reserve for model output (number). */
|
|
26
|
+
RESERVE_TOKENS: "AUTOHAND_RESERVE_TOKENS"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/core/context/tokenizer.ts
|
|
30
|
+
var MODEL_CONTEXT = {
|
|
31
|
+
"anthropic/claude-4-sonnet": 2e5,
|
|
32
|
+
"anthropic/claude-3-opus": 2e5,
|
|
33
|
+
"anthropic/claude-3-haiku": 2e5,
|
|
34
|
+
"anthropic/claude-opus-4": 2e5,
|
|
35
|
+
"anthropic/claude-opus-4-7": 1e6,
|
|
36
|
+
"openai/gpt-4o-mini": 128e3,
|
|
37
|
+
"openai/gpt-4o": 128e3,
|
|
38
|
+
"openai/gpt-4.1": 2e5,
|
|
39
|
+
"openai/o1": 2e5,
|
|
40
|
+
"openai/o1-mini": 128e3,
|
|
41
|
+
"tencent/hy3-preview:free": 262144,
|
|
42
|
+
"tencent/hy3-preview-20260421:free": 262144,
|
|
43
|
+
"deepseek/deepseek-r1": 64e3,
|
|
44
|
+
"deepseek/deepseek-r1-0528-qwen3-8b:free": 8e3,
|
|
45
|
+
"deepseek/deepseek-coder": 16e3
|
|
46
|
+
};
|
|
47
|
+
var SAFETY_MARGIN = 0.9;
|
|
48
|
+
var CONTEXT_WARNING_THRESHOLD = 0.8;
|
|
49
|
+
var CONTEXT_CRITICAL_THRESHOLD = 0.9;
|
|
50
|
+
function parseContextWindowOverride(value) {
|
|
51
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
return Math.floor(value);
|
|
55
|
+
}
|
|
56
|
+
function normalizeModelId(model) {
|
|
57
|
+
return model.trim().toLowerCase().replace(/^openai\//, "").replace(/^google\//, "").replace(/^deepseek\//, "").replace(/^zai\//, "").replace(/^sakana\//, "");
|
|
58
|
+
}
|
|
59
|
+
function inferContextWindow(model) {
|
|
60
|
+
const normalized = normalizeModelId(model);
|
|
61
|
+
if (normalized.startsWith("gpt-5.5")) return 105e4;
|
|
62
|
+
if (normalized.startsWith("gpt-5.4") && !normalized.includes("mini") && !normalized.includes("nano")) return 105e4;
|
|
63
|
+
if (normalized.startsWith("gpt-5.4-mini") || normalized.startsWith("gpt-5.4-nano") || normalized.startsWith("gpt-5.3-codex") || normalized === "gpt-5" || normalized.startsWith("gpt-5-mini") || normalized.startsWith("gpt-5-nano")) {
|
|
64
|
+
return 4e5;
|
|
65
|
+
}
|
|
66
|
+
if (normalized.startsWith("gpt-5.3-chat")) return 128e3;
|
|
67
|
+
if (normalized.startsWith("gemini-3.1-flash-image")) return 128e3;
|
|
68
|
+
if (normalized.startsWith("gemini-3-pro-image")) return 65e3;
|
|
69
|
+
if (normalized.startsWith("gemini-3.1-pro") || normalized.startsWith("gemini-3.1-flash-lite") || normalized.startsWith("gemini-3-flash")) {
|
|
70
|
+
return 1e6;
|
|
71
|
+
}
|
|
72
|
+
if (normalized.startsWith("deepseek-v4")) return 1e6;
|
|
73
|
+
if (normalized.startsWith("glm-5.2")) return 1e6;
|
|
74
|
+
if (normalized.startsWith("glm-5.1")) return 2e5;
|
|
75
|
+
if (normalized === "fugu" || normalized === "fugu-ultra") return 1e6;
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
function getContextWindow(model, configuredContextWindow) {
|
|
79
|
+
const envOverride = process.env[CONTEXT_ENV_VARS.CONTEXT_WINDOW];
|
|
80
|
+
if (envOverride) {
|
|
81
|
+
const parsed = parseInt(envOverride, 10);
|
|
82
|
+
if (!isNaN(parsed) && parsed > 0) return parsed;
|
|
83
|
+
}
|
|
84
|
+
const configured = parseContextWindowOverride(configuredContextWindow);
|
|
85
|
+
if (configured) return configured;
|
|
86
|
+
const normalized = model.toLowerCase();
|
|
87
|
+
if (MODEL_CONTEXT[normalized]) {
|
|
88
|
+
return MODEL_CONTEXT[normalized];
|
|
89
|
+
}
|
|
90
|
+
const inferred = inferContextWindow(model);
|
|
91
|
+
if (inferred) return inferred;
|
|
92
|
+
const fuzzy = Object.entries(MODEL_CONTEXT).find(
|
|
93
|
+
([name]) => normalized.includes(name) || name.includes(_nullishCoalesce(normalized.split("/").pop(), () => ( "")))
|
|
94
|
+
);
|
|
95
|
+
return fuzzy ? fuzzy[1] : 128e3;
|
|
96
|
+
}
|
|
97
|
+
function getModelFamily(model) {
|
|
98
|
+
const normalized = model.toLowerCase();
|
|
99
|
+
if (normalized.includes("claude")) return "claude";
|
|
100
|
+
if (normalized.includes("gpt-4") || normalized.includes("gpt-5") || normalized.includes("o1") || normalized.includes("o3")) return "openai";
|
|
101
|
+
if (normalized.includes("gemini")) return "gemini";
|
|
102
|
+
if (normalized.includes("deepseek")) return "deepseek";
|
|
103
|
+
return "default";
|
|
104
|
+
}
|
|
105
|
+
function estimateTokens(text, modelFamily) {
|
|
106
|
+
if (!text) return 0;
|
|
107
|
+
const codeLikeChars = _nullishCoalesce(_optionalChain([text, 'access', _ => _.match, 'call', _2 => _2(/[{}[\]":\\]/g), 'optionalAccess', _3 => _3.length]), () => ( 0));
|
|
108
|
+
const codeLikeRatio = text.length > 200 && codeLikeChars >= 4 ? 0.65 : 1;
|
|
109
|
+
const baseRatio = {
|
|
110
|
+
openai: 4,
|
|
111
|
+
claude: 3.5,
|
|
112
|
+
gemini: 4,
|
|
113
|
+
deepseek: 3,
|
|
114
|
+
default: 3.5
|
|
115
|
+
};
|
|
116
|
+
const ratio = (_nullishCoalesce(baseRatio[_nullishCoalesce(modelFamily, () => ( "default"))], () => ( 3.5))) * codeLikeRatio;
|
|
117
|
+
return Math.ceil(text.length / ratio);
|
|
118
|
+
}
|
|
119
|
+
function estimateMessageTokens(message, modelFamily) {
|
|
120
|
+
const structureOverhead = 10;
|
|
121
|
+
let tokens = structureOverhead;
|
|
122
|
+
tokens += estimateTokens(_nullishCoalesce(message.content, () => ( "")), modelFamily);
|
|
123
|
+
if (message.tool_calls) {
|
|
124
|
+
for (const call of message.tool_calls) {
|
|
125
|
+
tokens += 5;
|
|
126
|
+
tokens += estimateTokens(call.function.name, modelFamily);
|
|
127
|
+
tokens += estimateTokens(call.function.arguments, modelFamily);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return tokens;
|
|
131
|
+
}
|
|
132
|
+
function estimateMessagesTokens(messages, modelFamily) {
|
|
133
|
+
return messages.reduce(
|
|
134
|
+
(acc, message) => acc + estimateMessageTokens(message, modelFamily),
|
|
135
|
+
0
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
function estimateToolsTokens(tools, modelFamily) {
|
|
139
|
+
if (!tools || tools.length === 0) return 0;
|
|
140
|
+
let tokens = 0;
|
|
141
|
+
for (const tool of tools) {
|
|
142
|
+
tokens += estimateTokens(tool.name, modelFamily);
|
|
143
|
+
tokens += estimateTokens(tool.description, modelFamily);
|
|
144
|
+
if (tool.parameters) {
|
|
145
|
+
const paramJson = JSON.stringify(tool.parameters);
|
|
146
|
+
tokens += estimateTokens(paramJson, modelFamily);
|
|
147
|
+
}
|
|
148
|
+
tokens += 35;
|
|
149
|
+
}
|
|
150
|
+
return tokens;
|
|
151
|
+
}
|
|
152
|
+
function calculateContextUsage(messages, tools, model, outputBudget = 16e3, configuredContextWindow) {
|
|
153
|
+
const envReserve = process.env[CONTEXT_ENV_VARS.RESERVE_TOKENS];
|
|
154
|
+
if (envReserve) {
|
|
155
|
+
const parsed = parseInt(envReserve, 10);
|
|
156
|
+
if (!isNaN(parsed) && parsed > 0) outputBudget = parsed;
|
|
157
|
+
}
|
|
158
|
+
const modelFamily = getModelFamily(model);
|
|
159
|
+
const messagesTokens = estimateMessagesTokens(messages, modelFamily);
|
|
160
|
+
const toolsTokens = estimateToolsTokens(tools, modelFamily);
|
|
161
|
+
const totalTokens = messagesTokens + toolsTokens;
|
|
162
|
+
const contextWindow = getContextWindow(model, configuredContextWindow);
|
|
163
|
+
const cappedOutputBudget = Math.min(outputBudget, Math.floor(contextWindow * 0.25));
|
|
164
|
+
const effectiveWindow = contextWindow - cappedOutputBudget;
|
|
165
|
+
const safeWindow = Math.floor(effectiveWindow * SAFETY_MARGIN);
|
|
166
|
+
const usagePercent = totalTokens / effectiveWindow;
|
|
167
|
+
return {
|
|
168
|
+
totalTokens,
|
|
169
|
+
messagesTokens,
|
|
170
|
+
toolsTokens,
|
|
171
|
+
contextWindow,
|
|
172
|
+
safeWindow,
|
|
173
|
+
usagePercent,
|
|
174
|
+
isWarning: usagePercent >= CONTEXT_WARNING_THRESHOLD,
|
|
175
|
+
isCritical: usagePercent >= CONTEXT_CRITICAL_THRESHOLD,
|
|
176
|
+
isExceeded: totalTokens >= safeWindow,
|
|
177
|
+
remainingTokens: Math.max(0, safeWindow - totalTokens)
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// src/commands/usage.ts
|
|
182
|
+
var USAGE_V2_FLAG = "usage_v2";
|
|
183
|
+
var metadata = {
|
|
184
|
+
command: "/usage",
|
|
185
|
+
description: "Show model, provider, context, and usage limits",
|
|
186
|
+
implemented: true
|
|
187
|
+
};
|
|
188
|
+
function clampPercent(value) {
|
|
189
|
+
if (!Number.isFinite(value)) return 100;
|
|
190
|
+
return Math.max(0, Math.min(100, Math.round(value)));
|
|
191
|
+
}
|
|
192
|
+
function formatPath(value) {
|
|
193
|
+
const home = _os2.default.homedir();
|
|
194
|
+
if (value === home) {
|
|
195
|
+
return "~";
|
|
196
|
+
}
|
|
197
|
+
if (value.startsWith(`${home}${_path2.default.sep}`)) {
|
|
198
|
+
return `~${value.slice(home.length)}`;
|
|
199
|
+
}
|
|
200
|
+
return value;
|
|
201
|
+
}
|
|
202
|
+
function formatCompactNumber(value) {
|
|
203
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
204
|
+
return "0";
|
|
205
|
+
}
|
|
206
|
+
if (value >= 1e6) {
|
|
207
|
+
const millions = value / 1e6;
|
|
208
|
+
return `${Number.isInteger(millions) ? millions.toFixed(0) : millions.toFixed(1)}M`;
|
|
209
|
+
}
|
|
210
|
+
if (value >= 1e3) {
|
|
211
|
+
const thousands = value / 1e3;
|
|
212
|
+
return `${Number.isInteger(thousands) ? thousands.toFixed(0) : thousands.toFixed(1)}K`;
|
|
213
|
+
}
|
|
214
|
+
return String(Math.round(value));
|
|
215
|
+
}
|
|
216
|
+
function formatPermissionMode(mode) {
|
|
217
|
+
switch (_nullishCoalesce(mode, () => ( "interactive"))) {
|
|
218
|
+
case "interactive":
|
|
219
|
+
return "Workspace (on-request)";
|
|
220
|
+
case "unrestricted":
|
|
221
|
+
return "Workspace (full access)";
|
|
222
|
+
case "restricted":
|
|
223
|
+
return "Read-only (restricted)";
|
|
224
|
+
case "external":
|
|
225
|
+
return "External approval";
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function resolveProviderSettings(config, provider) {
|
|
229
|
+
if (!config || !provider) {
|
|
230
|
+
return void 0;
|
|
231
|
+
}
|
|
232
|
+
return _nullishCoalesce(_chunkCNQKIWIScjs.getProviderConfig.call(void 0, config, provider), () => ( void 0));
|
|
233
|
+
}
|
|
234
|
+
function resolveActiveProvider(ctx) {
|
|
235
|
+
return _nullishCoalesce(_nullishCoalesce(_optionalChain([ctx, 'access', _4 => _4.config, 'optionalAccess', _5 => _5.provider]), () => ( ctx.provider)), () => ( "openrouter"));
|
|
236
|
+
}
|
|
237
|
+
function resolveActiveModel(ctx, provider) {
|
|
238
|
+
const settings = resolveProviderSettings(ctx.config, provider);
|
|
239
|
+
return _nullishCoalesce(_optionalChain([settings, 'optionalAccess', _6 => _6.model]), () => ( ctx.model));
|
|
240
|
+
}
|
|
241
|
+
function resolveReasoningEffort(config, provider) {
|
|
242
|
+
return _optionalChain([resolveProviderSettings, 'call', _7 => _7(config, provider), 'optionalAccess', _8 => _8.reasoningEffort]);
|
|
243
|
+
}
|
|
244
|
+
function resolveContextWindow(ctx, provider, model) {
|
|
245
|
+
const settings = resolveProviderSettings(ctx.config, provider);
|
|
246
|
+
return _nullishCoalesce(_nullishCoalesce(_optionalChain([ctx, 'access', _9 => _9.getContextWindow, 'optionalCall', _10 => _10()]), () => ( _optionalChain([settings, 'optionalAccess', _11 => _11.contextWindow]))), () => ( getContextWindow(model, _optionalChain([settings, 'optionalAccess', _12 => _12.contextWindow]))));
|
|
247
|
+
}
|
|
248
|
+
function resolveContextTokensUsed(ctx, contextWindow, percentLeft) {
|
|
249
|
+
const reported = _optionalChain([ctx, 'access', _13 => _13.getTotalTokensUsed, 'optionalCall', _14 => _14()]);
|
|
250
|
+
if (typeof reported === "number" && Number.isFinite(reported) && reported > 0) {
|
|
251
|
+
return Math.round(reported);
|
|
252
|
+
}
|
|
253
|
+
return Math.round(contextWindow * ((100 - percentLeft) / 100));
|
|
254
|
+
}
|
|
255
|
+
function resolveAgentsFile(workspaceRoot) {
|
|
256
|
+
return _fs2.default.existsSync(_path2.default.join(workspaceRoot, "AGENTS.md")) ? "AGENTS.md" : "none";
|
|
257
|
+
}
|
|
258
|
+
function resolveAccount(config) {
|
|
259
|
+
const account = _chunkNVATU4V6cjs.formatAccount.call(void 0, config, "");
|
|
260
|
+
if (account) {
|
|
261
|
+
return account;
|
|
262
|
+
}
|
|
263
|
+
if (_optionalChain([config, 'optionalAccess', _15 => _15.openai, 'optionalAccess', _16 => _16.authMode]) === "chatgpt" && _optionalChain([config, 'access', _17 => _17.openai, 'access', _18 => _18.chatgptAuth, 'optionalAccess', _19 => _19.accountId])) {
|
|
264
|
+
return `ChatGPT account ${config.openai.chatgptAuth.accountId}`;
|
|
265
|
+
}
|
|
266
|
+
return "not signed in";
|
|
267
|
+
}
|
|
268
|
+
function isUsageV2Enabled(ctx) {
|
|
269
|
+
const localDefault = ctx.config ? _nullishCoalesce(_optionalChain([_chunk7TO3PDMVcjs.getFeatureState.call(void 0, ctx.config, USAGE_V2_FLAG), 'optionalAccess', _20 => _20.enabled]), () => ( false)) : false;
|
|
270
|
+
return _nullishCoalesce(_optionalChain([ctx, 'access', _21 => _21.isFeatureEnabled, 'optionalCall', _22 => _22(USAGE_V2_FLAG, localDefault)]), () => ( localDefault));
|
|
271
|
+
}
|
|
272
|
+
function gatherUsageDashboardData(ctx) {
|
|
273
|
+
const provider = resolveActiveProvider(ctx);
|
|
274
|
+
const model = resolveActiveModel(ctx, provider);
|
|
275
|
+
const contextPercentLeft = clampPercent(_nullishCoalesce(_optionalChain([ctx, 'access', _23 => _23.getContextPercentLeft, 'optionalCall', _24 => _24()]), () => ( 100)));
|
|
276
|
+
const contextWindow = resolveContextWindow(ctx, provider, model);
|
|
277
|
+
const currentSession = ctx.sessionManager.getCurrentSession();
|
|
278
|
+
const usageLimits = _nullishCoalesce(_optionalChain([ctx, 'access', _25 => _25.getUsageLimits, 'optionalCall', _26 => _26()]), () => ( []));
|
|
279
|
+
return {
|
|
280
|
+
model,
|
|
281
|
+
provider,
|
|
282
|
+
directory: formatPath(ctx.workspaceRoot),
|
|
283
|
+
permissions: formatPermissionMode(_optionalChain([ctx, 'access', _27 => _27.config, 'optionalAccess', _28 => _28.permissions, 'optionalAccess', _29 => _29.mode])),
|
|
284
|
+
agentsFile: resolveAgentsFile(ctx.workspaceRoot),
|
|
285
|
+
account: resolveAccount(ctx.config),
|
|
286
|
+
sessionId: _nullishCoalesce(_optionalChain([currentSession, 'optionalAccess', _30 => _30.metadata, 'access', _31 => _31.sessionId]), () => ( "none")),
|
|
287
|
+
contextPercentLeft,
|
|
288
|
+
contextWindow,
|
|
289
|
+
contextTokensUsed: resolveContextTokensUsed(ctx, contextWindow, contextPercentLeft),
|
|
290
|
+
tokenUsageStatus: _nullishCoalesce(_optionalChain([ctx, 'access', _32 => _32.getTokenUsageStatus, 'optionalCall', _33 => _33()]), () => ( "actual")),
|
|
291
|
+
reasoningEffort: resolveReasoningEffort(ctx.config, provider),
|
|
292
|
+
usageLimits
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function formatProgressBar(percentLeft, width = 24) {
|
|
296
|
+
const emptySlots = Math.round(percentLeft / 100 * width);
|
|
297
|
+
const usedSlots = width - emptySlots;
|
|
298
|
+
return `[${"\u2588".repeat(emptySlots)}${"\u2591".repeat(usedSlots)}]`;
|
|
299
|
+
}
|
|
300
|
+
function formatInfoRow(label, value, labelWidth) {
|
|
301
|
+
const theme = _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, );
|
|
302
|
+
return `${theme.muted(label.padEnd(labelWidth))} ${value}`;
|
|
303
|
+
}
|
|
304
|
+
function formatModel(data) {
|
|
305
|
+
if (!data.reasoningEffort) {
|
|
306
|
+
return data.model;
|
|
307
|
+
}
|
|
308
|
+
return `${data.model} ${_chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(`(reasoning ${data.reasoningEffort})`)}`;
|
|
309
|
+
}
|
|
310
|
+
function formatContextSummary(data) {
|
|
311
|
+
const used = formatCompactNumber(data.contextTokensUsed);
|
|
312
|
+
const window = formatCompactNumber(data.contextWindow);
|
|
313
|
+
const suffix = data.tokenUsageStatus === "unavailable" ? " estimated" : "";
|
|
314
|
+
return `${data.contextPercentLeft}% left ${_chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(`(${used} used / ${window}${suffix})`)}`;
|
|
315
|
+
}
|
|
316
|
+
function formatUsageLimitRow(row, labelWidth) {
|
|
317
|
+
if (row.unavailableReason) {
|
|
318
|
+
return formatInfoRow(`${row.label}:`, row.unavailableReason, labelWidth);
|
|
319
|
+
}
|
|
320
|
+
const percent = clampPercent(_nullishCoalesce(row.percentLeft, () => ( 100)));
|
|
321
|
+
const reset = row.resetLabel ? _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(` (${row.resetLabel})`) : "";
|
|
322
|
+
const usage2 = typeof row.used === "number" && typeof row.limit === "number" ? _chunkLJD7KR3Lcjs.createCommandTheme.call(void 0, ).muted(` (${formatCompactNumber(row.used)} used / ${formatCompactNumber(row.limit)})`) : "";
|
|
323
|
+
return formatInfoRow(`${row.label}:`, `${formatProgressBar(percent)} ${percent}% left${reset}${usage2}`, labelWidth);
|
|
324
|
+
}
|
|
325
|
+
function formatUsageDashboard(data) {
|
|
326
|
+
const labelWidth = 24;
|
|
327
|
+
const providerLimitRows = data.usageLimits.length > 0 ? data.usageLimits : [{ label: String(data.provider), unavailableReason: "not reported by provider" }];
|
|
328
|
+
const lines = [
|
|
329
|
+
formatInfoRow("Model:", formatModel(data), labelWidth),
|
|
330
|
+
formatInfoRow("Provider:", String(data.provider), labelWidth),
|
|
331
|
+
formatInfoRow("Directory:", data.directory, labelWidth),
|
|
332
|
+
formatInfoRow("Permissions:", data.permissions, labelWidth),
|
|
333
|
+
formatInfoRow("Agents.md:", data.agentsFile, labelWidth),
|
|
334
|
+
formatInfoRow("Account:", data.account, labelWidth),
|
|
335
|
+
formatInfoRow("Session:", data.sessionId, labelWidth),
|
|
336
|
+
"",
|
|
337
|
+
formatInfoRow("Context window:", formatContextSummary(data), labelWidth),
|
|
338
|
+
formatInfoRow("", formatProgressBar(data.contextPercentLeft), labelWidth),
|
|
339
|
+
"",
|
|
340
|
+
formatInfoRow("Provider limits:", "", labelWidth).trimEnd(),
|
|
341
|
+
...providerLimitRows.map((row) => formatUsageLimitRow(row, labelWidth))
|
|
342
|
+
];
|
|
343
|
+
return lines.join("\n");
|
|
344
|
+
}
|
|
345
|
+
async function usage(ctx) {
|
|
346
|
+
if (!isUsageV2Enabled(ctx)) {
|
|
347
|
+
return "The /usage dashboard is behind usage_v2. Run /experiments enable usage_v2, then /usage again. No restart required.";
|
|
348
|
+
}
|
|
349
|
+
await _optionalChain([ctx, 'access', _34 => _34.trackFeatureActivation, 'optionalCall', _35 => _35(USAGE_V2_FLAG, {
|
|
350
|
+
provider: ctx.provider,
|
|
351
|
+
model: ctx.model
|
|
352
|
+
})]);
|
|
353
|
+
return formatUsageDashboard(gatherUsageDashboardData(ctx));
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
exports.CONTEXT_ENV_VARS = CONTEXT_ENV_VARS; exports.getContextWindow = getContextWindow; exports.estimateMessageTokens = estimateMessageTokens; exports.estimateMessagesTokens = estimateMessagesTokens; exports.calculateContextUsage = calculateContextUsage; exports.USAGE_V2_FLAG = USAGE_V2_FLAG; exports.metadata = metadata; exports.gatherUsageDashboardData = gatherUsageDashboardData; exports.formatUsageDashboard = formatUsageDashboard; exports.usage = usage;
|
|
368
|
+
/**
|
|
369
|
+
* @license
|
|
370
|
+
* Copyright 2025 Autohand AI LLC
|
|
371
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
372
|
+
*
|
|
373
|
+
* Domain types for the context-compaction module.
|
|
374
|
+
*/
|
|
375
|
+
/**
|
|
376
|
+
* @license
|
|
377
|
+
* Copyright 2025 Autohand AI LLC
|
|
378
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
379
|
+
*
|
|
380
|
+
* Token estimation, context window lookup, and usage calculation.
|
|
381
|
+
* Moved from src/utils/context.ts — this is the canonical location.
|
|
382
|
+
* The old barrel re-exports for backward compatibility.
|
|
383
|
+
*/
|
|
384
|
+
/**
|
|
385
|
+
* @license
|
|
386
|
+
* Copyright 2026 Autohand AI LLC
|
|
387
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
388
|
+
*/
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
|
|
9
9
|
|
|
10
10
|
// src/commands/export.ts
|
|
11
11
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -245,7 +245,7 @@ function getSuggestedFilename(metadata2, format) {
|
|
|
245
245
|
// src/commands/export.ts
|
|
246
246
|
var metadata = {
|
|
247
247
|
command: "/export",
|
|
248
|
-
description:
|
|
248
|
+
description: _chunkRJCZLFHEcjs.t.call(void 0, "commands.export.description"),
|
|
249
249
|
implemented: true
|
|
250
250
|
};
|
|
251
251
|
async function execute(args, context) {
|
|
@@ -265,7 +265,7 @@ async function execute(args, context) {
|
|
|
265
265
|
label: `${s.projectName} - ${new Date(s.createdAt).toLocaleString()} (${s.messageCount} messages)`,
|
|
266
266
|
value: s.sessionId
|
|
267
267
|
}));
|
|
268
|
-
const sessionResult = await
|
|
268
|
+
const sessionResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
|
|
269
269
|
title: "Select a session to export:",
|
|
270
270
|
options: sessionOptions
|
|
271
271
|
});
|
|
@@ -286,7 +286,7 @@ async function execute(args, context) {
|
|
|
286
286
|
{ label: "JSON (.json)", value: "json" },
|
|
287
287
|
{ label: "HTML (.html)", value: "html" }
|
|
288
288
|
];
|
|
289
|
-
const formatResult = await
|
|
289
|
+
const formatResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
|
|
290
290
|
title: "Export format:",
|
|
291
291
|
options: formatOptions
|
|
292
292
|
});
|
|
@@ -297,17 +297,17 @@ async function execute(args, context) {
|
|
|
297
297
|
const format = formatResult.value;
|
|
298
298
|
const options = {};
|
|
299
299
|
if (format === "md" || format === "html") {
|
|
300
|
-
options.includeToolOutputs = await
|
|
300
|
+
options.includeToolOutputs = await _chunkDMM2BKSVcjs.showConfirm.call(void 0, {
|
|
301
301
|
title: "Include tool outputs?",
|
|
302
302
|
defaultValue: true
|
|
303
303
|
});
|
|
304
|
-
options.includeToc = await
|
|
304
|
+
options.includeToc = await _chunkDMM2BKSVcjs.showConfirm.call(void 0, {
|
|
305
305
|
title: "Include table of contents?",
|
|
306
306
|
defaultValue: false
|
|
307
307
|
});
|
|
308
308
|
}
|
|
309
309
|
const suggestedFilename = getSuggestedFilename(metadata2, format);
|
|
310
|
-
const filename = await
|
|
310
|
+
const filename = await _chunkDMM2BKSVcjs.showInput.call(void 0, {
|
|
311
311
|
title: "Save as:",
|
|
312
312
|
defaultValue: suggestedFilename
|
|
313
313
|
});
|
|
@@ -331,11 +331,11 @@ async function execute(args, context) {
|
|
|
331
331
|
try {
|
|
332
332
|
await saveExport(content, filePath);
|
|
333
333
|
console.log();
|
|
334
|
-
console.log(_chalk2.default.green(
|
|
334
|
+
console.log(_chalk2.default.green(_chunkRJCZLFHEcjs.t.call(void 0, "commands.export.success", { path: filePath })));
|
|
335
335
|
console.log(_chalk2.default.gray(` ${messages.length} messages, ${(Buffer.byteLength(content, "utf8") / 1024).toFixed(1)} KB`));
|
|
336
336
|
console.log();
|
|
337
337
|
} catch (error) {
|
|
338
|
-
console.log(_chalk2.default.red(
|
|
338
|
+
console.log(_chalk2.default.red(_chunkRJCZLFHEcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
341
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// src/providers/customProviders.ts
|
|
2
|
+
var CUSTOM_PROVIDER_PREFIX = "custom:";
|
|
3
|
+
function normalizeCustomProviderId(input) {
|
|
4
|
+
return input.trim().toLowerCase().replace(/^custom:/i, "").replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
5
|
+
}
|
|
6
|
+
function toCustomProviderName(id) {
|
|
7
|
+
return `${CUSTOM_PROVIDER_PREFIX}${normalizeCustomProviderId(id)}`;
|
|
8
|
+
}
|
|
9
|
+
function parseCustomProviderName(provider) {
|
|
10
|
+
if (typeof provider !== "string" || !provider.toLowerCase().startsWith(CUSTOM_PROVIDER_PREFIX)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const id = normalizeCustomProviderId(provider.slice(CUSTOM_PROVIDER_PREFIX.length));
|
|
14
|
+
return id.length > 0 ? id : null;
|
|
15
|
+
}
|
|
16
|
+
function isCustomProviderName(provider) {
|
|
17
|
+
return parseCustomProviderName(provider) !== null;
|
|
18
|
+
}
|
|
19
|
+
function getCustomProviderConfig(config, provider) {
|
|
20
|
+
const id = parseCustomProviderName(provider);
|
|
21
|
+
if (!id) return void 0;
|
|
22
|
+
const entry = config?.customProviders?.[id];
|
|
23
|
+
if (!entry || entry.disabled === true) return void 0;
|
|
24
|
+
return {
|
|
25
|
+
...entry,
|
|
26
|
+
id
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
normalizeCustomProviderId,
|
|
32
|
+
toCustomProviderName,
|
|
33
|
+
isCustomProviderName,
|
|
34
|
+
getCustomProviderConfig
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* @license
|
|
38
|
+
* Copyright 2025 Autohand AI LLC
|
|
39
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
40
|
+
*/
|
|
@@ -115,8 +115,7 @@ var SyncApiClient = class {
|
|
|
115
115
|
"Content-Type": "application/json"
|
|
116
116
|
},
|
|
117
117
|
body: JSON.stringify({
|
|
118
|
-
|
|
119
|
-
...batchIndex === 0 ? { manifest } : {},
|
|
118
|
+
manifest,
|
|
120
119
|
files: batch
|
|
121
120
|
})
|
|
122
121
|
}
|
|
@@ -136,18 +135,22 @@ var SyncApiClient = class {
|
|
|
136
135
|
/**
|
|
137
136
|
* Upload a file to a pre-signed URL
|
|
138
137
|
*/
|
|
139
|
-
async uploadFile(uploadUrl, content) {
|
|
138
|
+
async uploadFile(uploadUrl, content, token) {
|
|
140
139
|
if (content.length > this.maxFileSize) {
|
|
141
140
|
throw new Error(`File exceeds max size of ${this.maxFileSize} bytes`);
|
|
142
141
|
}
|
|
142
|
+
const headers = {
|
|
143
|
+
"Content-Type": "application/octet-stream",
|
|
144
|
+
"Content-Length": content.length.toString()
|
|
145
|
+
};
|
|
146
|
+
if (token) {
|
|
147
|
+
headers.Authorization = `Bearer ${token}`;
|
|
148
|
+
}
|
|
143
149
|
const response = await this.fetchWithRetry(
|
|
144
150
|
uploadUrl,
|
|
145
151
|
{
|
|
146
152
|
method: "PUT",
|
|
147
|
-
headers
|
|
148
|
-
"Content-Type": "application/octet-stream",
|
|
149
|
-
"Content-Length": content.length.toString()
|
|
150
|
-
},
|
|
153
|
+
headers,
|
|
151
154
|
body: new Uint8Array(content)
|
|
152
155
|
}
|
|
153
156
|
);
|
|
@@ -234,10 +237,11 @@ var SyncApiClient = class {
|
|
|
234
237
|
/**
|
|
235
238
|
* Download a file from a pre-signed URL
|
|
236
239
|
*/
|
|
237
|
-
async downloadFile(downloadUrl) {
|
|
240
|
+
async downloadFile(downloadUrl, token) {
|
|
241
|
+
const headers = token ? { Authorization: `Bearer ${token}` } : void 0;
|
|
238
242
|
const response = await this.fetchWithRetry(
|
|
239
243
|
downloadUrl,
|
|
240
|
-
{ method: "GET" }
|
|
244
|
+
{ method: "GET", ...headers ? { headers } : {} }
|
|
241
245
|
);
|
|
242
246
|
if (!response.ok) {
|
|
243
247
|
throw new Error(`Download failed: ${response.status}`);
|
|
@@ -9,6 +9,7 @@ import os from "os";
|
|
|
9
9
|
import chalk from "chalk";
|
|
10
10
|
import fs from "fs-extra";
|
|
11
11
|
var GIT_COMMAND_TIMEOUT_MS = 5e3;
|
|
12
|
+
var GIT_INIT_TIMEOUT_MS = 15e3;
|
|
12
13
|
var toolCheckResultsPromise;
|
|
13
14
|
function getCurrentBunVersion() {
|
|
14
15
|
return process.versions.bun;
|
|
@@ -200,7 +201,7 @@ function isEmptyDirectory(dir) {
|
|
|
200
201
|
return false;
|
|
201
202
|
}
|
|
202
203
|
}
|
|
203
|
-
function runGitCommand(args, cwd) {
|
|
204
|
+
function runGitCommand(args, cwd, timeoutMs = GIT_COMMAND_TIMEOUT_MS) {
|
|
204
205
|
return new Promise((resolve) => {
|
|
205
206
|
try {
|
|
206
207
|
const proc = spawn("git", args, { cwd, stdio: ["pipe", "pipe", "pipe"] });
|
|
@@ -208,7 +209,7 @@ function runGitCommand(args, cwd) {
|
|
|
208
209
|
const timeout = setTimeout(() => {
|
|
209
210
|
proc.kill();
|
|
210
211
|
resolve(void 0);
|
|
211
|
-
},
|
|
212
|
+
}, timeoutMs);
|
|
212
213
|
proc.stdout?.on("data", (chunk) => {
|
|
213
214
|
stdout += chunk.toString();
|
|
214
215
|
});
|
|
@@ -258,7 +259,7 @@ async function checkGitRepo(workspaceRoot) {
|
|
|
258
259
|
};
|
|
259
260
|
}
|
|
260
261
|
if (isEmptyDirectory(workspaceRoot)) {
|
|
261
|
-
const initResult = await runGitCommand(["init"], workspaceRoot);
|
|
262
|
+
const initResult = await runGitCommand(["init"], workspaceRoot, GIT_INIT_TIMEOUT_MS);
|
|
262
263
|
if (initResult !== void 0 || fs.existsSync(`${workspaceRoot}/.git/HEAD`)) {
|
|
263
264
|
if (os.platform() === "darwin") {
|
|
264
265
|
try {
|