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
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadLocalProjectSettings
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JSU46T6K.js";
|
|
4
|
+
import {
|
|
5
|
+
getCustomProviderConfig,
|
|
6
|
+
isCustomProviderName
|
|
7
|
+
} from "./chunk-JJGDOBFL.js";
|
|
8
|
+
import {
|
|
9
|
+
isAwsBedrockProviderEnabled
|
|
10
|
+
} from "./chunk-H7HXRRHK.js";
|
|
4
11
|
import {
|
|
5
12
|
autoInitTheme,
|
|
6
13
|
configureThemeSources,
|
|
@@ -8,7 +15,7 @@ import {
|
|
|
8
15
|
} from "./chunk-NBGOIFKP.js";
|
|
9
16
|
import {
|
|
10
17
|
AUTOHAND_FILES
|
|
11
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-PG2JIU5M.js";
|
|
12
19
|
|
|
13
20
|
// src/config.ts
|
|
14
21
|
import fs from "fs-extra";
|
|
@@ -25,7 +32,9 @@ var DEFAULT_OPENAI_URL = "https://api.openai.com/v1";
|
|
|
25
32
|
var DEFAULT_MLX_URL = "http://localhost:8080";
|
|
26
33
|
var DEFAULT_LLMGATEWAY_URL = "https://api.llmgateway.io/v1";
|
|
27
34
|
var DEFAULT_ZAI_URL = "https://api.z.ai/api/paas/v4";
|
|
35
|
+
var DEFAULT_SAKANA_URL = "https://api.sakana.ai/v1";
|
|
28
36
|
var DEFAULT_DEEPSEEK_URL = "https://api.deepseek.com";
|
|
37
|
+
var DEFAULT_BEDROCK_REGION = "us-east-1";
|
|
29
38
|
function normalizeProviderName(provider) {
|
|
30
39
|
if (provider === void 0) {
|
|
31
40
|
return void 0;
|
|
@@ -33,6 +42,9 @@ function normalizeProviderName(provider) {
|
|
|
33
42
|
if (provider === "vertex") {
|
|
34
43
|
return "vertexai";
|
|
35
44
|
}
|
|
45
|
+
if (isCustomProviderName(provider)) {
|
|
46
|
+
return provider;
|
|
47
|
+
}
|
|
36
48
|
const validProviders = [
|
|
37
49
|
"openrouter",
|
|
38
50
|
"ollama",
|
|
@@ -42,11 +54,13 @@ function normalizeProviderName(provider) {
|
|
|
42
54
|
"llmgateway",
|
|
43
55
|
"azure",
|
|
44
56
|
"zai",
|
|
57
|
+
"sakana",
|
|
45
58
|
"vertexai",
|
|
46
59
|
"xai",
|
|
47
60
|
"cerebras",
|
|
48
61
|
"nvidia",
|
|
49
|
-
"deepseek"
|
|
62
|
+
"deepseek",
|
|
63
|
+
"bedrock"
|
|
50
64
|
];
|
|
51
65
|
if (typeof provider === "string" && validProviders.includes(provider)) {
|
|
52
66
|
return provider;
|
|
@@ -306,6 +320,9 @@ async function loadConfig(customPath, workspaceRoot) {
|
|
|
306
320
|
ui: {
|
|
307
321
|
theme: "dark",
|
|
308
322
|
autoConfirm: false,
|
|
323
|
+
silentToolOutput: false,
|
|
324
|
+
completionReportEnabled: true,
|
|
325
|
+
activityVerbsEnabled: true,
|
|
309
326
|
promptSuggestions: true
|
|
310
327
|
},
|
|
311
328
|
telemetry: {
|
|
@@ -355,7 +372,18 @@ function mergeWorkspaceSettings(globalConfig, workspaceSettings) {
|
|
|
355
372
|
}
|
|
356
373
|
if (workspaceSettings.model !== void 0) {
|
|
357
374
|
const provider = workspaceSettings.provider || merged.provider;
|
|
358
|
-
if (provider &&
|
|
375
|
+
if (provider && isCustomProviderName(provider)) {
|
|
376
|
+
const customProvider = getCustomProviderConfig(merged, provider);
|
|
377
|
+
if (customProvider) {
|
|
378
|
+
merged.customProviders = {
|
|
379
|
+
...merged.customProviders,
|
|
380
|
+
[customProvider.id]: {
|
|
381
|
+
...customProvider,
|
|
382
|
+
model: workspaceSettings.model
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
} else if (provider && merged[provider]) {
|
|
359
387
|
merged[provider].model = workspaceSettings.model;
|
|
360
388
|
}
|
|
361
389
|
}
|
|
@@ -422,6 +450,16 @@ function mergeEnvVariables(config) {
|
|
|
422
450
|
}
|
|
423
451
|
};
|
|
424
452
|
}
|
|
453
|
+
const envRegion = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION;
|
|
454
|
+
if (envRegion && config.bedrock) {
|
|
455
|
+
config = {
|
|
456
|
+
...config,
|
|
457
|
+
bedrock: {
|
|
458
|
+
...config.bedrock,
|
|
459
|
+
region: config.bedrock.region || envRegion
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
}
|
|
425
463
|
return config;
|
|
426
464
|
}
|
|
427
465
|
function normalizeConfig(config) {
|
|
@@ -449,6 +487,9 @@ function normalizeConfig(config) {
|
|
|
449
487
|
ui: {
|
|
450
488
|
autoConfirm: config.dry_run ?? false,
|
|
451
489
|
theme: "dark",
|
|
490
|
+
silentToolOutput: false,
|
|
491
|
+
completionReportEnabled: true,
|
|
492
|
+
activityVerbsEnabled: true,
|
|
452
493
|
promptSuggestions: true
|
|
453
494
|
}
|
|
454
495
|
};
|
|
@@ -456,7 +497,7 @@ function normalizeConfig(config) {
|
|
|
456
497
|
return config;
|
|
457
498
|
}
|
|
458
499
|
function isModernConfig(config) {
|
|
459
|
-
return typeof config.openrouter === "object" || typeof config.ollama === "object" || typeof config.llamacpp === "object" || typeof config.openai === "object" || typeof config.mlx === "object" || typeof config.azure === "object" || typeof config.zai === "object" || typeof config.vertexai === "object" || typeof config.xai === "object" || typeof config.cerebras === "object" || typeof config.nvidia === "object" || typeof config.deepseek === "object";
|
|
500
|
+
return typeof config.openrouter === "object" || typeof config.ollama === "object" || typeof config.llamacpp === "object" || typeof config.openai === "object" || typeof config.mlx === "object" || typeof config.azure === "object" || typeof config.zai === "object" || typeof config.sakana === "object" || typeof config.vertexai === "object" || typeof config.xai === "object" || typeof config.cerebras === "object" || typeof config.nvidia === "object" || typeof config.deepseek === "object" || typeof config.bedrock === "object" || typeof config.customProviders === "object";
|
|
460
501
|
}
|
|
461
502
|
function isLegacyConfig(config) {
|
|
462
503
|
return typeof config.api_key === "string";
|
|
@@ -489,6 +530,15 @@ function validateConfig(config, configPath) {
|
|
|
489
530
|
if (config.ui.promptSuggestions !== void 0 && typeof config.ui.promptSuggestions !== "boolean") {
|
|
490
531
|
throw new Error(`ui.promptSuggestions must be boolean in ${configPath}`);
|
|
491
532
|
}
|
|
533
|
+
if (config.ui.completionReportEnabled !== void 0 && typeof config.ui.completionReportEnabled !== "boolean") {
|
|
534
|
+
throw new Error(`ui.completionReportEnabled must be boolean in ${configPath}`);
|
|
535
|
+
}
|
|
536
|
+
if (config.ui.activityVerbsEnabled !== void 0 && typeof config.ui.activityVerbsEnabled !== "boolean") {
|
|
537
|
+
throw new Error(`ui.activityVerbsEnabled must be boolean in ${configPath}`);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
if (config.auth?.apiKeyHelper !== void 0 && typeof config.auth.apiKeyHelper !== "string") {
|
|
541
|
+
throw new Error(`auth.apiKeyHelper must be a string in ${configPath}`);
|
|
492
542
|
}
|
|
493
543
|
if (config.agent) {
|
|
494
544
|
if (config.agent.toolSelectionCache !== void 0 && typeof config.agent.toolSelectionCache !== "boolean") {
|
|
@@ -548,6 +598,37 @@ function validateConfig(config, configPath) {
|
|
|
548
598
|
}
|
|
549
599
|
}
|
|
550
600
|
}
|
|
601
|
+
if (config.customProviders !== void 0) {
|
|
602
|
+
if (!isPlainObject(config.customProviders)) {
|
|
603
|
+
throw new Error(`customProviders must be an object in ${configPath}`);
|
|
604
|
+
}
|
|
605
|
+
for (const [key, provider] of Object.entries(config.customProviders)) {
|
|
606
|
+
if (!isPlainObject(provider)) {
|
|
607
|
+
throw new Error(`customProviders.${key} must be an object in ${configPath}`);
|
|
608
|
+
}
|
|
609
|
+
if (provider.id !== key) {
|
|
610
|
+
throw new Error(`customProviders.${key}.id must match its config key in ${configPath}`);
|
|
611
|
+
}
|
|
612
|
+
if (typeof provider.displayName !== "string" || provider.displayName.trim() === "") {
|
|
613
|
+
throw new Error(`customProviders.${key}.displayName must be a non-empty string in ${configPath}`);
|
|
614
|
+
}
|
|
615
|
+
if (provider.apiFormat !== "openai-compatible") {
|
|
616
|
+
throw new Error(`customProviders.${key}.apiFormat must be "openai-compatible" in ${configPath}`);
|
|
617
|
+
}
|
|
618
|
+
if (typeof provider.baseUrl !== "string" || provider.baseUrl.trim() === "") {
|
|
619
|
+
throw new Error(`customProviders.${key}.baseUrl must be a non-empty string in ${configPath}`);
|
|
620
|
+
}
|
|
621
|
+
if (typeof provider.model !== "string" || provider.model.trim() === "") {
|
|
622
|
+
throw new Error(`customProviders.${key}.model must be a non-empty string in ${configPath}`);
|
|
623
|
+
}
|
|
624
|
+
if (provider.apiKeyRequired !== void 0 && typeof provider.apiKeyRequired !== "boolean") {
|
|
625
|
+
throw new Error(`customProviders.${key}.apiKeyRequired must be boolean in ${configPath}`);
|
|
626
|
+
}
|
|
627
|
+
if (provider.contextWindow !== void 0 && (typeof provider.contextWindow !== "number" || provider.contextWindow <= 0)) {
|
|
628
|
+
throw new Error(`customProviders.${key}.contextWindow must be a positive number in ${configPath}`);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
551
632
|
}
|
|
552
633
|
function resolveWorkspaceRoot(config, requestedPath) {
|
|
553
634
|
const candidate = requestedPath ?? process.cwd() ?? config.workspace?.defaultRoot;
|
|
@@ -555,6 +636,30 @@ function resolveWorkspaceRoot(config, requestedPath) {
|
|
|
555
636
|
}
|
|
556
637
|
function getProviderConfig(config, provider) {
|
|
557
638
|
const chosen = provider ?? config.provider ?? "openrouter";
|
|
639
|
+
if (isCustomProviderName(chosen)) {
|
|
640
|
+
const entry2 = getCustomProviderConfig(config, chosen);
|
|
641
|
+
if (!entry2 || entry2.apiFormat !== "openai-compatible") {
|
|
642
|
+
return null;
|
|
643
|
+
}
|
|
644
|
+
const model = entry2.model?.trim();
|
|
645
|
+
const baseUrl = entry2.baseUrl?.trim();
|
|
646
|
+
const requiresApiKey = entry2.apiKeyRequired !== false;
|
|
647
|
+
if (!model || !baseUrl) {
|
|
648
|
+
return null;
|
|
649
|
+
}
|
|
650
|
+
if (requiresApiKey && (!entry2.apiKey || entry2.apiKey === "replace-me")) {
|
|
651
|
+
return null;
|
|
652
|
+
}
|
|
653
|
+
return {
|
|
654
|
+
...entry2,
|
|
655
|
+
model,
|
|
656
|
+
baseUrl
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
if (chosen === "bedrock" && !isAwsBedrockProviderEnabled(config)) {
|
|
660
|
+
return null;
|
|
661
|
+
}
|
|
662
|
+
const builtInProvider = chosen;
|
|
558
663
|
const configByProvider = {
|
|
559
664
|
openrouter: config.openrouter,
|
|
560
665
|
ollama: config.ollama,
|
|
@@ -564,13 +669,15 @@ function getProviderConfig(config, provider) {
|
|
|
564
669
|
llmgateway: config.llmgateway,
|
|
565
670
|
azure: config.azure,
|
|
566
671
|
zai: config.zai,
|
|
672
|
+
sakana: config.sakana,
|
|
567
673
|
vertexai: config.vertexai,
|
|
568
674
|
xai: config.xai,
|
|
569
675
|
cerebras: config.cerebras,
|
|
570
676
|
nvidia: config.nvidia,
|
|
571
|
-
deepseek: config.deepseek
|
|
677
|
+
deepseek: config.deepseek,
|
|
678
|
+
bedrock: config.bedrock
|
|
572
679
|
};
|
|
573
|
-
const entry = configByProvider[
|
|
680
|
+
const entry = configByProvider[builtInProvider];
|
|
574
681
|
if (!entry) {
|
|
575
682
|
return null;
|
|
576
683
|
}
|
|
@@ -588,22 +695,24 @@ function getProviderConfig(config, provider) {
|
|
|
588
695
|
return null;
|
|
589
696
|
}
|
|
590
697
|
}
|
|
591
|
-
} else if (
|
|
698
|
+
} else if (builtInProvider === "openrouter" || builtInProvider === "llmgateway" || builtInProvider === "zai" || builtInProvider === "sakana" || builtInProvider === "nvidia" || builtInProvider === "deepseek") {
|
|
592
699
|
const { apiKey, model } = entry;
|
|
593
700
|
if (!apiKey || apiKey === "replace-me" || !model) {
|
|
594
701
|
return null;
|
|
595
702
|
}
|
|
596
|
-
} else if (
|
|
703
|
+
} else if (builtInProvider === "vertexai") {
|
|
597
704
|
const { authToken, projectId, model } = entry;
|
|
598
705
|
if (!authToken || !projectId || !model) {
|
|
599
706
|
return null;
|
|
600
707
|
}
|
|
708
|
+
} else if (builtInProvider === "bedrock") {
|
|
709
|
+
return normalizeBedrockProviderConfig(entry);
|
|
601
710
|
} else {
|
|
602
|
-
if (
|
|
711
|
+
if (builtInProvider === "llamacpp") {
|
|
603
712
|
return {
|
|
604
713
|
...entry,
|
|
605
714
|
model: entry.model ?? "local",
|
|
606
|
-
baseUrl: entry.baseUrl ?? defaultBaseUrlFor(
|
|
715
|
+
baseUrl: entry.baseUrl ?? defaultBaseUrlFor(builtInProvider, entry.port)
|
|
607
716
|
};
|
|
608
717
|
}
|
|
609
718
|
if (!entry.model) {
|
|
@@ -612,13 +721,14 @@ function getProviderConfig(config, provider) {
|
|
|
612
721
|
}
|
|
613
722
|
return {
|
|
614
723
|
...entry,
|
|
615
|
-
baseUrl: entry.baseUrl ?? defaultBaseUrlFor(
|
|
724
|
+
baseUrl: entry.baseUrl ?? defaultBaseUrlFor(builtInProvider, entry.port)
|
|
616
725
|
};
|
|
617
726
|
}
|
|
618
727
|
function defaultBaseUrlFor(provider, port) {
|
|
619
728
|
if (provider === "openrouter") return DEFAULT_BASE_URL;
|
|
620
729
|
if (provider === "llmgateway") return DEFAULT_LLMGATEWAY_URL;
|
|
621
730
|
if (provider === "zai") return DEFAULT_ZAI_URL;
|
|
731
|
+
if (provider === "sakana") return DEFAULT_SAKANA_URL;
|
|
622
732
|
if (provider === "deepseek") return DEFAULT_DEEPSEEK_URL;
|
|
623
733
|
const p = port ? port.toString() : void 0;
|
|
624
734
|
switch (provider) {
|
|
@@ -632,10 +742,33 @@ function defaultBaseUrlFor(provider, port) {
|
|
|
632
742
|
return p ? `http://localhost:${p}` : DEFAULT_MLX_URL;
|
|
633
743
|
case "nvidia":
|
|
634
744
|
return "https://integrate.api.nvidia.com/v1";
|
|
745
|
+
case "bedrock":
|
|
746
|
+
return `https://bedrock-runtime.${DEFAULT_BEDROCK_REGION}.amazonaws.com`;
|
|
635
747
|
default:
|
|
636
748
|
return void 0;
|
|
637
749
|
}
|
|
638
750
|
}
|
|
751
|
+
function normalizeBedrockProviderConfig(entry) {
|
|
752
|
+
const model = entry.model?.trim();
|
|
753
|
+
const region = entry.region?.trim() || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || DEFAULT_BEDROCK_REGION;
|
|
754
|
+
const apiMode = entry.apiMode ?? "converse";
|
|
755
|
+
const authMode = entry.authMode ?? (apiMode === "converse" ? "aws-credentials" : "bedrock-api-key");
|
|
756
|
+
const endpoint = entry.endpoint?.replace(/\/+$/, "") ?? (apiMode === "converse" ? `https://bedrock-runtime.${region}.amazonaws.com` : `https://bedrock-runtime.${region}.amazonaws.com/openai/v1`);
|
|
757
|
+
if (!model || !region) {
|
|
758
|
+
return null;
|
|
759
|
+
}
|
|
760
|
+
if (authMode === "bedrock-api-key" && (!entry.apiKey || entry.apiKey === "replace-me")) {
|
|
761
|
+
return null;
|
|
762
|
+
}
|
|
763
|
+
return {
|
|
764
|
+
...entry,
|
|
765
|
+
model,
|
|
766
|
+
region,
|
|
767
|
+
apiMode,
|
|
768
|
+
authMode,
|
|
769
|
+
endpoint
|
|
770
|
+
};
|
|
771
|
+
}
|
|
639
772
|
async function saveConfig(config) {
|
|
640
773
|
const { configPath, ...data } = config;
|
|
641
774
|
delete data.isNewConfig;
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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/onboarding/agentsGenerator.ts
|
|
2
|
+
var AgentsGenerator = class {
|
|
3
|
+
/**
|
|
4
|
+
* Generate AGENTS.md content
|
|
5
|
+
*/
|
|
6
|
+
generateContent(info, options) {
|
|
7
|
+
const sections = [];
|
|
8
|
+
sections.push("# AGENTS.md");
|
|
9
|
+
sections.push("");
|
|
10
|
+
sections.push("This file helps Autohand understand how to work with this project.");
|
|
11
|
+
sections.push("");
|
|
12
|
+
sections.push(this.generateProjectOverview(info));
|
|
13
|
+
if (info.packageManager) {
|
|
14
|
+
sections.push(this.generateCommandsSection(info));
|
|
15
|
+
}
|
|
16
|
+
if (info.testFramework) {
|
|
17
|
+
sections.push(this.generateTestingSection(info));
|
|
18
|
+
}
|
|
19
|
+
if (info.framework) {
|
|
20
|
+
const frameworkSection = this.generateFrameworkSection(info);
|
|
21
|
+
if (frameworkSection) {
|
|
22
|
+
sections.push(frameworkSection);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
sections.push(this.generateInstructionSourcesSection());
|
|
26
|
+
sections.push(this.generateCodeStyleSection(info));
|
|
27
|
+
sections.push(this.generateConstraintsSection());
|
|
28
|
+
if (_optionalChain([options, 'optionalAccess', _ => _.customSections])) {
|
|
29
|
+
for (const section of options.customSections) {
|
|
30
|
+
sections.push(`## ${section.title}`);
|
|
31
|
+
sections.push("");
|
|
32
|
+
sections.push(section.content);
|
|
33
|
+
sections.push("");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return sections.join("\n");
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate project overview section
|
|
40
|
+
*/
|
|
41
|
+
generateProjectOverview(info) {
|
|
42
|
+
const lines = [];
|
|
43
|
+
lines.push("## Project Overview");
|
|
44
|
+
lines.push("");
|
|
45
|
+
if (info.language) {
|
|
46
|
+
lines.push(`- **Language**: ${info.language}`);
|
|
47
|
+
}
|
|
48
|
+
if (info.framework) {
|
|
49
|
+
lines.push(`- **Framework**: ${info.framework}`);
|
|
50
|
+
}
|
|
51
|
+
if (info.packageManager) {
|
|
52
|
+
lines.push(`- **Package Manager**: ${info.packageManager}`);
|
|
53
|
+
}
|
|
54
|
+
if (info.testFramework) {
|
|
55
|
+
lines.push(`- **Test Framework**: ${info.testFramework}`);
|
|
56
|
+
}
|
|
57
|
+
if (info.buildTool) {
|
|
58
|
+
lines.push(`- **Build Tool**: ${info.buildTool}`);
|
|
59
|
+
}
|
|
60
|
+
lines.push("");
|
|
61
|
+
return lines.join("\n");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate commands section based on package manager
|
|
65
|
+
*/
|
|
66
|
+
generateCommandsSection(info) {
|
|
67
|
+
const lines = [];
|
|
68
|
+
lines.push("## Commands");
|
|
69
|
+
lines.push("");
|
|
70
|
+
const pm = info.packageManager;
|
|
71
|
+
if (info.language === "Rust") {
|
|
72
|
+
lines.push("- **Build**: `cargo build`");
|
|
73
|
+
lines.push("- **Build (release)**: `cargo build --release`");
|
|
74
|
+
lines.push("- **Run**: `cargo run`");
|
|
75
|
+
lines.push("- **Test**: `cargo test`");
|
|
76
|
+
lines.push("- **Check**: `cargo check`");
|
|
77
|
+
lines.push("- **Format**: `cargo fmt`");
|
|
78
|
+
lines.push("- **Lint**: `cargo clippy`");
|
|
79
|
+
} else if (info.language === "Go") {
|
|
80
|
+
lines.push("- **Build**: `go build`");
|
|
81
|
+
lines.push("- **Run**: `go run .`");
|
|
82
|
+
lines.push("- **Test**: `go test ./...`");
|
|
83
|
+
lines.push("- **Format**: `go fmt ./...`");
|
|
84
|
+
lines.push("- **Vet**: `go vet ./...`");
|
|
85
|
+
} else if (info.language === "Python") {
|
|
86
|
+
if (pm === "poetry") {
|
|
87
|
+
lines.push("- **Install**: `poetry install`");
|
|
88
|
+
lines.push("- **Run**: `poetry run python main.py`");
|
|
89
|
+
lines.push("- **Add dependency**: `poetry add <package>`");
|
|
90
|
+
if (info.testFramework) {
|
|
91
|
+
lines.push(`- **Test**: \`poetry run pytest\``);
|
|
92
|
+
}
|
|
93
|
+
} else if (pm === "pipenv") {
|
|
94
|
+
lines.push("- **Install**: `pipenv install`");
|
|
95
|
+
lines.push("- **Run**: `pipenv run python main.py`");
|
|
96
|
+
if (info.testFramework) {
|
|
97
|
+
lines.push(`- **Test**: \`pipenv run pytest\``);
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
lines.push("- **Install**: `pip install -r requirements.txt`");
|
|
101
|
+
lines.push("- **Run**: `python main.py`");
|
|
102
|
+
if (info.testFramework) {
|
|
103
|
+
lines.push(`- **Test**: \`pytest\``);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
const run = pm === "npm" ? "npm run" : pm;
|
|
108
|
+
const install = pm === "npm" ? "npm install" : `${pm} install`;
|
|
109
|
+
lines.push(`- **Install**: \`${install}\``);
|
|
110
|
+
lines.push(`- **Dev**: \`${run} dev\``);
|
|
111
|
+
lines.push(`- **Build**: \`${run} build\``);
|
|
112
|
+
if (info.testFramework) {
|
|
113
|
+
lines.push(`- **Test**: \`${run} test\``);
|
|
114
|
+
}
|
|
115
|
+
if (info.linter) {
|
|
116
|
+
lines.push(`- **Lint**: \`${run} lint\``);
|
|
117
|
+
}
|
|
118
|
+
if (info.formatter) {
|
|
119
|
+
lines.push(`- **Format**: \`${run} format\``);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
lines.push("");
|
|
123
|
+
return lines.join("\n");
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate testing section
|
|
127
|
+
*/
|
|
128
|
+
generateTestingSection(info) {
|
|
129
|
+
const lines = [];
|
|
130
|
+
lines.push("## Testing");
|
|
131
|
+
lines.push("");
|
|
132
|
+
lines.push(`This project uses **${info.testFramework}** for testing.`);
|
|
133
|
+
lines.push("");
|
|
134
|
+
lines.push("- Write tests for new features before implementation");
|
|
135
|
+
lines.push("- Run tests before committing changes");
|
|
136
|
+
lines.push("- Aim for good test coverage on critical paths");
|
|
137
|
+
if (info.testFramework === "Vitest" || info.testFramework === "Jest") {
|
|
138
|
+
lines.push("- Use `describe` and `it` blocks to organize tests");
|
|
139
|
+
lines.push("- Mock external dependencies when appropriate");
|
|
140
|
+
} else if (info.testFramework === "pytest") {
|
|
141
|
+
lines.push("- Use fixtures for shared test setup");
|
|
142
|
+
lines.push("- Use `pytest.mark` for test categorization");
|
|
143
|
+
} else if (info.testFramework === "Playwright" || info.testFramework === "Cypress") {
|
|
144
|
+
lines.push("- Write E2E tests for critical user flows");
|
|
145
|
+
lines.push("- Keep selectors stable and meaningful");
|
|
146
|
+
}
|
|
147
|
+
lines.push("");
|
|
148
|
+
return lines.join("\n");
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Generate framework-specific section
|
|
152
|
+
*/
|
|
153
|
+
generateFrameworkSection(info) {
|
|
154
|
+
const lines = [];
|
|
155
|
+
switch (info.framework) {
|
|
156
|
+
case "Next.js":
|
|
157
|
+
lines.push("## Next.js Guidelines");
|
|
158
|
+
lines.push("");
|
|
159
|
+
lines.push("- Use the App Router for new pages (`app/` directory)");
|
|
160
|
+
lines.push("- Prefer Server Components by default");
|
|
161
|
+
lines.push('- Use `"use client"` only when needed for interactivity');
|
|
162
|
+
lines.push("- Keep API routes in `app/api/`");
|
|
163
|
+
lines.push("- Use `next/image` for optimized images");
|
|
164
|
+
lines.push("- Use `next/link` for client-side navigation");
|
|
165
|
+
break;
|
|
166
|
+
case "React":
|
|
167
|
+
lines.push("## React Guidelines");
|
|
168
|
+
lines.push("");
|
|
169
|
+
lines.push("- Use functional components with hooks");
|
|
170
|
+
lines.push("- Keep components small and focused");
|
|
171
|
+
lines.push("- Use custom hooks to share logic");
|
|
172
|
+
lines.push("- Prefer composition over inheritance");
|
|
173
|
+
lines.push("- Use TypeScript interfaces for props");
|
|
174
|
+
break;
|
|
175
|
+
case "Vue":
|
|
176
|
+
lines.push("## Vue Guidelines");
|
|
177
|
+
lines.push("");
|
|
178
|
+
lines.push("- Use Composition API for new components");
|
|
179
|
+
lines.push("- Keep components in single-file format (.vue)");
|
|
180
|
+
lines.push("- Use composables to share logic");
|
|
181
|
+
break;
|
|
182
|
+
case "Express":
|
|
183
|
+
lines.push("## Express Guidelines");
|
|
184
|
+
lines.push("");
|
|
185
|
+
lines.push("- Use middleware for cross-cutting concerns");
|
|
186
|
+
lines.push("- Keep route handlers thin, delegate to services");
|
|
187
|
+
lines.push("- Use async/await with proper error handling");
|
|
188
|
+
lines.push("- Validate request input before processing");
|
|
189
|
+
break;
|
|
190
|
+
case "FastAPI":
|
|
191
|
+
lines.push("## FastAPI Guidelines");
|
|
192
|
+
lines.push("");
|
|
193
|
+
lines.push("- Use Pydantic models for request/response validation");
|
|
194
|
+
lines.push("- Use dependency injection for shared resources");
|
|
195
|
+
lines.push("- Keep endpoints in organized routers");
|
|
196
|
+
lines.push("- Use async functions for I/O operations");
|
|
197
|
+
break;
|
|
198
|
+
case "Django":
|
|
199
|
+
lines.push("## Django Guidelines");
|
|
200
|
+
lines.push("");
|
|
201
|
+
lines.push("- Follow Django project structure conventions");
|
|
202
|
+
lines.push("- Use class-based views where appropriate");
|
|
203
|
+
lines.push("- Keep business logic in models or services");
|
|
204
|
+
lines.push("- Use Django ORM for database operations");
|
|
205
|
+
break;
|
|
206
|
+
case "Flask":
|
|
207
|
+
lines.push("## Flask Guidelines");
|
|
208
|
+
lines.push("");
|
|
209
|
+
lines.push("- Use blueprints to organize routes");
|
|
210
|
+
lines.push("- Keep route handlers focused");
|
|
211
|
+
lines.push("- Use Flask extensions for common functionality");
|
|
212
|
+
break;
|
|
213
|
+
case "NestJS":
|
|
214
|
+
lines.push("## NestJS Guidelines");
|
|
215
|
+
lines.push("");
|
|
216
|
+
lines.push("- Follow module-based architecture");
|
|
217
|
+
lines.push("- Use dependency injection");
|
|
218
|
+
lines.push("- Use decorators for metadata");
|
|
219
|
+
lines.push("- Keep controllers thin, services fat");
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
lines.push("");
|
|
225
|
+
return lines.join("\n");
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generate instruction sources section
|
|
229
|
+
*/
|
|
230
|
+
generateInstructionSourcesSection() {
|
|
231
|
+
const lines = [];
|
|
232
|
+
lines.push("## Instruction Sources");
|
|
233
|
+
lines.push("");
|
|
234
|
+
lines.push("- Check saved memories and preferences before implementation work.");
|
|
235
|
+
lines.push("- Follow this AGENTS.md file for repository-specific guidance.");
|
|
236
|
+
lines.push("- AGENTS.md takes precedence over CLAUDE.md when both files provide instructions.");
|
|
237
|
+
lines.push("");
|
|
238
|
+
return lines.join("\n");
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Generate code style section
|
|
242
|
+
*/
|
|
243
|
+
generateCodeStyleSection(info) {
|
|
244
|
+
const lines = [];
|
|
245
|
+
lines.push("## Code Style");
|
|
246
|
+
lines.push("");
|
|
247
|
+
if (info.language === "TypeScript") {
|
|
248
|
+
lines.push("- Use strict TypeScript settings");
|
|
249
|
+
lines.push("- Define types/interfaces for data structures");
|
|
250
|
+
lines.push("- Avoid `any` type - use `unknown` if type is truly unknown");
|
|
251
|
+
lines.push("- Use type inference where obvious");
|
|
252
|
+
} else if (info.language === "Python") {
|
|
253
|
+
lines.push("- Follow PEP 8 style guidelines");
|
|
254
|
+
lines.push("- Use type hints for function signatures");
|
|
255
|
+
lines.push("- Use docstrings for public functions");
|
|
256
|
+
} else if (info.language === "Rust") {
|
|
257
|
+
lines.push("- Follow Rust naming conventions (snake_case for functions)");
|
|
258
|
+
lines.push("- Use descriptive error types");
|
|
259
|
+
lines.push("- Prefer `Result` over panicking");
|
|
260
|
+
} else if (info.language === "Go") {
|
|
261
|
+
lines.push("- Follow Go idioms and conventions");
|
|
262
|
+
lines.push("- Use short variable names in small scopes");
|
|
263
|
+
lines.push("- Handle errors explicitly");
|
|
264
|
+
}
|
|
265
|
+
lines.push("- Follow existing patterns in the codebase");
|
|
266
|
+
lines.push("- Use meaningful variable and function names");
|
|
267
|
+
lines.push("- Add comments for complex logic");
|
|
268
|
+
lines.push("- Keep functions focused and small");
|
|
269
|
+
if (info.linter) {
|
|
270
|
+
lines.push(`- Run **${info.linter}** before committing`);
|
|
271
|
+
}
|
|
272
|
+
if (info.formatter) {
|
|
273
|
+
lines.push(`- Format code with **${info.formatter}**`);
|
|
274
|
+
}
|
|
275
|
+
lines.push("");
|
|
276
|
+
return lines.join("\n");
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Generate constraints section
|
|
280
|
+
*/
|
|
281
|
+
generateConstraintsSection() {
|
|
282
|
+
const lines = [];
|
|
283
|
+
lines.push("## Constraints");
|
|
284
|
+
lines.push("");
|
|
285
|
+
lines.push("- Do not modify files outside the project directory");
|
|
286
|
+
lines.push("- Ask before making breaking changes");
|
|
287
|
+
lines.push("- Prefer editing existing files over creating new ones");
|
|
288
|
+
lines.push("- Do not delete files without confirmation");
|
|
289
|
+
lines.push("- Keep dependencies minimal - avoid adding new ones without good reason");
|
|
290
|
+
lines.push("- Do not commit sensitive data (API keys, secrets, credentials)");
|
|
291
|
+
lines.push("");
|
|
292
|
+
return lines.join("\n");
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
exports.AgentsGenerator = AgentsGenerator;
|
|
299
|
+
/**
|
|
300
|
+
* @license
|
|
301
|
+
* Copyright 2025 Autohand AI LLC
|
|
302
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
303
|
+
*/
|