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,529 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/commands/squad.ts
|
|
2
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
|
+
var _crypto = require('crypto');
|
|
4
|
+
var _child_process = require('child_process');
|
|
5
|
+
var _fs = require('fs');
|
|
6
|
+
var _promises = require('fs/promises');
|
|
7
|
+
var _os = require('os');
|
|
8
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
9
|
+
var DEFAULT_API_BASE_URL = "https://api.autohand.ai";
|
|
10
|
+
var DEFAULT_CHANNEL = "stable";
|
|
11
|
+
var SQUAD_FEATURE_FLAG = "squad_daemon";
|
|
12
|
+
var REQUIRED_BINARIES = ["squad", "autohand-squad-daemon", "autohand-squad-analytics", "autohand-squad-tray", "autohand-squad-ui"];
|
|
13
|
+
var START_ACTIONS = /* @__PURE__ */ new Set(["start", "open", "restart"]);
|
|
14
|
+
var metadata = {
|
|
15
|
+
command: "/squad",
|
|
16
|
+
description: "open and manage the local Autohand Squad runtime",
|
|
17
|
+
implemented: true
|
|
18
|
+
};
|
|
19
|
+
async function squad(ctx, args = [], deps = {}) {
|
|
20
|
+
const result = await runSquadCommand(ctx, args, deps);
|
|
21
|
+
return result.output;
|
|
22
|
+
}
|
|
23
|
+
async function runSquadCommand(ctx, args = [], deps = {}) {
|
|
24
|
+
const parsed = parseSquadCommand(args);
|
|
25
|
+
const env = _nullishCoalesce(deps.env, () => ( process.env));
|
|
26
|
+
const paths = squadPaths(env, deps.homeDir);
|
|
27
|
+
let runtimeEntitlement;
|
|
28
|
+
if (START_ACTIONS.has(parsed.action)) {
|
|
29
|
+
const entitlement = await evaluateSquadEntitlement(ctx.config, deps);
|
|
30
|
+
if (!entitlement.ok) {
|
|
31
|
+
return {
|
|
32
|
+
code: 1,
|
|
33
|
+
output: _nullishCoalesce(entitlement.message, () => ( _chalk2.default.red("Autohand Squad is not available for this account.")))
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
runtimeEntitlement = entitlement;
|
|
37
|
+
const install = await ensureSquadRuntime(paths, entitlement, deps);
|
|
38
|
+
if (install.code !== 0) {
|
|
39
|
+
return install;
|
|
40
|
+
}
|
|
41
|
+
await writeRuntimeConfig(paths, ctx.config, entitlement, env);
|
|
42
|
+
} else if (!hasLocalRuntime(paths)) {
|
|
43
|
+
return {
|
|
44
|
+
code: 1,
|
|
45
|
+
output: [
|
|
46
|
+
_chalk2.default.yellow("Autohand Squad runtime is not installed."),
|
|
47
|
+
_chalk2.default.gray("Run `autohand squad` to install and start it after entitlement is verified.")
|
|
48
|
+
].join("\n")
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const binary = resolveSquadBinary(paths, env);
|
|
52
|
+
if (!binary) {
|
|
53
|
+
return {
|
|
54
|
+
code: 1,
|
|
55
|
+
output: _chalk2.default.red(`Squad launcher was not found under ${paths.binDir}.`)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const runtimeArgs = buildRuntimeArgs(parsed, ctx.workspaceRoot, ctx.config, env, runtimeEntitlement);
|
|
59
|
+
const runtimeEnv = buildRuntimeEnv(ctx.config, env, runtimeEntitlement);
|
|
60
|
+
return runRuntime(binary, runtimeArgs, deps, runtimeEnv);
|
|
61
|
+
}
|
|
62
|
+
function parseSquadCommand(args) {
|
|
63
|
+
const first = _optionalChain([args, 'access', _ => _[0], 'optionalAccess', _2 => _2.toLowerCase, 'call', _3 => _3()]);
|
|
64
|
+
if (isSquadAction(first)) {
|
|
65
|
+
return { action: first, passthroughArgs: args.slice(1) };
|
|
66
|
+
}
|
|
67
|
+
const openBrowser = !args.includes("--no-open");
|
|
68
|
+
return {
|
|
69
|
+
action: openBrowser ? "open" : "start",
|
|
70
|
+
passthroughArgs: args
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function isSquadAction(value) {
|
|
74
|
+
return value === "start" || value === "status" || value === "restart" || value === "stop" || value === "queue" || value === "open" || value === "config";
|
|
75
|
+
}
|
|
76
|
+
function buildRuntimeArgs(parsed, workspaceRoot, config, env, entitlement) {
|
|
77
|
+
const passthroughArgs = parsed.passthroughArgs.filter((arg) => arg !== "--no-open");
|
|
78
|
+
const args = [parsed.action, ...passthroughArgs];
|
|
79
|
+
if ((parsed.action === "open" || parsed.action === "start") && !hasOption(passthroughArgs, "--open-url")) {
|
|
80
|
+
args.push("--open-url", buildOpenUrl(workspaceRoot, passthroughArgs));
|
|
81
|
+
}
|
|
82
|
+
pushOption(args, passthroughArgs, "--api-base-url", apiBaseUrlFromConfig(config, env));
|
|
83
|
+
pushOption(args, passthroughArgs, "--update-channel", _optionalChain([entitlement, 'optionalAccess', _4 => _4.updateChannel]) || env.AUTOHAND_SQUAD_UPDATE_CHANNEL || DEFAULT_CHANNEL);
|
|
84
|
+
pushOptionalOption(args, passthroughArgs, "--account-email", _optionalChain([entitlement, 'optionalAccess', _5 => _5.accountEmail]) || _optionalChain([config, 'optionalAccess', _6 => _6.auth, 'optionalAccess', _7 => _7.user, 'optionalAccess', _8 => _8.email]) || env.AUTOHAND_SQUAD_ACCOUNT_EMAIL);
|
|
85
|
+
pushOptionalOption(args, passthroughArgs, "--plan-state", _optionalChain([entitlement, 'optionalAccess', _9 => _9.planState]) || env.AUTOHAND_SQUAD_PLAN_STATE);
|
|
86
|
+
pushOption(args, passthroughArgs, "--telemetry-policy", _optionalChain([entitlement, 'optionalAccess', _10 => _10.telemetryPolicy]) || telemetryPolicyFromConfig(config, env));
|
|
87
|
+
return args;
|
|
88
|
+
}
|
|
89
|
+
function buildOpenUrl(workspaceRoot, args) {
|
|
90
|
+
const { host, port } = readHostPortArgs(args);
|
|
91
|
+
const url = new URL(`http://${host}:${port}/conversations/new`);
|
|
92
|
+
url.searchParams.set("workspace", workspaceRoot);
|
|
93
|
+
return url.toString();
|
|
94
|
+
}
|
|
95
|
+
function readHostPortArgs(args) {
|
|
96
|
+
let host = "127.0.0.1";
|
|
97
|
+
let port = "19821";
|
|
98
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
99
|
+
const arg = args[index];
|
|
100
|
+
if (arg === "--host" && args[index + 1]) {
|
|
101
|
+
host = args[index + 1];
|
|
102
|
+
index += 1;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (arg.startsWith("--host=")) {
|
|
106
|
+
host = arg.slice("--host=".length);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (arg === "--port" && args[index + 1]) {
|
|
110
|
+
port = args[index + 1];
|
|
111
|
+
index += 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (arg.startsWith("--port=")) {
|
|
115
|
+
port = arg.slice("--port=".length);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { host, port };
|
|
119
|
+
}
|
|
120
|
+
function hasOption(args, name) {
|
|
121
|
+
return args.some((arg) => arg === name || arg.startsWith(`${name}=`));
|
|
122
|
+
}
|
|
123
|
+
function pushOption(args, passthroughArgs, name, value) {
|
|
124
|
+
if (!hasOption(passthroughArgs, name)) {
|
|
125
|
+
args.push(name, value);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function pushOptionalOption(args, passthroughArgs, name, value) {
|
|
129
|
+
if (value && !hasOption(passthroughArgs, name)) {
|
|
130
|
+
args.push(name, value);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function evaluateSquadEntitlement(config, deps) {
|
|
134
|
+
const token = _optionalChain([config, 'optionalAccess', _11 => _11.auth, 'optionalAccess', _12 => _12.token]);
|
|
135
|
+
if (!token) {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
updateChannel: DEFAULT_CHANNEL,
|
|
139
|
+
message: [
|
|
140
|
+
_chalk2.default.yellow("Sign in to Autohand before starting Squad."),
|
|
141
|
+
_chalk2.default.gray("Run `autohand login`, then try `autohand squad` again.")
|
|
142
|
+
].join("\n")
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const env = _nullishCoalesce(deps.env, () => ( process.env));
|
|
146
|
+
const apiBaseUrl = apiBaseUrlFromConfig(config, env);
|
|
147
|
+
const updateChannel = env.AUTOHAND_SQUAD_UPDATE_CHANNEL || DEFAULT_CHANNEL;
|
|
148
|
+
const fetchImpl = _nullishCoalesce(deps.fetchImpl, () => ( fetch));
|
|
149
|
+
try {
|
|
150
|
+
const response = await fetchImpl(`${apiBaseUrl}/v1/squad/entitlement`, {
|
|
151
|
+
headers: {
|
|
152
|
+
Authorization: `Bearer ${token}`,
|
|
153
|
+
Accept: "application/json"
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
const payload = await response.json();
|
|
157
|
+
if (!response.ok || payload.success === false) {
|
|
158
|
+
return {
|
|
159
|
+
ok: false,
|
|
160
|
+
updateChannel,
|
|
161
|
+
message: entitlementMessage(payload, "Unable to verify Squad entitlement.")
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const hasPlan = Boolean(
|
|
165
|
+
_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(payload.activePlan, () => ( payload.planActive)), () => ( payload.hasSquadPlan)), () => ( payload.plan === "squad"))
|
|
166
|
+
);
|
|
167
|
+
if (!hasPlan) {
|
|
168
|
+
return {
|
|
169
|
+
ok: false,
|
|
170
|
+
updateChannel,
|
|
171
|
+
message: [
|
|
172
|
+
_chalk2.default.yellow("Autohand Squad is not active on this account."),
|
|
173
|
+
_chalk2.default.gray("Upgrade to an active Squad plan before installing the local daemon.")
|
|
174
|
+
].join("\n")
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const flagEnabled = Boolean(
|
|
178
|
+
_nullishCoalesce(_nullishCoalesce(payload.featureEnabled, () => ( payload.squadDaemonEnabled)), () => ( readNestedFlag(payload, SQUAD_FEATURE_FLAG)))
|
|
179
|
+
);
|
|
180
|
+
if (!flagEnabled) {
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
updateChannel,
|
|
184
|
+
message: [
|
|
185
|
+
_chalk2.default.yellow("Autohand Squad daemon is not enabled for this account yet."),
|
|
186
|
+
_chalk2.default.gray(`Feature flag required: ${SQUAD_FEATURE_FLAG}`)
|
|
187
|
+
].join("\n")
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
ok: true,
|
|
192
|
+
updateChannel: stringField(payload.updateChannel) || updateChannel,
|
|
193
|
+
latestAllowedVersion: stringField(payload.latestAllowedVersion) || stringField(payload.latest_allowed_version),
|
|
194
|
+
manifestUrl: stringField(payload.releaseManifestUrl) || stringField(payload.manifestUrl),
|
|
195
|
+
accountEmail: stringField(payload.accountEmail) || stringField(payload.email) || _optionalChain([config, 'access', _13 => _13.auth, 'optionalAccess', _14 => _14.user, 'optionalAccess', _15 => _15.email]),
|
|
196
|
+
planState: stringField(payload.planState) || stringField(payload.plan) || stringField(payload.plan_state),
|
|
197
|
+
telemetryPolicy: stringField(payload.telemetryPolicy) || stringField(payload.telemetry_policy)
|
|
198
|
+
};
|
|
199
|
+
} catch (error) {
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
updateChannel,
|
|
203
|
+
message: [
|
|
204
|
+
_chalk2.default.red("Unable to verify Squad entitlement."),
|
|
205
|
+
_chalk2.default.gray(error.message)
|
|
206
|
+
].join("\n")
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async function ensureSquadRuntime(paths, entitlement, deps) {
|
|
211
|
+
if (hasLocalRuntime(paths) && await isLatestAllowed(paths, entitlement.latestAllowedVersion)) {
|
|
212
|
+
return { code: 0, output: "" };
|
|
213
|
+
}
|
|
214
|
+
const manifest = await fetchReleaseManifest(entitlement, deps);
|
|
215
|
+
if (!manifest.ok) return manifest;
|
|
216
|
+
const version = manifestVersion(manifest.value, entitlement);
|
|
217
|
+
const artifacts = selectRequiredArtifacts(manifest.value);
|
|
218
|
+
if (!artifacts.ok) return artifacts;
|
|
219
|
+
const installed = [];
|
|
220
|
+
await _promises.mkdir.call(void 0, paths.binDir, { recursive: true });
|
|
221
|
+
for (const artifact of artifacts.value) {
|
|
222
|
+
const binaryName = artifactBinaryName(artifact);
|
|
223
|
+
const artifactResult = await downloadArtifact(artifact, deps);
|
|
224
|
+
if (!artifactResult.ok) return artifactResult;
|
|
225
|
+
const targetPath = _path2.default.join(paths.binDir, binaryFileName(binaryName));
|
|
226
|
+
await _promises.writeFile.call(void 0, targetPath, artifactResult.bytes);
|
|
227
|
+
await _promises.chmod.call(void 0, targetPath, 493);
|
|
228
|
+
installed.push({
|
|
229
|
+
binaryName,
|
|
230
|
+
url: _nullishCoalesce(artifact.url, () => ( "")),
|
|
231
|
+
sha256: _nullishCoalesce(artifact.sha256, () => ( ""))
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
await writeInstallRecord(paths.installJson, {
|
|
235
|
+
version,
|
|
236
|
+
channel: manifest.value.channel || entitlement.updateChannel,
|
|
237
|
+
installedAt: (_nullishCoalesce(_optionalChain([deps, 'access', _16 => _16.now, 'optionalCall', _17 => _17()]), () => ( /* @__PURE__ */ new Date()))).toISOString(),
|
|
238
|
+
artifacts: installed
|
|
239
|
+
});
|
|
240
|
+
return { code: 0, output: "" };
|
|
241
|
+
}
|
|
242
|
+
async function writeRuntimeConfig(paths, config, entitlement, env) {
|
|
243
|
+
const runtimeConfig = {
|
|
244
|
+
apiBaseUrl: apiBaseUrlFromConfig(config, env),
|
|
245
|
+
updateChannel: entitlement.updateChannel,
|
|
246
|
+
accountEmail: entitlement.accountEmail || _optionalChain([config, 'optionalAccess', _18 => _18.auth, 'optionalAccess', _19 => _19.user, 'optionalAccess', _20 => _20.email]) || env.AUTOHAND_SQUAD_ACCOUNT_EMAIL,
|
|
247
|
+
planState: entitlement.planState || env.AUTOHAND_SQUAD_PLAN_STATE,
|
|
248
|
+
telemetryPolicy: entitlement.telemetryPolicy || telemetryPolicyFromConfig(config, env),
|
|
249
|
+
openUrl: env.AUTOHAND_SQUAD_OPEN_URL,
|
|
250
|
+
hostedUiUrl: env.AUTOHAND_SQUAD_HOSTED_UI_URL,
|
|
251
|
+
proxyUrl: env.AUTOHAND_SQUAD_PROXY_URL,
|
|
252
|
+
apiGatewayUrl: env.AUTOHAND_SQUAD_API_GATEWAY_URL,
|
|
253
|
+
fixedPort: numberFromEnv(env.AUTOHAND_SQUAD_FIXED_PORT)
|
|
254
|
+
};
|
|
255
|
+
await _promises.mkdir.call(void 0, _path2.default.dirname(paths.configJson), { recursive: true });
|
|
256
|
+
await _promises.writeFile.call(void 0, paths.configJson, `${JSON.stringify(stripUndefined(runtimeConfig), null, 2)}
|
|
257
|
+
`, { mode: 384 });
|
|
258
|
+
}
|
|
259
|
+
async function fetchReleaseManifest(entitlement, deps) {
|
|
260
|
+
const env = _nullishCoalesce(deps.env, () => ( process.env));
|
|
261
|
+
const apiBaseUrl = env.AUTOHAND_SQUAD_API_BASE_URL || env.AUTOHAND_API_URL || DEFAULT_API_BASE_URL;
|
|
262
|
+
const manifestUrl = entitlement.manifestUrl || `${apiBaseUrl.replace(/\/+$/, "")}/v1/squad/releases/${entitlement.updateChannel}/manifest`;
|
|
263
|
+
try {
|
|
264
|
+
const response = await (_nullishCoalesce(deps.fetchImpl, () => ( fetch)))(manifestUrl, {
|
|
265
|
+
headers: { Accept: "application/json" }
|
|
266
|
+
});
|
|
267
|
+
const payload = await response.json();
|
|
268
|
+
if (!response.ok) {
|
|
269
|
+
return {
|
|
270
|
+
ok: false,
|
|
271
|
+
code: 1,
|
|
272
|
+
output: _chalk2.default.red(`Failed to fetch Squad release manifest: HTTP ${response.status}`)
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
return { ok: true, value: payload };
|
|
276
|
+
} catch (error) {
|
|
277
|
+
return {
|
|
278
|
+
ok: false,
|
|
279
|
+
code: 1,
|
|
280
|
+
output: [
|
|
281
|
+
_chalk2.default.red("Failed to fetch Squad release manifest."),
|
|
282
|
+
_chalk2.default.gray(error.message)
|
|
283
|
+
].join("\n")
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
function selectRequiredArtifacts(manifest) {
|
|
288
|
+
const artifacts = _nullishCoalesce(manifest.artifacts, () => ( []));
|
|
289
|
+
const selected = REQUIRED_BINARIES.map((binaryName) => {
|
|
290
|
+
return artifacts.find((artifact) => {
|
|
291
|
+
return targetOsMatches(artifact.os) && targetArchMatches(artifact.arch) && artifactBinaryName(artifact) === binaryName;
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
if (selected.some((artifact) => !artifact)) {
|
|
295
|
+
return {
|
|
296
|
+
ok: false,
|
|
297
|
+
code: 1,
|
|
298
|
+
output: [
|
|
299
|
+
_chalk2.default.red("Squad release manifest does not contain binaries for this OS/arch."),
|
|
300
|
+
_chalk2.default.gray(`Need: ${REQUIRED_BINARIES.join(", ")} for ${targetOs()}/${targetArch()}`)
|
|
301
|
+
].join("\n")
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
return { ok: true, value: selected };
|
|
305
|
+
}
|
|
306
|
+
async function downloadArtifact(artifact, deps) {
|
|
307
|
+
if (!artifact.url || !artifact.sha256) {
|
|
308
|
+
return { ok: false, code: 1, output: _chalk2.default.red("Invalid Squad artifact manifest entry.") };
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const response = await (_nullishCoalesce(deps.fetchImpl, () => ( fetch)))(artifact.url);
|
|
312
|
+
if (!response.ok) {
|
|
313
|
+
return { ok: false, code: 1, output: _chalk2.default.red(`Failed to download Squad artifact: HTTP ${response.status}`) };
|
|
314
|
+
}
|
|
315
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
316
|
+
const actual = _crypto.createHash.call(void 0, "sha256").update(bytes).digest("hex");
|
|
317
|
+
if (actual.toLowerCase() !== artifact.sha256.toLowerCase()) {
|
|
318
|
+
return {
|
|
319
|
+
ok: false,
|
|
320
|
+
code: 1,
|
|
321
|
+
output: _chalk2.default.red(`Checksum mismatch for ${artifactBinaryName(artifact)}.`)
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
const signatureError = verifyArtifactSignature(artifact);
|
|
325
|
+
if (signatureError) {
|
|
326
|
+
return { ok: false, code: 1, output: _chalk2.default.red(signatureError) };
|
|
327
|
+
}
|
|
328
|
+
return { ok: true, bytes };
|
|
329
|
+
} catch (error) {
|
|
330
|
+
return {
|
|
331
|
+
ok: false,
|
|
332
|
+
code: 1,
|
|
333
|
+
output: [
|
|
334
|
+
_chalk2.default.red(`Failed to download ${artifactBinaryName(artifact)}.`),
|
|
335
|
+
_chalk2.default.gray(error.message)
|
|
336
|
+
].join("\n")
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
function verifyArtifactSignature(artifact) {
|
|
341
|
+
const signature = artifact.signature;
|
|
342
|
+
if (!signature) return null;
|
|
343
|
+
const publicKey = _nullishCoalesce(artifact.publicKey, () => ( artifact.public_key));
|
|
344
|
+
if (!publicKey) {
|
|
345
|
+
return `Artifact ${artifactBinaryName(artifact)} is signed but no public key was provided.`;
|
|
346
|
+
}
|
|
347
|
+
try {
|
|
348
|
+
const rawPublicKey = Buffer.from(publicKey, "base64");
|
|
349
|
+
const spkiPrefix = Buffer.from("302a300506032b6570032100", "hex");
|
|
350
|
+
const key = _crypto.createPublicKey.call(void 0, {
|
|
351
|
+
key: Buffer.concat([spkiPrefix, rawPublicKey]),
|
|
352
|
+
format: "der",
|
|
353
|
+
type: "spki"
|
|
354
|
+
});
|
|
355
|
+
const ok = _crypto.verify.call(void 0,
|
|
356
|
+
null,
|
|
357
|
+
Buffer.from(_nullishCoalesce(artifact.sha256, () => ( ""))),
|
|
358
|
+
key,
|
|
359
|
+
Buffer.from(signature, "base64")
|
|
360
|
+
);
|
|
361
|
+
return ok ? null : `Signature verification failed for ${artifactBinaryName(artifact)}.`;
|
|
362
|
+
} catch (error) {
|
|
363
|
+
return `Signature verification failed for ${artifactBinaryName(artifact)}: ${error.message}`;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
function runRuntime(binary, args, deps, runtimeEnv) {
|
|
367
|
+
const spawnProcess = _nullishCoalesce(deps.spawnProcess, () => ( _child_process.spawn));
|
|
368
|
+
return new Promise((resolve) => {
|
|
369
|
+
const child = spawnProcess(binary, args, {
|
|
370
|
+
env: { ...process.env, ..._nullishCoalesce(deps.env, () => ( {})), ...runtimeEnv },
|
|
371
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
372
|
+
});
|
|
373
|
+
let stdout = "";
|
|
374
|
+
let stderr = "";
|
|
375
|
+
_optionalChain([child, 'access', _21 => _21.stdout, 'optionalAccess', _22 => _22.on, 'call', _23 => _23("data", (chunk) => {
|
|
376
|
+
stdout += String(chunk);
|
|
377
|
+
})]);
|
|
378
|
+
_optionalChain([child, 'access', _24 => _24.stderr, 'optionalAccess', _25 => _25.on, 'call', _26 => _26("data", (chunk) => {
|
|
379
|
+
stderr += String(chunk);
|
|
380
|
+
})]);
|
|
381
|
+
child.on("error", (error) => {
|
|
382
|
+
resolve({ code: 1, output: _chalk2.default.red(error.message) });
|
|
383
|
+
});
|
|
384
|
+
child.on("close", (code) => {
|
|
385
|
+
resolve({
|
|
386
|
+
code: _nullishCoalesce(code, () => ( 0)),
|
|
387
|
+
output: [stdout.trimEnd(), stderr.trimEnd()].filter(Boolean).join("\n")
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
function hasLocalRuntime(paths) {
|
|
393
|
+
return REQUIRED_BINARIES.every((binaryName) => _fs.existsSync.call(void 0, _path2.default.join(paths.binDir, binaryFileName(binaryName))));
|
|
394
|
+
}
|
|
395
|
+
async function isLatestAllowed(paths, latestAllowedVersion) {
|
|
396
|
+
if (!latestAllowedVersion) return true;
|
|
397
|
+
try {
|
|
398
|
+
const record = JSON.parse(await _promises.readFile.call(void 0, paths.installJson, "utf8"));
|
|
399
|
+
return record.version === latestAllowedVersion;
|
|
400
|
+
} catch (e) {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
function resolveSquadBinary(paths, env) {
|
|
405
|
+
const explicit = env.AUTOHAND_SQUAD_BIN;
|
|
406
|
+
if (explicit && _fs.existsSync.call(void 0, explicit)) return explicit;
|
|
407
|
+
const installed = _path2.default.join(paths.binDir, binaryFileName("squad"));
|
|
408
|
+
if (_fs.existsSync.call(void 0, installed)) return installed;
|
|
409
|
+
return findOnPath(binaryFileName("squad"), env.PATH);
|
|
410
|
+
}
|
|
411
|
+
function findOnPath(binaryName, pathValue) {
|
|
412
|
+
for (const entry of (_nullishCoalesce(pathValue, () => ( ""))).split(_path2.default.delimiter)) {
|
|
413
|
+
if (!entry) continue;
|
|
414
|
+
const candidate = _path2.default.join(entry, binaryName);
|
|
415
|
+
if (_fs.existsSync.call(void 0, candidate)) return candidate;
|
|
416
|
+
}
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
function squadPaths(env, homeDir = _os.homedir.call(void 0, )) {
|
|
420
|
+
const root = env.AUTOHAND_SQUAD_HOME || _path2.default.join(env.AUTOHAND_HOME || _path2.default.join(homeDir, ".autohand"), "squad");
|
|
421
|
+
return {
|
|
422
|
+
root,
|
|
423
|
+
binDir: _path2.default.join(root, "bin"),
|
|
424
|
+
configJson: _path2.default.join(root, "config.json"),
|
|
425
|
+
installJson: _path2.default.join(root, "install.json")
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
async function writeInstallRecord(filePath, record) {
|
|
429
|
+
await _promises.mkdir.call(void 0, _path2.default.dirname(filePath), { recursive: true });
|
|
430
|
+
await _promises.writeFile.call(void 0, filePath, `${JSON.stringify(record, null, 2)}
|
|
431
|
+
`);
|
|
432
|
+
}
|
|
433
|
+
function manifestVersion(manifest, entitlement) {
|
|
434
|
+
return manifest.latestAllowedVersion || manifest.latest_allowed_version || manifest.version || entitlement.latestAllowedVersion || "0.0.0";
|
|
435
|
+
}
|
|
436
|
+
function artifactBinaryName(artifact) {
|
|
437
|
+
const value = artifact.binaryName || artifact.binary_name || "autohand-squad-daemon";
|
|
438
|
+
return isRequiredBinary(value) ? value : "autohand-squad-daemon";
|
|
439
|
+
}
|
|
440
|
+
function isRequiredBinary(value) {
|
|
441
|
+
return REQUIRED_BINARIES.includes(value);
|
|
442
|
+
}
|
|
443
|
+
function binaryFileName(binaryName) {
|
|
444
|
+
return process.platform === "win32" ? `${binaryName}.exe` : binaryName;
|
|
445
|
+
}
|
|
446
|
+
function targetOs() {
|
|
447
|
+
return _os.platform.call(void 0, );
|
|
448
|
+
}
|
|
449
|
+
function targetArch() {
|
|
450
|
+
return _os.arch.call(void 0, );
|
|
451
|
+
}
|
|
452
|
+
function targetOsMatches(value) {
|
|
453
|
+
return value === targetOs();
|
|
454
|
+
}
|
|
455
|
+
function targetArchMatches(value) {
|
|
456
|
+
const arch = targetArch();
|
|
457
|
+
return value === arch || arch === "x64" && value === "x86_64" || arch === "arm64" && value === "aarch64";
|
|
458
|
+
}
|
|
459
|
+
function apiBaseUrlFromConfig(config, env) {
|
|
460
|
+
const configApi = config ? _optionalChain([config, 'access', _27 => _27.api, 'optionalAccess', _28 => _28.baseUrl]) : void 0;
|
|
461
|
+
return (env.AUTOHAND_SQUAD_API_BASE_URL || env.AUTOHAND_API_URL || configApi || _optionalChain([config, 'optionalAccess', _29 => _29.telemetry, 'optionalAccess', _30 => _30.apiBaseUrl]) || DEFAULT_API_BASE_URL).replace(/\/+$/, "");
|
|
462
|
+
}
|
|
463
|
+
function buildRuntimeEnv(config, env, entitlement) {
|
|
464
|
+
return stripUndefined({
|
|
465
|
+
AUTOHAND_SQUAD_API_BASE_URL: apiBaseUrlFromConfig(config, env),
|
|
466
|
+
AUTOHAND_SQUAD_UPDATE_CHANNEL: _optionalChain([entitlement, 'optionalAccess', _31 => _31.updateChannel]) || env.AUTOHAND_SQUAD_UPDATE_CHANNEL || DEFAULT_CHANNEL,
|
|
467
|
+
AUTOHAND_SQUAD_ACCOUNT_EMAIL: _optionalChain([entitlement, 'optionalAccess', _32 => _32.accountEmail]) || _optionalChain([config, 'optionalAccess', _33 => _33.auth, 'optionalAccess', _34 => _34.user, 'optionalAccess', _35 => _35.email]) || env.AUTOHAND_SQUAD_ACCOUNT_EMAIL,
|
|
468
|
+
AUTOHAND_SQUAD_PLAN_STATE: _optionalChain([entitlement, 'optionalAccess', _36 => _36.planState]) || env.AUTOHAND_SQUAD_PLAN_STATE,
|
|
469
|
+
AUTOHAND_SQUAD_TELEMETRY_POLICY: _optionalChain([entitlement, 'optionalAccess', _37 => _37.telemetryPolicy]) || telemetryPolicyFromConfig(config, env),
|
|
470
|
+
AUTOHAND_SQUAD_API_AUTH_TOKEN: _optionalChain([config, 'optionalAccess', _38 => _38.auth, 'optionalAccess', _39 => _39.token]) || env.AUTOHAND_SQUAD_API_AUTH_TOKEN || env.AUTOHAND_SQUAD_AUTH_TOKEN || env.AUTOHAND_TOKEN,
|
|
471
|
+
AUTOHAND_SQUAD_COMPANY_SECRET: env.AUTOHAND_SQUAD_COMPANY_SECRET || _optionalChain([config, 'optionalAccess', _40 => _40.api, 'optionalAccess', _41 => _41.companySecret]) || _optionalChain([config, 'optionalAccess', _42 => _42.telemetry, 'optionalAccess', _43 => _43.companySecret]) || env.AUTOHAND_SECRET
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
function telemetryPolicyFromConfig(config, env) {
|
|
475
|
+
if (env.AUTOHAND_SQUAD_TELEMETRY_POLICY) return env.AUTOHAND_SQUAD_TELEMETRY_POLICY;
|
|
476
|
+
return _optionalChain([config, 'optionalAccess', _44 => _44.telemetry, 'optionalAccess', _45 => _45.enabled]) === false ? "disabled" : "local-buffered";
|
|
477
|
+
}
|
|
478
|
+
function numberFromEnv(value) {
|
|
479
|
+
if (!value) return void 0;
|
|
480
|
+
const parsed = Number(value);
|
|
481
|
+
return Number.isInteger(parsed) && parsed > 0 && parsed <= 65535 ? parsed : void 0;
|
|
482
|
+
}
|
|
483
|
+
function stripUndefined(input) {
|
|
484
|
+
return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== void 0));
|
|
485
|
+
}
|
|
486
|
+
function entitlementMessage(payload, fallback) {
|
|
487
|
+
const message = stringField(payload.message) || stringField(payload.error) || fallback;
|
|
488
|
+
return [_chalk2.default.red(message), _chalk2.default.gray("Squad was not installed.")].join("\n");
|
|
489
|
+
}
|
|
490
|
+
function readNestedFlag(payload, flag) {
|
|
491
|
+
const featureFlags = payload.featureFlags;
|
|
492
|
+
if (featureFlags && typeof featureFlags === "object" && !Array.isArray(featureFlags)) {
|
|
493
|
+
return featureFlags[flag];
|
|
494
|
+
}
|
|
495
|
+
const flags = payload.flags;
|
|
496
|
+
if (flags && typeof flags === "object" && !Array.isArray(flags)) {
|
|
497
|
+
return flags[flag];
|
|
498
|
+
}
|
|
499
|
+
if (Array.isArray(flags)) {
|
|
500
|
+
return flags.some((entry) => {
|
|
501
|
+
return Boolean(entry) && typeof entry === "object" && entry.key === flag && entry.enabled === true;
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
return void 0;
|
|
505
|
+
}
|
|
506
|
+
function stringField(value) {
|
|
507
|
+
return typeof value === "string" && value.trim() ? value : void 0;
|
|
508
|
+
}
|
|
509
|
+
async function pathIsExecutable(filePath) {
|
|
510
|
+
try {
|
|
511
|
+
await _promises.access.call(void 0, filePath, _fs.constants.X_OK);
|
|
512
|
+
return true;
|
|
513
|
+
} catch (e2) {
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
exports.metadata = metadata; exports.squad = squad; exports.runSquadCommand = runSquadCommand; exports.parseSquadCommand = parseSquadCommand; exports.pathIsExecutable = pathIsExecutable;
|
|
525
|
+
/**
|
|
526
|
+
* @license
|
|
527
|
+
* Copyright 2025 Autohand AI LLC
|
|
528
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
529
|
+
*/
|
|
@@ -3,6 +3,36 @@ import {
|
|
|
3
3
|
classifyApiError
|
|
4
4
|
} from "./chunk-FQVG6ZHF.js";
|
|
5
5
|
|
|
6
|
+
// src/providers/usage.ts
|
|
7
|
+
function readTokenCount(record, keys) {
|
|
8
|
+
for (const key of keys) {
|
|
9
|
+
const value = record[key];
|
|
10
|
+
if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
|
|
11
|
+
return Math.floor(value);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return void 0;
|
|
15
|
+
}
|
|
16
|
+
function normalizeLLMUsage(rawUsage) {
|
|
17
|
+
if (!rawUsage || typeof rawUsage !== "object" || Array.isArray(rawUsage)) {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
const usage = rawUsage;
|
|
21
|
+
const promptTokens = readTokenCount(usage, ["prompt_tokens", "input_tokens", "promptTokens", "inputTokens"]);
|
|
22
|
+
const completionTokens = readTokenCount(usage, ["completion_tokens", "output_tokens", "completionTokens", "outputTokens"]);
|
|
23
|
+
const reportedTotal = readTokenCount(usage, ["total_tokens", "totalTokens"]);
|
|
24
|
+
const hasAnyActualCount = promptTokens !== void 0 || completionTokens !== void 0 || reportedTotal !== void 0;
|
|
25
|
+
if (!hasAnyActualCount) {
|
|
26
|
+
return void 0;
|
|
27
|
+
}
|
|
28
|
+
const totalTokens = reportedTotal ?? (promptTokens ?? 0) + (completionTokens ?? 0);
|
|
29
|
+
return {
|
|
30
|
+
promptTokens: promptTokens ?? 0,
|
|
31
|
+
completionTokens: completionTokens ?? 0,
|
|
32
|
+
totalTokens
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
6
36
|
// src/providers/NVIDIAClient.ts
|
|
7
37
|
function sanitizeMessages(messages) {
|
|
8
38
|
return messages.map((msg) => {
|
|
@@ -183,14 +213,7 @@ var NVIDIAClient = class {
|
|
|
183
213
|
}
|
|
184
214
|
}));
|
|
185
215
|
}
|
|
186
|
-
|
|
187
|
-
if (json?.usage) {
|
|
188
|
-
usage = {
|
|
189
|
-
promptTokens: json.usage.prompt_tokens ?? 0,
|
|
190
|
-
completionTokens: json.usage.completion_tokens ?? 0,
|
|
191
|
-
totalTokens: json.usage.total_tokens ?? 0
|
|
192
|
-
};
|
|
193
|
-
}
|
|
216
|
+
const usage = normalizeLLMUsage(json?.usage);
|
|
194
217
|
return {
|
|
195
218
|
id: json.id ?? "nvidia-response",
|
|
196
219
|
created: json.created ?? Date.now(),
|
|
@@ -385,6 +408,9 @@ var NVIDIAProvider = class {
|
|
|
385
408
|
getName() {
|
|
386
409
|
return "nvidia";
|
|
387
410
|
}
|
|
411
|
+
getCapabilities() {
|
|
412
|
+
return { nativeToolCalling: true };
|
|
413
|
+
}
|
|
388
414
|
setModel(model) {
|
|
389
415
|
this.model = model;
|
|
390
416
|
this.client.setDefaultModel(model);
|
|
@@ -408,6 +434,7 @@ var NVIDIAProvider = class {
|
|
|
408
434
|
};
|
|
409
435
|
|
|
410
436
|
export {
|
|
437
|
+
normalizeLLMUsage,
|
|
411
438
|
NVIDIA_DEFAULT_BASE_URL2 as NVIDIA_DEFAULT_BASE_URL,
|
|
412
439
|
NVIDIA_MODELS,
|
|
413
440
|
NVIDIA_DEFAULT_MODEL,
|