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.
Files changed (455) hide show
  1. package/README.md +118 -76
  2. package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
  3. package/dist/AgentRegistry-JBXZUPML.js +18 -0
  4. package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
  5. package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
  6. package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
  7. package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
  8. package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
  9. package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
  10. package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
  11. package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
  12. package/dist/MemoryManager-3A2VRPF2.js +9 -0
  13. package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
  14. package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
  15. package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
  16. package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
  17. package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
  18. package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
  19. package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
  20. package/dist/SessionManager-LGPQIA57.cjs +10 -0
  21. package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
  22. package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
  23. package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
  24. package/dist/SubAgent-2WG4QQB5.cjs +13 -0
  25. package/dist/SubAgent-ICGN23TQ.js +13 -0
  26. package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
  27. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  28. package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
  29. package/dist/about-U2BH7HDR.cjs +15 -0
  30. package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
  31. package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
  32. package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
  33. package/dist/actionExecutor-6NCCORRB.js +28 -0
  34. package/dist/add-dir-KFUHSIR2.cjs +11 -0
  35. package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
  36. package/dist/agent-DUIYLIVN.js +132 -0
  37. package/dist/agent-YYEHGDAK.cjs +132 -0
  38. package/dist/agents-GBGG4CW7.cjs +19 -0
  39. package/dist/agents-ZH34C72F.js +19 -0
  40. package/dist/agents-new-ERXLS7SB.cjs +17 -0
  41. package/dist/agents-new-EVTGPTA4.js +17 -0
  42. package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
  43. package/dist/autoSkill-YL6PN6AV.cjs +20 -0
  44. package/dist/automode-4BJ7FNPL.cjs +10 -0
  45. package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
  46. package/dist/chrome-45ZXHL5N.cjs +22 -0
  47. package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
  48. package/dist/chrome-IFVZRHAT.cjs +50 -0
  49. package/dist/chrome-MYE6DNA2.js +22 -0
  50. package/dist/chunk-24CEJYEG.cjs +579 -0
  51. package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
  52. package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
  53. package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
  54. package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
  55. package/dist/chunk-2WUNHTXL.js +303 -0
  56. package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
  57. package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
  58. package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
  59. package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
  60. package/dist/chunk-3DF3GZQ7.js +277 -0
  61. package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
  62. package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
  63. package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
  64. package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
  65. package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
  66. package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
  67. package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
  68. package/dist/chunk-5CMBAJ6K.js +377 -0
  69. package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
  70. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  71. package/dist/chunk-6AC2TT26.js +156 -0
  72. package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
  73. package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
  74. package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
  75. package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
  76. package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
  77. package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
  78. package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
  79. package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
  80. package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
  81. package/dist/chunk-7TO3PDMV.cjs +324 -0
  82. package/dist/chunk-7UU22RSH.cjs +277 -0
  83. package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
  84. package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
  85. package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
  86. package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
  87. package/dist/chunk-ABR756QN.js +529 -0
  88. package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
  89. package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
  90. package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
  91. package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
  92. package/dist/chunk-B55VCYSQ.cjs +30 -0
  93. package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
  94. package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
  95. package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
  96. package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
  97. package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
  98. package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
  99. package/dist/chunk-CMEZ42F2.cjs +303 -0
  100. package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
  101. package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
  102. package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
  103. package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
  104. package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
  105. package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
  106. package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
  107. package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
  108. package/dist/chunk-ECQD2QC3.cjs +33 -0
  109. package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
  110. package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
  111. package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
  112. package/dist/chunk-EK34UZPB.cjs +40 -0
  113. package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
  114. package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
  115. package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
  116. package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
  117. package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
  118. package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
  119. package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
  120. package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
  121. package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
  122. package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
  123. package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
  124. package/dist/chunk-H7HXRRHK.js +324 -0
  125. package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
  126. package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
  127. package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
  128. package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
  129. package/dist/chunk-HTU4W3GB.js +183 -0
  130. package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
  131. package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
  132. package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
  133. package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
  134. package/dist/chunk-INNXFLDR.cjs +388 -0
  135. package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
  136. package/dist/chunk-JJGDOBFL.js +40 -0
  137. package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
  138. package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
  139. package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
  140. package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
  141. package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
  142. package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
  143. package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
  144. package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
  145. package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
  146. package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
  147. package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
  148. package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
  149. package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
  150. package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
  151. package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
  152. package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
  153. package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
  154. package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
  155. package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
  156. package/dist/chunk-NVATU4V6.cjs +44 -0
  157. package/dist/chunk-O246MKIW.cjs +267 -0
  158. package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
  159. package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
  160. package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
  161. package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
  162. package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
  163. package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
  164. package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
  165. package/dist/chunk-PI27G2ED.cjs +377 -0
  166. package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
  167. package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
  168. package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
  169. package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
  170. package/dist/chunk-QDO4L2A7.cjs +156 -0
  171. package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
  172. package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
  173. package/dist/chunk-QVXMSQOG.js +430 -0
  174. package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
  175. package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
  176. package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
  177. package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
  178. package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
  179. package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
  180. package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
  181. package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
  182. package/dist/chunk-RS2E32YB.js +71 -0
  183. package/dist/chunk-RWKU2X7O.js +388 -0
  184. package/dist/chunk-RZLEGVMH.cjs +565 -0
  185. package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
  186. package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
  187. package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
  188. package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
  189. package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
  190. package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
  191. package/dist/chunk-T4DXP5OP.js +30 -0
  192. package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
  193. package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
  194. package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
  195. package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
  196. package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
  197. package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
  198. package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
  199. package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
  200. package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
  201. package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
  202. package/dist/chunk-UMJYX5KD.js +565 -0
  203. package/dist/chunk-USKYTHDL.cjs +235 -0
  204. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  205. package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
  206. package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
  207. package/dist/chunk-VLUIVJ3J.js +235 -0
  208. package/dist/chunk-VOBINVMV.cjs +430 -0
  209. package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
  210. package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
  211. package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
  212. package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
  213. package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
  214. package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
  215. package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
  216. package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
  217. package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
  218. package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
  219. package/dist/chunk-X53SHYCG.js +27 -0
  220. package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
  221. package/dist/chunk-Y47OJGLB.cjs +27 -0
  222. package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
  223. package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
  224. package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
  225. package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
  226. package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
  227. package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
  228. package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
  229. package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
  230. package/dist/chunk-ZFV4HJA6.js +579 -0
  231. package/dist/chunk-ZHMYTI5D.cjs +529 -0
  232. package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
  233. package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
  234. package/dist/chunk-ZUYYHKQA.js +44 -0
  235. package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
  236. package/dist/clear-AJGXD2BB.cjs +12 -0
  237. package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
  238. package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
  239. package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
  240. package/dist/completion-G7Z436TF.cjs +17 -0
  241. package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
  242. package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
  243. package/dist/config-W2BHT2QE.cjs +22 -0
  244. package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
  245. package/dist/constants-B4W5BT7F.cjs +23 -0
  246. package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
  247. package/dist/export-GFD32UY2.cjs +15 -0
  248. package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
  249. package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
  250. package/dist/feature-KP74CZ3F.cjs +14 -0
  251. package/dist/feature-OPNVMB2E.js +14 -0
  252. package/dist/features-LT55MURX.cjs +24 -0
  253. package/dist/features-ZDIU26WX.js +24 -0
  254. package/dist/feedback-7WTJFQ6S.js +18 -0
  255. package/dist/feedback-CEOJ3453.cjs +18 -0
  256. package/dist/go-2CY5SZNR.js +16 -0
  257. package/dist/go-O2CSQON4.cjs +16 -0
  258. package/dist/goal-DL2N2AWT.cjs +16 -0
  259. package/dist/goal-IJS7VZSG.js +16 -0
  260. package/dist/help-RNOGDEBA.cjs +12 -0
  261. package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
  262. package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
  263. package/dist/history-UUSGX2AL.cjs +14 -0
  264. package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
  265. package/dist/hooks-RWM5UY67.cjs +18 -0
  266. package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
  267. package/dist/i18n-MFAEU5RV.cjs +33 -0
  268. package/dist/ide-6PBTCCUQ.js +15 -0
  269. package/dist/ide-UE3G7NMQ.cjs +15 -0
  270. package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
  271. package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
  272. package/dist/import-NQDNBFUL.cjs +10 -0
  273. package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
  274. package/dist/index.cjs +512 -305
  275. package/dist/index.d.cts +40 -0
  276. package/dist/index.d.ts +40 -0
  277. package/dist/index.js +402 -195
  278. package/dist/init-DX3RDGDT.cjs +10 -0
  279. package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
  280. package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
  281. package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
  282. package/dist/language-I6KXAOXD.js +23 -0
  283. package/dist/language-XMIVOH5E.cjs +23 -0
  284. package/dist/learn-JPVVGTKU.js +23 -0
  285. package/dist/learn-NLSHI2MZ.cjs +23 -0
  286. package/dist/login-NABQYLYC.cjs +28 -0
  287. package/dist/login-XPOVFSWN.js +28 -0
  288. package/dist/logout-HNHCGB4Q.js +25 -0
  289. package/dist/logout-SKGDXJSW.cjs +25 -0
  290. package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
  291. package/dist/mcp-TADZCPJQ.cjs +22 -0
  292. package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
  293. package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
  294. package/dist/memory-GRXFTDIN.cjs +10 -0
  295. package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
  296. package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
  297. package/dist/model-OSD74T7Z.cjs +10 -0
  298. package/dist/new-4NWBOATU.cjs +12 -0
  299. package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
  300. package/dist/onboarding-2U5WE2OA.js +39 -0
  301. package/dist/onboarding-5DZFCO5Q.cjs +39 -0
  302. package/dist/permissions-KY5I6YQ3.cjs +10 -0
  303. package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
  304. package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
  305. package/dist/plan-PYKP652W.cjs +13 -0
  306. package/dist/quit-GSKJL42O.js +14 -0
  307. package/dist/quit-TQSRTBUT.cjs +14 -0
  308. package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
  309. package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
  310. package/dist/resume-4VWJXARX.cjs +17 -0
  311. package/dist/resume-TLHWWWFN.js +17 -0
  312. package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
  313. package/dist/review-XLJEUH5K.cjs +9 -0
  314. package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
  315. package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
  316. package/dist/search-DSX2CY4A.cjs +22 -0
  317. package/dist/search-I3QUDUQL.js +22 -0
  318. package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
  319. package/dist/sessionBranching-FKV4CR36.js +19 -0
  320. package/dist/sessions-3JUOT3ED.cjs +10 -0
  321. package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
  322. package/dist/settings-FT2LZZUV.js +45 -0
  323. package/dist/settings-RL4KNWHB.cjs +45 -0
  324. package/dist/setup-HQEJVOYT.js +32 -0
  325. package/dist/setup-MN54LKOL.cjs +32 -0
  326. package/dist/share-BUAFZNBX.cjs +17 -0
  327. package/dist/share-CGB6MAVJ.js +17 -0
  328. package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
  329. package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
  330. package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
  331. package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
  332. package/dist/skills-OQM7IHAF.cjs +29 -0
  333. package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
  334. package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
  335. package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
  336. package/dist/skills-new-S33NGEU3.js +18 -0
  337. package/dist/skills-new-UVYH53MD.cjs +18 -0
  338. package/dist/slashCommands-MWOUDSQP.js +111 -0
  339. package/dist/slashCommands-XASURUTV.cjs +111 -0
  340. package/dist/squad-PIIYDFVH.cjs +15 -0
  341. package/dist/squad-VHYOVEJP.js +15 -0
  342. package/dist/status-GHFTXQBL.js +25 -0
  343. package/dist/status-WXMIJIU3.cjs +25 -0
  344. package/dist/statusline-2K7AC6ZQ.js +21 -0
  345. package/dist/statusline-GROI4HOC.cjs +21 -0
  346. package/dist/sync-254WF6JI.cjs +42 -0
  347. package/dist/sync-2DIZN4EH.cjs +24 -0
  348. package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
  349. package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
  350. package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
  351. package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
  352. package/dist/templates-ARG2VRWW.cjs +11 -0
  353. package/dist/templates-UGVZV3KJ.js +11 -0
  354. package/dist/theme-MVQDSU47.js +23 -0
  355. package/dist/theme-QAKEYWJG.cjs +23 -0
  356. package/dist/ui/questionModal.cjs +6 -6
  357. package/dist/ui/questionModal.js +5 -5
  358. package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
  359. package/dist/undo-ME6WKUXZ.cjs +10 -0
  360. package/dist/usage-QTKO2YMD.js +25 -0
  361. package/dist/usage-TYNJKVER.cjs +25 -0
  362. package/package.json +10 -4
  363. package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
  364. package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
  365. package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
  366. package/dist/LearnAdvisor-46FG2XIP.js +0 -9
  367. package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
  368. package/dist/MemoryManager-34L4YOKA.cjs +0 -8
  369. package/dist/MemoryManager-WJMLPWGU.js +0 -8
  370. package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
  371. package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
  372. package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
  373. package/dist/SessionManager-WAPTFMDO.cjs +0 -10
  374. package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
  375. package/dist/SubAgent-FDIH3DXB.js +0 -11
  376. package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
  377. package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
  378. package/dist/about-FCAX37YC.cjs +0 -14
  379. package/dist/actionExecutor-33I47NZS.js +0 -24
  380. package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
  381. package/dist/add-dir-7SS6KSH5.cjs +0 -11
  382. package/dist/agent-DMRUFU4M.cjs +0 -116
  383. package/dist/agent-WCJEYQJT.js +0 -116
  384. package/dist/agents-CHROO3VU.cjs +0 -17
  385. package/dist/agents-UVDUL65K.js +0 -17
  386. package/dist/agents-new-AUBWSOXP.js +0 -17
  387. package/dist/agents-new-Y562WC47.cjs +0 -17
  388. package/dist/autoSkill-YOLLFTP2.cjs +0 -20
  389. package/dist/automode-DBLKTTKD.cjs +0 -10
  390. package/dist/chrome-ATC4OO5I.cjs +0 -20
  391. package/dist/chrome-O62WXV7F.js +0 -20
  392. package/dist/chrome-XHJLCO4M.cjs +0 -50
  393. package/dist/chunk-6XVVIY54.cjs +0 -256
  394. package/dist/chunk-AU6JAGZJ.cjs +0 -231
  395. package/dist/chunk-N6O3XUZ2.cjs +0 -23
  396. package/dist/chunk-VDWJMWDF.js +0 -256
  397. package/dist/clear-33TWQ2ES.cjs +0 -12
  398. package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
  399. package/dist/completion-IIZMHXYP.cjs +0 -17
  400. package/dist/config-KL6WU7R2.cjs +0 -20
  401. package/dist/constants-RLMJ5D5P.cjs +0 -21
  402. package/dist/export-WLGNWEMJ.cjs +0 -15
  403. package/dist/feedback-G635NCLJ.js +0 -18
  404. package/dist/feedback-LLMK3TZH.cjs +0 -18
  405. package/dist/help-BAXLP2M2.cjs +0 -12
  406. package/dist/history-6HOJSEMT.cjs +0 -14
  407. package/dist/hooks-XVFU67T2.cjs +0 -18
  408. package/dist/i18n-MUJMKTFM.cjs +0 -33
  409. package/dist/ide-CCQ33PGC.cjs +0 -15
  410. package/dist/ide-VLVFBZ5F.js +0 -15
  411. package/dist/import-J46F54JY.cjs +0 -10
  412. package/dist/init-EE5Y7RBL.cjs +0 -10
  413. package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
  414. package/dist/language-CVLPB7OV.js +0 -21
  415. package/dist/language-ZTWFHUSV.cjs +0 -21
  416. package/dist/learn-PON7I5QS.js +0 -23
  417. package/dist/learn-XLRSVNA3.cjs +0 -23
  418. package/dist/login-223QTGBG.cjs +0 -26
  419. package/dist/login-6IKTBUBY.js +0 -26
  420. package/dist/logout-RN2AG6SI.js +0 -23
  421. package/dist/logout-U3M4FFX7.cjs +0 -23
  422. package/dist/mcp-NUQ76QQB.cjs +0 -20
  423. package/dist/memory-CYMDQ2YC.cjs +0 -10
  424. package/dist/model-IDRCKDML.cjs +0 -10
  425. package/dist/new-7LEWOUF2.cjs +0 -12
  426. package/dist/onboarding-FXX7YHSJ.cjs +0 -35
  427. package/dist/onboarding-JYNMK6NI.js +0 -35
  428. package/dist/permissions-YBNSANIA.cjs +0 -10
  429. package/dist/plan-XEJMOT55.cjs +0 -13
  430. package/dist/quit-B43SJ6E4.cjs +0 -10
  431. package/dist/quit-GWTNHQSP.js +0 -10
  432. package/dist/resume-DYVOQN5L.cjs +0 -16
  433. package/dist/resume-M25UQKOX.js +0 -16
  434. package/dist/review-UWHWQHCB.cjs +0 -9
  435. package/dist/search-CPX4PWHP.js +0 -20
  436. package/dist/search-VUF3M4N3.cjs +0 -20
  437. package/dist/sessions-JODKER5D.cjs +0 -10
  438. package/dist/settings-55BNW6BF.js +0 -33
  439. package/dist/settings-BKTS7OMC.cjs +0 -33
  440. package/dist/setup-IRC5HQG2.js +0 -29
  441. package/dist/setup-MMQ7TWOP.cjs +0 -29
  442. package/dist/share-6JRQECAH.cjs +0 -17
  443. package/dist/share-YM5MJKMO.js +0 -17
  444. package/dist/skills-LWSOKOSH.cjs +0 -29
  445. package/dist/skills-new-GPL46YV2.js +0 -18
  446. package/dist/skills-new-L5BEZN5V.cjs +0 -18
  447. package/dist/slashCommands-FBPCIWM5.cjs +0 -95
  448. package/dist/slashCommands-FCWY5DXW.js +0 -95
  449. package/dist/status-3B5SDZPL.js +0 -17
  450. package/dist/status-TTGRF6NC.cjs +0 -17
  451. package/dist/sync-77CXVVTK.cjs +0 -21
  452. package/dist/sync-EH4K5U3N.cjs +0 -40
  453. package/dist/theme-64BYGJ57.cjs +0 -21
  454. package/dist/theme-YJE6HEON.js +0 -21
  455. 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
- let usage;
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,